From e9f35dabe83437a9eecd5bf9184baeacea8c36dc Mon Sep 17 00:00:00 2001 From: shon phand Date: Wed, 30 Jun 2021 18:10:23 +0000 Subject: [PATCH] adding installation registry to version catalogue * modified image_repositories section schema in version catalogue. new type : type map[string]ImageRepositorySpec old type : string. * replaced registry attribute in Installation resource from version-catalogue image_repositories section. * updated old attributes from image_repositories section as per new schema. Closes: #590 Change-Id: I2159e23b8a63b5f48d2f4e79b56c2bc021646c77 --- .../versions-airshipctl.yaml | 8 +++++- .../airshipit.org_versionscatalogues.yaml | 28 ++++++++++++++++++- .../replacements/versions.yaml | 12 +++++++- .../ephemeral/replacements/versions.yaml | 2 +- .../k8scontrol/replacements/versions.yaml | 2 +- pkg/api/v1alpha1/versionscatalogue_types.go | 2 +- 6 files changed, 48 insertions(+), 6 deletions(-) diff --git a/manifests/function/airshipctl-base-catalogues/versions-airshipctl.yaml b/manifests/function/airshipctl-base-catalogues/versions-airshipctl.yaml index 29aec1527..5df1278bf 100644 --- a/manifests/function/airshipctl-base-catalogues/versions-airshipctl.yaml +++ b/manifests/function/airshipctl-base-catalogues/versions-airshipctl.yaml @@ -162,4 +162,10 @@ spec: kubernetes: v1.18.6 - image_repositories: k8s.gcr.io + image_repositories: + cni: + name: tigera-operator + repository: quay.io + controlplane: + name: kubeadm-clusterConfiguration + repository: k8s.gcr.io diff --git a/manifests/function/airshipctl-schemas/airshipit.org_versionscatalogues.yaml b/manifests/function/airshipctl-schemas/airshipit.org_versionscatalogues.yaml index a8df8d3da..2bfe7ed3c 100644 --- a/manifests/function/airshipctl-schemas/airshipit.org_versionscatalogues.yaml +++ b/manifests/function/airshipctl-schemas/airshipit.org_versionscatalogues.yaml @@ -196,8 +196,34 @@ spec: are grouped by airshipctl function -> images in function. type: object image_repositories: + additionalProperties: + description: ImageRepositorySpec defines the spec for a repository + that includes repository URL, Name and one of Hash/Tag/SHA/Digest. + properties: + digest: + type: string + hash: + type: string + name: + description: Name is an optional property that is used to specify + the name of an image. Typically, this format is only needed + for charts such as dex-aio, which uses "repo", "name", and + "tag" properties to declare images, rather than the more commonly + used "repository" and "tag". In such cases, "repository" should + contain only the name of the repository (e.g. "quay.io") and + the "name" property should contain the image name (e.g. "metal3-io/ironic"). + type: string + repository: + type: string + sha: + type: string + tag: + type: string + required: + - repository + type: object description: Allows for the specification of the image repositories - type: string + type: object images: additionalProperties: additionalProperties: diff --git a/manifests/function/cni/tigera-operator/replacements/versions.yaml b/manifests/function/cni/tigera-operator/replacements/versions.yaml index 46948a7e8..5311e358b 100644 --- a/manifests/function/cni/tigera-operator/replacements/versions.yaml +++ b/manifests/function/cni/tigera-operator/replacements/versions.yaml @@ -16,4 +16,14 @@ replacements: objref: kind: Deployment name: tigera-operator - fieldrefs: ["{.spec.template.spec.containers[?(.name == 'tigera-operator')].image}"] \ No newline at end of file + fieldrefs: ["{.spec.template.spec.containers[?(.name == 'tigera-operator')].image}"] +- source: + objref: + kind: VersionsCatalogue + name: versions-airshipctl + fieldref: "{.spec.image_repositories.cni.repository}" + target: + objref: + kind: Installation + name: default + fieldrefs: ["{.spec.registry}"] diff --git a/manifests/function/ephemeral/replacements/versions.yaml b/manifests/function/ephemeral/replacements/versions.yaml index 5977eecc5..e8789e9c1 100644 --- a/manifests/function/ephemeral/replacements/versions.yaml +++ b/manifests/function/ephemeral/replacements/versions.yaml @@ -13,7 +13,7 @@ replacements: objref: kind: VersionsCatalogue name: versions-airshipctl - fieldref: "{.spec.image_repositories}" + fieldref: "{.spec.image_repositories.controlplane.repository}" target: objref: name: ephemeral-bmc-secret diff --git a/manifests/function/k8scontrol/replacements/versions.yaml b/manifests/function/k8scontrol/replacements/versions.yaml index 0e288a77b..42c6713d9 100644 --- a/manifests/function/k8scontrol/replacements/versions.yaml +++ b/manifests/function/k8scontrol/replacements/versions.yaml @@ -35,7 +35,7 @@ replacements: objref: kind: VersionsCatalogue name: versions-airshipctl - fieldref: "{.spec.image_repositories}" + fieldref: "{.spec.image_repositories.controlplane.repository}" target: objref: kind: KubeadmControlPlane diff --git a/pkg/api/v1alpha1/versionscatalogue_types.go b/pkg/api/v1alpha1/versionscatalogue_types.go index c6371b702..a0a5beedb 100644 --- a/pkg/api/v1alpha1/versionscatalogue_types.go +++ b/pkg/api/v1alpha1/versionscatalogue_types.go @@ -165,7 +165,7 @@ type VersionsCatalogueSpec struct { Kubernetes string `json:"kubernetes,omitempty"` // Allows for the specification of the image repositories - ImageRepositories string `json:"image_repositories,omitempty"` + ImageRepositories map[string]ImageRepositorySpec `json:"image_repositories,omitempty"` } // +kubebuilder:object:root=true