diff --git a/.reuse/dep5 b/.reuse/dep5 index e2f2a316f..b7581937b 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -283,6 +283,10 @@ Files: crd-catalog/emissary-ingress/emissary/* Copyright: The emissary-ingress/emissary Authors License: MIT +Files: crd-catalog/emqx/emqx-operator/* +Copyright: The emqx/emqx-operator Authors +License: Apache-2.0 + Files: crd-catalog/external-secrets/external-secrets/* Copyright: The external-secrets/external-secrets Authors License: Apache-2.0 diff --git a/code-generator/src/catalog.rs b/code-generator/src/catalog.rs index ff0ce2abb..74c183bab 100644 --- a/code-generator/src/catalog.rs +++ b/code-generator/src/catalog.rs @@ -763,6 +763,17 @@ pub const CRD_V1_SOURCES: &'static [UpstreamSource] = &[ "https://github.com/emissary-ingress/emissary/blob/master/pkg/api/getambassador.io/crds.yaml", ], }, + UpstreamSource { + project_name: "emqx/emqx-operator", + license: APACHE_V2, + urls: &[ + "https://github.com/emqx/emqx-operator/blob/main/config/crd/bases/apps.emqx.io_emqxbrokers.yaml", + "https://github.com/emqx/emqx-operator/blob/main/config/crd/bases/apps.emqx.io_emqxenterprises.yaml", + "https://github.com/emqx/emqx-operator/blob/main/config/crd/bases/apps.emqx.io_emqxes.yaml", + "https://github.com/emqx/emqx-operator/blob/main/config/crd/bases/apps.emqx.io_emqxplugins.yaml", + "https://github.com/emqx/emqx-operator/blob/main/config/crd/bases/apps.emqx.io_rebalances.yaml", + ], + }, UpstreamSource { project_name: "external-secrets/external-secrets", license: APACHE_V2, diff --git a/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta3/emqxbrokers.yaml b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta3/emqxbrokers.yaml new file mode 100644 index 000000000..d8b1a0628 --- /dev/null +++ b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta3/emqxbrokers.yaml @@ -0,0 +1,3009 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + name: emqxbrokers.apps.emqx.io +spec: + group: apps.emqx.io + names: + kind: EmqxBroker + listKind: EmqxBrokerList + plural: emqxbrokers + singular: emqxbroker + scope: Namespaced + versions: + - deprecated: true + name: v1beta3 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + emqxTemplate: + properties: + acl: + items: + type: string + type: array + args: + items: + type: string + type: array + config: + additionalProperties: + type: string + type: object + extraVolumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + extraVolumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + modules: + items: + properties: + enable: + type: boolean + name: + type: string + type: object + type: array + password: + default: public + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + registry: + type: string + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + serviceTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + allocateLoadBalancerNodePorts: + type: boolean + clusterIP: + type: string + clusterIPs: + items: + type: string + type: array + x-kubernetes-list-type: atomic + externalIPs: + items: + type: string + type: array + externalName: + type: string + externalTrafficPolicy: + type: string + healthCheckNodePort: + format: int32 + type: integer + internalTrafficPolicy: + type: string + ipFamilies: + items: + type: string + type: array + x-kubernetes-list-type: atomic + ipFamilyPolicy: + type: string + loadBalancerClass: + type: string + loadBalancerIP: + type: string + loadBalancerSourceRanges: + items: + type: string + type: array + ports: + items: + properties: + appProtocol: + type: string + name: + type: string + nodePort: + format: int32 + type: integer + port: + format: int32 + type: integer + protocol: + default: TCP + type: string + targetPort: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: array + x-kubernetes-list-map-keys: + - port + - protocol + x-kubernetes-list-type: map + publishNotReadyAddresses: + type: boolean + selector: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: atomic + sessionAffinity: + type: string + sessionAffinityConfig: + properties: + clientIP: + properties: + timeoutSeconds: + format: int32 + type: integer + type: object + type: object + type: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + username: + default: admin + type: string + type: object + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + extraContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + imagePullSecrets: + items: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + type: array + initContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + nodeName: + type: string + nodeSelector: + additionalProperties: + type: string + type: object + persistent: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + replicas: + default: 3 + format: int32 + type: integer + toleRations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + type: object + status: + properties: + conditions: + items: + properties: + lastTransitionTime: + type: string + lastUpdateTime: + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + emqxNodes: + items: + properties: + node: + type: string + node_status: + type: string + otp_release: + type: string + version: + type: string + type: object + type: array + readyReplicas: + format: int32 + type: integer + replicas: + format: int32 + type: integer + type: object + type: object + served: true + storage: false + subresources: + scale: + specReplicasPath: .spec.replicas + statusReplicasPath: .status.replicas + status: {} diff --git a/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta3/emqxenterprises.yaml b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta3/emqxenterprises.yaml new file mode 100644 index 000000000..10eac7e9a --- /dev/null +++ b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta3/emqxenterprises.yaml @@ -0,0 +1,3022 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + name: emqxenterprises.apps.emqx.io +spec: + group: apps.emqx.io + names: + kind: EmqxEnterprise + listKind: EmqxEnterpriseList + plural: emqxenterprises + singular: emqxenterprise + scope: Namespaced + versions: + - deprecated: true + name: v1beta3 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + emqxTemplate: + properties: + acl: + items: + type: string + type: array + args: + items: + type: string + type: array + config: + additionalProperties: + type: string + type: object + extraVolumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + extraVolumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + license: + properties: + data: + format: byte + type: string + secretName: + type: string + stringData: + type: string + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + modules: + items: + properties: + configs: + type: object + x-kubernetes-preserve-unknown-fields: true + enable: + type: boolean + name: + type: string + type: object + type: array + password: + default: public + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + registry: + type: string + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + serviceTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + allocateLoadBalancerNodePorts: + type: boolean + clusterIP: + type: string + clusterIPs: + items: + type: string + type: array + x-kubernetes-list-type: atomic + externalIPs: + items: + type: string + type: array + externalName: + type: string + externalTrafficPolicy: + type: string + healthCheckNodePort: + format: int32 + type: integer + internalTrafficPolicy: + type: string + ipFamilies: + items: + type: string + type: array + x-kubernetes-list-type: atomic + ipFamilyPolicy: + type: string + loadBalancerClass: + type: string + loadBalancerIP: + type: string + loadBalancerSourceRanges: + items: + type: string + type: array + ports: + items: + properties: + appProtocol: + type: string + name: + type: string + nodePort: + format: int32 + type: integer + port: + format: int32 + type: integer + protocol: + default: TCP + type: string + targetPort: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: array + x-kubernetes-list-map-keys: + - port + - protocol + x-kubernetes-list-type: map + publishNotReadyAddresses: + type: boolean + selector: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: atomic + sessionAffinity: + type: string + sessionAffinityConfig: + properties: + clientIP: + properties: + timeoutSeconds: + format: int32 + type: integer + type: object + type: object + type: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + username: + default: admin + type: string + type: object + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + extraContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + imagePullSecrets: + items: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + type: array + initContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + nodeName: + type: string + nodeSelector: + additionalProperties: + type: string + type: object + persistent: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + replicas: + default: 3 + format: int32 + type: integer + toleRations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + type: object + status: + properties: + conditions: + items: + properties: + lastTransitionTime: + type: string + lastUpdateTime: + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + emqxNodes: + items: + properties: + node: + type: string + node_status: + type: string + otp_release: + type: string + version: + type: string + type: object + type: array + readyReplicas: + format: int32 + type: integer + replicas: + format: int32 + type: integer + type: object + type: object + served: true + storage: false + subresources: + scale: + specReplicasPath: .spec.replicas + statusReplicasPath: .status.replicas + status: {} diff --git a/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta3/emqxplugins.yaml b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta3/emqxplugins.yaml new file mode 100644 index 000000000..05e25efe6 --- /dev/null +++ b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta3/emqxplugins.yaml @@ -0,0 +1,49 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + name: emqxplugins.apps.emqx.io +spec: + group: apps.emqx.io + names: + kind: EmqxPlugin + listKind: EmqxPluginList + plural: emqxplugins + singular: emqxplugin + scope: Namespaced + versions: + - deprecated: true + name: v1beta3 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + config: + additionalProperties: + type: string + type: object + pluginName: + type: string + selector: + additionalProperties: + type: string + type: object + type: object + status: + properties: + phase: + type: string + type: object + type: object + served: true + storage: false + subresources: + status: {} diff --git a/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta4/emqxbrokers.yaml b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta4/emqxbrokers.yaml new file mode 100644 index 000000000..bebe2a075 --- /dev/null +++ b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta4/emqxbrokers.yaml @@ -0,0 +1,3938 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + name: emqxbrokers.apps.emqx.io +spec: + group: apps.emqx.io + names: + kind: EmqxBroker + listKind: EmqxBrokerList + plural: emqxbrokers + singular: emqxbroker + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.status=="True")].type + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta4 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + clusterDomain: + default: cluster.local + type: string + persistent: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + replicas: + default: 3 + format: int32 + type: integer + serviceTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + allocateLoadBalancerNodePorts: + type: boolean + clusterIP: + type: string + clusterIPs: + items: + type: string + type: array + x-kubernetes-list-type: atomic + externalIPs: + items: + type: string + type: array + externalName: + type: string + externalTrafficPolicy: + type: string + healthCheckNodePort: + format: int32 + type: integer + internalTrafficPolicy: + type: string + ipFamilies: + items: + type: string + type: array + x-kubernetes-list-type: atomic + ipFamilyPolicy: + type: string + loadBalancerClass: + type: string + loadBalancerIP: + type: string + loadBalancerSourceRanges: + items: + type: string + type: array + ports: + items: + properties: + appProtocol: + type: string + name: + type: string + nodePort: + format: int32 + type: integer + port: + format: int32 + type: integer + protocol: + default: TCP + type: string + targetPort: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: array + x-kubernetes-list-map-keys: + - port + - protocol + x-kubernetes-list-type: map + publishNotReadyAddresses: + type: boolean + selector: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: atomic + sessionAffinity: + type: string + sessionAffinityConfig: + properties: + clientIP: + properties: + timeoutSeconds: + format: int32 + type: integer + type: object + type: object + type: + type: string + type: object + type: object + template: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + emqxContainer: + properties: + args: + items: + type: string + type: array + bootstrapAPIKeys: + items: + properties: + key: + pattern: ^[a-zA-Z\d_]+$ + type: string + secret: + maxLength: 32 + minLength: 3 + type: string + required: + - key + - secret + type: object + type: array + command: + items: + type: string + type: array + emqxACL: + items: + type: string + type: array + emqxConfig: + additionalProperties: + type: string + type: object + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + properties: + prefix: + type: string + pullPolicy: + default: IfNotPresent + enum: + - Always + - Never + - IfNotPresent + type: string + registry: + type: string + repository: + type: string + suffix: + type: string + version: + type: string + type: object + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + default: + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + type: object + ephemeralContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + targetContainerName: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + extraContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + imagePullSecrets: + items: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + type: array + initContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + nodeName: + type: string + nodeSelector: + additionalProperties: + type: string + type: object + podSecurityContext: + default: + fsGroup: 1000 + fsGroupChangePolicy: Always + runAsGroup: 1000 + runAsUser: 1000 + supplementalGroups: + - 1000 + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + reloaderImage: + default: emqx/emqx-operator-reloader:0.0.2 + type: string + serviceAccountName: + type: string + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + volumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + type: object + type: object + type: object + status: + properties: + conditions: + items: + properties: + lastTransitionTime: + format: date-time + type: string + lastUpdateTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + currentStatefulSetVersion: + type: string + emqxNodes: + items: + properties: + connections: + format: int64 + type: integer + node: + type: string + node_status: + type: string + otp_release: + type: string + version: + type: string + type: object + type: array + readyReplicas: + format: int32 + type: integer + replicas: + format: int32 + type: integer + type: object + type: object + served: true + storage: true + subresources: + scale: + specReplicasPath: .spec.replicas + statusReplicasPath: .status.replicas + status: {} diff --git a/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta4/emqxenterprises.yaml b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta4/emqxenterprises.yaml new file mode 100644 index 000000000..6fbccf423 --- /dev/null +++ b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta4/emqxenterprises.yaml @@ -0,0 +1,4019 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + name: emqxenterprises.apps.emqx.io +spec: + group: apps.emqx.io + names: + kind: EmqxEnterprise + listKind: EmqxEnterpriseList + plural: emqxenterprises + singular: emqxenterprise + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.status=="True")].type + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta4 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + blueGreenUpdate: + properties: + evacuationStrategy: + properties: + connEvictRate: + format: int32 + minimum: 1.0 + type: integer + sessEvictRate: + format: int32 + minimum: 1.0 + type: integer + waitTakeover: + format: int32 + minimum: 0.0 + type: integer + type: object + initialDelaySeconds: + format: int32 + type: integer + type: object + clusterDomain: + default: cluster.local + type: string + license: + properties: + data: + format: byte + type: string + secretName: + type: string + stringData: + type: string + type: object + persistent: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + replicas: + default: 3 + format: int32 + type: integer + serviceTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + allocateLoadBalancerNodePorts: + type: boolean + clusterIP: + type: string + clusterIPs: + items: + type: string + type: array + x-kubernetes-list-type: atomic + externalIPs: + items: + type: string + type: array + externalName: + type: string + externalTrafficPolicy: + type: string + healthCheckNodePort: + format: int32 + type: integer + internalTrafficPolicy: + type: string + ipFamilies: + items: + type: string + type: array + x-kubernetes-list-type: atomic + ipFamilyPolicy: + type: string + loadBalancerClass: + type: string + loadBalancerIP: + type: string + loadBalancerSourceRanges: + items: + type: string + type: array + ports: + items: + properties: + appProtocol: + type: string + name: + type: string + nodePort: + format: int32 + type: integer + port: + format: int32 + type: integer + protocol: + default: TCP + type: string + targetPort: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: array + x-kubernetes-list-map-keys: + - port + - protocol + x-kubernetes-list-type: map + publishNotReadyAddresses: + type: boolean + selector: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: atomic + sessionAffinity: + type: string + sessionAffinityConfig: + properties: + clientIP: + properties: + timeoutSeconds: + format: int32 + type: integer + type: object + type: object + type: + type: string + type: object + type: object + template: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + emqxContainer: + properties: + args: + items: + type: string + type: array + bootstrapAPIKeys: + items: + properties: + key: + pattern: ^[a-zA-Z\d_]+$ + type: string + secret: + maxLength: 32 + minLength: 3 + type: string + required: + - key + - secret + type: object + type: array + command: + items: + type: string + type: array + emqxACL: + items: + type: string + type: array + emqxConfig: + additionalProperties: + type: string + type: object + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + properties: + prefix: + type: string + pullPolicy: + default: IfNotPresent + enum: + - Always + - Never + - IfNotPresent + type: string + registry: + type: string + repository: + type: string + suffix: + type: string + version: + type: string + type: object + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + default: + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + type: object + ephemeralContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + targetContainerName: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + extraContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + imagePullSecrets: + items: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + type: array + initContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + nodeName: + type: string + nodeSelector: + additionalProperties: + type: string + type: object + podSecurityContext: + default: + fsGroup: 1000 + fsGroupChangePolicy: Always + runAsGroup: 1000 + runAsUser: 1000 + supplementalGroups: + - 1000 + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + reloaderImage: + default: emqx/emqx-operator-reloader:0.0.2 + type: string + serviceAccountName: + type: string + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + volumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + type: object + type: object + type: object + status: + properties: + blueGreenUpdateStatus: + properties: + currentStatefulSet: + type: string + evacuationsStatus: + items: + properties: + connection_eviction_rate: + format: int32 + type: integer + connection_goal: + format: int32 + type: integer + node: + type: string + session_eviction_rate: + format: int32 + type: integer + session_goal: + format: int32 + type: integer + session_recipients: + items: + type: string + type: array + state: + type: string + stats: + properties: + current_connected: + format: int32 + type: integer + current_sessions: + format: int32 + type: integer + initial_connected: + format: int32 + type: integer + initial_sessions: + format: int32 + type: integer + type: object + type: object + type: array + originStatefulSet: + type: string + startedAt: + format: date-time + type: string + type: object + conditions: + items: + properties: + lastTransitionTime: + format: date-time + type: string + lastUpdateTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + currentStatefulSetVersion: + type: string + emqxNodes: + items: + properties: + connections: + format: int64 + type: integer + node: + type: string + node_status: + type: string + otp_release: + type: string + version: + type: string + type: object + type: array + readyReplicas: + format: int32 + type: integer + replicas: + format: int32 + type: integer + type: object + type: object + served: true + storage: true + subresources: + scale: + specReplicasPath: .spec.replicas + statusReplicasPath: .status.replicas + status: {} diff --git a/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta4/emqxplugins.ignore b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta4/emqxplugins.ignore new file mode 100644 index 000000000..68db4e42c --- /dev/null +++ b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta4/emqxplugins.ignore @@ -0,0 +1 @@ +cannot find type `EmqxPluginStatus` in this scope diff --git a/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta4/emqxplugins.yaml b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta4/emqxplugins.yaml new file mode 100644 index 000000000..f6a9fe1e0 --- /dev/null +++ b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta4/emqxplugins.yaml @@ -0,0 +1,43 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + name: emqxplugins.apps.emqx.io +spec: + group: apps.emqx.io + names: + kind: EmqxPlugin + listKind: EmqxPluginList + plural: emqxplugins + singular: emqxplugin + scope: Namespaced + versions: + - name: v1beta4 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + config: + additionalProperties: + type: string + type: object + pluginName: + type: string + selector: + additionalProperties: + type: string + type: object + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta4/rebalances.yaml b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta4/rebalances.yaml new file mode 100644 index 000000000..7f3113cbe --- /dev/null +++ b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta4/rebalances.yaml @@ -0,0 +1,139 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + name: rebalances.apps.emqx.io +spec: + group: apps.emqx.io + names: + kind: Rebalance + listKind: RebalanceList + plural: rebalances + singular: rebalance + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.phase + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + deprecated: true + name: v1beta4 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + instanceName: + type: string + rebalanceStrategy: + properties: + absConnThreshold: + default: 1000 + format: int32 + type: integer + absSessThreshold: + default: 1000 + format: int32 + type: integer + connEvictRate: + format: int32 + minimum: 1.0 + type: integer + relConnThreshold: + default: '1.1' + type: string + relSessThreshold: + default: '1.1' + type: string + sessEvictRate: + default: 500 + format: int32 + type: integer + waitHealthCheck: + default: 60 + format: int32 + type: integer + waitTakeover: + default: 60 + format: int32 + type: integer + required: + - connEvictRate + type: object + required: + - instanceName + - rebalanceStrategy + type: object + status: + properties: + completedTime: + format: date-time + type: string + conditions: + items: + properties: + lastTransitionTime: + format: date-time + type: string + lastUpdateTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + phase: + type: string + rebalanceStates: + items: + properties: + connection_eviction_rate: + format: int32 + type: integer + coordinator_node: + type: string + donors: + items: + type: string + type: array + node: + type: string + recipients: + items: + type: string + type: array + session_eviction_rate: + format: int32 + type: integer + state: + type: string + type: object + type: array + startedTime: + format: date-time + type: string + type: object + type: object + served: true + storage: false + subresources: + status: {} diff --git a/crd-catalog/emqx/emqx-operator/apps.emqx.io/v2alpha1/emqxes.args b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v2alpha1/emqxes.args new file mode 100644 index 000000000..7ab47510b --- /dev/null +++ b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v2alpha1/emqxes.args @@ -0,0 +1 @@ +--derive=PartialEq diff --git a/crd-catalog/emqx/emqx-operator/apps.emqx.io/v2alpha1/emqxes.yaml b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v2alpha1/emqxes.yaml new file mode 100644 index 000000000..dbab6a485 --- /dev/null +++ b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v2alpha1/emqxes.yaml @@ -0,0 +1,6463 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + name: emqxes.apps.emqx.io +spec: + group: apps.emqx.io + names: + kind: EMQX + listKind: EMQXList + plural: emqxes + shortNames: + - emqx + singular: emqx + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.currentImage + name: Image + type: string + - jsonPath: .status.conditions[?(@.status=="True")].type + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + deprecated: true + name: v2alpha1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + bootstrapAPIKeys: + items: + properties: + key: + pattern: ^[a-zA-Z\d_]+$ + type: string + secret: + maxLength: 32 + minLength: 3 + type: string + required: + - key + - secret + type: object + type: array + bootstrapConfig: + type: string + coreTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + args: + items: + type: string + type: array + command: + items: + type: string + type: array + containerSecurityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + extraContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + extraVolumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + extraVolumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + initContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + nodeName: + type: string + nodeSelector: + additionalProperties: + type: string + type: object + podSecurityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + replicas: + default: 3 + format: int32 + type: integer + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + toleRations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + volumeClaimTemplates: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + type: object + type: object + dashboardServiceTemplate: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + allocateLoadBalancerNodePorts: + type: boolean + clusterIP: + type: string + clusterIPs: + items: + type: string + type: array + x-kubernetes-list-type: atomic + externalIPs: + items: + type: string + type: array + externalName: + type: string + externalTrafficPolicy: + type: string + healthCheckNodePort: + format: int32 + type: integer + internalTrafficPolicy: + type: string + ipFamilies: + items: + type: string + type: array + x-kubernetes-list-type: atomic + ipFamilyPolicy: + type: string + loadBalancerClass: + type: string + loadBalancerIP: + type: string + loadBalancerSourceRanges: + items: + type: string + type: array + ports: + items: + properties: + appProtocol: + type: string + name: + type: string + nodePort: + format: int32 + type: integer + port: + format: int32 + type: integer + protocol: + default: TCP + type: string + targetPort: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: array + x-kubernetes-list-map-keys: + - port + - protocol + x-kubernetes-list-type: map + publishNotReadyAddresses: + type: boolean + selector: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: atomic + sessionAffinity: + type: string + sessionAffinityConfig: + properties: + clientIP: + properties: + timeoutSeconds: + format: int32 + type: integer + type: object + type: object + type: + type: string + type: object + status: + properties: + conditions: + items: + properties: + lastTransitionTime: + format: date-time + type: string + message: + maxLength: 32768 + type: string + observedGeneration: + format: int64 + minimum: 0.0 + type: integer + reason: + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + enum: + - 'True' + - 'False' + - Unknown + type: string + type: + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + loadBalancer: + properties: + ingress: + items: + properties: + hostname: + type: string + ip: + type: string + ports: + items: + properties: + error: + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + port: + format: int32 + type: integer + protocol: + default: TCP + type: string + required: + - port + - protocol + type: object + type: array + x-kubernetes-list-type: atomic + type: object + type: array + type: object + type: object + type: object + image: + type: string + imagePullPolicy: + default: IfNotPresent + type: string + imagePullSecrets: + items: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + type: array + listenersServiceTemplate: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + allocateLoadBalancerNodePorts: + type: boolean + clusterIP: + type: string + clusterIPs: + items: + type: string + type: array + x-kubernetes-list-type: atomic + externalIPs: + items: + type: string + type: array + externalName: + type: string + externalTrafficPolicy: + type: string + healthCheckNodePort: + format: int32 + type: integer + internalTrafficPolicy: + type: string + ipFamilies: + items: + type: string + type: array + x-kubernetes-list-type: atomic + ipFamilyPolicy: + type: string + loadBalancerClass: + type: string + loadBalancerIP: + type: string + loadBalancerSourceRanges: + items: + type: string + type: array + ports: + items: + properties: + appProtocol: + type: string + name: + type: string + nodePort: + format: int32 + type: integer + port: + format: int32 + type: integer + protocol: + default: TCP + type: string + targetPort: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: array + x-kubernetes-list-map-keys: + - port + - protocol + x-kubernetes-list-type: map + publishNotReadyAddresses: + type: boolean + selector: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: atomic + sessionAffinity: + type: string + sessionAffinityConfig: + properties: + clientIP: + properties: + timeoutSeconds: + format: int32 + type: integer + type: object + type: object + type: + type: string + type: object + status: + properties: + conditions: + items: + properties: + lastTransitionTime: + format: date-time + type: string + message: + maxLength: 32768 + type: string + observedGeneration: + format: int64 + minimum: 0.0 + type: integer + reason: + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + enum: + - 'True' + - 'False' + - Unknown + type: string + type: + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + loadBalancer: + properties: + ingress: + items: + properties: + hostname: + type: string + ip: + type: string + ports: + items: + properties: + error: + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + port: + format: int32 + type: integer + protocol: + default: TCP + type: string + required: + - port + - protocol + type: object + type: array + x-kubernetes-list-type: atomic + type: object + type: array + type: object + type: object + type: object + replicantTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + args: + items: + type: string + type: array + command: + items: + type: string + type: array + containerSecurityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + extraContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + extraVolumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + extraVolumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + initContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + nodeName: + type: string + nodeSelector: + additionalProperties: + type: string + type: object + podSecurityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + replicas: + default: 3 + format: int32 + type: integer + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + toleRations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + type: object + type: object + type: object + status: + properties: + conditions: + items: + properties: + lastTransitionTime: + type: string + lastUpdateTime: + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + coreNodeReadyReplicas: + format: int32 + type: integer + coreNodeReplicas: + format: int32 + type: integer + currentImage: + type: string + emqxNodes: + items: + properties: + connections: + format: int64 + type: integer + edition: + type: string + node: + type: string + node_status: + type: string + otp_release: + type: string + role: + type: string + uptime: + format: int64 + type: integer + version: + type: string + type: object + type: array + replicantNodeReadyReplicas: + format: int32 + type: integer + replicantNodeReplicas: + format: int32 + type: integer + type: object + type: object + served: true + storage: false + subresources: + scale: + specReplicasPath: .spec.replicantTemplate.spec.replicas + statusReplicasPath: .status.replicantNodeReplicas + status: {} diff --git a/crd-catalog/emqx/emqx-operator/apps.emqx.io/v2beta1/emqxes.args b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v2beta1/emqxes.args new file mode 100644 index 000000000..7ab47510b --- /dev/null +++ b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v2beta1/emqxes.args @@ -0,0 +1 @@ +--derive=PartialEq diff --git a/crd-catalog/emqx/emqx-operator/apps.emqx.io/v2beta1/emqxes.yaml b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v2beta1/emqxes.yaml new file mode 100644 index 000000000..89459feaa --- /dev/null +++ b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v2beta1/emqxes.yaml @@ -0,0 +1,6598 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + name: emqxes.apps.emqx.io +spec: + group: apps.emqx.io + names: + kind: EMQX + listKind: EMQXList + plural: emqxes + shortNames: + - emqx + singular: emqx + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.status=="True")].type + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v2beta1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + bootstrapAPIKeys: + items: + properties: + key: + pattern: ^[a-zA-Z\d-_]+$ + type: string + secret: + maxLength: 128 + minLength: 3 + type: string + secretRef: + properties: + key: + properties: + secretKey: + pattern: ^[a-zA-Z\d-_]+$ + type: string + secretName: + type: string + required: + - secretKey + - secretName + type: object + secret: + properties: + secretKey: + pattern: ^[a-zA-Z\d-_]+$ + type: string + secretName: + type: string + required: + - secretKey + - secretName + type: object + required: + - key + - secret + type: object + type: object + type: array + clusterDomain: + default: cluster.local + type: string + config: + properties: + data: + type: string + mode: + default: Merge + enum: + - Merge + - Replace + type: string + type: object + coreTemplate: + default: + spec: + replicas: 2 + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + args: + items: + type: string + type: array + command: + items: + type: string + type: array + containerSecurityContext: + default: + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + extraContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + extraVolumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + extraVolumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + initContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + default: + failureThreshold: 3 + httpGet: + path: /status + port: dashboard + initialDelaySeconds: 60 + periodSeconds: 30 + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + nodeName: + type: string + nodeSelector: + additionalProperties: + type: string + type: object + podSecurityContext: + default: + fsGroup: 1000 + fsGroupChangePolicy: Always + runAsGroup: 1000 + runAsUser: 1000 + supplementalGroups: + - 1000 + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + readinessProbe: + default: + failureThreshold: 12 + httpGet: + path: /status + port: dashboard + initialDelaySeconds: 10 + periodSeconds: 5 + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + replicas: + default: 2 + format: int32 + type: integer + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + toleRations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + volumeClaimTemplates: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + type: object + type: object + dashboardServiceTemplate: + properties: + enabled: + default: true + type: boolean + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + allocateLoadBalancerNodePorts: + type: boolean + clusterIP: + type: string + clusterIPs: + items: + type: string + type: array + x-kubernetes-list-type: atomic + externalIPs: + items: + type: string + type: array + externalName: + type: string + externalTrafficPolicy: + type: string + healthCheckNodePort: + format: int32 + type: integer + internalTrafficPolicy: + type: string + ipFamilies: + items: + type: string + type: array + x-kubernetes-list-type: atomic + ipFamilyPolicy: + type: string + loadBalancerClass: + type: string + loadBalancerIP: + type: string + loadBalancerSourceRanges: + items: + type: string + type: array + ports: + items: + properties: + appProtocol: + type: string + name: + type: string + nodePort: + format: int32 + type: integer + port: + format: int32 + type: integer + protocol: + default: TCP + type: string + targetPort: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: array + x-kubernetes-list-map-keys: + - port + - protocol + x-kubernetes-list-type: map + publishNotReadyAddresses: + type: boolean + selector: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: atomic + sessionAffinity: + type: string + sessionAffinityConfig: + properties: + clientIP: + properties: + timeoutSeconds: + format: int32 + type: integer + type: object + type: object + type: + type: string + type: object + type: object + image: + type: string + imagePullPolicy: + type: string + imagePullSecrets: + items: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + type: array + listenersServiceTemplate: + properties: + enabled: + default: true + type: boolean + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + allocateLoadBalancerNodePorts: + type: boolean + clusterIP: + type: string + clusterIPs: + items: + type: string + type: array + x-kubernetes-list-type: atomic + externalIPs: + items: + type: string + type: array + externalName: + type: string + externalTrafficPolicy: + type: string + healthCheckNodePort: + format: int32 + type: integer + internalTrafficPolicy: + type: string + ipFamilies: + items: + type: string + type: array + x-kubernetes-list-type: atomic + ipFamilyPolicy: + type: string + loadBalancerClass: + type: string + loadBalancerIP: + type: string + loadBalancerSourceRanges: + items: + type: string + type: array + ports: + items: + properties: + appProtocol: + type: string + name: + type: string + nodePort: + format: int32 + type: integer + port: + format: int32 + type: integer + protocol: + default: TCP + type: string + targetPort: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: array + x-kubernetes-list-map-keys: + - port + - protocol + x-kubernetes-list-type: map + publishNotReadyAddresses: + type: boolean + selector: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: atomic + sessionAffinity: + type: string + sessionAffinityConfig: + properties: + clientIP: + properties: + timeoutSeconds: + format: int32 + type: integer + type: object + type: object + type: + type: string + type: object + type: object + replicantTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + args: + items: + type: string + type: array + command: + items: + type: string + type: array + containerSecurityContext: + default: + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + extraContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + extraVolumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + extraVolumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + initContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + default: + failureThreshold: 3 + httpGet: + path: /status + port: dashboard + initialDelaySeconds: 60 + periodSeconds: 30 + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + nodeName: + type: string + nodeSelector: + additionalProperties: + type: string + type: object + podSecurityContext: + default: + fsGroup: 1000 + fsGroupChangePolicy: Always + runAsGroup: 1000 + runAsUser: 1000 + supplementalGroups: + - 1000 + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + readinessProbe: + default: + failureThreshold: 12 + httpGet: + path: /status + port: dashboard + initialDelaySeconds: 10 + periodSeconds: 5 + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + replicas: + default: 2 + format: int32 + type: integer + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + toleRations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + type: object + type: object + revisionHistoryLimit: + default: 3 + format: int32 + type: integer + serviceAccountName: + type: string + updateStrategy: + default: + evacuationStrategy: + connEvictRate: 1000 + sessEvictRate: 1000 + waitTakeover: 10 + initialDelaySeconds: 10 + type: Recreate + properties: + evacuationStrategy: + properties: + connEvictRate: + default: 1000 + format: int32 + minimum: 1.0 + type: integer + sessEvictRate: + default: 1000 + format: int32 + minimum: 1.0 + type: integer + waitTakeover: + format: int32 + minimum: 0.0 + type: integer + type: object + initialDelaySeconds: + format: int32 + type: integer + type: + default: Recreate + enum: + - Recreate + type: string + type: object + required: + - image + type: object + status: + properties: + conditions: + items: + properties: + lastTransitionTime: + format: date-time + type: string + message: + maxLength: 32768 + type: string + observedGeneration: + format: int64 + minimum: 0.0 + type: integer + reason: + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + enum: + - 'True' + - 'False' + - Unknown + type: string + type: + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + coreNodes: + items: + properties: + connections: + format: int64 + type: integer + controllerUID: + type: string + edition: + type: string + live_connections: + format: int64 + type: integer + node: + type: string + node_status: + type: string + otp_release: + type: string + podUID: + type: string + role: + type: string + uptime: + format: int64 + type: integer + version: + type: string + type: object + type: array + coreNodesStatus: + properties: + collisionCount: + format: int32 + type: integer + currentReplicas: + format: int32 + type: integer + currentRevision: + type: string + readyReplicas: + format: int32 + type: integer + replicas: + format: int32 + type: integer + updateReplicas: + format: int32 + type: integer + updateRevision: + type: string + type: object + nodEvacuationsStatus: + items: + properties: + connection_eviction_rate: + format: int32 + type: integer + connection_goal: + format: int32 + type: integer + node: + type: string + session_eviction_rate: + format: int32 + type: integer + session_goal: + format: int32 + type: integer + session_recipients: + items: + type: string + type: array + state: + type: string + stats: + properties: + current_connected: + format: int32 + type: integer + current_sessions: + format: int32 + type: integer + initial_connected: + format: int32 + type: integer + initial_sessions: + format: int32 + type: integer + type: object + type: object + type: array + replicantNodes: + items: + properties: + connections: + format: int64 + type: integer + controllerUID: + type: string + edition: + type: string + live_connections: + format: int64 + type: integer + node: + type: string + node_status: + type: string + otp_release: + type: string + podUID: + type: string + role: + type: string + uptime: + format: int64 + type: integer + version: + type: string + type: object + type: array + replicantNodesStatus: + properties: + collisionCount: + format: int32 + type: integer + currentReplicas: + format: int32 + type: integer + currentRevision: + type: string + readyReplicas: + format: int32 + type: integer + replicas: + format: int32 + type: integer + updateReplicas: + format: int32 + type: integer + updateRevision: + type: string + type: object + type: object + type: object + served: true + storage: true + subresources: + scale: + specReplicasPath: .spec.replicantTemplate.spec.replicas + statusReplicasPath: .status.replicantNodeReplicas + status: {} diff --git a/crd-catalog/emqx/emqx-operator/apps.emqx.io/v2beta1/rebalances.yaml b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v2beta1/rebalances.yaml new file mode 100644 index 000000000..76d287177 --- /dev/null +++ b/crd-catalog/emqx/emqx-operator/apps.emqx.io/v2beta1/rebalances.yaml @@ -0,0 +1,142 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + name: rebalances.apps.emqx.io +spec: + group: apps.emqx.io + names: + kind: Rebalance + listKind: RebalanceList + plural: rebalances + singular: rebalance + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.phase + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v2beta1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + instanceKind: + default: EMQX + type: string + instanceName: + type: string + rebalanceStrategy: + properties: + absConnThreshold: + default: 1000 + format: int32 + type: integer + absSessThreshold: + default: 1000 + format: int32 + type: integer + connEvictRate: + format: int32 + minimum: 1.0 + type: integer + relConnThreshold: + default: '1.1' + type: string + relSessThreshold: + default: '1.1' + type: string + sessEvictRate: + default: 500 + format: int32 + type: integer + waitHealthCheck: + default: 60 + format: int32 + type: integer + waitTakeover: + default: 60 + format: int32 + type: integer + required: + - connEvictRate + type: object + required: + - instanceKind + - instanceName + - rebalanceStrategy + type: object + status: + properties: + completedTime: + format: date-time + type: string + conditions: + items: + properties: + lastTransitionTime: + format: date-time + type: string + lastUpdateTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + phase: + type: string + rebalanceStates: + items: + properties: + connection_eviction_rate: + format: int32 + type: integer + coordinator_node: + type: string + donors: + items: + type: string + type: array + node: + type: string + recipients: + items: + type: string + type: array + session_eviction_rate: + format: int32 + type: integer + state: + type: string + type: object + type: array + startedTime: + format: date-time + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/kube-custom-resources-rs/Cargo.toml b/kube-custom-resources-rs/Cargo.toml index d0db30064..feadfdcff 100644 --- a/kube-custom-resources-rs/Cargo.toml +++ b/kube-custom-resources-rs/Cargo.toml @@ -48,6 +48,10 @@ appprotect_f5_com_v1beta1 = [] appprotectdos_f5_com_v1beta1 = [] apps_3scale_net_v1alpha1 = [] apps_clusternet_io_v1alpha1 = [] +apps_emqx_io_v1beta3 = [] +apps_emqx_io_v1beta4 = [] +apps_emqx_io_v2alpha1 = [] +apps_emqx_io_v2beta1 = [] apps_gitlab_com_v1beta1 = [] apps_kubeblocks_io_v1alpha1 = [] apps_kubedl_io_v1alpha1 = [] diff --git a/kube-custom-resources-rs/src/apps_emqx_io_v1beta3/emqxbrokers.rs b/kube-custom-resources-rs/src/apps_emqx_io_v1beta3/emqxbrokers.rs new file mode 100644 index 000000000..5dee9be28 --- /dev/null +++ b/kube-custom-resources-rs/src/apps_emqx_io_v1beta3/emqxbrokers.rs @@ -0,0 +1,2617 @@ +// WARNING: generated by kopium - manual changes will be overwritten +// kopium command: kopium --docs --filename=./crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta3/emqxbrokers.yaml --derive=Default --derive=PartialEq +// kopium version: 0.16.2 + +use kube::CustomResource; +use serde::{Serialize, Deserialize}; +use std::collections::BTreeMap; +use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString; + +#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +#[kube(group = "apps.emqx.io", version = "v1beta3", kind = "EmqxBroker", plural = "emqxbrokers")] +#[kube(namespaced)] +#[kube(status = "EmqxBrokerStatus")] +#[kube(schema = "disabled")] +pub struct EmqxBrokerSpec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emqxTemplate")] + pub emqx_template: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraContainers")] + pub extra_containers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullSecrets")] + pub image_pull_secrets: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initContainers")] + pub init_containers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeName")] + pub node_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeSelector")] + pub node_selector: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub persistent: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "toleRations")] + pub tole_rations: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeAffinity")] + pub node_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podAffinity")] + pub pod_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podAntiAffinity")] + pub pod_anti_affinity: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityNodeAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution { + pub preference: EmqxBrokerAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchFields")] + pub match_fields: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "nodeSelectorTerms")] + pub node_selector_terms: Vec, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchFields")] + pub match_fields: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "podAffinityTerm")] + pub pod_affinity_term: EmqxBrokerAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAntiAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "podAffinityTerm")] + pub pod_affinity_term: EmqxBrokerAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub acl: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub config: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraVolumeMounts")] + pub extra_volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraVolumes")] + pub extra_volumes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub modules: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub registry: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceTemplate")] + pub service_template: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumes { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "awsElasticBlockStore")] + pub aws_elastic_block_store: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "azureDisk")] + pub azure_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "azureFile")] + pub azure_file: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cephfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cinder: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] + pub config_map: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub csi: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] + pub downward_api: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emptyDir")] + pub empty_dir: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ephemeral: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub fc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "flexVolume")] + pub flex_volume: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub flocker: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gcePersistentDisk")] + pub gce_persistent_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gitRepo")] + pub git_repo: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub glusterfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPath")] + pub host_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub iscsi: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub nfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "persistentVolumeClaim")] + pub persistent_volume_claim: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "photonPersistentDisk")] + pub photon_persistent_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "portworxVolume")] + pub portworx_volume: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub projected: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub quobyte: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub rbd: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "scaleIO")] + pub scale_io: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub storageos: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "vsphereVolume")] + pub vsphere_volume: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesAwsElasticBlockStore { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub partition: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesAzureDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "cachingMode")] + pub caching_mode: Option, + #[serde(rename = "diskName")] + pub disk_name: String, + #[serde(rename = "diskURI")] + pub disk_uri: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub kind: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesAzureFile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "secretName")] + pub secret_name: String, + #[serde(rename = "shareName")] + pub share_name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesCephfs { + pub monitors: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretFile")] + pub secret_file: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesCephfsSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesCinder { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesCinderSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesConfigMap { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesConfigMapItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesCsi { + pub driver: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePublishSecretRef")] + pub node_publish_secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeAttributes")] + pub volume_attributes: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesCsiNodePublishSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesDownwardApi { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesDownwardApiItems { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesDownwardApiItemsFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesDownwardApiItemsResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesEmptyDir { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub medium: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sizeLimit")] + pub size_limit: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesEphemeral { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeClaimTemplate")] + pub volume_claim_template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesEphemeralVolumeClaimTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + pub spec: EmqxBrokerEmqxTemplateExtraVolumesEphemeralVolumeClaimTemplateSpec, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesEphemeralVolumeClaimTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesEphemeralVolumeClaimTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] + pub access_modes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] + pub data_source: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] + pub data_source_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] + pub storage_class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] + pub volume_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesEphemeralVolumeClaimTemplateSpecDataSource { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesEphemeralVolumeClaimTemplateSpecDataSourceRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesEphemeralVolumeClaimTemplateSpecResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesEphemeralVolumeClaimTemplateSpecSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesEphemeralVolumeClaimTemplateSpecSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesFc { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lun: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetWWNs")] + pub target_ww_ns: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub wwids: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesFlexVolume { + pub driver: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub options: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesFlexVolumeSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesFlocker { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "datasetName")] + pub dataset_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "datasetUUID")] + pub dataset_uuid: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesGcePersistentDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub partition: Option, + #[serde(rename = "pdName")] + pub pd_name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesGitRepo { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub directory: Option, + pub repository: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub revision: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesGlusterfs { + pub endpoints: String, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesHostPath { + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesIscsi { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "chapAuthDiscovery")] + pub chap_auth_discovery: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "chapAuthSession")] + pub chap_auth_session: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initiatorName")] + pub initiator_name: Option, + pub iqn: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "iscsiInterface")] + pub iscsi_interface: Option, + pub lun: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub portals: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(rename = "targetPortal")] + pub target_portal: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesIscsiSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesNfs { + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + pub server: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesPersistentVolumeClaim { + #[serde(rename = "claimName")] + pub claim_name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesPhotonPersistentDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(rename = "pdID")] + pub pd_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesPortworxVolume { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesProjected { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sources: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesProjectedSources { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] + pub config_map: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] + pub downward_api: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAccountToken")] + pub service_account_token: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesProjectedSourcesConfigMap { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesProjectedSourcesConfigMapItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesProjectedSourcesDownwardApi { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesProjectedSourcesDownwardApiItems { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesProjectedSourcesDownwardApiItemsFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesProjectedSourcesDownwardApiItemsResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesProjectedSourcesSecret { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesProjectedSourcesSecretItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesProjectedSourcesServiceAccountToken { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub audience: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "expirationSeconds")] + pub expiration_seconds: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesQuobyte { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + pub registry: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tenant: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, + pub volume: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesRbd { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + pub image: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub keyring: Option, + pub monitors: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub pool: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesRbdSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesScaleIo { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + pub gateway: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "protectionDomain")] + pub protection_domain: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "secretRef")] + pub secret_ref: EmqxBrokerEmqxTemplateExtraVolumesScaleIoSecretRef, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sslEnabled")] + pub ssl_enabled: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageMode")] + pub storage_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePool")] + pub storage_pool: Option, + pub system: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesScaleIoSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesSecret { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretName")] + pub secret_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesSecretItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesStorageos { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeNamespace")] + pub volume_namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesStorageosSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateExtraVolumesVsphereVolume { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePolicyID")] + pub storage_policy_id: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePolicyName")] + pub storage_policy_name: Option, + #[serde(rename = "volumePath")] + pub volume_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateModules { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub enable: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsGroup")] + pub fs_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsGroupChangePolicy")] + pub fs_group_change_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "supplementalGroups")] + pub supplemental_groups: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sysctls: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateSecurityContextSysctls { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateServiceTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub spec: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateServiceTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateServiceTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocateLoadBalancerNodePorts")] + pub allocate_load_balancer_node_ports: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterIP")] + pub cluster_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterIPs")] + pub cluster_i_ps: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalIPs")] + pub external_i_ps: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalName")] + pub external_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalTrafficPolicy")] + pub external_traffic_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "healthCheckNodePort")] + pub health_check_node_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "internalTrafficPolicy")] + pub internal_traffic_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipFamilies")] + pub ip_families: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipFamilyPolicy")] + pub ip_family_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerClass")] + pub load_balancer_class: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerIP")] + pub load_balancer_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerSourceRanges")] + pub load_balancer_source_ranges: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "publishNotReadyAddresses")] + pub publish_not_ready_addresses: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionAffinity")] + pub session_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionAffinityConfig")] + pub session_affinity_config: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateServiceTemplateSpecPorts { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "appProtocol")] + pub app_protocol: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePort")] + pub node_port: Option, + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetPort")] + pub target_port: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateServiceTemplateSpecSessionAffinityConfig { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clientIP")] + pub client_ip: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateServiceTemplateSpecSessionAffinityConfigClientIp { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEmqxTemplateStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainers { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stdin: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] + pub stdin_once: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] + pub termination_message_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] + pub termination_message_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tty: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] + pub volume_devices: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] + pub volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersVolumeDevices { + #[serde(rename = "devicePath")] + pub device_path: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerExtraContainersVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerImagePullSecrets { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainers { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stdin: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] + pub stdin_once: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] + pub termination_message_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] + pub termination_message_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tty: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] + pub volume_devices: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] + pub volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersVolumeDevices { + #[serde(rename = "devicePath")] + pub device_path: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerInitContainersVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerPersistent { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] + pub access_modes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] + pub data_source: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] + pub data_source_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] + pub storage_class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] + pub volume_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerPersistentDataSource { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerPersistentDataSourceRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerPersistentResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerPersistentSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerPersistentSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerToleRations { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub effect: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub key: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub operator: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tolerationSeconds")] + pub toleration_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerStatus { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub conditions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emqxNodes")] + pub emqx_nodes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readyReplicas")] + pub ready_replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub replicas: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerStatusConditions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastTransitionTime")] + pub last_transition_time: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastUpdateTime")] + pub last_update_time: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub message: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub reason: Option, + pub status: String, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerStatusEmqxNodes { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub node: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub node_status: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub otp_release: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub version: Option, +} + diff --git a/kube-custom-resources-rs/src/apps_emqx_io_v1beta3/emqxenterprises.rs b/kube-custom-resources-rs/src/apps_emqx_io_v1beta3/emqxenterprises.rs new file mode 100644 index 000000000..23bab23b5 --- /dev/null +++ b/kube-custom-resources-rs/src/apps_emqx_io_v1beta3/emqxenterprises.rs @@ -0,0 +1,2631 @@ +// WARNING: generated by kopium - manual changes will be overwritten +// kopium command: kopium --docs --filename=./crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta3/emqxenterprises.yaml --derive=Default --derive=PartialEq +// kopium version: 0.16.2 + +use kube::CustomResource; +use serde::{Serialize, Deserialize}; +use std::collections::BTreeMap; +use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString; + +#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +#[kube(group = "apps.emqx.io", version = "v1beta3", kind = "EmqxEnterprise", plural = "emqxenterprises")] +#[kube(namespaced)] +#[kube(status = "EmqxEnterpriseStatus")] +#[kube(schema = "disabled")] +pub struct EmqxEnterpriseSpec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emqxTemplate")] + pub emqx_template: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraContainers")] + pub extra_containers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullSecrets")] + pub image_pull_secrets: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initContainers")] + pub init_containers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeName")] + pub node_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeSelector")] + pub node_selector: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub persistent: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "toleRations")] + pub tole_rations: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeAffinity")] + pub node_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podAffinity")] + pub pod_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podAntiAffinity")] + pub pod_anti_affinity: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityNodeAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution { + pub preference: EmqxEnterpriseAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchFields")] + pub match_fields: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "nodeSelectorTerms")] + pub node_selector_terms: Vec, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchFields")] + pub match_fields: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "podAffinityTerm")] + pub pod_affinity_term: EmqxEnterpriseAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAntiAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "podAffinityTerm")] + pub pod_affinity_term: EmqxEnterpriseAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub acl: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub config: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraVolumeMounts")] + pub extra_volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraVolumes")] + pub extra_volumes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub license: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub modules: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub registry: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceTemplate")] + pub service_template: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumes { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "awsElasticBlockStore")] + pub aws_elastic_block_store: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "azureDisk")] + pub azure_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "azureFile")] + pub azure_file: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cephfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cinder: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] + pub config_map: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub csi: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] + pub downward_api: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emptyDir")] + pub empty_dir: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ephemeral: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub fc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "flexVolume")] + pub flex_volume: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub flocker: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gcePersistentDisk")] + pub gce_persistent_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gitRepo")] + pub git_repo: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub glusterfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPath")] + pub host_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub iscsi: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub nfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "persistentVolumeClaim")] + pub persistent_volume_claim: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "photonPersistentDisk")] + pub photon_persistent_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "portworxVolume")] + pub portworx_volume: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub projected: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub quobyte: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub rbd: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "scaleIO")] + pub scale_io: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub storageos: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "vsphereVolume")] + pub vsphere_volume: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesAwsElasticBlockStore { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub partition: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesAzureDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "cachingMode")] + pub caching_mode: Option, + #[serde(rename = "diskName")] + pub disk_name: String, + #[serde(rename = "diskURI")] + pub disk_uri: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub kind: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesAzureFile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "secretName")] + pub secret_name: String, + #[serde(rename = "shareName")] + pub share_name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesCephfs { + pub monitors: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretFile")] + pub secret_file: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesCephfsSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesCinder { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesCinderSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesConfigMap { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesConfigMapItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesCsi { + pub driver: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePublishSecretRef")] + pub node_publish_secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeAttributes")] + pub volume_attributes: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesCsiNodePublishSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesDownwardApi { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesDownwardApiItems { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesDownwardApiItemsFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesDownwardApiItemsResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesEmptyDir { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub medium: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sizeLimit")] + pub size_limit: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesEphemeral { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeClaimTemplate")] + pub volume_claim_template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesEphemeralVolumeClaimTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + pub spec: EmqxEnterpriseEmqxTemplateExtraVolumesEphemeralVolumeClaimTemplateSpec, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesEphemeralVolumeClaimTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesEphemeralVolumeClaimTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] + pub access_modes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] + pub data_source: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] + pub data_source_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] + pub storage_class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] + pub volume_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesEphemeralVolumeClaimTemplateSpecDataSource { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesEphemeralVolumeClaimTemplateSpecDataSourceRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesEphemeralVolumeClaimTemplateSpecResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesEphemeralVolumeClaimTemplateSpecSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesEphemeralVolumeClaimTemplateSpecSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesFc { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lun: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetWWNs")] + pub target_ww_ns: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub wwids: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesFlexVolume { + pub driver: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub options: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesFlexVolumeSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesFlocker { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "datasetName")] + pub dataset_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "datasetUUID")] + pub dataset_uuid: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesGcePersistentDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub partition: Option, + #[serde(rename = "pdName")] + pub pd_name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesGitRepo { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub directory: Option, + pub repository: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub revision: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesGlusterfs { + pub endpoints: String, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesHostPath { + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesIscsi { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "chapAuthDiscovery")] + pub chap_auth_discovery: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "chapAuthSession")] + pub chap_auth_session: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initiatorName")] + pub initiator_name: Option, + pub iqn: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "iscsiInterface")] + pub iscsi_interface: Option, + pub lun: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub portals: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(rename = "targetPortal")] + pub target_portal: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesIscsiSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesNfs { + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + pub server: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesPersistentVolumeClaim { + #[serde(rename = "claimName")] + pub claim_name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesPhotonPersistentDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(rename = "pdID")] + pub pd_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesPortworxVolume { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesProjected { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sources: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesProjectedSources { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] + pub config_map: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] + pub downward_api: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAccountToken")] + pub service_account_token: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesProjectedSourcesConfigMap { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesProjectedSourcesConfigMapItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesProjectedSourcesDownwardApi { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesProjectedSourcesDownwardApiItems { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesProjectedSourcesDownwardApiItemsFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesProjectedSourcesDownwardApiItemsResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesProjectedSourcesSecret { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesProjectedSourcesSecretItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesProjectedSourcesServiceAccountToken { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub audience: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "expirationSeconds")] + pub expiration_seconds: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesQuobyte { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + pub registry: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tenant: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, + pub volume: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesRbd { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + pub image: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub keyring: Option, + pub monitors: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub pool: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesRbdSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesScaleIo { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + pub gateway: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "protectionDomain")] + pub protection_domain: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "secretRef")] + pub secret_ref: EmqxEnterpriseEmqxTemplateExtraVolumesScaleIoSecretRef, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sslEnabled")] + pub ssl_enabled: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageMode")] + pub storage_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePool")] + pub storage_pool: Option, + pub system: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesScaleIoSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesSecret { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretName")] + pub secret_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesSecretItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesStorageos { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeNamespace")] + pub volume_namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesStorageosSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateExtraVolumesVsphereVolume { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePolicyID")] + pub storage_policy_id: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePolicyName")] + pub storage_policy_name: Option, + #[serde(rename = "volumePath")] + pub volume_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateLicense { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub data: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretName")] + pub secret_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stringData")] + pub string_data: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateModules { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub configs: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub enable: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsGroup")] + pub fs_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsGroupChangePolicy")] + pub fs_group_change_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "supplementalGroups")] + pub supplemental_groups: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sysctls: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateSecurityContextSysctls { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateServiceTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub spec: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateServiceTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateServiceTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocateLoadBalancerNodePorts")] + pub allocate_load_balancer_node_ports: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterIP")] + pub cluster_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterIPs")] + pub cluster_i_ps: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalIPs")] + pub external_i_ps: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalName")] + pub external_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalTrafficPolicy")] + pub external_traffic_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "healthCheckNodePort")] + pub health_check_node_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "internalTrafficPolicy")] + pub internal_traffic_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipFamilies")] + pub ip_families: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipFamilyPolicy")] + pub ip_family_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerClass")] + pub load_balancer_class: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerIP")] + pub load_balancer_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerSourceRanges")] + pub load_balancer_source_ranges: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "publishNotReadyAddresses")] + pub publish_not_ready_addresses: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionAffinity")] + pub session_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionAffinityConfig")] + pub session_affinity_config: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateServiceTemplateSpecPorts { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "appProtocol")] + pub app_protocol: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePort")] + pub node_port: Option, + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetPort")] + pub target_port: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateServiceTemplateSpecSessionAffinityConfig { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clientIP")] + pub client_ip: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateServiceTemplateSpecSessionAffinityConfigClientIp { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEmqxTemplateStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainers { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stdin: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] + pub stdin_once: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] + pub termination_message_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] + pub termination_message_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tty: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] + pub volume_devices: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] + pub volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersVolumeDevices { + #[serde(rename = "devicePath")] + pub device_path: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseExtraContainersVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseImagePullSecrets { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainers { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stdin: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] + pub stdin_once: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] + pub termination_message_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] + pub termination_message_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tty: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] + pub volume_devices: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] + pub volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersVolumeDevices { + #[serde(rename = "devicePath")] + pub device_path: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseInitContainersVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterprisePersistent { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] + pub access_modes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] + pub data_source: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] + pub data_source_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] + pub storage_class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] + pub volume_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterprisePersistentDataSource { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterprisePersistentDataSourceRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterprisePersistentResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterprisePersistentSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterprisePersistentSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseToleRations { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub effect: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub key: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub operator: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tolerationSeconds")] + pub toleration_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseStatus { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub conditions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emqxNodes")] + pub emqx_nodes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readyReplicas")] + pub ready_replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub replicas: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseStatusConditions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastTransitionTime")] + pub last_transition_time: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastUpdateTime")] + pub last_update_time: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub message: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub reason: Option, + pub status: String, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseStatusEmqxNodes { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub node: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub node_status: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub otp_release: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub version: Option, +} + diff --git a/kube-custom-resources-rs/src/apps_emqx_io_v1beta3/emqxplugins.rs b/kube-custom-resources-rs/src/apps_emqx_io_v1beta3/emqxplugins.rs new file mode 100644 index 000000000..d35e4dd75 --- /dev/null +++ b/kube-custom-resources-rs/src/apps_emqx_io_v1beta3/emqxplugins.rs @@ -0,0 +1,28 @@ +// WARNING: generated by kopium - manual changes will be overwritten +// kopium command: kopium --docs --filename=./crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta3/emqxplugins.yaml --derive=Default --derive=PartialEq +// kopium version: 0.16.2 + +use kube::CustomResource; +use serde::{Serialize, Deserialize}; +use std::collections::BTreeMap; + +#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +#[kube(group = "apps.emqx.io", version = "v1beta3", kind = "EmqxPlugin", plural = "emqxplugins")] +#[kube(namespaced)] +#[kube(status = "EmqxPluginStatus")] +#[kube(schema = "disabled")] +pub struct EmqxPluginSpec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub config: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "pluginName")] + pub plugin_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxPluginStatus { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub phase: Option, +} + diff --git a/kube-custom-resources-rs/src/apps_emqx_io_v1beta3/mod.rs b/kube-custom-resources-rs/src/apps_emqx_io_v1beta3/mod.rs new file mode 100644 index 000000000..c8647f90f --- /dev/null +++ b/kube-custom-resources-rs/src/apps_emqx_io_v1beta3/mod.rs @@ -0,0 +1,3 @@ +pub mod emqxbrokers; +pub mod emqxenterprises; +pub mod emqxplugins; diff --git a/kube-custom-resources-rs/src/apps_emqx_io_v1beta4/emqxbrokers.rs b/kube-custom-resources-rs/src/apps_emqx_io_v1beta4/emqxbrokers.rs new file mode 100644 index 000000000..bbf1127ad --- /dev/null +++ b/kube-custom-resources-rs/src/apps_emqx_io_v1beta4/emqxbrokers.rs @@ -0,0 +1,3442 @@ +// WARNING: generated by kopium - manual changes will be overwritten +// kopium command: kopium --docs --filename=./crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta4/emqxbrokers.yaml --derive=Default --derive=PartialEq +// kopium version: 0.16.2 + +use kube::CustomResource; +use serde::{Serialize, Deserialize}; +use std::collections::BTreeMap; +use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString; + +#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +#[kube(group = "apps.emqx.io", version = "v1beta4", kind = "EmqxBroker", plural = "emqxbrokers")] +#[kube(namespaced)] +#[kube(status = "EmqxBrokerStatus")] +#[kube(schema = "disabled")] +pub struct EmqxBrokerSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterDomain")] + pub cluster_domain: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub persistent: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceTemplate")] + pub service_template: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerPersistent { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + pub spec: EmqxBrokerPersistentSpec, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerPersistentMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerPersistentSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] + pub access_modes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] + pub data_source: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] + pub data_source_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] + pub storage_class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] + pub volume_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerPersistentSpecDataSource { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerPersistentSpecDataSourceRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerPersistentSpecResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerPersistentSpecSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerPersistentSpecSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerServiceTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub spec: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerServiceTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerServiceTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocateLoadBalancerNodePorts")] + pub allocate_load_balancer_node_ports: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterIP")] + pub cluster_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterIPs")] + pub cluster_i_ps: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalIPs")] + pub external_i_ps: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalName")] + pub external_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalTrafficPolicy")] + pub external_traffic_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "healthCheckNodePort")] + pub health_check_node_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "internalTrafficPolicy")] + pub internal_traffic_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipFamilies")] + pub ip_families: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipFamilyPolicy")] + pub ip_family_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerClass")] + pub load_balancer_class: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerIP")] + pub load_balancer_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerSourceRanges")] + pub load_balancer_source_ranges: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "publishNotReadyAddresses")] + pub publish_not_ready_addresses: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionAffinity")] + pub session_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionAffinityConfig")] + pub session_affinity_config: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerServiceTemplateSpecPorts { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "appProtocol")] + pub app_protocol: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePort")] + pub node_port: Option, + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetPort")] + pub target_port: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerServiceTemplateSpecSessionAffinityConfig { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clientIP")] + pub client_ip: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerServiceTemplateSpecSessionAffinityConfigClientIp { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub spec: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emqxContainer")] + pub emqx_container: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ephemeralContainers")] + pub ephemeral_containers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraContainers")] + pub extra_containers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullSecrets")] + pub image_pull_secrets: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initContainers")] + pub init_containers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeName")] + pub node_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeSelector")] + pub node_selector: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podSecurityContext")] + pub pod_security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "reloaderImage")] + pub reloader_image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAccountName")] + pub service_account_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tolerations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub volumes: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeAffinity")] + pub node_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podAffinity")] + pub pod_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podAntiAffinity")] + pub pod_anti_affinity: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityNodeAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution { + pub preference: EmqxBrokerTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchFields")] + pub match_fields: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "nodeSelectorTerms")] + pub node_selector_terms: Vec, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchFields")] + pub match_fields: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "podAffinityTerm")] + pub pod_affinity_term: EmqxBrokerTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAntiAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "podAffinityTerm")] + pub pod_affinity_term: EmqxBrokerTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainer { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "bootstrapAPIKeys")] + pub bootstrap_api_keys: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emqxACL")] + pub emqx_acl: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emqxConfig")] + pub emqx_config: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stdin: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] + pub stdin_once: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] + pub termination_message_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] + pub termination_message_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tty: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] + pub volume_devices: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] + pub volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerBootstrapApiKeys { + pub key: String, + pub secret: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerImage { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "pullPolicy")] + pub pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub registry: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub repository: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub suffix: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub version: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum EmqxBrokerTemplateSpecEmqxContainerImagePullPolicy { + Always, + Never, + IfNotPresent, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerVolumeDevices { + #[serde(rename = "devicePath")] + pub device_path: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEmqxContainerVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainers { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stdin: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] + pub stdin_once: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetContainerName")] + pub target_container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] + pub termination_message_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] + pub termination_message_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tty: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] + pub volume_devices: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] + pub volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersVolumeDevices { + #[serde(rename = "devicePath")] + pub device_path: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecEphemeralContainersVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainers { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stdin: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] + pub stdin_once: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] + pub termination_message_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] + pub termination_message_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tty: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] + pub volume_devices: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] + pub volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersVolumeDevices { + #[serde(rename = "devicePath")] + pub device_path: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecExtraContainersVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecImagePullSecrets { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainers { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stdin: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] + pub stdin_once: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] + pub termination_message_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] + pub termination_message_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tty: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] + pub volume_devices: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] + pub volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersVolumeDevices { + #[serde(rename = "devicePath")] + pub device_path: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecInitContainersVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecPodSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsGroup")] + pub fs_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsGroupChangePolicy")] + pub fs_group_change_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "supplementalGroups")] + pub supplemental_groups: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sysctls: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecPodSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecPodSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecPodSecurityContextSysctls { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecPodSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecTolerations { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub effect: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub key: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub operator: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tolerationSeconds")] + pub toleration_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumes { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "awsElasticBlockStore")] + pub aws_elastic_block_store: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "azureDisk")] + pub azure_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "azureFile")] + pub azure_file: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cephfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cinder: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] + pub config_map: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub csi: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] + pub downward_api: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emptyDir")] + pub empty_dir: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ephemeral: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub fc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "flexVolume")] + pub flex_volume: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub flocker: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gcePersistentDisk")] + pub gce_persistent_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gitRepo")] + pub git_repo: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub glusterfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPath")] + pub host_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub iscsi: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub nfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "persistentVolumeClaim")] + pub persistent_volume_claim: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "photonPersistentDisk")] + pub photon_persistent_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "portworxVolume")] + pub portworx_volume: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub projected: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub quobyte: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub rbd: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "scaleIO")] + pub scale_io: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub storageos: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "vsphereVolume")] + pub vsphere_volume: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesAwsElasticBlockStore { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub partition: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesAzureDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "cachingMode")] + pub caching_mode: Option, + #[serde(rename = "diskName")] + pub disk_name: String, + #[serde(rename = "diskURI")] + pub disk_uri: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub kind: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesAzureFile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "secretName")] + pub secret_name: String, + #[serde(rename = "shareName")] + pub share_name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesCephfs { + pub monitors: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretFile")] + pub secret_file: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesCephfsSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesCinder { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesCinderSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesConfigMap { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesConfigMapItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesCsi { + pub driver: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePublishSecretRef")] + pub node_publish_secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeAttributes")] + pub volume_attributes: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesCsiNodePublishSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesDownwardApi { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesDownwardApiItems { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesDownwardApiItemsFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesDownwardApiItemsResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesEmptyDir { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub medium: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sizeLimit")] + pub size_limit: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesEphemeral { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeClaimTemplate")] + pub volume_claim_template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesEphemeralVolumeClaimTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + pub spec: EmqxBrokerTemplateSpecVolumesEphemeralVolumeClaimTemplateSpec, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesEphemeralVolumeClaimTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesEphemeralVolumeClaimTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] + pub access_modes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] + pub data_source: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] + pub data_source_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] + pub storage_class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] + pub volume_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesEphemeralVolumeClaimTemplateSpecDataSource { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesEphemeralVolumeClaimTemplateSpecDataSourceRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesEphemeralVolumeClaimTemplateSpecResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesEphemeralVolumeClaimTemplateSpecSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesEphemeralVolumeClaimTemplateSpecSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesFc { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lun: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetWWNs")] + pub target_ww_ns: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub wwids: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesFlexVolume { + pub driver: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub options: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesFlexVolumeSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesFlocker { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "datasetName")] + pub dataset_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "datasetUUID")] + pub dataset_uuid: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesGcePersistentDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub partition: Option, + #[serde(rename = "pdName")] + pub pd_name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesGitRepo { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub directory: Option, + pub repository: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub revision: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesGlusterfs { + pub endpoints: String, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesHostPath { + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesIscsi { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "chapAuthDiscovery")] + pub chap_auth_discovery: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "chapAuthSession")] + pub chap_auth_session: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initiatorName")] + pub initiator_name: Option, + pub iqn: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "iscsiInterface")] + pub iscsi_interface: Option, + pub lun: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub portals: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(rename = "targetPortal")] + pub target_portal: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesIscsiSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesNfs { + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + pub server: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesPersistentVolumeClaim { + #[serde(rename = "claimName")] + pub claim_name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesPhotonPersistentDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(rename = "pdID")] + pub pd_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesPortworxVolume { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesProjected { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sources: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesProjectedSources { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] + pub config_map: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] + pub downward_api: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAccountToken")] + pub service_account_token: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesProjectedSourcesConfigMap { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesProjectedSourcesConfigMapItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesProjectedSourcesDownwardApi { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesProjectedSourcesDownwardApiItems { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesProjectedSourcesDownwardApiItemsFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesProjectedSourcesDownwardApiItemsResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesProjectedSourcesSecret { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesProjectedSourcesSecretItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesProjectedSourcesServiceAccountToken { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub audience: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "expirationSeconds")] + pub expiration_seconds: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesQuobyte { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + pub registry: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tenant: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, + pub volume: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesRbd { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + pub image: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub keyring: Option, + pub monitors: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub pool: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesRbdSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesScaleIo { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + pub gateway: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "protectionDomain")] + pub protection_domain: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "secretRef")] + pub secret_ref: EmqxBrokerTemplateSpecVolumesScaleIoSecretRef, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sslEnabled")] + pub ssl_enabled: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageMode")] + pub storage_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePool")] + pub storage_pool: Option, + pub system: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesScaleIoSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesSecret { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretName")] + pub secret_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesSecretItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesStorageos { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeNamespace")] + pub volume_namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesStorageosSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerTemplateSpecVolumesVsphereVolume { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePolicyID")] + pub storage_policy_id: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePolicyName")] + pub storage_policy_name: Option, + #[serde(rename = "volumePath")] + pub volume_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerStatus { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub conditions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "currentStatefulSetVersion")] + pub current_stateful_set_version: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emqxNodes")] + pub emqx_nodes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readyReplicas")] + pub ready_replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub replicas: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerStatusConditions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastTransitionTime")] + pub last_transition_time: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastUpdateTime")] + pub last_update_time: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub message: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub reason: Option, + pub status: String, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxBrokerStatusEmqxNodes { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connections: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub node: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub node_status: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub otp_release: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub version: Option, +} + diff --git a/kube-custom-resources-rs/src/apps_emqx_io_v1beta4/emqxenterprises.rs b/kube-custom-resources-rs/src/apps_emqx_io_v1beta4/emqxenterprises.rs new file mode 100644 index 000000000..c84ffbcd5 --- /dev/null +++ b/kube-custom-resources-rs/src/apps_emqx_io_v1beta4/emqxenterprises.rs @@ -0,0 +1,3520 @@ +// WARNING: generated by kopium - manual changes will be overwritten +// kopium command: kopium --docs --filename=./crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta4/emqxenterprises.yaml --derive=Default --derive=PartialEq +// kopium version: 0.16.2 + +use kube::CustomResource; +use serde::{Serialize, Deserialize}; +use std::collections::BTreeMap; +use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString; + +#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +#[kube(group = "apps.emqx.io", version = "v1beta4", kind = "EmqxEnterprise", plural = "emqxenterprises")] +#[kube(namespaced)] +#[kube(status = "EmqxEnterpriseStatus")] +#[kube(schema = "disabled")] +pub struct EmqxEnterpriseSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "blueGreenUpdate")] + pub blue_green_update: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterDomain")] + pub cluster_domain: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub license: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub persistent: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceTemplate")] + pub service_template: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseBlueGreenUpdate { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "evacuationStrategy")] + pub evacuation_strategy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseBlueGreenUpdateEvacuationStrategy { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "connEvictRate")] + pub conn_evict_rate: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessEvictRate")] + pub sess_evict_rate: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "waitTakeover")] + pub wait_takeover: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseLicense { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub data: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretName")] + pub secret_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stringData")] + pub string_data: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterprisePersistent { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + pub spec: EmqxEnterprisePersistentSpec, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterprisePersistentMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterprisePersistentSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] + pub access_modes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] + pub data_source: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] + pub data_source_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] + pub storage_class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] + pub volume_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterprisePersistentSpecDataSource { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterprisePersistentSpecDataSourceRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterprisePersistentSpecResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterprisePersistentSpecSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterprisePersistentSpecSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseServiceTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub spec: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseServiceTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseServiceTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocateLoadBalancerNodePorts")] + pub allocate_load_balancer_node_ports: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterIP")] + pub cluster_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterIPs")] + pub cluster_i_ps: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalIPs")] + pub external_i_ps: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalName")] + pub external_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalTrafficPolicy")] + pub external_traffic_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "healthCheckNodePort")] + pub health_check_node_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "internalTrafficPolicy")] + pub internal_traffic_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipFamilies")] + pub ip_families: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipFamilyPolicy")] + pub ip_family_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerClass")] + pub load_balancer_class: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerIP")] + pub load_balancer_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerSourceRanges")] + pub load_balancer_source_ranges: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "publishNotReadyAddresses")] + pub publish_not_ready_addresses: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionAffinity")] + pub session_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionAffinityConfig")] + pub session_affinity_config: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseServiceTemplateSpecPorts { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "appProtocol")] + pub app_protocol: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePort")] + pub node_port: Option, + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetPort")] + pub target_port: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseServiceTemplateSpecSessionAffinityConfig { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clientIP")] + pub client_ip: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseServiceTemplateSpecSessionAffinityConfigClientIp { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub spec: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emqxContainer")] + pub emqx_container: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ephemeralContainers")] + pub ephemeral_containers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraContainers")] + pub extra_containers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullSecrets")] + pub image_pull_secrets: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initContainers")] + pub init_containers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeName")] + pub node_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeSelector")] + pub node_selector: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podSecurityContext")] + pub pod_security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "reloaderImage")] + pub reloader_image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAccountName")] + pub service_account_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tolerations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub volumes: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeAffinity")] + pub node_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podAffinity")] + pub pod_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podAntiAffinity")] + pub pod_anti_affinity: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityNodeAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution { + pub preference: EmqxEnterpriseTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchFields")] + pub match_fields: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "nodeSelectorTerms")] + pub node_selector_terms: Vec, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchFields")] + pub match_fields: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "podAffinityTerm")] + pub pod_affinity_term: EmqxEnterpriseTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAntiAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "podAffinityTerm")] + pub pod_affinity_term: EmqxEnterpriseTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainer { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "bootstrapAPIKeys")] + pub bootstrap_api_keys: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emqxACL")] + pub emqx_acl: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emqxConfig")] + pub emqx_config: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stdin: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] + pub stdin_once: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] + pub termination_message_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] + pub termination_message_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tty: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] + pub volume_devices: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] + pub volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerBootstrapApiKeys { + pub key: String, + pub secret: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerImage { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "pullPolicy")] + pub pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub registry: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub repository: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub suffix: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub version: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum EmqxEnterpriseTemplateSpecEmqxContainerImagePullPolicy { + Always, + Never, + IfNotPresent, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerVolumeDevices { + #[serde(rename = "devicePath")] + pub device_path: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEmqxContainerVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainers { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stdin: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] + pub stdin_once: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetContainerName")] + pub target_container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] + pub termination_message_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] + pub termination_message_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tty: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] + pub volume_devices: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] + pub volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersVolumeDevices { + #[serde(rename = "devicePath")] + pub device_path: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecEphemeralContainersVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainers { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stdin: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] + pub stdin_once: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] + pub termination_message_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] + pub termination_message_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tty: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] + pub volume_devices: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] + pub volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersVolumeDevices { + #[serde(rename = "devicePath")] + pub device_path: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecExtraContainersVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecImagePullSecrets { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainers { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stdin: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] + pub stdin_once: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] + pub termination_message_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] + pub termination_message_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tty: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] + pub volume_devices: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] + pub volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersVolumeDevices { + #[serde(rename = "devicePath")] + pub device_path: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecInitContainersVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecPodSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsGroup")] + pub fs_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsGroupChangePolicy")] + pub fs_group_change_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "supplementalGroups")] + pub supplemental_groups: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sysctls: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecPodSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecPodSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecPodSecurityContextSysctls { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecPodSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecTolerations { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub effect: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub key: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub operator: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tolerationSeconds")] + pub toleration_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumes { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "awsElasticBlockStore")] + pub aws_elastic_block_store: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "azureDisk")] + pub azure_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "azureFile")] + pub azure_file: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cephfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cinder: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] + pub config_map: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub csi: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] + pub downward_api: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emptyDir")] + pub empty_dir: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ephemeral: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub fc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "flexVolume")] + pub flex_volume: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub flocker: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gcePersistentDisk")] + pub gce_persistent_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gitRepo")] + pub git_repo: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub glusterfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPath")] + pub host_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub iscsi: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub nfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "persistentVolumeClaim")] + pub persistent_volume_claim: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "photonPersistentDisk")] + pub photon_persistent_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "portworxVolume")] + pub portworx_volume: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub projected: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub quobyte: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub rbd: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "scaleIO")] + pub scale_io: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub storageos: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "vsphereVolume")] + pub vsphere_volume: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesAwsElasticBlockStore { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub partition: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesAzureDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "cachingMode")] + pub caching_mode: Option, + #[serde(rename = "diskName")] + pub disk_name: String, + #[serde(rename = "diskURI")] + pub disk_uri: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub kind: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesAzureFile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "secretName")] + pub secret_name: String, + #[serde(rename = "shareName")] + pub share_name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesCephfs { + pub monitors: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretFile")] + pub secret_file: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesCephfsSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesCinder { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesCinderSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesConfigMap { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesConfigMapItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesCsi { + pub driver: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePublishSecretRef")] + pub node_publish_secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeAttributes")] + pub volume_attributes: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesCsiNodePublishSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesDownwardApi { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesDownwardApiItems { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesDownwardApiItemsFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesDownwardApiItemsResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesEmptyDir { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub medium: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sizeLimit")] + pub size_limit: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesEphemeral { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeClaimTemplate")] + pub volume_claim_template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesEphemeralVolumeClaimTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + pub spec: EmqxEnterpriseTemplateSpecVolumesEphemeralVolumeClaimTemplateSpec, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesEphemeralVolumeClaimTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesEphemeralVolumeClaimTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] + pub access_modes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] + pub data_source: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] + pub data_source_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] + pub storage_class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] + pub volume_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesEphemeralVolumeClaimTemplateSpecDataSource { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesEphemeralVolumeClaimTemplateSpecDataSourceRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesEphemeralVolumeClaimTemplateSpecResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesEphemeralVolumeClaimTemplateSpecSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesEphemeralVolumeClaimTemplateSpecSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesFc { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lun: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetWWNs")] + pub target_ww_ns: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub wwids: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesFlexVolume { + pub driver: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub options: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesFlexVolumeSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesFlocker { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "datasetName")] + pub dataset_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "datasetUUID")] + pub dataset_uuid: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesGcePersistentDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub partition: Option, + #[serde(rename = "pdName")] + pub pd_name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesGitRepo { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub directory: Option, + pub repository: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub revision: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesGlusterfs { + pub endpoints: String, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesHostPath { + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesIscsi { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "chapAuthDiscovery")] + pub chap_auth_discovery: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "chapAuthSession")] + pub chap_auth_session: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initiatorName")] + pub initiator_name: Option, + pub iqn: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "iscsiInterface")] + pub iscsi_interface: Option, + pub lun: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub portals: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(rename = "targetPortal")] + pub target_portal: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesIscsiSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesNfs { + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + pub server: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesPersistentVolumeClaim { + #[serde(rename = "claimName")] + pub claim_name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesPhotonPersistentDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(rename = "pdID")] + pub pd_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesPortworxVolume { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesProjected { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sources: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesProjectedSources { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] + pub config_map: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] + pub downward_api: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAccountToken")] + pub service_account_token: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesProjectedSourcesConfigMap { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesProjectedSourcesConfigMapItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesProjectedSourcesDownwardApi { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesProjectedSourcesDownwardApiItems { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesProjectedSourcesDownwardApiItemsFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesProjectedSourcesDownwardApiItemsResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesProjectedSourcesSecret { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesProjectedSourcesSecretItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesProjectedSourcesServiceAccountToken { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub audience: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "expirationSeconds")] + pub expiration_seconds: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesQuobyte { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + pub registry: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tenant: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, + pub volume: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesRbd { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + pub image: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub keyring: Option, + pub monitors: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub pool: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesRbdSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesScaleIo { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + pub gateway: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "protectionDomain")] + pub protection_domain: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "secretRef")] + pub secret_ref: EmqxEnterpriseTemplateSpecVolumesScaleIoSecretRef, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sslEnabled")] + pub ssl_enabled: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageMode")] + pub storage_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePool")] + pub storage_pool: Option, + pub system: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesScaleIoSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesSecret { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretName")] + pub secret_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesSecretItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesStorageos { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeNamespace")] + pub volume_namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesStorageosSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseTemplateSpecVolumesVsphereVolume { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePolicyID")] + pub storage_policy_id: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePolicyName")] + pub storage_policy_name: Option, + #[serde(rename = "volumePath")] + pub volume_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseStatus { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "blueGreenUpdateStatus")] + pub blue_green_update_status: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub conditions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "currentStatefulSetVersion")] + pub current_stateful_set_version: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emqxNodes")] + pub emqx_nodes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readyReplicas")] + pub ready_replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub replicas: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseStatusBlueGreenUpdateStatus { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "currentStatefulSet")] + pub current_stateful_set: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "evacuationsStatus")] + pub evacuations_status: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "originStatefulSet")] + pub origin_stateful_set: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startedAt")] + pub started_at: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseStatusBlueGreenUpdateStatusEvacuationsStatus { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection_eviction_rate: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection_goal: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub node: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub session_eviction_rate: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub session_goal: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub session_recipients: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub state: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stats: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseStatusBlueGreenUpdateStatusEvacuationsStatusStats { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub current_connected: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub current_sessions: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub initial_connected: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub initial_sessions: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseStatusConditions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastTransitionTime")] + pub last_transition_time: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastUpdateTime")] + pub last_update_time: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub message: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub reason: Option, + pub status: String, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct EmqxEnterpriseStatusEmqxNodes { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connections: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub node: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub node_status: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub otp_release: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub version: Option, +} + diff --git a/kube-custom-resources-rs/src/apps_emqx_io_v1beta4/mod.rs b/kube-custom-resources-rs/src/apps_emqx_io_v1beta4/mod.rs new file mode 100644 index 000000000..2e347a2fc --- /dev/null +++ b/kube-custom-resources-rs/src/apps_emqx_io_v1beta4/mod.rs @@ -0,0 +1,3 @@ +pub mod emqxbrokers; +pub mod emqxenterprises; +pub mod rebalances; diff --git a/kube-custom-resources-rs/src/apps_emqx_io_v1beta4/rebalances.rs b/kube-custom-resources-rs/src/apps_emqx_io_v1beta4/rebalances.rs new file mode 100644 index 000000000..43d9aca49 --- /dev/null +++ b/kube-custom-resources-rs/src/apps_emqx_io_v1beta4/rebalances.rs @@ -0,0 +1,86 @@ +// WARNING: generated by kopium - manual changes will be overwritten +// kopium command: kopium --docs --filename=./crd-catalog/emqx/emqx-operator/apps.emqx.io/v1beta4/rebalances.yaml --derive=Default --derive=PartialEq +// kopium version: 0.16.2 + +use kube::CustomResource; +use serde::{Serialize, Deserialize}; + +#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +#[kube(group = "apps.emqx.io", version = "v1beta4", kind = "Rebalance", plural = "rebalances")] +#[kube(namespaced)] +#[kube(status = "RebalanceStatus")] +#[kube(schema = "disabled")] +pub struct RebalanceSpec { + #[serde(rename = "instanceName")] + pub instance_name: String, + #[serde(rename = "rebalanceStrategy")] + pub rebalance_strategy: RebalanceRebalanceStrategy, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct RebalanceRebalanceStrategy { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "absConnThreshold")] + pub abs_conn_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "absSessThreshold")] + pub abs_sess_threshold: Option, + #[serde(rename = "connEvictRate")] + pub conn_evict_rate: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "relConnThreshold")] + pub rel_conn_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "relSessThreshold")] + pub rel_sess_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessEvictRate")] + pub sess_evict_rate: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "waitHealthCheck")] + pub wait_health_check: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "waitTakeover")] + pub wait_takeover: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct RebalanceStatus { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "completedTime")] + pub completed_time: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub conditions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub phase: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "rebalanceStates")] + pub rebalance_states: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startedTime")] + pub started_time: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct RebalanceStatusConditions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastTransitionTime")] + pub last_transition_time: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastUpdateTime")] + pub last_update_time: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub message: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub reason: Option, + pub status: String, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct RebalanceStatusRebalanceStates { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection_eviction_rate: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub coordinator_node: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub donors: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub node: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub recipients: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub session_eviction_rate: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub state: Option, +} + diff --git a/kube-custom-resources-rs/src/apps_emqx_io_v2alpha1/emqxes.rs b/kube-custom-resources-rs/src/apps_emqx_io_v2alpha1/emqxes.rs new file mode 100644 index 000000000..607f93580 --- /dev/null +++ b/kube-custom-resources-rs/src/apps_emqx_io_v2alpha1/emqxes.rs @@ -0,0 +1,5664 @@ +// WARNING: generated by kopium - manual changes will be overwritten +// kopium command: kopium --docs --filename=./crd-catalog/emqx/emqx-operator/apps.emqx.io/v2alpha1/emqxes.yaml --derive=PartialEq +// kopium version: 0.16.2 + +use kube::CustomResource; +use serde::{Serialize, Deserialize}; +use std::collections::BTreeMap; +use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString; + +#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, PartialEq)] +#[kube(group = "apps.emqx.io", version = "v2alpha1", kind = "EMQX", plural = "emqxes")] +#[kube(namespaced)] +#[kube(status = "EMQXStatus")] +#[kube(schema = "disabled")] +pub struct EMQXSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "bootstrapAPIKeys")] + pub bootstrap_api_keys: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "bootstrapConfig")] + pub bootstrap_config: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "coreTemplate")] + pub core_template: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dashboardServiceTemplate")] + pub dashboard_service_template: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullSecrets")] + pub image_pull_secrets: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "listenersServiceTemplate")] + pub listeners_service_template: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "replicantTemplate")] + pub replicant_template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXBootstrapApiKeys { + pub key: String, + pub secret: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub spec: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerSecurityContext")] + pub container_security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraContainers")] + pub extra_containers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraVolumeMounts")] + pub extra_volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraVolumes")] + pub extra_volumes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initContainers")] + pub init_containers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeName")] + pub node_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeSelector")] + pub node_selector: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podSecurityContext")] + pub pod_security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "toleRations")] + pub tole_rations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeClaimTemplates")] + pub volume_claim_templates: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeAffinity")] + pub node_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podAffinity")] + pub pod_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podAntiAffinity")] + pub pod_anti_affinity: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityNodeAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution { + pub preference: EMQXCoreTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchFields")] + pub match_fields: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "nodeSelectorTerms")] + pub node_selector_terms: Vec, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchFields")] + pub match_fields: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "podAffinityTerm")] + pub pod_affinity_term: EMQXCoreTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "podAffinityTerm")] + pub pod_affinity_term: EMQXCoreTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecContainerSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecContainerSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecContainerSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecContainerSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecContainerSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainers { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stdin: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] + pub stdin_once: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] + pub termination_message_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] + pub termination_message_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tty: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] + pub volume_devices: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] + pub volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersVolumeDevices { + #[serde(rename = "devicePath")] + pub device_path: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumes { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "awsElasticBlockStore")] + pub aws_elastic_block_store: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "azureDisk")] + pub azure_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "azureFile")] + pub azure_file: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cephfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cinder: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] + pub config_map: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub csi: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] + pub downward_api: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emptyDir")] + pub empty_dir: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ephemeral: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub fc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "flexVolume")] + pub flex_volume: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub flocker: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gcePersistentDisk")] + pub gce_persistent_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gitRepo")] + pub git_repo: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub glusterfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPath")] + pub host_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub iscsi: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub nfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "persistentVolumeClaim")] + pub persistent_volume_claim: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "photonPersistentDisk")] + pub photon_persistent_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "portworxVolume")] + pub portworx_volume: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub projected: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub quobyte: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub rbd: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "scaleIO")] + pub scale_io: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub storageos: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "vsphereVolume")] + pub vsphere_volume: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesAwsElasticBlockStore { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub partition: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesAzureDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "cachingMode")] + pub caching_mode: Option, + #[serde(rename = "diskName")] + pub disk_name: String, + #[serde(rename = "diskURI")] + pub disk_uri: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub kind: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesAzureFile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "secretName")] + pub secret_name: String, + #[serde(rename = "shareName")] + pub share_name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesCephfs { + pub monitors: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretFile")] + pub secret_file: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesCephfsSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesCinder { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesCinderSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesConfigMap { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesConfigMapItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesCsi { + pub driver: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePublishSecretRef")] + pub node_publish_secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeAttributes")] + pub volume_attributes: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesCsiNodePublishSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesDownwardApi { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesDownwardApiItems { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesDownwardApiItemsFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesDownwardApiItemsResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesEmptyDir { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub medium: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sizeLimit")] + pub size_limit: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesEphemeral { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeClaimTemplate")] + pub volume_claim_template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesEphemeralVolumeClaimTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + pub spec: EMQXCoreTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpec, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] + pub access_modes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] + pub data_source: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] + pub data_source_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] + pub storage_class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] + pub volume_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpecDataSource { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpecDataSourceRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpecResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpecSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpecSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesFc { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lun: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetWWNs")] + pub target_ww_ns: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub wwids: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesFlexVolume { + pub driver: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub options: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesFlexVolumeSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesFlocker { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "datasetName")] + pub dataset_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "datasetUUID")] + pub dataset_uuid: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesGcePersistentDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub partition: Option, + #[serde(rename = "pdName")] + pub pd_name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesGitRepo { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub directory: Option, + pub repository: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub revision: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesGlusterfs { + pub endpoints: String, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesHostPath { + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesIscsi { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "chapAuthDiscovery")] + pub chap_auth_discovery: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "chapAuthSession")] + pub chap_auth_session: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initiatorName")] + pub initiator_name: Option, + pub iqn: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "iscsiInterface")] + pub iscsi_interface: Option, + pub lun: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub portals: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(rename = "targetPortal")] + pub target_portal: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesIscsiSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesNfs { + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + pub server: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesPersistentVolumeClaim { + #[serde(rename = "claimName")] + pub claim_name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesPhotonPersistentDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(rename = "pdID")] + pub pd_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesPortworxVolume { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjected { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sources: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjectedSources { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] + pub config_map: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] + pub downward_api: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAccountToken")] + pub service_account_token: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjectedSourcesConfigMap { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjectedSourcesConfigMapItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjectedSourcesDownwardApi { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjectedSourcesDownwardApiItems { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjectedSourcesDownwardApiItemsFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjectedSourcesDownwardApiItemsResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjectedSourcesSecret { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjectedSourcesSecretItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjectedSourcesServiceAccountToken { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub audience: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "expirationSeconds")] + pub expiration_seconds: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesQuobyte { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + pub registry: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tenant: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, + pub volume: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesRbd { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + pub image: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub keyring: Option, + pub monitors: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub pool: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesRbdSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesScaleIo { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + pub gateway: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "protectionDomain")] + pub protection_domain: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "secretRef")] + pub secret_ref: EMQXCoreTemplateSpecExtraVolumesScaleIoSecretRef, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sslEnabled")] + pub ssl_enabled: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageMode")] + pub storage_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePool")] + pub storage_pool: Option, + pub system: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesScaleIoSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesSecret { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretName")] + pub secret_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesSecretItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesStorageos { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeNamespace")] + pub volume_namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesStorageosSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesVsphereVolume { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePolicyID")] + pub storage_policy_id: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePolicyName")] + pub storage_policy_name: Option, + #[serde(rename = "volumePath")] + pub volume_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainers { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stdin: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] + pub stdin_once: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] + pub termination_message_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] + pub termination_message_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tty: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] + pub volume_devices: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] + pub volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersVolumeDevices { + #[serde(rename = "devicePath")] + pub device_path: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecPodSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsGroup")] + pub fs_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsGroupChangePolicy")] + pub fs_group_change_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "supplementalGroups")] + pub supplemental_groups: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sysctls: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecPodSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecPodSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecPodSecurityContextSysctls { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecPodSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecToleRations { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub effect: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub key: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub operator: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tolerationSeconds")] + pub toleration_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecVolumeClaimTemplates { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] + pub access_modes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] + pub data_source: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] + pub data_source_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] + pub storage_class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] + pub volume_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecVolumeClaimTemplatesDataSource { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecVolumeClaimTemplatesDataSourceRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecVolumeClaimTemplatesResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecVolumeClaimTemplatesSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecVolumeClaimTemplatesSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXDashboardServiceTemplate { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub kind: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub status: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXDashboardServiceTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXDashboardServiceTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocateLoadBalancerNodePorts")] + pub allocate_load_balancer_node_ports: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterIP")] + pub cluster_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterIPs")] + pub cluster_i_ps: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalIPs")] + pub external_i_ps: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalName")] + pub external_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalTrafficPolicy")] + pub external_traffic_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "healthCheckNodePort")] + pub health_check_node_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "internalTrafficPolicy")] + pub internal_traffic_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipFamilies")] + pub ip_families: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipFamilyPolicy")] + pub ip_family_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerClass")] + pub load_balancer_class: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerIP")] + pub load_balancer_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerSourceRanges")] + pub load_balancer_source_ranges: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "publishNotReadyAddresses")] + pub publish_not_ready_addresses: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionAffinity")] + pub session_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionAffinityConfig")] + pub session_affinity_config: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXDashboardServiceTemplateSpecPorts { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "appProtocol")] + pub app_protocol: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePort")] + pub node_port: Option, + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetPort")] + pub target_port: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXDashboardServiceTemplateSpecSessionAffinityConfig { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clientIP")] + pub client_ip: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXDashboardServiceTemplateSpecSessionAffinityConfigClientIp { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXDashboardServiceTemplateStatus { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub conditions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancer")] + pub load_balancer: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXDashboardServiceTemplateStatusConditions { + #[serde(rename = "lastTransitionTime")] + pub last_transition_time: String, + pub message: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] + pub observed_generation: Option, + pub reason: String, + pub status: EMQXDashboardServiceTemplateStatusConditionsStatus, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum EMQXDashboardServiceTemplateStatusConditionsStatus { + True, + False, + Unknown, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXDashboardServiceTemplateStatusLoadBalancer { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ingress: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXDashboardServiceTemplateStatusLoadBalancerIngress { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub hostname: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXDashboardServiceTemplateStatusLoadBalancerIngressPorts { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub error: Option, + pub port: i32, + pub protocol: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXImagePullSecrets { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXListenersServiceTemplate { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub kind: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub status: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXListenersServiceTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXListenersServiceTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocateLoadBalancerNodePorts")] + pub allocate_load_balancer_node_ports: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterIP")] + pub cluster_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterIPs")] + pub cluster_i_ps: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalIPs")] + pub external_i_ps: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalName")] + pub external_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalTrafficPolicy")] + pub external_traffic_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "healthCheckNodePort")] + pub health_check_node_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "internalTrafficPolicy")] + pub internal_traffic_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipFamilies")] + pub ip_families: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipFamilyPolicy")] + pub ip_family_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerClass")] + pub load_balancer_class: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerIP")] + pub load_balancer_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerSourceRanges")] + pub load_balancer_source_ranges: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "publishNotReadyAddresses")] + pub publish_not_ready_addresses: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionAffinity")] + pub session_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionAffinityConfig")] + pub session_affinity_config: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXListenersServiceTemplateSpecPorts { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "appProtocol")] + pub app_protocol: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePort")] + pub node_port: Option, + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetPort")] + pub target_port: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXListenersServiceTemplateSpecSessionAffinityConfig { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clientIP")] + pub client_ip: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXListenersServiceTemplateSpecSessionAffinityConfigClientIp { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXListenersServiceTemplateStatus { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub conditions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancer")] + pub load_balancer: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXListenersServiceTemplateStatusConditions { + #[serde(rename = "lastTransitionTime")] + pub last_transition_time: String, + pub message: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] + pub observed_generation: Option, + pub reason: String, + pub status: EMQXListenersServiceTemplateStatusConditionsStatus, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum EMQXListenersServiceTemplateStatusConditionsStatus { + True, + False, + Unknown, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXListenersServiceTemplateStatusLoadBalancer { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ingress: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXListenersServiceTemplateStatusLoadBalancerIngress { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub hostname: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXListenersServiceTemplateStatusLoadBalancerIngressPorts { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub error: Option, + pub port: i32, + pub protocol: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub spec: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerSecurityContext")] + pub container_security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraContainers")] + pub extra_containers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraVolumeMounts")] + pub extra_volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraVolumes")] + pub extra_volumes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initContainers")] + pub init_containers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeName")] + pub node_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeSelector")] + pub node_selector: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podSecurityContext")] + pub pod_security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "toleRations")] + pub tole_rations: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeAffinity")] + pub node_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podAffinity")] + pub pod_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podAntiAffinity")] + pub pod_anti_affinity: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityNodeAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution { + pub preference: EMQXReplicantTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchFields")] + pub match_fields: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "nodeSelectorTerms")] + pub node_selector_terms: Vec, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchFields")] + pub match_fields: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "podAffinityTerm")] + pub pod_affinity_term: EMQXReplicantTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "podAffinityTerm")] + pub pod_affinity_term: EMQXReplicantTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecContainerSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecContainerSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecContainerSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecContainerSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecContainerSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainers { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stdin: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] + pub stdin_once: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] + pub termination_message_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] + pub termination_message_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tty: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] + pub volume_devices: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] + pub volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersVolumeDevices { + #[serde(rename = "devicePath")] + pub device_path: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumes { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "awsElasticBlockStore")] + pub aws_elastic_block_store: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "azureDisk")] + pub azure_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "azureFile")] + pub azure_file: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cephfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cinder: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] + pub config_map: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub csi: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] + pub downward_api: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emptyDir")] + pub empty_dir: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ephemeral: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub fc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "flexVolume")] + pub flex_volume: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub flocker: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gcePersistentDisk")] + pub gce_persistent_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gitRepo")] + pub git_repo: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub glusterfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPath")] + pub host_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub iscsi: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub nfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "persistentVolumeClaim")] + pub persistent_volume_claim: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "photonPersistentDisk")] + pub photon_persistent_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "portworxVolume")] + pub portworx_volume: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub projected: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub quobyte: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub rbd: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "scaleIO")] + pub scale_io: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub storageos: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "vsphereVolume")] + pub vsphere_volume: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesAwsElasticBlockStore { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub partition: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesAzureDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "cachingMode")] + pub caching_mode: Option, + #[serde(rename = "diskName")] + pub disk_name: String, + #[serde(rename = "diskURI")] + pub disk_uri: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub kind: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesAzureFile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "secretName")] + pub secret_name: String, + #[serde(rename = "shareName")] + pub share_name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesCephfs { + pub monitors: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretFile")] + pub secret_file: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesCephfsSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesCinder { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesCinderSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesConfigMap { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesConfigMapItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesCsi { + pub driver: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePublishSecretRef")] + pub node_publish_secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeAttributes")] + pub volume_attributes: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesCsiNodePublishSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesDownwardApi { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesDownwardApiItems { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesDownwardApiItemsFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesDownwardApiItemsResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesEmptyDir { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub medium: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sizeLimit")] + pub size_limit: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesEphemeral { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeClaimTemplate")] + pub volume_claim_template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesEphemeralVolumeClaimTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + pub spec: EMQXReplicantTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpec, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] + pub access_modes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] + pub data_source: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] + pub data_source_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] + pub storage_class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] + pub volume_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpecDataSource { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpecDataSourceRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpecResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpecSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpecSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesFc { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lun: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetWWNs")] + pub target_ww_ns: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub wwids: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesFlexVolume { + pub driver: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub options: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesFlexVolumeSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesFlocker { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "datasetName")] + pub dataset_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "datasetUUID")] + pub dataset_uuid: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesGcePersistentDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub partition: Option, + #[serde(rename = "pdName")] + pub pd_name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesGitRepo { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub directory: Option, + pub repository: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub revision: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesGlusterfs { + pub endpoints: String, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesHostPath { + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesIscsi { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "chapAuthDiscovery")] + pub chap_auth_discovery: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "chapAuthSession")] + pub chap_auth_session: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initiatorName")] + pub initiator_name: Option, + pub iqn: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "iscsiInterface")] + pub iscsi_interface: Option, + pub lun: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub portals: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(rename = "targetPortal")] + pub target_portal: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesIscsiSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesNfs { + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + pub server: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesPersistentVolumeClaim { + #[serde(rename = "claimName")] + pub claim_name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesPhotonPersistentDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(rename = "pdID")] + pub pd_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesPortworxVolume { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjected { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sources: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjectedSources { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] + pub config_map: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] + pub downward_api: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAccountToken")] + pub service_account_token: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjectedSourcesConfigMap { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjectedSourcesConfigMapItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjectedSourcesDownwardApi { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjectedSourcesDownwardApiItems { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjectedSourcesDownwardApiItemsFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjectedSourcesDownwardApiItemsResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjectedSourcesSecret { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjectedSourcesSecretItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjectedSourcesServiceAccountToken { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub audience: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "expirationSeconds")] + pub expiration_seconds: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesQuobyte { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + pub registry: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tenant: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, + pub volume: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesRbd { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + pub image: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub keyring: Option, + pub monitors: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub pool: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesRbdSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesScaleIo { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + pub gateway: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "protectionDomain")] + pub protection_domain: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "secretRef")] + pub secret_ref: EMQXReplicantTemplateSpecExtraVolumesScaleIoSecretRef, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sslEnabled")] + pub ssl_enabled: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageMode")] + pub storage_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePool")] + pub storage_pool: Option, + pub system: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesScaleIoSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesSecret { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretName")] + pub secret_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesSecretItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesStorageos { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeNamespace")] + pub volume_namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesStorageosSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesVsphereVolume { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePolicyID")] + pub storage_policy_id: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePolicyName")] + pub storage_policy_name: Option, + #[serde(rename = "volumePath")] + pub volume_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainers { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stdin: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] + pub stdin_once: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] + pub termination_message_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] + pub termination_message_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tty: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] + pub volume_devices: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] + pub volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersVolumeDevices { + #[serde(rename = "devicePath")] + pub device_path: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecPodSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsGroup")] + pub fs_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsGroupChangePolicy")] + pub fs_group_change_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "supplementalGroups")] + pub supplemental_groups: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sysctls: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecPodSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecPodSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecPodSecurityContextSysctls { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecPodSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecToleRations { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub effect: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub key: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub operator: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tolerationSeconds")] + pub toleration_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXStatus { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub conditions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "coreNodeReadyReplicas")] + pub core_node_ready_replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "coreNodeReplicas")] + pub core_node_replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "currentImage")] + pub current_image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emqxNodes")] + pub emqx_nodes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "replicantNodeReadyReplicas")] + pub replicant_node_ready_replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "replicantNodeReplicas")] + pub replicant_node_replicas: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXStatusConditions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastTransitionTime")] + pub last_transition_time: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastUpdateTime")] + pub last_update_time: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub message: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub reason: Option, + pub status: String, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXStatusEmqxNodes { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connections: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub edition: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub node: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub node_status: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub otp_release: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub uptime: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub version: Option, +} + diff --git a/kube-custom-resources-rs/src/apps_emqx_io_v2alpha1/mod.rs b/kube-custom-resources-rs/src/apps_emqx_io_v2alpha1/mod.rs new file mode 100644 index 000000000..c19003d8b --- /dev/null +++ b/kube-custom-resources-rs/src/apps_emqx_io_v2alpha1/mod.rs @@ -0,0 +1 @@ +pub mod emqxes; diff --git a/kube-custom-resources-rs/src/apps_emqx_io_v2beta1/emqxes.rs b/kube-custom-resources-rs/src/apps_emqx_io_v2beta1/emqxes.rs new file mode 100644 index 000000000..a642f8b6a --- /dev/null +++ b/kube-custom-resources-rs/src/apps_emqx_io_v2beta1/emqxes.rs @@ -0,0 +1,5759 @@ +// WARNING: generated by kopium - manual changes will be overwritten +// kopium command: kopium --docs --filename=./crd-catalog/emqx/emqx-operator/apps.emqx.io/v2beta1/emqxes.yaml --derive=PartialEq +// kopium version: 0.16.2 + +use kube::CustomResource; +use serde::{Serialize, Deserialize}; +use std::collections::BTreeMap; +use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString; + +#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, PartialEq)] +#[kube(group = "apps.emqx.io", version = "v2beta1", kind = "EMQX", plural = "emqxes")] +#[kube(namespaced)] +#[kube(status = "EMQXStatus")] +#[kube(schema = "disabled")] +pub struct EMQXSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "bootstrapAPIKeys")] + pub bootstrap_api_keys: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterDomain")] + pub cluster_domain: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub config: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "coreTemplate")] + pub core_template: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dashboardServiceTemplate")] + pub dashboard_service_template: Option, + pub image: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullSecrets")] + pub image_pull_secrets: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "listenersServiceTemplate")] + pub listeners_service_template: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "replicantTemplate")] + pub replicant_template: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "revisionHistoryLimit")] + pub revision_history_limit: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAccountName")] + pub service_account_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "updateStrategy")] + pub update_strategy: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXBootstrapApiKeys { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub key: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXBootstrapApiKeysSecretRef { + pub key: EMQXBootstrapApiKeysSecretRefKey, + pub secret: EMQXBootstrapApiKeysSecretRefSecret, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXBootstrapApiKeysSecretRefKey { + #[serde(rename = "secretKey")] + pub secret_key: String, + #[serde(rename = "secretName")] + pub secret_name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXBootstrapApiKeysSecretRefSecret { + #[serde(rename = "secretKey")] + pub secret_key: String, + #[serde(rename = "secretName")] + pub secret_name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXConfig { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub data: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum EMQXConfigMode { + Merge, + Replace, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub spec: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerSecurityContext")] + pub container_security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraContainers")] + pub extra_containers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraVolumeMounts")] + pub extra_volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraVolumes")] + pub extra_volumes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initContainers")] + pub init_containers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeName")] + pub node_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeSelector")] + pub node_selector: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podSecurityContext")] + pub pod_security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "toleRations")] + pub tole_rations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tolerations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeClaimTemplates")] + pub volume_claim_templates: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeAffinity")] + pub node_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podAffinity")] + pub pod_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podAntiAffinity")] + pub pod_anti_affinity: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityNodeAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution { + pub preference: EMQXCoreTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchFields")] + pub match_fields: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "nodeSelectorTerms")] + pub node_selector_terms: Vec, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchFields")] + pub match_fields: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "podAffinityTerm")] + pub pod_affinity_term: EMQXCoreTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "podAffinityTerm")] + pub pod_affinity_term: EMQXCoreTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecContainerSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecContainerSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecContainerSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecContainerSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecContainerSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainers { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stdin: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] + pub stdin_once: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] + pub termination_message_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] + pub termination_message_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tty: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] + pub volume_devices: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] + pub volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersVolumeDevices { + #[serde(rename = "devicePath")] + pub device_path: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraContainersVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumes { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "awsElasticBlockStore")] + pub aws_elastic_block_store: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "azureDisk")] + pub azure_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "azureFile")] + pub azure_file: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cephfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cinder: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] + pub config_map: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub csi: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] + pub downward_api: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emptyDir")] + pub empty_dir: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ephemeral: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub fc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "flexVolume")] + pub flex_volume: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub flocker: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gcePersistentDisk")] + pub gce_persistent_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gitRepo")] + pub git_repo: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub glusterfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPath")] + pub host_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub iscsi: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub nfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "persistentVolumeClaim")] + pub persistent_volume_claim: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "photonPersistentDisk")] + pub photon_persistent_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "portworxVolume")] + pub portworx_volume: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub projected: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub quobyte: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub rbd: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "scaleIO")] + pub scale_io: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub storageos: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "vsphereVolume")] + pub vsphere_volume: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesAwsElasticBlockStore { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub partition: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesAzureDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "cachingMode")] + pub caching_mode: Option, + #[serde(rename = "diskName")] + pub disk_name: String, + #[serde(rename = "diskURI")] + pub disk_uri: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub kind: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesAzureFile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "secretName")] + pub secret_name: String, + #[serde(rename = "shareName")] + pub share_name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesCephfs { + pub monitors: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretFile")] + pub secret_file: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesCephfsSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesCinder { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesCinderSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesConfigMap { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesConfigMapItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesCsi { + pub driver: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePublishSecretRef")] + pub node_publish_secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeAttributes")] + pub volume_attributes: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesCsiNodePublishSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesDownwardApi { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesDownwardApiItems { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesDownwardApiItemsFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesDownwardApiItemsResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesEmptyDir { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub medium: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sizeLimit")] + pub size_limit: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesEphemeral { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeClaimTemplate")] + pub volume_claim_template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesEphemeralVolumeClaimTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + pub spec: EMQXCoreTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpec, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] + pub access_modes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] + pub data_source: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] + pub data_source_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] + pub storage_class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] + pub volume_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpecDataSource { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpecDataSourceRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpecResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpecSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpecSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesFc { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lun: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetWWNs")] + pub target_ww_ns: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub wwids: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesFlexVolume { + pub driver: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub options: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesFlexVolumeSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesFlocker { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "datasetName")] + pub dataset_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "datasetUUID")] + pub dataset_uuid: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesGcePersistentDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub partition: Option, + #[serde(rename = "pdName")] + pub pd_name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesGitRepo { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub directory: Option, + pub repository: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub revision: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesGlusterfs { + pub endpoints: String, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesHostPath { + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesIscsi { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "chapAuthDiscovery")] + pub chap_auth_discovery: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "chapAuthSession")] + pub chap_auth_session: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initiatorName")] + pub initiator_name: Option, + pub iqn: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "iscsiInterface")] + pub iscsi_interface: Option, + pub lun: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub portals: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(rename = "targetPortal")] + pub target_portal: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesIscsiSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesNfs { + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + pub server: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesPersistentVolumeClaim { + #[serde(rename = "claimName")] + pub claim_name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesPhotonPersistentDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(rename = "pdID")] + pub pd_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesPortworxVolume { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjected { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sources: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjectedSources { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] + pub config_map: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] + pub downward_api: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAccountToken")] + pub service_account_token: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjectedSourcesConfigMap { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjectedSourcesConfigMapItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjectedSourcesDownwardApi { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjectedSourcesDownwardApiItems { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjectedSourcesDownwardApiItemsFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjectedSourcesDownwardApiItemsResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjectedSourcesSecret { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjectedSourcesSecretItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesProjectedSourcesServiceAccountToken { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub audience: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "expirationSeconds")] + pub expiration_seconds: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesQuobyte { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + pub registry: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tenant: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, + pub volume: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesRbd { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + pub image: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub keyring: Option, + pub monitors: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub pool: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesRbdSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesScaleIo { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + pub gateway: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "protectionDomain")] + pub protection_domain: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "secretRef")] + pub secret_ref: EMQXCoreTemplateSpecExtraVolumesScaleIoSecretRef, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sslEnabled")] + pub ssl_enabled: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageMode")] + pub storage_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePool")] + pub storage_pool: Option, + pub system: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesScaleIoSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesSecret { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretName")] + pub secret_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesSecretItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesStorageos { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeNamespace")] + pub volume_namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesStorageosSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecExtraVolumesVsphereVolume { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePolicyID")] + pub storage_policy_id: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePolicyName")] + pub storage_policy_name: Option, + #[serde(rename = "volumePath")] + pub volume_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainers { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stdin: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] + pub stdin_once: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] + pub termination_message_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] + pub termination_message_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tty: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] + pub volume_devices: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] + pub volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersVolumeDevices { + #[serde(rename = "devicePath")] + pub device_path: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecInitContainersVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecPodSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsGroup")] + pub fs_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsGroupChangePolicy")] + pub fs_group_change_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "supplementalGroups")] + pub supplemental_groups: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sysctls: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecPodSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecPodSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecPodSecurityContextSysctls { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecPodSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecToleRations { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub effect: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub key: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub operator: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tolerationSeconds")] + pub toleration_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecTolerations { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub effect: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub key: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub operator: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tolerationSeconds")] + pub toleration_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecVolumeClaimTemplates { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] + pub access_modes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] + pub data_source: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] + pub data_source_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] + pub storage_class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] + pub volume_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecVolumeClaimTemplatesDataSource { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecVolumeClaimTemplatesDataSourceRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecVolumeClaimTemplatesResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecVolumeClaimTemplatesSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXCoreTemplateSpecVolumeClaimTemplatesSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXDashboardServiceTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub enabled: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub spec: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXDashboardServiceTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXDashboardServiceTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocateLoadBalancerNodePorts")] + pub allocate_load_balancer_node_ports: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterIP")] + pub cluster_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterIPs")] + pub cluster_i_ps: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalIPs")] + pub external_i_ps: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalName")] + pub external_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalTrafficPolicy")] + pub external_traffic_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "healthCheckNodePort")] + pub health_check_node_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "internalTrafficPolicy")] + pub internal_traffic_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipFamilies")] + pub ip_families: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipFamilyPolicy")] + pub ip_family_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerClass")] + pub load_balancer_class: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerIP")] + pub load_balancer_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerSourceRanges")] + pub load_balancer_source_ranges: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "publishNotReadyAddresses")] + pub publish_not_ready_addresses: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionAffinity")] + pub session_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionAffinityConfig")] + pub session_affinity_config: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXDashboardServiceTemplateSpecPorts { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "appProtocol")] + pub app_protocol: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePort")] + pub node_port: Option, + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetPort")] + pub target_port: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXDashboardServiceTemplateSpecSessionAffinityConfig { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clientIP")] + pub client_ip: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXDashboardServiceTemplateSpecSessionAffinityConfigClientIp { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXImagePullSecrets { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXListenersServiceTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub enabled: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub spec: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXListenersServiceTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXListenersServiceTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocateLoadBalancerNodePorts")] + pub allocate_load_balancer_node_ports: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterIP")] + pub cluster_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterIPs")] + pub cluster_i_ps: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalIPs")] + pub external_i_ps: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalName")] + pub external_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalTrafficPolicy")] + pub external_traffic_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "healthCheckNodePort")] + pub health_check_node_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "internalTrafficPolicy")] + pub internal_traffic_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipFamilies")] + pub ip_families: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipFamilyPolicy")] + pub ip_family_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerClass")] + pub load_balancer_class: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerIP")] + pub load_balancer_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerSourceRanges")] + pub load_balancer_source_ranges: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "publishNotReadyAddresses")] + pub publish_not_ready_addresses: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionAffinity")] + pub session_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionAffinityConfig")] + pub session_affinity_config: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXListenersServiceTemplateSpecPorts { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "appProtocol")] + pub app_protocol: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePort")] + pub node_port: Option, + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetPort")] + pub target_port: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXListenersServiceTemplateSpecSessionAffinityConfig { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clientIP")] + pub client_ip: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXListenersServiceTemplateSpecSessionAffinityConfigClientIp { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub spec: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerSecurityContext")] + pub container_security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraContainers")] + pub extra_containers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraVolumeMounts")] + pub extra_volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraVolumes")] + pub extra_volumes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initContainers")] + pub init_containers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeName")] + pub node_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeSelector")] + pub node_selector: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podSecurityContext")] + pub pod_security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "toleRations")] + pub tole_rations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tolerations: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeAffinity")] + pub node_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podAffinity")] + pub pod_affinity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podAntiAffinity")] + pub pod_anti_affinity: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityNodeAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution { + pub preference: EMQXReplicantTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchFields")] + pub match_fields: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "nodeSelectorTerms")] + pub node_selector_terms: Vec, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchFields")] + pub match_fields: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "podAffinityTerm")] + pub pod_affinity_term: EMQXReplicantTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinity { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] + pub preferred_during_scheduling_ignored_during_execution: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] + pub required_during_scheduling_ignored_during_execution: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution { + #[serde(rename = "podAffinityTerm")] + pub pod_affinity_term: EMQXReplicantTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, + pub weight: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespaces: Option>, + #[serde(rename = "topologyKey")] + pub topology_key: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecContainerSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecContainerSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecContainerSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecContainerSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecContainerSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainers { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stdin: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] + pub stdin_once: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] + pub termination_message_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] + pub termination_message_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tty: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] + pub volume_devices: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] + pub volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersVolumeDevices { + #[serde(rename = "devicePath")] + pub device_path: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraContainersVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumes { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "awsElasticBlockStore")] + pub aws_elastic_block_store: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "azureDisk")] + pub azure_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "azureFile")] + pub azure_file: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cephfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cinder: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] + pub config_map: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub csi: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] + pub downward_api: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "emptyDir")] + pub empty_dir: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ephemeral: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub fc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "flexVolume")] + pub flex_volume: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub flocker: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gcePersistentDisk")] + pub gce_persistent_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gitRepo")] + pub git_repo: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub glusterfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPath")] + pub host_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub iscsi: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub nfs: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "persistentVolumeClaim")] + pub persistent_volume_claim: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "photonPersistentDisk")] + pub photon_persistent_disk: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "portworxVolume")] + pub portworx_volume: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub projected: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub quobyte: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub rbd: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "scaleIO")] + pub scale_io: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub storageos: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "vsphereVolume")] + pub vsphere_volume: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesAwsElasticBlockStore { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub partition: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesAzureDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "cachingMode")] + pub caching_mode: Option, + #[serde(rename = "diskName")] + pub disk_name: String, + #[serde(rename = "diskURI")] + pub disk_uri: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub kind: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesAzureFile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "secretName")] + pub secret_name: String, + #[serde(rename = "shareName")] + pub share_name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesCephfs { + pub monitors: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretFile")] + pub secret_file: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesCephfsSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesCinder { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesCinderSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesConfigMap { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesConfigMapItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesCsi { + pub driver: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePublishSecretRef")] + pub node_publish_secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeAttributes")] + pub volume_attributes: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesCsiNodePublishSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesDownwardApi { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesDownwardApiItems { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesDownwardApiItemsFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesDownwardApiItemsResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesEmptyDir { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub medium: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sizeLimit")] + pub size_limit: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesEphemeral { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeClaimTemplate")] + pub volume_claim_template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesEphemeralVolumeClaimTemplate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + pub spec: EMQXReplicantTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpec, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpec { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] + pub access_modes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] + pub data_source: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] + pub data_source_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] + pub storage_class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] + pub volume_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpecDataSource { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpecDataSourceRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] + pub api_group: Option, + pub kind: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpecResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpecSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesEphemeralVolumeClaimTemplateSpecSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesFc { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lun: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetWWNs")] + pub target_ww_ns: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub wwids: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesFlexVolume { + pub driver: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub options: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesFlexVolumeSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesFlocker { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "datasetName")] + pub dataset_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "datasetUUID")] + pub dataset_uuid: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesGcePersistentDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub partition: Option, + #[serde(rename = "pdName")] + pub pd_name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesGitRepo { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub directory: Option, + pub repository: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub revision: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesGlusterfs { + pub endpoints: String, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesHostPath { + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesIscsi { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "chapAuthDiscovery")] + pub chap_auth_discovery: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "chapAuthSession")] + pub chap_auth_session: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initiatorName")] + pub initiator_name: Option, + pub iqn: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "iscsiInterface")] + pub iscsi_interface: Option, + pub lun: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub portals: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(rename = "targetPortal")] + pub target_portal: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesIscsiSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesNfs { + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + pub server: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesPersistentVolumeClaim { + #[serde(rename = "claimName")] + pub claim_name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesPhotonPersistentDisk { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(rename = "pdID")] + pub pd_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesPortworxVolume { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "volumeID")] + pub volume_id: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjected { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sources: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjectedSources { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] + pub config_map: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] + pub downward_api: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAccountToken")] + pub service_account_token: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjectedSourcesConfigMap { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjectedSourcesConfigMapItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjectedSourcesDownwardApi { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjectedSourcesDownwardApiItems { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjectedSourcesDownwardApiItemsFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjectedSourcesDownwardApiItemsResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjectedSourcesSecret { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjectedSourcesSecretItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesProjectedSourcesServiceAccountToken { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub audience: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "expirationSeconds")] + pub expiration_seconds: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesQuobyte { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + pub registry: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tenant: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, + pub volume: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesRbd { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + pub image: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub keyring: Option, + pub monitors: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub pool: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesRbdSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesScaleIo { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + pub gateway: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "protectionDomain")] + pub protection_domain: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(rename = "secretRef")] + pub secret_ref: EMQXReplicantTemplateSpecExtraVolumesScaleIoSecretRef, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sslEnabled")] + pub ssl_enabled: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageMode")] + pub storage_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePool")] + pub storage_pool: Option, + pub system: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesScaleIoSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesSecret { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] + pub default_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretName")] + pub secret_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesSecretItems { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + pub path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesStorageos { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] + pub volume_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeNamespace")] + pub volume_namespace: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesStorageosSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecExtraVolumesVsphereVolume { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] + pub fs_type: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePolicyID")] + pub storage_policy_id: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePolicyName")] + pub storage_policy_name: Option, + #[serde(rename = "volumePath")] + pub volume_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainers { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] + pub env_from: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] + pub image_pull_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] + pub liveness_probe: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] + pub readiness_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] + pub security_context: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] + pub startup_probe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stdin: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] + pub stdin_once: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] + pub termination_message_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] + pub termination_message_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tty: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] + pub volume_devices: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] + pub volume_mounts: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersEnv { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersEnvValueFromFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersEnvValueFromResourceFieldRef { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + pub resource: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersEnvFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] + pub config_map_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersEnvFromConfigMapRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersEnvFromSecretRef { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] + pub allow_privilege_escalation: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub capabilities: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub privileged: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] + pub proc_mount: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] + pub read_only_root_filesystem: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersSecurityContextCapabilities { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub drop: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersVolumeDevices { + #[serde(rename = "devicePath")] + pub device_path: String, + pub name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecInitContainersVolumeMounts { + #[serde(rename = "mountPath")] + pub mount_path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] + pub mount_propagation: Option, + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] + pub read_only: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] + pub sub_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] + pub sub_path_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLivenessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLivenessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLivenessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLivenessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLivenessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecLivenessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecPodSecurityContext { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsGroup")] + pub fs_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsGroupChangePolicy")] + pub fs_group_change_policy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] + pub run_as_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] + pub run_as_non_root: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] + pub run_as_user: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] + pub se_linux_options: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] + pub seccomp_profile: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "supplementalGroups")] + pub supplemental_groups: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sysctls: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] + pub windows_options: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecPodSecurityContextSeLinuxOptions { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub level: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub user: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecPodSecurityContextSeccompProfile { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecPodSecurityContextSysctls { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecPodSecurityContextWindowsOptions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] + pub gmsa_credential_spec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] + pub gmsa_credential_spec_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] + pub host_process: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] + pub run_as_user_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecPorts { + #[serde(rename = "containerPort")] + pub container_port: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] + pub host_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] + pub host_port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecReadinessProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecReadinessProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecReadinessProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecReadinessProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecReadinessProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecReadinessProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecResources { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecStartupProbe { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] + pub failure_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub grpc: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] + pub period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] + pub success_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] + pub termination_grace_period_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] + pub timeout_seconds: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecStartupProbeExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecStartupProbeGrpc { + pub port: i32, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub service: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecStartupProbeHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecStartupProbeHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecStartupProbeTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecToleRations { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub effect: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub key: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub operator: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tolerationSeconds")] + pub toleration_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXReplicantTemplateSpecTolerations { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub effect: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub key: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub operator: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tolerationSeconds")] + pub toleration_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXUpdateStrategy { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "evacuationStrategy")] + pub evacuation_strategy: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] + pub initial_delay_seconds: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXUpdateStrategyEvacuationStrategy { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "connEvictRate")] + pub conn_evict_rate: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessEvictRate")] + pub sess_evict_rate: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "waitTakeover")] + pub wait_takeover: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum EMQXUpdateStrategyType { + Recreate, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXStatus { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub conditions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "coreNodes")] + pub core_nodes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "coreNodesStatus")] + pub core_nodes_status: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodEvacuationsStatus")] + pub nod_evacuations_status: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "replicantNodes")] + pub replicant_nodes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "replicantNodesStatus")] + pub replicant_nodes_status: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXStatusConditions { + #[serde(rename = "lastTransitionTime")] + pub last_transition_time: String, + pub message: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] + pub observed_generation: Option, + pub reason: String, + pub status: EMQXStatusConditionsStatus, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum EMQXStatusConditionsStatus { + True, + False, + Unknown, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXStatusCoreNodes { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connections: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "controllerUID")] + pub controller_uid: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub edition: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub live_connections: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub node: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub node_status: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub otp_release: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podUID")] + pub pod_uid: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub uptime: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub version: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXStatusCoreNodesStatus { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "collisionCount")] + pub collision_count: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "currentReplicas")] + pub current_replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "currentRevision")] + pub current_revision: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readyReplicas")] + pub ready_replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "updateReplicas")] + pub update_replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "updateRevision")] + pub update_revision: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXStatusNodEvacuationsStatus { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection_eviction_rate: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection_goal: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub node: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub session_eviction_rate: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub session_goal: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub session_recipients: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub state: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stats: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXStatusNodEvacuationsStatusStats { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub current_connected: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub current_sessions: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub initial_connected: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub initial_sessions: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXStatusReplicantNodes { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connections: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "controllerUID")] + pub controller_uid: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub edition: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub live_connections: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub node: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub node_status: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub otp_release: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podUID")] + pub pod_uid: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub uptime: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub version: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct EMQXStatusReplicantNodesStatus { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "collisionCount")] + pub collision_count: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "currentReplicas")] + pub current_replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "currentRevision")] + pub current_revision: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readyReplicas")] + pub ready_replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "updateReplicas")] + pub update_replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "updateRevision")] + pub update_revision: Option, +} + diff --git a/kube-custom-resources-rs/src/apps_emqx_io_v2beta1/mod.rs b/kube-custom-resources-rs/src/apps_emqx_io_v2beta1/mod.rs new file mode 100644 index 000000000..b7ece71ab --- /dev/null +++ b/kube-custom-resources-rs/src/apps_emqx_io_v2beta1/mod.rs @@ -0,0 +1,2 @@ +pub mod emqxes; +pub mod rebalances; diff --git a/kube-custom-resources-rs/src/apps_emqx_io_v2beta1/rebalances.rs b/kube-custom-resources-rs/src/apps_emqx_io_v2beta1/rebalances.rs new file mode 100644 index 000000000..f85c25bcc --- /dev/null +++ b/kube-custom-resources-rs/src/apps_emqx_io_v2beta1/rebalances.rs @@ -0,0 +1,88 @@ +// WARNING: generated by kopium - manual changes will be overwritten +// kopium command: kopium --docs --filename=./crd-catalog/emqx/emqx-operator/apps.emqx.io/v2beta1/rebalances.yaml --derive=Default --derive=PartialEq +// kopium version: 0.16.2 + +use kube::CustomResource; +use serde::{Serialize, Deserialize}; + +#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +#[kube(group = "apps.emqx.io", version = "v2beta1", kind = "Rebalance", plural = "rebalances")] +#[kube(namespaced)] +#[kube(status = "RebalanceStatus")] +#[kube(schema = "disabled")] +pub struct RebalanceSpec { + #[serde(rename = "instanceKind")] + pub instance_kind: String, + #[serde(rename = "instanceName")] + pub instance_name: String, + #[serde(rename = "rebalanceStrategy")] + pub rebalance_strategy: RebalanceRebalanceStrategy, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct RebalanceRebalanceStrategy { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "absConnThreshold")] + pub abs_conn_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "absSessThreshold")] + pub abs_sess_threshold: Option, + #[serde(rename = "connEvictRate")] + pub conn_evict_rate: i32, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "relConnThreshold")] + pub rel_conn_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "relSessThreshold")] + pub rel_sess_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessEvictRate")] + pub sess_evict_rate: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "waitHealthCheck")] + pub wait_health_check: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "waitTakeover")] + pub wait_takeover: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct RebalanceStatus { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "completedTime")] + pub completed_time: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub conditions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub phase: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "rebalanceStates")] + pub rebalance_states: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startedTime")] + pub started_time: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct RebalanceStatusConditions { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastTransitionTime")] + pub last_transition_time: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastUpdateTime")] + pub last_update_time: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub message: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub reason: Option, + pub status: String, + #[serde(rename = "type")] + pub r#type: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct RebalanceStatusRebalanceStates { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection_eviction_rate: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub coordinator_node: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub donors: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub node: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub recipients: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub session_eviction_rate: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub state: Option, +} + diff --git a/kube-custom-resources-rs/src/lib.rs b/kube-custom-resources-rs/src/lib.rs index 542de42f5..51e6d7185 100644 --- a/kube-custom-resources-rs/src/lib.rs +++ b/kube-custom-resources-rs/src/lib.rs @@ -227,6 +227,39 @@ kinds: - `Localization` - `Subscription` +## apps_emqx_io_v1beta3 + +apiVersion: `apps.emqx.io/v1beta3` + +kinds: +- `EmqxBroker` +- `EmqxEnterprise` +- `EmqxPlugin` + +## apps_emqx_io_v1beta4 + +apiVersion: `apps.emqx.io/v1beta4` + +kinds: +- `EmqxBroker` +- `EmqxEnterprise` +- `Rebalance` + +## apps_emqx_io_v2alpha1 + +apiVersion: `apps.emqx.io/v2alpha1` + +kinds: +- `EMQX` + +## apps_emqx_io_v2beta1 + +apiVersion: `apps.emqx.io/v2beta1` + +kinds: +- `EMQX` +- `Rebalance` + ## apps_gitlab_com_v1beta1 apiVersion: `apps.gitlab.com/v1beta1` @@ -2813,6 +2846,14 @@ pub mod appprotectdos_f5_com_v1beta1; pub mod apps_3scale_net_v1alpha1; #[cfg(feature = "apps_clusternet_io_v1alpha1")] pub mod apps_clusternet_io_v1alpha1; +#[cfg(feature = "apps_emqx_io_v1beta3")] +pub mod apps_emqx_io_v1beta3; +#[cfg(feature = "apps_emqx_io_v1beta4")] +pub mod apps_emqx_io_v1beta4; +#[cfg(feature = "apps_emqx_io_v2alpha1")] +pub mod apps_emqx_io_v2alpha1; +#[cfg(feature = "apps_emqx_io_v2beta1")] +pub mod apps_emqx_io_v2beta1; #[cfg(feature = "apps_gitlab_com_v1beta1")] pub mod apps_gitlab_com_v1beta1; #[cfg(feature = "apps_kubeblocks_io_v1alpha1")]