diff --git a/build/Dockerfile.operator.openshift b/build/Dockerfile.operator.openshift index e4a911342..5129241cc 100644 --- a/build/Dockerfile.operator.openshift +++ b/build/Dockerfile.operator.openshift @@ -12,9 +12,13 @@ COPY deploy/handler/operator.yaml /bindata/kubernetes-nmstate/handler/handler.ya COPY deploy/handler/service_account.yaml /bindata/kubernetes-nmstate/rbac/ COPY deploy/handler/role.yaml /bindata/kubernetes-nmstate/rbac/ COPY deploy/handler/role_binding.yaml /bindata/kubernetes-nmstate/rbac/ +COPY --from=builder /go/src/github.com/openshift/kubernetes-nmstate/manifests /manifests +COPY --from=builder /go/src/github.com/openshift/kubernetes-nmstate/metadata /metadata ENTRYPOINT ["manager"] LABEL io.k8s.display-name="kubernetes-nmstate-operator" \ io.k8s.description="Operator for Node network configuration through Kubernetes API" \ + io.openshift.tags="openshift,kubernetes-nmstate-operator" \ + com.redhat.delivery.appregistry=true \ maintainer="Yossi Boaron " diff --git a/bundle/manifests/kubernetes-nmstate-operator.clusterserviceversion.yaml b/bundle/manifests/kubernetes-nmstate-operator.clusterserviceversion.yaml index 3cf25d072..5517a6438 100644 --- a/bundle/manifests/kubernetes-nmstate-operator.clusterserviceversion.yaml +++ b/bundle/manifests/kubernetes-nmstate-operator.clusterserviceversion.yaml @@ -122,7 +122,7 @@ spec: - name: PROFILER_PORT value: "6060" - name: RUN_OPERATOR - - name: RELATED_IMAGE_HANDLER_IMAGE + - name: HANDLER_IMAGE value: quay.io/nmstate/kubernetes-nmstate-handler:latest - name: HANDLER_IMAGE_PULL_POLICY value: Always diff --git a/controllers/nmstate_controller.go b/controllers/nmstate_controller.go index 953796f6f..a9157c2e8 100644 --- a/controllers/nmstate_controller.go +++ b/controllers/nmstate_controller.go @@ -138,7 +138,7 @@ func (r *NMStateReconciler) applyNamespace(instance *nmstatev1beta1.NMState) err func (r *NMStateReconciler) applyRBAC(instance *nmstatev1beta1.NMState) error { data := render.MakeRenderData() data.Data["HandlerNamespace"] = os.Getenv("HANDLER_NAMESPACE") - data.Data["HandlerImage"] = os.Getenv("RELATED_IMAGE_HANDLER_IMAGE") + data.Data["HandlerImage"] = os.Getenv("HANDLER_IMAGE") data.Data["HandlerPullPolicy"] = os.Getenv("HANDLER_IMAGE_PULL_POLICY") data.Data["HandlerPrefix"] = os.Getenv("HANDLER_PREFIX") return r.renderAndApply(instance, data, "rbac", true) @@ -165,7 +165,7 @@ func (r *NMStateReconciler) applyHandler(instance *nmstatev1beta1.NMState) error amd64AndCRNodeSelector["beta.kubernetes.io/arch"] = "amd64" data.Data["HandlerNamespace"] = os.Getenv("HANDLER_NAMESPACE") - data.Data["HandlerImage"] = os.Getenv("RELATED_IMAGE_HANDLER_IMAGE") + data.Data["HandlerImage"] = os.Getenv("HANDLER_IMAGE") data.Data["HandlerPullPolicy"] = os.Getenv("HANDLER_IMAGE_PULL_POLICY") data.Data["HandlerPrefix"] = os.Getenv("HANDLER_PREFIX") data.Data["WebhookNodeSelector"] = amd64ArchOnMasterNodeSelector diff --git a/controllers/nmstate_controller_test.go b/controllers/nmstate_controller_test.go index 26784738a..ef9f18b0a 100644 --- a/controllers/nmstate_controller_test.go +++ b/controllers/nmstate_controller_test.go @@ -63,7 +63,7 @@ var _ = Describe("NMState controller reconcile", func() { reconciler.Scheme = s reconciler.Log = ctrl.Log.WithName("controllers").WithName("NMState") os.Setenv("HANDLER_NAMESPACE", handlerNamespace) - os.Setenv("RELATED_IMAGE_HANDLER_IMAGE", handlerImage) + os.Setenv("HANDLER_IMAGE", handlerImage) os.Setenv("HANDLER_IMAGE_PULL_POLICY", imagePullPolicy) os.Setenv("HANDLER_PREFIX", handlerPrefix) }) diff --git a/deploy/operator/operator.yaml b/deploy/operator/operator.yaml index ecc006d2a..5268447c0 100644 --- a/deploy/operator/operator.yaml +++ b/deploy/operator/operator.yaml @@ -44,7 +44,7 @@ spec: value: "6060" - name: RUN_OPERATOR value: "" - - name: RELATED_IMAGE_HANDLER_IMAGE + - name: HANDLER_IMAGE value: {{ .HandlerImage }} - name: HANDLER_IMAGE_PULL_POLICY value: {{ .HandlerPullPolicy }} diff --git a/manifests/4.7/image-references b/manifests/4.7/image-references new file mode 100644 index 000000000..5c6f20a0d --- /dev/null +++ b/manifests/4.7/image-references @@ -0,0 +1,13 @@ +--- +kind: ImageStream +apiVersion: image.openshift.io/v1 +spec: + tags: + - name: kubernetes-nmstate-operator + from: + kind: DockerImage + name: quay.io/openshift/origin-kubernetes-nmstate-operator:4.7 + - name: kubernetes-nmstate-handler + from: + kind: DockerImage + name: quay.io/openshift/origin-kubernetes-nmstate-handler:4.7 \ No newline at end of file diff --git a/manifests/4.7/kubernetes-nmstate-operator.v4.7.0.clusterserviceversion.yaml b/manifests/4.7/kubernetes-nmstate-operator.v4.7.0.clusterserviceversion.yaml new file mode 100644 index 000000000..291ffd354 --- /dev/null +++ b/manifests/4.7/kubernetes-nmstate-operator.v4.7.0.clusterserviceversion.yaml @@ -0,0 +1,219 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: |- + [{ + "apiVersion": "nmstate.io/v1beta1", + "kind": "NMState", + "metadata": { + "name": "nmstate" + }, + "spec": { + "nodeSelector": { + "beta.kubernetes.io/arch": "amd64" + } + } + }] + capabilities: Basic Install + certified: "false" + categories: OpenShift Optional + description: | + Kubernetes NMState is a declaritive means of configuring NetworkManager. + containerImage: quay.io/openshift/origin-kubernetes-nmstate-operator:4.7 + createdAt: 2020-011-12 17:13:03 + olm.skipRange: ">=4.3.0-0 < 4.7.0-0" + support: Red Hat, Inc. + repository: https://github.com/openshift/kubernetes-nmstate + name: kubernetes-nmstate-operator.v4.7.0 + namespace: openshift-nmstate +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - kind: NMState + name: nmstates.nmstate.io + version: v1beta1 + description: Represents an NMState deployment. + displayName: NMState + description: A Kubernetes Operator to install Kubernetes NMState + displayName: Kubernetes NMState Operator + icon: + - base64data: >- + PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNzkuNDcgMTMzLjg4Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6IzFkNTZkODt9LmNscy0ye2ZpbGw6IzcwYWRlZjt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkxheWVyXzIiIGRhdGEtbmFtZT0iTGF5ZXIgMiI+PGcgaWQ9IkxheWVyXzEtMiIgZGF0YS1uYW1lPSJMYXllciAxIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNy41MSwxMTMuNjhhNi41LDYuNSwwLDAsMC00LjMtMS4zMywxMS43LDExLjcsMCwwLDAtMy42MS41MUExMy42NywxMy42NywwLDAsMCw2LjksMTE0djE5YTUuMTgsNS4xOCwwLDAsMS0uNzYuMjMsNC40MSw0LjQxLDAsMCwxLTEuMTIuMTNxLTIuMTksMC0yLjE5LTEuODNWMTE0LjI0YTMuMjMsMy4yMywwLDAsMSwuNDMtMS43Niw0LjU5LDQuNTksMCwwLDEsMS41LTEuMzUsMTUuMTgsMTUuMTgsMCwwLDEsMy41MS0xLjQ3LDE3LjExLDE3LjExLDAsMCwxLDQuOTQtLjY3LDExLjU2LDExLjU2LDAsMCwxLDcuMywyLjA5cTIuNjcsMi4wOCwyLjY3LDYuNTZ2MTUuNDJhNSw1LDAsMCwxLS43OS4yMyw0LjQsNC40LDAsMCwxLTEuMDkuMTNxLTIuMTksMC0yLjE5LTEuODNWMTE3Ljg1QTUuMDksNS4wOSwwLDAsMCwxNy41MSwxMTMuNjhaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTkuMjEsMTEzLjUyYTUuODMsNS44MywwLDAsMC0zLjgyLTEuMTcsOC41Nyw4LjU3LDAsMCwwLTUuOSwyLjM0LDcuNzMsNy43MywwLDAsMSwuMywyLjE5djE2LjE4YTUuMiw1LjIsMCwwLDEtLjc4LjIzLDQuNDgsNC40OCwwLDAsMS0xLjEuMTNxLTIuMTksMC0yLjE5LTEuODN2LTE0LjRhNC40OCw0LjQ4LDAsMCwwLTEuNDItMy42Nyw1LjkyLDUuOTIsMCwwLDAtMy44Ny0xLjE3LDkuMjYsOS4yNiwwLDAsMC0zLjA4LjUxQTExLjUxLDExLjUxLDAsMCwwLDM0Ljg5LDExNHYxOWE1LjM5LDUuMzksMCwwLDEtLjc3LjIzLDQuMzYsNC4zNiwwLDAsMS0xLjEyLjEzYy0xLjQ2LDAtMi4xOC0uNjEtMi4xOC0xLjgzVjExNC4yNGEzLjE1LDMuMTUsMCwwLDEsLjQzLTEuNzEsNSw1LDAsMCwxLDEuNS0xLjRBMTUuNzUsMTUuNzUsMCwwLDEsNDAuNDgsMTA5YTEyLjQzLDEyLjQzLDAsMCwxLDQuNDMuNzQsNi43Miw2LjcyLDAsMCwxLDMsMiwxMS4yOCwxMS4yOCwwLDAsMSwzLjMxLTJBMTIuMjksMTIuMjksMCwwLDEsNTUuNywxMDlhMTAuMjMsMTAuMjMsMCwwLDEsNi41NiwycTIuNDUsMiwyLjQ0LDZ2MTYuMDhhNSw1LDAsMCwxLS43OS4yMyw0LjQsNC40LDAsMCwxLTEuMDkuMTNxLTIuMTksMC0yLjE5LTEuODN2LTE0LjRBNC40OCw0LjQ4LDAsMCwwLDU5LjIxLDExMy41MloiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik04OC45MiwxMjYuOTFBNiw2LDAsMCwxLDg2LjUzLDEzMnEtMi4zOSwxLjg0LTYuOTIsMS44NGExOCwxOCwwLDAsMS0zLjU2LS4zMywxMi41OCwxMi41OCwwLDAsMS0yLjc3LS44Nyw1LjU1LDUuNTUsMCwwLDEtMS43OC0xLjIyLDIsMiwwLDAsMS0uNjQtMS40LDIuMjUsMi4yNSwwLDAsMSwuMzMtMS4xNywyLjg4LDIuODgsMCwwLDEsMS0xLDE2LjMxLDE2LjMxLDAsMCwwLDMuMjEsMS44MSwxMC4zNywxMC4zNywwLDAsMCw0LjE3Ljc5cTUuMywwLDUuMjktMy41NmMwLTEuOTQtMS4xNy0zLjE5LTMuNTEtMy43N0w3Ny4xMiwxMjJhOS4xMyw5LjEzLDAsMCwxLTQuNTMtMi4zNyw1LjY1LDUuNjUsMCwwLDEtMS40Mi00LDYuMTksNi4xOSwwLDAsMSwuNTMtMi41NEE1Ljc1LDUuNzUsMCwwLDEsNzMuMzUsMTExYTguMzEsOC4zMSwwLDAsMSwyLjc4LTEuNDVBMTIuNTYsMTIuNTYsMCwwLDEsODAsMTA5LDEzLjQsMTMuNCwwLDAsMSw4NS43NywxMTBjMS40Ni42OSwyLjE5LDEuNSwyLjE5LDIuNDFhMi4wNiwyLjA2LDAsMCwxLTEuMjIsMS45NCwxNS43NywxNS43NywwLDAsMC0yLjYtMS4zMiwxMCwxMCwwLDAsMC00LS43Miw2LjY3LDYuNjcsMCwwLDAtMy42NC44NywyLjczLDIuNzMsMCwwLDAtMS4zNCwyLjQ0LDIuNzcsMi43NywwLDAsMCwuNzYsMiw0LjkxLDQuOTEsMCwwLDAsMi41NCwxLjIzbDMuNTEuODZhMTEuMDgsMTEuMDgsMCwwLDEsNS4xOSwyLjU3QTYuMTUsNi4xNSwwLDAsMSw4OC45MiwxMjYuOTFaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTAzLjEyLDEzMy44M2E5LjczLDkuNzMsMCwwLDEtNS43Ny0xLjU4cS0yLjIyLTEuNTgtMi4yMi01LjI0VjEwMi44NGE1LDUsMCwwLDEsLjc5LS4yMyw0LjY5LDQuNjksMCwwLDEsMS4xNC0uMTNjMS40MywwLDIuMTQuNjEsMi4xNCwxLjgzdjUuODVoOC4zNWE0LjI3LDQuMjcsMCwwLDEsLjMuNjksMi44NSwyLjg1LDAsMCwxLC4xNS45NGMwLDEuMTYtLjUsMS43My0xLjUyLDEuNzNIOTkuMnYxMy4yM2EzLjMyLDMuMzIsMCwwLDAsMS4xNSwyLjg4LDUuMzgsNS4zOCwwLDAsMCwzLjIzLjg0LDYuODgsNi44OCwwLDAsMCwxLjkzLS4zMSw3LjkzLDcuOTMsMCwwLDAsMS43OC0uNzEsMy4yNiwzLjI2LDAsMCwxLC41Ni43NiwyLjE3LDIuMTcsMCwwLDEsLjI2LDEuMDcsMi4wOCwyLjA4LDAsMCwxLTEuMzMsMS44M0E3LjcxLDcuNzEsMCwwLDEsMTAzLjEyLDEzMy44M1oiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjIuNjYsMTA5YTExLjMsMTEuMywwLDAsMSw3LDJxMi41OSwyLDIuNiw2LjI2VjEyOS4zYTIuODIsMi44MiwwLDAsMS0uNDQsMS43LDQuMzcsNC4zNywwLDAsMS0xLjI5LDEuMSwxMy4zMSwxMy4zMSwwLDAsMS0zLjIzLDEuMjQsMTcuOSwxNy45LDAsMCwxLTQuNjEuNTRxLTQuNzgsMC03LjQtMS44OWE2LjI3LDYuMjcsMCwwLDEtMi42Mi01LjQ0LDYsNiwwLDAsMSwyLjE4LTUuMDYsMTEuODEsMTEuODEsMCwwLDEsNi4xNi0yLjExbDcuMjMtLjcydi0xLjQyYTQuMzgsNC4zOCwwLDAsMC0xLjUzLTMuNzIsNi42MSw2LjYxLDAsMCwwLTQuMTItMS4xNywxMy4xMiwxMy4xMiwwLDAsMC00LC42MSwyMi4xMSwyMi4xMSwwLDAsMC0zLjM2LDEuMzgsNC44Niw0Ljg2LDAsMCwxLS43NC0uODIsMS42NywxLjY3LDAsMCwxLS4zMy0xLDEuODIsMS44MiwwLDAsMSwuMzYtMS4xNywzLjMsMy4zLDAsMCwxLDEuMTItLjg3LDEyLjQsMTIuNCwwLDAsMSwzLjE1LTEuMDlBMTguMTIsMTguMTIsMCwwLDEsMTIyLjY2LDEwOVptMCwyMS41M2ExMi41OCwxMi41OCwwLDAsMCwzLjU0LS40Myw4LjQ4LDguNDgsMCwwLDAsMi0uODR2LTcuMzhsLTYuMzEuNjZhNy44OSw3Ljg5LDAsMCwwLTMuOTIsMS4yLDMuMjEsMy4yMSwwLDAsMC0xLjI3LDIuNzcsMy40NCwzLjQ0LDAsMCwwLDEuNDcsM0E3Ljg2LDcuODYsMCwwLDAsMTIyLjcxLDEzMC41MloiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNDcuNzQsMTMzLjgzYTkuNzUsOS43NSwwLDAsMS01Ljc3LTEuNThjLTEuNDgtMS4wNS0yLjIxLTIuOC0yLjIxLTUuMjRWMTAyLjg0YTQuODYsNC44NiwwLDAsMSwuNzgtLjIzLDQuNzEsNC43MSwwLDAsMSwxLjE1LS4xM2MxLjQyLDAsMi4xNC42MSwyLjE0LDEuODN2NS44NWg4LjM0YTQuMiw0LjIsMCwwLDEsLjMxLjY5LDIuODUsMi44NSwwLDAsMSwuMTUuOTRjMCwxLjE2LS41MSwxLjczLTEuNTMsMS43M2gtNy4yN3YxMy4yM2EzLjM1LDMuMzUsMCwwLDAsMS4xNCwyLjg4LDUuNCw1LjQsMCwwLDAsMy4yMy44NCw3LDcsMCwwLDAsMS45NC0uMzEsOC4xMyw4LjEzLDAsMCwwLDEuNzgtLjcxLDMuNTcsMy41NywwLDAsMSwuNTYuNzYsMi4xNywyLjE3LDAsMCwxLC4yNSwxLjA3LDIuMDgsMi4wOCwwLDAsMS0xLjMyLDEuODNBNy43Niw3Ljc2LDAsMCwxLDE0Ny43NCwxMzMuODNaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTYwLjc3LDEyMy44cTEuMzgsNi42Nyw4Ljc1LDYuNjdhMTAuMTUsMTAuMTUsMCwwLDAsMy44Ny0uNzEsMTEuNzEsMTEuNzEsMCwwLDAsMi43NS0xLjUzLDIuMTYsMi4xNiwwLDAsMSwxLjIyLDEuOTMsMiwyLDAsMCwxLS42NCwxLjM4LDUuNjksNS42OSwwLDAsMS0xLjczLDEuMTcsMTEuNDksMTEuNDksMCwwLDEtMi41NC44MSwxNS40NSwxNS40NSwwLDAsMS0zLjEzLjMxcS01LjkxLDAtOS4zNC0zLjIxdC0zLjQzLTkuMzZhMTQuNzksMTQuNzksMCwwLDEsLjg0LTUuMTcsMTEuMDcsMTEuMDcsMCwwLDEsMi4zNC0zLjg0LDEwLDEwLDAsMCwxLDMuNTktMi40MiwxMiwxMiwwLDAsMSw0LjUyLS44NCwxMS40MSwxMS40MSwwLDAsMSw0LjIzLjc3LDkuNjgsOS42OCwwLDAsMSwzLjMzLDIuMTYsMTAuMTcsMTAuMTcsMCwwLDEsMi4xOSwzLjMxLDExLDExLDAsMCwxLC43OSw0LjIsMi4xMywyLjEzLDAsMCwxLS41MSwxLjYsMi4zNywyLjM3LDAsMCwxLTEuNDMuNThabTctMTEuNWE2Ljc3LDYuNzcsMCwwLDAtNS4xNCwyLjE2LDkuMDYsOS4wNiwwLDAsMC0yLjEzLDYuMTlsMTQtMS45NGE3LjQ1LDcuNDUsMCwwLDAtMi00LjZBNi4yMSw2LjIxLDAsMCwwLDE2Ny43OSwxMTIuM1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik02Ni45MiwxMy4xM3Y5LjM5YzEuMjctLjA5LDIuNTQtLjE2LDMuODMtLjJWMTEuMzloLS4zM2E4My4yOSw4My4yOSwwLDAsMSwzMy4yNC03LjU0VjI3LjEyYzEuMy40NCwyLjU3LjkxLDMuODMsMS40VjMuODVBODMsODMsMCwwLDEsMTQxLjk0LDEyVjU1Ljc3aDMuODNWMTRjMTYuOCw5LjQyLDI4LjIsMjQuNTksMjkuNjgsNDEuODloMy44NEMxNzYuODMsMjQuNzMsMTQ0LjcxLDAsMTA1LjU4LDBjLTI2LDAtNDguODQsMTAuODktNjIsMjcuMzEsMi4yNy0uNzksNC42LTEuNDksNy0yLjExQTY3LjI4LDY3LjI4LDAsMCwxLDY2LjkyLDEzLjEzWiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE0NC42OSw1OS42MWE1My44NCw1My44NCwwLDAsMSw2Ljc5LDIyLjY5bDI4LTIyLjZaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMTQ3LjgxLDg0LjMzYTUwLjM5LDUwLjM5LDAsMCwwLTcuNTQtMjQuNzNjLTctMTEuNTktMTguNTgtMjEuMDgtMzIuNzgtMjctMS4yNS0uNTItMi41My0xLTMuODMtMS40OEE4OC42LDg4LjYsMCwwLDAsNzMuOSwyNi4wOWMtMS4wNSwwLTIuMTEsMC0zLjE1LjA2LTEuMjksMC0yLjU2LjExLTMuODMuMjFhODcuNTgsODcuNTgsMCwwLDAtMjEuMDgsNC4yMWMtMi4xNS43Mi00LjI0LDEuNTEtNi4yOSwyLjM4QzE2LjU4LDQyLjc1LjY3LDYyLjA1LDAsODQuMzN2MS4yNWMwLDEuMjIuNywxLjgzLDIuMDksMS44M2E0LDQsMCwwLDAsMS4wNy0uMTMsNC41OCw0LjU4LDAsMCwwLC43My0uMjNWODQuMzNoMGMwLS40NywwLS45My4wNi0xLjQuMDktMS40My4yNS0yLjg0LjQ3LTQuMjRhNDUuNzQsNDUuNzQsMCwwLDEsMS42NS02Ljg0QzYuNSw3MC41MSw3LDY5LjIsNy41NCw2Ny45Yy4zNy0uODcuNzctMS43MiwxLjE4LTIuNTdhNTIuNzksNTIuNzksMCwwLDEsMi44MS00Ljk1LDU1LjYxLDU1LjYxLDAsMCwxLDUuMjctNi45MWMuMzItLjM2LjY2LS43MiwxLTEuMDgsMS0xLjA4LDIuMDctMi4xMiwzLjE3LTMuMTRzMi4yNS0yLDMuNDQtMi45NHEyLjM3LTEuOTEsNS0zLjYxYy44Ny0uNTcsMS43NS0xLjEzLDIuNjUtMS42Ni40NS0uMjcuOS0uNTQsMS4zNi0uOGwxLjg2LTF2NDUuMWgwdjEuMjVjMCwxLjIyLjY5LDEuODMsMi4wOSwxLjgzYTQsNCwwLDAsMCwxLjA3LS4xMyw1LjM5LDUuMzksMCwwLDAsLjczLS4yM1Y4NC4zM2gwbDAtMjVWMzcuNDloLS4zM2wxLjgtLjgyYy41My0uMjMsMS4wOC0uNDQsMS42Mi0uNjZzLjkzLS4zOSwxLjQtLjU3cTIuMy0uODgsNC42OC0xLjY0YTg0LjY2LDg0LjY2LDAsMCwxLDE4LjY4LTMuNTljMS4yNy0uMSwyLjU0LS4xNywzLjgzLS4yMmwxLjI0LDBWNTkuNDJsLS4wNiwyNC45MWgwdjEuMjVjMCwxLjIyLjcsMS44MywyLjA5LDEuODNhNCw0LDAsMCwwLDEuMDctLjEzLDUsNSwwLDAsMCwuNzMtLjIzVjg0LjMzaDBWMjkuOTRBODUuMDUsODUuMDUsMCwwLDEsOTkuNTYsMzMuOGMxLjM5LjQ0LDIuNzYuOTIsNC4xLDEuNDMuMi4wNy4zOS4xMy41OC4yMSwxLC4zOSwyLC44LDMsMS4yM2wuMjMuMTFjLjkxLjQsMS44Mi44MSwyLjcxLDEuMjRsLjA3LDBWODQuMzNoMHYxLjI1YS4yMi4yMiwwLDAsMCwwLC4wOHYuMTRoMGMuMDgsMS4wNy43NywxLjYxLDIuMDcsMS42MWE0LDQsMCwwLDAsMS4wNy0uMTMsNSw1LDAsMCwwLC43My0uMjNWODQuMzNoMGwtLjA2LTI0LjhWNDAuMDZsLjMzLjE4LDEuMzcuOGMuODkuNTMsMS43OCwxLjA5LDIuNjQsMS42NnEyLjU5LDEuNzEsNSwzLjYxYzEuMTkuOTQsMi4zMywxLjkzLDMuNDQsMi45NFMxMjksNTEuMzEsMTMwLDUyLjM5bDEsMS4wOGE1NS4wNiw1NS4wNiwwLDAsMSw0Ljc0LDYuMTJsLjUyLjc5YTUwLjY0LDUwLjY0LDAsMCwxLDIuODEsNC45NWMuNDIuODUuODEsMS43LDEuMTgsMi41Ny41NSwxLjMsMS4wNSwyLjYxLDEuNDgsMy45NWE0NS43MSw0NS43MSwwLDAsMSwxLjY0LDYuODQsNDIuNjIsNDIuNjIsMCwwLDEsLjQ4LDQuMjRjMCwuNjEsMCwxLjIzLjA2LDEuODV2LjhjMCwxLjIyLjcsMS44MywyLjA5LDEuODNhNCw0LDAsMCwwLDEuMDctLjEzLDQuNTgsNC41OCwwLDAsMCwuNzMtLjIzVjg0LjMzWiIvPjwvZz48L2c+PC9zdmc+ + mediatype: image/svg+xml + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - admissionregistration.k8s.io + resources: + - mutatingwebhookconfigurations + verbs: + - '*' + - apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterroles + - clusterrolebindings + - rolebindings + - roles + verbs: + - '*' + - apiGroups: + - nmstate.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - apiextensions.k8s.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - apps + resources: + - deployments + - daemonsets + - replicasets + - statefulsets + verbs: + - '*' + - apiGroups: + - "" + resources: + - serviceaccounts + - configmaps + - namespaces + verbs: + - '*' + - apiGroups: + - security.openshift.io + resources: + - securitycontextconstraints + verbs: + - use + resourceNames: + - privileged + serviceAccountName: nmstate-operator + deployments: + - name: nmstate-operator + spec: + replicas: 1 + selector: + matchLabels: + name: kubernetes-nmstate-operator + strategy: {} + template: + metadata: + labels: + app: kubernetes-nmstate-operator + name: kubernetes-nmstate-operator + spec: + containers: + - args: + - --v=production + command: + - manager + env: + - name: WATCH_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.annotations['olm.targetNamespaces'] + - name: OPERATOR_NAME + value: kubernetes-nmstate-operator + - name: ENABLE_PROFILER + value: "False" + - name: PROFILER_PORT + value: "6060" + - name: RUN_OPERATOR + - name: HANDLER_IMAGE + value: quay.io/openshift/origin-kubernetes-nmstate-handler:4.7 + - name: HANDLER_IMAGE_PULL_POLICY + value: Always + - name: HANDLER_NAMESPACE + value: openshift-nmstate + image: quay.io/openshift/origin-kubernetes-nmstate-operator:4.7 + imagePullPolicy: Always + name: nmstate-operator + resources: {} + nodeSelector: + node-role.kubernetes.io/master: "" + serviceAccountName: nmstate-operator + tolerations: + - effect: NoSchedule + key: node-role.kubernetes.io/master + operator: Exists + permissions: + - rules: + - apiGroups: + - "" + resources: + - services + - endpoints + - persistentvolumeclaims + - events + - configmaps + - secrets + - pods + verbs: + - '*' + - apiGroups: + - apps + resources: + - deployments + - daemonsets + - replicasets + - statefulsets + verbs: + - '*' + - apiGroups: + - policy + resources: + - poddisruptionbudgets + verbs: + - '*' + serviceAccountName: nmstate-operator + - rules: + - apiGroups: + - security.openshift.io + resources: + - securitycontextconstraints + verbs: + - use + resourceNames: + - privileged + serviceAccountName: nmstate-handler + strategy: deployment + installModes: + - supported: true + type: OwnNamespace + - supported: true + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: false + type: AllNamespaces + keywords: + - nmstate + - networking + - NetworkManager + links: + - name: Kubernetes Nmstate Operator + url: https://github.com/nmstate/kubernetes-nmstate + maintainers: + - email: support@redhat.com + name: Red Hat + maturity: beta + provider: + name: Red Hat, Inc. + selector: + matchLabels: + name: kubernetes-nmstate-operator + version: 4.7.0 + labels: + olm-owner-enterprise-app: kubernetes-nmstate-operator + olm-status-descriptors: kubernetes-nmstate-operator.v4.7.0 diff --git a/manifests/4.7/nmstate-operator_v1_serviceaccount.yaml b/manifests/4.7/nmstate-operator_v1_serviceaccount.yaml new file mode 100644 index 000000000..c41ae47fd --- /dev/null +++ b/manifests/4.7/nmstate-operator_v1_serviceaccount.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + creationTimestamp: null + labels: + nmstate.io: "" + name: nmstate-operator + diff --git a/manifests/4.7/nmstate.io_nmstates.yaml b/manifests/4.7/nmstate.io_nmstates.yaml new file mode 100644 index 000000000..462bb9896 --- /dev/null +++ b/manifests/4.7/nmstate.io_nmstates.yaml @@ -0,0 +1,73 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.0 + creationTimestamp: null + name: nmstates.nmstate.io +spec: + group: nmstate.io + names: + kind: NMState + listKind: NMStateList + plural: nmstates + singular: nmstate + scope: Cluster + versions: + - name: v1beta1 + schema: + openAPIV3Schema: + description: NMState is the Schema for the nmstates 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: NMStateSpec defines the desired state of NMState + properties: + nodeSelector: + additionalProperties: + type: string + description: NodeSelector is an optional selector that will be added to handler DaemonSet manifest for both workers and masters (https://github.com/nmstate/kubernetes-nmstate/blob/master/deploy/handler/operator.yaml). If NodeSelector is specified, the handler will run only on nodes that have each of the indicated key-value pairs as labels applied to the node. + type: object + type: object + status: + description: NMStateStatus defines the observed state of NMState + properties: + conditions: + items: + properties: + lastHearbeatTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + type: object + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/manifests/art.yaml b/manifests/art.yaml new file mode 100644 index 000000000..19c5d1a7a --- /dev/null +++ b/manifests/art.yaml @@ -0,0 +1,15 @@ +updates: + - file: "{MAJOR}.{MINOR}/kubernetes-nmstate-operator.v{MAJOR}.{MINOR}.0.clusterserviceversion.yaml" # relative to this file + update_list: + # replace metadata.name value + - search: "kubernetesnmstateoperator.v{MAJOR}.{MINOR}.0" + replace: "kubernetesnmstateoperator.{FULL_VER}" + # replace entire version line, otherwise would replace {MAJOR}.{MINOR}.0 anywhere + - search: "version: {MAJOR}.{MINOR}.0" + replace: "version: {FULL_VER}" + - search: 'olm.skipRange: ">=4.4.0 <{MAJOR}.{MINOR}.0"' + replace: 'olm.skipRange: ">=4.4.0 <{FULL_VER}"' + - file: "kubernetes-nmstate-operator.package.yaml" + update_list: + - search: "currentCSV: kubernetes-nmstate-operator.v{MAJOR}.{MINOR}.0" + replace: "currentCSV: kubernetes-nmstate-operator.{FULL_VER}" \ No newline at end of file diff --git a/manifests/kubernetes-nmstate-operator.package.yaml b/manifests/kubernetes-nmstate-operator.package.yaml new file mode 100644 index 000000000..c4a062ac1 --- /dev/null +++ b/manifests/kubernetes-nmstate-operator.package.yaml @@ -0,0 +1,4 @@ +packageName: kubernetes-nmstate-operator +channels: + - name: "4.7" + currentCSV: kubernetes-nmstate-operator.v4.7.0 diff --git a/metadata/annotations.yaml b/metadata/annotations.yaml new file mode 100644 index 000000000..a027fcd97 --- /dev/null +++ b/metadata/annotations.yaml @@ -0,0 +1,7 @@ +annotations: + operators.operatorframework.io.bundle.channel.default.v1: "beta" + operators.operatorframework.io.bundle.channels.v1: "beta" + operators.operatorframework.io.bundle.manifests.v1: manifests/ + operators.operatorframework.io.bundle.mediatype.v1: registry+v1 + operators.operatorframework.io.bundle.metadata.v1: metadata/ + operators.operatorframework.io.bundle.package.v1: "kubernetes-nmstate-operator"