aboutsummaryrefslogtreecommitdiffstats
path: root/patches/opnfv-fuel/0007-mcp-salt-formulas-armband-Extend-libvirt_domain.patch
diff options
context:
space:
mode:
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>2017-12-28 18:41:09 +0100
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>2018-01-05 23:14:01 +0100
commit0e8a4fc5a553bb55c22590c0620ebfd770394e96 (patch)
tree58fdd861d2efbe06bf2749aadcf31a60ccdfbe39 /patches/opnfv-fuel/0007-mcp-salt-formulas-armband-Extend-libvirt_domain.patch
parent11f5bc3ca9191039b9b22e2da8a6e29538d2f6ea (diff)
MaaS: preseed Armband repo via curtin
Instead of installing upstream vanilla kernel from Ubuntu just to upgrade to the one from Armband repo later, preseed Armband repo config via curtin. This allows us to drop a kernel update cycle, thus saving a few minutes at each deploy. While at it, switch salt repo addition to use the maas region reclass section instead of adding a dedicated mechanism for it in the curtin template (only for arm64). [ stable/ euphrates ] Preseed all Armband repos, since Ocata does not have a "common" repo. JIRA: ARMBAND-280 Change-Id: Iad5953a7de80d728f11a4ce3113bd7725100c31c Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> (cherry picked from commit 648ec98613d31e3d9701b9ac1d87aed640b245f3)
Diffstat (limited to 'patches/opnfv-fuel/0007-mcp-salt-formulas-armband-Extend-libvirt_domain.patch')
-rw-r--r--patches/opnfv-fuel/0007-mcp-salt-formulas-armband-Extend-libvirt_domain.patch174
1 files changed, 174 insertions, 0 deletions
diff --git a/patches/opnfv-fuel/0007-mcp-salt-formulas-armband-Extend-libvirt_domain.patch b/patches/opnfv-fuel/0007-mcp-salt-formulas-armband-Extend-libvirt_domain.patch
new file mode 100644
index 00000000..34fe3c5d
--- /dev/null
+++ b/patches/opnfv-fuel/0007-mcp-salt-formulas-armband-Extend-libvirt_domain.patch
@@ -0,0 +1,174 @@
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+: Copyright (c) 2017 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
+: which accompanies this distribution, and is available at
+: http://www.apache.org/licenses/LICENSE-2.0
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+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;
+ 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`.
+
+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/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 5b519be..d8d2d02 100755
+--- a/mcp/config/states/virtual_control_plane
++++ b/mcp/config/states/virtual_control_plane
+@@ -40,6 +40,7 @@ salt -C 'kvm*' pkg.install bridge-utils
+ salt -C 'kvm*' state.apply linux.network
+ salt -C 'cmp*' state.apply linux.system
+ salt -C 'cmp*' state.apply linux.network || true
++salt -C 'kvm*' state.apply armband.salt_minion || true
+ salt -C 'kvm* or cmp*' system.reboot
+ wait_for 90 "! salt -C 'kvm* or cmp*' test.ping | " \
+ "tee /dev/stderr | grep -Fq 'Not connected'"
+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..9e74c24
+--- /dev/null
++++ 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
++
++Salt virt state relies on a Jinja template to create a libvirt
++XML definition for each new VM.
++This template needs to be extended with a few specific options
++for AArch64:
++- UEFI loader support (pflash);
++- custom machine model (e.g. 'virt-2.9'), since AArch64 defaults to
++ 'integratorcp';
++- custom cpu model;
++
++Allow all these to be parametrized from the salt virt formula,
++which we will also adapt to allow the params to be passed via our
++reclass model.
++
++Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
++---
++
++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>
++ <os>
+++ {% if custom_virt_machine %}
+++ <type machine='{{ virt_machine_model }}'>hvm</type>
+++ {% else %}
++ <type>hvm</type>
+++ {% endif %}
+++ {% if os_loader_type == 'pflash' %}
+++ <loader readonly='yes' type='{{ os_loader_type }}'>{{ os_loader }}</loader>
+++ <nvram>{{ os_loader_nvram }}</nvram>
+++ {% endif %}
++ {% for dev in boot_dev %}
++ <boot dev='{{ dev }}' />
++ {% endfor %}
++ </os>
+++ {% if cpu_mode == 'custom' %}
+++ <cpu mode='{{ cpu_model }}' check='none'/>
+++ {% endif %}
++ <devices>
++ {% for diskname, disk in disks.items() %}
++ <disk type='file' device='disk'>
++--
++
++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..9cce636
+--- /dev/null
++++ b/mcp/salt-formulas/armband/salt_minion.sls
+@@ -0,0 +1,7 @@
++salt-minion-aarch64-rollup:
++ file.patch:
++ - 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'