feat: add more to the tenantmanager k8s impl #46
| @ -6,6 +6,7 @@ use log::{info, warn}; | ||||
| use tokio::sync::OnceCell; | ||||
| 
 | ||||
| use crate::{ | ||||
|     executors::ExecutorError, | ||||
|     interpret::{InterpretError, Outcome}, | ||||
|     inventory::Inventory, | ||||
|     maestro::Maestro, | ||||
| @ -13,7 +14,11 @@ use crate::{ | ||||
|     topology::LocalhostTopology, | ||||
| }; | ||||
| 
 | ||||
| use super::{HelmCommand, K8sclient, Topology, k8s::K8sClient}; | ||||
| use super::{ | ||||
|     HelmCommand, K8sclient, Topology, | ||||
|     k8s::K8sClient, | ||||
|     tenant::{ResourceLimits, TenantConfig, TenantManager, TenantNetworkPolicy}, | ||||
| }; | ||||
| 
 | ||||
| struct K8sState { | ||||
|     client: Arc<K8sClient>, | ||||
| @ -21,6 +26,7 @@ struct K8sState { | ||||
|     message: String, | ||||
| } | ||||
| 
 | ||||
| #[derive(Debug)] | ||||
| enum K8sSource { | ||||
|     LocalK3d, | ||||
|     Kubeconfig, | ||||
| @ -209,3 +215,81 @@ impl Topology for K8sAnywhereTopology { | ||||
| } | ||||
| 
 | ||||
| impl HelmCommand for K8sAnywhereTopology {} | ||||
| 
 | ||||
| impl TenantManager for K8sAnywhereTopology { | ||||
|     fn provision_tenant<'life0, 'life1, 'async_trait>( | ||||
|         &'life0 self, | ||||
|         config: &'life1 TenantConfig, | ||||
|     ) -> ::core::pin::Pin< | ||||
|         Box< | ||||
|             dyn ::core::future::Future<Output = Result<(), ExecutorError>> | ||||
|                 + ::core::marker::Send | ||||
|                 + 'async_trait, | ||||
|         >, | ||||
|     > | ||||
|     where | ||||
|         'life0: 'async_trait, | ||||
|         'life1: 'async_trait, | ||||
|         Self: 'async_trait, | ||||
|     { | ||||
|         todo!() | ||||
|     } | ||||
| 
 | ||||
|     fn update_tenant_resource_limits<'life0, 'life1, 'life2, 'async_trait>( | ||||
|         &'life0 self, | ||||
|         tenant_name: &'life1 str, | ||||
|         new_limits: &'life2 ResourceLimits, | ||||
|     ) -> ::core::pin::Pin< | ||||
|         Box< | ||||
|             dyn ::core::future::Future<Output = Result<(), ExecutorError>> | ||||
|                 + ::core::marker::Send | ||||
|                 + 'async_trait, | ||||
|         >, | ||||
|     > | ||||
|     where | ||||
|         'life0: 'async_trait, | ||||
|         'life1: 'async_trait, | ||||
|         'life2: 'async_trait, | ||||
|         Self: 'async_trait, | ||||
|     { | ||||
|         todo!() | ||||
|     } | ||||
| 
 | ||||
|     fn update_tenant_network_policy<'life0, 'life1, 'life2, 'async_trait>( | ||||
|         &'life0 self, | ||||
|         tenant_name: &'life1 str, | ||||
|         new_policy: &'life2 TenantNetworkPolicy, | ||||
|     ) -> ::core::pin::Pin< | ||||
|         Box< | ||||
|             dyn ::core::future::Future<Output = Result<(), ExecutorError>> | ||||
|                 + ::core::marker::Send | ||||
|                 + 'async_trait, | ||||
|         >, | ||||
|     > | ||||
|     where | ||||
|         'life0: 'async_trait, | ||||
|         'life1: 'async_trait, | ||||
|         'life2: 'async_trait, | ||||
|         Self: 'async_trait, | ||||
|     { | ||||
|         todo!() | ||||
|     } | ||||
| 
 | ||||
|     fn deprovision_tenant<'life0, 'life1, 'async_trait>( | ||||
|         &'life0 self, | ||||
|         tenant_name: &'life1 str, | ||||
|     ) -> ::core::pin::Pin< | ||||
|         Box< | ||||
|             dyn ::core::future::Future<Output = Result<(), ExecutorError>> | ||||
|                 + ::core::marker::Send | ||||
|                 + 'async_trait, | ||||
|         >, | ||||
|     > | ||||
|     where | ||||
|         'life0: 'async_trait, | ||||
|         'life1: 'async_trait, | ||||
|         Self: 'async_trait, | ||||
|     { | ||||
|         todo!() | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -4,7 +4,7 @@ use async_trait::async_trait; | ||||
| use crate::executors::ExecutorError; | ||||
| 
 | ||||
| #[async_trait] | ||||
| pub trait TenantManager: Send + Sync + std::fmt::Debug { | ||||
| pub trait TenantManager { | ||||
|     /// Provisions a new tenant based on the provided configuration.
 | ||||
|     /// This operation should be idempotent; if a tenant with the same `config.name`
 | ||||
|     /// already exists and matches the config, it will succeed without changes.
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user