forked from NationTech/harmony
42 lines
1.4 KiB
Rust
42 lines
1.4 KiB
Rust
use harmony::{
|
|
data::Id,
|
|
inventory::Inventory,
|
|
maestro::Maestro,
|
|
modules::tenant::TenantScore,
|
|
topology::{K8sAnywhereTopology, tenant::TenantConfig},
|
|
};
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
let tenant = TenantScore {
|
|
config: TenantConfig {
|
|
id: Id::from_str("test-tenant-id"),
|
|
name: "testtenant".to_string(),
|
|
..Default::default()
|
|
},
|
|
};
|
|
|
|
let mut maestro = Maestro::<K8sAnywhereTopology>::initialize(
|
|
Inventory::autoload(),
|
|
K8sAnywhereTopology::from_env(),
|
|
)
|
|
.await
|
|
.unwrap();
|
|
|
|
maestro.register_all(vec![Box::new(tenant)]);
|
|
harmony_cli::init(maestro, None).await.unwrap();
|
|
}
|
|
|
|
// TODO write tests
|
|
// - Create Tenant with default config mostly, make sure namespace is created
|
|
// - deploy sample client/server app with nginx unprivileged and a service
|
|
// - exec in the client pod and validate the following
|
|
// - can reach internet
|
|
// - can reach server pod
|
|
// - can resolve dns queries to internet
|
|
// - can resolve dns queries to services
|
|
// - cannot reach services and pods in other namespaces
|
|
// - Create Tenant with specific cpu/ram/storage requests / limits and make sure they are enforced by trying to
|
|
// deploy a pod with lower requests/limits (accepted) and higher requests/limits (rejected)
|
|
// - Create TenantCredentials and make sure they give only access to the correct tenant
|