Patch hostgenerators to delete catalogues
To facilitate catalogue-driven generation of BareMetalHost resources, airship splits the work into two pieces: 1. <phasename>/hostgenerator/ is responsible for substituting catalogue variables into a host generation template 2. <phasename>/ invokes its hostgenerator/ as a Kustomize generator:, leveraging the results of 1. to generate BMH. However, a weird side-effect of this setup is that the catalogues used in step 1. above are still hanging around in step 2., and Kustomize tries to interpret them as generator: plugin configs, resulting in a rendering error. Previously, we'd worked around this by having a pass-through plugin implementation, which performs a no-op generation for the spent catalogues. However, with the change below, airshipctl migrated to container-based KRM functions for its kustomize plugins, and also adopted a strategic-patch-delete mechanism to clean up the spent catalogues, so that they aren't still hanging around by the time the generation occurs. https://review.opendev.org/#/c/759279/ Change-Id: I50a9bd2fcc37b70f50b8ded88f152775aff928bc Closes: #48
This commit is contained in:
parent
aacdbc2f41
commit
39a6036ca8
@ -7,3 +7,4 @@ resources:
|
||||
|
||||
transformers:
|
||||
- ../../../../../../../airshipctl/manifests/function/hostgenerator-m3/replacements
|
||||
- patch-delete-catalogues.yaml
|
||||
|
@ -0,0 +1,35 @@
|
||||
apiVersion: builtin
|
||||
kind: PatchStrategicMergeTransformer
|
||||
metadata:
|
||||
name: smp
|
||||
patches: |-
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: host-catalogue
|
||||
$patch: delete
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: host-generation-catalogue
|
||||
$patch: delete
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: networking
|
||||
$patch: delete
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: env-vars-catalogue
|
||||
$patch: delete
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: versions-airshipctl
|
||||
$patch: delete
|
@ -7,3 +7,4 @@ resources:
|
||||
|
||||
transformers:
|
||||
- ../../../../../../../airshipctl/manifests/function/hostgenerator-m3/replacements
|
||||
- patch-delete-catalogues.yaml
|
||||
|
@ -0,0 +1,35 @@
|
||||
apiVersion: builtin
|
||||
kind: PatchStrategicMergeTransformer
|
||||
metadata:
|
||||
name: smp
|
||||
patches: |-
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: host-catalogue
|
||||
$patch: delete
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: host-generation-catalogue
|
||||
$patch: delete
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: networking
|
||||
$patch: delete
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: env-vars-catalogue
|
||||
$patch: delete
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: versions-airshipctl
|
||||
$patch: delete
|
@ -7,3 +7,4 @@ resources:
|
||||
|
||||
transformers:
|
||||
- ../../../../../../../airshipctl/manifests/function/hostgenerator-m3/replacements
|
||||
- patch-delete-catalogues.yaml
|
||||
|
@ -0,0 +1,35 @@
|
||||
apiVersion: builtin
|
||||
kind: PatchStrategicMergeTransformer
|
||||
metadata:
|
||||
name: smp
|
||||
patches: |-
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: host-catalogue
|
||||
$patch: delete
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: host-generation-catalogue
|
||||
$patch: delete
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: networking
|
||||
$patch: delete
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: env-vars-catalogue
|
||||
$patch: delete
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: versions-airshipctl
|
||||
$patch: delete
|
@ -7,3 +7,4 @@ resources:
|
||||
|
||||
transformers:
|
||||
- ../../../../../../../airshipctl/manifests/function/hostgenerator-m3/replacements
|
||||
- patch-delete-catalogues.yaml
|
||||
|
@ -0,0 +1,35 @@
|
||||
apiVersion: builtin
|
||||
kind: PatchStrategicMergeTransformer
|
||||
metadata:
|
||||
name: smp
|
||||
patches: |-
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: host-catalogue
|
||||
$patch: delete
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: host-generation-catalogue
|
||||
$patch: delete
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: networking
|
||||
$patch: delete
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: env-vars-catalogue
|
||||
$patch: delete
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: versions-airshipctl
|
||||
$patch: delete
|
@ -4,7 +4,7 @@
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: networking-catalogue
|
||||
name: networking
|
||||
|
||||
# The catalogue should be overridden as appropriate for different kubernetes
|
||||
# clusters, e.g. ephemeral vs target vs tenant
|
||||
|
@ -7,3 +7,4 @@ resources:
|
||||
|
||||
transformers:
|
||||
- ../../../../../../../airshipctl/manifests/function/hostgenerator-m3/replacements
|
||||
- patch-delete-catalogues.yaml
|
||||
|
@ -0,0 +1,35 @@
|
||||
apiVersion: builtin
|
||||
kind: PatchStrategicMergeTransformer
|
||||
metadata:
|
||||
name: smp
|
||||
patches: |-
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: host-catalogue
|
||||
$patch: delete
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: host-generation-catalogue
|
||||
$patch: delete
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: networking
|
||||
$patch: delete
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: env-vars-catalogue
|
||||
$patch: delete
|
||||
---
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: versions-airshipctl
|
||||
$patch: delete
|
@ -4,7 +4,7 @@
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
kind: VariableCatalogue
|
||||
metadata:
|
||||
name: networking-catalogue
|
||||
name: networking
|
||||
|
||||
# The catalogue should be overridden as appropriate for different kubernetes
|
||||
# clusters, e.g. ephemeral vs target vs tenant
|
||||
|
@ -17,12 +17,12 @@
|
||||
shell: |
|
||||
set -e
|
||||
kustomize build --enable_alpha_plugins \
|
||||
{{ airship_config_manifest_directory }}/{{ airship_config_site_path }}/{{ path }} |
|
||||
{{ airship_config_manifest_directory }}/{{ airship_config_site_path }}/{{ path }} 2>/dev/null |
|
||||
kustomize cfg grep "kind=BareMetalHost"
|
||||
register: bmh_command
|
||||
failed_when: "bmh_command.stdout == ''"
|
||||
environment:
|
||||
KUSTOMIZE_PLUGIN_HOME: "{{ ansible_env.HOME }}/.airship/kustomize-plugins"
|
||||
KUSTOMIZE_PLUGIN_HOME: "/tmp"
|
||||
KUSTOMIZE_ENABLE_ALPHA_COMMANDS: "true"
|
||||
|
||||
- set_fact:
|
||||
@ -32,12 +32,12 @@
|
||||
shell: |
|
||||
set -e
|
||||
kustomize build --enable_alpha_plugins \
|
||||
{{ airship_config_manifest_directory }}/{{ airship_config_site_path }}/{{ path }} |
|
||||
{{ airship_config_manifest_directory }}/{{ airship_config_site_path }}/{{ path }} 2>/dev/null |
|
||||
kustomize cfg grep "metadata.name={{ item.spec.networkData.name }}"
|
||||
register: netdata_command
|
||||
failed_when: "netdata_command.stdout == ''"
|
||||
environment:
|
||||
KUSTOMIZE_PLUGIN_HOME: "{{ ansible_env.HOME }}/.airship/kustomize-plugins"
|
||||
KUSTOMIZE_PLUGIN_HOME: "/tmp"
|
||||
KUSTOMIZE_ENABLE_ALPHA_COMMANDS: "true"
|
||||
with_items: "{{ bmh }}"
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user