Skip to content

Code organization#

Directory structure#

.
│   Rust project management
├── Cargo.toml                 Rust project definition
├── Cargo.lock                 Resolved Rust dependencies
├── rust-toolchain.toml        Rust compiler version
│
│   Rust crates
├── api                        SCL API server (binary)
├── cli                        SCL API client named sclctl (binary)
├── compute_api                Compute API server (binary) and hypervisor implementations (library)
├── lib                        Common Rust data structures and helpers for SCL components (library)
├── scheduler_ctrl             Virtual machine scheduler (binary)
├── local_l2_net_ctrl          Single node setup L2 network controller (binary)
├── local_l3_net_ctrl          Single node setup L3 network controller (binary)
├── local_vol_ctrl             Local volume controller (binary)
├── node_l2_net_api            L2 network REST API server for compute nodes (binary)
├── node_lib                   Common helpers for Node API services and clients (library)
├── vm_ctrl                    Virtual machine controllers (binary)
│
│   Other components
├── tf_provider                Terraform provider written in Go for the SCL API
│
│   Documentation
├── README.md                  Root README of the project
├── config                     Configuration examples for API server and controllers
├── docs                       Contains the majority of documentation content
├── mkdocs.yaml                MkDocs configuration file used to render the SCL documentation
│
│   Nix files
├── nix                        Expressions for building, testing, and documenting SCL components with nix
├── default.nix                Bundles everything together and act as entry point to call any nix-expression
├── shell.nix                  Nix-defined environment for SCL development
│
│   Misc
└── test                       Mainly provides debugging and testing tools to deploy the SCL on hardware

Rust code documentation#

Rust docs of the SCL are available in the reference section.