#[allow(unused_imports)]
mod prelude {
pub use kube::CustomResource;
pub use serde::{Serialize, Deserialize};
pub use std::collections::BTreeMap;
pub use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString;
pub use k8s_openapi::apimachinery::pkg::apis::meta::v1::Condition;
}
use self::prelude::*;
#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[kube(group = "amd.com", version = "v1alpha1", kind = "DeviceConfig", plural = "deviceconfigs")]
#[kube(namespaced)]
#[kube(status = "DeviceConfigStatus")]
#[kube(schema = "disabled")]
#[kube(derive="Default")]
#[kube(derive="PartialEq")]
pub struct DeviceConfigSpec {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "commonConfig")]
pub common_config: Option<DeviceConfigCommonConfig>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "configManager")]
pub config_manager: Option<DeviceConfigConfigManager>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "devicePlugin")]
pub device_plugin: Option<DeviceConfigDevicePlugin>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub driver: Option<DeviceConfigDriver>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "metricsExporter")]
pub metrics_exporter: Option<DeviceConfigMetricsExporter>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "remediationWorkflow")]
pub remediation_workflow: Option<DeviceConfigRemediationWorkflow>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub selector: Option<BTreeMap<String, String>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "testRunner")]
pub test_runner: Option<DeviceConfigTestRunner>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigCommonConfig {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "initContainerImage")]
pub init_container_image: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "utilsContainer")]
pub utils_container: Option<DeviceConfigCommonConfigUtilsContainer>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigCommonConfigUtilsContainer {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub image: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")]
pub image_pull_policy: Option<DeviceConfigCommonConfigUtilsContainerImagePullPolicy>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "imageRegistrySecret")]
pub image_registry_secret: Option<DeviceConfigCommonConfigUtilsContainerImageRegistrySecret>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum DeviceConfigCommonConfigUtilsContainerImagePullPolicy {
Always,
IfNotPresent,
Never,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigCommonConfigUtilsContainerImageRegistrySecret {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigConfigManager {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub config: Option<DeviceConfigConfigManagerConfig>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "configManagerTolerations")]
pub config_manager_tolerations: Option<Vec<DeviceConfigConfigManagerConfigManagerTolerations>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enable: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub image: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")]
pub image_pull_policy: Option<DeviceConfigConfigManagerImagePullPolicy>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "imageRegistrySecret")]
pub image_registry_secret: Option<DeviceConfigConfigManagerImageRegistrySecret>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub selector: Option<BTreeMap<String, String>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "upgradePolicy")]
pub upgrade_policy: Option<DeviceConfigConfigManagerUpgradePolicy>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigConfigManagerConfig {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigConfigManagerConfigManagerTolerations {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub effect: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub operator: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "tolerationSeconds")]
pub toleration_seconds: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum DeviceConfigConfigManagerImagePullPolicy {
Always,
IfNotPresent,
Never,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigConfigManagerImageRegistrySecret {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigConfigManagerUpgradePolicy {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxUnavailable")]
pub max_unavailable: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "upgradeStrategy")]
pub upgrade_strategy: Option<DeviceConfigConfigManagerUpgradePolicyUpgradeStrategy>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum DeviceConfigConfigManagerUpgradePolicyUpgradeStrategy {
RollingUpdate,
OnDelete,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigDevicePlugin {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "devicePluginArguments")]
pub device_plugin_arguments: Option<BTreeMap<String, String>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "devicePluginImage")]
pub device_plugin_image: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "devicePluginImagePullPolicy")]
pub device_plugin_image_pull_policy: Option<DeviceConfigDevicePluginDevicePluginImagePullPolicy>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "devicePluginTolerations")]
pub device_plugin_tolerations: Option<Vec<DeviceConfigDevicePluginDevicePluginTolerations>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "enableNodeLabeller")]
pub enable_node_labeller: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "imageRegistrySecret")]
pub image_registry_secret: Option<DeviceConfigDevicePluginImageRegistrySecret>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeLabellerArguments")]
pub node_labeller_arguments: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeLabellerImage")]
pub node_labeller_image: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeLabellerImagePullPolicy")]
pub node_labeller_image_pull_policy: Option<DeviceConfigDevicePluginNodeLabellerImagePullPolicy>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeLabellerTolerations")]
pub node_labeller_tolerations: Option<Vec<DeviceConfigDevicePluginNodeLabellerTolerations>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "upgradePolicy")]
pub upgrade_policy: Option<DeviceConfigDevicePluginUpgradePolicy>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum DeviceConfigDevicePluginDevicePluginImagePullPolicy {
Always,
IfNotPresent,
Never,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigDevicePluginDevicePluginTolerations {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub effect: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub operator: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "tolerationSeconds")]
pub toleration_seconds: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigDevicePluginImageRegistrySecret {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum DeviceConfigDevicePluginNodeLabellerImagePullPolicy {
Always,
IfNotPresent,
Never,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigDevicePluginNodeLabellerTolerations {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub effect: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub operator: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "tolerationSeconds")]
pub toleration_seconds: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigDevicePluginUpgradePolicy {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxUnavailable")]
pub max_unavailable: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "upgradeStrategy")]
pub upgrade_strategy: Option<DeviceConfigDevicePluginUpgradePolicyUpgradeStrategy>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum DeviceConfigDevicePluginUpgradePolicyUpgradeStrategy {
RollingUpdate,
OnDelete,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigDriver {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "amdgpuInstallerRepoURL")]
pub amdgpu_installer_repo_url: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub blacklist: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "driverType")]
pub driver_type: Option<DeviceConfigDriverDriverType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enable: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub image: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "imageBuild")]
pub image_build: Option<DeviceConfigDriverImageBuild>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "imageRegistrySecret")]
pub image_registry_secret: Option<DeviceConfigDriverImageRegistrySecret>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "imageRegistryTLS")]
pub image_registry_tls: Option<DeviceConfigDriverImageRegistryTls>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "imageSign")]
pub image_sign: Option<DeviceConfigDriverImageSign>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "kernelModuleConfig")]
pub kernel_module_config: Option<DeviceConfigDriverKernelModuleConfig>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tolerations: Option<Vec<DeviceConfigDriverTolerations>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "upgradePolicy")]
pub upgrade_policy: Option<DeviceConfigDriverUpgradePolicy>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "useSourceImage")]
pub use_source_image: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "vfioConfig")]
pub vfio_config: Option<DeviceConfigDriverVfioConfig>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum DeviceConfigDriverDriverType {
#[serde(rename = "container")]
Container,
#[serde(rename = "vf-passthrough")]
VfPassthrough,
#[serde(rename = "pf-passthrough")]
PfPassthrough,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigDriverImageBuild {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "baseImageRegistry")]
pub base_image_registry: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "baseImageRegistryTLS")]
pub base_image_registry_tls: Option<DeviceConfigDriverImageBuildBaseImageRegistryTls>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "sourceImageRepo")]
pub source_image_repo: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigDriverImageBuildBaseImageRegistryTls {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub insecure: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "insecureSkipTLSVerify")]
pub insecure_skip_tls_verify: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigDriverImageRegistrySecret {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigDriverImageRegistryTls {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub insecure: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "insecureSkipTLSVerify")]
pub insecure_skip_tls_verify: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigDriverImageSign {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "certSecret")]
pub cert_secret: Option<DeviceConfigDriverImageSignCertSecret>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "keySecret")]
pub key_secret: Option<DeviceConfigDriverImageSignKeySecret>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigDriverImageSignCertSecret {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigDriverImageSignKeySecret {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigDriverKernelModuleConfig {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "loadArgs")]
pub load_args: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub parameters: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "unloadArgs")]
pub unload_args: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigDriverTolerations {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub effect: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub operator: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "tolerationSeconds")]
pub toleration_seconds: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigDriverUpgradePolicy {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enable: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxParallelUpgrades")]
pub max_parallel_upgrades: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxUnavailableNodes")]
pub max_unavailable_nodes: Option<IntOrString>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDrainPolicy")]
pub node_drain_policy: Option<DeviceConfigDriverUpgradePolicyNodeDrainPolicy>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "podDeletionPolicy")]
pub pod_deletion_policy: Option<DeviceConfigDriverUpgradePolicyPodDeletionPolicy>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "rebootRequired")]
pub reboot_required: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigDriverUpgradePolicyNodeDrainPolicy {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub force: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "gracePeriodSeconds")]
pub grace_period_seconds: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")]
pub timeout_seconds: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigDriverUpgradePolicyPodDeletionPolicy {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub force: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "gracePeriodSeconds")]
pub grace_period_seconds: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")]
pub timeout_seconds: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigDriverVfioConfig {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "deviceIDs")]
pub device_i_ds: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporter {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub config: Option<DeviceConfigMetricsExporterConfig>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enable: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub image: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")]
pub image_pull_policy: Option<DeviceConfigMetricsExporterImagePullPolicy>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "imageRegistrySecret")]
pub image_registry_secret: Option<DeviceConfigMetricsExporterImageRegistrySecret>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePort")]
pub node_port: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "podAnnotations")]
pub pod_annotations: Option<BTreeMap<String, String>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "podResourceAPISocketPath")]
pub pod_resource_api_socket_path: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub port: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub prometheus: Option<DeviceConfigMetricsExporterPrometheus>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "rbacConfig")]
pub rbac_config: Option<DeviceConfigMetricsExporterRbacConfig>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub resource: Option<DeviceConfigMetricsExporterResource>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub selector: Option<BTreeMap<String, String>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAnnotations")]
pub service_annotations: Option<BTreeMap<String, String>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceType")]
pub service_type: Option<DeviceConfigMetricsExporterServiceType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tolerations: Option<Vec<DeviceConfigMetricsExporterTolerations>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "upgradePolicy")]
pub upgrade_policy: Option<DeviceConfigMetricsExporterUpgradePolicy>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterConfig {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum DeviceConfigMetricsExporterImagePullPolicy {
Always,
IfNotPresent,
Never,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterImageRegistrySecret {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterPrometheus {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceMonitor")]
pub service_monitor: Option<DeviceConfigMetricsExporterPrometheusServiceMonitor>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterPrometheusServiceMonitor {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "attachMetadata")]
pub attach_metadata: Option<DeviceConfigMetricsExporterPrometheusServiceMonitorAttachMetadata>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub authorization: Option<DeviceConfigMetricsExporterPrometheusServiceMonitorAuthorization>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "bearerTokenFile")]
pub bearer_token_file: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enable: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "honorLabels")]
pub honor_labels: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "honorTimestamps")]
pub honor_timestamps: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub interval: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub labels: Option<BTreeMap<String, String>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "metricRelabelings")]
pub metric_relabelings: Option<Vec<DeviceConfigMetricsExporterPrometheusServiceMonitorMetricRelabelings>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub relabelings: Option<Vec<DeviceConfigMetricsExporterPrometheusServiceMonitorRelabelings>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "tlsConfig")]
pub tls_config: Option<DeviceConfigMetricsExporterPrometheusServiceMonitorTlsConfig>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterPrometheusServiceMonitorAttachMetadata {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub node: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterPrometheusServiceMonitorAuthorization {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub credentials: Option<DeviceConfigMetricsExporterPrometheusServiceMonitorAuthorizationCredentials>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "type")]
pub r#type: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterPrometheusServiceMonitorAuthorizationCredentials {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterPrometheusServiceMonitorMetricRelabelings {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub action: Option<DeviceConfigMetricsExporterPrometheusServiceMonitorMetricRelabelingsAction>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub modulus: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub regex: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub replacement: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub separator: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "sourceLabels")]
pub source_labels: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "targetLabel")]
pub target_label: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum DeviceConfigMetricsExporterPrometheusServiceMonitorMetricRelabelingsAction {
#[serde(rename = "replace")]
Replace,
#[serde(rename = "Replace")]
ReplaceX,
#[serde(rename = "keep")]
Keep,
#[serde(rename = "Keep")]
KeepX,
#[serde(rename = "drop")]
Drop,
#[serde(rename = "Drop")]
DropX,
#[serde(rename = "hashmod")]
Hashmod,
HashMod,
#[serde(rename = "labelmap")]
Labelmap,
LabelMap,
#[serde(rename = "labeldrop")]
Labeldrop,
LabelDrop,
#[serde(rename = "labelkeep")]
Labelkeep,
LabelKeep,
#[serde(rename = "lowercase")]
Lowercase,
#[serde(rename = "Lowercase")]
LowercaseX,
#[serde(rename = "uppercase")]
Uppercase,
#[serde(rename = "Uppercase")]
UppercaseX,
#[serde(rename = "keepequal")]
Keepequal,
KeepEqual,
#[serde(rename = "dropequal")]
Dropequal,
DropEqual,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterPrometheusServiceMonitorRelabelings {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub action: Option<DeviceConfigMetricsExporterPrometheusServiceMonitorRelabelingsAction>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub modulus: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub regex: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub replacement: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub separator: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "sourceLabels")]
pub source_labels: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "targetLabel")]
pub target_label: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum DeviceConfigMetricsExporterPrometheusServiceMonitorRelabelingsAction {
#[serde(rename = "replace")]
Replace,
#[serde(rename = "Replace")]
ReplaceX,
#[serde(rename = "keep")]
Keep,
#[serde(rename = "Keep")]
KeepX,
#[serde(rename = "drop")]
Drop,
#[serde(rename = "Drop")]
DropX,
#[serde(rename = "hashmod")]
Hashmod,
HashMod,
#[serde(rename = "labelmap")]
Labelmap,
LabelMap,
#[serde(rename = "labeldrop")]
Labeldrop,
LabelDrop,
#[serde(rename = "labelkeep")]
Labelkeep,
LabelKeep,
#[serde(rename = "lowercase")]
Lowercase,
#[serde(rename = "Lowercase")]
LowercaseX,
#[serde(rename = "uppercase")]
Uppercase,
#[serde(rename = "Uppercase")]
UppercaseX,
#[serde(rename = "keepequal")]
Keepequal,
KeepEqual,
#[serde(rename = "dropequal")]
Dropequal,
DropEqual,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterPrometheusServiceMonitorTlsConfig {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ca: Option<DeviceConfigMetricsExporterPrometheusServiceMonitorTlsConfigCa>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "caFile")]
pub ca_file: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cert: Option<DeviceConfigMetricsExporterPrometheusServiceMonitorTlsConfigCert>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "certFile")]
pub cert_file: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "insecureSkipVerify")]
pub insecure_skip_verify: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "keyFile")]
pub key_file: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "keySecret")]
pub key_secret: Option<DeviceConfigMetricsExporterPrometheusServiceMonitorTlsConfigKeySecret>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxVersion")]
pub max_version: Option<DeviceConfigMetricsExporterPrometheusServiceMonitorTlsConfigMaxVersion>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minVersion")]
pub min_version: Option<DeviceConfigMetricsExporterPrometheusServiceMonitorTlsConfigMinVersion>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "serverName")]
pub server_name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterPrometheusServiceMonitorTlsConfigCa {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")]
pub config_map: Option<DeviceConfigMetricsExporterPrometheusServiceMonitorTlsConfigCaConfigMap>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub secret: Option<DeviceConfigMetricsExporterPrometheusServiceMonitorTlsConfigCaSecret>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterPrometheusServiceMonitorTlsConfigCaConfigMap {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterPrometheusServiceMonitorTlsConfigCaSecret {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterPrometheusServiceMonitorTlsConfigCert {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")]
pub config_map: Option<DeviceConfigMetricsExporterPrometheusServiceMonitorTlsConfigCertConfigMap>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub secret: Option<DeviceConfigMetricsExporterPrometheusServiceMonitorTlsConfigCertSecret>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterPrometheusServiceMonitorTlsConfigCertConfigMap {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterPrometheusServiceMonitorTlsConfigCertSecret {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterPrometheusServiceMonitorTlsConfigKeySecret {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum DeviceConfigMetricsExporterPrometheusServiceMonitorTlsConfigMaxVersion {
#[serde(rename = "TLS10")]
Tls10,
#[serde(rename = "TLS11")]
Tls11,
#[serde(rename = "TLS12")]
Tls12,
#[serde(rename = "TLS13")]
Tls13,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum DeviceConfigMetricsExporterPrometheusServiceMonitorTlsConfigMinVersion {
#[serde(rename = "TLS10")]
Tls10,
#[serde(rename = "TLS11")]
Tls11,
#[serde(rename = "TLS12")]
Tls12,
#[serde(rename = "TLS13")]
Tls13,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterRbacConfig {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "clientCAConfigMap")]
pub client_ca_config_map: Option<DeviceConfigMetricsExporterRbacConfigClientCaConfigMap>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "disableHttps")]
pub disable_https: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enable: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub image: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub secret: Option<DeviceConfigMetricsExporterRbacConfigSecret>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "staticAuthorization")]
pub static_authorization: Option<DeviceConfigMetricsExporterRbacConfigStaticAuthorization>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterRbacConfigClientCaConfigMap {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterRbacConfigSecret {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterRbacConfigStaticAuthorization {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "clientName")]
pub client_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enable: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterResource {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub claims: Option<Vec<DeviceConfigMetricsExporterResourceClaims>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limits: Option<BTreeMap<String, IntOrString>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub requests: Option<BTreeMap<String, IntOrString>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterResourceClaims {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub request: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum DeviceConfigMetricsExporterServiceType {
#[serde(rename = "ClusterIP")]
ClusterIp,
NodePort,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterTolerations {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub effect: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub operator: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "tolerationSeconds")]
pub toleration_seconds: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigMetricsExporterUpgradePolicy {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxUnavailable")]
pub max_unavailable: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "upgradeStrategy")]
pub upgrade_strategy: Option<DeviceConfigMetricsExporterUpgradePolicyUpgradeStrategy>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum DeviceConfigMetricsExporterUpgradePolicyUpgradeStrategy {
RollingUpdate,
OnDelete,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigRemediationWorkflow {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "conditionalWorkflows")]
pub conditional_workflows: Option<DeviceConfigRemediationWorkflowConditionalWorkflows>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enable: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxParallelWorkflows")]
pub max_parallel_workflows: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "testerImage")]
pub tester_image: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "ttlForFailedWorkflows")]
pub ttl_for_failed_workflows: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigRemediationWorkflowConditionalWorkflows {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigTestRunner {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub config: Option<DeviceConfigTestRunnerConfig>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enable: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub image: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")]
pub image_pull_policy: Option<DeviceConfigTestRunnerImagePullPolicy>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "imageRegistrySecret")]
pub image_registry_secret: Option<DeviceConfigTestRunnerImageRegistrySecret>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "logsLocation")]
pub logs_location: Option<DeviceConfigTestRunnerLogsLocation>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub selector: Option<BTreeMap<String, String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tolerations: Option<Vec<DeviceConfigTestRunnerTolerations>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "upgradePolicy")]
pub upgrade_policy: Option<DeviceConfigTestRunnerUpgradePolicy>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigTestRunnerConfig {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum DeviceConfigTestRunnerImagePullPolicy {
Always,
IfNotPresent,
Never,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigTestRunnerImageRegistrySecret {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigTestRunnerLogsLocation {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPath")]
pub host_path: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "logsExportSecrets")]
pub logs_export_secrets: Option<Vec<DeviceConfigTestRunnerLogsLocationLogsExportSecrets>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPath")]
pub mount_path: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigTestRunnerLogsLocationLogsExportSecrets {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigTestRunnerTolerations {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub effect: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub operator: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "tolerationSeconds")]
pub toleration_seconds: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigTestRunnerUpgradePolicy {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxUnavailable")]
pub max_unavailable: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "upgradeStrategy")]
pub upgrade_strategy: Option<DeviceConfigTestRunnerUpgradePolicyUpgradeStrategy>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum DeviceConfigTestRunnerUpgradePolicyUpgradeStrategy {
RollingUpdate,
OnDelete,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigStatus {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub conditions: Option<Vec<Condition>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "configManager")]
pub config_manager: Option<DeviceConfigStatusConfigManager>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "devicePlugin")]
pub device_plugin: Option<DeviceConfigStatusDevicePlugin>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub driver: Option<DeviceConfigStatusDriver>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "metricsExporter")]
pub metrics_exporter: Option<DeviceConfigStatusMetricsExporter>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeModuleStatus")]
pub node_module_status: Option<BTreeMap<String, DeviceConfigStatusNodeModuleStatus>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")]
pub observed_generation: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigStatusConfigManager {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "availableNumber")]
pub available_number: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredNumber")]
pub desired_number: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "nodesMatchingSelectorNumber")]
pub nodes_matching_selector_number: Option<i32>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigStatusDevicePlugin {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "availableNumber")]
pub available_number: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredNumber")]
pub desired_number: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "nodesMatchingSelectorNumber")]
pub nodes_matching_selector_number: Option<i32>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigStatusDriver {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "availableNumber")]
pub available_number: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredNumber")]
pub desired_number: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "nodesMatchingSelectorNumber")]
pub nodes_matching_selector_number: Option<i32>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigStatusMetricsExporter {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "availableNumber")]
pub available_number: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredNumber")]
pub desired_number: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "nodesMatchingSelectorNumber")]
pub nodes_matching_selector_number: Option<i32>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct DeviceConfigStatusNodeModuleStatus {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "bootId")]
pub boot_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "containerImage")]
pub container_image: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "kernelVersion")]
pub kernel_version: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "lastTransitionTime")]
pub last_transition_time: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "upgradeStartTime")]
pub upgrade_start_time: Option<String>,
}