app_autoscaler_app - OmniCloudOrg/OmniOrchestrator GitHub Wiki
Path: src/app_autoscaler/app.rs
- struct AppInstance
- fn serialize
- fn deserialize
- fn new
- enum AppInstanceState
- struct AppConfig
- struct AppTemplate
pub struct AppInstance {
/// Unique identifier for the app instance
pub id: String,
/// Human-readable name for the app instance
pub name: String,
/// ID of the node hosting this app instance
pub node_id: String,
/// CPU cores allocated to this app instance
pub cpu: u32,
/// Memory in MB allocated to this app instance
pub memory: u32,
/// Storage in GB allocated to this app instance
pub storage: u32,
/// Current state of the app instance
pub state: AppInstanceState,
/// When the app instance was created (as milliseconds since UNIX epoch)
#[serde(with = "timestamp_serde")]
pub created_at: Instant,
/// Last time the app instance state was updated (as milliseconds since UNIX epoch)
#[serde(with = "timestamp_serde")]
pub updated_at: Instant,
/// Additional properties specific to this app instance
pub properties: HashMap<String, String>,
}
Represents an app instance managed by the autoscaler
pub fn serialize<S>(instant: &Instant, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
// ... function body
}
pub fn deserialize<'de, D>(deserializer: D) -> Result<Instant, D::Error>
where
D: Deserializer<'de>,
{
// ... function body
}
pub fn new(id: String, name: String, node_id: String, cpu: u32, memory: u32, storage: u32) -> Self {
let now = Instant::now();
Create a new app instance
pub enum AppInstanceState {
/// App instance is being created
Creating,
/// App instance is running
Running,
/// App instance is stopped
Stopped,
/// App instance is being terminated
Terminating,
/// App instance has been terminated
Terminated,
/// App instance is in error state
Error,
}
Possible states for an app instance
pub struct AppConfig {
/// CPU cores for each app instance
pub cpu: u32,
/// Memory in MB for each app instance
pub memory: u32,
/// Storage in GB for each app instance
pub storage: u32,
/// Additional configuration options
pub options: HashMap<String, String>,
}
Configuration for app instance creation
pub struct AppTemplate {
/// Base name for app instances created from this template
pub base_name: String,
/// App configuration
pub config: AppConfig,
/// Additional tags to apply to app instances
pub tags: HashMap<String, String>,
}
Template for creating new app instances