boilerplate
All checks were successful
Run Check Script / check (push) Successful in 1m47s

This commit is contained in:
Taha Hawa 2025-05-29 13:36:30 -04:00
parent e7917843bc
commit 624e4330bb
2 changed files with 86 additions and 2 deletions

View File

@ -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!()
}
}

View File

@ -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.