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.