diff --git a/config/crd/bases/workload.nephio.org_imageconfigs.yaml b/config/crd/bases/workload.nephio.org_imageconfigs.yaml new file mode 100644 index 00000000..b5d0e898 --- /dev/null +++ b/config/crd/bases/workload.nephio.org_imageconfigs.yaml @@ -0,0 +1,49 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + name: imageconfigs.workload.nephio.org +spec: + group: workload.nephio.org + names: + kind: ImageConfig + listKind: ImageConfigList + plural: imageconfigs + singular: imageconfig + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: ImageConfig is the Schema for the imageconfigs API + 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: + description: ImageConfigSpec defines the desired state of ImageConfig + properties: + imagePaths: + additionalProperties: + type: string + description: ImagePaths is used to find the images + type: object + type: object + type: object + served: true + storage: true + subresources: {} diff --git a/nf_deployments/v1alpha1/imageconfig_types.go b/nf_deployments/v1alpha1/imageconfig_types.go new file mode 100644 index 00000000..4a14cbfe --- /dev/null +++ b/nf_deployments/v1alpha1/imageconfig_types.go @@ -0,0 +1,68 @@ +/* +Copyright 2023 The Nephio Authors. + +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 v1alpha1 + +import ( + "reflect" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// ImageConfigSpec defines the desired state of ImageConfig +type ImageConfigSpec struct { + + // ImagePaths is used to find the free5gc images + ImagePaths map[string]string `json:"imagePaths,omitempty"` +} + +//+kubebuilder:object:root=true +//+kubebuilder:subresource:status + +// ImageConfig is the Schema for the imageconfigs API +type ImageConfig struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec ImageConfigSpec `json:"spec,omitempty"` +} + +//+kubebuilder:object:root=true + +// ImageConfigList contains a list of ImageConfig +type ImageConfigList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ImageConfig `json:"items"` +} + +// Implement ImageConfig interface + +func (d *ImageConfig) GetImageConfigSpec() *ImageConfigSpec { + return d.Spec.DeepCopy() +} +func (d *ImageConfig) SetImageConfigSpec(s *ImageConfigSpec) { + s.DeepCopyInto(&d.Spec) +} + +// Interface type metadata. +var ( + ImageConfigKind = reflect.TypeOf(ImageConfig{}).Name() + ImageConfigGroupKind = schema.GroupKind{Group: Group, Kind: ImageConfigKind}.String() + ImageConfigKindAPIVersion = ImageConfigKind + "." + GroupVersion.String() + ImageConfigGroupVersionKind = GroupVersion.WithKind(ImageConfigKind) +) diff --git a/nf_deployments/v1alpha1/zz_generated.deepcopy.go b/nf_deployments/v1alpha1/zz_generated.deepcopy.go index 07b8a7ed..93f864b8 100644 --- a/nf_deployments/v1alpha1/zz_generated.deepcopy.go +++ b/nf_deployments/v1alpha1/zz_generated.deepcopy.go @@ -582,3 +582,83 @@ func (in *UPFDeploymentStatus) DeepCopy() *UPFDeploymentStatus { in.DeepCopyInto(out) return out } + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ImageConfig) DeepCopyInto(out *ImageConfig) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageConfig. +func (in *ImageConfig) DeepCopy() *ImageConfig { + if in == nil { + return nil + } + out := new(ImageConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ImageConfig) 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 *ImageConfigList) DeepCopyInto(out *ImageConfigList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ImageConfig, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageConfigList. +func (in *ImageConfigList) DeepCopy() *ImageConfigList { + if in == nil { + return nil + } + out := new(ImageConfigList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ImageConfigList) 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 *ImageConfigSpec) DeepCopyInto(out *ImageConfigSpec) { + *out = *in + if in.ImagePaths != nil { + in, out := &in.ImagePaths, &out.ImagePaths + *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 ImageConfigSpec. +func (in *ImageConfigSpec) DeepCopy() *ImageConfigSpec { + if in == nil { + return nil + } + out := new(ImageConfigSpec) + in.DeepCopyInto(out) + return out +} \ No newline at end of file