diff --git a/.reuse/dep5 b/.reuse/dep5 index 509248770..5eb9e5fc1 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -15,6 +15,10 @@ Files: crd-catalog/aerospike/aerospike-kubernetes-operator/* Copyright: The aerospike/aerospike-kubernetes-operator Authors License: Apache-2.0 +Files: crd-catalog/alauda/nativestor/* +Copyright: The alauda/nativestor Authors +License: Apache-2.0 + Files: crd-catalog/Alvearie/imaging-ingestion/* Copyright: The Alvearie/imaging-ingestion Authors License: Apache-2.0 diff --git a/code-generator/src/catalog.rs b/code-generator/src/catalog.rs index 83f719751..d56e55fef 100644 --- a/code-generator/src/catalog.rs +++ b/code-generator/src/catalog.rs @@ -16,6 +16,15 @@ pub const CRD_V1_SOURCES: &'static [UpstreamSource] = &[ "https://github.com/aerospike/aerospike-kubernetes-operator/blob/master/config/crd/bases/asdb.aerospike.com_aerospikeclusters.yaml", ], }, + UpstreamSource { + project_name: "alauda/nativestor", + license: APACHE_V2, + urls: &[ + "https://github.com/alauda/nativestor/blob/main/config/crd/bases/nativestor.alauda.io_rawdevices.yaml", + "https://github.com/alauda/nativestor/blob/main/config/crd/bases/topolvm.cybozu.com_logicalvolumes.yaml", + "https://github.com/alauda/nativestor/blob/main/config/crd/bases/topolvm.cybozu.com_topolvmclusters.yaml", + ], + }, UpstreamSource { project_name: "Alvearie/imaging-ingestion", license: APACHE_V2, diff --git a/crd-catalog/alauda/nativestor/nativestor.alauda.io/v1/rawdevices.yaml b/crd-catalog/alauda/nativestor/nativestor.alauda.io/v1/rawdevices.yaml new file mode 100644 index 000000000..b8c50d9ac --- /dev/null +++ b/crd-catalog/alauda/nativestor/nativestor.alauda.io/v1/rawdevices.yaml @@ -0,0 +1,81 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + name: rawdevices.nativestor.alauda.io +spec: + group: nativestor.alauda.io + names: + kind: RawDevice + listKind: RawDeviceList + plural: rawdevices + singular: rawdevice + scope: Cluster + versions: + - name: v1 + schema: + openAPIV3Schema: + description: RawDevice is the Schema for the rawdevices API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: RawDeviceSpec defines the desired state of RawDevice + properties: + available: + type: boolean + major: + format: int32 + type: integer + minor: + format: int32 + type: integer + nodeName: + description: 'INSERT ADDITIONAL SPEC FIELDS - desired state of cluster Important: Run "make" to regenerate code after modifying this file' + type: string + realPath: + type: string + size: + format: int64 + type: integer + type: + type: string + uuid: + type: string + required: + - available + - major + - minor + - nodeName + - realPath + - size + - type + - uuid + type: object + status: + description: RawDeviceStatus defines the observed state of RawDevice + properties: + name: + description: 'INSERT ADDITIONAL STATUS FIELD - define observed state of cluster Important: Run "make" to regenerate code after modifying this file' + type: string + required: + - name + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: '' + plural: '' + conditions: [] + storedVersions: [] diff --git a/crd-catalog/alauda/nativestor/topolvm.cybozu.com/v1/logicalvolumes.yaml b/crd-catalog/alauda/nativestor/topolvm.cybozu.com/v1/logicalvolumes.yaml new file mode 100644 index 000000000..a02db70b4 --- /dev/null +++ b/crd-catalog/alauda/nativestor/topolvm.cybozu.com/v1/logicalvolumes.yaml @@ -0,0 +1,78 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.7.0 + name: logicalvolumes.topolvm.cybozu.com +spec: + group: topolvm.cybozu.com + names: + kind: LogicalVolume + listKind: LogicalVolumeList + plural: logicalvolumes + singular: logicalvolume + scope: Cluster + versions: + - name: v1 + schema: + openAPIV3Schema: + description: LogicalVolume is the Schema for the logicalvolumes API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: LogicalVolumeSpec defines the desired state of LogicalVolume + properties: + deviceClass: + type: string + name: + type: string + nodeName: + type: string + size: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + required: + - name + - nodeName + - size + type: object + status: + description: LogicalVolumeStatus defines the observed state of LogicalVolume + properties: + code: + description: A Code is an unsigned 32-bit error code as defined in the gRPC spec. + format: int32 + type: integer + currentSize: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + message: + type: string + volumeID: + description: 'INSERT ADDITIONAL STATUS FIELD - define observed state of cluster Important: Run "make" to regenerate code after modifying this file' + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: '' + plural: '' + conditions: [] + storedVersions: [] diff --git a/crd-catalog/alauda/nativestor/topolvm.cybozu.com/v2/topolvmclusters.yaml b/crd-catalog/alauda/nativestor/topolvm.cybozu.com/v2/topolvmclusters.yaml new file mode 100644 index 000000000..e8c0eccc0 --- /dev/null +++ b/crd-catalog/alauda/nativestor/topolvm.cybozu.com/v2/topolvmclusters.yaml @@ -0,0 +1,231 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + name: topolvmclusters.topolvm.cybozu.com +spec: + group: topolvm.cybozu.com + names: + kind: TopolvmCluster + listKind: TopolvmClusterList + plural: topolvmclusters + singular: topolvmcluster + scope: Namespaced + versions: + - name: v2 + schema: + openAPIV3Schema: + description: TopolvmCluster is the Schema for the topolvmclusters API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: TopolvmClusterSpec defines the desired state of TopolvmCluster + properties: + certsSecret: + type: string + cleanup: + type: boolean + storage: + properties: + className: + type: string + deviceClasses: + items: + properties: + classes: + items: + properties: + className: + type: string + default: + type: boolean + devices: + items: + properties: + auto: + type: boolean + name: + type: string + path: + type: string + size: + format: int64 + type: integer + type: + type: string + required: + - name + - type + type: object + type: array + spareGb: + format: int64 + type: integer + stripe: + type: integer + stripeSize: + type: string + volumeGroup: + type: string + required: + - className + - devices + - volumeGroup + type: object + type: array + nodeName: + type: string + required: + - classes + - nodeName + type: object + type: array + devices: + items: + properties: + auto: + type: boolean + name: + type: string + path: + type: string + size: + format: int64 + type: integer + type: + type: string + required: + - name + - type + type: object + type: array + useAllDevices: + type: boolean + useAllNodes: + type: boolean + useLoop: + type: boolean + volumeGroupName: + type: string + required: + - useAllDevices + - useAllNodes + - useLoop + type: object + topolvmVersion: + type: string + required: + - cleanup + - storage + - topolvmVersion + type: object + status: + description: TopolvmClusterStatus defines the observed state of TopolvmCluster + properties: + nodeStorageState: + items: + properties: + failClasses: + items: + properties: + className: + type: string + deviceStates: + items: + properties: + message: + type: string + name: + type: string + state: + type: string + type: object + type: array + message: + type: string + state: + type: string + vgName: + type: string + type: object + type: array + loops: + items: + properties: + deviceName: + type: string + file: + type: string + message: + type: string + name: + type: string + status: + type: string + required: + - deviceName + - file + - message + - name + - status + type: object + type: array + node: + type: string + phase: + type: string + successClasses: + items: + properties: + className: + type: string + deviceStates: + items: + properties: + message: + type: string + name: + type: string + state: + type: string + type: object + type: array + message: + type: string + state: + type: string + vgName: + type: string + type: object + type: array + required: + - node + - phase + type: object + type: array + phase: + description: 'INSERT ADDITIONAL STATUS FIELD - define observed state of cluster Important: Run "make" to regenerate code after modifying this file' + type: string + required: + - nodeStorageState + - phase + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: '' + plural: '' + conditions: [] + storedVersions: [] diff --git a/kube-custom-resources-rs/Cargo.toml b/kube-custom-resources-rs/Cargo.toml index 17e7a217b..1674848ca 100644 --- a/kube-custom-resources-rs/Cargo.toml +++ b/kube-custom-resources-rs/Cargo.toml @@ -221,6 +221,7 @@ multicluster_x_k8s_io_v1alpha1 = [] mutations_gatekeeper_sh_v1 = [] mutations_gatekeeper_sh_v1alpha1 = [] mutations_gatekeeper_sh_v1beta1 = [] +nativestor_alauda_io_v1 = [] networking_karmada_io_v1alpha1 = [] nfd_k8s_sigs_io_v1alpha1 = [] nfd_kubernetes_io_v1 = [] @@ -302,6 +303,8 @@ tests_testkube_io_v1 = [] tests_testkube_io_v2 = [] tests_testkube_io_v3 = [] topology_node_k8s_io_v1alpha1 = [] +topolvm_cybozu_com_v1 = [] +topolvm_cybozu_com_v2 = [] traefik_io_v1alpha1 = [] training_kubedl_io_v1alpha1 = [] virt_virtink_smartx_com_v1alpha1 = [] diff --git a/kube-custom-resources-rs/src/lib.rs b/kube-custom-resources-rs/src/lib.rs index d1aa01832..b2b3a43ca 100644 --- a/kube-custom-resources-rs/src/lib.rs +++ b/kube-custom-resources-rs/src/lib.rs @@ -1873,6 +1873,13 @@ kinds: - `AssignMetadata` - `ModifySet` +## nativestor_alauda_io_v1 + +apiVersion: `nativestor.alauda.io/v1` + +kinds: +- `RawDevice` + ## networking_karmada_io_v1alpha1 apiVersion: `networking.karmada.io/v1alpha1` @@ -2562,6 +2569,20 @@ apiVersion: `topology.node.k8s.io/v1alpha1` kinds: - `NodeResourceTopology` +## topolvm_cybozu_com_v1 + +apiVersion: `topolvm.cybozu.com/v1` + +kinds: +- `LogicalVolume` + +## topolvm_cybozu_com_v2 + +apiVersion: `topolvm.cybozu.com/v2` + +kinds: +- `TopolvmCluster` + ## traefik_io_v1alpha1 apiVersion: `traefik.io/v1alpha1` @@ -3051,6 +3072,8 @@ pub mod mutations_gatekeeper_sh_v1; pub mod mutations_gatekeeper_sh_v1alpha1; #[cfg(feature = "mutations_gatekeeper_sh_v1beta1")] pub mod mutations_gatekeeper_sh_v1beta1; +#[cfg(feature = "nativestor_alauda_io_v1")] +pub mod nativestor_alauda_io_v1; #[cfg(feature = "networking_karmada_io_v1alpha1")] pub mod networking_karmada_io_v1alpha1; #[cfg(feature = "nfd_k8s_sigs_io_v1alpha1")] @@ -3213,6 +3236,10 @@ pub mod tests_testkube_io_v2; pub mod tests_testkube_io_v3; #[cfg(feature = "topology_node_k8s_io_v1alpha1")] pub mod topology_node_k8s_io_v1alpha1; +#[cfg(feature = "topolvm_cybozu_com_v1")] +pub mod topolvm_cybozu_com_v1; +#[cfg(feature = "topolvm_cybozu_com_v2")] +pub mod topolvm_cybozu_com_v2; #[cfg(feature = "traefik_io_v1alpha1")] pub mod traefik_io_v1alpha1; #[cfg(feature = "training_kubedl_io_v1alpha1")] diff --git a/kube-custom-resources-rs/src/nativestor_alauda_io_v1/mod.rs b/kube-custom-resources-rs/src/nativestor_alauda_io_v1/mod.rs new file mode 100644 index 000000000..8f92a4b1a --- /dev/null +++ b/kube-custom-resources-rs/src/nativestor_alauda_io_v1/mod.rs @@ -0,0 +1 @@ +pub mod rawdevices; diff --git a/kube-custom-resources-rs/src/nativestor_alauda_io_v1/rawdevices.rs b/kube-custom-resources-rs/src/nativestor_alauda_io_v1/rawdevices.rs new file mode 100644 index 000000000..27fb17546 --- /dev/null +++ b/kube-custom-resources-rs/src/nativestor_alauda_io_v1/rawdevices.rs @@ -0,0 +1,34 @@ +// WARNING: generated by kopium - manual changes will be overwritten +// kopium command: kopium --docs --filename=./crd-catalog/alauda/nativestor/nativestor.alauda.io/v1/rawdevices.yaml --derive=Default --derive=PartialEq +// kopium version: 0.16.2 + +use kube::CustomResource; +use serde::{Serialize, Deserialize}; + +/// RawDeviceSpec defines the desired state of RawDevice +#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +#[kube(group = "nativestor.alauda.io", version = "v1", kind = "RawDevice", plural = "rawdevices")] +#[kube(status = "RawDeviceStatus")] +#[kube(schema = "disabled")] +pub struct RawDeviceSpec { + pub available: bool, + pub major: i32, + pub minor: i32, + /// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster Important: Run "make" to regenerate code after modifying this file + #[serde(rename = "nodeName")] + pub node_name: String, + #[serde(rename = "realPath")] + pub real_path: String, + pub size: i64, + #[serde(rename = "type")] + pub r#type: String, + pub uuid: String, +} + +/// RawDeviceStatus defines the observed state of RawDevice +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct RawDeviceStatus { + /// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster Important: Run "make" to regenerate code after modifying this file + pub name: String, +} + diff --git a/kube-custom-resources-rs/src/topolvm_cybozu_com_v1/logicalvolumes.rs b/kube-custom-resources-rs/src/topolvm_cybozu_com_v1/logicalvolumes.rs new file mode 100644 index 000000000..71427330c --- /dev/null +++ b/kube-custom-resources-rs/src/topolvm_cybozu_com_v1/logicalvolumes.rs @@ -0,0 +1,37 @@ +// WARNING: generated by kopium - manual changes will be overwritten +// kopium command: kopium --docs --filename=./crd-catalog/alauda/nativestor/topolvm.cybozu.com/v1/logicalvolumes.yaml --derive=Default --derive=PartialEq +// kopium version: 0.16.2 + +use kube::CustomResource; +use serde::{Serialize, Deserialize}; +use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString; + +/// LogicalVolumeSpec defines the desired state of LogicalVolume +#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +#[kube(group = "topolvm.cybozu.com", version = "v1", kind = "LogicalVolume", plural = "logicalvolumes")] +#[kube(status = "LogicalVolumeStatus")] +#[kube(schema = "disabled")] +pub struct LogicalVolumeSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "deviceClass")] + pub device_class: Option, + pub name: String, + #[serde(rename = "nodeName")] + pub node_name: String, + pub size: IntOrString, +} + +/// LogicalVolumeStatus defines the observed state of LogicalVolume +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct LogicalVolumeStatus { + /// A Code is an unsigned 32-bit error code as defined in the gRPC spec. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub code: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "currentSize")] + pub current_size: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub message: Option, + /// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster Important: Run "make" to regenerate code after modifying this file + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeID")] + pub volume_id: Option, +} + diff --git a/kube-custom-resources-rs/src/topolvm_cybozu_com_v1/mod.rs b/kube-custom-resources-rs/src/topolvm_cybozu_com_v1/mod.rs new file mode 100644 index 000000000..463e4f629 --- /dev/null +++ b/kube-custom-resources-rs/src/topolvm_cybozu_com_v1/mod.rs @@ -0,0 +1 @@ +pub mod logicalvolumes; diff --git a/kube-custom-resources-rs/src/topolvm_cybozu_com_v2/mod.rs b/kube-custom-resources-rs/src/topolvm_cybozu_com_v2/mod.rs new file mode 100644 index 000000000..485913c06 --- /dev/null +++ b/kube-custom-resources-rs/src/topolvm_cybozu_com_v2/mod.rs @@ -0,0 +1 @@ +pub mod topolvmclusters; diff --git a/kube-custom-resources-rs/src/topolvm_cybozu_com_v2/topolvmclusters.rs b/kube-custom-resources-rs/src/topolvm_cybozu_com_v2/topolvmclusters.rs new file mode 100644 index 000000000..45daf0d78 --- /dev/null +++ b/kube-custom-resources-rs/src/topolvm_cybozu_com_v2/topolvmclusters.rs @@ -0,0 +1,169 @@ +// WARNING: generated by kopium - manual changes will be overwritten +// kopium command: kopium --docs --filename=./crd-catalog/alauda/nativestor/topolvm.cybozu.com/v2/topolvmclusters.yaml --derive=Default --derive=PartialEq +// kopium version: 0.16.2 + +use kube::CustomResource; +use serde::{Serialize, Deserialize}; + +/// TopolvmClusterSpec defines the desired state of TopolvmCluster +#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +#[kube(group = "topolvm.cybozu.com", version = "v2", kind = "TopolvmCluster", plural = "topolvmclusters")] +#[kube(namespaced)] +#[kube(status = "TopolvmClusterStatus")] +#[kube(schema = "disabled")] +pub struct TopolvmClusterSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "certsSecret")] + pub certs_secret: Option, + pub cleanup: bool, + pub storage: TopolvmClusterStorage, + #[serde(rename = "topolvmVersion")] + pub topolvm_version: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TopolvmClusterStorage { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "className")] + pub class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "deviceClasses")] + pub device_classes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub devices: Option>, + #[serde(rename = "useAllDevices")] + pub use_all_devices: bool, + #[serde(rename = "useAllNodes")] + pub use_all_nodes: bool, + #[serde(rename = "useLoop")] + pub use_loop: bool, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeGroupName")] + pub volume_group_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TopolvmClusterStorageDeviceClasses { + pub classes: Vec, + #[serde(rename = "nodeName")] + pub node_name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TopolvmClusterStorageDeviceClassesClasses { + #[serde(rename = "className")] + pub class_name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub default: Option, + pub devices: Vec, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "spareGb")] + pub spare_gb: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stripe: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stripeSize")] + pub stripe_size: Option, + #[serde(rename = "volumeGroup")] + pub volume_group: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TopolvmClusterStorageDeviceClassesClassesDevices { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub auto: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub size: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TopolvmClusterStorageDevices { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub auto: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub size: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +/// TopolvmClusterStatus defines the observed state of TopolvmCluster +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TopolvmClusterStatus { + #[serde(rename = "nodeStorageState")] + pub node_storage_state: Vec, + /// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster Important: Run "make" to regenerate code after modifying this file + pub phase: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TopolvmClusterStatusNodeStorageState { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failClasses")] + pub fail_classes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub loops: Option>, + pub node: String, + pub phase: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successClasses")] + pub success_classes: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TopolvmClusterStatusNodeStorageStateFailClasses { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "className")] + pub class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "deviceStates")] + pub device_states: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub message: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub state: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "vgName")] + pub vg_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TopolvmClusterStatusNodeStorageStateFailClassesDeviceStates { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub message: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub state: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TopolvmClusterStatusNodeStorageStateLoops { + #[serde(rename = "deviceName")] + pub device_name: String, + pub file: String, + pub message: String, + pub name: String, + pub status: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TopolvmClusterStatusNodeStorageStateSuccessClasses { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "className")] + pub class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "deviceStates")] + pub device_states: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub message: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub state: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "vgName")] + pub vg_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TopolvmClusterStatusNodeStorageStateSuccessClassesDeviceStates { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub message: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub state: Option, +} +