u/fuel: Bump & rebase for ODL fix after Pike mv
[armband.git] / patches / opnfv-fuel / 0007-mcp-salt-formulas-armband-Extend-libvirt_domain.patch
index 0533412..5c005f0 100644 (file)
@@ -1,5 +1,5 @@
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-: Copyright (c) 2017 Enea AB and others.
+: Copyright (c) 2018 Enea AB and others.
 :
 : All rights reserved. This program and the accompanying materials
 : are made available under the terms of the Apache License, Version 2.0
@@ -10,42 +10,85 @@ From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
 Date: Sun, 20 Aug 2017 22:41:26 +0200
 Subject: [PATCH] mcp: salt-formulas: armband: Extend libvirt_domain
 
-Add new state in armband salt formula that extends salt's virt
-libvirt_domain.jinja template with support for:
-- hw_firmware_type;
-- virt_machine_model;
-- cpu_model;
+Add new state in armband salt formula that:
+* extends salt's virt libvirt_domain.jinja template with support for:
+  - hw_firmware_type;
+  - virt_machine_model;
+  - cpu_model;
+  These will later be leveraged via salt virt formula with AArch64
+  specific values.
+* to ensure compatibilty of `virt.purge` with NVRAM-enabled domains
+  at undefine time, pass down the proper flag to libvirt from virt.py.
+* re-enable AArch64 bootstrap
+  Recent changes in salt bootstrap script from [1] whitelist a
+  fixed pool of known architectures. Add "arm64" to that list on the
+  fly, as part of `config.gather_bootstrap_script`.
+  NOTE: This change will be leveraged by passing a custom DEB repo to
+  the bootstrap script with `-R linux.enea.com/saltstack`.
 
-These will later be leveraged via salt virt formula with AArch64
-specific values.
+NOTE: After running this new state, salt-minion should be restarted
+to pick up the changes, so we'll run it before rebooting kvm nodes.
+
+[1] http://bootstrap.saltstack.com
 
 Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
 ---
- mcp/config/states/virtual_control_plane            |  1 +
- .../armband/files/libvirt_domain.jinja.diff        | 46 ++++++++++++++++++++++
.../armband/libvirt_domain_template.sls            |  4 ++
- 3 files changed, 51 insertions(+)
- create mode 100644 mcp/salt-formulas/armband/files/libvirt_domain.jinja.diff
- create mode 100644 mcp/salt-formulas/armband/libvirt_domain_template.sls
+ mcp/config/states/baremetal_init                   |   1 +
+ .../armband/files/salt-minion-aarch64-rollup.diff  | 101 +++++++++++++++++++++
mcp/salt-formulas/armband/salt_minion.sls          |   7 ++
+ 3 files changed, 109 insertions(+)
+ create mode 100644 mcp/salt-formulas/armband/files/salt-minion-aarch64-rollup.diff
+ create mode 100644 mcp/salt-formulas/armband/salt_minion.sls
 
-diff --git a/mcp/config/states/virtual_control_plane b/mcp/config/states/virtual_control_plane
-index 88e7080..aef2c28 100755
---- a/mcp/config/states/virtual_control_plane
-+++ b/mcp/config/states/virtual_control_plane
-@@ -35,6 +35,7 @@ wait_for 90 "! salt -C 'kvm* or cmp*' test.ping | " \
- salt -C '* and not cfg01* and not mas01*' state.apply linux,ntp
+diff --git a/mcp/config/states/baremetal_init b/mcp/config/states/baremetal_init
+index cd254dd..fb20a81 100755
+--- a/mcp/config/states/baremetal_init
++++ b/mcp/config/states/baremetal_init
+@@ -32,6 +32,7 @@ salt -C 'cmp*' state.apply linux.network || true
+ salt -C 'cmp*' file.write /etc/dhcp/dhclient-enter-hooks.d/no-default-route \
+   args='unset new_routers'
 
- salt -C 'kvm*' state.sls armband || true
-+salt -C 'kvm*' state.sls armband.libvirt_domain_template || true
- wait_for 5 "salt -C 'kvm*' state.sls libvirt"
++salt -C 'kvm*' state.apply armband.salt_minion
+ salt -C 'kvm* or cmp*' system.reboot
+ wait_for 90.0 "salt -C 'kvm* or cmp*' test.ping"
 
- salt -C '* and not cfg01* and not mas01*' state.apply salt
-diff --git a/mcp/salt-formulas/armband/files/libvirt_domain.jinja.diff b/mcp/salt-formulas/armband/files/libvirt_domain.jinja.diff
+diff --git a/mcp/salt-formulas/armband/files/salt-minion-aarch64-rollup.diff b/mcp/salt-formulas/armband/files/salt-minion-aarch64-rollup.diff
 new file mode 100644
-index 0000000..4e7fad5
+index 0000000..9e74c24
 --- /dev/null
-+++ b/mcp/salt-formulas/armband/files/libvirt_domain.jinja.diff
-@@ -0,0 +1,46 @@
++++ b/mcp/salt-formulas/armband/files/salt-minion-aarch64-rollup.diff
+@@ -0,0 +1,101 @@
++From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
++Date: Sun Aug 20 18:18:53 2017 +0200
++Subject: [PATCH] cloud.py: Allow AArch64 arch in salt bootstrap
++
++Recent changes in salt bootstrap script from [1] whitelist a
++fixed pool of known architectures. Add "arm64" to that list on the
++fly, as part of `config.gather_bootstrap_script`.
++
++NOTE: This change will be leveraged by passing a custom DEB repo to
++the bootstrap script with `-R linux.enea.com/saltstack`.
++
++[1] http://bootstrap.saltstack.com
++
++Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
++---
++
++diff --git a/salt/utils/cloud.py b/salt/utils/cloud.py
++--- a/salt/utils/cloud.py
+++++ b/salt/utils/cloud.py
++@@ -2772,6 +2772,9 @@
++     if not script_content:
++         raise ValueError('No content in bootstrap script !')
++
+++    # NOTE(armband): edit bootstrap script on the fly to allow AArch64
+++    script_content = script_content.replace('"amd64")', '"amd64"|"arm64")')
+++
++     # Get the path to the built-in deploy scripts directory
++     builtin_deploy_dir = os.path.join(
++         os.path.dirname(__file__),
++--
++
 +From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
 +Date: Sun Aug 20 18:18:53 2017 +0200
 +Subject: [PATCH] libvirt_domain.jinja: Add AArch64 support
@@ -66,9 +109,9 @@ index 0000000..4e7fad5
 +Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
 +---
 +
-+diff --git a/usr/lib/python2.7/dist-packages/salt/templates/virt/libvirt_domain.jinja b/usr/lib/python2.7/dist-packages/salt/templates/virt/libvirt_domain.jinja
-+--- a/usr/lib/python2.7/dist-packages/salt/templates/virt/libvirt_domain.jinja
-++++ b/usr/lib/python2.7/dist-packages/salt/templates/virt/libvirt_domain.jinja
++diff --git a/salt/templates/virt/libvirt_domain.jinja b/salt/templates/virt/libvirt_domain.jinja
++--- a/salt/templates/virt/libvirt_domain.jinja
+++++ b/salt/templates/virt/libvirt_domain.jinja
 +@@ -3,11 +3,22 @@
 +         <vcpu>{{ cpu }}</vcpu>
 +         <memory unit='KiB'>{{ mem }}</memory>
@@ -92,13 +135,40 @@ index 0000000..4e7fad5
 +         <devices>
 +                 {% for diskname, disk in disks.items() %}
 +                 <disk type='file' device='disk'>
-diff --git a/mcp/salt-formulas/armband/libvirt_domain_template.sls b/mcp/salt-formulas/armband/libvirt_domain_template.sls
++--
++
++From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
++Date: Sun Nov 19 02:18:53 2017 +0200
++Subject: [PATCH] virt.py: undefine: NVRAM flag support
++
++Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
++---
++
++diff --git a/salt/modules/virt.py b/salt/modules/virt.py
++--- a/salt/modules/virt.py
+++++ b/salt/modules/virt.py
++@@ -1523,7 +1523,10 @@
++         salt '*' virt.undefine <domain>
++     '''
++     dom = _get_domain(vm_)
++-    return dom.undefine() == 0
+++    try:
+++        return dom.undefineFlags(libvirt.VIR_DOMAIN_UNDEFINE_NVRAM) == 0
+++    except libvirt.libvirtError:
+++        return dom.undefine() == 0
++
++
++ def purge(vm_, dirs=False):
+diff --git a/mcp/salt-formulas/armband/salt_minion.sls b/mcp/salt-formulas/armband/salt_minion.sls
 new file mode 100644
-index 0000000..7cc8e22
+index 0000000..9cce636
 --- /dev/null
-+++ b/mcp/salt-formulas/armband/libvirt_domain_template.sls
-@@ -0,0 +1,4 @@
-+/usr/lib/python2.7/dist-packages/salt/templates/virt/libvirt_domain.jinja:
++++ b/mcp/salt-formulas/armband/salt_minion.sls
+@@ -0,0 +1,7 @@
++salt-minion-aarch64-rollup:
 +  file.patch:
-+  - source:  salt://armband/files/libvirt_domain.jinja.diff
-+  - hash: "9d02cd8aa04497c2d75c72840a5c6c41"
++  - name: /usr/lib/python2.7/dist-packages
++  - source: salt://armband/files/salt-minion-aarch64-rollup.diff
++  - hash: False
++  - options: '-p1'
++  - unless: 'test -f /var/cache/salt/minion/files/base/armband/files/salt-minion-aarch64-rollup.diff && cd /usr/lib/python2.7/dist-packages && patch -p1 -R --dry-run /var/cache/salt/minion/files/base/armband/files/salt-minion-aarch64-rollup.diff'