From 7a0ead819b9fdd612c089c8b0f61ae3da49d56d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Huss?= Date: Sun, 2 Jun 2024 14:19:01 +0200 Subject: [PATCH] Check for pullpolicy=Always as advices --- data/rabbitmq.json | 7584 +++++++++++++---- front/components/generic/AdviceOverview.vue | 2 +- front/components/generic/GenericList.vue | 12 +- front/libs/rabbitmq/custom.ts | 169 + .../generator/front/all.pages.advices.vue.hbs | 4 +- .../generator/front/grp.pages.advices.vue.hbs | 4 +- utils/generator/partials/back/advices.ts.hbs | 32 +- 7 files changed, 6265 insertions(+), 1542 deletions(-) diff --git a/data/rabbitmq.json b/data/rabbitmq.json index 893444b..89f960d 100644 --- a/data/rabbitmq.json +++ b/data/rabbitmq.json @@ -3,7 +3,7 @@ "objects": [ { "alternatives": [], - "name": "com.rabbitmq.v1beta1.RabbitmqCluster", + "name": "com.rabbitmq.v1alpha1.SuperStream", "definition": { "properties": { "apiVersion": { @@ -15,1105 +15,3787 @@ "type": "string" }, "spec": { - "description": "Spec is the desired state of the RabbitmqCluster Custom Resource.", + "description": "SuperStreamSpec defines the desired state of SuperStream", "type": "object", + "required": [ + "name", + "rabbitmqClusterReference" + ], "properties": { - "affinity": { - "description": "Affinity scheduling rules to be applied on created Pods.", + "name": { + "description": "Name of the queue; required property.", + "type": "string" + }, + "partitions": { + "description": "Number of partitions to create within this super stream.\nDefaults to '3'.", + "type": "integer" + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that the SuperStream will be created in.\nRequired property.", "type": "object", "properties": { - "nodeAffinity": { - "description": "Describes node affinity scheduling rules for the pod.", + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", "type": "object", "properties": { - "preferredDuringSchedulingIgnoredDuringExecution": { - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.", - "type": "array", - "items": { - "description": "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).", + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "routingKeys": { + "description": "Routing keys to use for each of the partitions in the SuperStream\nIf unset, the routing keys for the partitions will be set to the index of the partitions", + "type": "array", + "items": { + "type": "string" + } + }, + "vhost": { + "description": "Default to vhost '/'; cannot be updated", + "type": "string" + } + } + }, + "status": { + "description": "SuperStreamStatus defines the observed state of SuperStream", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this SuperStream. It corresponds to the\nSuperStream's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + }, + "partitions": { + "description": "Partitions are a list of the stream queue names which form the partitions of this SuperStream.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "description": "SuperStream is the Schema for the queues API", + "type": "object", + "x-kubernetes-group-version-kind": [ + { + "group": "rabbitmq.com", + "kind": "SuperStream", + "version": "v1alpha1" + } + ] + }, + "crd": { + "metadata": { + "name": "superstreams.rabbitmq.com" + }, + "spec": { + "group": "rabbitmq.com", + "names": { + "plural": "superstreams", + "singular": "superstream", + "kind": "SuperStream", + "listKind": "SuperStreamList", + "categories": [ + "rabbitmq" + ] + }, + "scope": "Namespaced", + "versions": [ + { + "name": "v1alpha1", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "SuperStream is the Schema for the queues API", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "SuperStreamSpec defines the desired state of SuperStream", + "type": "object", + "required": [ + "name", + "rabbitmqClusterReference" + ], + "properties": { + "name": { + "description": "Name of the queue; required property.", + "type": "string" + }, + "partitions": { + "description": "Number of partitions to create within this super stream.\nDefaults to '3'.", + "type": "integer", + "default": 3 + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that the SuperStream will be created in.\nRequired property.", "type": "object", - "required": [ - "preference", - "weight" - ], "properties": { - "preference": { - "description": "A node selector term, associated with the corresponding weight.", + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", "type": "object", "properties": { - "matchExpressions": { - "description": "A list of node selector requirements by node's labels.", - "type": "array", - "items": { - "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "type": "object", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "The label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", - "type": "string" - }, - "values": { - "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "matchFields": { - "description": "A list of node selector requirements by node's fields.", - "type": "array", - "items": { - "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "type": "object", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "The label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", - "type": "string" - }, - "values": { - "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", - "type": "array", - "items": { - "type": "string" - } - } - } - } + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" } }, "x-kubernetes-map-type": "atomic" }, - "weight": { - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", - "type": "integer", - "format": "int32" + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" } } + }, + "routingKeys": { + "description": "Routing keys to use for each of the partitions in the SuperStream\nIf unset, the routing keys for the partitions will be set to the index of the partitions", + "type": "array", + "items": { + "type": "string" + } + }, + "vhost": { + "description": "Default to vhost '/'; cannot be updated", + "type": "string", + "default": "/" } - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.", - "type": "object", - "required": [ - "nodeSelectorTerms" - ], - "properties": { - "nodeSelectorTerms": { - "description": "Required. A list of node selector terms. The terms are ORed.", - "type": "array", - "items": { - "description": "A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.", - "type": "object", - "properties": { - "matchExpressions": { - "description": "A list of node selector requirements by node's labels.", - "type": "array", - "items": { - "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "type": "object", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "The label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", - "type": "string" - }, - "values": { - "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "matchFields": { - "description": "A list of node selector requirements by node's fields.", - "type": "array", - "items": { - "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "type": "object", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "The label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", - "type": "string" - }, - "values": { - "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - } + } + }, + "status": { + "description": "SuperStreamStatus defines the observed state of SuperStream", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" }, - "x-kubernetes-map-type": "atomic" + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } } } }, - "x-kubernetes-map-type": "atomic" + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this SuperStream. It corresponds to the\nSuperStream's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + }, + "partitions": { + "description": "Partitions are a list of the stream queue names which form the partitions of this SuperStream.", + "type": "array", + "items": { + "type": "string" + } + } } } - }, - "podAffinity": { - "description": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).", + } + } + }, + "subresources": { + "status": {} + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "superstreams", + "singular": "superstream", + "kind": "SuperStream", + "listKind": "SuperStreamList", + "categories": [ + "rabbitmq" + ] + }, + "storedVersions": [ + "v1alpha1" + ] + } + }, + "short": "SuperStream", + "apiGroup": "rabbitmq.com", + "apiKind": "SuperStream", + "apiVersion": "v1alpha1", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "rabbitmq", + "sub": "rabbitmq", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "com.rabbitmq.v1beta1.Binding", + "definition": { + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "spec": { + "description": "BindingSpec defines the desired state of Binding", + "type": "object", + "required": [ + "rabbitmqClusterReference" + ], + "properties": { + "arguments": { + "description": "Cannot be updated", + "x-kubernetes-preserve-unknown-fields": true + }, + "destination": { + "description": "Cannot be updated", + "type": "string" + }, + "destinationType": { + "description": "Cannot be updated", + "type": "string", + "enum": [ + "exchange", + "queue" + ] + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that the binding will be created in.\nRequired property.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", "type": "object", "properties": { - "preferredDuringSchedulingIgnoredDuringExecution": { - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.", - "type": "array", - "items": { - "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "routingKey": { + "description": "Cannot be updated", + "type": "string" + }, + "source": { + "description": "Cannot be updated", + "type": "string" + }, + "vhost": { + "description": "Default to vhost '/'; cannot be updated", + "type": "string" + } + } + }, + "status": { + "description": "BindingStatus defines the observed state of Binding", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this Binding. It corresponds to the\nBinding's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + }, + "description": "Binding is the Schema for the bindings API", + "type": "object", + "x-kubernetes-group-version-kind": [ + { + "group": "rabbitmq.com", + "kind": "Binding", + "version": "v1beta1" + } + ] + }, + "crd": { + "metadata": { + "name": "bindings.rabbitmq.com" + }, + "spec": { + "group": "rabbitmq.com", + "names": { + "plural": "bindings", + "singular": "binding", + "kind": "Binding", + "listKind": "BindingList", + "categories": [ + "rabbitmq" + ] + }, + "scope": "Namespaced", + "versions": [ + { + "name": "v1beta1", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "Binding is the Schema for the bindings API", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "BindingSpec defines the desired state of Binding", + "type": "object", + "required": [ + "rabbitmqClusterReference" + ], + "properties": { + "arguments": { + "description": "Cannot be updated", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "destination": { + "description": "Cannot be updated", + "type": "string" + }, + "destinationType": { + "description": "Cannot be updated", + "type": "string", + "enum": [ + "exchange", + "queue" + ] + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that the binding will be created in.\nRequired property.", "type": "object", - "required": [ - "podAffinityTerm", - "weight" - ], "properties": { - "podAffinityTerm": { - "description": "Required. A pod affinity term, associated with the corresponding weight.", + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", "type": "object", - "required": [ - "topologyKey" - ], "properties": { - "labelSelector": { - "description": "A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.", - "type": "object", - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "type": "array", - "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "type": "object", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "key is the label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", - "type": "string" - }, - "values": { - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - }, - "x-kubernetes-map-type": "atomic" - }, - "matchLabelKeys": { - "description": "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "mismatchLabelKeys": { - "description": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "namespaceSelector": { - "description": "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.", - "type": "object", - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "type": "array", - "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "type": "object", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "key is the label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", - "type": "string" - }, - "values": { - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - }, - "x-kubernetes-map-type": "atomic" - }, - "namespaces": { - "description": "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".", - "type": "array", - "items": { - "type": "string" - } - }, - "topologyKey": { - "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.", + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", "type": "string" } - } + }, + "x-kubernetes-map-type": "atomic" }, - "weight": { - "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", - "type": "integer", - "format": "int32" + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" } } + }, + "routingKey": { + "description": "Cannot be updated", + "type": "string" + }, + "source": { + "description": "Cannot be updated", + "type": "string" + }, + "vhost": { + "description": "Default to vhost '/'; cannot be updated", + "type": "string", + "default": "/" } - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", - "type": "array", - "items": { - "description": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running", - "type": "object", - "required": [ - "topologyKey" - ], - "properties": { - "labelSelector": { - "description": "A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.", - "type": "object", - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "type": "array", - "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "type": "object", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "key is the label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", - "type": "string" - }, - "values": { - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", - "type": "object", - "additionalProperties": { - "type": "string" - } - } + } + }, + "status": { + "description": "BindingStatus defines the observed state of Binding", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" }, - "x-kubernetes-map-type": "atomic" - }, - "matchLabelKeys": { - "description": "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", - "type": "array", - "items": { + "message": { + "description": "Full text reason for current status of the condition.", "type": "string" }, - "x-kubernetes-list-type": "atomic" - }, - "mismatchLabelKeys": { - "description": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", - "type": "array", - "items": { + "reason": { + "description": "One word, camel-case reason for current status of the condition.", "type": "string" }, - "x-kubernetes-list-type": "atomic" - }, - "namespaceSelector": { - "description": "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.", - "type": "object", - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "type": "array", - "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "type": "object", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "key is the label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", - "type": "string" - }, - "values": { - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", - "type": "object", - "additionalProperties": { - "type": "string" - } - } + "status": { + "description": "True, False, or Unknown", + "type": "string" }, - "x-kubernetes-map-type": "atomic" - }, - "namespaces": { - "description": "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".", - "type": "array", - "items": { + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", "type": "string" } - }, - "topologyKey": { - "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.", - "type": "string" - } - } - } - } - } - }, - "podAntiAffinity": { - "description": "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).", - "type": "object", - "properties": { - "preferredDuringSchedulingIgnoredDuringExecution": { - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.", - "type": "array", - "items": { - "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", - "type": "object", - "required": [ - "podAffinityTerm", - "weight" - ], - "properties": { - "podAffinityTerm": { - "description": "Required. A pod affinity term, associated with the corresponding weight.", - "type": "object", - "required": [ - "topologyKey" - ], - "properties": { - "labelSelector": { - "description": "A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.", - "type": "object", - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "type": "array", - "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "type": "object", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "key is the label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", - "type": "string" - }, - "values": { - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - }, - "x-kubernetes-map-type": "atomic" - }, - "matchLabelKeys": { - "description": "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "mismatchLabelKeys": { - "description": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "namespaceSelector": { - "description": "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.", - "type": "object", - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "type": "array", - "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "type": "object", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "key is the label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", - "type": "string" - }, - "values": { - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - }, - "x-kubernetes-map-type": "atomic" - }, - "namespaces": { - "description": "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".", - "type": "array", - "items": { - "type": "string" - } - }, - "topologyKey": { - "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.", - "type": "string" - } - } - }, - "weight": { - "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", - "type": "integer", - "format": "int32" - } - } - } - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", - "type": "array", - "items": { - "description": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running", - "type": "object", - "required": [ - "topologyKey" - ], - "properties": { - "labelSelector": { - "description": "A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.", - "type": "object", - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "type": "array", - "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "type": "object", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "key is the label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", - "type": "string" - }, - "values": { - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - }, - "x-kubernetes-map-type": "atomic" - }, - "matchLabelKeys": { - "description": "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "mismatchLabelKeys": { - "description": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "namespaceSelector": { - "description": "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.", - "type": "object", - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "type": "array", - "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "type": "object", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "key is the label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", - "type": "string" - }, - "values": { - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - }, - "x-kubernetes-map-type": "atomic" - }, - "namespaces": { - "description": "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".", - "type": "array", - "items": { - "type": "string" - } - }, - "topologyKey": { - "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.", - "type": "string" } } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this Binding. It corresponds to the\nBinding's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" } } } } } }, - "delayStartSeconds": { - "description": "DelayStartSeconds is the time the init container (`setup-container`) will sleep before terminating. This effectively delays the time between starting the Pod and starting the `rabbitmq` container. RabbitMQ relies on up-to-date DNS entries early during peer discovery. The purpose of this artificial delay is to ensure that DNS entries are up-to-date when booting RabbitMQ. For more information, see https://github.com/kubernetes/kubernetes/issues/92559 If your Kubernetes DNS backend is configured with a low DNS cache value or publishes not ready addresses promptly, you can decrase this value or set it to 0.", - "type": "integer", - "format": "int32", - "minimum": 0 - }, - "image": { - "description": "Image is the name of the RabbitMQ docker image to use for RabbitMQ nodes in the RabbitmqCluster. Must be provided together with ImagePullSecrets in order to use an image in a private registry.", - "type": "string" - }, - "imagePullSecrets": { - "description": "List of Secret resource containing access credentials to the registry for the RabbitMQ image. Required if the docker registry is private.", - "type": "array", - "items": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", - "type": "string" - } - }, - "x-kubernetes-map-type": "atomic" - } - }, - "override": { - "type": "object", - "properties": { - "service": { - "type": "object", - "properties": { - "metadata": { - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "spec": { - "type": "object", - "properties": { - "allocateLoadBalancerNodePorts": { - "type": "boolean" - }, - "clusterIP": { - "type": "string" - }, - "clusterIPs": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalName": { - "type": "string" - }, - "externalTrafficPolicy": { - "type": "string" - }, - "healthCheckNodePort": { - "type": "integer", - "format": "int32" - }, - "internalTrafficPolicy": { - "type": "string" - }, - "ipFamilies": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "ipFamilyPolicy": { - "type": "string" - }, - "loadBalancerClass": { - "type": "string" - }, - "loadBalancerIP": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - }, - "ports": { - "type": "array", - "items": { + "subresources": { + "status": {} + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "bindings", + "singular": "binding", + "kind": "Binding", + "listKind": "BindingList", + "categories": [ + "rabbitmq" + ] + }, + "storedVersions": [ + "v1beta1" + ] + } + }, + "short": "Binding", + "apiGroup": "rabbitmq.com", + "apiKind": "Binding", + "apiVersion": "v1beta1", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "rabbitmq", + "sub": "rabbitmq", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "com.rabbitmq.v1beta1.Exchange", + "definition": { + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "spec": { + "description": "ExchangeSpec defines the desired state of Exchange", + "type": "object", + "required": [ + "name", + "rabbitmqClusterReference" + ], + "properties": { + "arguments": { + "x-kubernetes-preserve-unknown-fields": true + }, + "autoDelete": { + "description": "Cannot be updated", + "type": "boolean" + }, + "durable": { + "description": "Cannot be updated", + "type": "boolean" + }, + "name": { + "description": "Required property; cannot be updated", + "type": "string" + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that the exchange will be created in.\nRequired property.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "type": { + "description": "Cannot be updated", + "type": "string" + }, + "vhost": { + "description": "Default to vhost '/'; cannot be updated", + "type": "string" + } + } + }, + "status": { + "description": "ExchangeStatus defines the observed state of Exchange", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this Exchange. It corresponds to the\nExchange's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + }, + "description": "Exchange is the Schema for the exchanges API", + "type": "object", + "x-kubernetes-group-version-kind": [ + { + "group": "rabbitmq.com", + "kind": "Exchange", + "version": "v1beta1" + } + ] + }, + "crd": { + "metadata": { + "name": "exchanges.rabbitmq.com" + }, + "spec": { + "group": "rabbitmq.com", + "names": { + "plural": "exchanges", + "singular": "exchange", + "kind": "Exchange", + "listKind": "ExchangeList", + "categories": [ + "rabbitmq" + ] + }, + "scope": "Namespaced", + "versions": [ + { + "name": "v1beta1", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "Exchange is the Schema for the exchanges API", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "ExchangeSpec defines the desired state of Exchange", + "type": "object", + "required": [ + "name", + "rabbitmqClusterReference" + ], + "properties": { + "arguments": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "autoDelete": { + "description": "Cannot be updated", + "type": "boolean" + }, + "durable": { + "description": "Cannot be updated", + "type": "boolean" + }, + "name": { + "description": "Required property; cannot be updated", + "type": "string" + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that the exchange will be created in.\nRequired property.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", "type": "object", - "required": [ - "port" - ], "properties": { - "appProtocol": { - "type": "string" - }, "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", "type": "string" - }, - "nodePort": { - "type": "integer", - "format": "int32" - }, - "port": { - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - }, - "targetPort": { - "x-kubernetes-int-or-string": true } - } + }, + "x-kubernetes-map-type": "atomic" }, - "x-kubernetes-list-map-keys": [ - "port", - "protocol" - ], - "x-kubernetes-list-type": "map" - }, - "publishNotReadyAddresses": { - "type": "boolean" - }, - "selector": { - "type": "object", - "additionalProperties": { + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", "type": "string" }, - "x-kubernetes-map-type": "atomic" - }, - "sessionAffinity": { - "type": "string" - }, - "sessionAffinityConfig": { - "type": "object", - "properties": { - "clientIP": { - "type": "object", - "properties": { - "timeoutSeconds": { - "type": "integer", - "format": "int32" - } - } - } - } - }, - "type": { - "type": "string" - } - } - } - } - }, - "statefulSet": { - "type": "object", - "properties": { - "metadata": { - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", "type": "string" } } + }, + "type": { + "description": "Cannot be updated", + "type": "string", + "default": "direct" + }, + "vhost": { + "description": "Default to vhost '/'; cannot be updated", + "type": "string", + "default": "/" } - }, - "spec": { - "type": "object", - "properties": { - "minReadySeconds": { - "type": "integer", - "format": "int32" - }, - "persistentVolumeClaimRetentionPolicy": { + } + }, + "status": { + "description": "ExchangeStatus defines the observed state of Exchange", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { "type": "object", + "required": [ + "status", + "type" + ], "properties": { - "whenDeleted": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", "type": "string" }, - "whenScaled": { + "reason": { + "description": "One word, camel-case reason for current status of the condition.", "type": "string" - } - } - }, - "podManagementPolicy": { - "type": "string" - }, - "replicas": { - "type": "integer", - "format": "int32" - }, - "selector": { - "type": "object", - "properties": { - "matchExpressions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "type": "string" - }, - "operator": { - "type": "string" - }, - "values": { - "type": "array", - "items": { - "type": "string" - } - } - } - } }, - "matchLabels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - }, - "x-kubernetes-map-type": "atomic" - }, - "serviceName": { - "type": "string" - }, - "template": { - "type": "object", - "properties": { - "metadata": { - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - } - } + "status": { + "description": "True, False, or Unknown", + "type": "string" }, - "spec": { - "type": "object", - "required": [ - "containers" - ], - "properties": { - "activeDeadlineSeconds": { - "type": "integer", - "format": "int64" - }, - "affinity": { - "type": "object", - "properties": { - "nodeAffinity": { - "type": "object", - "properties": { - "preferredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "type": "object", - "required": [ - "preference", - "weight" - ], - "properties": { - "preference": { - "type": "object", - "properties": { - "matchExpressions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "type": "string" - }, - "operator": { - "type": "string" - }, - "values": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "matchFields": { - "type": "array", - "items": { - "type": "object", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "type": "string" - }, - "operator": { - "type": "string" - }, - "values": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "x-kubernetes-map-type": "atomic" - }, - "weight": { - "type": "integer", - "format": "int32" - } - } - } - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "type": "object", - "required": [ - "nodeSelectorTerms" + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this Exchange. It corresponds to the\nExchange's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + } + } + }, + "subresources": { + "status": {} + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "exchanges", + "singular": "exchange", + "kind": "Exchange", + "listKind": "ExchangeList", + "categories": [ + "rabbitmq" + ] + }, + "storedVersions": [ + "v1beta1" + ] + } + }, + "short": "Exchange", + "apiGroup": "rabbitmq.com", + "apiKind": "Exchange", + "apiVersion": "v1beta1", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "rabbitmq", + "sub": "rabbitmq", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "com.rabbitmq.v1beta1.Federation", + "definition": { + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "spec": { + "description": "FederationSpec defines the desired state of Federation\nFor how to configure federation upstreams, see: https://www.rabbitmq.com/federation-reference.html.", + "type": "object", + "required": [ + "name", + "rabbitmqClusterReference", + "uriSecret" + ], + "properties": { + "ackMode": { + "type": "string", + "enum": [ + "on-confirm", + "on-publish", + "no-ack" + ] + }, + "exchange": { + "type": "string" + }, + "expires": { + "type": "integer" + }, + "maxHops": { + "type": "integer" + }, + "messageTTL": { + "type": "integer" + }, + "name": { + "description": "Required property; cannot be updated", + "type": "string" + }, + "prefetch-count": { + "type": "integer" + }, + "queue": { + "type": "string" + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that this federation upstream will be created in.\nRequired property.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "reconnectDelay": { + "type": "integer" + }, + "trustUserId": { + "type": "boolean" + }, + "uriSecret": { + "description": "Secret contains the AMQP URI(s) for the upstream.\nThe Secret must contain the key `uri` or operator will error.\n`uri` should be one or multiple uris separated by ','.\nRequired property.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "vhost": { + "description": "Default to vhost '/'; cannot be updated", + "type": "string" + } + } + }, + "status": { + "description": "FederationStatus defines the observed state of Federation", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this Federation. It corresponds to the\nFederation's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + }, + "description": "Federation is the Schema for the federations API", + "type": "object", + "x-kubernetes-group-version-kind": [ + { + "group": "rabbitmq.com", + "kind": "Federation", + "version": "v1beta1" + } + ] + }, + "crd": { + "metadata": { + "name": "federations.rabbitmq.com" + }, + "spec": { + "group": "rabbitmq.com", + "names": { + "plural": "federations", + "singular": "federation", + "kind": "Federation", + "listKind": "FederationList", + "categories": [ + "rabbitmq" + ] + }, + "scope": "Namespaced", + "versions": [ + { + "name": "v1beta1", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "Federation is the Schema for the federations API", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "FederationSpec defines the desired state of Federation\nFor how to configure federation upstreams, see: https://www.rabbitmq.com/federation-reference.html.", + "type": "object", + "required": [ + "name", + "rabbitmqClusterReference", + "uriSecret" + ], + "properties": { + "ackMode": { + "type": "string", + "enum": [ + "on-confirm", + "on-publish", + "no-ack" + ] + }, + "exchange": { + "type": "string" + }, + "expires": { + "type": "integer" + }, + "maxHops": { + "type": "integer" + }, + "messageTTL": { + "type": "integer" + }, + "name": { + "description": "Required property; cannot be updated", + "type": "string" + }, + "prefetch-count": { + "type": "integer" + }, + "queue": { + "type": "string" + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that this federation upstream will be created in.\nRequired property.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "reconnectDelay": { + "type": "integer" + }, + "trustUserId": { + "type": "boolean" + }, + "uriSecret": { + "description": "Secret contains the AMQP URI(s) for the upstream.\nThe Secret must contain the key `uri` or operator will error.\n`uri` should be one or multiple uris separated by ','.\nRequired property.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "vhost": { + "description": "Default to vhost '/'; cannot be updated", + "type": "string", + "default": "/" + } + } + }, + "status": { + "description": "FederationStatus defines the observed state of Federation", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this Federation. It corresponds to the\nFederation's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + } + } + }, + "subresources": { + "status": {} + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "federations", + "singular": "federation", + "kind": "Federation", + "listKind": "FederationList", + "categories": [ + "rabbitmq" + ] + }, + "storedVersions": [ + "v1beta1" + ] + } + }, + "short": "Federation", + "apiGroup": "rabbitmq.com", + "apiKind": "Federation", + "apiVersion": "v1beta1", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "rabbitmq", + "sub": "rabbitmq", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "com.rabbitmq.v1beta1.OperatorPolicy", + "definition": { + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "spec": { + "description": "OperatorPolicySpec defines the desired state of OperatorPolicy\nhttps://www.rabbitmq.com/parameters.html#operator-policies", + "type": "object", + "required": [ + "definition", + "name", + "pattern", + "rabbitmqClusterReference" + ], + "properties": { + "applyTo": { + "description": "What this operator policy applies to: 'queues', 'classic_queues', 'quorum_queues', 'streams'.\nDefault to 'queues'.", + "type": "string", + "enum": [ + "queues", + "classic_queues", + "quorum_queues", + "streams" + ] + }, + "definition": { + "description": "OperatorPolicy definition. Required property.", + "x-kubernetes-preserve-unknown-fields": true + }, + "name": { + "description": "Required property; cannot be updated", + "type": "string" + }, + "pattern": { + "description": "Regular expression pattern used to match queues, e.g. \"^my-queue$\".\nRequired property.", + "type": "string" + }, + "priority": { + "description": "Default to '0'.\nIn the event that more than one operator policy can match a given queue, the operator policy with the greatest priority applies.", + "type": "integer" + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that the operator policy will be created in.\nRequired property.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "vhost": { + "description": "Default to vhost '/'; cannot be updated", + "type": "string" + } + } + }, + "status": { + "description": "OperatorPolicyStatus defines the observed state of OperatorPolicy", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this OperatorPolicy. It corresponds to the\nOperatorPolicy's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + }, + "description": "OperatorPolicy is the Schema for the operator policies API", + "type": "object", + "x-kubernetes-group-version-kind": [ + { + "group": "rabbitmq.com", + "kind": "OperatorPolicy", + "version": "v1beta1" + } + ] + }, + "crd": { + "metadata": { + "name": "operatorpolicies.rabbitmq.com" + }, + "spec": { + "group": "rabbitmq.com", + "names": { + "plural": "operatorpolicies", + "singular": "operatorpolicy", + "kind": "OperatorPolicy", + "listKind": "OperatorPolicyList", + "categories": [ + "rabbitmq" + ] + }, + "scope": "Namespaced", + "versions": [ + { + "name": "v1beta1", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "OperatorPolicy is the Schema for the operator policies API", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "OperatorPolicySpec defines the desired state of OperatorPolicy\nhttps://www.rabbitmq.com/parameters.html#operator-policies", + "type": "object", + "required": [ + "definition", + "name", + "pattern", + "rabbitmqClusterReference" + ], + "properties": { + "applyTo": { + "description": "What this operator policy applies to: 'queues', 'classic_queues', 'quorum_queues', 'streams'.\nDefault to 'queues'.", + "type": "string", + "default": "queues", + "enum": [ + "queues", + "classic_queues", + "quorum_queues", + "streams" + ] + }, + "definition": { + "description": "OperatorPolicy definition. Required property.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "name": { + "description": "Required property; cannot be updated", + "type": "string" + }, + "pattern": { + "description": "Regular expression pattern used to match queues, e.g. \"^my-queue$\".\nRequired property.", + "type": "string" + }, + "priority": { + "description": "Default to '0'.\nIn the event that more than one operator policy can match a given queue, the operator policy with the greatest priority applies.", + "type": "integer", + "default": 0 + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that the operator policy will be created in.\nRequired property.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "vhost": { + "description": "Default to vhost '/'; cannot be updated", + "type": "string", + "default": "/" + } + } + }, + "status": { + "description": "OperatorPolicyStatus defines the observed state of OperatorPolicy", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this OperatorPolicy. It corresponds to the\nOperatorPolicy's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + } + } + }, + "subresources": { + "status": {} + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "operatorpolicies", + "singular": "operatorpolicy", + "kind": "OperatorPolicy", + "listKind": "OperatorPolicyList", + "categories": [ + "rabbitmq" + ] + }, + "storedVersions": [ + "v1beta1" + ] + } + }, + "short": "OperatorPolicy", + "apiGroup": "rabbitmq.com", + "apiKind": "OperatorPolicy", + "apiVersion": "v1beta1", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "rabbitmq", + "sub": "rabbitmq", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "com.rabbitmq.v1beta1.Permission", + "definition": { + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "spec": { + "description": "PermissionSpec defines the desired state of Permission", + "type": "object", + "required": [ + "permissions", + "rabbitmqClusterReference", + "vhost" + ], + "properties": { + "permissions": { + "description": "Permissions to grant to the user in the specific vhost; required property.\nSee RabbitMQ doc for more information: https://www.rabbitmq.com/access-control.html#user-management", + "type": "object", + "properties": { + "configure": { + "type": "string" + }, + "read": { + "type": "string" + }, + "write": { + "type": "string" + } + } + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that both the provided user and vhost are.\nRequired property.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "user": { + "description": "Name of an existing user; must provide user or userReference, else create/update will fail; cannot be updated", + "type": "string" + }, + "userReference": { + "description": "Reference to an existing user.rabbitmq.com object; must provide user or userReference, else create/update will fail; cannot be updated", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "vhost": { + "description": "Name of an existing vhost; required property; cannot be updated", + "type": "string" + } + } + }, + "status": { + "description": "PermissionStatus defines the observed state of Permission", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this Permission. It corresponds to the\nPermission's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + }, + "description": "Permission is the Schema for the permissions API", + "type": "object", + "x-kubernetes-group-version-kind": [ + { + "group": "rabbitmq.com", + "kind": "Permission", + "version": "v1beta1" + } + ] + }, + "crd": { + "metadata": { + "name": "permissions.rabbitmq.com" + }, + "spec": { + "group": "rabbitmq.com", + "names": { + "plural": "permissions", + "singular": "permission", + "kind": "Permission", + "listKind": "PermissionList", + "categories": [ + "rabbitmq" + ] + }, + "scope": "Namespaced", + "versions": [ + { + "name": "v1beta1", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "Permission is the Schema for the permissions API", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "PermissionSpec defines the desired state of Permission", + "type": "object", + "required": [ + "permissions", + "rabbitmqClusterReference", + "vhost" + ], + "properties": { + "permissions": { + "description": "Permissions to grant to the user in the specific vhost; required property.\nSee RabbitMQ doc for more information: https://www.rabbitmq.com/access-control.html#user-management", + "type": "object", + "properties": { + "configure": { + "type": "string" + }, + "read": { + "type": "string" + }, + "write": { + "type": "string" + } + } + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that both the provided user and vhost are.\nRequired property.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "user": { + "description": "Name of an existing user; must provide user or userReference, else create/update will fail; cannot be updated", + "type": "string" + }, + "userReference": { + "description": "Reference to an existing user.rabbitmq.com object; must provide user or userReference, else create/update will fail; cannot be updated", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "vhost": { + "description": "Name of an existing vhost; required property; cannot be updated", + "type": "string" + } + } + }, + "status": { + "description": "PermissionStatus defines the observed state of Permission", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this Permission. It corresponds to the\nPermission's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + } + } + }, + "subresources": { + "status": {} + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "permissions", + "singular": "permission", + "kind": "Permission", + "listKind": "PermissionList", + "categories": [ + "rabbitmq" + ] + }, + "storedVersions": [ + "v1beta1" + ] + } + }, + "short": "Permission", + "apiGroup": "rabbitmq.com", + "apiKind": "Permission", + "apiVersion": "v1beta1", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "rabbitmq", + "sub": "rabbitmq", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "com.rabbitmq.v1beta1.Policy", + "definition": { + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "spec": { + "description": "PolicySpec defines the desired state of Policy\nhttps://www.rabbitmq.com/parameters.html#policies", + "type": "object", + "required": [ + "definition", + "name", + "pattern", + "rabbitmqClusterReference" + ], + "properties": { + "applyTo": { + "description": "What this policy applies to: 'queues', 'classic_queues', 'quorum_queues', 'streams', 'exchanges', or 'all'.\nDefault to 'all'.", + "type": "string", + "enum": [ + "queues", + "classic_queues", + "quorum_queues", + "streams", + "exchanges", + "all" + ] + }, + "definition": { + "description": "Policy definition. Required property.", + "x-kubernetes-preserve-unknown-fields": true + }, + "name": { + "description": "Required property; cannot be updated", + "type": "string" + }, + "pattern": { + "description": "Regular expression pattern used to match queues and exchanges, e.g. \"^amq.\".\nRequired property.", + "type": "string" + }, + "priority": { + "description": "Default to '0'.\nIn the event that more than one policy can match a given exchange or queue, the policy with the greatest priority applies.", + "type": "integer" + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that the policy will be created in.\nRequired property.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "vhost": { + "description": "Default to vhost '/'; cannot be updated", + "type": "string" + } + } + }, + "status": { + "description": "PolicyStatus defines the observed state of Policy", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this Policy. It corresponds to the\nPolicy's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + }, + "description": "Policy is the Schema for the policies API", + "type": "object", + "x-kubernetes-group-version-kind": [ + { + "group": "rabbitmq.com", + "kind": "Policy", + "version": "v1beta1" + } + ] + }, + "crd": { + "metadata": { + "name": "policies.rabbitmq.com" + }, + "spec": { + "group": "rabbitmq.com", + "names": { + "plural": "policies", + "singular": "policy", + "kind": "Policy", + "listKind": "PolicyList", + "categories": [ + "rabbitmq" + ] + }, + "scope": "Namespaced", + "versions": [ + { + "name": "v1beta1", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "Policy is the Schema for the policies API", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "PolicySpec defines the desired state of Policy\nhttps://www.rabbitmq.com/parameters.html#policies", + "type": "object", + "required": [ + "definition", + "name", + "pattern", + "rabbitmqClusterReference" + ], + "properties": { + "applyTo": { + "description": "What this policy applies to: 'queues', 'classic_queues', 'quorum_queues', 'streams', 'exchanges', or 'all'.\nDefault to 'all'.", + "type": "string", + "default": "all", + "enum": [ + "queues", + "classic_queues", + "quorum_queues", + "streams", + "exchanges", + "all" + ] + }, + "definition": { + "description": "Policy definition. Required property.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "name": { + "description": "Required property; cannot be updated", + "type": "string" + }, + "pattern": { + "description": "Regular expression pattern used to match queues and exchanges, e.g. \"^amq.\".\nRequired property.", + "type": "string" + }, + "priority": { + "description": "Default to '0'.\nIn the event that more than one policy can match a given exchange or queue, the policy with the greatest priority applies.", + "type": "integer", + "default": 0 + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that the policy will be created in.\nRequired property.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "vhost": { + "description": "Default to vhost '/'; cannot be updated", + "type": "string", + "default": "/" + } + } + }, + "status": { + "description": "PolicyStatus defines the observed state of Policy", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this Policy. It corresponds to the\nPolicy's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + } + } + }, + "subresources": { + "status": {} + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "policies", + "singular": "policy", + "kind": "Policy", + "listKind": "PolicyList", + "categories": [ + "rabbitmq" + ] + }, + "storedVersions": [ + "v1beta1" + ] + } + }, + "short": "Policy", + "apiGroup": "rabbitmq.com", + "apiKind": "Policy", + "apiVersion": "v1beta1", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "rabbitmq", + "sub": "rabbitmq", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "com.rabbitmq.v1beta1.Queue", + "definition": { + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "spec": { + "description": "QueueSpec defines the desired state of Queue", + "type": "object", + "required": [ + "name", + "rabbitmqClusterReference" + ], + "properties": { + "arguments": { + "description": "Queue arguments in the format of KEY: VALUE. e.g. x-delivery-limit: 10000.\nConfiguring queues through arguments is not recommended because they cannot be updated once set; we recommend configuring queues through policies instead.", + "x-kubernetes-preserve-unknown-fields": true + }, + "autoDelete": { + "description": "when set to true, queues that have had at least one consumer before are deleted after the last consumer unsubscribes.", + "type": "boolean" + }, + "deleteIfEmpty": { + "description": "when set to true, queues are deleted only if empty.", + "type": "boolean" + }, + "deleteIfUnused": { + "description": "when set to true, queues are delete only if they have no consumer.", + "type": "boolean" + }, + "durable": { + "description": "When set to false queues does not survive server restart.", + "type": "boolean" + }, + "name": { + "description": "Name of the queue; required property.", + "type": "string" + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that the queue will be created in.\nRequired property.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "type": { + "type": "string" + }, + "vhost": { + "description": "Default to vhost '/'", + "type": "string" + } + } + }, + "status": { + "description": "QueueStatus defines the observed state of Queue", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this Queue. It corresponds to the\nQueue's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + }, + "description": "Queue is the Schema for the queues API", + "type": "object", + "x-kubernetes-group-version-kind": [ + { + "group": "rabbitmq.com", + "kind": "Queue", + "version": "v1beta1" + } + ] + }, + "crd": { + "metadata": { + "name": "queues.rabbitmq.com" + }, + "spec": { + "group": "rabbitmq.com", + "names": { + "plural": "queues", + "singular": "queue", + "kind": "Queue", + "listKind": "QueueList", + "categories": [ + "rabbitmq" + ] + }, + "scope": "Namespaced", + "versions": [ + { + "name": "v1beta1", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "Queue is the Schema for the queues API", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "QueueSpec defines the desired state of Queue", + "type": "object", + "required": [ + "name", + "rabbitmqClusterReference" + ], + "properties": { + "arguments": { + "description": "Queue arguments in the format of KEY: VALUE. e.g. x-delivery-limit: 10000.\nConfiguring queues through arguments is not recommended because they cannot be updated once set; we recommend configuring queues through policies instead.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "autoDelete": { + "description": "when set to true, queues that have had at least one consumer before are deleted after the last consumer unsubscribes.", + "type": "boolean" + }, + "deleteIfEmpty": { + "description": "when set to true, queues are deleted only if empty.", + "type": "boolean" + }, + "deleteIfUnused": { + "description": "when set to true, queues are delete only if they have no consumer.", + "type": "boolean" + }, + "durable": { + "description": "When set to false queues does not survive server restart.", + "type": "boolean" + }, + "name": { + "description": "Name of the queue; required property.", + "type": "string" + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that the queue will be created in.\nRequired property.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "type": { + "type": "string" + }, + "vhost": { + "description": "Default to vhost '/'", + "type": "string", + "default": "/" + } + } + }, + "status": { + "description": "QueueStatus defines the observed state of Queue", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this Queue. It corresponds to the\nQueue's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + } + } + }, + "subresources": { + "status": {} + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "queues", + "singular": "queue", + "kind": "Queue", + "listKind": "QueueList", + "categories": [ + "rabbitmq" + ] + }, + "storedVersions": [ + "v1beta1" + ] + } + }, + "short": "Queue", + "apiGroup": "rabbitmq.com", + "apiKind": "Queue", + "apiVersion": "v1beta1", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "rabbitmq", + "sub": "rabbitmq", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "com.rabbitmq.v1beta1.RabbitmqCluster", + "definition": { + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "spec": { + "description": "Spec is the desired state of the RabbitmqCluster Custom Resource.", + "type": "object", + "properties": { + "affinity": { + "description": "Affinity scheduling rules to be applied on created Pods.", + "type": "object", + "properties": { + "nodeAffinity": { + "description": "Describes node affinity scheduling rules for the pod.", + "type": "object", + "properties": { + "preferredDuringSchedulingIgnoredDuringExecution": { + "description": "The scheduler will prefer to schedule pods to nodes that satisfy\nthe affinity expressions specified by this field, but it may choose\na node that violates one or more of the expressions. The node that is\nmost preferred is the one with the greatest sum of weights, i.e.\nfor each node that meets all of the scheduling requirements (resource\nrequest, requiredDuringScheduling affinity expressions, etc.),\ncompute a sum by iterating through the elements of this field and adding\n\"weight\" to the sum if the node matches the corresponding matchExpressions; the\nnode(s) with the highest sum are the most preferred.", + "type": "array", + "items": { + "description": "An empty preferred scheduling term matches all objects with implicit weight 0\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).", + "type": "object", + "required": [ + "preference", + "weight" + ], + "properties": { + "preference": { + "description": "A node selector term, associated with the corresponding weight.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "A list of node selector requirements by node's labels.", + "type": "array", + "items": { + "description": "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values.", + "type": "object", + "required": [ + "key", + "operator" + ], + "properties": { + "key": { + "description": "The label key that the selector applies to.", + "type": "string" + }, + "operator": { + "description": "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", + "type": "string" + }, + "values": { + "description": "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchFields": { + "description": "A list of node selector requirements by node's fields.", + "type": "array", + "items": { + "description": "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values.", + "type": "object", + "required": [ + "key", + "operator" + ], + "properties": { + "key": { + "description": "The label key that the selector applies to.", + "type": "string" + }, + "operator": { + "description": "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", + "type": "string" + }, + "values": { + "description": "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "x-kubernetes-map-type": "atomic" + }, + "weight": { + "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", + "type": "integer", + "format": "int32" + } + } + } + }, + "requiredDuringSchedulingIgnoredDuringExecution": { + "description": "If the affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to an update), the system\nmay or may not try to eventually evict the pod from its node.", + "type": "object", + "required": [ + "nodeSelectorTerms" + ], + "properties": { + "nodeSelectorTerms": { + "description": "Required. A list of node selector terms. The terms are ORed.", + "type": "array", + "items": { + "description": "A null or empty node selector term matches no objects. The requirements of\nthem are ANDed.\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "A list of node selector requirements by node's labels.", + "type": "array", + "items": { + "description": "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values.", + "type": "object", + "required": [ + "key", + "operator" + ], + "properties": { + "key": { + "description": "The label key that the selector applies to.", + "type": "string" + }, + "operator": { + "description": "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", + "type": "string" + }, + "values": { + "description": "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchFields": { + "description": "A list of node selector requirements by node's fields.", + "type": "array", + "items": { + "description": "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values.", + "type": "object", + "required": [ + "key", + "operator" + ], + "properties": { + "key": { + "description": "The label key that the selector applies to.", + "type": "string" + }, + "operator": { + "description": "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", + "type": "string" + }, + "values": { + "description": "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "x-kubernetes-map-type": "atomic" + } + } + }, + "x-kubernetes-map-type": "atomic" + } + } + }, + "podAffinity": { + "description": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).", + "type": "object", + "properties": { + "preferredDuringSchedulingIgnoredDuringExecution": { + "description": "The scheduler will prefer to schedule pods to nodes that satisfy\nthe affinity expressions specified by this field, but it may choose\na node that violates one or more of the expressions. The node that is\nmost preferred is the one with the greatest sum of weights, i.e.\nfor each node that meets all of the scheduling requirements (resource\nrequest, requiredDuringScheduling affinity expressions, etc.),\ncompute a sum by iterating through the elements of this field and adding\n\"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\nnode(s) with the highest sum are the most preferred.", + "type": "array", + "items": { + "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", + "type": "object", + "required": [ + "podAffinityTerm", + "weight" + ], + "properties": { + "podAffinityTerm": { + "description": "Required. A pod affinity term, associated with the corresponding weight.", + "type": "object", + "required": [ + "topologyKey" + ], + "properties": { + "labelSelector": { + "description": "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "type": "array", + "items": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", + "type": "object", + "required": [ + "key", + "operator" + ], + "properties": { + "key": { + "description": "key is the label key that the selector applies to.", + "type": "string" + }, + "operator": { + "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", + "type": "string" + }, + "values": { + "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchLabels": { + "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "x-kubernetes-map-type": "atomic" + }, + "matchLabelKeys": { + "description": "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "mismatchLabelKeys": { + "description": "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "namespaceSelector": { + "description": "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "type": "array", + "items": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", + "type": "object", + "required": [ + "key", + "operator" + ], + "properties": { + "key": { + "description": "key is the label key that the selector applies to.", + "type": "string" + }, + "operator": { + "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", + "type": "string" + }, + "values": { + "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchLabels": { + "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "x-kubernetes-map-type": "atomic" + }, + "namespaces": { + "description": "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\".", + "type": "array", + "items": { + "type": "string" + } + }, + "topologyKey": { + "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed.", + "type": "string" + } + } + }, + "weight": { + "description": "weight associated with matching the corresponding podAffinityTerm,\nin the range 1-100.", + "type": "integer", + "format": "int32" + } + } + } + }, + "requiredDuringSchedulingIgnoredDuringExecution": { + "description": "If the affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to a pod label update), the\nsystem may or may not try to eventually evict the pod from its node.\nWhen there are multiple elements, the lists of nodes corresponding to each\npodAffinityTerm are intersected, i.e. all terms must be satisfied.", + "type": "array", + "items": { + "description": "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running", + "type": "object", + "required": [ + "topologyKey" + ], + "properties": { + "labelSelector": { + "description": "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "type": "array", + "items": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", + "type": "object", + "required": [ + "key", + "operator" + ], + "properties": { + "key": { + "description": "key is the label key that the selector applies to.", + "type": "string" + }, + "operator": { + "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", + "type": "string" + }, + "values": { + "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchLabels": { + "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "x-kubernetes-map-type": "atomic" + }, + "matchLabelKeys": { + "description": "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "mismatchLabelKeys": { + "description": "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "namespaceSelector": { + "description": "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "type": "array", + "items": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", + "type": "object", + "required": [ + "key", + "operator" + ], + "properties": { + "key": { + "description": "key is the label key that the selector applies to.", + "type": "string" + }, + "operator": { + "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", + "type": "string" + }, + "values": { + "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchLabels": { + "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "x-kubernetes-map-type": "atomic" + }, + "namespaces": { + "description": "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\".", + "type": "array", + "items": { + "type": "string" + } + }, + "topologyKey": { + "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed.", + "type": "string" + } + } + } + } + } + }, + "podAntiAffinity": { + "description": "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).", + "type": "object", + "properties": { + "preferredDuringSchedulingIgnoredDuringExecution": { + "description": "The scheduler will prefer to schedule pods to nodes that satisfy\nthe anti-affinity expressions specified by this field, but it may choose\na node that violates one or more of the expressions. The node that is\nmost preferred is the one with the greatest sum of weights, i.e.\nfor each node that meets all of the scheduling requirements (resource\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\ncompute a sum by iterating through the elements of this field and adding\n\"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\nnode(s) with the highest sum are the most preferred.", + "type": "array", + "items": { + "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", + "type": "object", + "required": [ + "podAffinityTerm", + "weight" + ], + "properties": { + "podAffinityTerm": { + "description": "Required. A pod affinity term, associated with the corresponding weight.", + "type": "object", + "required": [ + "topologyKey" + ], + "properties": { + "labelSelector": { + "description": "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "type": "array", + "items": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", + "type": "object", + "required": [ + "key", + "operator" + ], + "properties": { + "key": { + "description": "key is the label key that the selector applies to.", + "type": "string" + }, + "operator": { + "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", + "type": "string" + }, + "values": { + "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchLabels": { + "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "x-kubernetes-map-type": "atomic" + }, + "matchLabelKeys": { + "description": "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "mismatchLabelKeys": { + "description": "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "namespaceSelector": { + "description": "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "type": "array", + "items": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", + "type": "object", + "required": [ + "key", + "operator" + ], + "properties": { + "key": { + "description": "key is the label key that the selector applies to.", + "type": "string" + }, + "operator": { + "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", + "type": "string" + }, + "values": { + "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchLabels": { + "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "x-kubernetes-map-type": "atomic" + }, + "namespaces": { + "description": "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\".", + "type": "array", + "items": { + "type": "string" + } + }, + "topologyKey": { + "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed.", + "type": "string" + } + } + }, + "weight": { + "description": "weight associated with matching the corresponding podAffinityTerm,\nin the range 1-100.", + "type": "integer", + "format": "int32" + } + } + } + }, + "requiredDuringSchedulingIgnoredDuringExecution": { + "description": "If the anti-affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the anti-affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to a pod label update), the\nsystem may or may not try to eventually evict the pod from its node.\nWhen there are multiple elements, the lists of nodes corresponding to each\npodAffinityTerm are intersected, i.e. all terms must be satisfied.", + "type": "array", + "items": { + "description": "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running", + "type": "object", + "required": [ + "topologyKey" + ], + "properties": { + "labelSelector": { + "description": "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "type": "array", + "items": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", + "type": "object", + "required": [ + "key", + "operator" + ], + "properties": { + "key": { + "description": "key is the label key that the selector applies to.", + "type": "string" + }, + "operator": { + "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", + "type": "string" + }, + "values": { + "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchLabels": { + "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "x-kubernetes-map-type": "atomic" + }, + "matchLabelKeys": { + "description": "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "mismatchLabelKeys": { + "description": "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "namespaceSelector": { + "description": "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "type": "array", + "items": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", + "type": "object", + "required": [ + "key", + "operator" + ], + "properties": { + "key": { + "description": "key is the label key that the selector applies to.", + "type": "string" + }, + "operator": { + "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", + "type": "string" + }, + "values": { + "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchLabels": { + "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "x-kubernetes-map-type": "atomic" + }, + "namespaces": { + "description": "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\".", + "type": "array", + "items": { + "type": "string" + } + }, + "topologyKey": { + "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed.", + "type": "string" + } + } + } + } + } + } + } + }, + "delayStartSeconds": { + "description": "DelayStartSeconds is the time the init container (`setup-container`) will sleep before terminating.\nThis effectively delays the time between starting the Pod and starting the `rabbitmq` container.\nRabbitMQ relies on up-to-date DNS entries early during peer discovery.\nThe purpose of this artificial delay is to ensure that DNS entries are up-to-date when booting RabbitMQ.\nFor more information, see https://github.com/kubernetes/kubernetes/issues/92559\nIf your Kubernetes DNS backend is configured with a low DNS cache value or publishes not ready addresses\npromptly, you can decrase this value or set it to 0.", + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "image": { + "description": "Image is the name of the RabbitMQ docker image to use for RabbitMQ nodes in the RabbitmqCluster.\nMust be provided together with ImagePullSecrets in order to use an image in a private registry.", + "type": "string" + }, + "imagePullSecrets": { + "description": "List of Secret resource containing access credentials to the registry for the RabbitMQ image. Required if the docker registry is private.", + "type": "array", + "items": { + "description": "LocalObjectReference contains enough information to let you locate the\nreferenced object inside the same namespace.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + } + }, + "override": { + "type": "object", + "properties": { + "service": { + "type": "object", + "properties": { + "metadata": { + "type": "object", + "properties": { + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "spec": { + "type": "object", + "properties": { + "allocateLoadBalancerNodePorts": { + "type": "boolean" + }, + "clusterIP": { + "type": "string" + }, + "clusterIPs": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "externalIPs": { + "type": "array", + "items": { + "type": "string" + } + }, + "externalName": { + "type": "string" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "healthCheckNodePort": { + "type": "integer", + "format": "int32" + }, + "internalTrafficPolicy": { + "type": "string" + }, + "ipFamilies": { + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "loadBalancerClass": { + "type": "string" + }, + "loadBalancerIP": { + "type": "string" + }, + "loadBalancerSourceRanges": { + "type": "array", + "items": { + "type": "string" + } + }, + "ports": { + "type": "array", + "items": { + "type": "object", + "required": [ + "port" + ], + "properties": { + "appProtocol": { + "type": "string" + }, + "name": { + "type": "string" + }, + "nodePort": { + "type": "integer", + "format": "int32" + }, + "port": { + "type": "integer", + "format": "int32" + }, + "protocol": { + "type": "string" + }, + "targetPort": { + "x-kubernetes-int-or-string": true + } + } + }, + "x-kubernetes-list-map-keys": [ + "port", + "protocol" + ], + "x-kubernetes-list-type": "map" + }, + "publishNotReadyAddresses": { + "type": "boolean" + }, + "selector": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-kubernetes-map-type": "atomic" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "type": "object", + "properties": { + "clientIP": { + "type": "object", + "properties": { + "timeoutSeconds": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "type": { + "type": "string" + } + } + } + } + }, + "statefulSet": { + "type": "object", + "properties": { + "metadata": { + "type": "object", + "properties": { + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "spec": { + "type": "object", + "properties": { + "minReadySeconds": { + "type": "integer", + "format": "int32" + }, + "persistentVolumeClaimRetentionPolicy": { + "type": "object", + "properties": { + "whenDeleted": { + "type": "string" + }, + "whenScaled": { + "type": "string" + } + } + }, + "podManagementPolicy": { + "type": "string" + }, + "replicas": { + "type": "integer", + "format": "int32" + }, + "selector": { + "type": "object", + "properties": { + "matchExpressions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "key", + "operator" + ], + "properties": { + "key": { + "type": "string" + }, + "operator": { + "type": "string" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchLabels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "x-kubernetes-map-type": "atomic" + }, + "serviceName": { + "type": "string" + }, + "template": { + "type": "object", + "properties": { + "metadata": { + "type": "object", + "properties": { + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + } + } + }, + "spec": { + "type": "object", + "required": [ + "containers" + ], + "properties": { + "activeDeadlineSeconds": { + "type": "integer", + "format": "int64" + }, + "affinity": { + "type": "object", + "properties": { + "nodeAffinity": { + "type": "object", + "properties": { + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "type": "object", + "required": [ + "preference", + "weight" + ], + "properties": { + "preference": { + "type": "object", + "properties": { + "matchExpressions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "key", + "operator" + ], + "properties": { + "key": { + "type": "string" + }, + "operator": { + "type": "string" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchFields": { + "type": "array", + "items": { + "type": "object", + "required": [ + "key", + "operator" + ], + "properties": { + "key": { + "type": "string" + }, + "operator": { + "type": "string" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "x-kubernetes-map-type": "atomic" + }, + "weight": { + "type": "integer", + "format": "int32" + } + } + } + }, + "requiredDuringSchedulingIgnoredDuringExecution": { + "type": "object", + "required": [ + "nodeSelectorTerms" ], "properties": { "nodeSelectorTerms": { @@ -6021,7 +8703,7 @@ "type": "object", "properties": { "storage": { - "description": "The requested size of the persistent volume attached to each Pod in the RabbitmqCluster. The format of this field matches that defined by kubernetes/apimachinery. See https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity for more info on the format of this field.", + "description": "The requested size of the persistent volume attached to each Pod in the RabbitmqCluster.\nThe format of this field matches that defined by kubernetes/apimachinery.\nSee https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity for more info on the format of this field.", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true }, @@ -6036,7 +8718,7 @@ "type": "object", "properties": { "additionalConfig": { - "description": "Modify to add to the rabbitmq.conf file in addition to default configurations set by the operator. Modifying this property on an existing RabbitmqCluster will trigger a StatefulSet rolling restart and will cause rabbitmq downtime. For more information on this config, see https://www.rabbitmq.com/configure.html#config-file", + "description": "Modify to add to the rabbitmq.conf file in addition to default configurations set by the operator.\nModifying this property on an existing RabbitmqCluster will trigger a StatefulSet rolling restart and will cause rabbitmq downtime.\nFor more information on this config, see https://www.rabbitmq.com/configure.html#config-file", "type": "string", "maxLength": 2000 }, @@ -6052,24 +8734,24 @@ } }, "advancedConfig": { - "description": "Specify any rabbitmq advanced.config configurations to apply to the cluster. For more information on advanced config, see https://www.rabbitmq.com/configure.html#advanced-config-file", + "description": "Specify any rabbitmq advanced.config configurations to apply to the cluster.\nFor more information on advanced config, see https://www.rabbitmq.com/configure.html#advanced-config-file", "type": "string", "maxLength": 100000 }, "envConfig": { - "description": "Modify to add to the rabbitmq-env.conf file. Modifying this property on an existing RabbitmqCluster will trigger a StatefulSet rolling restart and will cause rabbitmq downtime. For more information on env config, see https://www.rabbitmq.com/man/rabbitmq-env.conf.5.html", + "description": "Modify to add to the rabbitmq-env.conf file. Modifying this property on an existing RabbitmqCluster will trigger a StatefulSet rolling restart and will cause rabbitmq downtime.\nFor more information on env config, see https://www.rabbitmq.com/man/rabbitmq-env.conf.5.html", "type": "string", "maxLength": 100000 }, "erlangInetConfig": { - "description": "Erlang Inet configuration to apply to the Erlang VM running rabbit. See also: https://www.erlang.org/doc/apps/erts/inet_cfg.html", + "description": "Erlang Inet configuration to apply to the Erlang VM running rabbit.\nSee also: https://www.erlang.org/doc/apps/erts/inet_cfg.html", "type": "string", "maxLength": 2000 } } }, "replicas": { - "description": "Replicas is the number of nodes in the RabbitMQ cluster. Each node is deployed as a Replica in a StatefulSet. Only 1, 3, 5 replicas clusters are tested. This value should be an odd number to ensure the resultant cluster can establish exactly one quorum of nodes in the event of a fragmenting network partition.", + "description": "Replicas is the number of nodes in the RabbitMQ cluster. Each node is deployed as a Replica in a StatefulSet. Only 1, 3, 5 replicas clusters are tested.\nThis value should be an odd number to ensure the resultant cluster can establish exactly one quorum of nodes\nin the event of a fragmenting network partition.", "type": "integer", "format": "int32", "minimum": 0 @@ -6079,7 +8761,7 @@ "type": "object", "properties": { "claims": { - "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", + "description": "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\n\nThis field is immutable. It can only be set for containers.", "type": "array", "items": { "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", @@ -6089,7 +8771,7 @@ ], "properties": { "name": { - "description": "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.", + "description": "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container.", "type": "string" } } @@ -6100,7 +8782,7 @@ "x-kubernetes-list-type": "map" }, "limits": { - "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", @@ -6108,7 +8790,7 @@ } }, "requests": { - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", @@ -6118,52 +8800,52 @@ } }, "secretBackend": { - "description": "Secret backend configuration for the RabbitmqCluster. Enables to fetch default user credentials and certificates from K8s external secret stores.", + "description": "Secret backend configuration for the RabbitmqCluster.\nEnables to fetch default user credentials and certificates from K8s external secret stores.", "type": "object", "properties": { "externalSecret": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", + "description": "LocalObjectReference contains enough information to let you locate the\nreferenced object inside the same namespace.", "type": "object", "properties": { "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", "type": "string" } }, "x-kubernetes-map-type": "atomic" }, "vault": { - "description": "VaultSpec will add Vault annotations (see https://www.vaultproject.io/docs/platform/k8s/injector/annotations) to RabbitMQ Pods. It requires a Vault Agent Sidecar Injector (https://www.vaultproject.io/docs/platform/k8s/injector) to be installed in the K8s cluster. The injector is a K8s Mutation Webhook Controller that alters RabbitMQ Pod specifications (based on the added Vault annotations) to include Vault Agent containers that render Vault secrets to the volume.", + "description": "VaultSpec will add Vault annotations (see https://www.vaultproject.io/docs/platform/k8s/injector/annotations)\nto RabbitMQ Pods. It requires a Vault Agent Sidecar Injector (https://www.vaultproject.io/docs/platform/k8s/injector)\nto be installed in the K8s cluster. The injector is a K8s Mutation Webhook Controller that alters RabbitMQ Pod specifications\n(based on the added Vault annotations) to include Vault Agent containers that render Vault secrets to the volume.", "type": "object", "properties": { "annotations": { - "description": "Vault annotations that override the Vault annotations set by the cluster-operator. For a list of valid Vault annotations, see https://www.vaultproject.io/docs/platform/k8s/injector/annotations", + "description": "Vault annotations that override the Vault annotations set by the cluster-operator.\nFor a list of valid Vault annotations, see https://www.vaultproject.io/docs/platform/k8s/injector/annotations", "type": "object", "additionalProperties": { "type": "string" } }, "defaultUserPath": { - "description": "Path in Vault to access a KV (Key-Value) secret with the fields username and password for the default user. For example \"secret/data/rabbitmq/config\".", + "description": "Path in Vault to access a KV (Key-Value) secret with the fields username and password for the default user.\nFor example \"secret/data/rabbitmq/config\".", "type": "string" }, "defaultUserUpdaterImage": { - "description": "Sidecar container that updates the default user's password in RabbitMQ when it changes in Vault. Additionally, it updates /var/lib/rabbitmq/.rabbitmqadmin.conf (used by rabbitmqadmin CLI). Set to empty string to disable the sidecar container.", + "description": "Sidecar container that updates the default user's password in RabbitMQ when it changes in Vault.\nAdditionally, it updates /var/lib/rabbitmq/.rabbitmqadmin.conf (used by rabbitmqadmin CLI).\nSet to empty string to disable the sidecar container.", "type": "string" }, "role": { - "description": "Role in Vault. If vault.defaultUserPath is set, this role must have capability to read the pre-created default user credential in Vault. If vault.tls is set, this role must have capability to create and update certificates in the Vault PKI engine for the domains \"\" and \".svc\".", + "description": "Role in Vault.\nIf vault.defaultUserPath is set, this role must have capability to read the pre-created default user credential in Vault.\nIf vault.tls is set, this role must have capability to create and update certificates in the Vault PKI engine for the domains\n\"\" and \".svc\".", "type": "string" }, "tls": { "type": "object", "properties": { "altNames": { - "description": "Specifies the requested Subject Alternative Names (SANs), in a comma-delimited list. These will be appended to the SANs added by the cluster-operator. The cluster-operator will add SANs: \"-server-.-nodes.\" for each pod, e.g. \"myrabbit-server-0.myrabbit-nodes.default\".", + "description": "Specifies the requested Subject Alternative Names (SANs), in a comma-delimited list.\nThese will be appended to the SANs added by the cluster-operator.\nThe cluster-operator will add SANs:\n\"-server-.-nodes.\" for each pod,\ne.g. \"myrabbit-server-0.myrabbit-nodes.default\".", "type": "string" }, "commonName": { - "description": "Specifies the requested certificate Common Name (CN). Defaults to ..svc if not provided.", + "description": "Specifies the requested certificate Common Name (CN).\nDefaults to ..svc if not provided.", "type": "string" }, "ipSans": { @@ -6171,7 +8853,11 @@ "type": "string" }, "pkiIssuerPath": { - "description": "Path in Vault PKI engine. For example \"pki/issue/hashicorp-com\". required", + "description": "Path in Vault PKI engine.\nFor example \"pki/issue/hashicorp-com\".\nrequired", + "type": "string" + }, + "pkiRootPath": { + "description": "Specifies an optional path to retrieve the root CA from vault. Useful if certificates are issued by an intermediate CA", "type": "string" } } @@ -6192,7 +8878,7 @@ } }, "ipFamilyPolicy": { - "description": "IPFamilyPolicy represents the dual-stack-ness requested or required by a Service See also: https://pkg.go.dev/k8s.io/api/core/v1#IPFamilyPolicy", + "description": "IPFamilyPolicy represents the dual-stack-ness requested or required by a Service\nSee also: https://pkg.go.dev/k8s.io/api/core/v1#IPFamilyPolicy", "type": "string", "enum": [ "SingleStack", @@ -6201,7 +8887,7 @@ ] }, "type": { - "description": "Type of Service to create for the cluster. Must be one of: ClusterIP, LoadBalancer, NodePort. For more info see https://pkg.go.dev/k8s.io/api/core/v1#ServiceType", + "description": "Type of Service to create for the cluster. Must be one of: ClusterIP, LoadBalancer, NodePort.\nFor more info see https://pkg.go.dev/k8s.io/api/core/v1#ServiceType", "type": "string", "enum": [ "ClusterIP", @@ -6212,11 +8898,11 @@ } }, "skipPostDeploySteps": { - "description": "If unset, or set to false, the cluster will run `rabbitmq-queues rebalance all` whenever the cluster is updated. Set to true to prevent the operator rebalancing queue leaders after a cluster update. Has no effect if the cluster only consists of one node. For more information, see https://www.rabbitmq.com/rabbitmq-queues.8.html#rebalance", + "description": "If unset, or set to false, the cluster will run `rabbitmq-queues rebalance all` whenever the cluster is updated.\nSet to true to prevent the operator rebalancing queue leaders after a cluster update.\nHas no effect if the cluster only consists of one node.\nFor more information, see https://www.rabbitmq.com/rabbitmq-queues.8.html#rebalance", "type": "boolean" }, "terminationGracePeriodSeconds": { - "description": "TerminationGracePeriodSeconds is the timeout that each rabbitmqcluster pod will have to terminate gracefully. It defaults to 604800 seconds ( a week long) to ensure that the container preStop lifecycle hook can finish running. For more information, see: https://github.com/rabbitmq/cluster-operator/blob/main/docs/design/20200520-graceful-pod-termination.md", + "description": "TerminationGracePeriodSeconds is the timeout that each rabbitmqcluster pod will have to terminate gracefully.\nIt defaults to 604800 seconds ( a week long) to ensure that the container preStop lifecycle hook can finish running.\nFor more information, see: https://github.com/rabbitmq/cluster-operator/blob/main/docs/design/20200520-graceful-pod-termination.md", "type": "integer", "format": "int64", "minimum": 0 @@ -6226,15 +8912,15 @@ "type": "object", "properties": { "caSecretName": { - "description": "Name of a Secret in the same Namespace as the RabbitmqCluster, containing the Certificate Authority's public certificate for TLS. The Secret must store this as ca.crt. This Secret can be created by running `kubectl create secret generic ca-secret --from-file=ca.crt=path/to/ca.cert` Used for mTLS, and TLS for rabbitmq_web_stomp and rabbitmq_web_mqtt.", + "description": "Name of a Secret in the same Namespace as the RabbitmqCluster, containing the Certificate Authority's public certificate for TLS.\nThe Secret must store this as ca.crt.\nThis Secret can be created by running `kubectl create secret generic ca-secret --from-file=ca.crt=path/to/ca.cert`\nUsed for mTLS, and TLS for rabbitmq_web_stomp and rabbitmq_web_mqtt.", "type": "string" }, "disableNonTLSListeners": { - "description": "When set to true, the RabbitmqCluster disables non-TLS listeners for RabbitMQ, management plugin and for any enabled plugins in the following list: stomp, mqtt, web_stomp, web_mqtt. Only TLS-enabled clients will be able to connect.", + "description": "When set to true, the RabbitmqCluster disables non-TLS listeners for RabbitMQ, management plugin and for any enabled plugins in the following list: stomp, mqtt, web_stomp, web_mqtt.\nOnly TLS-enabled clients will be able to connect.", "type": "boolean" }, "secretName": { - "description": "Name of a Secret in the same Namespace as the RabbitmqCluster, containing the server's private key & public certificate for TLS. The Secret must store these as tls.key and tls.crt, respectively. This Secret can be created by running `kubectl create secret tls tls-secret --cert=path/to/tls.cert --key=path/to/tls.key`", + "description": "Name of a Secret in the same Namespace as the RabbitmqCluster, containing the server's private key & public certificate for TLS.\nThe Secret must store these as tls.key and tls.crt, respectively.\nThis Secret can be created by running `kubectl create secret tls tls-secret --cert=path/to/tls.cert --key=path/to/tls.key`", "type": "string" } } @@ -6243,28 +8929,28 @@ "description": "Tolerations is the list of Toleration resources attached to each Pod in the RabbitmqCluster.", "type": "array", "items": { - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .", + "description": "The pod this Toleration is attached to tolerates any taint that matches\nthe triple using the matching operator .", "type": "object", "properties": { "effect": { - "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", + "description": "Effect indicates the taint effect to match. Empty means match all taint effects.\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", "type": "string" }, "key": { - "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", + "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys.\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.", "type": "string" }, "operator": { - "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", + "description": "Operator represents a key's relationship to the value.\nValid operators are Exists and Equal. Defaults to Equal.\nExists is equivalent to wildcard for value, so that a pod can\ntolerate all taints of a particular category.", "type": "string" }, "tolerationSeconds": { - "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", + "description": "TolerationSeconds represents the period of time the toleration (which must be\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\nit is not set, which means tolerate the taint forever (do not evict). Zero and\nnegative values will be treated as 0 (evict immediately) by the system.", "type": "integer", "format": "int64" }, "value": { - "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", + "description": "Value is the taint value the toleration matches to.\nIf the operator is Exists, the value should be empty, otherwise just a regular string.", "type": "string" } } @@ -6280,11 +8966,11 @@ ], "properties": { "binding": { - "description": "Binding exposes a secret containing the binding information for this RabbitmqCluster. It implements the service binding Provisioned Service duck type. See: https://github.com/servicebinding/spec#provisioned-service", + "description": "Binding exposes a secret containing the binding information for this\nRabbitmqCluster. It implements the service binding Provisioned Service\nduck type. See: https://github.com/servicebinding/spec#provisioned-service", "type": "object", "properties": { "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", "type": "string" } }, @@ -6329,7 +9015,7 @@ "type": "object", "properties": { "secretReference": { - "description": "Reference to the Kubernetes Secret containing the credentials of the default user.", + "description": "Reference to the Kubernetes Secret containing the credentials of the default\nuser.", "type": "object", "required": [ "keys", @@ -6375,14 +9061,14 @@ } }, "observedGeneration": { - "description": "observedGeneration is the most recent successful generation observed for this RabbitmqCluster. It corresponds to the RabbitmqCluster's generation, which is updated on mutation by the API Server.", + "description": "observedGeneration is the most recent successful generation observed for this RabbitmqCluster. It corresponds to the\nRabbitmqCluster's generation, which is updated on mutation by the API Server.", "type": "integer", "format": "int64" } } } }, - "description": "RabbitmqCluster is the Schema for the RabbitmqCluster API. Each instance of this object corresponds to a single RabbitMQ cluster.", + "description": "RabbitmqCluster is the Schema for the RabbitmqCluster API. Each instance of this object\ncorresponds to a single RabbitMQ cluster.", "type": "object", "x-kubernetes-group-version-kind": [ { @@ -6419,15 +9105,15 @@ "storage": true, "schema": { "openAPIV3Schema": { - "description": "RabbitmqCluster is the Schema for the RabbitmqCluster API. Each instance of this object corresponds to a single RabbitMQ cluster.", + "description": "RabbitmqCluster is the Schema for the RabbitmqCluster API. Each instance of this object\ncorresponds to a single RabbitMQ cluster.", "type": "object", "properties": { "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string" }, "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "metadata": { @@ -6446,10 +9132,10 @@ "type": "object", "properties": { "preferredDuringSchedulingIgnoredDuringExecution": { - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.", + "description": "The scheduler will prefer to schedule pods to nodes that satisfy\nthe affinity expressions specified by this field, but it may choose\na node that violates one or more of the expressions. The node that is\nmost preferred is the one with the greatest sum of weights, i.e.\nfor each node that meets all of the scheduling requirements (resource\nrequest, requiredDuringScheduling affinity expressions, etc.),\ncompute a sum by iterating through the elements of this field and adding\n\"weight\" to the sum if the node matches the corresponding matchExpressions; the\nnode(s) with the highest sum are the most preferred.", "type": "array", "items": { - "description": "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).", + "description": "An empty preferred scheduling term matches all objects with implicit weight 0\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).", "type": "object", "required": [ "preference", @@ -6464,7 +9150,7 @@ "description": "A list of node selector requirements by node's labels.", "type": "array", "items": { - "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "description": "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values.", "type": "object", "required": [ "key", @@ -6476,11 +9162,11 @@ "type": "string" }, "operator": { - "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", + "description": "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", "type": "string" }, "values": { - "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", + "description": "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch.", "type": "array", "items": { "type": "string" @@ -6493,7 +9179,7 @@ "description": "A list of node selector requirements by node's fields.", "type": "array", "items": { - "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "description": "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values.", "type": "object", "required": [ "key", @@ -6505,11 +9191,11 @@ "type": "string" }, "operator": { - "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", + "description": "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", "type": "string" }, "values": { - "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", + "description": "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch.", "type": "array", "items": { "type": "string" @@ -6530,7 +9216,7 @@ } }, "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.", + "description": "If the affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to an update), the system\nmay or may not try to eventually evict the pod from its node.", "type": "object", "required": [ "nodeSelectorTerms" @@ -6540,14 +9226,14 @@ "description": "Required. A list of node selector terms. The terms are ORed.", "type": "array", "items": { - "description": "A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.", + "description": "A null or empty node selector term matches no objects. The requirements of\nthem are ANDed.\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.", "type": "object", "properties": { "matchExpressions": { "description": "A list of node selector requirements by node's labels.", "type": "array", "items": { - "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "description": "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values.", "type": "object", "required": [ "key", @@ -6559,11 +9245,11 @@ "type": "string" }, "operator": { - "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", + "description": "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", "type": "string" }, "values": { - "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", + "description": "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch.", "type": "array", "items": { "type": "string" @@ -6576,7 +9262,7 @@ "description": "A list of node selector requirements by node's fields.", "type": "array", "items": { - "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "description": "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values.", "type": "object", "required": [ "key", @@ -6588,11 +9274,11 @@ "type": "string" }, "operator": { - "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", + "description": "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", "type": "string" }, "values": { - "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", + "description": "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch.", "type": "array", "items": { "type": "string" @@ -6615,7 +9301,7 @@ "type": "object", "properties": { "preferredDuringSchedulingIgnoredDuringExecution": { - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.", + "description": "The scheduler will prefer to schedule pods to nodes that satisfy\nthe affinity expressions specified by this field, but it may choose\na node that violates one or more of the expressions. The node that is\nmost preferred is the one with the greatest sum of weights, i.e.\nfor each node that meets all of the scheduling requirements (resource\nrequest, requiredDuringScheduling affinity expressions, etc.),\ncompute a sum by iterating through the elements of this field and adding\n\"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\nnode(s) with the highest sum are the most preferred.", "type": "array", "items": { "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", @@ -6633,14 +9319,14 @@ ], "properties": { "labelSelector": { - "description": "A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.", + "description": "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods.", "type": "object", "properties": { "matchExpressions": { "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "type": "array", "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", "type": "object", "required": [ "key", @@ -6652,11 +9338,11 @@ "type": "string" }, "operator": { - "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", + "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", "type": "string" }, "values": { - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", + "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", "type": "array", "items": { "type": "string" @@ -6666,7 +9352,7 @@ } }, "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", "type": "object", "additionalProperties": { "type": "string" @@ -6676,7 +9362,7 @@ "x-kubernetes-map-type": "atomic" }, "matchLabelKeys": { - "description": "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", + "description": "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", "type": "array", "items": { "type": "string" @@ -6684,7 +9370,7 @@ "x-kubernetes-list-type": "atomic" }, "mismatchLabelKeys": { - "description": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", + "description": "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", "type": "array", "items": { "type": "string" @@ -6692,14 +9378,14 @@ "x-kubernetes-list-type": "atomic" }, "namespaceSelector": { - "description": "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.", + "description": "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces.", "type": "object", "properties": { "matchExpressions": { "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "type": "array", "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", "type": "object", "required": [ "key", @@ -6711,11 +9397,11 @@ "type": "string" }, "operator": { - "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", + "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", "type": "string" }, "values": { - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", + "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", "type": "array", "items": { "type": "string" @@ -6725,7 +9411,7 @@ } }, "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", "type": "object", "additionalProperties": { "type": "string" @@ -6735,20 +9421,20 @@ "x-kubernetes-map-type": "atomic" }, "namespaces": { - "description": "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".", + "description": "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\".", "type": "array", "items": { "type": "string" } }, "topologyKey": { - "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.", + "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed.", "type": "string" } } }, "weight": { - "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", + "description": "weight associated with matching the corresponding podAffinityTerm,\nin the range 1-100.", "type": "integer", "format": "int32" } @@ -6756,24 +9442,24 @@ } }, "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", + "description": "If the affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to a pod label update), the\nsystem may or may not try to eventually evict the pod from its node.\nWhen there are multiple elements, the lists of nodes corresponding to each\npodAffinityTerm are intersected, i.e. all terms must be satisfied.", "type": "array", "items": { - "description": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running", + "description": "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running", "type": "object", "required": [ "topologyKey" ], "properties": { "labelSelector": { - "description": "A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.", + "description": "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods.", "type": "object", "properties": { "matchExpressions": { "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "type": "array", "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", "type": "object", "required": [ "key", @@ -6785,11 +9471,11 @@ "type": "string" }, "operator": { - "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", + "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", "type": "string" }, "values": { - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", + "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", "type": "array", "items": { "type": "string" @@ -6799,7 +9485,7 @@ } }, "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", "type": "object", "additionalProperties": { "type": "string" @@ -6809,7 +9495,7 @@ "x-kubernetes-map-type": "atomic" }, "matchLabelKeys": { - "description": "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", + "description": "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", "type": "array", "items": { "type": "string" @@ -6817,7 +9503,7 @@ "x-kubernetes-list-type": "atomic" }, "mismatchLabelKeys": { - "description": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", + "description": "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", "type": "array", "items": { "type": "string" @@ -6825,14 +9511,14 @@ "x-kubernetes-list-type": "atomic" }, "namespaceSelector": { - "description": "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.", + "description": "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces.", "type": "object", "properties": { "matchExpressions": { "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "type": "array", "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", "type": "object", "required": [ "key", @@ -6844,11 +9530,11 @@ "type": "string" }, "operator": { - "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", + "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", "type": "string" }, "values": { - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", + "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", "type": "array", "items": { "type": "string" @@ -6858,7 +9544,7 @@ } }, "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", "type": "object", "additionalProperties": { "type": "string" @@ -6868,14 +9554,14 @@ "x-kubernetes-map-type": "atomic" }, "namespaces": { - "description": "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".", + "description": "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\".", "type": "array", "items": { "type": "string" } }, "topologyKey": { - "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.", + "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed.", "type": "string" } } @@ -6888,7 +9574,7 @@ "type": "object", "properties": { "preferredDuringSchedulingIgnoredDuringExecution": { - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.", + "description": "The scheduler will prefer to schedule pods to nodes that satisfy\nthe anti-affinity expressions specified by this field, but it may choose\na node that violates one or more of the expressions. The node that is\nmost preferred is the one with the greatest sum of weights, i.e.\nfor each node that meets all of the scheduling requirements (resource\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\ncompute a sum by iterating through the elements of this field and adding\n\"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\nnode(s) with the highest sum are the most preferred.", "type": "array", "items": { "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", @@ -6906,14 +9592,14 @@ ], "properties": { "labelSelector": { - "description": "A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.", + "description": "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods.", "type": "object", "properties": { "matchExpressions": { "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "type": "array", "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", "type": "object", "required": [ "key", @@ -6925,11 +9611,11 @@ "type": "string" }, "operator": { - "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", + "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", "type": "string" }, "values": { - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", + "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", "type": "array", "items": { "type": "string" @@ -6939,7 +9625,7 @@ } }, "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", "type": "object", "additionalProperties": { "type": "string" @@ -6949,7 +9635,7 @@ "x-kubernetes-map-type": "atomic" }, "matchLabelKeys": { - "description": "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", + "description": "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", "type": "array", "items": { "type": "string" @@ -6957,7 +9643,7 @@ "x-kubernetes-list-type": "atomic" }, "mismatchLabelKeys": { - "description": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", + "description": "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", "type": "array", "items": { "type": "string" @@ -6965,14 +9651,14 @@ "x-kubernetes-list-type": "atomic" }, "namespaceSelector": { - "description": "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.", + "description": "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces.", "type": "object", "properties": { "matchExpressions": { "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "type": "array", "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", "type": "object", "required": [ "key", @@ -6984,11 +9670,11 @@ "type": "string" }, "operator": { - "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", + "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", "type": "string" }, "values": { - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", + "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", "type": "array", "items": { "type": "string" @@ -6998,7 +9684,7 @@ } }, "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", "type": "object", "additionalProperties": { "type": "string" @@ -7008,20 +9694,20 @@ "x-kubernetes-map-type": "atomic" }, "namespaces": { - "description": "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".", + "description": "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\".", "type": "array", "items": { "type": "string" } }, "topologyKey": { - "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.", + "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed.", "type": "string" } } }, "weight": { - "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", + "description": "weight associated with matching the corresponding podAffinityTerm,\nin the range 1-100.", "type": "integer", "format": "int32" } @@ -7029,24 +9715,24 @@ } }, "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", + "description": "If the anti-affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the anti-affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to a pod label update), the\nsystem may or may not try to eventually evict the pod from its node.\nWhen there are multiple elements, the lists of nodes corresponding to each\npodAffinityTerm are intersected, i.e. all terms must be satisfied.", "type": "array", "items": { - "description": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running", + "description": "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running", "type": "object", "required": [ "topologyKey" ], "properties": { "labelSelector": { - "description": "A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.", + "description": "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods.", "type": "object", "properties": { "matchExpressions": { "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "type": "array", "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", "type": "object", "required": [ "key", @@ -7058,11 +9744,11 @@ "type": "string" }, "operator": { - "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", + "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", "type": "string" }, "values": { - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", + "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", "type": "array", "items": { "type": "string" @@ -7072,7 +9758,7 @@ } }, "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", "type": "object", "additionalProperties": { "type": "string" @@ -7082,7 +9768,7 @@ "x-kubernetes-map-type": "atomic" }, "matchLabelKeys": { - "description": "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", + "description": "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", "type": "array", "items": { "type": "string" @@ -7090,7 +9776,7 @@ "x-kubernetes-list-type": "atomic" }, "mismatchLabelKeys": { - "description": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", + "description": "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.", "type": "array", "items": { "type": "string" @@ -7098,14 +9784,14 @@ "x-kubernetes-list-type": "atomic" }, "namespaceSelector": { - "description": "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.", + "description": "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces.", "type": "object", "properties": { "matchExpressions": { "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "type": "array", "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", "type": "object", "required": [ "key", @@ -7117,11 +9803,11 @@ "type": "string" }, "operator": { - "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", + "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", "type": "string" }, "values": { - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", + "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", "type": "array", "items": { "type": "string" @@ -7131,7 +9817,7 @@ } }, "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", "type": "object", "additionalProperties": { "type": "string" @@ -7141,14 +9827,14 @@ "x-kubernetes-map-type": "atomic" }, "namespaces": { - "description": "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".", + "description": "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\".", "type": "array", "items": { "type": "string" } }, "topologyKey": { - "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.", + "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed.", "type": "string" } } @@ -7159,25 +9845,25 @@ } }, "delayStartSeconds": { - "description": "DelayStartSeconds is the time the init container (`setup-container`) will sleep before terminating. This effectively delays the time between starting the Pod and starting the `rabbitmq` container. RabbitMQ relies on up-to-date DNS entries early during peer discovery. The purpose of this artificial delay is to ensure that DNS entries are up-to-date when booting RabbitMQ. For more information, see https://github.com/kubernetes/kubernetes/issues/92559 If your Kubernetes DNS backend is configured with a low DNS cache value or publishes not ready addresses promptly, you can decrase this value or set it to 0.", + "description": "DelayStartSeconds is the time the init container (`setup-container`) will sleep before terminating.\nThis effectively delays the time between starting the Pod and starting the `rabbitmq` container.\nRabbitMQ relies on up-to-date DNS entries early during peer discovery.\nThe purpose of this artificial delay is to ensure that DNS entries are up-to-date when booting RabbitMQ.\nFor more information, see https://github.com/kubernetes/kubernetes/issues/92559\nIf your Kubernetes DNS backend is configured with a low DNS cache value or publishes not ready addresses\npromptly, you can decrase this value or set it to 0.", "type": "integer", "format": "int32", "default": 30, "minimum": 0 }, "image": { - "description": "Image is the name of the RabbitMQ docker image to use for RabbitMQ nodes in the RabbitmqCluster. Must be provided together with ImagePullSecrets in order to use an image in a private registry.", + "description": "Image is the name of the RabbitMQ docker image to use for RabbitMQ nodes in the RabbitmqCluster.\nMust be provided together with ImagePullSecrets in order to use an image in a private registry.", "type": "string" }, "imagePullSecrets": { "description": "List of Secret resource containing access credentials to the registry for the RabbitMQ image. Required if the docker registry is private.", "type": "array", "items": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", + "description": "LocalObjectReference contains enough information to let you locate the\nreferenced object inside the same namespace.", "type": "object", "properties": { "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", "type": "string" } }, @@ -12830,328 +15516,2248 @@ } } } - } + } + }, + "persistence": { + "description": "The desired persistent storage configuration for each Pod in the cluster.", + "type": "object", + "default": { + "storage": "10Gi" + }, + "properties": { + "storage": { + "description": "The requested size of the persistent volume attached to each Pod in the RabbitmqCluster.\nThe format of this field matches that defined by kubernetes/apimachinery.\nSee https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity for more info on the format of this field.", + "default": "10Gi", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + }, + "storageClassName": { + "description": "The name of the StorageClass to claim a PersistentVolume from.", + "type": "string" + } + } + }, + "rabbitmq": { + "description": "Configuration options for RabbitMQ Pods created in the cluster.", + "type": "object", + "properties": { + "additionalConfig": { + "description": "Modify to add to the rabbitmq.conf file in addition to default configurations set by the operator.\nModifying this property on an existing RabbitmqCluster will trigger a StatefulSet rolling restart and will cause rabbitmq downtime.\nFor more information on this config, see https://www.rabbitmq.com/configure.html#config-file", + "type": "string", + "maxLength": 2000 + }, + "additionalPlugins": { + "description": "List of plugins to enable in addition to essential plugins: rabbitmq_management, rabbitmq_prometheus, and rabbitmq_peer_discovery_k8s.", + "type": "array", + "maxItems": 100, + "items": { + "description": "A Plugin to enable on the RabbitmqCluster.", + "type": "string", + "maxLength": 100, + "pattern": "^\\w+$" + } + }, + "advancedConfig": { + "description": "Specify any rabbitmq advanced.config configurations to apply to the cluster.\nFor more information on advanced config, see https://www.rabbitmq.com/configure.html#advanced-config-file", + "type": "string", + "maxLength": 100000 + }, + "envConfig": { + "description": "Modify to add to the rabbitmq-env.conf file. Modifying this property on an existing RabbitmqCluster will trigger a StatefulSet rolling restart and will cause rabbitmq downtime.\nFor more information on env config, see https://www.rabbitmq.com/man/rabbitmq-env.conf.5.html", + "type": "string", + "maxLength": 100000 + }, + "erlangInetConfig": { + "description": "Erlang Inet configuration to apply to the Erlang VM running rabbit.\nSee also: https://www.erlang.org/doc/apps/erts/inet_cfg.html", + "type": "string", + "maxLength": 2000 + } + } + }, + "replicas": { + "description": "Replicas is the number of nodes in the RabbitMQ cluster. Each node is deployed as a Replica in a StatefulSet. Only 1, 3, 5 replicas clusters are tested.\nThis value should be an odd number to ensure the resultant cluster can establish exactly one quorum of nodes\nin the event of a fragmenting network partition.", + "type": "integer", + "format": "int32", + "default": 1, + "minimum": 0 + }, + "resources": { + "description": "The desired compute resource requirements of Pods in the cluster.", + "type": "object", + "default": { + "limits": { + "cpu": "2000m", + "memory": "2Gi" + }, + "requests": { + "cpu": "1000m", + "memory": "2Gi" + } + }, + "properties": { + "claims": { + "description": "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\n\nThis field is immutable. It can only be set for containers.", + "type": "array", + "items": { + "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container.", + "type": "string" + } + } + }, + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + }, + "limits": { + "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object", + "additionalProperties": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + } + }, + "requests": { + "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object", + "additionalProperties": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + } + } + } + }, + "secretBackend": { + "description": "Secret backend configuration for the RabbitmqCluster.\nEnables to fetch default user credentials and certificates from K8s external secret stores.", + "type": "object", + "properties": { + "externalSecret": { + "description": "LocalObjectReference contains enough information to let you locate the\nreferenced object inside the same namespace.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "vault": { + "description": "VaultSpec will add Vault annotations (see https://www.vaultproject.io/docs/platform/k8s/injector/annotations)\nto RabbitMQ Pods. It requires a Vault Agent Sidecar Injector (https://www.vaultproject.io/docs/platform/k8s/injector)\nto be installed in the K8s cluster. The injector is a K8s Mutation Webhook Controller that alters RabbitMQ Pod specifications\n(based on the added Vault annotations) to include Vault Agent containers that render Vault secrets to the volume.", + "type": "object", + "properties": { + "annotations": { + "description": "Vault annotations that override the Vault annotations set by the cluster-operator.\nFor a list of valid Vault annotations, see https://www.vaultproject.io/docs/platform/k8s/injector/annotations", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "defaultUserPath": { + "description": "Path in Vault to access a KV (Key-Value) secret with the fields username and password for the default user.\nFor example \"secret/data/rabbitmq/config\".", + "type": "string" + }, + "defaultUserUpdaterImage": { + "description": "Sidecar container that updates the default user's password in RabbitMQ when it changes in Vault.\nAdditionally, it updates /var/lib/rabbitmq/.rabbitmqadmin.conf (used by rabbitmqadmin CLI).\nSet to empty string to disable the sidecar container.", + "type": "string" + }, + "role": { + "description": "Role in Vault.\nIf vault.defaultUserPath is set, this role must have capability to read the pre-created default user credential in Vault.\nIf vault.tls is set, this role must have capability to create and update certificates in the Vault PKI engine for the domains\n\"\" and \".svc\".", + "type": "string" + }, + "tls": { + "type": "object", + "properties": { + "altNames": { + "description": "Specifies the requested Subject Alternative Names (SANs), in a comma-delimited list.\nThese will be appended to the SANs added by the cluster-operator.\nThe cluster-operator will add SANs:\n\"-server-.-nodes.\" for each pod,\ne.g. \"myrabbit-server-0.myrabbit-nodes.default\".", + "type": "string" + }, + "commonName": { + "description": "Specifies the requested certificate Common Name (CN).\nDefaults to ..svc if not provided.", + "type": "string" + }, + "ipSans": { + "description": "Specifies the requested IP Subject Alternative Names, in a comma-delimited list.", + "type": "string" + }, + "pkiIssuerPath": { + "description": "Path in Vault PKI engine.\nFor example \"pki/issue/hashicorp-com\".\nrequired", + "type": "string" + }, + "pkiRootPath": { + "description": "Specifies an optional path to retrieve the root CA from vault. Useful if certificates are issued by an intermediate CA", + "type": "string" + } + } + } + } + } + } + }, + "service": { + "description": "The desired state of the Kubernetes Service to create for the cluster.", + "type": "object", + "default": { + "type": "ClusterIP" + }, + "properties": { + "annotations": { + "description": "Annotations to add to the Service.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "ipFamilyPolicy": { + "description": "IPFamilyPolicy represents the dual-stack-ness requested or required by a Service\nSee also: https://pkg.go.dev/k8s.io/api/core/v1#IPFamilyPolicy", + "type": "string", + "enum": [ + "SingleStack", + "PreferDualStack", + "RequireDualStack" + ] + }, + "type": { + "description": "Type of Service to create for the cluster. Must be one of: ClusterIP, LoadBalancer, NodePort.\nFor more info see https://pkg.go.dev/k8s.io/api/core/v1#ServiceType", + "type": "string", + "default": "ClusterIP", + "enum": [ + "ClusterIP", + "LoadBalancer", + "NodePort" + ] + } + } + }, + "skipPostDeploySteps": { + "description": "If unset, or set to false, the cluster will run `rabbitmq-queues rebalance all` whenever the cluster is updated.\nSet to true to prevent the operator rebalancing queue leaders after a cluster update.\nHas no effect if the cluster only consists of one node.\nFor more information, see https://www.rabbitmq.com/rabbitmq-queues.8.html#rebalance", + "type": "boolean" + }, + "terminationGracePeriodSeconds": { + "description": "TerminationGracePeriodSeconds is the timeout that each rabbitmqcluster pod will have to terminate gracefully.\nIt defaults to 604800 seconds ( a week long) to ensure that the container preStop lifecycle hook can finish running.\nFor more information, see: https://github.com/rabbitmq/cluster-operator/blob/main/docs/design/20200520-graceful-pod-termination.md", + "type": "integer", + "format": "int64", + "default": 604800, + "minimum": 0 + }, + "tls": { + "description": "TLS-related configuration for the RabbitMQ cluster.", + "type": "object", + "properties": { + "caSecretName": { + "description": "Name of a Secret in the same Namespace as the RabbitmqCluster, containing the Certificate Authority's public certificate for TLS.\nThe Secret must store this as ca.crt.\nThis Secret can be created by running `kubectl create secret generic ca-secret --from-file=ca.crt=path/to/ca.cert`\nUsed for mTLS, and TLS for rabbitmq_web_stomp and rabbitmq_web_mqtt.", + "type": "string" + }, + "disableNonTLSListeners": { + "description": "When set to true, the RabbitmqCluster disables non-TLS listeners for RabbitMQ, management plugin and for any enabled plugins in the following list: stomp, mqtt, web_stomp, web_mqtt.\nOnly TLS-enabled clients will be able to connect.", + "type": "boolean" + }, + "secretName": { + "description": "Name of a Secret in the same Namespace as the RabbitmqCluster, containing the server's private key & public certificate for TLS.\nThe Secret must store these as tls.key and tls.crt, respectively.\nThis Secret can be created by running `kubectl create secret tls tls-secret --cert=path/to/tls.cert --key=path/to/tls.key`", + "type": "string" + } + } + }, + "tolerations": { + "description": "Tolerations is the list of Toleration resources attached to each Pod in the RabbitmqCluster.", + "type": "array", + "items": { + "description": "The pod this Toleration is attached to tolerates any taint that matches\nthe triple using the matching operator .", + "type": "object", + "properties": { + "effect": { + "description": "Effect indicates the taint effect to match. Empty means match all taint effects.\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", + "type": "string" + }, + "key": { + "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys.\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.", + "type": "string" + }, + "operator": { + "description": "Operator represents a key's relationship to the value.\nValid operators are Exists and Equal. Defaults to Equal.\nExists is equivalent to wildcard for value, so that a pod can\ntolerate all taints of a particular category.", + "type": "string" + }, + "tolerationSeconds": { + "description": "TolerationSeconds represents the period of time the toleration (which must be\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\nit is not set, which means tolerate the taint forever (do not evict). Zero and\nnegative values will be treated as 0 (evict immediately) by the system.", + "type": "integer", + "format": "int64" + }, + "value": { + "description": "Value is the taint value the toleration matches to.\nIf the operator is Exists, the value should be empty, otherwise just a regular string.", + "type": "string" + } + } + } + } + } + }, + "status": { + "description": "Status presents the observed state of RabbitmqCluster", + "type": "object", + "required": [ + "conditions" + ], + "properties": { + "binding": { + "description": "Binding exposes a secret containing the binding information for this\nRabbitmqCluster. It implements the service binding Provisioned Service\nduck type. See: https://github.com/servicebinding/spec#provisioned-service", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "conditions": { + "description": "Set of Conditions describing the current state of the RabbitmqCluster", + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition type changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of RabbitmqCluster status addressed by the condition.", + "type": "string" + } + } + } + }, + "defaultUser": { + "description": "Identifying information on internal resources", + "type": "object", + "properties": { + "secretReference": { + "description": "Reference to the Kubernetes Secret containing the credentials of the default\nuser.", + "type": "object", + "required": [ + "keys", + "name", + "namespace" + ], + "properties": { + "keys": { + "description": "Key-value pairs in the Secret corresponding to `username`, `password`, `host`, and `port`", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "name": { + "description": "Name of the Secret containing the default user credentials", + "type": "string" + }, + "namespace": { + "description": "Namespace of the Secret containing the default user credentials", + "type": "string" + } + } + }, + "serviceReference": { + "description": "Reference to the Kubernetes Service serving the cluster.", + "type": "object", + "required": [ + "name", + "namespace" + ], + "properties": { + "name": { + "description": "Name of the Service serving the cluster", + "type": "string" + }, + "namespace": { + "description": "Namespace of the Service serving the cluster", + "type": "string" + } + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this RabbitmqCluster. It corresponds to the\nRabbitmqCluster's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + } + } + }, + "subresources": { + "status": {} + }, + "additionalPrinterColumns": [ + { + "name": "AllReplicasReady", + "type": "string", + "jsonPath": ".status.conditions[?(@.type == 'AllReplicasReady')].status" + }, + { + "name": "ReconcileSuccess", + "type": "string", + "jsonPath": ".status.conditions[?(@.type == 'ReconcileSuccess')].status" + }, + { + "name": "Age", + "type": "date", + "jsonPath": ".metadata.creationTimestamp" + } + ] + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "rabbitmqclusters", + "singular": "rabbitmqcluster", + "shortNames": [ + "rmq" + ], + "kind": "RabbitmqCluster", + "listKind": "RabbitmqClusterList", + "categories": [ + "all", + "rabbitmq" + ] + }, + "storedVersions": [ + "v1beta1" + ] + } + }, + "additionalColumns": [ + { + "name": "AllReplicasReady", + "type": "string", + "jsonPath": ".status.conditions[?(@.type == 'AllReplicasReady')].status" + }, + { + "name": "ReconcileSuccess", + "type": "string", + "jsonPath": ".status.conditions[?(@.type == 'ReconcileSuccess')].status" + }, + { + "name": "Age", + "type": "date", + "jsonPath": ".metadata.creationTimestamp" + } + ], + "short": "RabbitmqCluster", + "apiGroup": "rabbitmq.com", + "apiKind": "RabbitmqCluster", + "apiVersion": "v1beta1", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "rabbitmq", + "sub": "rabbitmq", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "com.rabbitmq.v1beta1.SchemaReplication", + "definition": { + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "spec": { + "description": "SchemaReplicationSpec defines the desired state of SchemaReplication", + "type": "object", + "required": [ + "rabbitmqClusterReference" + ], + "properties": { + "endpoints": { + "description": "endpoints should be one or multiple endpoints separated by ','.\nMust provide either spec.endpoints or endpoints in spec.upstreamSecret.\nWhen endpoints are provided in both spec.endpoints and spec.upstreamSecret, spec.endpoints takes\nprecedence.", + "type": "string" + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that schema replication would be set for. Must be an existing cluster.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "secretBackend": { + "description": "Set to fetch user credentials from K8s external secret stores to be used for schema replication.", + "type": "object", + "properties": { + "vault": { + "type": "object", + "properties": { + "secretPath": { + "description": "Path in Vault to access a KV (Key-Value) secret with the fields username and password to be used for replication.\nFor example \"secret/data/rabbitmq/config\".\nOptional; if not provided, username and password will come from upstreamSecret instead.\nHave to set either secretBackend.vault.secretPath or upstreamSecret, but not both.", + "type": "string" + } + } + } + } + }, + "upstreamSecret": { + "description": "Defines a Secret which contains credentials to be used for schema replication.\nThe Secret must contain the keys `username` and `password` in its Data field, or operator will error.\nHave to set either secretBackend.vault.secretPath or spec.upstreamSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + } + } + }, + "status": { + "description": "SchemaReplicationStatus defines the observed state of SchemaReplication", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this Queue. It corresponds to the\nQueue's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + }, + "description": "SchemaReplication is the Schema for the schemareplications API\nThis feature requires Tanzu RabbitMQ with schema replication plugin.\nFor more information, see: https://tanzu.vmware.com/rabbitmq and https://www.rabbitmq.com/definitions-standby.html.", + "type": "object", + "x-kubernetes-group-version-kind": [ + { + "group": "rabbitmq.com", + "kind": "SchemaReplication", + "version": "v1beta1" + } + ] + }, + "crd": { + "metadata": { + "name": "schemareplications.rabbitmq.com" + }, + "spec": { + "group": "rabbitmq.com", + "names": { + "plural": "schemareplications", + "singular": "schemareplication", + "kind": "SchemaReplication", + "listKind": "SchemaReplicationList" + }, + "scope": "Namespaced", + "versions": [ + { + "name": "v1beta1", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "SchemaReplication is the Schema for the schemareplications API\nThis feature requires Tanzu RabbitMQ with schema replication plugin.\nFor more information, see: https://tanzu.vmware.com/rabbitmq and https://www.rabbitmq.com/definitions-standby.html.", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "SchemaReplicationSpec defines the desired state of SchemaReplication", + "type": "object", + "required": [ + "rabbitmqClusterReference" + ], + "properties": { + "endpoints": { + "description": "endpoints should be one or multiple endpoints separated by ','.\nMust provide either spec.endpoints or endpoints in spec.upstreamSecret.\nWhen endpoints are provided in both spec.endpoints and spec.upstreamSecret, spec.endpoints takes\nprecedence.", + "type": "string" + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that schema replication would be set for. Must be an existing cluster.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "secretBackend": { + "description": "Set to fetch user credentials from K8s external secret stores to be used for schema replication.", + "type": "object", + "properties": { + "vault": { + "type": "object", + "properties": { + "secretPath": { + "description": "Path in Vault to access a KV (Key-Value) secret with the fields username and password to be used for replication.\nFor example \"secret/data/rabbitmq/config\".\nOptional; if not provided, username and password will come from upstreamSecret instead.\nHave to set either secretBackend.vault.secretPath or upstreamSecret, but not both.", + "type": "string" + } + } + } + } + }, + "upstreamSecret": { + "description": "Defines a Secret which contains credentials to be used for schema replication.\nThe Secret must contain the keys `username` and `password` in its Data field, or operator will error.\nHave to set either secretBackend.vault.secretPath or spec.upstreamSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + } + } + }, + "status": { + "description": "SchemaReplicationStatus defines the observed state of SchemaReplication", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this Queue. It corresponds to the\nQueue's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + } + } + }, + "subresources": { + "status": {} + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "schemareplications", + "singular": "schemareplication", + "kind": "SchemaReplication", + "listKind": "SchemaReplicationList" + }, + "storedVersions": [ + "v1beta1" + ] + } + }, + "short": "SchemaReplication", + "apiGroup": "rabbitmq.com", + "apiKind": "SchemaReplication", + "apiVersion": "v1beta1", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "rabbitmq", + "sub": "rabbitmq", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "com.rabbitmq.v1beta1.Shovel", + "definition": { + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "spec": { + "description": "ShovelSpec defines the desired state of Shovel\nFor how to configure Shovel, see: https://www.rabbitmq.com/shovel.html.", + "type": "object", + "required": [ + "name", + "rabbitmqClusterReference", + "uriSecret" + ], + "properties": { + "ackMode": { + "type": "string", + "enum": [ + "on-confirm", + "on-publish", + "no-ack" + ] + }, + "addForwardHeaders": { + "type": "boolean" + }, + "deleteAfter": { + "type": "string" + }, + "destAddForwardHeaders": { + "type": "boolean" + }, + "destAddTimestampHeader": { + "type": "boolean" + }, + "destAddress": { + "description": "amqp10 configuration; required if destProtocol is amqp10", + "type": "string" + }, + "destApplicationProperties": { + "description": "amqp10 configuration", + "x-kubernetes-preserve-unknown-fields": true + }, + "destExchange": { + "description": "amqp091 configuration", + "type": "string" + }, + "destExchangeKey": { + "description": "amqp091 configuration", + "type": "string" + }, + "destMessageAnnotations": { + "description": "amqp10 configuration", + "x-kubernetes-preserve-unknown-fields": true + }, + "destProperties": { + "description": "amqp10 configuration", + "x-kubernetes-preserve-unknown-fields": true + }, + "destProtocol": { + "type": "string", + "enum": [ + "amqp091", + "amqp10" + ] + }, + "destPublishProperties": { + "description": "amqp091 configuration", + "x-kubernetes-preserve-unknown-fields": true + }, + "destQueue": { + "description": "amqp091 configuration", + "type": "string" + }, + "name": { + "description": "Required property; cannot be updated", + "type": "string" + }, + "prefetchCount": { + "type": "integer" + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that this Shovel will be created in.\nRequired property.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "reconnectDelay": { + "type": "integer" + }, + "srcAddress": { + "description": "amqp10 configuration; required if srcProtocol is amqp10", + "type": "string" + }, + "srcConsumerArgs": { + "description": "amqp091 configuration", + "x-kubernetes-preserve-unknown-fields": true + }, + "srcDeleteAfter": { + "type": "string" + }, + "srcExchange": { + "description": "amqp091 configuration", + "type": "string" + }, + "srcExchangeKey": { + "description": "amqp091 configuration", + "type": "string" + }, + "srcPrefetchCount": { + "type": "integer" + }, + "srcProtocol": { + "type": "string", + "enum": [ + "amqp091", + "amqp10" + ] + }, + "srcQueue": { + "description": "amqp091 configuration", + "type": "string" + }, + "uriSecret": { + "description": "Secret contains the AMQP URI(s) to configure Shovel destination and source.\nThe Secret must contain the key `destUri` and `srcUri` or operator will error.\nBoth fields should be one or multiple uris separated by ','.\nRequired property.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "vhost": { + "description": "Default to vhost '/'; cannot be updated", + "type": "string" + } + } + }, + "status": { + "description": "ShovelStatus defines the observed state of Shovel", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this Shovel. It corresponds to the\nShovel's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + }, + "description": "Shovel is the Schema for the shovels API", + "type": "object", + "x-kubernetes-group-version-kind": [ + { + "group": "rabbitmq.com", + "kind": "Shovel", + "version": "v1beta1" + } + ] + }, + "crd": { + "metadata": { + "name": "shovels.rabbitmq.com" + }, + "spec": { + "group": "rabbitmq.com", + "names": { + "plural": "shovels", + "singular": "shovel", + "kind": "Shovel", + "listKind": "ShovelList", + "categories": [ + "rabbitmq" + ] + }, + "scope": "Namespaced", + "versions": [ + { + "name": "v1beta1", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "Shovel is the Schema for the shovels API", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "ShovelSpec defines the desired state of Shovel\nFor how to configure Shovel, see: https://www.rabbitmq.com/shovel.html.", + "type": "object", + "required": [ + "name", + "rabbitmqClusterReference", + "uriSecret" + ], + "properties": { + "ackMode": { + "type": "string", + "enum": [ + "on-confirm", + "on-publish", + "no-ack" + ] + }, + "addForwardHeaders": { + "type": "boolean" + }, + "deleteAfter": { + "type": "string" + }, + "destAddForwardHeaders": { + "type": "boolean" + }, + "destAddTimestampHeader": { + "type": "boolean" + }, + "destAddress": { + "description": "amqp10 configuration; required if destProtocol is amqp10", + "type": "string" + }, + "destApplicationProperties": { + "description": "amqp10 configuration", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "destExchange": { + "description": "amqp091 configuration", + "type": "string" + }, + "destExchangeKey": { + "description": "amqp091 configuration", + "type": "string" + }, + "destMessageAnnotations": { + "description": "amqp10 configuration", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "destProperties": { + "description": "amqp10 configuration", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "destProtocol": { + "type": "string", + "enum": [ + "amqp091", + "amqp10" + ] + }, + "destPublishProperties": { + "description": "amqp091 configuration", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "destQueue": { + "description": "amqp091 configuration", + "type": "string" + }, + "name": { + "description": "Required property; cannot be updated", + "type": "string" + }, + "prefetchCount": { + "type": "integer" + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that this Shovel will be created in.\nRequired property.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "reconnectDelay": { + "type": "integer" + }, + "srcAddress": { + "description": "amqp10 configuration; required if srcProtocol is amqp10", + "type": "string" + }, + "srcConsumerArgs": { + "description": "amqp091 configuration", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "srcDeleteAfter": { + "type": "string" + }, + "srcExchange": { + "description": "amqp091 configuration", + "type": "string" + }, + "srcExchangeKey": { + "description": "amqp091 configuration", + "type": "string" + }, + "srcPrefetchCount": { + "type": "integer" + }, + "srcProtocol": { + "type": "string", + "enum": [ + "amqp091", + "amqp10" + ] + }, + "srcQueue": { + "description": "amqp091 configuration", + "type": "string" + }, + "uriSecret": { + "description": "Secret contains the AMQP URI(s) to configure Shovel destination and source.\nThe Secret must contain the key `destUri` and `srcUri` or operator will error.\nBoth fields should be one or multiple uris separated by ','.\nRequired property.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "vhost": { + "description": "Default to vhost '/'; cannot be updated", + "type": "string", + "default": "/" + } + } + }, + "status": { + "description": "ShovelStatus defines the observed state of Shovel", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this Shovel. It corresponds to the\nShovel's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + } + } + }, + "subresources": { + "status": {} + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "shovels", + "singular": "shovel", + "kind": "Shovel", + "listKind": "ShovelList", + "categories": [ + "rabbitmq" + ] + }, + "storedVersions": [ + "v1beta1" + ] + } + }, + "short": "Shovel", + "apiGroup": "rabbitmq.com", + "apiKind": "Shovel", + "apiVersion": "v1beta1", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "rabbitmq", + "sub": "rabbitmq", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "com.rabbitmq.v1beta1.TopicPermission", + "definition": { + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "spec": { + "description": "TopicPermissionSpec defines the desired state of TopicPermission", + "type": "object", + "required": [ + "permissions", + "rabbitmqClusterReference", + "vhost" + ], + "properties": { + "permissions": { + "description": "Permissions to grant to the user to a topic exchange; required property.", + "type": "object", + "properties": { + "exchange": { + "description": "Name of a topic exchange; required property; cannot be updated.", + "type": "string" + }, + "read": { + "type": "string" + }, + "write": { + "type": "string" + } + } + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that both the provided user and vhost are.\nRequired property.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "user": { + "description": "Name of an existing user; must provide user or userReference, else create/update will fail; cannot be updated.", + "type": "string" + }, + "userReference": { + "description": "Reference to an existing user.rabbitmq.com object; must provide user or userReference, else create/update will fail; cannot be updated.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "vhost": { + "description": "Name of an existing vhost; required property; cannot be updated.", + "type": "string" + } + } + }, + "status": { + "description": "TopicPermissionStatus defines the observed state of TopicPermission", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this TopicPermission. It corresponds to the\nTopicPermission's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + }, + "description": "TopicPermission is the Schema for the topicpermissions API", + "type": "object", + "x-kubernetes-group-version-kind": [ + { + "group": "rabbitmq.com", + "kind": "TopicPermission", + "version": "v1beta1" + } + ] + }, + "crd": { + "metadata": { + "name": "topicpermissions.rabbitmq.com" + }, + "spec": { + "group": "rabbitmq.com", + "names": { + "plural": "topicpermissions", + "singular": "topicpermission", + "kind": "TopicPermission", + "listKind": "TopicPermissionList" + }, + "scope": "Namespaced", + "versions": [ + { + "name": "v1beta1", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "TopicPermission is the Schema for the topicpermissions API", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "TopicPermissionSpec defines the desired state of TopicPermission", + "type": "object", + "required": [ + "permissions", + "rabbitmqClusterReference", + "vhost" + ], + "properties": { + "permissions": { + "description": "Permissions to grant to the user to a topic exchange; required property.", + "type": "object", + "properties": { + "exchange": { + "description": "Name of a topic exchange; required property; cannot be updated.", + "type": "string" + }, + "read": { + "type": "string" + }, + "write": { + "type": "string" + } + } + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that both the provided user and vhost are.\nRequired property.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "user": { + "description": "Name of an existing user; must provide user or userReference, else create/update will fail; cannot be updated.", + "type": "string" + }, + "userReference": { + "description": "Reference to an existing user.rabbitmq.com object; must provide user or userReference, else create/update will fail; cannot be updated.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "vhost": { + "description": "Name of an existing vhost; required property; cannot be updated.", + "type": "string" + } + } + }, + "status": { + "description": "TopicPermissionStatus defines the observed state of TopicPermission", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this TopicPermission. It corresponds to the\nTopicPermission's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + } + } + }, + "subresources": { + "status": {} + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "topicpermissions", + "singular": "topicpermission", + "kind": "TopicPermission", + "listKind": "TopicPermissionList" + }, + "storedVersions": [ + "v1beta1" + ] + } + }, + "short": "TopicPermission", + "apiGroup": "rabbitmq.com", + "apiKind": "TopicPermission", + "apiVersion": "v1beta1", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "rabbitmq", + "sub": "rabbitmq", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "com.rabbitmq.v1beta1.User", + "definition": { + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "spec": { + "description": "Spec configures the desired state of the User object.", + "type": "object", + "required": [ + "rabbitmqClusterReference" + ], + "properties": { + "importCredentialsSecret": { + "description": "Defines a Secret used to pre-define the username and password set for this User. User objects created\nwith this field set will not have randomly-generated credentials, and will instead import\nthe username/password values from this Secret.\nThe Secret must contain the keys `username` and `password` in its Data field, or the import will fail.\nNote that this import only occurs at creation time, and is ignored once a password has been set\non a User.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that the user will be created for. This cluster must\nexist for the User object to be created.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "tags": { + "description": "List of permissions tags to associate with the user. This determines the level of\naccess to the RabbitMQ management UI granted to the user. Omitting this field will\nlead to a user than can still connect to the cluster through messaging protocols,\nbut cannot perform any management actions.\nFor more information, see https://www.rabbitmq.com/management.html#permissions.", + "type": "array", + "items": { + "description": "UserTag defines the level of access to the management UI allocated to the user.\nFor more information, see https://www.rabbitmq.com/management.html#permissions.", + "type": "string", + "enum": [ + "management", + "policymaker", + "monitoring", + "administrator" + ] + } + } + } + }, + "status": { + "description": "Status exposes the observed state of the User object.", + "type": "object", + "required": [ + "username" + ], + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "credentials": { + "description": "Provides a reference to a Secret object containing the user credentials.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this User. It corresponds to the\nUser's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + }, + "username": { + "description": "Provide rabbitmq Username", + "type": "string" + } + } + } + }, + "description": "User is the Schema for the users API.", + "type": "object", + "x-kubernetes-group-version-kind": [ + { + "group": "rabbitmq.com", + "kind": "User", + "version": "v1beta1" + } + ] + }, + "crd": { + "metadata": { + "name": "users.rabbitmq.com" + }, + "spec": { + "group": "rabbitmq.com", + "names": { + "plural": "users", + "singular": "user", + "kind": "User", + "listKind": "UserList", + "categories": [ + "rabbitmq" + ] + }, + "scope": "Namespaced", + "versions": [ + { + "name": "v1beta1", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "User is the Schema for the users API.", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "Spec configures the desired state of the User object.", + "type": "object", + "required": [ + "rabbitmqClusterReference" + ], + "properties": { + "importCredentialsSecret": { + "description": "Defines a Secret used to pre-define the username and password set for this User. User objects created\nwith this field set will not have randomly-generated credentials, and will instead import\nthe username/password values from this Secret.\nThe Secret must contain the keys `username` and `password` in its Data field, or the import will fail.\nNote that this import only occurs at creation time, and is ignored once a password has been set\non a User.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" }, - "persistence": { - "description": "The desired persistent storage configuration for each Pod in the cluster.", + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that the user will be created for. This cluster must\nexist for the User object to be created.", "type": "object", - "default": { - "storage": "10Gi" - }, "properties": { - "storage": { - "description": "The requested size of the persistent volume attached to each Pod in the RabbitmqCluster. The format of this field matches that defined by kubernetes/apimachinery. See https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity for more info on the format of this field.", - "default": "10Gi", - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "anyOf": [ - { - "type": "integer" - }, - { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", "type": "string" } - ], - "x-kubernetes-int-or-string": true + }, + "x-kubernetes-map-type": "atomic" }, - "storageClassName": { - "description": "The name of the StorageClass to claim a PersistentVolume from.", + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", "type": "string" } } }, - "rabbitmq": { - "description": "Configuration options for RabbitMQ Pods created in the cluster.", + "tags": { + "description": "List of permissions tags to associate with the user. This determines the level of\naccess to the RabbitMQ management UI granted to the user. Omitting this field will\nlead to a user than can still connect to the cluster through messaging protocols,\nbut cannot perform any management actions.\nFor more information, see https://www.rabbitmq.com/management.html#permissions.", + "type": "array", + "items": { + "description": "UserTag defines the level of access to the management UI allocated to the user.\nFor more information, see https://www.rabbitmq.com/management.html#permissions.", + "type": "string", + "enum": [ + "management", + "policymaker", + "monitoring", + "administrator" + ] + } + } + } + }, + "status": { + "description": "Status exposes the observed state of the User object.", + "type": "object", + "required": [ + "username" + ], + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "credentials": { + "description": "Provides a reference to a Secret object containing the user credentials.", "type": "object", "properties": { - "additionalConfig": { - "description": "Modify to add to the rabbitmq.conf file in addition to default configurations set by the operator. Modifying this property on an existing RabbitmqCluster will trigger a StatefulSet rolling restart and will cause rabbitmq downtime. For more information on this config, see https://www.rabbitmq.com/configure.html#config-file", - "type": "string", - "maxLength": 2000 - }, - "additionalPlugins": { - "description": "List of plugins to enable in addition to essential plugins: rabbitmq_management, rabbitmq_prometheus, and rabbitmq_peer_discovery_k8s.", - "type": "array", - "maxItems": 100, - "items": { - "description": "A Plugin to enable on the RabbitmqCluster.", - "type": "string", - "maxLength": 100, - "pattern": "^\\w+$" - } - }, - "advancedConfig": { - "description": "Specify any rabbitmq advanced.config configurations to apply to the cluster. For more information on advanced config, see https://www.rabbitmq.com/configure.html#advanced-config-file", - "type": "string", - "maxLength": 100000 - }, - "envConfig": { - "description": "Modify to add to the rabbitmq-env.conf file. Modifying this property on an existing RabbitmqCluster will trigger a StatefulSet rolling restart and will cause rabbitmq downtime. For more information on env config, see https://www.rabbitmq.com/man/rabbitmq-env.conf.5.html", - "type": "string", - "maxLength": 100000 - }, - "erlangInetConfig": { - "description": "Erlang Inet configuration to apply to the Erlang VM running rabbit. See also: https://www.erlang.org/doc/apps/erts/inet_cfg.html", - "type": "string", - "maxLength": 2000 + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" } - } + }, + "x-kubernetes-map-type": "atomic" }, - "replicas": { - "description": "Replicas is the number of nodes in the RabbitMQ cluster. Each node is deployed as a Replica in a StatefulSet. Only 1, 3, 5 replicas clusters are tested. This value should be an odd number to ensure the resultant cluster can establish exactly one quorum of nodes in the event of a fragmenting network partition.", + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this User. It corresponds to the\nUser's generation, which is updated on mutation by the API Server.", "type": "integer", - "format": "int32", - "default": 1, - "minimum": 0 + "format": "int64" }, - "resources": { - "description": "The desired compute resource requirements of Pods in the cluster.", - "type": "object", - "default": { - "limits": { - "cpu": "2000m", - "memory": "2Gi" - }, - "requests": { - "cpu": "1000m", - "memory": "2Gi" - } - }, - "properties": { - "claims": { - "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", - "type": "array", - "items": { - "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.", - "type": "string" - } - } - }, - "x-kubernetes-list-map-keys": [ - "name" - ], - "x-kubernetes-list-type": "map" - }, - "limits": { - "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "type": "object", - "additionalProperties": { - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "x-kubernetes-int-or-string": true - } - }, - "requests": { - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "type": "object", - "additionalProperties": { - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "x-kubernetes-int-or-string": true - } - } - } + "username": { + "description": "Provide rabbitmq Username", + "type": "string" + } + } + } + } + } + }, + "subresources": { + "status": {} + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "users", + "singular": "user", + "kind": "User", + "listKind": "UserList", + "categories": [ + "rabbitmq" + ] + }, + "storedVersions": [ + "v1beta1" + ] + } + }, + "short": "User", + "apiGroup": "rabbitmq.com", + "apiKind": "User", + "apiVersion": "v1beta1", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "rabbitmq", + "sub": "rabbitmq", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "com.rabbitmq.v1beta1.Vhost", + "definition": { + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "spec": { + "description": "VhostSpec defines the desired state of Vhost", + "type": "object", + "required": [ + "name", + "rabbitmqClusterReference" + ], + "properties": { + "defaultQueueType": { + "description": "Default queue type for this vhost; can be set to quorum, classic or stream.\nSupported in RabbitMQ 3.11.12 or above.", + "type": "string", + "enum": [ + "quorum", + "classic", + "stream" + ] + }, + "name": { + "description": "Name of the vhost; see https://www.rabbitmq.com/vhosts.html.", + "type": "string" + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that the vhost will be created in.\nRequired property.", + "type": "object", + "properties": { + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", + "type": "string" + } + }, + "x-kubernetes-map-type": "atomic" + }, + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + } + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "tracing": { + "type": "boolean" + } + } + }, + "status": { + "description": "VhostStatus defines the observed state of Vhost", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time this Condition status changed.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "Full text reason for current status of the condition.", + "type": "string" + }, + "reason": { + "description": "One word, camel-case reason for current status of the condition.", + "type": "string" + }, + "status": { + "description": "True, False, or Unknown", + "type": "string" + }, + "type": { + "description": "Type indicates the scope of the custom resource status addressed by the condition.", + "type": "string" + } + } + } + }, + "observedGeneration": { + "description": "observedGeneration is the most recent successful generation observed for this Vhost. It corresponds to the\nVhost's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + } + } + } + }, + "description": "Vhost is the Schema for the vhosts API", + "type": "object", + "x-kubernetes-group-version-kind": [ + { + "group": "rabbitmq.com", + "kind": "Vhost", + "version": "v1beta1" + } + ] + }, + "crd": { + "metadata": { + "name": "vhosts.rabbitmq.com" + }, + "spec": { + "group": "rabbitmq.com", + "names": { + "plural": "vhosts", + "singular": "vhost", + "kind": "Vhost", + "listKind": "VhostList", + "categories": [ + "rabbitmq" + ] + }, + "scope": "Namespaced", + "versions": [ + { + "name": "v1beta1", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "Vhost is the Schema for the vhosts API", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "VhostSpec defines the desired state of Vhost", + "type": "object", + "required": [ + "name", + "rabbitmqClusterReference" + ], + "properties": { + "defaultQueueType": { + "description": "Default queue type for this vhost; can be set to quorum, classic or stream.\nSupported in RabbitMQ 3.11.12 or above.", + "type": "string", + "enum": [ + "quorum", + "classic", + "stream" + ] }, - "secretBackend": { - "description": "Secret backend configuration for the RabbitmqCluster. Enables to fetch default user credentials and certificates from K8s external secret stores.", + "name": { + "description": "Name of the vhost; see https://www.rabbitmq.com/vhosts.html.", + "type": "string" + }, + "rabbitmqClusterReference": { + "description": "Reference to the RabbitmqCluster that the vhost will be created in.\nRequired property.", "type": "object", "properties": { - "externalSecret": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", + "connectionSecret": { + "description": "Secret contains the http management uri for the RabbitMQ cluster.\nThe Secret must contain the key `uri`, `username` and `password` or operator will error.\nHave to set either name or connectionSecret, but not both.", "type": "object", "properties": { "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?", "type": "string" } }, "x-kubernetes-map-type": "atomic" }, - "vault": { - "description": "VaultSpec will add Vault annotations (see https://www.vaultproject.io/docs/platform/k8s/injector/annotations) to RabbitMQ Pods. It requires a Vault Agent Sidecar Injector (https://www.vaultproject.io/docs/platform/k8s/injector) to be installed in the K8s cluster. The injector is a K8s Mutation Webhook Controller that alters RabbitMQ Pod specifications (based on the added Vault annotations) to include Vault Agent containers that render Vault secrets to the volume.", - "type": "object", - "properties": { - "annotations": { - "description": "Vault annotations that override the Vault annotations set by the cluster-operator. For a list of valid Vault annotations, see https://www.vaultproject.io/docs/platform/k8s/injector/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "defaultUserPath": { - "description": "Path in Vault to access a KV (Key-Value) secret with the fields username and password for the default user. For example \"secret/data/rabbitmq/config\".", - "type": "string" - }, - "defaultUserUpdaterImage": { - "description": "Sidecar container that updates the default user's password in RabbitMQ when it changes in Vault. Additionally, it updates /var/lib/rabbitmq/.rabbitmqadmin.conf (used by rabbitmqadmin CLI). Set to empty string to disable the sidecar container.", - "type": "string" - }, - "role": { - "description": "Role in Vault. If vault.defaultUserPath is set, this role must have capability to read the pre-created default user credential in Vault. If vault.tls is set, this role must have capability to create and update certificates in the Vault PKI engine for the domains \"\" and \".svc\".", - "type": "string" - }, - "tls": { - "type": "object", - "properties": { - "altNames": { - "description": "Specifies the requested Subject Alternative Names (SANs), in a comma-delimited list. These will be appended to the SANs added by the cluster-operator. The cluster-operator will add SANs: \"-server-.-nodes.\" for each pod, e.g. \"myrabbit-server-0.myrabbit-nodes.default\".", - "type": "string" - }, - "commonName": { - "description": "Specifies the requested certificate Common Name (CN). Defaults to ..svc if not provided.", - "type": "string" - }, - "ipSans": { - "description": "Specifies the requested IP Subject Alternative Names, in a comma-delimited list.", - "type": "string" - }, - "pkiIssuerPath": { - "description": "Path in Vault PKI engine. For example \"pki/issue/hashicorp-com\". required", - "type": "string" - } - } - } - } - } - } - }, - "service": { - "description": "The desired state of the Kubernetes Service to create for the cluster.", - "type": "object", - "default": { - "type": "ClusterIP" - }, - "properties": { - "annotations": { - "description": "Annotations to add to the Service.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "ipFamilyPolicy": { - "description": "IPFamilyPolicy represents the dual-stack-ness requested or required by a Service See also: https://pkg.go.dev/k8s.io/api/core/v1#IPFamilyPolicy", - "type": "string", - "enum": [ - "SingleStack", - "PreferDualStack", - "RequireDualStack" - ] - }, - "type": { - "description": "Type of Service to create for the cluster. Must be one of: ClusterIP, LoadBalancer, NodePort. For more info see https://pkg.go.dev/k8s.io/api/core/v1#ServiceType", - "type": "string", - "default": "ClusterIP", - "enum": [ - "ClusterIP", - "LoadBalancer", - "NodePort" - ] - } - } - }, - "skipPostDeploySteps": { - "description": "If unset, or set to false, the cluster will run `rabbitmq-queues rebalance all` whenever the cluster is updated. Set to true to prevent the operator rebalancing queue leaders after a cluster update. Has no effect if the cluster only consists of one node. For more information, see https://www.rabbitmq.com/rabbitmq-queues.8.html#rebalance", - "type": "boolean" - }, - "terminationGracePeriodSeconds": { - "description": "TerminationGracePeriodSeconds is the timeout that each rabbitmqcluster pod will have to terminate gracefully. It defaults to 604800 seconds ( a week long) to ensure that the container preStop lifecycle hook can finish running. For more information, see: https://github.com/rabbitmq/cluster-operator/blob/main/docs/design/20200520-graceful-pod-termination.md", - "type": "integer", - "format": "int64", - "default": 604800, - "minimum": 0 - }, - "tls": { - "description": "TLS-related configuration for the RabbitMQ cluster.", - "type": "object", - "properties": { - "caSecretName": { - "description": "Name of a Secret in the same Namespace as the RabbitmqCluster, containing the Certificate Authority's public certificate for TLS. The Secret must store this as ca.crt. This Secret can be created by running `kubectl create secret generic ca-secret --from-file=ca.crt=path/to/ca.cert` Used for mTLS, and TLS for rabbitmq_web_stomp and rabbitmq_web_mqtt.", + "name": { + "description": "The name of the RabbitMQ cluster to reference.\nHave to set either name or connectionSecret, but not both.", "type": "string" }, - "disableNonTLSListeners": { - "description": "When set to true, the RabbitmqCluster disables non-TLS listeners for RabbitMQ, management plugin and for any enabled plugins in the following list: stomp, mqtt, web_stomp, web_mqtt. Only TLS-enabled clients will be able to connect.", - "type": "boolean" - }, - "secretName": { - "description": "Name of a Secret in the same Namespace as the RabbitmqCluster, containing the server's private key & public certificate for TLS. The Secret must store these as tls.key and tls.crt, respectively. This Secret can be created by running `kubectl create secret tls tls-secret --cert=path/to/tls.cert --key=path/to/tls.key`", + "namespace": { + "description": "The namespace of the RabbitMQ cluster to reference.\nDefaults to the namespace of the requested resource if omitted.", "type": "string" } } }, - "tolerations": { - "description": "Tolerations is the list of Toleration resources attached to each Pod in the RabbitmqCluster.", + "tags": { "type": "array", "items": { - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .", - "type": "object", - "properties": { - "effect": { - "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", - "type": "string" - }, - "key": { - "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", - "type": "string" - }, - "operator": { - "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", - "type": "string" - }, - "tolerationSeconds": { - "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", - "type": "integer", - "format": "int64" - }, - "value": { - "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", - "type": "string" - } - } + "type": "string" } + }, + "tracing": { + "type": "boolean" } } }, "status": { - "description": "Status presents the observed state of RabbitmqCluster", + "description": "VhostStatus defines the observed state of Vhost", "type": "object", - "required": [ - "conditions" - ], "properties": { - "binding": { - "description": "Binding exposes a secret containing the binding information for this RabbitmqCluster. It implements the service binding Provisioned Service duck type. See: https://github.com/servicebinding/spec#provisioned-service", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", - "type": "string" - } - }, - "x-kubernetes-map-type": "atomic" - }, "conditions": { - "description": "Set of Conditions describing the current state of the RabbitmqCluster", "type": "array", "items": { "type": "object", @@ -13161,7 +17767,7 @@ ], "properties": { "lastTransitionTime": { - "description": "The last time this Condition type changed.", + "description": "The last time this Condition status changed.", "type": "string", "format": "date-time" }, @@ -13178,64 +17784,14 @@ "type": "string" }, "type": { - "description": "Type indicates the scope of RabbitmqCluster status addressed by the condition.", + "description": "Type indicates the scope of the custom resource status addressed by the condition.", "type": "string" } } } }, - "defaultUser": { - "description": "Identifying information on internal resources", - "type": "object", - "properties": { - "secretReference": { - "description": "Reference to the Kubernetes Secret containing the credentials of the default user.", - "type": "object", - "required": [ - "keys", - "name", - "namespace" - ], - "properties": { - "keys": { - "description": "Key-value pairs in the Secret corresponding to `username`, `password`, `host`, and `port`", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name of the Secret containing the default user credentials", - "type": "string" - }, - "namespace": { - "description": "Namespace of the Secret containing the default user credentials", - "type": "string" - } - } - }, - "serviceReference": { - "description": "Reference to the Kubernetes Service serving the cluster.", - "type": "object", - "required": [ - "name", - "namespace" - ], - "properties": { - "name": { - "description": "Name of the Service serving the cluster", - "type": "string" - }, - "namespace": { - "description": "Namespace of the Service serving the cluster", - "type": "string" - } - } - } - } - }, "observedGeneration": { - "description": "observedGeneration is the most recent successful generation observed for this RabbitmqCluster. It corresponds to the RabbitmqCluster's generation, which is updated on mutation by the API Server.", + "description": "observedGeneration is the most recent successful generation observed for this Vhost. It corresponds to the\nVhost's generation, which is updated on mutation by the API Server.", "type": "integer", "format": "int64" } @@ -13246,24 +17802,7 @@ }, "subresources": { "status": {} - }, - "additionalPrinterColumns": [ - { - "name": "AllReplicasReady", - "type": "string", - "jsonPath": ".status.conditions[?(@.type == 'AllReplicasReady')].status" - }, - { - "name": "ReconcileSuccess", - "type": "string", - "jsonPath": ".status.conditions[?(@.type == 'ReconcileSuccess')].status" - }, - { - "name": "Age", - "type": "date", - "jsonPath": ".metadata.creationTimestamp" - } - ] + } } ], "conversion": {} @@ -13271,15 +17810,11 @@ "status": { "conditions": [], "acceptedNames": { - "plural": "rabbitmqclusters", - "singular": "rabbitmqcluster", - "shortNames": [ - "rmq" - ], - "kind": "RabbitmqCluster", - "listKind": "RabbitmqClusterList", + "plural": "vhosts", + "singular": "vhost", + "kind": "Vhost", + "listKind": "VhostList", "categories": [ - "all", "rabbitmq" ] }, @@ -13288,26 +17823,9 @@ ] } }, - "additionalColumns": [ - { - "name": "AllReplicasReady", - "type": "string", - "jsonPath": ".status.conditions[?(@.type == 'AllReplicasReady')].status" - }, - { - "name": "ReconcileSuccess", - "type": "string", - "jsonPath": ".status.conditions[?(@.type == 'ReconcileSuccess')].status" - }, - { - "name": "Age", - "type": "date", - "jsonPath": ".metadata.creationTimestamp" - } - ], - "short": "RabbitmqCluster", + "short": "Vhost", "apiGroup": "rabbitmq.com", - "apiKind": "RabbitmqCluster", + "apiKind": "Vhost", "apiVersion": "v1beta1", "readProperties": { "spec": "spec", diff --git a/front/components/generic/AdviceOverview.vue b/front/components/generic/AdviceOverview.vue index debb084..6f11658 100644 --- a/front/components/generic/AdviceOverview.vue +++ b/front/components/generic/AdviceOverview.vue @@ -9,7 +9,7 @@ const props=withDefaults(defineProps<{model: object[], short: string, to: (strin showNamespace: false, showKind: true, }); -const advicelist = props.model.map(o=>o.getcoreadvice.map(p=>{ return {namespace: o.metadata.namespace, source: p.source}})).flat() +const advicelist = props.model.map(o=>o.getcoreAdvice.map(p=>{ return {namespace: o.metadata.namespace, source: p.source}})).flat() const advices = ref(advicelist.map(p=>p.namespace).filter(onlyUnique).map(namespace=>advicelist.map(p=>p.source).filter(onlyUnique).map(source=>{return {namespace, source, value: advicelist.filter(p=>p.namespace==namespace&&p.source==source).length}})).flat().filter(p=>p.value>0)) const pieChart = defineAsyncComponent(() => import( '@/components/charts/pieChart.vue')); const stackedBarChart = defineAsyncComponent(() => import( '@/components/charts/stackedBarChart.vue')); diff --git a/front/components/generic/GenericList.vue b/front/components/generic/GenericList.vue index 4334382..e3915b0 100644 --- a/front/components/generic/GenericList.vue +++ b/front/components/generic/GenericList.vue @@ -1,9 +1,10 @@