longhorn_crds/
lib.rs

1// Generated by:
2// target/debug/k8s-crds-codegen
3
4pub mod longhorn_io {
5    pub mod v1beta1 {
6        pub mod backing_image {
7            /// BackingImage is where Longhorn stores backing image object.
8            #[derive(serde::Deserialize, Debug, PartialEq)]
9            pub struct BackingImage {
10                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
11                pub spec: serde_json::Map<String, serde_json::Value>,
12                pub status: serde_json::Map<String, serde_json::Value>,
13            }
14
15            impl k8s_openapi::Resource for BackingImage {
16                type Scope = k8s_openapi::ClusterResourceScope;
17
18                const API_VERSION: &'static str = "longhorn.io/v1beta1";
19                const GROUP: &'static str = "longhorn.io";
20                const KIND: &'static str = "BackingImage";
21                const VERSION: &'static str = "v1beta1";
22                const URL_PATH_SEGMENT: &'static str = "TODO";
23            }
24
25            impl k8s_openapi::Metadata for BackingImage {
26                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
27
28                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
29                    &self.metadata
30                }
31
32                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
33                    &mut self.metadata
34                }
35            }
36
37            impl serde::Serialize for BackingImage {
38                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
39                where
40                    S: serde::Serializer,
41                {
42                    use serde::ser::SerializeStruct;
43                    let mut state = serializer.serialize_struct("BackingImage", 5)?;
44                    state.serialize_field(
45                        "apiVersion",
46                        <Self as k8s_openapi::Resource>::API_VERSION,
47                    )?;
48                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
49                    state.serialize_field("metadata", &self.metadata)?;
50                    state.serialize_field("spec", &self.spec)?;
51                    state.serialize_field("status", &self.status)?;
52                    state.end()
53                }
54            }
55        }
56        pub mod backing_image_data_source {
57            /// BackingImageDataSource is where Longhorn stores backing image data source object.
58            #[derive(serde::Deserialize, Debug, PartialEq)]
59            pub struct BackingImageDataSource {
60                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
61                pub spec: serde_json::Map<String, serde_json::Value>,
62                pub status: serde_json::Map<String, serde_json::Value>,
63            }
64
65            impl k8s_openapi::Resource for BackingImageDataSource {
66                type Scope = k8s_openapi::ClusterResourceScope;
67
68                const API_VERSION: &'static str = "longhorn.io/v1beta1";
69                const GROUP: &'static str = "longhorn.io";
70                const KIND: &'static str = "BackingImageDataSource";
71                const VERSION: &'static str = "v1beta1";
72                const URL_PATH_SEGMENT: &'static str = "TODO";
73            }
74
75            impl k8s_openapi::Metadata for BackingImageDataSource {
76                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
77
78                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
79                    &self.metadata
80                }
81
82                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
83                    &mut self.metadata
84                }
85            }
86
87            impl serde::Serialize for BackingImageDataSource {
88                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
89                where
90                    S: serde::Serializer,
91                {
92                    use serde::ser::SerializeStruct;
93                    let mut state = serializer.serialize_struct("BackingImageDataSource", 5)?;
94                    state.serialize_field(
95                        "apiVersion",
96                        <Self as k8s_openapi::Resource>::API_VERSION,
97                    )?;
98                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
99                    state.serialize_field("metadata", &self.metadata)?;
100                    state.serialize_field("spec", &self.spec)?;
101                    state.serialize_field("status", &self.status)?;
102                    state.end()
103                }
104            }
105        }
106        pub mod backing_image_manager {
107            /// BackingImageManager is where Longhorn stores backing image manager object.
108            #[derive(serde::Deserialize, Debug, PartialEq)]
109            pub struct BackingImageManager {
110                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
111                pub spec: serde_json::Map<String, serde_json::Value>,
112                pub status: serde_json::Map<String, serde_json::Value>,
113            }
114
115            impl k8s_openapi::Resource for BackingImageManager {
116                type Scope = k8s_openapi::ClusterResourceScope;
117
118                const API_VERSION: &'static str = "longhorn.io/v1beta1";
119                const GROUP: &'static str = "longhorn.io";
120                const KIND: &'static str = "BackingImageManager";
121                const VERSION: &'static str = "v1beta1";
122                const URL_PATH_SEGMENT: &'static str = "TODO";
123            }
124
125            impl k8s_openapi::Metadata for BackingImageManager {
126                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
127
128                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
129                    &self.metadata
130                }
131
132                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
133                    &mut self.metadata
134                }
135            }
136
137            impl serde::Serialize for BackingImageManager {
138                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
139                where
140                    S: serde::Serializer,
141                {
142                    use serde::ser::SerializeStruct;
143                    let mut state = serializer.serialize_struct("BackingImageManager", 5)?;
144                    state.serialize_field(
145                        "apiVersion",
146                        <Self as k8s_openapi::Resource>::API_VERSION,
147                    )?;
148                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
149                    state.serialize_field("metadata", &self.metadata)?;
150                    state.serialize_field("spec", &self.spec)?;
151                    state.serialize_field("status", &self.status)?;
152                    state.end()
153                }
154            }
155        }
156        pub mod backup {
157            /// Backup is where Longhorn stores backup object.
158            #[derive(serde::Deserialize, Debug, PartialEq)]
159            pub struct Backup {
160                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
161                pub spec: serde_json::Map<String, serde_json::Value>,
162                pub status: serde_json::Map<String, serde_json::Value>,
163            }
164
165            impl k8s_openapi::Resource for Backup {
166                type Scope = k8s_openapi::ClusterResourceScope;
167
168                const API_VERSION: &'static str = "longhorn.io/v1beta1";
169                const GROUP: &'static str = "longhorn.io";
170                const KIND: &'static str = "Backup";
171                const VERSION: &'static str = "v1beta1";
172                const URL_PATH_SEGMENT: &'static str = "TODO";
173            }
174
175            impl k8s_openapi::Metadata for Backup {
176                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
177
178                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
179                    &self.metadata
180                }
181
182                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
183                    &mut self.metadata
184                }
185            }
186
187            impl serde::Serialize for Backup {
188                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
189                where
190                    S: serde::Serializer,
191                {
192                    use serde::ser::SerializeStruct;
193                    let mut state = serializer.serialize_struct("Backup", 5)?;
194                    state.serialize_field(
195                        "apiVersion",
196                        <Self as k8s_openapi::Resource>::API_VERSION,
197                    )?;
198                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
199                    state.serialize_field("metadata", &self.metadata)?;
200                    state.serialize_field("spec", &self.spec)?;
201                    state.serialize_field("status", &self.status)?;
202                    state.end()
203                }
204            }
205        }
206        pub mod backup_target {
207            /// BackupTarget is where Longhorn stores backup target object.
208            #[derive(serde::Deserialize, Debug, PartialEq)]
209            pub struct BackupTarget {
210                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
211                pub spec: serde_json::Map<String, serde_json::Value>,
212                pub status: serde_json::Map<String, serde_json::Value>,
213            }
214
215            impl k8s_openapi::Resource for BackupTarget {
216                type Scope = k8s_openapi::ClusterResourceScope;
217
218                const API_VERSION: &'static str = "longhorn.io/v1beta1";
219                const GROUP: &'static str = "longhorn.io";
220                const KIND: &'static str = "BackupTarget";
221                const VERSION: &'static str = "v1beta1";
222                const URL_PATH_SEGMENT: &'static str = "TODO";
223            }
224
225            impl k8s_openapi::Metadata for BackupTarget {
226                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
227
228                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
229                    &self.metadata
230                }
231
232                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
233                    &mut self.metadata
234                }
235            }
236
237            impl serde::Serialize for BackupTarget {
238                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
239                where
240                    S: serde::Serializer,
241                {
242                    use serde::ser::SerializeStruct;
243                    let mut state = serializer.serialize_struct("BackupTarget", 5)?;
244                    state.serialize_field(
245                        "apiVersion",
246                        <Self as k8s_openapi::Resource>::API_VERSION,
247                    )?;
248                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
249                    state.serialize_field("metadata", &self.metadata)?;
250                    state.serialize_field("spec", &self.spec)?;
251                    state.serialize_field("status", &self.status)?;
252                    state.end()
253                }
254            }
255        }
256        pub mod backup_volume {
257            /// BackupVolume is where Longhorn stores backup volume object.
258            #[derive(serde::Deserialize, Debug, PartialEq)]
259            pub struct BackupVolume {
260                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
261                pub spec: serde_json::Map<String, serde_json::Value>,
262                pub status: serde_json::Map<String, serde_json::Value>,
263            }
264
265            impl k8s_openapi::Resource for BackupVolume {
266                type Scope = k8s_openapi::ClusterResourceScope;
267
268                const API_VERSION: &'static str = "longhorn.io/v1beta1";
269                const GROUP: &'static str = "longhorn.io";
270                const KIND: &'static str = "BackupVolume";
271                const VERSION: &'static str = "v1beta1";
272                const URL_PATH_SEGMENT: &'static str = "TODO";
273            }
274
275            impl k8s_openapi::Metadata for BackupVolume {
276                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
277
278                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
279                    &self.metadata
280                }
281
282                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
283                    &mut self.metadata
284                }
285            }
286
287            impl serde::Serialize for BackupVolume {
288                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
289                where
290                    S: serde::Serializer,
291                {
292                    use serde::ser::SerializeStruct;
293                    let mut state = serializer.serialize_struct("BackupVolume", 5)?;
294                    state.serialize_field(
295                        "apiVersion",
296                        <Self as k8s_openapi::Resource>::API_VERSION,
297                    )?;
298                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
299                    state.serialize_field("metadata", &self.metadata)?;
300                    state.serialize_field("spec", &self.spec)?;
301                    state.serialize_field("status", &self.status)?;
302                    state.end()
303                }
304            }
305        }
306        pub mod engine {
307            /// Engine is where Longhorn stores engine object.
308            #[derive(serde::Deserialize, Debug, PartialEq)]
309            pub struct Engine {
310                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
311                pub spec: serde_json::Map<String, serde_json::Value>,
312                pub status: serde_json::Map<String, serde_json::Value>,
313            }
314
315            impl k8s_openapi::Resource for Engine {
316                type Scope = k8s_openapi::ClusterResourceScope;
317
318                const API_VERSION: &'static str = "longhorn.io/v1beta1";
319                const GROUP: &'static str = "longhorn.io";
320                const KIND: &'static str = "Engine";
321                const VERSION: &'static str = "v1beta1";
322                const URL_PATH_SEGMENT: &'static str = "TODO";
323            }
324
325            impl k8s_openapi::Metadata for Engine {
326                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
327
328                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
329                    &self.metadata
330                }
331
332                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
333                    &mut self.metadata
334                }
335            }
336
337            impl serde::Serialize for Engine {
338                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
339                where
340                    S: serde::Serializer,
341                {
342                    use serde::ser::SerializeStruct;
343                    let mut state = serializer.serialize_struct("Engine", 5)?;
344                    state.serialize_field(
345                        "apiVersion",
346                        <Self as k8s_openapi::Resource>::API_VERSION,
347                    )?;
348                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
349                    state.serialize_field("metadata", &self.metadata)?;
350                    state.serialize_field("spec", &self.spec)?;
351                    state.serialize_field("status", &self.status)?;
352                    state.end()
353                }
354            }
355        }
356        pub mod engine_image {
357            /// EngineImage is where Longhorn stores engine image object.
358            #[derive(serde::Deserialize, Debug, PartialEq)]
359            pub struct EngineImage {
360                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
361                pub spec: serde_json::Map<String, serde_json::Value>,
362                pub status: serde_json::Map<String, serde_json::Value>,
363            }
364
365            impl k8s_openapi::Resource for EngineImage {
366                type Scope = k8s_openapi::ClusterResourceScope;
367
368                const API_VERSION: &'static str = "longhorn.io/v1beta1";
369                const GROUP: &'static str = "longhorn.io";
370                const KIND: &'static str = "EngineImage";
371                const VERSION: &'static str = "v1beta1";
372                const URL_PATH_SEGMENT: &'static str = "TODO";
373            }
374
375            impl k8s_openapi::Metadata for EngineImage {
376                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
377
378                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
379                    &self.metadata
380                }
381
382                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
383                    &mut self.metadata
384                }
385            }
386
387            impl serde::Serialize for EngineImage {
388                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
389                where
390                    S: serde::Serializer,
391                {
392                    use serde::ser::SerializeStruct;
393                    let mut state = serializer.serialize_struct("EngineImage", 5)?;
394                    state.serialize_field(
395                        "apiVersion",
396                        <Self as k8s_openapi::Resource>::API_VERSION,
397                    )?;
398                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
399                    state.serialize_field("metadata", &self.metadata)?;
400                    state.serialize_field("spec", &self.spec)?;
401                    state.serialize_field("status", &self.status)?;
402                    state.end()
403                }
404            }
405        }
406        pub mod instance_manager {
407            /// InstanceManager is where Longhorn stores instance manager object.
408            #[derive(serde::Deserialize, Debug, PartialEq)]
409            pub struct InstanceManager {
410                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
411                pub spec: serde_json::Map<String, serde_json::Value>,
412                pub status: serde_json::Map<String, serde_json::Value>,
413            }
414
415            impl k8s_openapi::Resource for InstanceManager {
416                type Scope = k8s_openapi::ClusterResourceScope;
417
418                const API_VERSION: &'static str = "longhorn.io/v1beta1";
419                const GROUP: &'static str = "longhorn.io";
420                const KIND: &'static str = "InstanceManager";
421                const VERSION: &'static str = "v1beta1";
422                const URL_PATH_SEGMENT: &'static str = "TODO";
423            }
424
425            impl k8s_openapi::Metadata for InstanceManager {
426                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
427
428                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
429                    &self.metadata
430                }
431
432                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
433                    &mut self.metadata
434                }
435            }
436
437            impl serde::Serialize for InstanceManager {
438                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
439                where
440                    S: serde::Serializer,
441                {
442                    use serde::ser::SerializeStruct;
443                    let mut state = serializer.serialize_struct("InstanceManager", 5)?;
444                    state.serialize_field(
445                        "apiVersion",
446                        <Self as k8s_openapi::Resource>::API_VERSION,
447                    )?;
448                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
449                    state.serialize_field("metadata", &self.metadata)?;
450                    state.serialize_field("spec", &self.spec)?;
451                    state.serialize_field("status", &self.status)?;
452                    state.end()
453                }
454            }
455        }
456        pub mod node {
457            /// Node is where Longhorn stores Longhorn node object.
458            #[derive(serde::Deserialize, Debug, PartialEq)]
459            pub struct Node {
460                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
461                pub spec: serde_json::Map<String, serde_json::Value>,
462                pub status: serde_json::Map<String, serde_json::Value>,
463            }
464
465            impl k8s_openapi::Resource for Node {
466                type Scope = k8s_openapi::ClusterResourceScope;
467
468                const API_VERSION: &'static str = "longhorn.io/v1beta1";
469                const GROUP: &'static str = "longhorn.io";
470                const KIND: &'static str = "Node";
471                const VERSION: &'static str = "v1beta1";
472                const URL_PATH_SEGMENT: &'static str = "TODO";
473            }
474
475            impl k8s_openapi::Metadata for Node {
476                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
477
478                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
479                    &self.metadata
480                }
481
482                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
483                    &mut self.metadata
484                }
485            }
486
487            impl serde::Serialize for Node {
488                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
489                where
490                    S: serde::Serializer,
491                {
492                    use serde::ser::SerializeStruct;
493                    let mut state = serializer.serialize_struct("Node", 5)?;
494                    state.serialize_field(
495                        "apiVersion",
496                        <Self as k8s_openapi::Resource>::API_VERSION,
497                    )?;
498                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
499                    state.serialize_field("metadata", &self.metadata)?;
500                    state.serialize_field("spec", &self.spec)?;
501                    state.serialize_field("status", &self.status)?;
502                    state.end()
503                }
504            }
505        }
506        pub mod recurring_job {
507            /// RecurringJob is where Longhorn stores recurring job object.
508            #[derive(serde::Deserialize, Debug, PartialEq)]
509            pub struct RecurringJob {
510                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
511                pub spec: serde_json::Map<String, serde_json::Value>,
512                pub status: serde_json::Map<String, serde_json::Value>,
513            }
514
515            impl k8s_openapi::Resource for RecurringJob {
516                type Scope = k8s_openapi::ClusterResourceScope;
517
518                const API_VERSION: &'static str = "longhorn.io/v1beta1";
519                const GROUP: &'static str = "longhorn.io";
520                const KIND: &'static str = "RecurringJob";
521                const VERSION: &'static str = "v1beta1";
522                const URL_PATH_SEGMENT: &'static str = "TODO";
523            }
524
525            impl k8s_openapi::Metadata for RecurringJob {
526                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
527
528                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
529                    &self.metadata
530                }
531
532                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
533                    &mut self.metadata
534                }
535            }
536
537            impl serde::Serialize for RecurringJob {
538                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
539                where
540                    S: serde::Serializer,
541                {
542                    use serde::ser::SerializeStruct;
543                    let mut state = serializer.serialize_struct("RecurringJob", 5)?;
544                    state.serialize_field(
545                        "apiVersion",
546                        <Self as k8s_openapi::Resource>::API_VERSION,
547                    )?;
548                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
549                    state.serialize_field("metadata", &self.metadata)?;
550                    state.serialize_field("spec", &self.spec)?;
551                    state.serialize_field("status", &self.status)?;
552                    state.end()
553                }
554            }
555        }
556        pub mod replica {
557            /// Replica is where Longhorn stores replica object.
558            #[derive(serde::Deserialize, Debug, PartialEq)]
559            pub struct Replica {
560                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
561                pub spec: serde_json::Map<String, serde_json::Value>,
562                pub status: serde_json::Map<String, serde_json::Value>,
563            }
564
565            impl k8s_openapi::Resource for Replica {
566                type Scope = k8s_openapi::ClusterResourceScope;
567
568                const API_VERSION: &'static str = "longhorn.io/v1beta1";
569                const GROUP: &'static str = "longhorn.io";
570                const KIND: &'static str = "Replica";
571                const VERSION: &'static str = "v1beta1";
572                const URL_PATH_SEGMENT: &'static str = "TODO";
573            }
574
575            impl k8s_openapi::Metadata for Replica {
576                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
577
578                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
579                    &self.metadata
580                }
581
582                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
583                    &mut self.metadata
584                }
585            }
586
587            impl serde::Serialize for Replica {
588                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
589                where
590                    S: serde::Serializer,
591                {
592                    use serde::ser::SerializeStruct;
593                    let mut state = serializer.serialize_struct("Replica", 5)?;
594                    state.serialize_field(
595                        "apiVersion",
596                        <Self as k8s_openapi::Resource>::API_VERSION,
597                    )?;
598                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
599                    state.serialize_field("metadata", &self.metadata)?;
600                    state.serialize_field("spec", &self.spec)?;
601                    state.serialize_field("status", &self.status)?;
602                    state.end()
603                }
604            }
605        }
606        pub mod setting {
607            /// Setting is where Longhorn stores setting object.
608            #[derive(serde::Deserialize, Debug, PartialEq)]
609            pub struct Setting {
610                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
611                pub value: String,
612            }
613
614            impl k8s_openapi::Resource for Setting {
615                type Scope = k8s_openapi::ClusterResourceScope;
616
617                const API_VERSION: &'static str = "longhorn.io/v1beta1";
618                const GROUP: &'static str = "longhorn.io";
619                const KIND: &'static str = "Setting";
620                const VERSION: &'static str = "v1beta1";
621                const URL_PATH_SEGMENT: &'static str = "TODO";
622            }
623
624            impl k8s_openapi::Metadata for Setting {
625                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
626
627                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
628                    &self.metadata
629                }
630
631                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
632                    &mut self.metadata
633                }
634            }
635
636            impl serde::Serialize for Setting {
637                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
638                where
639                    S: serde::Serializer,
640                {
641                    use serde::ser::SerializeStruct;
642                    let mut state = serializer.serialize_struct("Setting", 4)?;
643                    state.serialize_field(
644                        "apiVersion",
645                        <Self as k8s_openapi::Resource>::API_VERSION,
646                    )?;
647                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
648                    state.serialize_field("metadata", &self.metadata)?;
649                    state.serialize_field("value", &self.value)?;
650                    state.end()
651                }
652            }
653        }
654        pub mod share_manager {
655            /// ShareManager is where Longhorn stores share manager object.
656            #[derive(serde::Deserialize, Debug, PartialEq)]
657            pub struct ShareManager {
658                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
659                pub spec: serde_json::Map<String, serde_json::Value>,
660                pub status: serde_json::Map<String, serde_json::Value>,
661            }
662
663            impl k8s_openapi::Resource for ShareManager {
664                type Scope = k8s_openapi::ClusterResourceScope;
665
666                const API_VERSION: &'static str = "longhorn.io/v1beta1";
667                const GROUP: &'static str = "longhorn.io";
668                const KIND: &'static str = "ShareManager";
669                const VERSION: &'static str = "v1beta1";
670                const URL_PATH_SEGMENT: &'static str = "TODO";
671            }
672
673            impl k8s_openapi::Metadata for ShareManager {
674                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
675
676                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
677                    &self.metadata
678                }
679
680                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
681                    &mut self.metadata
682                }
683            }
684
685            impl serde::Serialize for ShareManager {
686                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
687                where
688                    S: serde::Serializer,
689                {
690                    use serde::ser::SerializeStruct;
691                    let mut state = serializer.serialize_struct("ShareManager", 5)?;
692                    state.serialize_field(
693                        "apiVersion",
694                        <Self as k8s_openapi::Resource>::API_VERSION,
695                    )?;
696                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
697                    state.serialize_field("metadata", &self.metadata)?;
698                    state.serialize_field("spec", &self.spec)?;
699                    state.serialize_field("status", &self.status)?;
700                    state.end()
701                }
702            }
703        }
704        pub mod volume {
705            /// Volume is where Longhorn stores volume object.
706            #[derive(serde::Deserialize, Debug, PartialEq)]
707            pub struct Volume {
708                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
709                pub spec: serde_json::Map<String, serde_json::Value>,
710                pub status: serde_json::Map<String, serde_json::Value>,
711            }
712
713            impl k8s_openapi::Resource for Volume {
714                type Scope = k8s_openapi::ClusterResourceScope;
715
716                const API_VERSION: &'static str = "longhorn.io/v1beta1";
717                const GROUP: &'static str = "longhorn.io";
718                const KIND: &'static str = "Volume";
719                const VERSION: &'static str = "v1beta1";
720                const URL_PATH_SEGMENT: &'static str = "TODO";
721            }
722
723            impl k8s_openapi::Metadata for Volume {
724                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
725
726                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
727                    &self.metadata
728                }
729
730                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
731                    &mut self.metadata
732                }
733            }
734
735            impl serde::Serialize for Volume {
736                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
737                where
738                    S: serde::Serializer,
739                {
740                    use serde::ser::SerializeStruct;
741                    let mut state = serializer.serialize_struct("Volume", 5)?;
742                    state.serialize_field(
743                        "apiVersion",
744                        <Self as k8s_openapi::Resource>::API_VERSION,
745                    )?;
746                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
747                    state.serialize_field("metadata", &self.metadata)?;
748                    state.serialize_field("spec", &self.spec)?;
749                    state.serialize_field("status", &self.status)?;
750                    state.end()
751                }
752            }
753        }
754    }
755    pub mod v1beta2 {
756        pub mod backing_image {
757            /// BackingImage is where Longhorn stores backing image object.
758            #[derive(serde::Deserialize, Debug, PartialEq)]
759            pub struct BackingImage {
760                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
761                pub spec: Spec,
762                pub status: Status,
763            }
764
765            impl k8s_openapi::Resource for BackingImage {
766                type Scope = k8s_openapi::ClusterResourceScope;
767
768                const API_VERSION: &'static str = "longhorn.io/v1beta2";
769                const GROUP: &'static str = "longhorn.io";
770                const KIND: &'static str = "BackingImage";
771                const VERSION: &'static str = "v1beta2";
772                const URL_PATH_SEGMENT: &'static str = "TODO";
773            }
774
775            impl k8s_openapi::Metadata for BackingImage {
776                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
777
778                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
779                    &self.metadata
780                }
781
782                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
783                    &mut self.metadata
784                }
785            }
786
787            impl serde::Serialize for BackingImage {
788                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
789                where
790                    S: serde::Serializer,
791                {
792                    use serde::ser::SerializeStruct;
793                    let mut state = serializer.serialize_struct("BackingImage", 5)?;
794                    state.serialize_field(
795                        "apiVersion",
796                        <Self as k8s_openapi::Resource>::API_VERSION,
797                    )?;
798                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
799                    state.serialize_field("metadata", &self.metadata)?;
800                    state.serialize_field("spec", &self.spec)?;
801                    state.serialize_field("status", &self.status)?;
802                    state.end()
803                }
804            }
805
806            /// Deprecated: Replaced by field `Progress` in `DiskFileStatusMap`.
807            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
808            #[serde(rename_all = "camelCase")]
809            pub struct DiskDownloadProgressMap {
810                /// Deprecated: Replaced by field `Progress` in `DiskFileStatusMap`.
811                pub properties: std::collections::HashMap<String, i64>,
812            }
813
814            /// Deprecated: Replaced by field `State` in `DiskFileStatusMap`.
815            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
816            #[serde(rename_all = "camelCase")]
817            pub struct DiskDownloadStateMap {
818                /// Deprecated: Replaced by field `State` in `DiskFileStatusMap`.
819                pub properties: std::collections::HashMap<String, String>,
820            }
821
822            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
823            #[serde(rename_all = "camelCase")]
824            pub struct DiskFileStatusMap {
825                pub properties: std::collections::HashMap<String, Value>,
826            }
827
828            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
829            #[serde(rename_all = "camelCase")]
830            pub struct DiskLastRefAtMap {
831                pub properties: std::collections::HashMap<String, String>,
832            }
833
834            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
835            #[serde(rename_all = "camelCase")]
836            pub struct Disks {
837                pub properties: std::collections::HashMap<String, String>,
838            }
839
840            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
841            #[serde(rename_all = "camelCase")]
842            pub struct SourceParameters {
843                pub properties: std::collections::HashMap<String, String>,
844            }
845
846            /// BackingImageSpec defines the desired state of the Longhorn backing image
847            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
848            #[serde(rename_all = "camelCase")]
849            pub struct Spec {
850                pub checksum: String,
851                pub disks: Disks,
852                /// Deprecated: This kind of info will be included in the related BackingImageDataSource.
853                pub image_u_r_l: String,
854                pub source_parameters: SourceParameters,
855                pub source_type: String,
856            }
857
858            /// BackingImageStatus defines the observed state of the Longhorn backing image status
859            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
860            #[serde(rename_all = "camelCase")]
861            pub struct Status {
862                pub checksum: String,
863                /// Deprecated: Replaced by field `Progress` in `DiskFileStatusMap`.
864                pub disk_download_progress_map: Option<DiskDownloadProgressMap>,
865                /// Deprecated: Replaced by field `State` in `DiskFileStatusMap`.
866                pub disk_download_state_map: Option<DiskDownloadStateMap>,
867                pub disk_file_status_map: Option<DiskFileStatusMap>,
868                pub disk_last_ref_at_map: Option<DiskLastRefAtMap>,
869                pub owner_i_d: String,
870                pub size: i64,
871                pub uuid: String,
872            }
873
874            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
875            #[serde(rename_all = "camelCase")]
876            pub struct Value {
877                pub last_state_transition_time: String,
878                pub message: String,
879                pub progress: i64,
880                pub state: String,
881            }
882        }
883        pub mod backing_image_data_source {
884            /// BackingImageDataSource is where Longhorn stores backing image data source object.
885            #[derive(serde::Deserialize, Debug, PartialEq)]
886            pub struct BackingImageDataSource {
887                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
888                pub spec: Spec,
889                pub status: Status,
890            }
891
892            impl k8s_openapi::Resource for BackingImageDataSource {
893                type Scope = k8s_openapi::ClusterResourceScope;
894
895                const API_VERSION: &'static str = "longhorn.io/v1beta2";
896                const GROUP: &'static str = "longhorn.io";
897                const KIND: &'static str = "BackingImageDataSource";
898                const VERSION: &'static str = "v1beta2";
899                const URL_PATH_SEGMENT: &'static str = "TODO";
900            }
901
902            impl k8s_openapi::Metadata for BackingImageDataSource {
903                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
904
905                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
906                    &self.metadata
907                }
908
909                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
910                    &mut self.metadata
911                }
912            }
913
914            impl serde::Serialize for BackingImageDataSource {
915                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
916                where
917                    S: serde::Serializer,
918                {
919                    use serde::ser::SerializeStruct;
920                    let mut state = serializer.serialize_struct("BackingImageDataSource", 5)?;
921                    state.serialize_field(
922                        "apiVersion",
923                        <Self as k8s_openapi::Resource>::API_VERSION,
924                    )?;
925                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
926                    state.serialize_field("metadata", &self.metadata)?;
927                    state.serialize_field("spec", &self.spec)?;
928                    state.serialize_field("status", &self.status)?;
929                    state.end()
930                }
931            }
932
933            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
934            #[serde(rename_all = "camelCase")]
935            pub struct Parameters {
936                pub properties: std::collections::HashMap<String, String>,
937            }
938
939            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
940            #[serde(rename_all = "camelCase")]
941            pub struct RunningParameters {
942                pub properties: std::collections::HashMap<String, String>,
943            }
944
945            /// BackingImageDataSourceSpec defines the desired state of the Longhorn backing image data source
946            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
947            #[serde(rename_all = "camelCase")]
948            pub struct Spec {
949                pub checksum: String,
950                pub disk_path: String,
951                pub disk_u_u_i_d: String,
952                pub file_transferred: bool,
953                pub node_i_d: String,
954                pub parameters: Parameters,
955                pub source_type: String,
956                pub uuid: String,
957            }
958
959            /// BackingImageDataSourceStatus defines the observed state of the Longhorn backing image data source
960            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
961            #[serde(rename_all = "camelCase")]
962            pub struct Status {
963                pub checksum: String,
964                pub current_state: String,
965                pub ip: String,
966                pub message: String,
967                pub owner_i_d: String,
968                pub progress: i64,
969                pub running_parameters: Option<RunningParameters>,
970                pub size: i64,
971                pub storage_i_p: String,
972            }
973        }
974        pub mod backing_image_manager {
975            /// BackingImageManager is where Longhorn stores backing image manager object.
976            #[derive(serde::Deserialize, Debug, PartialEq)]
977            pub struct BackingImageManager {
978                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
979                pub spec: Spec,
980                pub status: Status,
981            }
982
983            impl k8s_openapi::Resource for BackingImageManager {
984                type Scope = k8s_openapi::ClusterResourceScope;
985
986                const API_VERSION: &'static str = "longhorn.io/v1beta2";
987                const GROUP: &'static str = "longhorn.io";
988                const KIND: &'static str = "BackingImageManager";
989                const VERSION: &'static str = "v1beta2";
990                const URL_PATH_SEGMENT: &'static str = "TODO";
991            }
992
993            impl k8s_openapi::Metadata for BackingImageManager {
994                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
995
996                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
997                    &self.metadata
998                }
999
1000                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
1001                    &mut self.metadata
1002                }
1003            }
1004
1005            impl serde::Serialize for BackingImageManager {
1006                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1007                where
1008                    S: serde::Serializer,
1009                {
1010                    use serde::ser::SerializeStruct;
1011                    let mut state = serializer.serialize_struct("BackingImageManager", 5)?;
1012                    state.serialize_field(
1013                        "apiVersion",
1014                        <Self as k8s_openapi::Resource>::API_VERSION,
1015                    )?;
1016                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
1017                    state.serialize_field("metadata", &self.metadata)?;
1018                    state.serialize_field("spec", &self.spec)?;
1019                    state.serialize_field("status", &self.status)?;
1020                    state.end()
1021                }
1022            }
1023
1024            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1025            #[serde(rename_all = "camelCase")]
1026            pub struct BackingImageFileMap {
1027                pub properties: std::collections::HashMap<String, Value>,
1028            }
1029
1030            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1031            #[serde(rename_all = "camelCase")]
1032            pub struct BackingImages {
1033                pub properties: std::collections::HashMap<String, String>,
1034            }
1035
1036            /// BackingImageManagerSpec defines the desired state of the Longhorn backing image manager
1037            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1038            #[serde(rename_all = "camelCase")]
1039            pub struct Spec {
1040                pub backing_images: BackingImages,
1041                pub disk_path: String,
1042                pub disk_u_u_i_d: String,
1043                pub image: String,
1044                pub node_i_d: String,
1045            }
1046
1047            /// BackingImageManagerStatus defines the observed state of the Longhorn backing image manager
1048            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1049            #[serde(rename_all = "camelCase")]
1050            pub struct Status {
1051                pub api_min_version: i64,
1052                pub api_version: i64,
1053                pub backing_image_file_map: Option<BackingImageFileMap>,
1054                pub current_state: String,
1055                pub ip: String,
1056                pub owner_i_d: String,
1057                pub storage_i_p: String,
1058            }
1059
1060            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1061            #[serde(rename_all = "camelCase")]
1062            pub struct Value {
1063                pub current_checksum: String,
1064                /// Deprecated: This field is useless.
1065                pub directory: String,
1066                /// Deprecated: This field is renamed to `Progress`.
1067                pub download_progress: i64,
1068                pub message: String,
1069                pub name: String,
1070                pub progress: i64,
1071                pub sender_manager_address: String,
1072                pub sending_reference: i64,
1073                pub size: i64,
1074                pub state: String,
1075                /// Deprecated: This field is useless now. The manager of backing image files doesn't care if a file is downloaded and how.
1076                pub url: String,
1077                pub uuid: String,
1078            }
1079        }
1080        pub mod backup {
1081            /// Backup is where Longhorn stores backup object.
1082            #[derive(serde::Deserialize, Debug, PartialEq)]
1083            pub struct Backup {
1084                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
1085                pub spec: Spec,
1086                pub status: Status,
1087            }
1088
1089            impl k8s_openapi::Resource for Backup {
1090                type Scope = k8s_openapi::ClusterResourceScope;
1091
1092                const API_VERSION: &'static str = "longhorn.io/v1beta2";
1093                const GROUP: &'static str = "longhorn.io";
1094                const KIND: &'static str = "Backup";
1095                const VERSION: &'static str = "v1beta2";
1096                const URL_PATH_SEGMENT: &'static str = "TODO";
1097            }
1098
1099            impl k8s_openapi::Metadata for Backup {
1100                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
1101
1102                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
1103                    &self.metadata
1104                }
1105
1106                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
1107                    &mut self.metadata
1108                }
1109            }
1110
1111            impl serde::Serialize for Backup {
1112                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1113                where
1114                    S: serde::Serializer,
1115                {
1116                    use serde::ser::SerializeStruct;
1117                    let mut state = serializer.serialize_struct("Backup", 5)?;
1118                    state.serialize_field(
1119                        "apiVersion",
1120                        <Self as k8s_openapi::Resource>::API_VERSION,
1121                    )?;
1122                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
1123                    state.serialize_field("metadata", &self.metadata)?;
1124                    state.serialize_field("spec", &self.spec)?;
1125                    state.serialize_field("status", &self.status)?;
1126                    state.end()
1127                }
1128            }
1129
1130            /// The labels of snapshot backup.
1131            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1132            #[serde(rename_all = "camelCase")]
1133            pub struct SpecLabels {
1134                /// The labels of snapshot backup.
1135                pub properties: std::collections::HashMap<String, String>,
1136            }
1137
1138            /// The labels of snapshot backup.
1139            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1140            #[serde(rename_all = "camelCase")]
1141            pub struct StatusLabels {
1142                /// The labels of snapshot backup.
1143                pub properties: std::collections::HashMap<String, String>,
1144            }
1145
1146            /// The error messages when calling longhorn engine on listing or inspecting backups.
1147            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1148            #[serde(rename_all = "camelCase")]
1149            pub struct Messages {
1150                /// The error messages when calling longhorn engine on listing or inspecting backups.
1151                pub properties: std::collections::HashMap<String, String>,
1152            }
1153
1154            /// BackupSpec defines the desired state of the Longhorn backup
1155            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1156            #[serde(rename_all = "camelCase")]
1157            pub struct Spec {
1158                /// The labels of snapshot backup.
1159                pub labels: SpecLabels,
1160                /// The snapshot name.
1161                pub snapshot_name: String,
1162                /// The time to request run sync the remote backup.
1163                pub sync_requested_at: Option<String>,
1164            }
1165
1166            /// BackupStatus defines the observed state of the Longhorn backup
1167            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1168            #[serde(rename_all = "camelCase")]
1169            pub struct Status {
1170                /// The snapshot backup upload finished time.
1171                pub backup_created_at: String,
1172                /// The error message when taking the snapshot backup.
1173                pub error: String,
1174                /// The labels of snapshot backup.
1175                pub labels: Option<StatusLabels>,
1176                /// The last time that the backup was synced with the remote backup target.
1177                pub last_synced_at: Option<String>,
1178                /// The error messages when calling longhorn engine on listing or inspecting backups.
1179                pub messages: Option<Messages>,
1180                /// The node ID on which the controller is responsible to reconcile this backup CR.
1181                pub owner_i_d: String,
1182                /// The snapshot backup progress.
1183                pub progress: i64,
1184                /// The address of the replica that runs snapshot backup.
1185                pub replica_address: String,
1186                /// The snapshot size.
1187                pub size: String,
1188                /// The snapshot creation time.
1189                pub snapshot_created_at: String,
1190                /// The snapshot name.
1191                pub snapshot_name: String,
1192                /// The backup creation state. Can be "", "InProgress", "Completed", "Error", "Unknown".
1193                pub state: String,
1194                /// The snapshot backup URL.
1195                pub url: String,
1196                /// The volume's backing image name.
1197                pub volume_backing_image_name: String,
1198                /// The volume creation time.
1199                pub volume_created: String,
1200                /// The volume name.
1201                pub volume_name: String,
1202                /// The volume size.
1203                pub volume_size: String,
1204            }
1205        }
1206        pub mod backup_target {
1207            /// BackupTarget is where Longhorn stores backup target object.
1208            #[derive(serde::Deserialize, Debug, PartialEq)]
1209            pub struct BackupTarget {
1210                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
1211                pub spec: Spec,
1212                pub status: Status,
1213            }
1214
1215            impl k8s_openapi::Resource for BackupTarget {
1216                type Scope = k8s_openapi::ClusterResourceScope;
1217
1218                const API_VERSION: &'static str = "longhorn.io/v1beta2";
1219                const GROUP: &'static str = "longhorn.io";
1220                const KIND: &'static str = "BackupTarget";
1221                const VERSION: &'static str = "v1beta2";
1222                const URL_PATH_SEGMENT: &'static str = "TODO";
1223            }
1224
1225            impl k8s_openapi::Metadata for BackupTarget {
1226                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
1227
1228                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
1229                    &self.metadata
1230                }
1231
1232                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
1233                    &mut self.metadata
1234                }
1235            }
1236
1237            impl serde::Serialize for BackupTarget {
1238                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1239                where
1240                    S: serde::Serializer,
1241                {
1242                    use serde::ser::SerializeStruct;
1243                    let mut state = serializer.serialize_struct("BackupTarget", 5)?;
1244                    state.serialize_field(
1245                        "apiVersion",
1246                        <Self as k8s_openapi::Resource>::API_VERSION,
1247                    )?;
1248                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
1249                    state.serialize_field("metadata", &self.metadata)?;
1250                    state.serialize_field("spec", &self.spec)?;
1251                    state.serialize_field("status", &self.status)?;
1252                    state.end()
1253                }
1254            }
1255
1256            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1257            #[serde(rename_all = "camelCase")]
1258            pub struct ConditionsItem {
1259                /// Last time we probed the condition.
1260                pub last_probe_time: String,
1261                /// Last time the condition transitioned from one status to another.
1262                pub last_transition_time: String,
1263                /// Human-readable message indicating details about last transition.
1264                pub message: String,
1265                /// Unique, one-word, CamelCase reason for the condition's last transition.
1266                pub reason: String,
1267                /// Status is the status of the condition. Can be True, False, Unknown.
1268                pub status: String,
1269                /// Type is the type of the condition.
1270                pub r#type: String,
1271            }
1272
1273            /// BackupTargetSpec defines the desired state of the Longhorn backup target
1274            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1275            #[serde(rename_all = "camelCase")]
1276            pub struct Spec {
1277                /// The backup target URL.
1278                pub backup_target_u_r_l: String,
1279                /// The backup target credential secret.
1280                pub credential_secret: String,
1281                /// The interval that the cluster needs to run sync with the backup target.
1282                pub poll_interval: String,
1283                /// The time to request run sync the remote backup target.
1284                pub sync_requested_at: Option<String>,
1285            }
1286
1287            /// BackupTargetStatus defines the observed state of the Longhorn backup target
1288            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1289            #[serde(rename_all = "camelCase")]
1290            pub struct Status {
1291                /// Available indicates if the remote backup target is available or not.
1292                pub available: bool,
1293                /// Records the reason on why the backup target is unavailable.
1294                pub conditions: Option<Vec<ConditionsItem>>,
1295                /// The last time that the controller synced with the remote backup target.
1296                pub last_synced_at: Option<String>,
1297                /// The node ID on which the controller is responsible to reconcile this backup target CR.
1298                pub owner_i_d: String,
1299            }
1300        }
1301        pub mod backup_volume {
1302            /// BackupVolume is where Longhorn stores backup volume object.
1303            #[derive(serde::Deserialize, Debug, PartialEq)]
1304            pub struct BackupVolume {
1305                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
1306                pub spec: Spec,
1307                pub status: Status,
1308            }
1309
1310            impl k8s_openapi::Resource for BackupVolume {
1311                type Scope = k8s_openapi::ClusterResourceScope;
1312
1313                const API_VERSION: &'static str = "longhorn.io/v1beta2";
1314                const GROUP: &'static str = "longhorn.io";
1315                const KIND: &'static str = "BackupVolume";
1316                const VERSION: &'static str = "v1beta2";
1317                const URL_PATH_SEGMENT: &'static str = "TODO";
1318            }
1319
1320            impl k8s_openapi::Metadata for BackupVolume {
1321                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
1322
1323                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
1324                    &self.metadata
1325                }
1326
1327                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
1328                    &mut self.metadata
1329                }
1330            }
1331
1332            impl serde::Serialize for BackupVolume {
1333                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1334                where
1335                    S: serde::Serializer,
1336                {
1337                    use serde::ser::SerializeStruct;
1338                    let mut state = serializer.serialize_struct("BackupVolume", 5)?;
1339                    state.serialize_field(
1340                        "apiVersion",
1341                        <Self as k8s_openapi::Resource>::API_VERSION,
1342                    )?;
1343                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
1344                    state.serialize_field("metadata", &self.metadata)?;
1345                    state.serialize_field("spec", &self.spec)?;
1346                    state.serialize_field("status", &self.status)?;
1347                    state.end()
1348                }
1349            }
1350
1351            /// The backup volume labels.
1352            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1353            #[serde(rename_all = "camelCase")]
1354            pub struct Labels {
1355                /// The backup volume labels.
1356                pub properties: std::collections::HashMap<String, String>,
1357            }
1358
1359            /// The error messages when call longhorn engine on list or inspect backup volumes.
1360            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1361            #[serde(rename_all = "camelCase")]
1362            pub struct Messages {
1363                /// The error messages when call longhorn engine on list or inspect backup volumes.
1364                pub properties: std::collections::HashMap<String, String>,
1365            }
1366
1367            /// BackupVolumeSpec defines the desired state of the Longhorn backup volume
1368            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1369            #[serde(rename_all = "camelCase")]
1370            pub struct Spec {
1371                /// The time to request run sync the remote backup volume.
1372                pub sync_requested_at: Option<String>,
1373            }
1374
1375            /// BackupVolumeStatus defines the observed state of the Longhorn backup volume
1376            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1377            #[serde(rename_all = "camelCase")]
1378            pub struct Status {
1379                /// the backing image checksum.
1380                pub backing_image_checksum: String,
1381                /// The backing image name.
1382                pub backing_image_name: String,
1383                /// The backup volume creation time.
1384                pub created_at: String,
1385                /// The backup volume block count.
1386                pub data_stored: String,
1387                /// The backup volume labels.
1388                pub labels: Option<Labels>,
1389                /// The latest volume backup time.
1390                pub last_backup_at: String,
1391                /// The latest volume backup name.
1392                pub last_backup_name: String,
1393                /// The backup volume config last modification time.
1394                pub last_modification_time: Option<String>,
1395                /// The last time that the backup volume was synced into the cluster.
1396                pub last_synced_at: Option<String>,
1397                /// The error messages when call longhorn engine on list or inspect backup volumes.
1398                pub messages: Option<Messages>,
1399                /// The node ID on which the controller is responsible to reconcile this backup volume CR.
1400                pub owner_i_d: String,
1401                /// The backup volume size.
1402                pub size: String,
1403            }
1404        }
1405        pub mod engine {
1406            /// Engine is where Longhorn stores engine object.
1407            #[derive(serde::Deserialize, Debug, PartialEq)]
1408            pub struct Engine {
1409                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
1410                pub spec: Spec,
1411                pub status: Status,
1412            }
1413
1414            impl k8s_openapi::Resource for Engine {
1415                type Scope = k8s_openapi::ClusterResourceScope;
1416
1417                const API_VERSION: &'static str = "longhorn.io/v1beta2";
1418                const GROUP: &'static str = "longhorn.io";
1419                const KIND: &'static str = "Engine";
1420                const VERSION: &'static str = "v1beta2";
1421                const URL_PATH_SEGMENT: &'static str = "TODO";
1422            }
1423
1424            impl k8s_openapi::Metadata for Engine {
1425                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
1426
1427                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
1428                    &self.metadata
1429                }
1430
1431                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
1432                    &mut self.metadata
1433                }
1434            }
1435
1436            impl serde::Serialize for Engine {
1437                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1438                where
1439                    S: serde::Serializer,
1440                {
1441                    use serde::ser::SerializeStruct;
1442                    let mut state = serializer.serialize_struct("Engine", 5)?;
1443                    state.serialize_field(
1444                        "apiVersion",
1445                        <Self as k8s_openapi::Resource>::API_VERSION,
1446                    )?;
1447                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
1448                    state.serialize_field("metadata", &self.metadata)?;
1449                    state.serialize_field("spec", &self.spec)?;
1450                    state.serialize_field("status", &self.status)?;
1451                    state.end()
1452                }
1453            }
1454
1455            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1456            #[serde(rename_all = "camelCase")]
1457            pub struct BackupStatus {
1458                pub properties: std::collections::HashMap<String, BackupStatusValue>,
1459            }
1460
1461            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1462            #[serde(rename_all = "camelCase")]
1463            pub struct Children {
1464                pub properties: std::collections::HashMap<String, bool>,
1465            }
1466
1467            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1468            #[serde(rename_all = "camelCase")]
1469            pub struct CloneStatus {
1470                pub properties: std::collections::HashMap<String, CloneStatusValue>,
1471            }
1472
1473            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1474            #[serde(rename_all = "camelCase")]
1475            pub struct CurrentReplicaAddressMap {
1476                pub properties: std::collections::HashMap<String, String>,
1477            }
1478
1479            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1480            #[serde(rename_all = "camelCase")]
1481            pub struct Labels {
1482                pub properties: std::collections::HashMap<String, String>,
1483            }
1484
1485            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1486            #[serde(rename_all = "camelCase")]
1487            pub struct PurgeStatus {
1488                pub properties: std::collections::HashMap<String, PurgeStatusValue>,
1489            }
1490
1491            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1492            #[serde(rename_all = "camelCase")]
1493            pub struct RebuildStatus {
1494                pub properties: std::collections::HashMap<String, RebuildStatusValue>,
1495            }
1496
1497            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1498            #[serde(rename_all = "camelCase")]
1499            pub struct ReplicaAddressMap {
1500                pub properties: std::collections::HashMap<String, String>,
1501            }
1502
1503            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1504            #[serde(rename_all = "camelCase")]
1505            pub struct ReplicaModeMap {
1506                pub properties: std::collections::HashMap<String, String>,
1507            }
1508
1509            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1510            #[serde(rename_all = "camelCase")]
1511            pub struct RestoreStatus {
1512                pub properties: std::collections::HashMap<String, RestoreStatusValue>,
1513            }
1514
1515            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1516            #[serde(rename_all = "camelCase")]
1517            pub struct Snapshots {
1518                pub properties: std::collections::HashMap<String, SnapshotsValue>,
1519            }
1520
1521            /// EngineSpec defines the desired state of the Longhorn engine
1522            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1523            #[serde(rename_all = "camelCase")]
1524            pub struct Spec {
1525                pub active: bool,
1526                pub backup_volume: String,
1527                pub desire_state: String,
1528                pub disable_frontend: bool,
1529                pub engine_image: String,
1530                pub frontend: String,
1531                pub log_requested: bool,
1532                pub node_i_d: String,
1533                pub replica_address_map: ReplicaAddressMap,
1534                pub requested_backup_restore: String,
1535                pub requested_data_source: String,
1536                pub revision_counter_disabled: bool,
1537                pub salvage_requested: bool,
1538                pub upgraded_replica_address_map: UpgradedReplicaAddressMap,
1539                pub volume_name: String,
1540                pub volume_size: String,
1541            }
1542
1543            /// EngineStatus defines the observed state of the Longhorn engine
1544            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1545            #[serde(rename_all = "camelCase")]
1546            pub struct Status {
1547                pub backup_status: Option<BackupStatus>,
1548                pub clone_status: Option<CloneStatus>,
1549                pub current_image: String,
1550                pub current_replica_address_map: Option<CurrentReplicaAddressMap>,
1551                pub current_size: String,
1552                pub current_state: String,
1553                pub endpoint: String,
1554                pub instance_manager_name: String,
1555                pub ip: String,
1556                pub is_expanding: bool,
1557                pub last_expansion_error: String,
1558                pub last_expansion_failed_at: String,
1559                pub last_restored_backup: String,
1560                pub log_fetched: bool,
1561                pub owner_i_d: String,
1562                pub port: i64,
1563                pub purge_status: Option<PurgeStatus>,
1564                pub rebuild_status: Option<RebuildStatus>,
1565                pub replica_mode_map: Option<ReplicaModeMap>,
1566                pub restore_status: Option<RestoreStatus>,
1567                pub salvage_executed: bool,
1568                pub snapshots: Option<Snapshots>,
1569                pub snapshots_error: String,
1570                pub started: bool,
1571                pub storage_i_p: String,
1572            }
1573
1574            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1575            #[serde(rename_all = "camelCase")]
1576            pub struct UpgradedReplicaAddressMap {
1577                pub properties: std::collections::HashMap<String, String>,
1578            }
1579
1580            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1581            #[serde(rename_all = "camelCase")]
1582            pub struct BackupStatusValue {
1583                pub backup_u_r_l: String,
1584                pub error: String,
1585                pub progress: i64,
1586                pub replica_address: String,
1587                pub snapshot_name: String,
1588                pub state: String,
1589            }
1590
1591            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1592            #[serde(rename_all = "camelCase")]
1593            pub struct CloneStatusValue {
1594                pub error: String,
1595                pub from_replica_address: String,
1596                pub is_cloning: bool,
1597                pub progress: i64,
1598                pub snapshot_name: String,
1599                pub state: String,
1600            }
1601
1602            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1603            #[serde(rename_all = "camelCase")]
1604            pub struct PurgeStatusValue {
1605                pub error: String,
1606                pub is_purging: bool,
1607                pub progress: i64,
1608                pub state: String,
1609            }
1610
1611            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1612            #[serde(rename_all = "camelCase")]
1613            pub struct RebuildStatusValue {
1614                pub error: String,
1615                pub from_replica_address: String,
1616                pub is_rebuilding: bool,
1617                pub progress: i64,
1618                pub state: String,
1619            }
1620
1621            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1622            #[serde(rename_all = "camelCase")]
1623            pub struct RestoreStatusValue {
1624                pub backup_u_r_l: String,
1625                pub current_restoring_backup: String,
1626                pub error: String,
1627                pub filename: String,
1628                pub is_restoring: bool,
1629                pub last_restored: String,
1630                pub progress: i64,
1631                pub state: String,
1632            }
1633
1634            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1635            #[serde(rename_all = "camelCase")]
1636            pub struct SnapshotsValue {
1637                pub children: Option<Children>,
1638                pub created: String,
1639                pub labels: Option<Labels>,
1640                pub name: String,
1641                pub parent: String,
1642                pub removed: bool,
1643                pub size: String,
1644                pub usercreated: bool,
1645            }
1646        }
1647        pub mod engine_image {
1648            /// EngineImage is where Longhorn stores engine image object.
1649            #[derive(serde::Deserialize, Debug, PartialEq)]
1650            pub struct EngineImage {
1651                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
1652                pub spec: Spec,
1653                pub status: Status,
1654            }
1655
1656            impl k8s_openapi::Resource for EngineImage {
1657                type Scope = k8s_openapi::ClusterResourceScope;
1658
1659                const API_VERSION: &'static str = "longhorn.io/v1beta2";
1660                const GROUP: &'static str = "longhorn.io";
1661                const KIND: &'static str = "EngineImage";
1662                const VERSION: &'static str = "v1beta2";
1663                const URL_PATH_SEGMENT: &'static str = "TODO";
1664            }
1665
1666            impl k8s_openapi::Metadata for EngineImage {
1667                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
1668
1669                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
1670                    &self.metadata
1671                }
1672
1673                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
1674                    &mut self.metadata
1675                }
1676            }
1677
1678            impl serde::Serialize for EngineImage {
1679                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1680                where
1681                    S: serde::Serializer,
1682                {
1683                    use serde::ser::SerializeStruct;
1684                    let mut state = serializer.serialize_struct("EngineImage", 5)?;
1685                    state.serialize_field(
1686                        "apiVersion",
1687                        <Self as k8s_openapi::Resource>::API_VERSION,
1688                    )?;
1689                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
1690                    state.serialize_field("metadata", &self.metadata)?;
1691                    state.serialize_field("spec", &self.spec)?;
1692                    state.serialize_field("status", &self.status)?;
1693                    state.end()
1694                }
1695            }
1696
1697            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1698            #[serde(rename_all = "camelCase")]
1699            pub struct ConditionsItem {
1700                /// Last time we probed the condition.
1701                pub last_probe_time: String,
1702                /// Last time the condition transitioned from one status to another.
1703                pub last_transition_time: String,
1704                /// Human-readable message indicating details about last transition.
1705                pub message: String,
1706                /// Unique, one-word, CamelCase reason for the condition's last transition.
1707                pub reason: String,
1708                /// Status is the status of the condition. Can be True, False, Unknown.
1709                pub status: String,
1710                /// Type is the type of the condition.
1711                pub r#type: String,
1712            }
1713
1714            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1715            #[serde(rename_all = "camelCase")]
1716            pub struct NodeDeploymentMap {
1717                pub properties: std::collections::HashMap<String, bool>,
1718            }
1719
1720            /// EngineImageSpec defines the desired state of the Longhorn engine image
1721            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1722            #[serde(rename_all = "camelCase")]
1723            pub struct Spec {
1724                pub image: String,
1725            }
1726
1727            /// EngineImageStatus defines the observed state of the Longhorn engine image
1728            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1729            #[serde(rename_all = "camelCase")]
1730            pub struct Status {
1731                pub build_date: String,
1732                pub cli_a_p_i_min_version: i64,
1733                pub cli_a_p_i_version: i64,
1734                pub conditions: Option<Vec<ConditionsItem>>,
1735                pub controller_a_p_i_min_version: i64,
1736                pub controller_a_p_i_version: i64,
1737                pub data_format_min_version: i64,
1738                pub data_format_version: i64,
1739                pub git_commit: String,
1740                pub no_ref_since: String,
1741                pub node_deployment_map: Option<NodeDeploymentMap>,
1742                pub owner_i_d: String,
1743                pub ref_count: i64,
1744                pub state: String,
1745                pub version: String,
1746            }
1747        }
1748        pub mod instance_manager {
1749            /// InstanceManager is where Longhorn stores instance manager object.
1750            #[derive(serde::Deserialize, Debug, PartialEq)]
1751            pub struct InstanceManager {
1752                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
1753                pub spec: Spec,
1754                pub status: Status,
1755            }
1756
1757            impl k8s_openapi::Resource for InstanceManager {
1758                type Scope = k8s_openapi::ClusterResourceScope;
1759
1760                const API_VERSION: &'static str = "longhorn.io/v1beta2";
1761                const GROUP: &'static str = "longhorn.io";
1762                const KIND: &'static str = "InstanceManager";
1763                const VERSION: &'static str = "v1beta2";
1764                const URL_PATH_SEGMENT: &'static str = "TODO";
1765            }
1766
1767            impl k8s_openapi::Metadata for InstanceManager {
1768                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
1769
1770                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
1771                    &self.metadata
1772                }
1773
1774                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
1775                    &mut self.metadata
1776                }
1777            }
1778
1779            impl serde::Serialize for InstanceManager {
1780                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1781                where
1782                    S: serde::Serializer,
1783                {
1784                    use serde::ser::SerializeStruct;
1785                    let mut state = serializer.serialize_struct("InstanceManager", 5)?;
1786                    state.serialize_field(
1787                        "apiVersion",
1788                        <Self as k8s_openapi::Resource>::API_VERSION,
1789                    )?;
1790                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
1791                    state.serialize_field("metadata", &self.metadata)?;
1792                    state.serialize_field("spec", &self.spec)?;
1793                    state.serialize_field("status", &self.status)?;
1794                    state.end()
1795                }
1796            }
1797
1798            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1799            #[serde(rename_all = "camelCase")]
1800            pub struct Instances {
1801                pub properties: std::collections::HashMap<String, Value>,
1802            }
1803
1804            /// InstanceManagerSpec defines the desired state of the Longhorn instancer manager
1805            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1806            #[serde(rename_all = "camelCase")]
1807            pub struct Spec {
1808                /// TODO: deprecate this field
1809                pub engine_image: String,
1810                pub image: String,
1811                pub node_i_d: String,
1812                pub r#type: String,
1813            }
1814
1815            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1816            #[serde(rename_all = "camelCase")]
1817            pub struct ValueSpec {
1818                pub name: String,
1819            }
1820
1821            /// InstanceManagerStatus defines the observed state of the Longhorn instance manager
1822            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1823            #[serde(rename_all = "camelCase")]
1824            pub struct Status {
1825                pub api_min_version: i64,
1826                pub api_version: i64,
1827                pub current_state: String,
1828                pub instances: Option<Instances>,
1829                pub ip: String,
1830                pub owner_i_d: String,
1831                pub proxy_api_min_version: i64,
1832                pub proxy_api_version: i64,
1833            }
1834
1835            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1836            #[serde(rename_all = "camelCase")]
1837            pub struct ValueStatus {
1838                pub endpoint: String,
1839                pub error_msg: String,
1840                pub listen: String,
1841                pub port_end: i32,
1842                pub port_start: i32,
1843                pub resource_version: i64,
1844                pub state: String,
1845                pub r#type: String,
1846            }
1847
1848            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1849            #[serde(rename_all = "camelCase")]
1850            pub struct Value {
1851                pub spec: ValueSpec,
1852                pub status: ValueStatus,
1853            }
1854        }
1855        pub mod node {
1856            /// Node is where Longhorn stores Longhorn node object.
1857            #[derive(serde::Deserialize, Debug, PartialEq)]
1858            pub struct Node {
1859                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
1860                pub spec: Spec,
1861                pub status: Status,
1862            }
1863
1864            impl k8s_openapi::Resource for Node {
1865                type Scope = k8s_openapi::ClusterResourceScope;
1866
1867                const API_VERSION: &'static str = "longhorn.io/v1beta2";
1868                const GROUP: &'static str = "longhorn.io";
1869                const KIND: &'static str = "Node";
1870                const VERSION: &'static str = "v1beta2";
1871                const URL_PATH_SEGMENT: &'static str = "TODO";
1872            }
1873
1874            impl k8s_openapi::Metadata for Node {
1875                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
1876
1877                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
1878                    &self.metadata
1879                }
1880
1881                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
1882                    &mut self.metadata
1883                }
1884            }
1885
1886            impl serde::Serialize for Node {
1887                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1888                where
1889                    S: serde::Serializer,
1890                {
1891                    use serde::ser::SerializeStruct;
1892                    let mut state = serializer.serialize_struct("Node", 5)?;
1893                    state.serialize_field(
1894                        "apiVersion",
1895                        <Self as k8s_openapi::Resource>::API_VERSION,
1896                    )?;
1897                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
1898                    state.serialize_field("metadata", &self.metadata)?;
1899                    state.serialize_field("spec", &self.spec)?;
1900                    state.serialize_field("status", &self.status)?;
1901                    state.end()
1902                }
1903            }
1904
1905            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1906            #[serde(rename_all = "camelCase")]
1907            pub struct StatusConditionsItem {
1908                /// Last time we probed the condition.
1909                pub last_probe_time: String,
1910                /// Last time the condition transitioned from one status to another.
1911                pub last_transition_time: String,
1912                /// Human-readable message indicating details about last transition.
1913                pub message: String,
1914                /// Unique, one-word, CamelCase reason for the condition's last transition.
1915                pub reason: String,
1916                /// Status is the status of the condition. Can be True, False, Unknown.
1917                pub status: String,
1918                /// Type is the type of the condition.
1919                pub r#type: String,
1920            }
1921
1922            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1923            #[serde(rename_all = "camelCase")]
1924            pub struct ValueConditionsItem {
1925                /// Last time we probed the condition.
1926                pub last_probe_time: String,
1927                /// Last time the condition transitioned from one status to another.
1928                pub last_transition_time: String,
1929                /// Human-readable message indicating details about last transition.
1930                pub message: String,
1931                /// Unique, one-word, CamelCase reason for the condition's last transition.
1932                pub reason: String,
1933                /// Status is the status of the condition. Can be True, False, Unknown.
1934                pub status: String,
1935                /// Type is the type of the condition.
1936                pub r#type: String,
1937            }
1938
1939            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1940            #[serde(rename_all = "camelCase")]
1941            pub struct DiskStatus {
1942                pub properties: std::collections::HashMap<String, DiskStatusValue>,
1943            }
1944
1945            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1946            #[serde(rename_all = "camelCase")]
1947            pub struct Disks {
1948                pub properties: std::collections::HashMap<String, DisksValue>,
1949            }
1950
1951            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1952            #[serde(rename_all = "camelCase")]
1953            pub struct ScheduledReplica {
1954                pub properties: std::collections::HashMap<String, i64>,
1955            }
1956
1957            /// NodeSpec defines the desired state of the Longhorn node
1958            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1959            #[serde(rename_all = "camelCase")]
1960            pub struct Spec {
1961                pub allow_scheduling: bool,
1962                pub disks: Disks,
1963                pub engine_manager_c_p_u_request: i64,
1964                pub eviction_requested: bool,
1965                pub name: String,
1966                pub replica_manager_c_p_u_request: i64,
1967                pub tags: Vec<String>,
1968            }
1969
1970            /// NodeStatus defines the observed state of the Longhorn node
1971            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1972            #[serde(rename_all = "camelCase")]
1973            pub struct Status {
1974                pub conditions: Option<Vec<StatusConditionsItem>>,
1975                pub disk_status: Option<DiskStatus>,
1976                pub region: String,
1977                pub zone: String,
1978            }
1979
1980            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1981            #[serde(rename_all = "camelCase")]
1982            pub struct DisksValue {
1983                pub allow_scheduling: bool,
1984                pub eviction_requested: bool,
1985                pub path: String,
1986                pub storage_reserved: i64,
1987                pub tags: Vec<String>,
1988            }
1989
1990            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
1991            #[serde(rename_all = "camelCase")]
1992            pub struct DiskStatusValue {
1993                pub conditions: Option<Vec<ValueConditionsItem>>,
1994                pub disk_u_u_i_d: String,
1995                pub scheduled_replica: Option<ScheduledReplica>,
1996                pub storage_available: i64,
1997                pub storage_maximum: i64,
1998                pub storage_scheduled: i64,
1999            }
2000        }
2001        pub mod orphan {
2002            /// Orphan is where Longhorn stores orphan object.
2003            #[derive(serde::Deserialize, Debug, PartialEq)]
2004            pub struct Orphan {
2005                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
2006                pub spec: Spec,
2007                pub status: Status,
2008            }
2009
2010            impl k8s_openapi::Resource for Orphan {
2011                type Scope = k8s_openapi::ClusterResourceScope;
2012
2013                const API_VERSION: &'static str = "longhorn.io/v1beta2";
2014                const GROUP: &'static str = "longhorn.io";
2015                const KIND: &'static str = "Orphan";
2016                const VERSION: &'static str = "v1beta2";
2017                const URL_PATH_SEGMENT: &'static str = "TODO";
2018            }
2019
2020            impl k8s_openapi::Metadata for Orphan {
2021                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
2022
2023                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
2024                    &self.metadata
2025                }
2026
2027                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
2028                    &mut self.metadata
2029                }
2030            }
2031
2032            impl serde::Serialize for Orphan {
2033                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
2034                where
2035                    S: serde::Serializer,
2036                {
2037                    use serde::ser::SerializeStruct;
2038                    let mut state = serializer.serialize_struct("Orphan", 5)?;
2039                    state.serialize_field(
2040                        "apiVersion",
2041                        <Self as k8s_openapi::Resource>::API_VERSION,
2042                    )?;
2043                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
2044                    state.serialize_field("metadata", &self.metadata)?;
2045                    state.serialize_field("spec", &self.spec)?;
2046                    state.serialize_field("status", &self.status)?;
2047                    state.end()
2048                }
2049            }
2050
2051            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2052            #[serde(rename_all = "camelCase")]
2053            pub struct ConditionsItem {
2054                /// Last time we probed the condition.
2055                pub last_probe_time: String,
2056                /// Last time the condition transitioned from one status to another.
2057                pub last_transition_time: String,
2058                /// Human-readable message indicating details about last transition.
2059                pub message: String,
2060                /// Unique, one-word, CamelCase reason for the condition's last transition.
2061                pub reason: String,
2062                /// Status is the status of the condition. Can be True, False, Unknown.
2063                pub status: String,
2064                /// Type is the type of the condition.
2065                pub r#type: String,
2066            }
2067
2068            /// The parameters of the orphaned data
2069            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2070            #[serde(rename_all = "camelCase")]
2071            pub struct Parameters {
2072                /// The parameters of the orphaned data
2073                pub properties: std::collections::HashMap<String, String>,
2074            }
2075
2076            /// OrphanSpec defines the desired state of the Longhorn orphaned data
2077            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2078            #[serde(rename_all = "camelCase")]
2079            pub struct Spec {
2080                /// The node ID on which the controller is responsible to reconcile this orphan CR.
2081                pub node_i_d: String,
2082                /// The type of the orphaned data. Can be "replica".
2083                pub orphan_type: String,
2084                /// The parameters of the orphaned data
2085                pub parameters: Parameters,
2086            }
2087
2088            /// OrphanStatus defines the observed state of the Longhorn orphaned data
2089            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2090            #[serde(rename_all = "camelCase")]
2091            pub struct Status {
2092                pub conditions: Option<Vec<ConditionsItem>>,
2093                pub owner_i_d: String,
2094            }
2095        }
2096        pub mod recurring_job {
2097            /// RecurringJob is where Longhorn stores recurring job object.
2098            #[derive(serde::Deserialize, Debug, PartialEq)]
2099            pub struct RecurringJob {
2100                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
2101                pub spec: Spec,
2102                pub status: Status,
2103            }
2104
2105            impl k8s_openapi::Resource for RecurringJob {
2106                type Scope = k8s_openapi::ClusterResourceScope;
2107
2108                const API_VERSION: &'static str = "longhorn.io/v1beta2";
2109                const GROUP: &'static str = "longhorn.io";
2110                const KIND: &'static str = "RecurringJob";
2111                const VERSION: &'static str = "v1beta2";
2112                const URL_PATH_SEGMENT: &'static str = "TODO";
2113            }
2114
2115            impl k8s_openapi::Metadata for RecurringJob {
2116                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
2117
2118                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
2119                    &self.metadata
2120                }
2121
2122                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
2123                    &mut self.metadata
2124                }
2125            }
2126
2127            impl serde::Serialize for RecurringJob {
2128                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
2129                where
2130                    S: serde::Serializer,
2131                {
2132                    use serde::ser::SerializeStruct;
2133                    let mut state = serializer.serialize_struct("RecurringJob", 5)?;
2134                    state.serialize_field(
2135                        "apiVersion",
2136                        <Self as k8s_openapi::Resource>::API_VERSION,
2137                    )?;
2138                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
2139                    state.serialize_field("metadata", &self.metadata)?;
2140                    state.serialize_field("spec", &self.spec)?;
2141                    state.serialize_field("status", &self.status)?;
2142                    state.end()
2143                }
2144            }
2145
2146            /// The label of the snapshot/backup.
2147            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2148            #[serde(rename_all = "camelCase")]
2149            pub struct Labels {
2150                /// The label of the snapshot/backup.
2151                pub properties: std::collections::HashMap<String, String>,
2152            }
2153
2154            /// RecurringJobSpec defines the desired state of the Longhorn recurring job
2155            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2156            #[serde(rename_all = "camelCase")]
2157            pub struct Spec {
2158                /// The concurrency of taking the snapshot/backup.
2159                pub concurrency: i64,
2160                /// The cron setting.
2161                pub cron: String,
2162                /// The recurring job group.
2163                pub groups: Vec<String>,
2164                /// The label of the snapshot/backup.
2165                pub labels: Labels,
2166                /// The recurring job name.
2167                pub name: String,
2168                /// The retain count of the snapshot/backup.
2169                pub retain: i64,
2170                /// The recurring job type. Can be "snapshot" or "backup".
2171                pub task: String,
2172            }
2173
2174            /// RecurringJobStatus defines the observed state of the Longhorn recurring job
2175            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2176            #[serde(rename_all = "camelCase")]
2177            pub struct Status {
2178                /// The owner ID which is responsible to reconcile this recurring job CR.
2179                pub owner_i_d: String,
2180            }
2181        }
2182        pub mod replica {
2183            /// Replica is where Longhorn stores replica object.
2184            #[derive(serde::Deserialize, Debug, PartialEq)]
2185            pub struct Replica {
2186                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
2187                pub spec: Spec,
2188                pub status: Status,
2189            }
2190
2191            impl k8s_openapi::Resource for Replica {
2192                type Scope = k8s_openapi::ClusterResourceScope;
2193
2194                const API_VERSION: &'static str = "longhorn.io/v1beta2";
2195                const GROUP: &'static str = "longhorn.io";
2196                const KIND: &'static str = "Replica";
2197                const VERSION: &'static str = "v1beta2";
2198                const URL_PATH_SEGMENT: &'static str = "TODO";
2199            }
2200
2201            impl k8s_openapi::Metadata for Replica {
2202                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
2203
2204                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
2205                    &self.metadata
2206                }
2207
2208                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
2209                    &mut self.metadata
2210                }
2211            }
2212
2213            impl serde::Serialize for Replica {
2214                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
2215                where
2216                    S: serde::Serializer,
2217                {
2218                    use serde::ser::SerializeStruct;
2219                    let mut state = serializer.serialize_struct("Replica", 5)?;
2220                    state.serialize_field(
2221                        "apiVersion",
2222                        <Self as k8s_openapi::Resource>::API_VERSION,
2223                    )?;
2224                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
2225                    state.serialize_field("metadata", &self.metadata)?;
2226                    state.serialize_field("spec", &self.spec)?;
2227                    state.serialize_field("status", &self.status)?;
2228                    state.end()
2229                }
2230            }
2231
2232            /// ReplicaSpec defines the desired state of the Longhorn replica
2233            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2234            #[serde(rename_all = "camelCase")]
2235            pub struct Spec {
2236                pub active: bool,
2237                pub backing_image: String,
2238                /// Deprecated. Rename to BackingImage
2239                pub base_image: String,
2240                pub data_directory_name: String,
2241                /// Deprecated
2242                pub data_path: String,
2243                pub desire_state: String,
2244                pub disk_i_d: String,
2245                pub disk_path: String,
2246                pub engine_image: String,
2247                pub engine_name: String,
2248                pub failed_at: String,
2249                pub hard_node_affinity: String,
2250                pub healthy_at: String,
2251                pub log_requested: bool,
2252                pub node_i_d: String,
2253                pub rebuild_retry_count: i64,
2254                pub revision_counter_disabled: bool,
2255                pub salvage_requested: bool,
2256                pub volume_name: String,
2257                pub volume_size: String,
2258            }
2259
2260            /// ReplicaStatus defines the observed state of the Longhorn replica
2261            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2262            #[serde(rename_all = "camelCase")]
2263            pub struct Status {
2264                pub current_image: String,
2265                pub current_state: String,
2266                pub eviction_requested: bool,
2267                pub instance_manager_name: String,
2268                pub ip: String,
2269                pub log_fetched: bool,
2270                pub owner_i_d: String,
2271                pub port: i64,
2272                pub salvage_executed: bool,
2273                pub started: bool,
2274                pub storage_i_p: String,
2275            }
2276        }
2277        pub mod setting {
2278            /// Setting is where Longhorn stores setting object.
2279            #[derive(serde::Deserialize, Debug, PartialEq)]
2280            pub struct Setting {
2281                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
2282                pub value: String,
2283            }
2284
2285            impl k8s_openapi::Resource for Setting {
2286                type Scope = k8s_openapi::ClusterResourceScope;
2287
2288                const API_VERSION: &'static str = "longhorn.io/v1beta2";
2289                const GROUP: &'static str = "longhorn.io";
2290                const KIND: &'static str = "Setting";
2291                const VERSION: &'static str = "v1beta2";
2292                const URL_PATH_SEGMENT: &'static str = "TODO";
2293            }
2294
2295            impl k8s_openapi::Metadata for Setting {
2296                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
2297
2298                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
2299                    &self.metadata
2300                }
2301
2302                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
2303                    &mut self.metadata
2304                }
2305            }
2306
2307            impl serde::Serialize for Setting {
2308                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
2309                where
2310                    S: serde::Serializer,
2311                {
2312                    use serde::ser::SerializeStruct;
2313                    let mut state = serializer.serialize_struct("Setting", 4)?;
2314                    state.serialize_field(
2315                        "apiVersion",
2316                        <Self as k8s_openapi::Resource>::API_VERSION,
2317                    )?;
2318                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
2319                    state.serialize_field("metadata", &self.metadata)?;
2320                    state.serialize_field("value", &self.value)?;
2321                    state.end()
2322                }
2323            }
2324        }
2325        pub mod share_manager {
2326            /// ShareManager is where Longhorn stores share manager object.
2327            #[derive(serde::Deserialize, Debug, PartialEq)]
2328            pub struct ShareManager {
2329                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
2330                pub spec: Spec,
2331                pub status: Status,
2332            }
2333
2334            impl k8s_openapi::Resource for ShareManager {
2335                type Scope = k8s_openapi::ClusterResourceScope;
2336
2337                const API_VERSION: &'static str = "longhorn.io/v1beta2";
2338                const GROUP: &'static str = "longhorn.io";
2339                const KIND: &'static str = "ShareManager";
2340                const VERSION: &'static str = "v1beta2";
2341                const URL_PATH_SEGMENT: &'static str = "TODO";
2342            }
2343
2344            impl k8s_openapi::Metadata for ShareManager {
2345                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
2346
2347                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
2348                    &self.metadata
2349                }
2350
2351                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
2352                    &mut self.metadata
2353                }
2354            }
2355
2356            impl serde::Serialize for ShareManager {
2357                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
2358                where
2359                    S: serde::Serializer,
2360                {
2361                    use serde::ser::SerializeStruct;
2362                    let mut state = serializer.serialize_struct("ShareManager", 5)?;
2363                    state.serialize_field(
2364                        "apiVersion",
2365                        <Self as k8s_openapi::Resource>::API_VERSION,
2366                    )?;
2367                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
2368                    state.serialize_field("metadata", &self.metadata)?;
2369                    state.serialize_field("spec", &self.spec)?;
2370                    state.serialize_field("status", &self.status)?;
2371                    state.end()
2372                }
2373            }
2374
2375            /// ShareManagerSpec defines the desired state of the Longhorn share manager
2376            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2377            #[serde(rename_all = "camelCase")]
2378            pub struct Spec {
2379                pub image: String,
2380            }
2381
2382            /// ShareManagerStatus defines the observed state of the Longhorn share manager
2383            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2384            #[serde(rename_all = "camelCase")]
2385            pub struct Status {
2386                pub endpoint: String,
2387                pub owner_i_d: String,
2388                pub state: String,
2389            }
2390        }
2391        pub mod snapshot {
2392            /// Snapshot is the Schema for the snapshots API
2393            #[derive(serde::Deserialize, Debug, PartialEq)]
2394            pub struct Snapshot {
2395                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
2396                pub spec: Spec,
2397                pub status: Status,
2398            }
2399
2400            impl k8s_openapi::Resource for Snapshot {
2401                type Scope = k8s_openapi::ClusterResourceScope;
2402
2403                const API_VERSION: &'static str = "longhorn.io/v1beta2";
2404                const GROUP: &'static str = "longhorn.io";
2405                const KIND: &'static str = "Snapshot";
2406                const VERSION: &'static str = "v1beta2";
2407                const URL_PATH_SEGMENT: &'static str = "TODO";
2408            }
2409
2410            impl k8s_openapi::Metadata for Snapshot {
2411                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
2412
2413                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
2414                    &self.metadata
2415                }
2416
2417                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
2418                    &mut self.metadata
2419                }
2420            }
2421
2422            impl serde::Serialize for Snapshot {
2423                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
2424                where
2425                    S: serde::Serializer,
2426                {
2427                    use serde::ser::SerializeStruct;
2428                    let mut state = serializer.serialize_struct("Snapshot", 5)?;
2429                    state.serialize_field(
2430                        "apiVersion",
2431                        <Self as k8s_openapi::Resource>::API_VERSION,
2432                    )?;
2433                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
2434                    state.serialize_field("metadata", &self.metadata)?;
2435                    state.serialize_field("spec", &self.spec)?;
2436                    state.serialize_field("status", &self.status)?;
2437                    state.end()
2438                }
2439            }
2440
2441            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2442            #[serde(rename_all = "camelCase")]
2443            pub struct Children {
2444                pub properties: std::collections::HashMap<String, bool>,
2445            }
2446
2447            /// The labels of snapshot
2448            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2449            #[serde(rename_all = "camelCase")]
2450            pub struct SpecLabels {
2451                /// The labels of snapshot
2452                pub properties: std::collections::HashMap<String, String>,
2453            }
2454
2455            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2456            #[serde(rename_all = "camelCase")]
2457            pub struct StatusLabels {
2458                pub properties: std::collections::HashMap<String, String>,
2459            }
2460
2461            /// SnapshotSpec defines the desired state of Longhorn Snapshot
2462            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2463            #[serde(rename_all = "camelCase")]
2464            pub struct Spec {
2465                /// require creating a new snapshot
2466                pub create_snapshot: bool,
2467                /// The labels of snapshot
2468                pub labels: Option<SpecLabels>,
2469                /// the volume that this snapshot belongs to. This field is immutable after creation. Required
2470                pub volume: String,
2471            }
2472
2473            /// SnapshotStatus defines the observed state of Longhorn Snapshot
2474            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2475            #[serde(rename_all = "camelCase")]
2476            pub struct Status {
2477                pub children: Option<Children>,
2478                pub creation_time: String,
2479                pub error: String,
2480                pub labels: Option<StatusLabels>,
2481                pub mark_removed: bool,
2482                pub owner_i_d: String,
2483                pub parent: String,
2484                pub ready_to_use: bool,
2485                pub restore_size: i64,
2486                pub size: i64,
2487                pub user_created: bool,
2488            }
2489        }
2490        pub mod volume {
2491            /// Volume is where Longhorn stores volume object.
2492            #[derive(serde::Deserialize, Debug, PartialEq)]
2493            pub struct Volume {
2494                pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
2495                pub spec: Spec,
2496                pub status: Status,
2497            }
2498
2499            impl k8s_openapi::Resource for Volume {
2500                type Scope = k8s_openapi::ClusterResourceScope;
2501
2502                const API_VERSION: &'static str = "longhorn.io/v1beta2";
2503                const GROUP: &'static str = "longhorn.io";
2504                const KIND: &'static str = "Volume";
2505                const VERSION: &'static str = "v1beta2";
2506                const URL_PATH_SEGMENT: &'static str = "TODO";
2507            }
2508
2509            impl k8s_openapi::Metadata for Volume {
2510                type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
2511
2512                fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
2513                    &self.metadata
2514                }
2515
2516                fn metadata_mut(&mut self) -> &mut <Self as k8s_openapi::Metadata>::Ty {
2517                    &mut self.metadata
2518                }
2519            }
2520
2521            impl serde::Serialize for Volume {
2522                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
2523                where
2524                    S: serde::Serializer,
2525                {
2526                    use serde::ser::SerializeStruct;
2527                    let mut state = serializer.serialize_struct("Volume", 5)?;
2528                    state.serialize_field(
2529                        "apiVersion",
2530                        <Self as k8s_openapi::Resource>::API_VERSION,
2531                    )?;
2532                    state.serialize_field("kind", <Self as k8s_openapi::Resource>::KIND)?;
2533                    state.serialize_field("metadata", &self.metadata)?;
2534                    state.serialize_field("spec", &self.spec)?;
2535                    state.serialize_field("status", &self.status)?;
2536                    state.end()
2537                }
2538            }
2539
2540            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2541            #[serde(rename_all = "camelCase")]
2542            pub struct CloneStatus {
2543                pub snapshot: String,
2544                pub source_volume: String,
2545                pub state: String,
2546            }
2547
2548            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2549            #[serde(rename_all = "camelCase")]
2550            pub struct ConditionsItem {
2551                /// Last time we probed the condition.
2552                pub last_probe_time: String,
2553                /// Last time the condition transitioned from one status to another.
2554                pub last_transition_time: String,
2555                /// Human-readable message indicating details about last transition.
2556                pub message: String,
2557                /// Unique, one-word, CamelCase reason for the condition's last transition.
2558                pub reason: String,
2559                /// Status is the status of the condition. Can be True, False, Unknown.
2560                pub status: String,
2561                /// Type is the type of the condition.
2562                pub r#type: String,
2563            }
2564
2565            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2566            #[serde(rename_all = "camelCase")]
2567            pub struct KubernetesStatus {
2568                pub last_p_v_c_ref_at: String,
2569                pub last_pod_ref_at: String,
2570                /// determine if PVC/Namespace is history or not
2571                pub namespace: String,
2572                pub pv_name: String,
2573                pub pv_status: String,
2574                pub pvc_name: String,
2575                /// determine if Pod/Workload is history or not
2576                pub workloads_status: Option<Vec<WorkloadsStatusItem>>,
2577            }
2578
2579            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2580            #[serde(rename_all = "camelCase")]
2581            pub struct Labels {
2582                pub properties: std::collections::HashMap<String, String>,
2583            }
2584
2585            /// VolumeRecurringJobSpec is a deprecated struct. TODO: Should be removed when recurringJobs gets removed from the volume       spec.
2586            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2587            #[serde(rename_all = "camelCase")]
2588            pub struct RecurringJobsItem {
2589                pub concurrency: i64,
2590                pub cron: String,
2591                pub groups: Vec<String>,
2592                pub labels: Labels,
2593                pub name: String,
2594                pub retain: i64,
2595                pub task: String,
2596            }
2597
2598            /// VolumeSpec defines the desired state of the Longhorn volume
2599            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2600            #[serde(rename_all = "camelCase")]
2601            pub struct Spec {
2602                pub standby: bool,
2603                pub access_mode: String,
2604                pub backing_image: String,
2605                /// Deprecated. Rename to BackingImage
2606                pub base_image: String,
2607                pub data_locality: String,
2608                pub data_source: String,
2609                pub disable_frontend: bool,
2610                pub disk_selector: Vec<String>,
2611                pub encrypted: bool,
2612                pub engine_image: String,
2613                pub from_backup: String,
2614                pub frontend: String,
2615                pub last_attached_by: String,
2616                pub migratable: bool,
2617                pub migration_node_i_d: String,
2618                pub node_i_d: String,
2619                pub node_selector: Vec<String>,
2620                pub number_of_replicas: i64,
2621                /// Deprecated. Replaced by a separate resource named "RecurringJob"
2622                pub recurring_jobs: Vec<RecurringJobsItem>,
2623                pub replica_auto_balance: String,
2624                pub revision_counter_disabled: bool,
2625                pub size: String,
2626                pub stale_replica_timeout: i64,
2627            }
2628
2629            /// VolumeStatus defines the observed state of the Longhorn volume
2630            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2631            #[serde(rename_all = "camelCase")]
2632            pub struct Status {
2633                pub actual_size: i64,
2634                pub clone_status: CloneStatus,
2635                pub conditions: Option<Vec<ConditionsItem>>,
2636                pub current_image: String,
2637                pub current_node_i_d: String,
2638                pub expansion_required: bool,
2639                pub frontend_disabled: bool,
2640                pub is_standby: bool,
2641                pub kubernetes_status: KubernetesStatus,
2642                pub last_backup: String,
2643                pub last_backup_at: String,
2644                pub last_degraded_at: String,
2645                pub owner_i_d: String,
2646                pub pending_node_i_d: String,
2647                pub remount_requested_at: String,
2648                pub restore_initiated: bool,
2649                pub restore_required: bool,
2650                pub robustness: String,
2651                pub share_endpoint: String,
2652                pub share_state: String,
2653                pub state: String,
2654            }
2655
2656            #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)]
2657            #[serde(rename_all = "camelCase")]
2658            pub struct WorkloadsStatusItem {
2659                pub pod_name: String,
2660                pub pod_status: String,
2661                pub workload_name: String,
2662                pub workload_type: String,
2663            }
2664        }
2665    }
2666}