use std::str::FromStr; use harmony::{ data::Id, inventory::Inventory, modules::tenant::TenantScore, topology::{K8sAnywhereTopology, tenant::TenantConfig}, }; #[tokio::main] async fn main() { let tenant = TenantScore { config: TenantConfig { id: Id::from_str("test-tenant-id").unwrap(), name: "testtenant".to_string(), ..Default::default() }, }; harmony_cli::run( Inventory::autoload(), K8sAnywhereTopology::from_env(), vec![Box::new(tenant)], 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