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 }