lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

model.rs (2206B)


      1 use std::collections::BTreeMap;
      2 
      3 use radroots_runtime_distribution::HardenedServiceTargets;
      4 use serde::Deserialize;
      5 
      6 #[derive(Debug, Clone, Deserialize, PartialEq, Eq)]
      7 #[serde(deny_unknown_fields)]
      8 pub struct RadrootsRuntimeManagementContract {
      9     pub schema: String,
     10     pub schema_version: u32,
     11     pub owner_doc: String,
     12     pub runtime_registry: String,
     13     pub distribution_contract: String,
     14     pub capabilities_contract: String,
     15     pub defaults: ManagementDefaults,
     16     pub management_clients: RuntimeGroups,
     17     pub managed_runtime_targets: RuntimeGroups,
     18     pub service_targets: HardenedServiceTargets,
     19     pub lifecycle: LifecycleContract,
     20     pub mode: BTreeMap<String, ManagementModeContract>,
     21     pub instance_metadata: InstanceMetadataContract,
     22 }
     23 
     24 #[derive(Debug, Clone, Deserialize, PartialEq, Eq)]
     25 #[serde(deny_unknown_fields)]
     26 pub struct ManagementDefaults {
     27     pub instance_cardinality: String,
     28     pub runtime_binding: String,
     29     pub admin_endpoint: String,
     30     pub global_path_mutation_forbidden: bool,
     31 }
     32 
     33 #[derive(Debug, Clone, Deserialize, PartialEq, Eq, Default)]
     34 #[serde(deny_unknown_fields)]
     35 pub struct RuntimeGroups {
     36     #[serde(default)]
     37     pub active: Vec<String>,
     38     #[serde(default)]
     39     pub defined: Vec<String>,
     40     #[serde(default)]
     41     pub bootstrap_only: Vec<String>,
     42 }
     43 
     44 #[derive(Debug, Clone, Deserialize, PartialEq, Eq)]
     45 #[serde(deny_unknown_fields)]
     46 pub struct LifecycleContract {
     47     #[serde(default)]
     48     pub actions: Vec<String>,
     49     #[serde(default)]
     50     pub destructive_actions: Vec<String>,
     51     #[serde(default)]
     52     pub health_states: Vec<String>,
     53 }
     54 
     55 #[derive(Debug, Clone, Deserialize, PartialEq, Eq)]
     56 #[serde(deny_unknown_fields)]
     57 pub struct ManagementModeContract {
     58     pub contract_state: String,
     59     #[serde(default)]
     60     pub platforms: Vec<String>,
     61     #[serde(default)]
     62     pub supported_profiles: Vec<String>,
     63     pub service_manager_integration: bool,
     64     pub default_instance_cardinality: String,
     65 }
     66 
     67 #[derive(Debug, Clone, Deserialize, PartialEq, Eq)]
     68 #[serde(deny_unknown_fields)]
     69 pub struct InstanceMetadataContract {
     70     #[serde(default)]
     71     pub required_fields: Vec<String>,
     72     #[serde(default)]
     73     pub optional_fields: Vec<String>,
     74 }