From e373f37b69d2279132edc5b67991552a39c903d6 Mon Sep 17 00:00:00 2001 From: Stephan Feurer Date: Wed, 21 Feb 2024 22:40:15 +0100 Subject: [PATCH] Support hyperconverged cluster operator via OLM --- class/defaults.yml | 39 ++++---- class/kubevirt-operator.yml | 10 +- component/app.jsonnet | 11 +-- component/helper.libsonnet | 12 +++ component/hyper.jsonnet | 77 +++++++++++++++ component/importer.jsonnet | 23 +---- component/kubevirt.jsonnet | 11 +-- component/kubevirt_types.jsonnet | 4 +- .../ROOT/pages/references/parameters.adoc | 94 ++++++++++++------- .../kubevirt-operator/apps/kubevirt-cdi.yaml | 2 +- .../apps/kubevirt-operator.yaml | 2 +- .../00_namespace.yaml | 0 .../{kubevirt => 10_kubevirt}/10_bundle.yaml | 0 .../00_namespace.yaml | 0 .../{importer => 20_importer}/10_bundle.yaml | 0 .../kubevirt/20_instance.yaml | 16 ---- .../apps/kubevirt-operator.yaml | 0 .../kubevirt-operator/00_namespace.yaml | 7 ++ .../kubevirt-operator/10_operator_group.yaml | 8 ++ .../kubevirt-operator/10_subscription.yaml | 16 ++++ .../kubevirt-operator/20_instance.yaml | 34 +++++++ .../kubevirt-operator/apps/kubevirt-cdi.yaml | 2 +- .../apps/kubevirt-operator.yaml | 2 +- .../00_namespace.yaml | 0 .../{kubevirt => 10_kubevirt}/10_bundle.yaml | 0 .../20_instance.yaml | 9 +- .../00_namespace.yaml | 0 .../{importer => 20_importer}/10_bundle.yaml | 0 .../20_importer}/20_instance.yaml | 0 ..._virtio.yaml => 80_preference_virtio.yaml} | 0 ...type_small-4.yaml => 80_type_small-4.yaml} | 0 ...type_small-8.yaml => 80_type_small-8.yaml} | 0 ...0_type_xsmall.yaml => 80_type_xsmall.yaml} | 0 .../kubevirt/20_instance.yaml | 16 ---- tests/witholm.yml | 51 +++++++++- tests/withtypes.yml | 27 ++++++ 36 files changed, 340 insertions(+), 133 deletions(-) create mode 100644 component/hyper.jsonnet rename tests/golden/defaults/kubevirt-operator/kubevirt-operator/{kubevirt => 10_kubevirt}/00_namespace.yaml (100%) rename tests/golden/defaults/kubevirt-operator/kubevirt-operator/{kubevirt => 10_kubevirt}/10_bundle.yaml (100%) rename tests/golden/defaults/kubevirt-operator/kubevirt-operator/{importer => 20_importer}/00_namespace.yaml (100%) rename tests/golden/defaults/kubevirt-operator/kubevirt-operator/{importer => 20_importer}/10_bundle.yaml (100%) delete mode 100644 tests/golden/defaults/kubevirt-operator/kubevirt-operator/kubevirt/20_instance.yaml delete mode 100644 tests/golden/witholm/kubevirt-operator/apps/kubevirt-operator.yaml create mode 100644 tests/golden/witholm/kubevirt-operator/kubevirt-operator/00_namespace.yaml create mode 100644 tests/golden/witholm/kubevirt-operator/kubevirt-operator/10_operator_group.yaml create mode 100644 tests/golden/witholm/kubevirt-operator/kubevirt-operator/10_subscription.yaml create mode 100644 tests/golden/witholm/kubevirt-operator/kubevirt-operator/20_instance.yaml rename tests/golden/withtypes/kubevirt-operator/kubevirt-operator/{kubevirt => 10_kubevirt}/00_namespace.yaml (100%) rename tests/golden/withtypes/kubevirt-operator/kubevirt-operator/{kubevirt => 10_kubevirt}/10_bundle.yaml (100%) rename tests/golden/withtypes/kubevirt-operator/kubevirt-operator/{importer => 10_kubevirt}/20_instance.yaml (74%) rename tests/golden/withtypes/kubevirt-operator/kubevirt-operator/{importer => 20_importer}/00_namespace.yaml (100%) rename tests/golden/withtypes/kubevirt-operator/kubevirt-operator/{importer => 20_importer}/10_bundle.yaml (100%) rename tests/golden/{defaults/kubevirt-operator/kubevirt-operator/importer => withtypes/kubevirt-operator/kubevirt-operator/20_importer}/20_instance.yaml (100%) rename tests/golden/withtypes/kubevirt-operator/kubevirt-operator/{kubevirt/40_preference_virtio.yaml => 80_preference_virtio.yaml} (100%) rename tests/golden/withtypes/kubevirt-operator/kubevirt-operator/{kubevirt/30_type_small-4.yaml => 80_type_small-4.yaml} (100%) rename tests/golden/withtypes/kubevirt-operator/kubevirt-operator/{kubevirt/30_type_small-8.yaml => 80_type_small-8.yaml} (100%) rename tests/golden/withtypes/kubevirt-operator/kubevirt-operator/{kubevirt/30_type_xsmall.yaml => 80_type_xsmall.yaml} (100%) delete mode 100644 tests/golden/withtypes/kubevirt-operator/kubevirt-operator/kubevirt/20_instance.yaml diff --git a/class/defaults.yml b/class/defaults.yml index 7efbc40..db1a6df 100644 --- a/class/defaults.yml +++ b/class/defaults.yml @@ -3,6 +3,14 @@ parameters: =_metadata: {} operators: + hyperconverged: + enabled: false + channel: stable + namespace: + annotations: {} + labels: {} + resources: {} + kubevirt: enabled: true version: v1.1.1 @@ -24,28 +32,19 @@ parameters: name: syn-kubevirt-cdi replicas: 1 + network: {} + hostpath: {} + quota: {} + scale: {} + config: - kubevirt: - certificateRotateStrategy: {} - configuration: {} - customizeComponents: {} - imagePullPolicy: IfNotPresent - workloadUpdateStrategy: {} + kubevirt: {} + importer: {} + network: {} + hostpath: {} + quota: {} + scale: {} - importer: - config: - featureGates: - - HonorWaitForFirstConsumer - imagePullPolicy: IfNotPresent - infra: - nodeSelector: - kubernetes.io/os: linux - tolerations: - - key: CriticalAddonsOnly - operator: Exists - workload: - nodeSelector: - kubernetes.io/os: linux cluster: types: {} diff --git a/class/kubevirt-operator.yml b/class/kubevirt-operator.yml index 858070e..e4fa2a0 100644 --- a/class/kubevirt-operator.yml +++ b/class/kubevirt-operator.yml @@ -15,12 +15,16 @@ parameters: - input_paths: - ${_base_directory}/component/importer.jsonnet input_type: jsonnet - output_path: kubevirt-operator/importer/ + output_path: kubevirt-operator/ - input_paths: - ${_base_directory}/component/kubevirt.jsonnet input_type: jsonnet - output_path: kubevirt-operator/kubevirt/ + output_path: kubevirt-operator/ - input_paths: - ${_base_directory}/component/kubevirt_types.jsonnet input_type: jsonnet - output_path: kubevirt-operator/kubevirt/ + output_path: kubevirt-operator/ + - input_paths: + - ${_base_directory}/component/hyper.jsonnet + input_type: jsonnet + output_path: kubevirt-operator/ diff --git a/component/app.jsonnet b/component/app.jsonnet index 435c019..5baa8e0 100644 --- a/component/app.jsonnet +++ b/component/app.jsonnet @@ -2,16 +2,15 @@ local kap = import 'lib/kapitan.libjsonnet'; local inv = kap.inventory(); local params = inv.parameters.kubevirt_operator; local argocd = import 'lib/argocd.libjsonnet'; +local helper = import 'helper.libsonnet'; local app = argocd.App('kubevirt-operator', params.kubevirt.namespace.name); -local hasKubevirt = params.operators.kubevirt.enabled; -local hasImporter = params.operators.importer.enabled; { - [if hasKubevirt then 'kubevirt-operator']: app { + [if helper.isEnabled('kubevirt') then 'kubevirt-operator']: app { spec+: { source: { - path: 'manifests/kubevirt-operator/kubevirt', + path: 'manifests/kubevirt-operator/10_kubevirt', }, syncPolicy+: { syncOptions+: [ @@ -20,10 +19,10 @@ local hasImporter = params.operators.importer.enabled; }, }, }, - [if hasImporter then 'kubevirt-cdi']: app { + [if helper.isEnabled('importer') then 'kubevirt-cdi']: app { spec+: { source: { - path: 'manifests/kubevirt-operator/importer', + path: 'manifests/kubevirt-operator/20_importer', }, syncPolicy+: { syncOptions+: [ diff --git a/component/helper.libsonnet b/component/helper.libsonnet index 6433409..bf8a6aa 100644 --- a/component/helper.libsonnet +++ b/component/helper.libsonnet @@ -1,5 +1,8 @@ local kap = import 'lib/kapitan.libjsonnet'; +local inv = kap.inventory(); +local params = inv.parameters.kubevirt_operator; +// Loading and patching manifests local clusterScoped = [ 'ClusterRole', 'ClusterRoleBinding', @@ -35,6 +38,15 @@ local patchManifests(path, namespace) = std.map( manifests('kubevirt-operator/manifests/' + path) ); +// Component +local componentEnabled(component) = + if component == 'hyperconverged' then + params.operators.hyperconverged.enabled + else + std.get(params.operators, component, { enabled: false }).enabled + && !params.operators.hyperconverged.enabled; + { load: patchManifests, + isEnabled: componentEnabled, } diff --git a/component/hyper.jsonnet b/component/hyper.jsonnet new file mode 100644 index 0000000..5eca263 --- /dev/null +++ b/component/hyper.jsonnet @@ -0,0 +1,77 @@ +// main template for kubevirt-operator +local com = import 'lib/commodore.libjsonnet'; +local kap = import 'lib/kapitan.libjsonnet'; +local kube = import 'lib/kube.libjsonnet'; +local olm = import 'lib/olm.libsonnet'; + +local helper = import 'helper.libsonnet'; + +// The hiera parameters for the component +local inv = kap.inventory(); +local operator = inv.parameters.kubevirt_operator.operators.hyperconverged; +local params = inv.parameters.kubevirt_operator.config; +local isOpenshift = std.startsWith(inv.parameters.facts.distribution, 'openshift'); + +// Namespace +local namespace = kube.Namespace('kubevirt-hyperconverged') { + metadata+: { + annotations+: operator.namespace.annotations, + labels+: { + // Configure the namespaces so that the OCP4 cluster-monitoring + // Prometheus can find the servicemonitors and rules. + [if isOpenshift then 'openshift.io/cluster-monitoring']: 'true', + } + com.makeMergeable(operator.namespace.labels), + }, +}; + +// OLM +local packageName = if isOpenshift then 'kubevirt-hyperconverged' else 'community-kubevirt-hyperconverged'; +local catalog = if isOpenshift then 'redhat-operators' else 'operatorhubio-catalog'; + +local operatorGroup = olm.OperatorGroup('kubevirt-operators') { + metadata+: { + namespace: 'kubevirt-hyperconverged', + }, +}; + +local subscription = olm.namespacedSubscription( + 'kubevirt-hyperconverged', + packageName, + operator.channel, + catalog, +) { + spec+: { + config+: { + resources: operator.resources, + }, + }, +}; + +// Instance +local config = com.makeMergeable(params.scale) + + com.makeMergeable(params.quota) + + com.makeMergeable(params.hostpath) + + com.makeMergeable(params.network) + + com.makeMergeable(params.importer) + + com.makeMergeable(params.kubevirt); + +local instance = kube._Object('hco.kubevirt.io/v1beta1', 'HyperConverged', 'instance') { + metadata+: { + labels: { + 'app.kubernetes.io/managed-by': 'commodore', + 'app.kubernetes.io/name': 'instance', + 'app.kubernetes.io/instance': 'instance', + }, + namespace: 'kubevirt-hyperconverged', + }, + spec: config, +}; + + +// Define outputs below +if helper.isEnabled('hyperconverged') then { + '00_namespace': namespace, + '10_operator_group': operatorGroup, + '10_subscription': subscription, + [if std.length(config) > 0 then '20_instance']: instance, +} else {} diff --git a/component/importer.jsonnet b/component/importer.jsonnet index ffb44eb..d2c62e0 100644 --- a/component/importer.jsonnet +++ b/component/importer.jsonnet @@ -23,18 +23,6 @@ local namespace = kube.Namespace(operator.namespace.name) { }, }; -// Namespace -local namespace = kube.Namespace(operator.namespace.name) { - metadata+: { - annotations+: operator.namespace.annotations, - labels+: { - // Configure the namespaces so that the OCP4 cluster-monitoring - // Prometheus can find the servicemonitors and rules. - [if isOpenshift then 'openshift.io/cluster-monitoring']: 'true', - } + com.makeMergeable(operator.namespace.labels), - }, -}; - // Instance local instance = kube._Object('cdi.kubevirt.io/v1beta1', 'CDI', 'instance') { metadata+: { @@ -49,9 +37,8 @@ local instance = kube._Object('cdi.kubevirt.io/v1beta1', 'CDI', 'instance') { }; // Define outputs below -if operator.enabled then - { - '00_namespace': namespace, - '10_bundle': helper.load('cdi-%s/cdi-operator.yaml' % operator.version, operator.namespace.name), - '20_instance': instance, - } +if helper.isEnabled('importer') then { + '20_importer/00_namespace': namespace, + '20_importer/10_bundle': helper.load('cdi-%s/cdi-operator.yaml' % operator.version, operator.namespace.name), + [if std.length(config) > 0 then '20_importer/20_instance']: instance, +} else {} diff --git a/component/kubevirt.jsonnet b/component/kubevirt.jsonnet index bdcabdb..449067b 100644 --- a/component/kubevirt.jsonnet +++ b/component/kubevirt.jsonnet @@ -37,9 +37,8 @@ local instance = kube._Object('kubevirt.io/v1', 'KubeVirt', 'instance') { }; // Define outputs below -if operator.enabled then - { - '00_namespace': namespace, - '10_bundle': helper.load('kubevirt-%s/kubevirt-operator.yaml' % operator.version, operator.namespace.name), - '20_instance': instance, - } +if helper.isEnabled('kubevirt') then { + '10_kubevirt/00_namespace': namespace, + '10_kubevirt/10_bundle': helper.load('kubevirt-%s/kubevirt-operator.yaml' % operator.version, operator.namespace.name), + [if std.length(config) > 0 then '10_kubevirt/20_instance']: instance, +} else {} diff --git a/component/kubevirt_types.jsonnet b/component/kubevirt_types.jsonnet index f98c0cb..ebc2145 100644 --- a/component/kubevirt_types.jsonnet +++ b/component/kubevirt_types.jsonnet @@ -8,7 +8,7 @@ local cluster = inv.parameters.kubevirt_operator.cluster; // Define outputs below { - ['30_type_' + name]: kube._Object('instancetype.kubevirt.io/v1beta1', 'VirtualMachineClusterInstancetype', name) { + ['80_type_' + name]: kube._Object('instancetype.kubevirt.io/v1beta1', 'VirtualMachineClusterInstancetype', name) { metadata+: { labels+: { 'app.kubernetes.io/managed-by': 'commodore', @@ -19,7 +19,7 @@ local cluster = inv.parameters.kubevirt_operator.cluster; } for name in std.objectFields(cluster.types) } + { - ['40_preference_' + name]: kube._Object('instancetype.kubevirt.io/v1beta1', 'VirtualMachineClusterPreference', name) { + ['80_preference_' + name]: kube._Object('instancetype.kubevirt.io/v1beta1', 'VirtualMachineClusterPreference', name) { metadata+: { labels+: { 'app.kubernetes.io/managed-by': 'commodore', diff --git a/docs/modules/ROOT/pages/references/parameters.adoc b/docs/modules/ROOT/pages/references/parameters.adoc index d44648b..72a684b 100644 --- a/docs/modules/ROOT/pages/references/parameters.adoc +++ b/docs/modules/ROOT/pages/references/parameters.adoc @@ -8,6 +8,36 @@ The parent key for all of the following parameters is `kubevirt_operator`. Enable / Configure operators. +=== `hyperconverged` + +[horizontal] +type:: dictionary +default:: ++ +[source,yaml] +---- +hyperconverged: + enabled: false <1> + channel: stable <2> + namespace: <3> + annotations: {} + labels: {} + resources: {} <4> +---- +<1> Enable Hyperconverged operator. +<2> Hyperconveged olm release channel. +<3> Configure KubeVirt namespace. +<4> Configure resources for operator. + +Hyperconverged cluster operator configuration. + +Deploying hyperconverged cluster operator will use OLM to install the operator. + +This operator will manage all other operator contained in this component. + +See https://github.com/kubevirt/hyperconverged-cluster-operator[Hyperconverged Cluster Operator Github] for documentation. + + === `kubevirt` [horizontal] @@ -70,46 +100,14 @@ Configure instances. [horizontal] type:: dictionary -default:: -+ -[source,yaml] ----- -kubevirt: - certificateRotateStrategy: {} - configuration: {} - customizeComponents: {} - imagePullPolicy: IfNotPresent - workloadUpdateStrategy: {} ----- - -See https://kubevirt.io/user-guide/operations/customize_components[KubeVirt Documentation] for specs. +default:: See https://kubevirt.io/user-guide/operations/customize_components[KubeVirt Documentation]. === `importer` [horizontal] type:: dictionary -default:: -+ -[source,yaml] ----- -importer: - config: - featureGates: - - HonorWaitForFirstConsumer - imagePullPolicy: IfNotPresent - infra: - nodeSelector: - kubernetes.io/os: linux - tolerations: - - key: CriticalAddonsOnly - operator: Exists - workload: - nodeSelector: - kubernetes.io/os: linux ----- - -See https://github.com/kubevirt/containerized-data-importer/blob/main/doc/cdi-config.md[CDI Documentation] for specs. +default:: See https://github.com/kubevirt/containerized-data-importer/blob/main/doc/cdi-config.md[CDI Documentation]. == `cluster` @@ -140,6 +138,34 @@ ClusterInstancePreferences configuration, see https://kubevirt.io/user-guide/vir [source,yaml] ---- kubevirt_operator: + config: + kubevirt: + imagePullPolicy: IfNotPresent + infra: + nodeSelector: + kubernetes.io/os: linux + tolerations: + - key: CriticalAddonsOnly + operator: Exists + workload: + nodeSelector: + kubernetes.io/os: linux + + importer: + config: + featureGates: + - HonorWaitForFirstConsumer + imagePullPolicy: IfNotPresent + infra: + nodeSelector: + kubernetes.io/os: linux + tolerations: + - key: CriticalAddonsOnly + operator: Exists + workload: + nodeSelector: + kubernetes.io/os: linux + cluster: types: small-4: diff --git a/tests/golden/defaults/kubevirt-operator/apps/kubevirt-cdi.yaml b/tests/golden/defaults/kubevirt-operator/apps/kubevirt-cdi.yaml index bec8cab..151fd75 100644 --- a/tests/golden/defaults/kubevirt-operator/apps/kubevirt-cdi.yaml +++ b/tests/golden/defaults/kubevirt-operator/apps/kubevirt-cdi.yaml @@ -1,6 +1,6 @@ spec: source: - path: manifests/kubevirt-operator/importer + path: manifests/kubevirt-operator/20_importer syncPolicy: syncOptions: - ServerSideApply=true diff --git a/tests/golden/defaults/kubevirt-operator/apps/kubevirt-operator.yaml b/tests/golden/defaults/kubevirt-operator/apps/kubevirt-operator.yaml index 8024a5f..5b0795d 100644 --- a/tests/golden/defaults/kubevirt-operator/apps/kubevirt-operator.yaml +++ b/tests/golden/defaults/kubevirt-operator/apps/kubevirt-operator.yaml @@ -1,6 +1,6 @@ spec: source: - path: manifests/kubevirt-operator/kubevirt + path: manifests/kubevirt-operator/10_kubevirt syncPolicy: syncOptions: - ServerSideApply=true diff --git a/tests/golden/defaults/kubevirt-operator/kubevirt-operator/kubevirt/00_namespace.yaml b/tests/golden/defaults/kubevirt-operator/kubevirt-operator/10_kubevirt/00_namespace.yaml similarity index 100% rename from tests/golden/defaults/kubevirt-operator/kubevirt-operator/kubevirt/00_namespace.yaml rename to tests/golden/defaults/kubevirt-operator/kubevirt-operator/10_kubevirt/00_namespace.yaml diff --git a/tests/golden/defaults/kubevirt-operator/kubevirt-operator/kubevirt/10_bundle.yaml b/tests/golden/defaults/kubevirt-operator/kubevirt-operator/10_kubevirt/10_bundle.yaml similarity index 100% rename from tests/golden/defaults/kubevirt-operator/kubevirt-operator/kubevirt/10_bundle.yaml rename to tests/golden/defaults/kubevirt-operator/kubevirt-operator/10_kubevirt/10_bundle.yaml diff --git a/tests/golden/defaults/kubevirt-operator/kubevirt-operator/importer/00_namespace.yaml b/tests/golden/defaults/kubevirt-operator/kubevirt-operator/20_importer/00_namespace.yaml similarity index 100% rename from tests/golden/defaults/kubevirt-operator/kubevirt-operator/importer/00_namespace.yaml rename to tests/golden/defaults/kubevirt-operator/kubevirt-operator/20_importer/00_namespace.yaml diff --git a/tests/golden/defaults/kubevirt-operator/kubevirt-operator/importer/10_bundle.yaml b/tests/golden/defaults/kubevirt-operator/kubevirt-operator/20_importer/10_bundle.yaml similarity index 100% rename from tests/golden/defaults/kubevirt-operator/kubevirt-operator/importer/10_bundle.yaml rename to tests/golden/defaults/kubevirt-operator/kubevirt-operator/20_importer/10_bundle.yaml diff --git a/tests/golden/defaults/kubevirt-operator/kubevirt-operator/kubevirt/20_instance.yaml b/tests/golden/defaults/kubevirt-operator/kubevirt-operator/kubevirt/20_instance.yaml deleted file mode 100644 index b88d361..0000000 --- a/tests/golden/defaults/kubevirt-operator/kubevirt-operator/kubevirt/20_instance.yaml +++ /dev/null @@ -1,16 +0,0 @@ -apiVersion: kubevirt.io/v1 -kind: KubeVirt -metadata: - annotations: {} - labels: - app.kubernetes.io/instance: instance - app.kubernetes.io/managed-by: commodore - app.kubernetes.io/name: instance - name: instance - namespace: syn-kubevirt-operator -spec: - certificateRotateStrategy: {} - configuration: {} - customizeComponents: {} - imagePullPolicy: IfNotPresent - workloadUpdateStrategy: {} diff --git a/tests/golden/witholm/kubevirt-operator/apps/kubevirt-operator.yaml b/tests/golden/witholm/kubevirt-operator/apps/kubevirt-operator.yaml deleted file mode 100644 index e69de29..0000000 diff --git a/tests/golden/witholm/kubevirt-operator/kubevirt-operator/00_namespace.yaml b/tests/golden/witholm/kubevirt-operator/kubevirt-operator/00_namespace.yaml new file mode 100644 index 0000000..07e93ab --- /dev/null +++ b/tests/golden/witholm/kubevirt-operator/kubevirt-operator/00_namespace.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: Namespace +metadata: + annotations: {} + labels: + name: kubevirt-hyperconverged + name: kubevirt-hyperconverged diff --git a/tests/golden/witholm/kubevirt-operator/kubevirt-operator/10_operator_group.yaml b/tests/golden/witholm/kubevirt-operator/kubevirt-operator/10_operator_group.yaml new file mode 100644 index 0000000..eb084f9 --- /dev/null +++ b/tests/golden/witholm/kubevirt-operator/kubevirt-operator/10_operator_group.yaml @@ -0,0 +1,8 @@ +apiVersion: operators.coreos.com/v1 +kind: OperatorGroup +metadata: + annotations: {} + labels: + name: kubevirt-operators + name: kubevirt-operators + namespace: kubevirt-hyperconverged diff --git a/tests/golden/witholm/kubevirt-operator/kubevirt-operator/10_subscription.yaml b/tests/golden/witholm/kubevirt-operator/kubevirt-operator/10_subscription.yaml new file mode 100644 index 0000000..a36febe --- /dev/null +++ b/tests/golden/witholm/kubevirt-operator/kubevirt-operator/10_subscription.yaml @@ -0,0 +1,16 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: Subscription +metadata: + annotations: {} + labels: + name: community-kubevirt-hyperconverged + name: community-kubevirt-hyperconverged + namespace: kubevirt-hyperconverged +spec: + channel: stable + config: + resources: {} + installPlanApproval: Automatic + name: community-kubevirt-hyperconverged + source: operatorhubio-catalog + sourceNamespace: my-olm-namespace diff --git a/tests/golden/witholm/kubevirt-operator/kubevirt-operator/20_instance.yaml b/tests/golden/witholm/kubevirt-operator/kubevirt-operator/20_instance.yaml new file mode 100644 index 0000000..b48c1ed --- /dev/null +++ b/tests/golden/witholm/kubevirt-operator/kubevirt-operator/20_instance.yaml @@ -0,0 +1,34 @@ +apiVersion: hco.kubevirt.io/v1beta1 +kind: HyperConverged +metadata: + annotations: {} + labels: + app.kubernetes.io/instance: instance + app.kubernetes.io/managed-by: commodore + app.kubernetes.io/name: instance + name: instance + namespace: kubevirt-hyperconverged +spec: + commonTemplates: + namespace: kubevirt-hyperconverged + config: + featureGates: + - HonorWaitForFirstConsumer + imagePullPolicy: IfNotPresent + infra: + nodeSelector: + kubernetes.io/os: linux + tolerations: + - key: CriticalAddonsOnly + operator: Exists + linuxBridge: {} + multus: {} + multusDynamicNetworks: {} + storagePools: + - name: local + path: /var/hpvolumes + templateValidator: + replicas: 2 + workload: + nodeSelector: + kubernetes.io/os: linux diff --git a/tests/golden/withtypes/kubevirt-operator/apps/kubevirt-cdi.yaml b/tests/golden/withtypes/kubevirt-operator/apps/kubevirt-cdi.yaml index bec8cab..151fd75 100644 --- a/tests/golden/withtypes/kubevirt-operator/apps/kubevirt-cdi.yaml +++ b/tests/golden/withtypes/kubevirt-operator/apps/kubevirt-cdi.yaml @@ -1,6 +1,6 @@ spec: source: - path: manifests/kubevirt-operator/importer + path: manifests/kubevirt-operator/20_importer syncPolicy: syncOptions: - ServerSideApply=true diff --git a/tests/golden/withtypes/kubevirt-operator/apps/kubevirt-operator.yaml b/tests/golden/withtypes/kubevirt-operator/apps/kubevirt-operator.yaml index 8024a5f..5b0795d 100644 --- a/tests/golden/withtypes/kubevirt-operator/apps/kubevirt-operator.yaml +++ b/tests/golden/withtypes/kubevirt-operator/apps/kubevirt-operator.yaml @@ -1,6 +1,6 @@ spec: source: - path: manifests/kubevirt-operator/kubevirt + path: manifests/kubevirt-operator/10_kubevirt syncPolicy: syncOptions: - ServerSideApply=true diff --git a/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/kubevirt/00_namespace.yaml b/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/10_kubevirt/00_namespace.yaml similarity index 100% rename from tests/golden/withtypes/kubevirt-operator/kubevirt-operator/kubevirt/00_namespace.yaml rename to tests/golden/withtypes/kubevirt-operator/kubevirt-operator/10_kubevirt/00_namespace.yaml diff --git a/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/kubevirt/10_bundle.yaml b/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/10_kubevirt/10_bundle.yaml similarity index 100% rename from tests/golden/withtypes/kubevirt-operator/kubevirt-operator/kubevirt/10_bundle.yaml rename to tests/golden/withtypes/kubevirt-operator/kubevirt-operator/10_kubevirt/10_bundle.yaml diff --git a/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/importer/20_instance.yaml b/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/10_kubevirt/20_instance.yaml similarity index 74% rename from tests/golden/withtypes/kubevirt-operator/kubevirt-operator/importer/20_instance.yaml rename to tests/golden/withtypes/kubevirt-operator/kubevirt-operator/10_kubevirt/20_instance.yaml index 91c0c8a..b4bb882 100644 --- a/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/importer/20_instance.yaml +++ b/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/10_kubevirt/20_instance.yaml @@ -1,5 +1,5 @@ -apiVersion: cdi.kubevirt.io/v1beta1 -kind: CDI +apiVersion: kubevirt.io/v1 +kind: KubeVirt metadata: annotations: {} labels: @@ -7,11 +7,8 @@ metadata: app.kubernetes.io/managed-by: commodore app.kubernetes.io/name: instance name: instance - namespace: syn-kubevirt-cdi + namespace: syn-kubevirt-operator spec: - config: - featureGates: - - HonorWaitForFirstConsumer imagePullPolicy: IfNotPresent infra: nodeSelector: diff --git a/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/importer/00_namespace.yaml b/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/20_importer/00_namespace.yaml similarity index 100% rename from tests/golden/withtypes/kubevirt-operator/kubevirt-operator/importer/00_namespace.yaml rename to tests/golden/withtypes/kubevirt-operator/kubevirt-operator/20_importer/00_namespace.yaml diff --git a/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/importer/10_bundle.yaml b/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/20_importer/10_bundle.yaml similarity index 100% rename from tests/golden/withtypes/kubevirt-operator/kubevirt-operator/importer/10_bundle.yaml rename to tests/golden/withtypes/kubevirt-operator/kubevirt-operator/20_importer/10_bundle.yaml diff --git a/tests/golden/defaults/kubevirt-operator/kubevirt-operator/importer/20_instance.yaml b/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/20_importer/20_instance.yaml similarity index 100% rename from tests/golden/defaults/kubevirt-operator/kubevirt-operator/importer/20_instance.yaml rename to tests/golden/withtypes/kubevirt-operator/kubevirt-operator/20_importer/20_instance.yaml diff --git a/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/kubevirt/40_preference_virtio.yaml b/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/80_preference_virtio.yaml similarity index 100% rename from tests/golden/withtypes/kubevirt-operator/kubevirt-operator/kubevirt/40_preference_virtio.yaml rename to tests/golden/withtypes/kubevirt-operator/kubevirt-operator/80_preference_virtio.yaml diff --git a/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/kubevirt/30_type_small-4.yaml b/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/80_type_small-4.yaml similarity index 100% rename from tests/golden/withtypes/kubevirt-operator/kubevirt-operator/kubevirt/30_type_small-4.yaml rename to tests/golden/withtypes/kubevirt-operator/kubevirt-operator/80_type_small-4.yaml diff --git a/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/kubevirt/30_type_small-8.yaml b/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/80_type_small-8.yaml similarity index 100% rename from tests/golden/withtypes/kubevirt-operator/kubevirt-operator/kubevirt/30_type_small-8.yaml rename to tests/golden/withtypes/kubevirt-operator/kubevirt-operator/80_type_small-8.yaml diff --git a/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/kubevirt/30_type_xsmall.yaml b/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/80_type_xsmall.yaml similarity index 100% rename from tests/golden/withtypes/kubevirt-operator/kubevirt-operator/kubevirt/30_type_xsmall.yaml rename to tests/golden/withtypes/kubevirt-operator/kubevirt-operator/80_type_xsmall.yaml diff --git a/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/kubevirt/20_instance.yaml b/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/kubevirt/20_instance.yaml deleted file mode 100644 index b88d361..0000000 --- a/tests/golden/withtypes/kubevirt-operator/kubevirt-operator/kubevirt/20_instance.yaml +++ /dev/null @@ -1,16 +0,0 @@ -apiVersion: kubevirt.io/v1 -kind: KubeVirt -metadata: - annotations: {} - labels: - app.kubernetes.io/instance: instance - app.kubernetes.io/managed-by: commodore - app.kubernetes.io/name: instance - name: instance - namespace: syn-kubevirt-operator -spec: - certificateRotateStrategy: {} - configuration: {} - customizeComponents: {} - imagePullPolicy: IfNotPresent - workloadUpdateStrategy: {} diff --git a/tests/witholm.yml b/tests/witholm.yml index a4da5b7..dffeff3 100644 --- a/tests/witholm.yml +++ b/tests/witholm.yml @@ -1,3 +1,50 @@ -# Overwrite parameters here +parameters: + kapitan: + dependencies: + - type: https + source: https://raw.githubusercontent.com/tegridy-io/component-olm/master/lib/olm.libsonnet + output_path: vendor/lib/olm.libsonnet -# parameters: {...} + olm: + namespace: + manager: + name: my-olm-namespace + + kubevirt_operator: + operators: + hyperconverged: + enabled: true + + config: + kubevirt: + imagePullPolicy: IfNotPresent + infra: + nodeSelector: + kubernetes.io/os: linux + tolerations: + - key: CriticalAddonsOnly + operator: Exists + workload: + nodeSelector: + kubernetes.io/os: linux + + importer: + config: + featureGates: + - HonorWaitForFirstConsumer + + scale: + commonTemplates: + namespace: kubevirt-hyperconverged + templateValidator: + replicas: 2 + + network: + multus: {} + multusDynamicNetworks: {} + linuxBridge: {} + + hostpath: + storagePools: + - name: "local" + path: "/var/hpvolumes" diff --git a/tests/withtypes.yml b/tests/withtypes.yml index 61b3843..72f269b 100644 --- a/tests/withtypes.yml +++ b/tests/withtypes.yml @@ -1,5 +1,32 @@ parameters: kubevirt_operator: + config: + kubevirt: + imagePullPolicy: IfNotPresent + infra: + nodeSelector: + kubernetes.io/os: linux + tolerations: + - key: CriticalAddonsOnly + operator: Exists + workload: + nodeSelector: + kubernetes.io/os: linux + + importer: + config: + featureGates: + - HonorWaitForFirstConsumer + imagePullPolicy: IfNotPresent + infra: + nodeSelector: + kubernetes.io/os: linux + tolerations: + - key: CriticalAddonsOnly + operator: Exists + workload: + nodeSelector: + kubernetes.io/os: linux cluster: types: