diff --git a/README.md b/README.md index 8be71f9..d0d5512 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,9 @@ metadata: namespace: qa spec: code: tenant1 + configs: + config1: value1 + config2: value2 id: cbb451f2-a7c0-430a-949c-54d576c77b8d platformRef: charismaonline.qa ``` diff --git a/helm/crds/configuration.totalsoft.ro_configurationdomains.yaml b/helm/crds/configuration.totalsoft.ro_configurationdomains.yaml index 35f7b5b..6995dbb 100644 --- a/helm/crds/configuration.totalsoft.ro_configurationdomains.yaml +++ b/helm/crds/configuration.totalsoft.ro_configurationdomains.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: configurationdomains.configuration.totalsoft.ro spec: group: configuration.totalsoft.ro @@ -32,14 +32,19 @@ spec: openAPIV3Schema: 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. + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -60,42 +65,42 @@ spec: description: Conditions holds the conditions for the ConfigurationDomain. items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -109,11 +114,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string diff --git a/helm/crds/platform.totalsoft.ro_domains.yaml b/helm/crds/platform.totalsoft.ro_domains.yaml index 6120207..3649d8d 100644 --- a/helm/crds/platform.totalsoft.ro_domains.yaml +++ b/helm/crds/platform.totalsoft.ro_domains.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: domains.platform.totalsoft.ro spec: group: platform.totalsoft.ro @@ -19,14 +19,19 @@ spec: openAPIV3Schema: 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. + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object diff --git a/helm/crds/platform.totalsoft.ro_platforms.yaml b/helm/crds/platform.totalsoft.ro_platforms.yaml index b69b7e4..dfc4f41 100644 --- a/helm/crds/platform.totalsoft.ro_platforms.yaml +++ b/helm/crds/platform.totalsoft.ro_platforms.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: platforms.platform.totalsoft.ro spec: group: platform.totalsoft.ro @@ -29,14 +29,19 @@ spec: openAPIV3Schema: 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. + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -53,42 +58,42 @@ spec: description: Conditions holds the conditions for the HelmRepository. items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -102,11 +107,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string diff --git a/helm/crds/platform.totalsoft.ro_services.yaml b/helm/crds/platform.totalsoft.ro_services.yaml index 4bc0b16..c7bcd36 100644 --- a/helm/crds/platform.totalsoft.ro_services.yaml +++ b/helm/crds/platform.totalsoft.ro_services.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: services.platform.totalsoft.ro spec: group: platform.totalsoft.ro @@ -20,14 +20,19 @@ spec: description: Service describes a business service. 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. + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object diff --git a/helm/crds/platform.totalsoft.ro_tenants.yaml b/helm/crds/platform.totalsoft.ro_tenants.yaml index 45a4c60..a4baac7 100644 --- a/helm/crds/platform.totalsoft.ro_tenants.yaml +++ b/helm/crds/platform.totalsoft.ro_tenants.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: tenants.platform.totalsoft.ro spec: group: platform.totalsoft.ro @@ -39,14 +39,19 @@ spec: description: Tenant describes an Application tenant component type. 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. + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -56,6 +61,11 @@ spec: adminEmail: description: Tenant administrator email address. type: string + configs: + additionalProperties: + type: string + description: Tenant specific configs. + type: object deletePolicy: default: RetainStatefulResources description: Possible values are RetainStatefulResources (retain stateful @@ -96,42 +106,42 @@ spec: state of this API Resource items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -145,11 +155,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string diff --git a/helm/crds/provisioning.totalsoft.ro_azuredatabases.yaml b/helm/crds/provisioning.totalsoft.ro_azuredatabases.yaml index d7be6bc..eabe288 100644 --- a/helm/crds/provisioning.totalsoft.ro_azuredatabases.yaml +++ b/helm/crds/provisioning.totalsoft.ro_azuredatabases.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: azuredatabases.provisioning.totalsoft.ro spec: group: provisioning.totalsoft.ro @@ -26,14 +26,19 @@ spec: openAPIV3Schema: 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. + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -51,7 +56,7 @@ spec: this dependency represents. type: string name: - description: The name of the dependency. + description: ' The name of the dependency.' type: string required: - kind @@ -90,8 +95,9 @@ spec: type: object type: array importDatabaseId: - description: 'Existing database to be used instead of creating a new - one eg: /subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/Default-SQL-SouthEastAsia/providers/Microsoft.Sql/servers/testsvr/databases/testdb' + description: |- + Existing database to be used instead of creating a new one + eg: /subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/Default-SQL-SouthEastAsia/providers/Microsoft.Sql/servers/testsvr/databases/testdb type: string platformRef: description: Target platform (custom resource name). @@ -99,8 +105,9 @@ spec: sku: type: string sourceDatabaseId: - description: 'Source database from which a new database is copied - eg: /subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/Default-SQL-SouthEastAsia/providers/Microsoft.Sql/servers/testsvr/databases/testdb' + description: |- + Source database from which a new database is copied + eg: /subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/Default-SQL-SouthEastAsia/providers/Microsoft.Sql/servers/testsvr/databases/testdb type: string sqlServer: description: Azure Sql Server spec. New database will be created on @@ -132,8 +139,9 @@ spec: - Platform type: string filter: - description: Filter targets (applies for category "Tenant"). If - ommited all targets are selected. + description: |- + Filter targets (applies for category "Tenant"). + If ommited all targets are selected. properties: kind: default: Blacklist @@ -157,9 +165,9 @@ spec: tenantOverrides: additionalProperties: x-kubernetes-preserve-unknown-fields: true - description: Overrides for tenants. Dictionary with tenant name as - key, spec override as value. The spec override has the same structure - as Spec + description: |- + Overrides for tenants. Dictionary with tenant name as key, spec override as value. + The spec override has the same structure as Spec type: object required: - dbName diff --git a/helm/crds/provisioning.totalsoft.ro_azuremanageddatabases.yaml b/helm/crds/provisioning.totalsoft.ro_azuremanageddatabases.yaml index 90b936b..df1108b 100644 --- a/helm/crds/provisioning.totalsoft.ro_azuremanageddatabases.yaml +++ b/helm/crds/provisioning.totalsoft.ro_azuremanageddatabases.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: azuremanageddatabases.provisioning.totalsoft.ro spec: group: provisioning.totalsoft.ro @@ -26,14 +26,19 @@ spec: openAPIV3Schema: 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. + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -52,7 +57,7 @@ spec: this dependency represents. type: string name: - description: The name of the dependency. + description: ' The name of the dependency.' type: string required: - kind @@ -92,8 +97,9 @@ spec: type: object type: array importDatabaseId: - description: 'Existing database to be used instead of creating a new - one eg: /subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/Default-SQL-SouthEastAsia/providers/Microsoft.Sql/servers/testsvr/databases/testdb' + description: |- + Existing database to be used instead of creating a new one + eg: /subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/Default-SQL-SouthEastAsia/providers/Microsoft.Sql/servers/testsvr/databases/testdb type: string managedInstance: description: Target managed instance spec. @@ -150,8 +156,9 @@ spec: - Platform type: string filter: - description: Filter targets (applies for category "Tenant"). If - ommited all targets are selected. + description: |- + Filter targets (applies for category "Tenant"). + If ommited all targets are selected. properties: kind: default: Blacklist @@ -175,9 +182,9 @@ spec: tenantOverrides: additionalProperties: x-kubernetes-preserve-unknown-fields: true - description: Overrides for tenants. Dictionary with tenant name as - key, spec override as value. The spec override has the same structure - as Spec + description: |- + Overrides for tenants. Dictionary with tenant name as key, spec override as value. + The spec override has the same structure as Spec type: object required: - dbName diff --git a/helm/crds/provisioning.totalsoft.ro_azurevirtualdesktops.yaml b/helm/crds/provisioning.totalsoft.ro_azurevirtualdesktops.yaml index 474e58a..9fe63ea 100644 --- a/helm/crds/provisioning.totalsoft.ro_azurevirtualdesktops.yaml +++ b/helm/crds/provisioning.totalsoft.ro_azurevirtualdesktops.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: azurevirtualdesktops.provisioning.totalsoft.ro spec: group: provisioning.totalsoft.ro @@ -23,14 +23,19 @@ spec: openAPIV3Schema: 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. + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -74,7 +79,7 @@ spec: this dependency represents. type: string name: - description: The name of the dependency. + description: ' The name of the dependency.' type: string required: - kind @@ -209,10 +214,14 @@ spec: description: Target platform (custom resource name). type: string sourceImageId: - description: 'Source OS disk snapshot eg: /subscriptions/05a50a12-6628-4627-bd30-19932dac39f8/resourceGroups/Provisioning_Test/providers/Microsoft.Compute/galleries/MyGallery/images/ch-client-base/versions/2.0.0' + description: |- + Source OS disk snapshot + eg: /subscriptions/05a50a12-6628-4627-bd30-19932dac39f8/resourceGroups/Provisioning_Test/providers/Microsoft.Compute/galleries/MyGallery/images/ch-client-base/versions/2.0.0 type: string subnetId: - description: 'Subnet of the VNet used by the virtual machine eg: /subscriptions/05a50a12-6628-4627-bd30-19932dac39f8/resourceGroups/charismaonline.qa/providers/Microsoft.Network/virtualNetworks/charismaonline-vnet/subnets/default' + description: |- + Subnet of the VNet used by the virtual machine + eg: /subscriptions/05a50a12-6628-4627-bd30-19932dac39f8/resourceGroups/charismaonline.qa/providers/Microsoft.Network/virtualNetworks/charismaonline-vnet/subnets/default type: string target: default: @@ -228,8 +237,9 @@ spec: - Platform type: string filter: - description: Filter targets (applies for category "Tenant"). If - ommited all targets are selected. + description: |- + Filter targets (applies for category "Tenant"). + If ommited all targets are selected. properties: kind: default: Blacklist @@ -253,9 +263,9 @@ spec: tenantOverrides: additionalProperties: x-kubernetes-preserve-unknown-fields: true - description: Overrides for tenants. Dictionary with tenant name as - key, spec override as value. The spec override has the same structure - as Spec + description: |- + Overrides for tenants. Dictionary with tenant name as key, spec override as value. + The spec override has the same structure as Spec type: object users: properties: @@ -276,8 +286,9 @@ spec: description: 'Installation order index. Eg: 1, 2, 3' type: integer packageId: - description: 'Source gallery application id or application version - id eg: subscriptions/15b38e46-ef41-4f5b-bdba-7d9354568c2d/resourceGroups/test-vm/providers/Microsoft.Compute/galleries/lfgalery/applications/charisma-client/versions/4.33.0' + description: |- + Source gallery application id or application version id + eg: subscriptions/15b38e46-ef41-4f5b-bdba-7d9354568c2d/resourceGroups/test-vm/providers/Microsoft.Compute/galleries/lfgalery/applications/charisma-client/versions/4.33.0 type: string required: - installOrderIndex diff --git a/helm/crds/provisioning.totalsoft.ro_azurevirtualmachines.yaml b/helm/crds/provisioning.totalsoft.ro_azurevirtualmachines.yaml index fdec404..d19ba08 100644 --- a/helm/crds/provisioning.totalsoft.ro_azurevirtualmachines.yaml +++ b/helm/crds/provisioning.totalsoft.ro_azurevirtualmachines.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: azurevirtualmachines.provisioning.totalsoft.ro spec: group: provisioning.totalsoft.ro @@ -23,14 +23,19 @@ spec: openAPIV3Schema: 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. + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -45,7 +50,7 @@ spec: this dependency represents. type: string name: - description: The name of the dependency. + description: ' The name of the dependency.' type: string required: - kind @@ -166,15 +171,19 @@ spec: description: Target platform (custom resource name). type: string rdpSourceAddressPrefix: - description: 'RDP inbound connection CIDR or source IP range or * - to match any IP. Tags such as ‘VirtualNetwork’, ‘AzureLoadBalancer’ - and ‘Internet’ can also be used. eg: 128.0.57.0/25' + description: |- + RDP inbound connection CIDR or source IP range or * to match any IP. Tags such as ‘VirtualNetwork’, ‘AzureLoadBalancer’ and ‘Internet’ can also be used. + eg: 128.0.57.0/25 type: string sourceImageId: - description: 'Source OS disk snapshot eg: /subscriptions/05a50a12-6628-4627-bd30-19932dac39f8/resourceGroups/Provisioning_Test/providers/Microsoft.Compute/galleries/MyGallery/images/ch-client-base/versions/2.0.0' + description: |- + Source OS disk snapshot + eg: /subscriptions/05a50a12-6628-4627-bd30-19932dac39f8/resourceGroups/Provisioning_Test/providers/Microsoft.Compute/galleries/MyGallery/images/ch-client-base/versions/2.0.0 type: string subnetId: - description: 'Subnet of the VNet used by the virtual machine eg: /subscriptions/05a50a12-6628-4627-bd30-19932dac39f8/resourceGroups/charismaonline.qa/providers/Microsoft.Network/virtualNetworks/charismaonline-vnet/subnets/default' + description: |- + Subnet of the VNet used by the virtual machine + eg: /subscriptions/05a50a12-6628-4627-bd30-19932dac39f8/resourceGroups/charismaonline.qa/providers/Microsoft.Network/virtualNetworks/charismaonline-vnet/subnets/default type: string target: default: @@ -190,8 +199,9 @@ spec: - Platform type: string filter: - description: Filter targets (applies for category "Tenant"). If - ommited all targets are selected. + description: |- + Filter targets (applies for category "Tenant"). + If ommited all targets are selected. properties: kind: default: Blacklist @@ -215,9 +225,9 @@ spec: tenantOverrides: additionalProperties: x-kubernetes-preserve-unknown-fields: true - description: Overrides for tenants. Dictionary with tenant name as - key, spec override as value. The spec override has the same structure - as Spec + description: |- + Overrides for tenants. Dictionary with tenant name as key, spec override as value. + The spec override has the same structure as Spec type: object vmName: description: Virtual Machine name prefix. Will have platform and tenant diff --git a/helm/crds/provisioning.totalsoft.ro_helmreleases.yaml b/helm/crds/provisioning.totalsoft.ro_helmreleases.yaml index 987b5a5..4d7a3c6 100644 --- a/helm/crds/provisioning.totalsoft.ro_helmreleases.yaml +++ b/helm/crds/provisioning.totalsoft.ro_helmreleases.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: helmreleases.provisioning.totalsoft.ro spec: group: provisioning.totalsoft.ro @@ -23,14 +23,19 @@ spec: openAPIV3Schema: 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. + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -45,7 +50,7 @@ spec: this dependency represents. type: string name: - description: The name of the dependency. + description: ' The name of the dependency.' type: string required: - kind @@ -90,8 +95,9 @@ spec: description: helm release spec properties: chart: - description: Chart defines the template of the v1beta2.HelmChart - that should be created for this HelmRelease. + description: |- + Chart defines the template of the v1beta2.HelmChart that should be created + for this HelmRelease. properties: metadata: description: ObjectMeta holds the template for metadata like @@ -100,18 +106,19 @@ spec: annotations: additionalProperties: type: string - description: 'Annotations is an unstructured key value - map stored with a resource that may be set by external - tools to store and retrieve arbitrary metadata. They - are not queryable and should be preserved when modifying - objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/' + description: |- + Annotations is an unstructured key value map stored with a resource that may be + set by external tools to store and retrieve arbitrary metadata. They are not + queryable and should be preserved when modifying objects. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ type: object labels: additionalProperties: type: string - description: 'Map of string keys and values that can be - used to organize and categorize (scope and select) objects. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/' + description: |- + Map of string keys and values that can be used to organize and categorize + (scope and select) objects. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ type: object type: object spec: @@ -123,16 +130,18 @@ spec: at in the SourceRef. type: string interval: - description: Interval at which to check the v1beta2.Source - for updates. Defaults to 'HelmReleaseSpec.Interval'. + description: |- + Interval at which to check the v1beta2.Source for updates. Defaults to + 'HelmReleaseSpec.Interval'. pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m|h))+$ type: string reconcileStrategy: default: ChartVersion - description: Determines what enables the creation of a - new artifact. Valid values are ('ChartVersion', 'Revision'). - See the documentation of the values for an explanation - on their behavior. Defaults to ChartVersion when omitted. + description: |- + Determines what enables the creation of a new artifact. Valid values are + ('ChartVersion', 'Revision'). + See the documentation of the values for an explanation on their behavior. + Defaults to ChartVersion when omitted. enum: - ChartVersion - Revision @@ -165,28 +174,28 @@ spec: - name type: object valuesFile: - description: Alternative values file to use as the default - chart values, expected to be a relative path in the - SourceRef. Deprecated in favor of ValuesFiles, for backwards - compatibility the file defined here is merged before - the ValuesFiles items. Ignored when omitted. + description: |- + Alternative values file to use as the default chart values, expected to + be a relative path in the SourceRef. Deprecated in favor of ValuesFiles, + for backwards compatibility the file defined here is merged before the + ValuesFiles items. Ignored when omitted. type: string valuesFiles: - description: Alternative list of values files to use as - the chart values (values.yaml is not included by default), - expected to be a relative path in the SourceRef. Values - files are merged in the order of this list with the - last file overriding the first. Ignored when omitted. + description: |- + Alternative list of values files to use as the chart values (values.yaml + is not included by default), expected to be a relative path in the SourceRef. + Values files are merged in the order of this list with the last file overriding + the first. Ignored when omitted. items: type: string type: array verify: - description: Verify contains the secret name containing - the trusted public keys used to verify the signature - and specifies which provider to use to check whether - OCI image is authentic. This field is only supported - for OCI sources. Chart dependencies, which are not bundled - in the umbrella chart artifact, are not verified. + description: |- + Verify contains the secret name containing the trusted public keys + used to verify the signature and specifies which provider to use to check + whether OCI image is authentic. + This field is only supported for OCI sources. + Chart dependencies, which are not bundled in the umbrella chart artifact, are not verified. properties: provider: default: cosign @@ -196,8 +205,9 @@ spec: - cosign type: string secretRef: - description: SecretRef specifies the Kubernetes Secret - containing the trusted public keys. + description: |- + SecretRef specifies the Kubernetes Secret containing the + trusted public keys. properties: name: description: Name of the referent. @@ -210,9 +220,9 @@ spec: type: object version: default: '*' - description: Version semver expression, ignored for charts - from v1beta2.GitRepository and v1beta2.Bucket sources. - Defaults to latest when omitted. + description: |- + Version semver expression, ignored for charts from v1beta2.GitRepository and + v1beta2.Bucket sources. Defaults to latest when omitted. type: string required: - chart @@ -222,12 +232,13 @@ spec: - spec type: object dependsOn: - description: DependsOn may contain a meta.NamespacedObjectReference - slice with references to HelmRelease resources that must be - ready before this HelmRelease can be reconciled. + description: |- + DependsOn may contain a meta.NamespacedObjectReference slice with + references to HelmRelease resources that must be ready before this HelmRelease + can be reconciled. items: - description: NamespacedObjectReference contains enough information - to locate the referenced Kubernetes resource object in any + description: |- + NamespacedObjectReference contains enough information to locate the referenced Kubernetes resource object in any namespace. properties: name: @@ -246,84 +257,98 @@ spec: actions for this HelmRelease. properties: crds: - description: "CRDs upgrade CRDs from the Helm Chart's crds - directory according to the CRD upgrade policy provided here. - Valid values are `Skip`, `Create` or `CreateReplace`. Default - is `Create` and if omitted CRDs are installed but not updated. - \n Skip: do neither install nor replace (update) any CRDs. - \n Create: new CRDs are created, existing CRDs are neither - updated nor deleted. \n CreateReplace: new CRDs are created, - existing CRDs are updated (replaced) but not deleted. \n - By default, CRDs are applied (installed) during Helm install - action. With this option users can opt-in to CRD replace - existing CRDs on Helm install actions, which is not (yet) - natively supported by Helm. https://helm.sh/docs/chart_best_practices/custom_resource_definitions." + description: |- + CRDs upgrade CRDs from the Helm Chart's crds directory according + to the CRD upgrade policy provided here. Valid values are `Skip`, + `Create` or `CreateReplace`. Default is `Create` and if omitted + CRDs are installed but not updated. + + + Skip: do neither install nor replace (update) any CRDs. + + + Create: new CRDs are created, existing CRDs are neither updated nor deleted. + + + CreateReplace: new CRDs are created, existing CRDs are updated (replaced) + but not deleted. + + + By default, CRDs are applied (installed) during Helm install action. + With this option users can opt-in to CRD replace existing CRDs on Helm + install actions, which is not (yet) natively supported by Helm. + https://helm.sh/docs/chart_best_practices/custom_resource_definitions. enum: - Skip - Create - CreateReplace type: string createNamespace: - description: CreateNamespace tells the Helm install action - to create the HelmReleaseSpec.TargetNamespace if it does - not exist yet. On uninstall, the namespace will not be garbage - collected. + description: |- + CreateNamespace tells the Helm install action to create the + HelmReleaseSpec.TargetNamespace if it does not exist yet. + On uninstall, the namespace will not be garbage collected. type: boolean disableHooks: description: DisableHooks prevents hooks from running during the Helm install action. type: boolean disableOpenAPIValidation: - description: DisableOpenAPIValidation prevents the Helm install - action from validating rendered templates against the Kubernetes - OpenAPI Schema. + description: |- + DisableOpenAPIValidation prevents the Helm install action from validating + rendered templates against the Kubernetes OpenAPI Schema. type: boolean disableWait: - description: DisableWait disables the waiting for resources - to be ready after a Helm install has been performed. + description: |- + DisableWait disables the waiting for resources to be ready after a Helm + install has been performed. type: boolean disableWaitForJobs: - description: DisableWaitForJobs disables waiting for jobs - to complete after a Helm install has been performed. + description: |- + DisableWaitForJobs disables waiting for jobs to complete after a Helm + install has been performed. type: boolean remediation: - description: Remediation holds the remediation configuration - for when the Helm install action for the HelmRelease fails. - The default is to not perform any action. + description: |- + Remediation holds the remediation configuration for when the Helm install + action for the HelmRelease fails. The default is to not perform any action. properties: ignoreTestFailures: - description: IgnoreTestFailures tells the controller to - skip remediation when the Helm tests are run after an - install action but fail. Defaults to 'Test.IgnoreFailures'. + description: |- + IgnoreTestFailures tells the controller to skip remediation when the Helm + tests are run after an install action but fail. Defaults to + 'Test.IgnoreFailures'. type: boolean remediateLastFailure: - description: RemediateLastFailure tells the controller - to remediate the last failure, when no retries remain. - Defaults to 'false'. + description: |- + RemediateLastFailure tells the controller to remediate the last failure, when + no retries remain. Defaults to 'false'. type: boolean retries: - description: Retries is the number of retries that should - be attempted on failures before bailing. Remediation, - using an uninstall, is performed between each attempt. - Defaults to '0', a negative integer equals to unlimited - retries. + description: |- + Retries is the number of retries that should be attempted on failures before + bailing. Remediation, using an uninstall, is performed between each attempt. + Defaults to '0', a negative integer equals to unlimited retries. type: integer type: object replace: - description: Replace tells the Helm install action to re-use - the 'ReleaseName', but only if that name is a deleted release - which remains in the history. + description: |- + Replace tells the Helm install action to re-use the 'ReleaseName', but only + if that name is a deleted release which remains in the history. type: boolean skipCRDs: - description: "SkipCRDs tells the Helm install action to not - install any CRDs. By default, CRDs are installed if not - already present. \n Deprecated use CRD policy (`crds`) attribute - with value `Skip` instead." + description: |- + SkipCRDs tells the Helm install action to not install any CRDs. By default, + CRDs are installed if not already present. + + + Deprecated use CRD policy (`crds`) attribute with value `Skip` instead. type: boolean timeout: - description: Timeout is the time to wait for any individual - Kubernetes operation (like Jobs for hooks) during the performance - of a Helm install action. Defaults to 'HelmReleaseSpec.Timeout'. + description: |- + Timeout is the time to wait for any individual Kubernetes operation (like + Jobs for hooks) during the performance of a Helm install action. Defaults to + 'HelmReleaseSpec.Timeout'. pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m|h))+$ type: string type: object @@ -332,22 +357,25 @@ spec: pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m|h))+$ type: string kubeConfig: - description: KubeConfig for reconciling the HelmRelease on a remote - cluster. When used in combination with HelmReleaseSpec.ServiceAccountName, - forces the controller to act on behalf of that Service Account - at the target cluster. If the --default-service-account flag - is set, its value will be used as a controller level fallback - for when HelmReleaseSpec.ServiceAccountName is empty. + description: |- + KubeConfig for reconciling the HelmRelease on a remote cluster. + When used in combination with HelmReleaseSpec.ServiceAccountName, + forces the controller to act on behalf of that Service Account at the + target cluster. + If the --default-service-account flag is set, its value will be used as + a controller level fallback for when HelmReleaseSpec.ServiceAccountName + is empty. properties: secretRef: - description: SecretRef holds the name of a secret that contains - a key with the kubeconfig file as the value. If no key is - set, the key will default to 'value'. It is recommended - that the kubeconfig is self-contained, and the secret is - regularly updated if credentials such as a cloud-access-token - expire. Cloud specific `cmd-path` auth helpers will not - function without adding binaries and credentials to the - Pod that is responsible for reconciling Kubernetes resources. + description: |- + SecretRef holds the name of a secret that contains a key with + the kubeconfig file as the value. If no key is set, the key will default + to 'value'. + It is recommended that the kubeconfig is self-contained, and the secret + is regularly updated if credentials such as a cloud-access-token expire. + Cloud specific `cmd-path` auth helpers will not function without adding + binaries and credentials to the Pod that is responsible for reconciling + Kubernetes resources. properties: key: description: Key in the Secret, when not specified an @@ -363,24 +391,30 @@ spec: - secretRef type: object maxHistory: - description: MaxHistory is the number of revisions saved by Helm - for this HelmRelease. Use '0' for an unlimited number of revisions; - defaults to '10'. + description: |- + MaxHistory is the number of revisions saved by Helm for this HelmRelease. + Use '0' for an unlimited number of revisions; defaults to '10'. type: integer persistentClient: - description: "PersistentClient tells the controller to use a persistent - Kubernetes client for this release. When enabled, the client - will be reused for the duration of the reconciliation, instead - of being created and destroyed for each (step of a) Helm action. - \n This can improve performance, but may cause issues with some - Helm charts that for example do create Custom Resource Definitions - during installation outside Helm's CRD lifecycle hooks, which - are then not observed to be available by e.g. post-install hooks. - \n If not set, it defaults to true." + description: |- + PersistentClient tells the controller to use a persistent Kubernetes + client for this release. When enabled, the client will be reused for the + duration of the reconciliation, instead of being created and destroyed + for each (step of a) Helm action. + + + This can improve performance, but may cause issues with some Helm charts + that for example do create Custom Resource Definitions during installation + outside Helm's CRD lifecycle hooks, which are then not observed to be + available by e.g. post-install hooks. + + + If not set, it defaults to true. type: boolean postRenderers: - description: PostRenderers holds an array of Helm PostRenderers, - which will be applied in order of their definition. + description: |- + PostRenderers holds an array of Helm PostRenderers, which will be applied in order + of their definition. items: description: PostRenderer contains a Helm PostRenderer specification. properties: @@ -388,19 +422,19 @@ spec: description: Kustomization to apply as PostRenderer. properties: images: - description: Images is a list of (image name, new name, - new tag or digest) for changing image names, tags - or digests. This can also be achieved with a patch, - but this operator is simpler to specify. + description: |- + Images is a list of (image name, new name, new tag or digest) + for changing image names, tags or digests. This can also be achieved with a + patch, but this operator is simpler to specify. items: description: Image contains an image name, a new name, a new tag or digest, which will replace the original name and tag. properties: digest: - description: Digest is the value used to replace - the original image tag. If digest is present - NewTag value is ignored. + description: |- + Digest is the value used to replace the original image tag. + If digest is present NewTag value is ignored. type: string name: description: Name is a tag-less image name. @@ -418,44 +452,46 @@ spec: type: object type: array patches: - description: Strategic merge and JSON patches, defined - as inline YAML objects, capable of targeting objects - based on kind, label and annotation selectors. + description: |- + Strategic merge and JSON patches, defined as inline YAML objects, + capable of targeting objects based on kind, label and annotation selectors. items: - description: Patch contains an inline StrategicMerge - or JSON6902 patch, and the target the patch should + description: |- + Patch contains an inline StrategicMerge or JSON6902 patch, and the target the patch should be applied to. properties: patch: - description: Patch contains an inline StrategicMerge - patch or an inline JSON6902 patch with an array - of operation objects. + description: |- + Patch contains an inline StrategicMerge patch or an inline JSON6902 patch with + an array of operation objects. type: string target: description: Target points to the resources that the patch document should be applied to. properties: annotationSelector: - description: AnnotationSelector is a string - that follows the label selection expression + description: |- + AnnotationSelector is a string that follows the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api It matches with the resource annotations. type: string group: - description: Group is the API group to select - resources from. Together with Version and - Kind it is capable of unambiguously identifying - and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + description: |- + Group is the API group to select resources from. + Together with Version and Kind it is capable of unambiguously identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md type: string kind: - description: Kind of the API Group to select - resources from. Together with Group and - Version it is capable of unambiguously identifying - and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + description: |- + Kind of the API Group to select resources from. + Together with Group and Version it is capable of unambiguously + identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md type: string labelSelector: - description: LabelSelector is a string that - follows the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + description: |- + LabelSelector is a string that follows the label selection expression + https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api It matches with the resource labels. type: string name: @@ -466,10 +502,10 @@ spec: from. type: string version: - description: Version of the API Group to select - resources from. Together with Group and - Kind it is capable of unambiguously identifying - and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + description: |- + Version of the API Group to select resources from. + Together with Group and Kind it is capable of unambiguously identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md type: string type: object required: @@ -487,22 +523,20 @@ spec: description: Patch contains the JSON6902 patch document with an array of operation objects. items: - description: JSON6902 is a JSON6902 operation - object. https://datatracker.ietf.org/doc/html/rfc6902#section-4 + description: |- + JSON6902 is a JSON6902 operation object. + https://datatracker.ietf.org/doc/html/rfc6902#section-4 properties: from: - description: From contains a JSON-pointer - value that references a location within - the target document where the operation - is performed. The meaning of the value - depends on the value of Op, and is NOT - taken into account by all operations. + description: |- + From contains a JSON-pointer value that references a location within the target document where the operation is + performed. The meaning of the value depends on the value of Op, and is NOT taken into account by all operations. type: string op: - description: Op indicates the operation - to perform. Its value MUST be one of "add", - "remove", "replace", "move", "copy", or - "test". https://datatracker.ietf.org/doc/html/rfc6902#section-4 + description: |- + Op indicates the operation to perform. Its value MUST be one of "add", "remove", "replace", "move", "copy", or + "test". + https://datatracker.ietf.org/doc/html/rfc6902#section-4 enum: - test - remove @@ -512,16 +546,13 @@ spec: - copy type: string path: - description: Path contains the JSON-pointer - value that references a location within - the target document where the operation - is performed. The meaning of the value - depends on the value of Op. + description: |- + Path contains the JSON-pointer value that references a location within the target document where the operation + is performed. The meaning of the value depends on the value of Op. type: string value: - description: Value contains a valid JSON - structure. The meaning of the value depends - on the value of Op, and is NOT taken into + description: |- + Value contains a valid JSON structure. The meaning of the value depends on the value of Op, and is NOT taken into account by all operations. x-kubernetes-preserve-unknown-fields: true required: @@ -534,26 +565,28 @@ spec: the patch document should be applied to. properties: annotationSelector: - description: AnnotationSelector is a string - that follows the label selection expression + description: |- + AnnotationSelector is a string that follows the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api It matches with the resource annotations. type: string group: - description: Group is the API group to select - resources from. Together with Version and - Kind it is capable of unambiguously identifying - and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + description: |- + Group is the API group to select resources from. + Together with Version and Kind it is capable of unambiguously identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md type: string kind: - description: Kind of the API Group to select - resources from. Together with Group and - Version it is capable of unambiguously identifying - and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + description: |- + Kind of the API Group to select resources from. + Together with Group and Version it is capable of unambiguously + identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md type: string labelSelector: - description: LabelSelector is a string that - follows the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + description: |- + LabelSelector is a string that follows the label selection expression + https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api It matches with the resource labels. type: string name: @@ -564,10 +597,10 @@ spec: from. type: string version: - description: Version of the API Group to select - resources from. Together with Group and - Kind it is capable of unambiguously identifying - and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + description: |- + Version of the API Group to select resources from. + Together with Group and Kind it is capable of unambiguously identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md type: string type: object required: @@ -585,8 +618,9 @@ spec: type: object type: array releaseName: - description: ReleaseName used for the Helm release. Defaults to - a composition of '[TargetNamespace-]Name'. + description: |- + ReleaseName used for the Helm release. Defaults to a composition of + '[TargetNamespace-]Name'. maxLength: 53 minLength: 1 type: string @@ -595,20 +629,23 @@ spec: actions for this HelmRelease. properties: cleanupOnFail: - description: CleanupOnFail allows deletion of new resources - created during the Helm rollback action when it fails. + description: |- + CleanupOnFail allows deletion of new resources created during the Helm + rollback action when it fails. type: boolean disableHooks: description: DisableHooks prevents hooks from running during the Helm rollback action. type: boolean disableWait: - description: DisableWait disables the waiting for resources - to be ready after a Helm rollback has been performed. + description: |- + DisableWait disables the waiting for resources to be ready after a Helm + rollback has been performed. type: boolean disableWaitForJobs: - description: DisableWaitForJobs disables waiting for jobs - to complete after a Helm rollback has been performed. + description: |- + DisableWaitForJobs disables waiting for jobs to complete after a Helm + rollback has been performed. type: boolean force: description: Force forces resource updates through a replacement @@ -619,30 +656,34 @@ spec: if applicable. type: boolean timeout: - description: Timeout is the time to wait for any individual - Kubernetes operation (like Jobs for hooks) during the performance - of a Helm rollback action. Defaults to 'HelmReleaseSpec.Timeout'. + description: |- + Timeout is the time to wait for any individual Kubernetes operation (like + Jobs for hooks) during the performance of a Helm rollback action. Defaults to + 'HelmReleaseSpec.Timeout'. pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m|h))+$ type: string type: object serviceAccountName: - description: The name of the Kubernetes service account to impersonate + description: |- + The name of the Kubernetes service account to impersonate when reconciling this HelmRelease. type: string storageNamespace: - description: StorageNamespace used for the Helm storage. Defaults - to the namespace of the HelmRelease. + description: |- + StorageNamespace used for the Helm storage. + Defaults to the namespace of the HelmRelease. maxLength: 63 minLength: 1 type: string suspend: - description: Suspend tells the controller to suspend reconciliation - for this HelmRelease, it does not apply to already started reconciliations. - Defaults to false. + description: |- + Suspend tells the controller to suspend reconciliation for this HelmRelease, + it does not apply to already started reconciliations. Defaults to false. type: boolean targetNamespace: - description: TargetNamespace to target when performing operations - for the HelmRelease. Defaults to the namespace of the HelmRelease. + description: |- + TargetNamespace to target when performing operations for the HelmRelease. + Defaults to the namespace of the HelmRelease. maxLength: 63 minLength: 1 type: string @@ -651,26 +692,27 @@ spec: for this HelmRelease. properties: enable: - description: Enable enables Helm test actions for this HelmRelease - after an Helm install or upgrade action has been performed. + description: |- + Enable enables Helm test actions for this HelmRelease after an Helm install + or upgrade action has been performed. type: boolean ignoreFailures: - description: IgnoreFailures tells the controller to skip remediation - when the Helm tests are run but fail. Can be overwritten - for tests run after install or upgrade actions in 'Install.IgnoreTestFailures' - and 'Upgrade.IgnoreTestFailures'. + description: |- + IgnoreFailures tells the controller to skip remediation when the Helm tests + are run but fail. Can be overwritten for tests run after install or upgrade + actions in 'Install.IgnoreTestFailures' and 'Upgrade.IgnoreTestFailures'. type: boolean timeout: - description: Timeout is the time to wait for any individual - Kubernetes operation during the performance of a Helm test - action. Defaults to 'HelmReleaseSpec.Timeout'. + description: |- + Timeout is the time to wait for any individual Kubernetes operation during + the performance of a Helm test action. Defaults to 'HelmReleaseSpec.Timeout'. pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m|h))+$ type: string type: object timeout: - description: Timeout is the time to wait for any individual Kubernetes - operation (like Jobs for hooks) during the performance of a - Helm action. Defaults to '5m0s'. + description: |- + Timeout is the time to wait for any individual Kubernetes operation (like Jobs + for hooks) during the performance of a Helm action. Defaults to '5m0s'. pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m|h))+$ type: string uninstall: @@ -682,18 +724,20 @@ spec: the Helm rollback action. type: boolean disableWait: - description: DisableWait disables waiting for all the resources - to be deleted after a Helm uninstall is performed. + description: |- + DisableWait disables waiting for all the resources to be deleted after + a Helm uninstall is performed. type: boolean keepHistory: - description: KeepHistory tells Helm to remove all associated - resources and mark the release as deleted, but retain the - release history. + description: |- + KeepHistory tells Helm to remove all associated resources and mark the + release as deleted, but retain the release history. type: boolean timeout: - description: Timeout is the time to wait for any individual - Kubernetes operation (like Jobs for hooks) during the performance - of a Helm uninstall action. Defaults to 'HelmReleaseSpec.Timeout'. + description: |- + Timeout is the time to wait for any individual Kubernetes operation (like + Jobs for hooks) during the performance of a Helm uninstall action. Defaults + to 'HelmReleaseSpec.Timeout'. pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m|h))+$ type: string type: object @@ -702,22 +746,31 @@ spec: actions for this HelmRelease. properties: cleanupOnFail: - description: CleanupOnFail allows deletion of new resources - created during the Helm upgrade action when it fails. + description: |- + CleanupOnFail allows deletion of new resources created during the Helm + upgrade action when it fails. type: boolean crds: - description: "CRDs upgrade CRDs from the Helm Chart's crds - directory according to the CRD upgrade policy provided here. - Valid values are `Skip`, `Create` or `CreateReplace`. Default - is `Skip` and if omitted CRDs are neither installed nor - upgraded. \n Skip: do neither install nor replace (update) - any CRDs. \n Create: new CRDs are created, existing CRDs - are neither updated nor deleted. \n CreateReplace: new CRDs - are created, existing CRDs are updated (replaced) but not - deleted. \n By default, CRDs are not applied during Helm - upgrade action. With this option users can opt-in to CRD - upgrade, which is not (yet) natively supported by Helm. - https://helm.sh/docs/chart_best_practices/custom_resource_definitions." + description: |- + CRDs upgrade CRDs from the Helm Chart's crds directory according + to the CRD upgrade policy provided here. Valid values are `Skip`, + `Create` or `CreateReplace`. Default is `Skip` and if omitted + CRDs are neither installed nor upgraded. + + + Skip: do neither install nor replace (update) any CRDs. + + + Create: new CRDs are created, existing CRDs are neither updated nor deleted. + + + CreateReplace: new CRDs are created, existing CRDs are updated (replaced) + but not deleted. + + + By default, CRDs are not applied during Helm upgrade action. With this + option users can opt-in to CRD upgrade, which is not (yet) natively supported by Helm. + https://helm.sh/docs/chart_best_practices/custom_resource_definitions. enum: - Skip - Create @@ -728,49 +781,51 @@ spec: the Helm upgrade action. type: boolean disableOpenAPIValidation: - description: DisableOpenAPIValidation prevents the Helm upgrade - action from validating rendered templates against the Kubernetes - OpenAPI Schema. + description: |- + DisableOpenAPIValidation prevents the Helm upgrade action from validating + rendered templates against the Kubernetes OpenAPI Schema. type: boolean disableWait: - description: DisableWait disables the waiting for resources - to be ready after a Helm upgrade has been performed. + description: |- + DisableWait disables the waiting for resources to be ready after a Helm + upgrade has been performed. type: boolean disableWaitForJobs: - description: DisableWaitForJobs disables waiting for jobs - to complete after a Helm upgrade has been performed. + description: |- + DisableWaitForJobs disables waiting for jobs to complete after a Helm + upgrade has been performed. type: boolean force: description: Force forces resource updates through a replacement strategy. type: boolean preserveValues: - description: PreserveValues will make Helm reuse the last - release's values and merge in overrides from 'Values'. Setting - this flag makes the HelmRelease non-declarative. + description: |- + PreserveValues will make Helm reuse the last release's values and merge in + overrides from 'Values'. Setting this flag makes the HelmRelease + non-declarative. type: boolean remediation: - description: Remediation holds the remediation configuration - for when the Helm upgrade action for the HelmRelease fails. - The default is to not perform any action. + description: |- + Remediation holds the remediation configuration for when the Helm upgrade + action for the HelmRelease fails. The default is to not perform any action. properties: ignoreTestFailures: - description: IgnoreTestFailures tells the controller to - skip remediation when the Helm tests are run after an - upgrade action but fail. Defaults to 'Test.IgnoreFailures'. + description: |- + IgnoreTestFailures tells the controller to skip remediation when the Helm + tests are run after an upgrade action but fail. + Defaults to 'Test.IgnoreFailures'. type: boolean remediateLastFailure: - description: RemediateLastFailure tells the controller - to remediate the last failure, when no retries remain. - Defaults to 'false' unless 'Retries' is greater than - 0. + description: |- + RemediateLastFailure tells the controller to remediate the last failure, when + no retries remain. Defaults to 'false' unless 'Retries' is greater than 0. type: boolean retries: - description: Retries is the number of retries that should - be attempted on failures before bailing. Remediation, - using 'Strategy', is performed between each attempt. - Defaults to '0', a negative integer equals to unlimited - retries. + description: |- + Retries is the number of retries that should be attempted on failures before + bailing. Remediation, using 'Strategy', is performed between each attempt. + Defaults to '0', a negative integer equals to unlimited retries. type: integer strategy: description: Strategy to use for failure remediation. @@ -781,9 +836,10 @@ spec: type: string type: object timeout: - description: Timeout is the time to wait for any individual - Kubernetes operation (like Jobs for hooks) during the performance - of a Helm upgrade action. Defaults to 'HelmReleaseSpec.Timeout'. + description: |- + Timeout is the time to wait for any individual Kubernetes operation (like + Jobs for hooks) during the performance of a Helm upgrade action. Defaults to + 'HelmReleaseSpec.Timeout'. pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m|h))+$ type: string type: object @@ -791,13 +847,13 @@ spec: description: Values holds the values for this Helm release. x-kubernetes-preserve-unknown-fields: true valuesFrom: - description: ValuesFrom holds references to resources containing - Helm values for this HelmRelease, and information about how - they should be merged. + description: |- + ValuesFrom holds references to resources containing Helm values for this HelmRelease, + and information about how they should be merged. items: - description: ValuesReference contains a reference to a resource - containing Helm values, and optionally the key they can be - found at. + description: |- + ValuesReference contains a reference to a resource containing Helm values, + and optionally the key they can be found at. properties: kind: description: Kind of the values referent, valid values are @@ -807,30 +863,32 @@ spec: - ConfigMap type: string name: - description: Name of the values referent. Should reside - in the same namespace as the referring resource. + description: |- + Name of the values referent. Should reside in the same namespace as the + referring resource. maxLength: 253 minLength: 1 type: string optional: - description: Optional marks this ValuesReference as optional. - When set, a not found error for the values reference is - ignored, but any ValuesKey, TargetPath or transient error - will still result in a reconciliation failure. + description: |- + Optional marks this ValuesReference as optional. When set, a not found error + for the values reference is ignored, but any ValuesKey, TargetPath or + transient error will still result in a reconciliation failure. type: boolean targetPath: - description: TargetPath is the YAML dot notation path the - value should be merged at. When set, the ValuesKey is - expected to be a single flat value. Defaults to 'None', + description: |- + TargetPath is the YAML dot notation path the value should be merged at. When + set, the ValuesKey is expected to be a single flat value. Defaults to 'None', which results in the values getting merged at the root. maxLength: 250 pattern: ^([a-zA-Z0-9_\-.\\\/]|\[[0-9]{1,5}\])+$ type: string valuesKey: - description: ValuesKey is the data key where the values.yaml - or a specific value can be found at. Defaults to 'values.yaml'. - When set, must be a valid Data Key, consisting of alphanumeric - characters, '-', '_' or '.'. + description: |- + ValuesKey is the data key where the values.yaml or a specific value can be + found at. Defaults to 'values.yaml'. + When set, must be a valid Data Key, consisting of alphanumeric characters, + '-', '_' or '.'. maxLength: 253 pattern: ^[\-._a-zA-Z0-9]+$ type: string @@ -857,8 +915,9 @@ spec: - Platform type: string filter: - description: Filter targets (applies for category "Tenant"). If - ommited all targets are selected. + description: |- + Filter targets (applies for category "Tenant"). + If ommited all targets are selected. properties: kind: default: Blacklist @@ -882,9 +941,9 @@ spec: tenantOverrides: additionalProperties: x-kubernetes-preserve-unknown-fields: true - description: Overrides for tenants. Dictionary with tenant name as - key, spec override as value. The spec override has the same structure - as Spec + description: |- + Overrides for tenants. Dictionary with tenant name as key, spec override as value. + The spec override has the same structure as Spec type: object required: - domainRef diff --git a/internal/controllers/platform/platform_controller.go b/internal/controllers/platform/platform_controller.go index a49fb18..a1e72fe 100644 --- a/internal/controllers/platform/platform_controller.go +++ b/internal/controllers/platform/platform_controller.go @@ -463,6 +463,11 @@ func (c *PlatformController) genPlatformTenantsCfgMap(platform *platformv1.Platf cfgMapName := fmt.Sprintf("%s-tenants", platform.Name) tenantData := map[string]string{} for _, tenant := range tenants { + if tenant.Spec.Configs != nil { + for cfgKey, cfgValue := range tenant.Spec.Configs { + tenantData[fmt.Sprintf("MultiTenancy__Tenants__%s__%s", tenant.Name, cfgKey)] = cfgValue + } + } tenantData[fmt.Sprintf("MultiTenancy__Tenants__%s__TenantId", tenant.Name)] = tenant.Spec.Id tenantData[fmt.Sprintf("MultiTenancy__Tenants__%s__Enabled", tenant.Name)] = strconv.FormatBool(tenant.Spec.Enabled) } diff --git a/internal/controllers/platform/platform_controller_test.go b/internal/controllers/platform/platform_controller_test.go index 2279737..554a52f 100644 --- a/internal/controllers/platform/platform_controller_test.go +++ b/internal/controllers/platform/platform_controller_test.go @@ -295,6 +295,49 @@ func TestPlatformController_processNextWorkItem(t *testing.T) { t.Error("expected message pblished to topic ", syncedSuccessfullyTopic, ", got", msg.Topic) } }) + t.Run("tenant specific configs", func(t *testing.T) { + // Arrange + platform := _newPlatform("qa", "charismaonline.qa") + tenant := _newTenant("tenant1", platform.Name, []string{}) + tenant.Spec.Configs = map[string]string{ + "config1": "value1", + "config2": "value2", + } + + expectedTenantData := map[string]string{ + "MultiTenancy__Tenants__tenant1__config1": "value1", + "MultiTenancy__Tenants__tenant1__config2": "value2", + } + + c, _ := _runController([]runtime.Object{platform, tenant}) + + // Act + if result := c.processNextWorkItem(); !result { + t.Error("processing failed") + } + + // Assert + if c.workqueue.Len() != 0 { + item, _ := c.workqueue.Get() + t.Error("queue should be empty, but contains ", item) + } + + output, err := c.kubeClientset.CoreV1().ConfigMaps("qa").Get(context.TODO(), "charismaonline.qa-tenants", metav1.GetOptions{}) + if err != nil { + t.Error(err) + return + } + + for key, value := range expectedTenantData { + if expectedValue, ok := output.Data[key]; ok { + if value != expectedValue { + t.Errorf("Expected value for key %v: %v, got: %v", key, expectedValue, value) + } + } else { + t.Errorf("Key %v not found in output configmap.", key) + } + } + }) } func _newPlatform(ns, name string) *platformv1.Platform { diff --git a/pkg/apis/platform/v1alpha1/tenantTypes.go b/pkg/apis/platform/v1alpha1/tenantTypes.go index e8d7efe..41552e1 100644 --- a/pkg/apis/platform/v1alpha1/tenantTypes.go +++ b/pkg/apis/platform/v1alpha1/tenantTypes.go @@ -47,6 +47,10 @@ type TenantSpec struct { // +kubebuilder:validation:Enum=RetainStatefulResources;DeleteAll // +kubebuilder:default:=RetainStatefulResources DeletePolicy DeletePolicy `json:"deletePolicy"` + + // Tenant specific configs. + // +optional + Configs map[string]string `json:"configs,omitempty"` } // TenantStatus is the status for a tenant. diff --git a/pkg/apis/platform/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/platform/v1alpha1/zz_generated.deepcopy.go index 11a9c85..b16d799 100644 --- a/pkg/apis/platform/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/platform/v1alpha1/zz_generated.deepcopy.go @@ -357,6 +357,13 @@ func (in *TenantSpec) DeepCopyInto(out *TenantSpec) { *out = make([]string, len(*in)) copy(*out, *in) } + if in.Configs != nil { + in, out := &in.Configs, &out.Configs + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } return } diff --git a/pkg/generated/applyconfiguration/platform/v1alpha1/tenantspec.go b/pkg/generated/applyconfiguration/platform/v1alpha1/tenantspec.go index 38836b8..c728fc6 100644 --- a/pkg/generated/applyconfiguration/platform/v1alpha1/tenantspec.go +++ b/pkg/generated/applyconfiguration/platform/v1alpha1/tenantspec.go @@ -32,6 +32,7 @@ type TenantSpecApplyConfiguration struct { DomainRefs []string `json:"domainRefs,omitempty"` AdminEmail *string `json:"adminEmail,omitempty"` DeletePolicy *v1alpha1.DeletePolicy `json:"deletePolicy,omitempty"` + Configs map[string]string `json:"configs,omitempty"` } // TenantSpecApplyConfiguration constructs an declarative configuration of the TenantSpec type for use with @@ -97,3 +98,17 @@ func (b *TenantSpecApplyConfiguration) WithDeletePolicy(value v1alpha1.DeletePol b.DeletePolicy = &value return b } + +// WithConfigs puts the entries into the Configs field in the declarative configuration +// and returns the receiver, so that objects can be build by chaining "With" function invocations. +// If called multiple times, the entries provided by each call will be put on the Configs field, +// overwriting an existing map entries in Configs field with the same key. +func (b *TenantSpecApplyConfiguration) WithConfigs(entries map[string]string) *TenantSpecApplyConfiguration { + if b.Configs == nil && len(entries) > 0 { + b.Configs = make(map[string]string, len(entries)) + } + for k, v := range entries { + b.Configs[k] = v + } + return b +}