diff --git a/.obs/chartfile/crds/templates/crds.yaml b/.obs/chartfile/crds/templates/crds.yaml index 5501439ab..aa2381388 100644 --- a/.obs/chartfile/crds/templates/crds.yaml +++ b/.obs/chartfile/crds/templates/crds.yaml @@ -3822,6 +3822,63 @@ spec: --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + labels: + cluster.x-k8s.io/provider: infrastructure-elemental + cluster.x-k8s.io/v1beta1: v1beta1 + release-name: '{{ .Release.Name }}' + name: metadata.elemental.cattle.io +spec: + group: elemental.cattle.io + names: + kind: Metadata + listKind: MetadataList + plural: metadata + singular: metadata + scope: Namespaced + versions: + - name: v1beta1 + schema: + 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 + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + properties: + annotations: + additionalProperties: + type: string + type: object + appVersion: + type: string + type: object + status: + type: object + type: object + served: true + storage: true + subresources: + status: {} +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.14.0 diff --git a/.obs/chartfile/operator/templates/deployment.yaml b/.obs/chartfile/operator/templates/deployment.yaml index 12a2df638..576d58d59 100644 --- a/.obs/chartfile/operator/templates/deployment.yaml +++ b/.obs/chartfile/operator/templates/deployment.yaml @@ -1,9 +1,6 @@ apiVersion: apps/v1 kind: Deployment metadata: - labels: - app.kubernetes.io/name: {{ .Chart.Name }} - app.kubernetes.io/version: {{ .Chart.Version }} name: {{ .Release.Name }} spec: replicas: {{ .Values.replicas }} diff --git a/.obs/chartfile/operator/templates/metadata.yaml b/.obs/chartfile/operator/templates/metadata.yaml new file mode 100644 index 000000000..d102d9f2e --- /dev/null +++ b/.obs/chartfile/operator/templates/metadata.yaml @@ -0,0 +1,10 @@ +apiVersion: elemental.cattle.io/v1beta1 +kind: Metadata +metadata: + name: {{ .Release.Name }} +spec: + appVersion: {{ .Chart.AppVersion }} + annotations: + {{- range $key, $value := .Chart.Annotations }} + {{ $key }}: {{ toYaml $value }} + {{- end }} diff --git a/api/v1beta1/metadata_type.go b/api/v1beta1/metadata_type.go new file mode 100644 index 000000000..f3f5836e6 --- /dev/null +++ b/api/v1beta1/metadata_type.go @@ -0,0 +1,51 @@ +/* +Copyright © 2022 - 2024 SUSE LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +type MetadataSpec struct { + Annotations map[string]string `json:"annotations,omitempty"` + AppVersion string `json:"appVersion,omitempty"` +} + +type MetadataStatus struct{} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status + +type Metadata struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec MetadataSpec `json:"spec,omitempty"` + Status MetadataStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +type MetadataList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Metadata `json:"items"` +} + +func init() { + SchemeBuilder.Register(&Metadata{}, &MetadataList{}) +} diff --git a/api/v1beta1/zz_generated.deepcopy.go b/api/v1beta1/zz_generated.deepcopy.go index 9fbec869c..3fe4c1a58 100644 --- a/api/v1beta1/zz_generated.deepcopy.go +++ b/api/v1beta1/zz_generated.deepcopy.go @@ -973,6 +973,102 @@ func (in *ManagedOSVersionStatus) DeepCopy() *ManagedOSVersionStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Metadata) DeepCopyInto(out *Metadata) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + out.Status = in.Status +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metadata. +func (in *Metadata) DeepCopy() *Metadata { + if in == nil { + return nil + } + out := new(Metadata) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Metadata) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetadataList) DeepCopyInto(out *MetadataList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Metadata, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataList. +func (in *MetadataList) DeepCopy() *MetadataList { + if in == nil { + return nil + } + out := new(MetadataList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *MetadataList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetadataSpec) DeepCopyInto(out *MetadataSpec) { + *out = *in + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataSpec. +func (in *MetadataSpec) DeepCopy() *MetadataSpec { + if in == nil { + return nil + } + out := new(MetadataSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetadataStatus) DeepCopyInto(out *MetadataStatus) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataStatus. +func (in *MetadataStatus) DeepCopy() *MetadataStatus { + if in == nil { + return nil + } + out := new(MetadataStatus) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PlanStatus) DeepCopyInto(out *PlanStatus) { *out = *in diff --git a/config/crd/bases/elemental.cattle.io_metadata.yaml b/config/crd/bases/elemental.cattle.io_metadata.yaml new file mode 100644 index 000000000..360af64cc --- /dev/null +++ b/config/crd/bases/elemental.cattle.io_metadata.yaml @@ -0,0 +1,53 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + name: metadata.elemental.cattle.io +spec: + group: elemental.cattle.io + names: + kind: Metadata + listKind: MetadataList + plural: metadata + singular: metadata + scope: Namespaced + versions: + - name: v1beta1 + schema: + 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 + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + properties: + annotations: + additionalProperties: + type: string + type: object + appVersion: + type: string + type: object + status: + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/config/crd/kustomization.yaml b/config/crd/kustomization.yaml index 2049252b3..2a04895e4 100644 --- a/config/crd/kustomization.yaml +++ b/config/crd/kustomization.yaml @@ -10,6 +10,7 @@ resources: - bases/elemental.cattle.io_managedosimages.yaml - bases/elemental.cattle.io_managedosversions.yaml - bases/elemental.cattle.io_seedimages.yaml +- bases/elemental.cattle.io_metadata.yaml # +kubebuilder:scaffold:crdkustomizeresource commonLabels: