summaryrefslogtreecommitdiffstats
path: root/mcp
diff options
context:
space:
mode:
Diffstat (limited to 'mcp')
-rw-r--r--mcp/config/scenario/.gitignore2
-rw-r--r--mcp/config/scenario/defaults.yaml.j2 (renamed from mcp/config/scenario/defaults.yaml)21
-rw-r--r--mcp/config/scenario/os-nosdn-nofeature-ha.yaml (renamed from mcp/config/scenario/os-nosdn-nofeature-ha.yaml.j2)16
-rw-r--r--mcp/config/scenario/os-nosdn-nofeature-noha.yaml (renamed from mcp/config/scenario/os-nosdn-nofeature-noha.yaml.j2)10
-rw-r--r--mcp/config/scenario/os-nosdn-ovs-ha.yaml (renamed from mcp/config/scenario/os-nosdn-ovs-ha.yaml.j2)16
-rw-r--r--mcp/config/scenario/os-nosdn-ovs-noha.yaml (renamed from mcp/config/scenario/os-nosdn-ovs-noha.yaml.j2)10
-rw-r--r--mcp/config/scenario/os-nosdn-vpp-ha.yaml (renamed from mcp/config/scenario/os-nosdn-vpp-ha.yaml.j2)13
-rw-r--r--mcp/config/scenario/os-nosdn-vpp-noha.yaml (renamed from mcp/config/scenario/os-nosdn-vpp-noha.yaml.j2)10
-rw-r--r--mcp/config/scenario/os-odl-nofeature-ha.yaml (renamed from mcp/config/scenario/os-odl-nofeature-ha.yaml.j2)16
-rw-r--r--mcp/config/scenario/os-odl-nofeature-noha.yaml (renamed from mcp/config/scenario/os-odl-nofeature-noha.yaml.j2)10
-rw-r--r--mcp/config/scenario/os-odl-ovs-noha.yaml (renamed from mcp/config/scenario/os-odl-ovs-noha.yaml.j2)10
-rw-r--r--mcp/config/scenario/os-ovn-nofeature-ha.yaml (renamed from mcp/config/scenario/os-ovn-nofeature-ha.yaml.j2)16
-rw-r--r--mcp/config/scenario/os-ovn-nofeature-noha.yaml (renamed from mcp/config/scenario/os-ovn-nofeature-noha.yaml.j2)10
-rwxr-xr-xmcp/config/states/dpdk3
-rwxr-xr-xmcp/config/states/openstack_ha6
-rwxr-xr-xmcp/config/states/openstack_noha4
-rwxr-xr-xmcp/config/states/virtual_control_plane6
-rwxr-xr-xmcp/config/states/virtual_init39
m---------mcp/deploy/scripts0
-rw-r--r--mcp/patches/docker/0002-OPNFV-package-installation-Ubuntu-user.patch23
-rwxr-xr-xmcp/patches/patch.sh19
-rw-r--r--mcp/patches/patches.list12
-rw-r--r--mcp/patches/salt-formula-keystone/0001-Handle-extra-environment-variables.patch (renamed from mcp/patches/0008-Handle-extra-environment-variables.patch)3
-rw-r--r--mcp/patches/salt-formula-linux/0001-system.repo-Debian-Use-proxy-for-keyservers.patch (renamed from mcp/patches/0011-system.repo-Debian-Add-keyserver-proxy-support.patch)2
-rw-r--r--mcp/patches/salt-formula-linux/0002-Set-ovs-bridges-as-L3-interfaces.patch (renamed from mcp/patches/0015-Set-ovs-bridges-as-L3-interfaces.patch)19
-rw-r--r--mcp/patches/salt-formula-maas/0001-maas-region-skip-credentials-update.patch (renamed from mcp/patches/0002-maas-region-skip-credentials-update.patch)6
-rw-r--r--mcp/patches/salt-formula-maas/0002-maas-region-allow-timeout-override.patch (renamed from mcp/patches/0010-maas-region-allow-timeout-override.patch)10
-rw-r--r--mcp/patches/salt-formula-maas/0003-Add-machines.delete-co-pxe_nat-sls.patch137
-rw-r--r--mcp/patches/scripts/0001-salt-master-setup-Group-APT-install-formulas.patch68
-rw-r--r--mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_pdf.yml.j29
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-ha/infra/config.yml.j231
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-ha/infra/kvm.yml.j237
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-ha/openstack_compute_pdf.yml.j21
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-ha/openstack_control.yml.j23
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-noha/infra/config.yml.j231
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute_pdf.yml.j21
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-noha/openstack_control.yml3
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway_pdf.yml.j23
-rw-r--r--mcp/reclass/classes/cluster/mcp-odl-ha/infra/kvm.yml.j29
-rw-r--r--mcp/reclass/classes/cluster/mcp-odl-noha/openstack/compute.yml.j233
-rw-r--r--mcp/reclass/classes/cluster/mcp-odl-noha/openstack/gateway.yml.j214
-rw-r--r--mcp/reclass/classes/cluster/mcp-ovn-noha/openstack/compute.yml.j22
-rw-r--r--mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/openstack/compute.yml.j21
-rw-r--r--mcp/salt-formulas/maas/machines/delete.sls20
-rw-r--r--mcp/salt-formulas/maas/machines/mark_broken_fixed.sls20
-rw-r--r--mcp/salt-formulas/maas/machines/override_failed_testing.sls20
-rw-r--r--mcp/salt-formulas/maas/pxe_nat.sls37
-rw-r--r--mcp/salt-formulas/salt-formula-armband/armband/files/nova-libvirt-aarch64-rollup.diff27
-rw-r--r--mcp/salt-formulas/salt-formula-armband/armband/init.sls7
-rw-r--r--mcp/salt-formulas/salt-formula-armband/armband/nova_config.sls37
-rw-r--r--mcp/salt-formulas/salt-formula-armband/armband/nova_libvirt.sls9
-rw-r--r--mcp/salt-formulas/salt-formula-armband/armband/qemu_efi.sls4
-rw-r--r--mcp/salt-formulas/salt-formula-armband/armband/vgabios.sls9
m---------mcp/salt-formulas/salt-formula-keystone0
m---------mcp/salt-formulas/salt-formula-linux0
m---------mcp/salt-formulas/salt-formula-maas0
-rw-r--r--mcp/salt-formulas/salt-formula-opendaylight/metadata/service/server/single.yml (renamed from mcp/metadata/service/opendaylight/server/single.yml)0
-rw-r--r--mcp/salt-formulas/salt-formula-opendaylight/metadata/service/support.yml (renamed from mcp/metadata/service/opendaylight/support.yml)0
-rw-r--r--mcp/salt-formulas/salt-formula-opendaylight/opendaylight/files/jetty.xml (renamed from mcp/salt-formulas/opendaylight/files/jetty.xml)0
-rw-r--r--mcp/salt-formulas/salt-formula-opendaylight/opendaylight/files/setenv.shell (renamed from mcp/salt-formulas/opendaylight/files/setenv.shell)0
-rw-r--r--mcp/salt-formulas/salt-formula-opendaylight/opendaylight/init.sls (renamed from mcp/salt-formulas/opendaylight/init.sls)0
-rw-r--r--mcp/salt-formulas/salt-formula-opendaylight/opendaylight/map.jinja (renamed from mcp/salt-formulas/opendaylight/map.jinja)0
-rw-r--r--mcp/salt-formulas/salt-formula-opendaylight/opendaylight/server.sls (renamed from mcp/salt-formulas/opendaylight/server.sls)0
-rw-r--r--mcp/salt-formulas/salt-formula-tacker/metadata/service/server/single.yml (renamed from mcp/metadata/service/tacker/server/single.yml)0
-rw-r--r--mcp/salt-formulas/salt-formula-tacker/tacker/files/tacker.conf (renamed from mcp/salt-formulas/tacker/files/tacker.conf)0
-rw-r--r--mcp/salt-formulas/salt-formula-tacker/tacker/files/tacker.systemd (renamed from mcp/salt-formulas/tacker/files/tacker.systemd)0
-rw-r--r--mcp/salt-formulas/salt-formula-tacker/tacker/init.sls (renamed from mcp/salt-formulas/tacker/init.sls)0
-rw-r--r--mcp/salt-formulas/salt-formula-tacker/tacker/map.jinja (renamed from mcp/salt-formulas/tacker/map.jinja)0
-rw-r--r--mcp/salt-formulas/salt-formula-tacker/tacker/server.sls (renamed from mcp/salt-formulas/tacker/server.sls)0
-rw-r--r--mcp/scripts/docker-compose/docker-compose.yaml.j263
-rwxr-xr-xmcp/scripts/docker-compose/files/entrypoint.sh90
-rw-r--r--mcp/scripts/docker-compose/files/hosts6
-rw-r--r--mcp/scripts/docker-compose/files/opnfv_master.conf16
-rw-r--r--mcp/scripts/lib.sh60
-rw-r--r--mcp/scripts/lib_template.sh3
-rwxr-xr-xmcp/scripts/salt.sh132
-rw-r--r--mcp/scripts/xdf_data.sh.j27
77 files changed, 677 insertions, 585 deletions
diff --git a/mcp/config/scenario/.gitignore b/mcp/config/scenario/.gitignore
index a2d43db14..13346b908 100644
--- a/mcp/config/scenario/.gitignore
+++ b/mcp/config/scenario/.gitignore
@@ -1 +1 @@
-*ha.yaml
+defaults.yaml
diff --git a/mcp/config/scenario/defaults.yaml b/mcp/config/scenario/defaults.yaml.j2
index b228463c6..141af4d26 100644
--- a/mcp/config/scenario/defaults.yaml
+++ b/mcp/config/scenario/defaults.yaml.j2
@@ -5,12 +5,29 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
+{%- import 'net_map.j2' as nm with context %}
---
x86_64:
base_image: https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img
default:
vcpus: 2
ram: 4096
+ virtual: &arch_default_virtual_nodes_infra
+ nodes:
+ infra:
+{%- if nm.cluster.has_baremetal_nodes %}
+ - mas01
+{%- endif %}
+ cluster: &arch_default_cluster_states
+ states:
+ - virtual_init
+{%- if nm.cluster.has_baremetal_nodes %}
+ - maas
+ - baremetal_init
+{%- if conf.MCP_VCP %}
+ - virtual_control_plane
+{%- endif %}
+{%- endif %}
common:
apt:
keys:
@@ -32,6 +49,8 @@ aarch64:
default:
vcpus: 6
ram: 4096
+ virtual: *arch_default_virtual_nodes_infra
+ cluster: *arch_default_cluster_states
common:
apt:
keys:
@@ -40,7 +59,7 @@ aarch64:
repos:
# <repo name> <repo prio> deb [arch=<arch>] <repo url> <repo dist> <repo comp>
- saltstack 500 deb [arch=amd64] http://repo.saltstack.com/apt/ubuntu/16.04/amd64/2017.7 xenial main
- - armband 1201 deb [arch=arm64] http://linux.enea.com/mcp-repos/queens/xenial queens-armband main
+ - armband_3 1201 deb [arch=arm64] http://linux.enea.com/mcp-repos/queens/xenial queens-armband main
pkg:
install:
- python-futures
diff --git a/mcp/config/scenario/os-nosdn-nofeature-ha.yaml.j2 b/mcp/config/scenario/os-nosdn-nofeature-ha.yaml
index 7eb604e65..ce79b838e 100644
--- a/mcp/config/scenario/os-nosdn-nofeature-ha.yaml.j2
+++ b/mcp/config/scenario/os-nosdn-nofeature-ha.yaml
@@ -5,27 +5,14 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-{%- import 'net_map.j2' as nm with context %}
---
cluster:
domain: mcp-ovs-ha.local
states:
-{%- if nm.cluster.has_baremetal_nodes %}
- - maas
- - baremetal_init
-{%- endif %}
-{%- if conf.MCP_VCP %}
- - virtual_control_plane
-{%- endif %}
- openstack_ha
- networks
virtual:
nodes:
- infra:
- - cfg01
-{%- if nm.cluster.has_baremetal_nodes %}
- - mas01
-{%- endif %}
control:
- kvm01
- kvm02
@@ -34,9 +21,6 @@ virtual:
- cmp001
- cmp002
# Below values are only used for each node if said node is virtual
- cfg01:
- vcpus: 4
- ram: 6144
mas01:
vcpus: 4
ram: 6144
diff --git a/mcp/config/scenario/os-nosdn-nofeature-noha.yaml.j2 b/mcp/config/scenario/os-nosdn-nofeature-noha.yaml
index a0ad96b87..179313bc1 100644
--- a/mcp/config/scenario/os-nosdn-nofeature-noha.yaml.j2
+++ b/mcp/config/scenario/os-nosdn-nofeature-noha.yaml
@@ -5,25 +5,15 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-{%- import 'net_map.j2' as nm with context %}
---
cluster:
domain: mcp-ovs-noha.local
states:
-{%- if nm.cluster.has_baremetal_nodes %}
- - maas
- - baremetal_init
-{%- endif %}
- openstack_noha
- neutron_gateway
- networks
virtual:
nodes:
- infra:
- - cfg01
-{%- if nm.cluster.has_baremetal_nodes %}
- - mas01
-{%- endif %}
control:
- ctl01
- gtw01
diff --git a/mcp/config/scenario/os-nosdn-ovs-ha.yaml.j2 b/mcp/config/scenario/os-nosdn-ovs-ha.yaml
index da9938ce0..57f2140bb 100644
--- a/mcp/config/scenario/os-nosdn-ovs-ha.yaml.j2
+++ b/mcp/config/scenario/os-nosdn-ovs-ha.yaml
@@ -5,28 +5,15 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-{%- import 'net_map.j2' as nm with context %}
---
cluster:
domain: mcp-ovs-dpdk-ha.local
states:
-{%- if nm.cluster.has_baremetal_nodes %}
- - maas
- - baremetal_init
-{%- endif %}
-{%- if conf.MCP_VCP %}
- - virtual_control_plane
-{%- endif %}
- dpdk
- openstack_ha
- networks
virtual:
nodes:
- infra:
- - cfg01
-{%- if nm.cluster.has_baremetal_nodes %}
- - mas01
-{%- endif %}
control:
- kvm01
- kvm02
@@ -35,9 +22,6 @@ virtual:
- cmp001
- cmp002
# Below values are only used for each node if said node is virtual
- cfg01:
- vcpus: 4
- ram: 6144
mas01:
vcpus: 4
ram: 6144
diff --git a/mcp/config/scenario/os-nosdn-ovs-noha.yaml.j2 b/mcp/config/scenario/os-nosdn-ovs-noha.yaml
index bee0e926f..15cad1d29 100644
--- a/mcp/config/scenario/os-nosdn-ovs-noha.yaml.j2
+++ b/mcp/config/scenario/os-nosdn-ovs-noha.yaml
@@ -5,26 +5,16 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-{%- import 'net_map.j2' as nm with context %}
---
cluster:
domain: mcp-ovs-dpdk-noha.local
states:
-{%- if nm.cluster.has_baremetal_nodes %}
- - maas
- - baremetal_init
-{%- endif %}
- dpdk
- openstack_noha
- neutron_gateway
- networks
virtual:
nodes:
- infra:
- - cfg01
-{%- if nm.cluster.has_baremetal_nodes %}
- - mas01
-{%- endif %}
control:
- ctl01
- gtw01
diff --git a/mcp/config/scenario/os-nosdn-vpp-ha.yaml.j2 b/mcp/config/scenario/os-nosdn-vpp-ha.yaml
index 6ccb59061..9e7ebc1e2 100644
--- a/mcp/config/scenario/os-nosdn-vpp-ha.yaml.j2
+++ b/mcp/config/scenario/os-nosdn-vpp-ha.yaml
@@ -5,27 +5,14 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-{%- import 'net_map.j2' as nm with context %}
---
cluster:
domain: mcp-vpp-ha.local
states:
-{%- if nm.cluster.has_baremetal_nodes %}
- - maas
- - baremetal_init
-{%- endif %}
-{%- if conf.MCP_VCP %}
- - virtual_control_plane
-{%- endif %}
- openstack_ha
- networks
virtual:
nodes:
- infra:
- - cfg01
-{%- if nm.cluster.has_baremetal_nodes %}
- - mas01
-{%- endif %}
control:
- kvm01
- kvm02
diff --git a/mcp/config/scenario/os-nosdn-vpp-noha.yaml.j2 b/mcp/config/scenario/os-nosdn-vpp-noha.yaml
index 41cb504e1..e90300407 100644
--- a/mcp/config/scenario/os-nosdn-vpp-noha.yaml.j2
+++ b/mcp/config/scenario/os-nosdn-vpp-noha.yaml
@@ -5,25 +5,15 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-{%- import 'net_map.j2' as nm with context %}
---
cluster:
domain: mcp-vpp-noha.local
states:
-{%- if nm.cluster.has_baremetal_nodes %}
- - maas
- - baremetal_init
-{%- endif %}
- openstack_noha
- neutron_gateway
- networks
virtual:
nodes:
- infra:
- - cfg01
-{%- if nm.cluster.has_baremetal_nodes %}
- - mas01
-{%- endif %}
control:
- ctl01
- gtw01
diff --git a/mcp/config/scenario/os-odl-nofeature-ha.yaml.j2 b/mcp/config/scenario/os-odl-nofeature-ha.yaml
index fbedbc6b9..51d476de5 100644
--- a/mcp/config/scenario/os-odl-nofeature-ha.yaml.j2
+++ b/mcp/config/scenario/os-odl-nofeature-ha.yaml
@@ -5,28 +5,15 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-{%- import 'net_map.j2' as nm with context %}
---
cluster:
domain: mcp-odl-ha.local
states:
-{%- if nm.cluster.has_baremetal_nodes %}
- - maas
- - baremetal_init
-{%- endif %}
-{%- if conf.MCP_VCP %}
- - virtual_control_plane
-{%- endif %}
- opendaylight
- openstack_ha
- networks
virtual:
nodes:
- infra:
- - cfg01
-{%- if nm.cluster.has_baremetal_nodes %}
- - mas01
-{%- endif %}
control:
- kvm01
- kvm02
@@ -35,9 +22,6 @@ virtual:
- cmp001
- cmp002
# Below values are only used for each node if said node is virtual
- cfg01:
- vcpus: 4
- ram: 6144
mas01:
vcpus: 4
ram: 6144
diff --git a/mcp/config/scenario/os-odl-nofeature-noha.yaml.j2 b/mcp/config/scenario/os-odl-nofeature-noha.yaml
index 7df28c2b3..3133d0e62 100644
--- a/mcp/config/scenario/os-odl-nofeature-noha.yaml.j2
+++ b/mcp/config/scenario/os-odl-nofeature-noha.yaml
@@ -5,26 +5,16 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-{%- import 'net_map.j2' as nm with context %}
---
cluster:
domain: mcp-odl-noha.local
states:
-{%- if nm.cluster.has_baremetal_nodes %}
- - maas
- - baremetal_init
-{%- endif %}
- opendaylight
- openstack_noha
- neutron_gateway
- networks
virtual:
nodes:
- infra:
- - cfg01
-{%- if nm.cluster.has_baremetal_nodes %}
- - mas01
-{%- endif %}
control:
- ctl01
- gtw01
diff --git a/mcp/config/scenario/os-odl-ovs-noha.yaml.j2 b/mcp/config/scenario/os-odl-ovs-noha.yaml
index c81d35c51..e2df6a476 100644
--- a/mcp/config/scenario/os-odl-ovs-noha.yaml.j2
+++ b/mcp/config/scenario/os-odl-ovs-noha.yaml
@@ -5,15 +5,10 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-{%- import 'net_map.j2' as nm with context %}
---
cluster:
domain: mcp-odl-noha.local
states:
-{%- if nm.cluster.has_baremetal_nodes %}
- - maas
- - baremetal_init
-{%- endif %}
- dpdk
- opendaylight
- openstack_noha
@@ -21,11 +16,6 @@ cluster:
- networks
virtual:
nodes:
- infra:
- - cfg01
-{%- if nm.cluster.has_baremetal_nodes %}
- - mas01
-{%- endif %}
control:
- ctl01
- gtw01
diff --git a/mcp/config/scenario/os-ovn-nofeature-ha.yaml.j2 b/mcp/config/scenario/os-ovn-nofeature-ha.yaml
index f81779b8a..f76b0dce4 100644
--- a/mcp/config/scenario/os-ovn-nofeature-ha.yaml.j2
+++ b/mcp/config/scenario/os-ovn-nofeature-ha.yaml
@@ -5,27 +5,14 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-{%- import 'net_map.j2' as nm with context %}
---
cluster:
domain: mcp-ovn-ha.local
states:
-{%- if nm.cluster.has_baremetal_nodes %}
- - maas
- - baremetal_init
-{%- endif %}
-{%- if conf.MCP_VCP %}
- - virtual_control_plane
-{%- endif %}
- openstack_ha
- networks
virtual:
nodes:
- infra:
- - cfg01
-{%- if nm.cluster.has_baremetal_nodes %}
- - mas01
-{%- endif %}
control:
- kvm01
- kvm02
@@ -34,9 +21,6 @@ virtual:
- cmp001
- cmp002
# Below values are only used for each node if said node is virtual
- cfg01:
- vcpus: 4
- ram: 6144
mas01:
vcpus: 4
ram: 6144
diff --git a/mcp/config/scenario/os-ovn-nofeature-noha.yaml.j2 b/mcp/config/scenario/os-ovn-nofeature-noha.yaml
index fee47d7eb..0369f3fe9 100644
--- a/mcp/config/scenario/os-ovn-nofeature-noha.yaml.j2
+++ b/mcp/config/scenario/os-ovn-nofeature-noha.yaml
@@ -5,24 +5,14 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-{%- import 'net_map.j2' as nm with context %}
---
cluster:
domain: mcp-ovn-noha.local
states:
-{%- if nm.cluster.has_baremetal_nodes %}
- - maas
- - baremetal_init
-{%- endif %}
- openstack_noha
- networks
virtual:
nodes:
- infra:
- - cfg01
-{%- if nm.cluster.has_baremetal_nodes %}
- - mas01
-{%- endif %}
control:
- ctl01
compute:
diff --git a/mcp/config/states/dpdk b/mcp/config/states/dpdk
index 281b78fed..efe1dafe5 100755
--- a/mcp/config/states/dpdk
+++ b/mcp/config/states/dpdk
@@ -14,3 +14,6 @@ source "$(dirname "${BASH_SOURCE[0]}")/../../scripts/lib.sh"
salt -I 'nova:compute' alternatives.set ovs-vswitchd /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk
salt -I 'nova:compute' service.restart openvswitch-switch
+
+# Set datapath type to netdev for public bridge
+salt -I 'nova:compute' cmd.run 'ovs-vsctl set bridge br-floating datapath_type=netdev'
diff --git a/mcp/config/states/openstack_ha b/mcp/config/states/openstack_ha
index d7d8cbd45..0f6858f1e 100755
--- a/mcp/config/states/openstack_ha
+++ b/mcp/config/states/openstack_ha
@@ -51,11 +51,15 @@ wait_for 3.0 "salt -I 'cinder:volume' state.sls cinder"
salt -I 'neutron:server' state.sls neutron -b 1
salt -I 'neutron:gateway' state.sls neutron.gateway
if salt 'cmp*' match.pillar 'neutron:compute:backend:engine:ovn' \
- --out yaml --static | grep -q -e "true" ; then
+ --out yaml --static | grep -q -e 'true' ; then
salt -I 'neutron:compute' state.sls neutron.compute
fi
salt -I 'nova:compute' state.sls nova
+if salt -I 'nova:compute' match.grain 'cpuarch:aarch64' \
+ --out yaml --static | grep -q -e 'true' ; then
+ salt -C 'G@cpuarch:aarch64 and I@nova:compute' state.sls armband
+fi
salt -I 'barbican:server' state.sls barbican -b 1
salt -I 'barbican:client' state.sls barbican
diff --git a/mcp/config/states/openstack_noha b/mcp/config/states/openstack_noha
index 9a42d4813..44360e5e9 100755
--- a/mcp/config/states/openstack_noha
+++ b/mcp/config/states/openstack_noha
@@ -45,6 +45,10 @@ salt -I 'neutron:server' state.sls neutron
salt -I 'neutron:compute' state.sls neutron
salt -I 'nova:compute' state.sls nova
+if salt -I 'nova:compute' match.grain 'cpuarch:aarch64' \
+ --out yaml --static | grep -q -e 'true' ; then
+ salt -C 'G@cpuarch:aarch64 and I@nova:compute' state.sls armband
+fi
salt -I 'barbican:server' state.sls barbican
salt -I 'barbican:client' state.sls barbican
diff --git a/mcp/config/states/virtual_control_plane b/mcp/config/states/virtual_control_plane
index 8ea5047ae..ef6ce59c3 100755
--- a/mcp/config/states/virtual_control_plane
+++ b/mcp/config/states/virtual_control_plane
@@ -27,13 +27,17 @@ if [ "${ERASE_ENV}" -eq 1 ]; then
fi
# KVM libvirt first, VCP deployment
+if salt -C 'kvm*' match.grain 'cpuarch:aarch64' \
+ --out yaml --static | grep -q -e 'true' ; then
+ wait_for 5.0 "salt -C 'G@cpuarch:aarch64 and kvm*' state.sls armband"
+fi
wait_for 5.0 "salt -C 'kvm*' state.sls libvirt"
salt -C 'kvm* or cmp*' state.apply salt
wait_for 10.0 "salt -C 'kvm*' state.sls salt.control"
vcp_nodes=$(salt --out yaml 'kvm01*' pillar.get salt:control:cluster:internal:node | \
- awk '/\s+\w+:$/ {gsub(/:$/, "*"); printf "%s ", $1}')
+ awk '/\s+\w+[[:digit:]]+:$/ {gsub(/:$/, "*"); printf "%s ", $1}')
# Check all vcp nodes are available
wait_for 25.0 "(for n in ${vcp_nodes}; do salt \${n} test.ping 2>/dev/null || exit; done)"
diff --git a/mcp/config/states/virtual_init b/mcp/config/states/virtual_init
new file mode 100755
index 000000000..47d69cd8a
--- /dev/null
+++ b/mcp/config/states/virtual_init
@@ -0,0 +1,39 @@
+#!/bin/bash -e
+# shellcheck disable=SC1090
+##############################################################################
+# Copyright (c) 2018 Mirantis Inc., 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
+##############################################################################
+
+CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x
+
+# shellcheck disable=SC1090
+source "$(dirname "${BASH_SOURCE[0]}")/../../scripts/lib.sh"
+source "$(dirname "${BASH_SOURCE[0]}")/../../scripts/xdf_data.sh"
+
+CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x
+# shellcheck disable=SC2154,SC2086,SC2116
+LOCAL_VIRT_NODES=$(echo ${virtual_nodes[*]}) # unquoted to filter space
+NODE_MASK="${LOCAL_VIRT_NODES// /|}"
+
+wait_for 5.0 "salt-call state.sls reclass,linux.network,salt.minion \
+ exclude='[{id: reclass_packages}, {id: /etc/reclass/reclass-config.yml}]'"
+wait_for 3.0 "salt -C 'E@^(${NODE_MASK}).*' saltutil.refresh_pillar"
+
+# NOTE: domain name changes are not yet supported without a clean redeploy
+
+# Init specific to VMs on FN (all for virtual, mas for baremetal)
+wait_for 3.0 "(for n in ${LOCAL_VIRT_NODES}; do salt -C \${n}.* test.ping || exit; done)"
+
+wait_for 3.0 "salt -C 'E@^(${NODE_MASK}).*' state.sls linux.system,linux.storage"
+wait_for 2.0 "salt -C 'E@^(${NODE_MASK}).*' state.sls linux.network"
+salt -C "E@^(${NODE_MASK}).*" system.reboot
+wait_for 90.0 "salt -C 'E@^(${NODE_MASK}).*' test.ping"
+wait_for 3.0 "salt -C 'E@^(${NODE_MASK}).*' pkg.upgrade refresh=False dist_upgrade=True"
+wait_for 3.0 "salt -C 'E@^(${NODE_MASK}).*' saltutil.sync_all"
+wait_for 3.0 "salt -C 'E@^(${NODE_MASK}).*' state.apply salt"
+
+wait_for 3.0 "salt -C 'E@^(${NODE_MASK}).*' state.sls ntp"
diff --git a/mcp/deploy/scripts b/mcp/deploy/scripts
deleted file mode 160000
-Subproject 4c9818260372459977be1cc4a3869b871ddba0a
diff --git a/mcp/patches/docker/0002-OPNFV-package-installation-Ubuntu-user.patch b/mcp/patches/docker/0002-OPNFV-package-installation-Ubuntu-user.patch
index 51931b507..c983ad728 100644
--- a/mcp/patches/docker/0002-OPNFV-package-installation-Ubuntu-user.patch
+++ b/mcp/patches/docker/0002-OPNFV-package-installation-Ubuntu-user.patch
@@ -16,17 +16,26 @@ Subject: [PATCH] OPNFV package installation, Ubuntu user
workaround);
* While at it, create 'ubuntu' user so other OPNFV projects don't
have to switch to 'root' login;
+* Preinstall `salt_minion_dependency_packages` and
+ `salt_minion_reclass_dependencies`;
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
---
- DockerMake.yml | 28 ++++++++++++++++++++++++++++
- 1 file changed, 28 insertions(+)
+ DockerMake.yml | 36 +++++++++++++++++++++++++++++++++++-
+ 1 file changed, 35 insertions(+), 1 deletion(-)
diff --git a/DockerMake.yml b/DockerMake.yml
-index 2c75586..4883e2c 100644
+index 2c75586..8fb460d 100644
--- a/DockerMake.yml
+++ b/DockerMake.yml
-@@ -108,6 +108,34 @@ salt-formulas:
+@@ -102,12 +102,46 @@ salt-formulas:
+ ENV SALT_ENV_PATH_ $SALT_ENV_PATH_
+ ARG RECLASS_BASE="/srv/salt/reclass"
+ ENV RECLASS_BASE $RECLASS_BASE
+- RUN echo "Layer python/salt module prerequisites, formulas" \
++ RUN echo "Layer python/salt module prerequisites, formulas (1 Sep 2018)" \
+ && mkdir -p /srv/salt \
+ && curl -sSqL https://raw.githubusercontent.com/salt-formulas/salt-formulas-scripts/master/formula-fetch.sh -o /srv/salt/formula-fetch.sh \
&& bash -c 'source /srv/salt/formula-fetch.sh && setupPyEnv && fetchAll' \
&& eval ${LAYER_CLEANUP}
@@ -53,6 +62,12 @@ index 2c75586..4883e2c 100644
+ kmod \
+ net-tools \
+ openssh-server \
++ python-m2crypto \
++ python-msgpack \
++ python-netaddr \
++ python-oauth \
++ python-psutil \
++ python-yaml \
+ && useradd -m ubuntu \
+ && echo 'ubuntu ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/ubuntu \
+ && eval ${LAYER_CLEANUP}
diff --git a/mcp/patches/patch.sh b/mcp/patches/patch.sh
deleted file mode 100755
index bb48dcd07..000000000
--- a/mcp/patches/patch.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash -e
-##############################################################################
-# Copyright (c) 2017 Mirantis Inc., 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
-##############################################################################
-
-CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x
-
-if [ -r "$1" ]; then
- while IFS=': ' read -r p_dest p_file; do
- if ! patch --dry-run -Rd "${p_dest}" -r - -s -p1 < \
- "/root/fuel/mcp/patches/${p_file}" > /dev/null; then
- patch -d "${p_dest}" -p1 < "/root/fuel/mcp/patches/${p_file}"
- fi
- done < <(grep -vE '^#' "${1}" | grep -E "^.*${2}.*: ")
-fi
diff --git a/mcp/patches/patches.list b/mcp/patches/patches.list
deleted file mode 100644
index baa15d79d..000000000
--- a/mcp/patches/patches.list
+++ /dev/null
@@ -1,12 +0,0 @@
-##############################################################################
-# Copyright (c) 2018 Mirantis Inc., 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
-##############################################################################
-/usr/share/salt-formulas/env: 0002-maas-region-skip-credentials-update.patch
-/usr/share/salt-formulas/env: 0008-Handle-extra-environment-variables.patch
-/usr/share/salt-formulas/env: 0010-maas-region-allow-timeout-override.patch
-/usr/share/salt-formulas/env: 0011-system.repo-Debian-Add-keyserver-proxy-support.patch
-/usr/share/salt-formulas/env: 0015-Set-ovs-bridges-as-L3-interfaces.patch
diff --git a/mcp/patches/0008-Handle-extra-environment-variables.patch b/mcp/patches/salt-formula-keystone/0001-Handle-extra-environment-variables.patch
index 8df3227f2..2108587b1 100644
--- a/mcp/patches/0008-Handle-extra-environment-variables.patch
+++ b/mcp/patches/salt-formula-keystone/0001-Handle-extra-environment-variables.patch
@@ -11,6 +11,9 @@ Date: Mon, 12 Mar 2018 17:43:09 +0400
Subject: [PATCH] Handle extra environment variables
Change-Id: Ieae46ac65041630759c82238a8a5ce0535c454b2
+---
+ keystone/files/keystonercv3 | 3 +++
+ 1 file changed, 3 insertions(+)
diff --git a/keystone/files/keystonercv3 b/keystone/files/keystonercv3
index 1b7f378..984c8a2 100644
diff --git a/mcp/patches/0011-system.repo-Debian-Add-keyserver-proxy-support.patch b/mcp/patches/salt-formula-linux/0001-system.repo-Debian-Use-proxy-for-keyservers.patch
index dec29e6a7..4ad51e3e0 100644
--- a/mcp/patches/0011-system.repo-Debian-Add-keyserver-proxy-support.patch
+++ b/mcp/patches/salt-formula-linux/0001-system.repo-Debian-Use-proxy-for-keyservers.patch
@@ -37,7 +37,7 @@ Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
1 file changed, 47 insertions(+), 8 deletions(-)
diff --git a/linux/system/repo.sls b/linux/system/repo.sls
-index 9664129..d9f567e 100644
+index 0c0b026..82661f0 100644
--- a/linux/system/repo.sls
+++ b/linux/system/repo.sls
@@ -7,18 +7,27 @@ linux_repo_prereq_pkgs:
diff --git a/mcp/patches/0015-Set-ovs-bridges-as-L3-interfaces.patch b/mcp/patches/salt-formula-linux/0002-Set-ovs-bridges-as-L3-interfaces.patch
index a7b366b94..390a0bfcd 100644
--- a/mcp/patches/0015-Set-ovs-bridges-as-L3-interfaces.patch
+++ b/mcp/patches/salt-formula-linux/0002-Set-ovs-bridges-as-L3-interfaces.patch
@@ -11,20 +11,25 @@ Date: Wed, 28 Feb 2018 17:54:28 +0400
Subject: [PATCH] Set ovs bridges as L3 interfaces
Change-Id: I1e83129cc184cf481bea21d7aa452bf60d9e0499
+---
+ linux/files/ovs_bridge | 18 ++++++++++++++++++
+ linux/files/ovs_port | 7 ++++++-
+ linux/network/interface.sls | 28 ++++++++++++++++++++++++++++
+ 3 files changed, 52 insertions(+), 1 deletion(-)
+ create mode 100644 linux/files/ovs_bridge
diff --git a/linux/files/ovs_bridge b/linux/files/ovs_bridge
new file mode 100644
-index 0000000..c609e45
+index 0000000..d33864c
--- /dev/null
+++ b/linux/files/ovs_bridge
-@@ -0,0 +1,19 @@
+@@ -0,0 +1,18 @@
+auto {{ bridge_name }}
+allow-ovs {{ bridge_name }}
+iface {{ bridge_name }} inet static
+ ovs_type OVSBridge
+ address {{ bridge.address }}
+ netmask {{ bridge.netmask }}
-+ mtu {{ bridge.get('mtu', '1500') }}
+ {%- if bridge.use_interfaces is defined %}
+ ovs_ports {{ bridge.use_interfaces|join(' ') }}
+ {%- endif %}
@@ -38,14 +43,14 @@ index 0000000..c609e45
+ dns-nameservers {{ bridge.name_servers | join(' ') }}
+ {%- endif %}
diff --git a/linux/files/ovs_port b/linux/files/ovs_port
-index 222ca8e..efb0307 100644
+index 222ca8e..03072cd 100644
--- a/linux/files/ovs_port
+++ b/linux/files/ovs_port
@@ -1,6 +1,11 @@
+-auto {{ port_name }}
+# With systemd, adding OVS bridges as 'auto' can cause race conditions
+# https://github.com/openvswitch/ovs/blob/master/debian/openvswitch-switch.README.Debian
+# auto {{ port_name }}
--auto {{ port_name }}
allow-{{ port.bridge }} {{ port_name }}
iface {{ port_name }} inet {{ port.get('proto', 'manual') }}
+{%- if '.' in port_name %}
@@ -55,7 +60,7 @@ index 222ca8e..efb0307 100644
mtu {{ port.get('mtu', '1500') }}
ovs_bridge {{ port.bridge }}
diff --git a/linux/network/interface.sls b/linux/network/interface.sls
-index 180f912..dcb295b 100644
+index c2d2a23..7efdc80 100644
--- a/linux/network/interface.sls
+++ b/linux/network/interface.sls
@@ -91,6 +91,34 @@ add_int_{{ int_name }}_to_ovs_dpdk_bridge_{{ interface_name }}:
@@ -82,7 +87,7 @@ index 180f912..dcb295b 100644
+
+ovs_bridge_up_{{ interface_name }}:
+ cmd.run:
-+ - name: ifup {{ interface_name }}
++ - name: ifup --ignore-errors {{ interface_name }}
+ - require:
+ - file: ovs_bridge_{{ interface_name }}
+ - openvswitch_bridge: ovs_bridge_{{ interface_name }}
diff --git a/mcp/patches/0002-maas-region-skip-credentials-update.patch b/mcp/patches/salt-formula-maas/0001-maas-region-skip-credentials-update.patch
index 1d226e4cd..718f25b4e 100644
--- a/mcp/patches/0002-maas-region-skip-credentials-update.patch
+++ b/mcp/patches/salt-formula-maas/0001-maas-region-skip-credentials-update.patch
@@ -17,12 +17,14 @@ updating credentials.
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
---
+ maas/region.sls | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/maas/region.sls b/maas/region.sls
-index d3227ca..8a2243d 100644
+index 684fda4..5844f22 100644
--- a/maas/region.sls
+++ b/maas/region.sls
-@@ -6,10 +6,9 @@
+@@ -6,10 +6,9 @@ maas_region_packages:
- names: {{ region.pkgs }}
/etc/maas/regiond.conf:
diff --git a/mcp/patches/0010-maas-region-allow-timeout-override.patch b/mcp/patches/salt-formula-maas/0002-maas-region-allow-timeout-override.patch
index c6f9e3a52..aef087d92 100644
--- a/mcp/patches/0010-maas-region-allow-timeout-override.patch
+++ b/mcp/patches/salt-formula-maas/0002-maas-region-allow-timeout-override.patch
@@ -35,18 +35,20 @@ node's PXE physical interface, but that overcomplicates things.
blocksize to be 1008. We can force it to be 1464 and gain some performance due
to MTU beeing 1500 (i.e. allow bigger packets).
-
JIRA: FUEL-316
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
---
+ maas/region.sls | 40 ++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 40 insertions(+)
diff --git a/maas/region.sls b/maas/region.sls
+index 5844f22..d844bb4 100644
--- a/maas/region.sls
+++ b/maas/region.sls
-@@ -19,6 +19,46 @@
- - require:
- - pkg: maas_region_packages
+@@ -38,6 +38,46 @@ restore_maas_database_{{ region.database.name }}:
+
+ {%- endif %}
+maas_timeout_commissioning:
+ file.replace:
diff --git a/mcp/patches/salt-formula-maas/0003-Add-machines.delete-co-pxe_nat-sls.patch b/mcp/patches/salt-formula-maas/0003-Add-machines.delete-co-pxe_nat-sls.patch
new file mode 100644
index 000000000..9f13c4616
--- /dev/null
+++ b/mcp/patches/salt-formula-maas/0003-Add-machines.delete-co-pxe_nat-sls.patch
@@ -0,0 +1,137 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Sun, 19 Aug 2018 05:38:27 +0200
+Subject: [PATCH] Add machines.delete & co, pxe_nat sls
+
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ maas/machines/delete.sls | 20 ++++++++++++
+ maas/machines/mark_broken_fixed.sls | 20 ++++++++++++
+ maas/machines/override_failed_testing.sls | 20 ++++++++++++
+ maas/pxe_nat.sls | 37 +++++++++++++++++++++++
+ 4 files changed, 97 insertions(+)
+ create mode 100644 maas/machines/delete.sls
+ create mode 100644 maas/machines/mark_broken_fixed.sls
+ create mode 100644 maas/machines/override_failed_testing.sls
+ create mode 100644 maas/pxe_nat.sls
+
+diff --git a/maas/machines/delete.sls b/maas/machines/delete.sls
+new file mode 100644
+index 0000000..2903f92
+--- /dev/null
++++ b/maas/machines/delete.sls
+@@ -0,0 +1,20 @@
++##############################################################################
++# Copyright (c) 2017 Mirantis Inc., 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 "maas/map.jinja" import region with context %}
++
++maas_login_admin:
++ cmd.run:
++ - name: "maas-region apikey --username {{ region.admin.username }} > /var/lib/maas/.maas_credentials"
++ - unless: 'test -e /var/lib/maas/.maas_credentials'
++
++# TODO: implement delete_machine via _modules/maas.py
++delete_machine:
++ cmd.run:
++ - name: "maas login {{ region.admin.username }} http://{{ region.bind.host }}:5240/MAAS/api/2.0 - < /var/lib/maas/.maas_credentials && maas opnfv machine delete {{ pillar['system_id'] }}"
++ - require:
++ - cmd: maas_login_admin
+diff --git a/maas/machines/mark_broken_fixed.sls b/maas/machines/mark_broken_fixed.sls
+new file mode 100644
+index 0000000..46691bb
+--- /dev/null
++++ b/maas/machines/mark_broken_fixed.sls
+@@ -0,0 +1,20 @@
++##############################################################################
++# Copyright (c) 2017 Mirantis Inc., 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 "maas/map.jinja" import region with context %}
++
++maas_login_admin:
++ cmd.run:
++ - name: "maas-region apikey --username {{ region.admin.username }} > /var/lib/maas/.maas_credentials"
++ - unless: 'test -e /var/lib/maas/.maas_credentials'
++
++# TODO: implement mark_broken_fixed_machine via _modules/maas.py
++mark_broken_fixed_machine:
++ cmd.run:
++ - name: "maas login {{ region.admin.username }} http://{{ region.bind.host }}:5240/MAAS/api/2.0 - < /var/lib/maas/.maas_credentials && maas opnfv machine mark-broken {{ pillar['system_id'] }} && sleep 10 && maas opnfv machine mark-fixed {{ pillar['system_id'] }} && maas opnfv machine test {{ pillar['system_id'] }} testing_scripts=fio"
++ - require:
++ - cmd: maas_login_admin
+diff --git a/maas/machines/override_failed_testing.sls b/maas/machines/override_failed_testing.sls
+new file mode 100644
+index 0000000..e7fe1d2
+--- /dev/null
++++ b/maas/machines/override_failed_testing.sls
+@@ -0,0 +1,20 @@
++##############################################################################
++# Copyright (c) 2018 Mirantis Inc., 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 "maas/map.jinja" import region with context %}
++
++maas_login_admin:
++ cmd.run:
++ - name: "maas-region apikey --username {{ region.admin.username }} > /var/lib/maas/.maas_credentials"
++ - unless: 'test -e /var/lib/maas/.maas_credentials'
++
++# TODO: implement override_failed_testing via _modules/maas.py
++mark_broken_fixed_machine:
++ cmd.run:
++ - name: "maas login {{ region.admin.username }} http://{{ region.bind.host }}:5240/MAAS/api/2.0 - < /var/lib/maas/.maas_credentials && maas opnfv machine override-failed-testing {{ pillar['system_id'] }}"
++ - require:
++ - cmd: maas_login_admin
+diff --git a/maas/pxe_nat.sls b/maas/pxe_nat.sls
+new file mode 100644
+index 0000000..8a03c4f
+--- /dev/null
++++ b/maas/pxe_nat.sls
+@@ -0,0 +1,37 @@
++##############################################################################
++# Copyright (c) 2017 Mirantis Inc., 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
++##############################################################################
++net.ipv4.ip_forward:
++ sysctl.present:
++ - value: 1
++
++iptables_pxe_nat:
++ iptables.append:
++ - table: nat
++ - chain: POSTROUTING
++ - jump: MASQUERADE
++ - destination: 0/0
++ - source: {{ salt['pillar.get']('_param:single_address') }}/{{ salt['pillar.get']('_param:opnfv_net_admin_mask') }}
++ - save: True
++
++iptables_pxe_source:
++ iptables.append:
++ - table: filter
++ - chain: INPUT
++ - jump: ACCEPT
++ - destination: 0/0
++ - source: {{ salt['pillar.get']('_param:single_address') }}/{{ salt['pillar.get']('_param:opnfv_net_admin_mask') }}
++ - save: True
++
++iptables_pxe_destination:
++ iptables.append:
++ - table: filter
++ - chain: INPUT
++ - jump: ACCEPT
++ - destination: {{ salt['pillar.get']('_param:single_address') }}/{{ salt['pillar.get']('_param:opnfv_net_admin_mask') }}
++ - source: 0/0
++ - save: True
diff --git a/mcp/patches/scripts/0001-salt-master-setup-Group-APT-install-formulas.patch b/mcp/patches/scripts/0001-salt-master-setup-Group-APT-install-formulas.patch
deleted file mode 100644
index 9106a13b7..000000000
--- a/mcp/patches/scripts/0001-salt-master-setup-Group-APT-install-formulas.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-: Copyright (c) 2018 Mirantis Inc., 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: Tue, 30 Jan 2018 01:23:54 +0100
-Subject: [PATCH] salt-master-setup: Group APT install formulas
-
-Instead of calling `apt install` for each salt formula package that
-we miss, construct a list and install them all at once.
-
-While at it, disable colored output on terminals that don't support
-it, like vt220 (used in OPNFV CI).
-
-Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
----
- salt-master-init.sh | 6 ++++++
- salt-master-setup.sh | 12 +++++++-----
- 2 files changed, 13 insertions(+), 5 deletions(-)
-
-diff --git a/salt-master-init.sh b/salt-master-init.sh
-index 343324c..48a05b9 100755
---- a/salt-master-init.sh
-+++ b/salt-master-init.sh
-@@ -24,6 +24,12 @@ options() {
- export $(find $path -maxdepth 1 -name '*.env' 2> /dev/null | xargs --no-run-if-empty cat ) > /dev/null
- done;
-
-+ # If terminal does not support color output, stop using it
-+ if ! tput setaf 1 && tput sgr0; then
-+ SALT_OPTS="${SALT_OPTS/--force-color/--no-color}"
-+ return 0
-+ fi
-+
- export MAGENTA='\033[0;95m'
- export YELLOW='\033[1;33m'
- export BLUE='\033[0;35m'
-diff --git a/salt-master-setup.sh b/salt-master-setup.sh
-index cba21fb..c2decde 100755
---- a/salt-master-setup.sh
-+++ b/salt-master-setup.sh
-@@ -347,15 +347,17 @@ install_salt_formula_pkg()
- # Set essentials if FORMULAS_SALT_MASTER is not defined at all
- [ -z ${FORMULAS_SALT_MASTER+x} ] && declare -a FORMULAS_SALT_MASTER=("linux" "reclass" "salt" "memcached")
- for formula_service in "${FORMULAS_SALT_MASTER[@]}"; do
-- echo -e "\nConfiguring salt formula ${formula_service} ...\n"
-+ echo -e "Configuring salt formula ${formula_service} ..."
- [ ! -d "${FORMULAS_PATH}/env/${formula_service}" ] && \
-- if ! $SUDO apt-get install -y salt-formula-${formula_service}; then
-- echo -e "\nInstall salt-formula-${formula_service} failed.\n"
-- exit 1
-- fi
-+ _FORMULAS_SALT_MASTER="${_FORMULAS_SALT_MASTER} salt-formula-${formula_service}"
-+ # Create links first, install pkgs later
- [ ! -L "/srv/salt/reclass/classes/service/${formula_service}" ] && \
- ln -sf ${FORMULAS_PATH}/reclass/service/${formula_service} /srv/salt/reclass/classes/service/${formula_service}
- done
-+ if ! $SUDO apt-get install -qqq -y ${_FORMULAS_SALT_MASTER}; then
-+ echo -e "\nInstall ${_FORMULAS_SALT_MASTER} failed.\n"
-+ exit 1
-+ fi
- ;;
- rhel)
- # TODO
diff --git a/mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_pdf.yml.j2 b/mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_pdf.yml.j2
index a12e15663..5fa4ca486 100644
--- a/mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_pdf.yml.j2
+++ b/mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_pdf.yml.j2
@@ -8,14 +8,12 @@
{%- import 'net_map.j2' as nm with context %}
---
classes:
- - service.git.client
- - system.linux.system.repo.mcp.salt
- system.reclass.storage.salt
{%- if nm.cluster.has_baremetal_nodes %}
- system.reclass.storage.system.infra_maas_single
{%- endif %}
- system.salt.master.api
- - system.salt.master.pkg
+ - system.salt.master.single
- system.salt.minion.ca.salt_master
parameters:
_param:
@@ -25,6 +23,11 @@ parameters:
salt_master_base_environment: prd
# yamllint disable-line rule:line-length
salt_api_password_hash: "$6$sGnRlxGf$al5jMCetLP.vfI/fTl3Z0N7Za1aeiexL487jAtyRABVfT3NlwZxQGVhO7S1N8OwS/34VHYwZQA8lkXwKMN/GS1"
+ linux:
+ system:
+ user:
+ salt:
+ home: /home/salt
salt:
master:
accept_policy: open_mode
diff --git a/mcp/reclass/classes/cluster/mcp-common-ha/infra/config.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-ha/infra/config.yml.j2
index 0e880c558..ee849a6cd 100644
--- a/mcp/reclass/classes/cluster/mcp-common-ha/infra/config.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-common-ha/infra/config.yml.j2
@@ -29,37 +29,6 @@ parameters:
mcpcontrol_nic: ${_param:opnfv_fn_vm_primary_interface}
single_nic: ${_param:opnfv_fn_vm_secondary_interface}
pxe_admin_nic: ${_param:opnfv_fn_vm_tertiary_interface}
- linux:
- network:
- interface:
- mcpcontrol_int:
- enabled: true
- type: eth
- proto: dhcp
- name: ${_param:mcpcontrol_nic}
- single:
- enabled: true
- type: eth
- name: ${_param:single_nic}
-{%- if conf.idf.fuel.jumphost.get('trunks', {}).get('mgmt', False) and (nm.vlan_mgmt | int > 0) %}
- proto: manual
- single_vlan:
- enabled: true
- type: vlan
- name: ${_param:single_nic}.{{ nm.vlan_mgmt }}
- use_interfaces:
- - ${_param:single_nic}
-{%- endif %}
- proto: static
- address: ${_param:single_address}
- netmask: ${_param:opnfv_net_mgmt_mask}
- pxe_admin_int:
- enabled: true
- type: eth
- proto: static
- name: ${_param:pxe_admin_nic}
- address: ${_param:pxe_admin_address}
- netmask: ${_param:opnfv_net_admin_mask}
salt:
master:
accept_policy: open_mode
diff --git a/mcp/reclass/classes/cluster/mcp-common-ha/infra/kvm.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-ha/infra/kvm.yml.j2
index 62af0893a..f1bdf01d0 100644
--- a/mcp/reclass/classes/cluster/mcp-common-ha/infra/kvm.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-common-ha/infra/kvm.yml.j2
@@ -5,6 +5,7 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
+{%- import 'net_map.j2' as nm with context %}
---
classes:
- system.linux.system.repo.glusterfs
@@ -92,34 +93,42 @@ parameters:
cluster:
internal:
node:
- mdb01:
+ mdb01: &salt_control_xenial_image_common_attr
image: ${_param:salt_control_xenial_image}
+{%- if conf.nodes[nm.ctl01.idx].node.arch == 'aarch64' %}
+ machine: virt
+ cpu_mode: host-passthrough
+ loader:
+ readonly: 'yes'
+ type: pflash
+ path: /usr/share/AAVMF/AAVMF_CODE.fd
+{%- endif %}
mdb02:
- image: ${_param:salt_control_xenial_image}
+ <<: *salt_control_xenial_image_common_attr
mdb03:
- image: ${_param:salt_control_xenial_image}
+ <<: *salt_control_xenial_image_common_attr
ctl01:
- image: ${_param:salt_control_xenial_image}
+ <<: *salt_control_xenial_image_common_attr
ctl02:
- image: ${_param:salt_control_xenial_image}
+ <<: *salt_control_xenial_image_common_attr
ctl03:
- image: ${_param:salt_control_xenial_image}
+ <<: *salt_control_xenial_image_common_attr
dbs01:
- image: ${_param:salt_control_xenial_image}
+ <<: *salt_control_xenial_image_common_attr
dbs02:
- image: ${_param:salt_control_xenial_image}
+ <<: *salt_control_xenial_image_common_attr
dbs03:
- image: ${_param:salt_control_xenial_image}
+ <<: *salt_control_xenial_image_common_attr
msg01:
- image: ${_param:salt_control_xenial_image}
+ <<: *salt_control_xenial_image_common_attr
msg02:
- image: ${_param:salt_control_xenial_image}
+ <<: *salt_control_xenial_image_common_attr
msg03:
- image: ${_param:salt_control_xenial_image}
+ <<: *salt_control_xenial_image_common_attr
prx01:
- image: ${_param:salt_control_xenial_image}
+ <<: *salt_control_xenial_image_common_attr
prx02:
- image: ${_param:salt_control_xenial_image}
+ <<: *salt_control_xenial_image_common_attr
provider: kvm03.${_param:cluster_domain}
virt:
nic:
diff --git a/mcp/reclass/classes/cluster/mcp-common-ha/openstack_compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-ha/openstack_compute_pdf.yml.j2
index 51a6dbd68..50de921ac 100644
--- a/mcp/reclass/classes/cluster/mcp-common-ha/openstack_compute_pdf.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-common-ha/openstack_compute_pdf.yml.j2
@@ -66,6 +66,7 @@ parameters:
- {{ ma.interface_str(nm.cmp001.nic_public, nm.vlan_public) }}
gateway: ${_param:opnfv_net_public_gw}
name_servers: {{ nm.dns_public }}
+ noifupdown: true
ovs_port_{{ nm.cmp001.nic_public }}:
enabled: true
name: {{ ma.interface_str(nm.cmp001.nic_public, nm.vlan_public) }}
diff --git a/mcp/reclass/classes/cluster/mcp-common-ha/openstack_control.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-ha/openstack_control.yml.j2
index a7e8fcde3..a518c6e11 100644
--- a/mcp/reclass/classes/cluster/mcp-common-ha/openstack_control.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-common-ha/openstack_control.yml.j2
@@ -182,6 +182,9 @@ parameters:
keys:
- designate
designate:
+ _support:
+ sphinx:
+ enabled: False # Workaround broken meta/sphinx.yml in salt-formula-designate
server:
pools:
default:
diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/infra/config.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-noha/infra/config.yml.j2
index 36a2c27ec..a6bf5cda4 100644
--- a/mcp/reclass/classes/cluster/mcp-common-noha/infra/config.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-common-noha/infra/config.yml.j2
@@ -16,37 +16,6 @@ parameters:
single_address: ${_param:opnfv_infra_config_address}
salt_master_host: 127.0.0.1
salt_minion_ca_host: ${linux:network:fqdn}
- linux:
- network:
- interface:
- mcpcontrol_int:
- enabled: true
- type: eth
- proto: dhcp
- name: ${_param:opnfv_fn_vm_primary_interface}
- single_int:
- enabled: true
- name: ${_param:opnfv_fn_vm_secondary_interface}
- type: eth
-{%- if conf.idf.fuel.jumphost.get('trunks', {}).get('mgmt', False) and (nm.vlan_mgmt | int > 0) %}
- proto: manual
- single_int_vlan:
- enabled: true
- type: vlan
- name: ${_param:opnfv_fn_vm_secondary_interface}.{{ nm.vlan_mgmt }}
- use_interfaces:
- - ${_param:opnfv_fn_vm_secondary_interface}
-{%- endif %}
- proto: static
- address: ${_param:single_address}
- netmask: ${_param:opnfv_net_mgmt_mask}
- pxe_admin_int:
- enabled: true
- type: eth
- proto: static
- name: ${_param:opnfv_fn_vm_tertiary_interface}
- address: ${_param:opnfv_infra_config_pxe_admin_address}
- netmask: ${_param:opnfv_net_admin_mask}
salt:
master:
file_recv: true
diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute_pdf.yml.j2
index 3c7388a9c..aceb54461 100644
--- a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute_pdf.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute_pdf.yml.j2
@@ -29,6 +29,7 @@ parameters:
{%- endif %}
linux:
network:
+ ovs_nowait: true
bridge: openvswitch
interface:
pxe_admin_int:
diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_control.yml b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_control.yml
index dbd9d0550..dd4b9c4f5 100644
--- a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_control.yml
+++ b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_control.yml
@@ -175,6 +175,9 @@ parameters:
server:
vlan_aware_vms: true
root_helper_daemon: false
+ global_physnet_mtu: 9000
+ backend:
+ external_mtu: 9000
apache:
server:
bind:
diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway_pdf.yml.j2
index 72c381070..b05290480 100644
--- a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway_pdf.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway_pdf.yml.j2
@@ -42,6 +42,7 @@ parameters:
ovs_port_{{ nm.ctl01.nic_public }}:
enabled: true
name: {{ ma.interface_str(nm.ctl01.nic_public, nm.vlan_public) }}
+ mtu: ${_param:interface_mtu}
proto: manual
ovs_port_type: OVSPort
type: ovs_port
@@ -50,7 +51,6 @@ parameters:
br-floating:
enabled: true
type: ovs_bridge
- mtu: ${_param:interface_mtu}
proto: static
address: ${_param:external_address}
netmask: ${_param:opnfv_net_public_mask}
@@ -58,6 +58,7 @@ parameters:
- {{ ma.interface_str(nm.ctl01.nic_public, nm.vlan_public) }}
gateway: ${_param:opnfv_net_public_gw}
name_servers: {{ nm.dns_public }}
+ noifupdown: true
br-mgmt:
enabled: true
type: bridge
diff --git a/mcp/reclass/classes/cluster/mcp-odl-ha/infra/kvm.yml.j2 b/mcp/reclass/classes/cluster/mcp-odl-ha/infra/kvm.yml.j2
index ab0da39b3..09a490669 100644
--- a/mcp/reclass/classes/cluster/mcp-odl-ha/infra/kvm.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-odl-ha/infra/kvm.yml.j2
@@ -5,6 +5,7 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
+{%- import 'net_map.j2' as nm with context %}
---
{%- if conf.MCP_VCP %}
# NOTE(armband): we don't want to pull in salt.control for novcp
@@ -29,4 +30,12 @@ parameters:
provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
image: ${_param:salt_control_xenial_image}
size: opendaylight.server
+{%- if conf.nodes[nm.ctl01.idx].node.arch == 'aarch64' %}
+ machine: virt
+ cpu_mode: host-passthrough
+ loader:
+ readonly: 'yes'
+ type: pflash
+ path: /usr/share/AAVMF/AAVMF_CODE.fd
+{%- endif %}
{%- endif %}
diff --git a/mcp/reclass/classes/cluster/mcp-odl-noha/openstack/compute.yml.j2 b/mcp/reclass/classes/cluster/mcp-odl-noha/openstack/compute.yml.j2
index bde5e7ac1..1c4ee7a19 100644
--- a/mcp/reclass/classes/cluster/mcp-odl-noha/openstack/compute.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-odl-noha/openstack/compute.yml.j2
@@ -31,6 +31,7 @@ parameters:
bridge: br-prv
type: dpdk_ovs_port
n_rxq: ${_param:dpdk0_n_rxq}
+ mtu: ${_param:interface_mtu}
br-prv:
enabled: true
type: dpdk_ovs_bridge
@@ -39,6 +40,30 @@ parameters:
netmask: ${_param:opnfv_net_private_mask}
{{ nm.cmp001.nic_private }}:
type: dpdk # Not a meaningful type, just match 'dpdk' for filtering
+ {{ nm.cmp001.nic_public }}:
+ enabled: true
+ type: eth
+ mtu: ${_param:interface_mtu}
+ proto: manual
+ br-floating:
+ enabled: true
+ type: ovs_bridge
+ float-to-ex:
+ enabled: true
+ type: ovs_port
+ mtu: ${_param:interface_mtu}
+ bridge: br-floating
+ br-ex:
+ enabled: true
+ type: bridge
+ address: ${_param:external_address}
+ netmask: ${_param:opnfv_net_public_mask}
+ use_interfaces:
+ - {{ ma.interface_str(nm.cmp001.nic_public, nm.vlan_public) }}
+ use_ovs_ports:
+ - float-to-ex
+ gateway: ${_param:opnfv_net_public_gw}
+ name_servers: {{ nm.dns_public }}
{%- else %}
br-mesh:
enabled: true
@@ -48,10 +73,10 @@ parameters:
netmask: ${_param:opnfv_net_private_mask}
use_interfaces:
- {{ ma.interface_str(nm.cmp001.nic_private, vlan_private_start) }}
-{%- endif %}
ovs_port_{{ nm.cmp001.nic_public }}:
enabled: true
name: {{ ma.interface_str(nm.cmp001.nic_public, nm.vlan_public) }}
+ mtu: ${_param:interface_mtu}
proto: manual
ovs_port_type: OVSPort
type: ovs_port
@@ -60,10 +85,6 @@ parameters:
br-floating:
enabled: true
type: ovs_bridge
-{%- if conf.MCP_DPDK_MODE %}
- datapath_type: netdev
-{%- endif %}
- mtu: ${_param:interface_mtu}
proto: static
address: ${_param:external_address}
netmask: ${_param:opnfv_net_public_mask}
@@ -71,3 +92,5 @@ parameters:
- {{ ma.interface_str(nm.cmp001.nic_public, nm.vlan_public) }}
gateway: ${_param:opnfv_net_public_gw}
name_servers: {{ nm.dns_public }}
+ noifupdown: true
+{%- endif %}
diff --git a/mcp/reclass/classes/cluster/mcp-odl-noha/openstack/gateway.yml.j2 b/mcp/reclass/classes/cluster/mcp-odl-noha/openstack/gateway.yml.j2
index 6b445901b..0a345f42c 100644
--- a/mcp/reclass/classes/cluster/mcp-odl-noha/openstack/gateway.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-odl-noha/openstack/gateway.yml.j2
@@ -7,7 +7,7 @@
##############################################################################
{%- import 'net_map.j2' as nm with context %}
{%- import 'net_macros.j2' as ma with context %}
-{%- set vlan_private_start = 0 if conf.MCP_DPDK_MODE else (nm.vlan_private | string).rsplit('-')[0] %}
+{%- set vlan_private_start = (nm.vlan_private | string).rsplit('-')[0] %}
---
classes:
- cluster.mcp-common-noha.openstack_gateway
@@ -17,6 +17,17 @@ parameters:
linux:
network:
interface:
+{%- if conf.MCP_DPDK_MODE %}
+ {{ nm.cmp001.nic_private }}:
+ ovs_bridge: br-prv
+ br-prv:
+ enabled: true
+ type: ovs_bridge
+ mtu: ${_param:interface_mtu}
+ proto: static
+ address: ${_param:tenant_address}
+ netmask: ${_param:opnfv_net_private_mask}
+{%- else %}
br-mesh:
enabled: true
type: bridge
@@ -26,3 +37,4 @@ parameters:
netmask: ${_param:opnfv_net_private_mask}
use_interfaces:
- {{ ma.interface_str(nm.cmp001.nic_private, vlan_private_start) }}
+{%- endif %}
diff --git a/mcp/reclass/classes/cluster/mcp-ovn-noha/openstack/compute.yml.j2 b/mcp/reclass/classes/cluster/mcp-ovn-noha/openstack/compute.yml.j2
index ac3555604..02411cd2c 100644
--- a/mcp/reclass/classes/cluster/mcp-ovn-noha/openstack/compute.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-ovn-noha/openstack/compute.yml.j2
@@ -23,6 +23,7 @@ parameters:
ovs_port_{{ nm.cmp001.nic_public }}:
enabled: true
name: {{ ma.interface_str(nm.cmp001.nic_public, nm.vlan_public) }}
+ mtu: ${_param:interface_mtu}
proto: manual
ovs_port_type: OVSPort
type: ovs_port
@@ -47,3 +48,4 @@ parameters:
- {{ ma.interface_str(nm.cmp001.nic_public, nm.vlan_public) }}
gateway: ${_param:opnfv_net_public_gw}
name_servers: {{ nm.dns_public }}
+ noifupdown: true
diff --git a/mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/openstack/compute.yml.j2 b/mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/openstack/compute.yml.j2
index df2911104..25fc82624 100644
--- a/mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/openstack/compute.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/openstack/compute.yml.j2
@@ -34,6 +34,7 @@ parameters:
bridge: br-prv
type: dpdk_ovs_port
n_rxq: ${_param:dpdk0_n_rxq}
+ mtu: ${_param:interface_mtu}
br-prv:
enabled: true
type: dpdk_ovs_bridge
diff --git a/mcp/salt-formulas/maas/machines/delete.sls b/mcp/salt-formulas/maas/machines/delete.sls
deleted file mode 100644
index 2903f9226..000000000
--- a/mcp/salt-formulas/maas/machines/delete.sls
+++ /dev/null
@@ -1,20 +0,0 @@
-##############################################################################
-# Copyright (c) 2017 Mirantis Inc., 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 "maas/map.jinja" import region with context %}
-
-maas_login_admin:
- cmd.run:
- - name: "maas-region apikey --username {{ region.admin.username }} > /var/lib/maas/.maas_credentials"
- - unless: 'test -e /var/lib/maas/.maas_credentials'
-
-# TODO: implement delete_machine via _modules/maas.py
-delete_machine:
- cmd.run:
- - name: "maas login {{ region.admin.username }} http://{{ region.bind.host }}:5240/MAAS/api/2.0 - < /var/lib/maas/.maas_credentials && maas opnfv machine delete {{ pillar['system_id'] }}"
- - require:
- - cmd: maas_login_admin
diff --git a/mcp/salt-formulas/maas/machines/mark_broken_fixed.sls b/mcp/salt-formulas/maas/machines/mark_broken_fixed.sls
deleted file mode 100644
index 46691bb09..000000000
--- a/mcp/salt-formulas/maas/machines/mark_broken_fixed.sls
+++ /dev/null
@@ -1,20 +0,0 @@
-##############################################################################
-# Copyright (c) 2017 Mirantis Inc., 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 "maas/map.jinja" import region with context %}
-
-maas_login_admin:
- cmd.run:
- - name: "maas-region apikey --username {{ region.admin.username }} > /var/lib/maas/.maas_credentials"
- - unless: 'test -e /var/lib/maas/.maas_credentials'
-
-# TODO: implement mark_broken_fixed_machine via _modules/maas.py
-mark_broken_fixed_machine:
- cmd.run:
- - name: "maas login {{ region.admin.username }} http://{{ region.bind.host }}:5240/MAAS/api/2.0 - < /var/lib/maas/.maas_credentials && maas opnfv machine mark-broken {{ pillar['system_id'] }} && sleep 10 && maas opnfv machine mark-fixed {{ pillar['system_id'] }} && maas opnfv machine test {{ pillar['system_id'] }} testing_scripts=fio"
- - require:
- - cmd: maas_login_admin
diff --git a/mcp/salt-formulas/maas/machines/override_failed_testing.sls b/mcp/salt-formulas/maas/machines/override_failed_testing.sls
deleted file mode 100644
index e7fe1d267..000000000
--- a/mcp/salt-formulas/maas/machines/override_failed_testing.sls
+++ /dev/null
@@ -1,20 +0,0 @@
-##############################################################################
-# Copyright (c) 2018 Mirantis Inc., 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 "maas/map.jinja" import region with context %}
-
-maas_login_admin:
- cmd.run:
- - name: "maas-region apikey --username {{ region.admin.username }} > /var/lib/maas/.maas_credentials"
- - unless: 'test -e /var/lib/maas/.maas_credentials'
-
-# TODO: implement override_failed_testing via _modules/maas.py
-mark_broken_fixed_machine:
- cmd.run:
- - name: "maas login {{ region.admin.username }} http://{{ region.bind.host }}:5240/MAAS/api/2.0 - < /var/lib/maas/.maas_credentials && maas opnfv machine override-failed-testing {{ pillar['system_id'] }}"
- - require:
- - cmd: maas_login_admin
diff --git a/mcp/salt-formulas/maas/pxe_nat.sls b/mcp/salt-formulas/maas/pxe_nat.sls
deleted file mode 100644
index 8a03c4fdb..000000000
--- a/mcp/salt-formulas/maas/pxe_nat.sls
+++ /dev/null
@@ -1,37 +0,0 @@
-##############################################################################
-# Copyright (c) 2017 Mirantis Inc., 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
-##############################################################################
-net.ipv4.ip_forward:
- sysctl.present:
- - value: 1
-
-iptables_pxe_nat:
- iptables.append:
- - table: nat
- - chain: POSTROUTING
- - jump: MASQUERADE
- - destination: 0/0
- - source: {{ salt['pillar.get']('_param:single_address') }}/{{ salt['pillar.get']('_param:opnfv_net_admin_mask') }}
- - save: True
-
-iptables_pxe_source:
- iptables.append:
- - table: filter
- - chain: INPUT
- - jump: ACCEPT
- - destination: 0/0
- - source: {{ salt['pillar.get']('_param:single_address') }}/{{ salt['pillar.get']('_param:opnfv_net_admin_mask') }}
- - save: True
-
-iptables_pxe_destination:
- iptables.append:
- - table: filter
- - chain: INPUT
- - jump: ACCEPT
- - destination: {{ salt['pillar.get']('_param:single_address') }}/{{ salt['pillar.get']('_param:opnfv_net_admin_mask') }}
- - source: 0/0
- - save: True
diff --git a/mcp/salt-formulas/salt-formula-armband/armband/files/nova-libvirt-aarch64-rollup.diff b/mcp/salt-formulas/salt-formula-armband/armband/files/nova-libvirt-aarch64-rollup.diff
new file mode 100644
index 000000000..1ecbf2973
--- /dev/null
+++ b/mcp/salt-formulas/salt-formula-armband/armband/files/nova-libvirt-aarch64-rollup.diff
@@ -0,0 +1,27 @@
+From: Charalampos Kominos <Charalampos.Kominos@enea.com>
+Date: Wed, 2 May 2018 14:20:47 +0200
+Subject: [PATCH] Allow libvirt to honor root device naming
+
+Current behaviour in upstream nova is for rootfs to be in /dev/vda
+which is the default behaviour when using virtio driver. However when
+other devices are requested either by glance or by CLI, nova ignores
+that naming and still tries to attach to vda which fails.
+
+Manually applied in https://review.openstack.org/#/c/214314/
+
+JIRA: ARMBAND-376
+
+Signed-off-by: Charalampos Kominos <charalampos.kominos@enea.com>
+---
+
+--- a/nova/virt/libvirt/driver.py
++++ b/nova/virt/libvirt/driver.py
+@@ -8257,6 +8257,8 @@
+ "Ignoring supplied device name: %(device_name)s. "
+ "Libvirt can't honour user-supplied dev names",
+ {'device_name': bdm.device_name}, instance=instance)
++ if instance.root_device_name == bdm.device_name:
++ instance.root_device_name = None
+ bdm.device_name = None
+ block_device_info = driver.get_block_device_info(instance,
+ block_device_mapping)
diff --git a/mcp/salt-formulas/salt-formula-armband/armband/init.sls b/mcp/salt-formulas/salt-formula-armband/armband/init.sls
new file mode 100644
index 000000000..8a8cf2ab1
--- /dev/null
+++ b/mcp/salt-formulas/salt-formula-armband/armband/init.sls
@@ -0,0 +1,7 @@
+include:
+ - armband.qemu_efi
+ - armband.vgabios
+ {%- if salt['pkg.version']('python-nova') %}
+ - armband.nova_libvirt
+ - armband.nova_config
+ {%- endif %}
diff --git a/mcp/salt-formulas/salt-formula-armband/armband/nova_config.sls b/mcp/salt-formulas/salt-formula-armband/armband/nova_config.sls
new file mode 100644
index 000000000..b0e17b718
--- /dev/null
+++ b/mcp/salt-formulas/salt-formula-armband/armband/nova_config.sls
@@ -0,0 +1,37 @@
+{% if grains['cpuarch'] == 'aarch64' %}
+{% if grains['virtual'] == 'kvm' %}
+nova_virt_type:
+ file.replace:
+ - name: "/etc/nova/nova.conf"
+ - pattern: '^virt_type\s*=.*$'
+ - repl: "virt_type = qemu"
+nova_compute_virt_type:
+ file.replace:
+ - name: "/etc/nova/nova-compute.conf"
+ - pattern: '^virt_type\s*=.*$'
+ - repl: "virt_type = qemu"
+{% endif %}
+nova_pointer_model:
+ file.replace:
+ - name: "/etc/nova/nova.conf"
+ - pattern: '^#pointer_model\s*=.*$'
+ - repl: "pointer_model = ps2mouse"
+nova_cpu_mode:
+ file.replace:
+ - name: "/etc/nova/nova.conf"
+ - pattern: '^cpu_mode\s*=\s*host-passthrough'
+ - repl: "cpu_mode = custom"
+nova_cpu_model:
+ file.replace:
+ - name: "/etc/nova/nova.conf"
+ - pattern: '^#cpu_model\s*=.*$'
+ {% if grains['virtual'] == 'kvm' %}
+ - repl: "cpu_model = cortex-a57"
+ {% else %}
+ - repl: "cpu_model = host"
+ {% endif %}
+restart_nova-compute:
+ cmd:
+ - run
+ - name: "service nova-compute restart"
+{% endif %}
diff --git a/mcp/salt-formulas/salt-formula-armband/armband/nova_libvirt.sls b/mcp/salt-formulas/salt-formula-armband/armband/nova_libvirt.sls
new file mode 100644
index 000000000..9d26e86a4
--- /dev/null
+++ b/mcp/salt-formulas/salt-formula-armband/armband/nova_libvirt.sls
@@ -0,0 +1,9 @@
+{% if grains['cpuarch'] == 'aarch64' %}
+nova-libvirt-aarch64-rollup:
+ file.patch:
+ - name: /usr/lib/python2.7/dist-packages
+ - source: salt://armband/files/nova-libvirt-aarch64-rollup.diff
+ - hash: False
+ - options: '-p1'
+ - unless: 'test -f /var/cache/salt/minion/files/base/armband/files/nova-libvirt-aarch64-rollup.diff && cd /usr/lib/python2.7/dist-packages && patch -p1 -R --dry-run -r - < /var/cache/salt/minion/files/base/armband/files/nova-libvirt-aarch64-rollup.diff'
+{% endif %}
diff --git a/mcp/salt-formulas/salt-formula-armband/armband/qemu_efi.sls b/mcp/salt-formulas/salt-formula-armband/armband/qemu_efi.sls
new file mode 100644
index 000000000..aef17f9a8
--- /dev/null
+++ b/mcp/salt-formulas/salt-formula-armband/armband/qemu_efi.sls
@@ -0,0 +1,4 @@
+{% if grains['cpuarch'] == 'aarch64' %}
+qemu-efi:
+ pkg.installed
+{% endif %}
diff --git a/mcp/salt-formulas/salt-formula-armband/armband/vgabios.sls b/mcp/salt-formulas/salt-formula-armband/armband/vgabios.sls
new file mode 100644
index 000000000..7f004971c
--- /dev/null
+++ b/mcp/salt-formulas/salt-formula-armband/armband/vgabios.sls
@@ -0,0 +1,9 @@
+{% if grains['cpuarch'] == 'aarch64' %}
+vgabios:
+ pkg.installed
+/usr/share/qemu:
+ file.directory
+/usr/share/qemu/vgabios-stdvga.bin:
+ file.symlink:
+ - target: "/usr/share/vgabios/vgabios.bin"
+{% endif %}
diff --git a/mcp/salt-formulas/salt-formula-keystone b/mcp/salt-formulas/salt-formula-keystone
new file mode 160000
+Subproject df75142aaf6487c3af9e2868f4f12ef18228ca9
diff --git a/mcp/salt-formulas/salt-formula-linux b/mcp/salt-formulas/salt-formula-linux
new file mode 160000
+Subproject cf1b5b322a077dc8d6f9bf5b36a7a0a71a2b3a0
diff --git a/mcp/salt-formulas/salt-formula-maas b/mcp/salt-formulas/salt-formula-maas
new file mode 160000
+Subproject c6a12dea5f8d8c7c700f596dbabb805113f1d34
diff --git a/mcp/metadata/service/opendaylight/server/single.yml b/mcp/salt-formulas/salt-formula-opendaylight/metadata/service/server/single.yml
index 3a762b39a..3a762b39a 100644
--- a/mcp/metadata/service/opendaylight/server/single.yml
+++ b/mcp/salt-formulas/salt-formula-opendaylight/metadata/service/server/single.yml
diff --git a/mcp/metadata/service/opendaylight/support.yml b/mcp/salt-formulas/salt-formula-opendaylight/metadata/service/support.yml
index bbb204315..bbb204315 100644
--- a/mcp/metadata/service/opendaylight/support.yml
+++ b/mcp/salt-formulas/salt-formula-opendaylight/metadata/service/support.yml
diff --git a/mcp/salt-formulas/opendaylight/files/jetty.xml b/mcp/salt-formulas/salt-formula-opendaylight/opendaylight/files/jetty.xml
index de2ac677d..de2ac677d 100644
--- a/mcp/salt-formulas/opendaylight/files/jetty.xml
+++ b/mcp/salt-formulas/salt-formula-opendaylight/opendaylight/files/jetty.xml
diff --git a/mcp/salt-formulas/opendaylight/files/setenv.shell b/mcp/salt-formulas/salt-formula-opendaylight/opendaylight/files/setenv.shell
index 2921ade14..2921ade14 100644
--- a/mcp/salt-formulas/opendaylight/files/setenv.shell
+++ b/mcp/salt-formulas/salt-formula-opendaylight/opendaylight/files/setenv.shell
diff --git a/mcp/salt-formulas/opendaylight/init.sls b/mcp/salt-formulas/salt-formula-opendaylight/opendaylight/init.sls
index 132f69b33..132f69b33 100644
--- a/mcp/salt-formulas/opendaylight/init.sls
+++ b/mcp/salt-formulas/salt-formula-opendaylight/opendaylight/init.sls
diff --git a/mcp/salt-formulas/opendaylight/map.jinja b/mcp/salt-formulas/salt-formula-opendaylight/opendaylight/map.jinja
index 38575111e..38575111e 100644
--- a/mcp/salt-formulas/opendaylight/map.jinja
+++ b/mcp/salt-formulas/salt-formula-opendaylight/opendaylight/map.jinja
diff --git a/mcp/salt-formulas/opendaylight/server.sls b/mcp/salt-formulas/salt-formula-opendaylight/opendaylight/server.sls
index 206dc52a2..206dc52a2 100644
--- a/mcp/salt-formulas/opendaylight/server.sls
+++ b/mcp/salt-formulas/salt-formula-opendaylight/opendaylight/server.sls
diff --git a/mcp/metadata/service/tacker/server/single.yml b/mcp/salt-formulas/salt-formula-tacker/metadata/service/server/single.yml
index 597d9f8fb..597d9f8fb 100644
--- a/mcp/metadata/service/tacker/server/single.yml
+++ b/mcp/salt-formulas/salt-formula-tacker/metadata/service/server/single.yml
diff --git a/mcp/salt-formulas/tacker/files/tacker.conf b/mcp/salt-formulas/salt-formula-tacker/tacker/files/tacker.conf
index 7adfd3139..7adfd3139 100644
--- a/mcp/salt-formulas/tacker/files/tacker.conf
+++ b/mcp/salt-formulas/salt-formula-tacker/tacker/files/tacker.conf
diff --git a/mcp/salt-formulas/tacker/files/tacker.systemd b/mcp/salt-formulas/salt-formula-tacker/tacker/files/tacker.systemd
index 12ff5cdde..12ff5cdde 100644
--- a/mcp/salt-formulas/tacker/files/tacker.systemd
+++ b/mcp/salt-formulas/salt-formula-tacker/tacker/files/tacker.systemd
diff --git a/mcp/salt-formulas/tacker/init.sls b/mcp/salt-formulas/salt-formula-tacker/tacker/init.sls
index 35291b8f9..35291b8f9 100644
--- a/mcp/salt-formulas/tacker/init.sls
+++ b/mcp/salt-formulas/salt-formula-tacker/tacker/init.sls
diff --git a/mcp/salt-formulas/tacker/map.jinja b/mcp/salt-formulas/salt-formula-tacker/tacker/map.jinja
index 9a35c8e52..9a35c8e52 100644
--- a/mcp/salt-formulas/tacker/map.jinja
+++ b/mcp/salt-formulas/salt-formula-tacker/tacker/map.jinja
diff --git a/mcp/salt-formulas/tacker/server.sls b/mcp/salt-formulas/salt-formula-tacker/tacker/server.sls
index eb3468a11..eb3468a11 100644
--- a/mcp/salt-formulas/tacker/server.sls
+++ b/mcp/salt-formulas/salt-formula-tacker/tacker/server.sls
diff --git a/mcp/scripts/docker-compose/docker-compose.yaml.j2 b/mcp/scripts/docker-compose/docker-compose.yaml.j2
new file mode 100644
index 000000000..7099e4fda
--- /dev/null
+++ b/mcp/scripts/docker-compose/docker-compose.yaml.j2
@@ -0,0 +1,63 @@
+##############################################################################
+# Copyright (c) 2018 Mirantis Inc., 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
+##############################################################################
+{%- import 'net_map.j2' as nm with context %}
+{%- import 'net_macros.j2' as ma with context %}
+{#- conf.MCPCONTROL_NET & co are mandatory, defaults are set via globals.sh #}
+{%- set net_mcpcontrol = [conf.MCPCONTROL_NET, conf.MCPCONTROL_PREFIX] | join("/") %}
+version: '2'
+services:
+ opnfv-fuel-salt-master:
+ container_name: "fuel"
+ image: "opnfv/fuel:saltmaster-reclass-latest"
+ networks:
+ - mcpcontrol
+ - pxebr
+ - mgmt
+ volumes:
+ - /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:ro
+ - {{ conf.MCP_REPO_ROOT_PATH }}:/root/fuel
+ - {{ conf.MCP_REPO_ROOT_PATH }}/mcp/scripts/docker-compose/files/entrypoint.sh:/entrypoint.sh
+ - {{ conf.MCP_STORAGE_DIR }}/pod_config.yml:/root/pod_config.yml
+ - {{ conf.MCP_STORAGE_DIR }}/base_image_opnfv_fuel_vcp.img:/srv/salt/env/prd/salt/files/control/images/base_image_opnfv_fuel_vcp.img
+ - {{ conf.MCP_STORAGE_DIR }}/nodes:/srv/salt/reclass/nodes
+ - {{ conf.MCP_STORAGE_DIR }}/pki:/etc/pki
+ - {{ conf.MCP_STORAGE_DIR }}/salt:/etc/salt
+ - {{ conf.MCP_STORAGE_DIR }}/hosts:/etc/hosts
+ hostname: cfg01
+ domainname: {{ conf.cluster.domain }}
+ privileged: true
+networks:
+ mcpcontrol:
+ driver: macvlan
+ driver_opts:
+ parent: veth_mcp1 # Always untagged
+ ipam:
+ config:
+ - subnet: {{ net_mcpcontrol }}
+ gateway: {{ net_mcpcontrol | ipnet_hostaddr(1) }}
+ ip_range: {{ [net_mcpcontrol | ipnet_hostaddr(2), conf.MCPCONTROL_PREFIX] | join("/") }}
+ pxebr:
+ driver: macvlan
+ driver_opts:
+ parent: veth_mcp3 # Always untagged
+ ipam:
+ config:
+ - subnet: {{ nm.net_admin }}
+ ip_range: {{ [nm.net_admin | ipnet_hostaddr(nm.start_ip[nm.net_admin] + nm.net_admin_hosts.index('opnfv_infra_config_pxe_admin_address') +1), nm.net_admin.split("/")[-1]] | join("/") }}
+ mgmt:
+ driver: macvlan
+ driver_opts:
+{%- if conf.idf.fuel.jumphost.get('trunks', {}).get('mgmt', False) %}
+ parent: {{ ma.interface_str('veth_mcp5', nm.vlan_mgmt) }}
+{%- else %}
+ parent: veth_mcp5 # Untagged by default
+{%- endif %}
+ ipam:
+ config:
+ - subnet: {{ nm.net_mgmt }}
+ ip_range: {{ [nm.net_mgmt | ipnet_hostaddr(2), nm.net_mgmt.split("/")[-1]] | join("/") }}
diff --git a/mcp/scripts/docker-compose/files/entrypoint.sh b/mcp/scripts/docker-compose/files/entrypoint.sh
new file mode 100755
index 000000000..c7f7f9118
--- /dev/null
+++ b/mcp/scripts/docker-compose/files/entrypoint.sh
@@ -0,0 +1,90 @@
+#!/bin/bash -e
+##############################################################################
+# Copyright (c) 2018 Mirantis Inc., 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
+##############################################################################
+
+mkdir -p /etc/salt/{master.d,minion.d,proxy.d}
+
+if [ ! -z "$SALT_EXT_PILLAR" ]; then
+ cp -avr "/tmp/${SALT_EXT_PILLAR}.conf" /etc/salt/master.d/
+fi
+
+if [ ! -f /home/ubuntu/.ssh/authorized_keys ]; then
+ install -D -o ubuntu /root/fuel/mcp/scripts/mcp.rsa.pub \
+ /home/ubuntu/.ssh/authorized_keys
+fi
+
+if ! grep -q localhost /etc/hosts; then
+ # overwrite hosts only on first container up, to preserve cluster nodes
+ cp -a /root/fuel/mcp/scripts/docker-compose/files/hosts /etc/hosts
+fi
+
+# salt state does not properly configure file_roots in master.conf, hard set it
+cp -a /root/fuel/mcp/scripts/docker-compose/files/opnfv_master.conf \
+ /etc/salt/master.d/opnfv_master.conf
+echo 'master: localhost' > /etc/salt/minion.d/opnfv_slave.conf
+
+# NOTE: Most Salt and/or reclass tools have issues traversing Docker mounts
+# or detecting them as directories inside the container.
+# For now, let's do a lot of copy operations to bypass this.
+# Later, we will inject the OPNFV patched reclass model during image build.
+rm -rf /srv/salt/reclass/classes/*
+cp -ar /root/fuel/mcp/reclass/classes/* /srv/salt/reclass/classes
+cp -ar /root/fuel/mcp/reclass/nodes/* /srv/salt/reclass/nodes
+# Sensitive data should stay out of /root/fuel, which is exposed via Jenkins WS
+cp -a /root/pod_config.yml \
+ /srv/salt/reclass/classes/cluster/all-mcp-arch-common/opnfv/pod_config.yml
+
+# OPNFV formulas
+prefix=/srv/salt/formula/salt-formulas
+rm -f /root/fuel/mcp/salt-formulas/*/.git
+cp -ar /root/fuel/mcp/salt-formulas/* ${prefix}/
+for formula in 'armband' 'opendaylight' 'tacker'; do
+ ln -sf /root/fuel/mcp/salt-formulas/salt-formula-${formula}/* \
+ /srv/salt/env/prd/
+done
+
+# Re-create classes.service links that we destroyed above
+for formula in ${prefix}/*; do
+ if [ -e "${formula}/metadata/service" ] && [[ ! $formula =~ \. ]]; then
+ ln -sf "${formula}/metadata/service" \
+ "/srv/salt/reclass/classes/service/${formula#${prefix}/salt-formula-}"
+ fi
+done
+
+# Create links for salt-formula-* packages to mimic git-style salt-formulas
+for artifact in /usr/share/salt-formulas/env/_*/*; do
+ ln -sf "${artifact}" "/srv/salt/env/prd/${artifact#/usr/share/salt-formulas/env/}"
+done
+for artifact in /usr/share/salt-formulas/env/*; do
+ if [[ ! ${artifact} =~ ^_ ]]; then
+ ln -sf "${artifact}" "/srv/salt/env/prd/$(basename ${artifact})"
+ fi
+done
+for formula in /usr/share/salt-formulas/reclass/service/*; do
+ ln -sf "${formula}" "/srv/salt/reclass/classes/service/$(basename ${formula})"
+done
+
+# Tini init system resembles upstart very much, but needs a little adjustment
+sed -i -e "s|return 'start/running' in |return 'is running' in |" \
+ -e "s|ret = _default_runlevel|return _default_runlevel|" \
+ /usr/lib/python2.7/dist-packages/salt/modules/upstart.py
+
+# Remove broken symlinks in /srv/salt, silences recurring warnings
+find -L /srv/salt /srv/salt/env/prd/_* -maxdepth 1 -type l -delete
+
+# Fix up any permissions after above file shuffling
+sudo chown root:root -R /srv/salt
+
+service ssh start
+service salt-minion start
+
+if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
+ exec /usr/bin/salt-master --log-file-level=quiet --log-level=info "$@"
+else
+ exec "$@"
+fi
diff --git a/mcp/scripts/docker-compose/files/hosts b/mcp/scripts/docker-compose/files/hosts
new file mode 100644
index 000000000..473184145
--- /dev/null
+++ b/mcp/scripts/docker-compose/files/hosts
@@ -0,0 +1,6 @@
+127.0.0.1 localhost
+::1 localhost ip6-localhost ip6-loopback
+fe00::0 ip6-localnet
+ff00::0 ip6-mcastprefix
+ff02::1 ip6-allnodes
+ff02::2 ip6-allrouters
diff --git a/mcp/scripts/docker-compose/files/opnfv_master.conf b/mcp/scripts/docker-compose/files/opnfv_master.conf
new file mode 100644
index 000000000..7066f04bf
--- /dev/null
+++ b/mcp/scripts/docker-compose/files/opnfv_master.conf
@@ -0,0 +1,16 @@
+file_roots:
+ base:
+ - /srv/salt/env/prd
+ prd:
+ - /srv/salt/env/prd
+ dev:
+ - /srv/salt/env/dev
+ - /srv/salt/env/prd
+
+user: root
+file_recv: True
+
+open_mode: True
+
+peer:
+ .*: ['x509.sign_remote_certificate']
diff --git a/mcp/scripts/lib.sh b/mcp/scripts/lib.sh
index 016af2bcb..cc88f9b54 100644
--- a/mcp/scripts/lib.sh
+++ b/mcp/scripts/lib.sh
@@ -376,9 +376,9 @@ function jumpserver_check_requirements {
}
function create_networks {
- local vnode_networks=("$@")
+ local all_vnode_networks=("mcpcontrol" "$@")
# create required networks, including constant "mcpcontrol"
- for net in "mcpcontrol" "${vnode_networks[@]}"; do
+ for net in "${all_vnode_networks[@]}"; do
if virsh net-info "${net}" >/dev/null 2>&1; then
virsh net-destroy "${net}" || true
virsh net-undefine "${net}"
@@ -391,6 +391,14 @@ function create_networks {
virsh net-start "${net}"
fi
done
+ # create veth pairs for relevant networks (mcpcontrol, pxebr, mgmt)
+ for i in $(seq 0 2 4); do
+ sudo ip link del "veth_mcp$i" || true
+ sudo ip link add "veth_mcp$i" type veth peer name "veth_mcp$((i+1))"
+ sudo ip link set "veth_mcp$i" up mtu 9000
+ sudo ip link set "veth_mcp$((i+1))" up mtu 9000
+ sudo brctl addif "${all_vnode_networks[$((i/2))]}" "veth_mcp$i"
+ done
}
function create_vms {
@@ -446,10 +454,7 @@ function create_vms {
function update_mcpcontrol_network {
# set static ip address for salt master node, MaaS node
- local cmac=$(virsh domiflist cfg01 2>&1| awk '/mcpcontrol/ {print $5; exit}')
local amac=$(virsh domiflist mas01 2>&1| awk '/mcpcontrol/ {print $5; exit}')
- virsh net-update "mcpcontrol" add ip-dhcp-host \
- "<host mac='${cmac}' name='cfg01' ip='${SALT_MASTER}'/>" --live --config
[ -z "${amac}" ] || virsh net-update "mcpcontrol" add ip-dhcp-host \
"<host mac='${amac}' name='mas01' ip='${MAAS_IP}'/>" --live --config
}
@@ -481,6 +486,26 @@ function start_vms {
done
}
+function prepare_containers {
+ local image_dir=$1
+ [ -n "${image_dir}" ] || exit 1
+ [ -n "${MCP_REPO_ROOT_PATH}" ] || exit 1
+ docker-compose --version > /dev/null 2>&1 || COMPOSE_PREFIX="${image_dir}/"
+
+ "${COMPOSE_PREFIX}docker-compose" -f docker-compose/docker-compose.yaml down
+ sudo rm -rf "${image_dir}/"{salt,hosts,pki} "${image_dir}/nodes/"*
+ mkdir -p "${image_dir}/salt/"{master.d,minion.d}
+ touch "${image_dir}/hosts"
+}
+
+function start_containers {
+ local image_dir=$1
+ [ -n "${image_dir}" ] || exit 1
+ docker-compose --version > /dev/null 2>&1 || COMPOSE_PREFIX="${image_dir}/"
+ "${COMPOSE_PREFIX}docker-compose" -f docker-compose/docker-compose.yaml pull
+ "${COMPOSE_PREFIX}docker-compose" -f docker-compose/docker-compose.yaml up -d
+}
+
function check_connection {
local total_attempts=60
local sleep_time=5
@@ -550,8 +575,10 @@ function wait_for {
function do_udev_cfg {
local _conf='/etc/udev/rules.d/99-opnfv-fuel-vnet-mtu.rules'
# http://linuxaleph.blogspot.com/2013/01/how-to-network-jumbo-frames-to-kvm-guest.html
- echo 'SUBSYSTEM=="net", ACTION=="add|change", KERNEL=="vnet*", ATTR{mtu}="9000"' |& sudo tee "${_conf}"
- sudo udevadm control --reload || true
+ echo 'SUBSYSTEM=="net", ACTION=="add|change", KERNEL=="vnet*", RUN+="/bin/sh -c '"'/bin/sleep 1; /sbin/ip link set %k mtu 9000'\"" |& sudo tee "${_conf}"
+ echo 'SUBSYSTEM=="net", ACTION=="add|change", KERNEL=="*-nic", RUN+="/bin/sh -c '"'/bin/sleep 1; /sbin/ip link set %k mtu 9000'\"" |& sudo tee -a "${_conf}"
+ sudo udevadm control --reload
+ sudo udevadm trigger
}
function do_sysctl_cfg {
@@ -574,12 +601,29 @@ function get_nova_compute_pillar_data {
}
function docker_install {
+ local image_dir=$1
# Mininum effort attempt at installing Docker if missing
- if ! which docker; then
+ if ! docker --version; then
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
rm get-docker.sh
# On RHEL distros, the Docker service should be explicitly started
sudo systemctl start docker
+ else
+ DOCKER_VER=$(docker version --format '{{.Server.Version}}')
+ if [ "${DOCKER_VER%%.*}" -lt 2 ]; then
+ notify_e "[ERROR] Docker version ${DOCKER_VER} is too old, please upgrade it."
+ fi
+ fi
+ # Distro-provided docker-compose might be simply broken (Ubuntu 16.04, CentOS 7)
+ if ! docker-compose --version > /dev/null 2>&1; then
+ COMPOSE_BIN="${image_dir}/docker-compose"
+ COMPOSE_VERSION='1.22.0'
+ notify_n "[WARN] Using docker-compose ${COMPOSE_VERSION} in ${COMPOSE_BIN}" 3
+ if [ ! -e "${COMPOSE_BIN}" ]; then
+ COMPOSE_URL="https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}"
+ sudo curl -L "${COMPOSE_URL}/docker-compose-$(uname -s)-$(uname -m)" -o "${COMPOSE_BIN}"
+ sudo chmod +x "${COMPOSE_BIN}"
+ fi
fi
}
diff --git a/mcp/scripts/lib_template.sh b/mcp/scripts/lib_template.sh
index 4b5b0563d..0cfc02fdf 100644
--- a/mcp/scripts/lib_template.sh
+++ b/mcp/scripts/lib_template.sh
@@ -79,7 +79,8 @@ function do_templates_cluster {
awk '/^---$/{f=1;next;}f' "${_yaml}" >> "${LOCAL_PDF}"
done
# shellcheck disable=SC2046
- j2args=$(find "${RECLASS_CLUSTER_DIR}" "$(readlink -f virsh_net)" $(readlink -f ./*j2) \
+ j2args=$(find "${RECLASS_CLUSTER_DIR}" "$(readlink -f virsh_net)" \
+ "$(readlink -f docker-compose)" $(readlink -f ./*j2) \
-name '*.j2' -exec echo -j {} \;)
# shellcheck disable=SC2086
if ! "${PHAROS_GEN_CFG}" -y "${LOCAL_PDF}" ${j2args} -b -v \
diff --git a/mcp/scripts/salt.sh b/mcp/scripts/salt.sh
deleted file mode 100755
index 46ef6ffbf..000000000
--- a/mcp/scripts/salt.sh
+++ /dev/null
@@ -1,132 +0,0 @@
-#!/bin/bash -e
-##############################################################################
-# Copyright (c) 2017 Mirantis Inc., 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
-##############################################################################
-#
-# Deploy Salt Master
-#
-
-CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x
-F_GIT_ROOT=$(git rev-parse --show-toplevel)
-F_GIT_DIR=$(cd "${F_GIT_ROOT}/mcp" && git rev-parse --git-dir)
-F_GIT_SUBD=${F_GIT_ROOT#${F_GIT_DIR%%/.git*}}
-OPNFV_TMP_DIR="/home/${SALT_MASTER_USER}/opnfv"
-OPNFV_GIT_DIR="/root/opnfv"
-OPNFV_FUEL_DIR="/root/fuel" # Should be in sync with patch.sh, scripts patches
-OPNFV_RDIR="reclass/classes/cluster/all-mcp-arch-common"
-OPNFV_VCP_IMG="mcp/scripts/base_image_opnfv_fuel_vcp.img"
-OPNFV_VCP_DIR="/srv/salt/env/prd/salt/files/control/images"
-LOCAL_GIT_DIR="${F_GIT_ROOT%${F_GIT_SUBD}}"
-LOCAL_PDF_RECLASS=$1; shift
-# shellcheck disable=SC2116,SC2086
-LOCAL_VIRT_NODES=$(echo ${*//cfg01/}) # unquoted to filter space
-NODE_MASK="${LOCAL_VIRT_NODES// /|}"
-
-# push to cfg01 current git repo first (including submodules), at ~ubuntu/opnfv
-# later we move it to ~root/opnfv (and ln as ~root/fuel); delete the temp clone
-remote_tmp="${SSH_SALT}:$(basename "${OPNFV_TMP_DIR}")"
-STORAGE_DIR=$(dirname "${LOCAL_PDF_RECLASS}")
-REL_STORAGE_DIR_PATH=${STORAGE_DIR#${LOCAL_GIT_DIR}}
-if [[ "${REL_STORAGE_DIR_PATH}" == "${STORAGE_DIR}" ]]
-then
- REL_STORAGE_DIR_PATH=""
-fi
-rsync -Erl --delete -e "ssh ${SSH_OPTS}" \
- --exclude={.gitignore,"$REL_STORAGE_DIR_PATH"} \
- "${LOCAL_GIT_DIR}/" "${remote_tmp}/"
-if [ -n "${LOCAL_PDF_RECLASS}" ] && [ -f "${LOCAL_PDF_RECLASS}" ]; then
- rsync -e "ssh ${SSH_OPTS}" "${LOCAL_PDF_RECLASS}" \
- "${remote_tmp}${F_GIT_SUBD}/mcp/${OPNFV_RDIR}/opnfv/"
-fi
-local_vcp_img=$(dirname "${LOCAL_PDF_RECLASS}")/$(basename "${OPNFV_VCP_IMG}")
-if [ -e "${local_vcp_img}" ]; then
- rsync -L -e "ssh ${SSH_OPTS}" "${local_vcp_img}" \
- "${remote_tmp}${F_GIT_SUBD}/${OPNFV_VCP_IMG}"
-fi
-
-# ssh to cfg01
-# shellcheck disable=SC2086,2087
-ssh ${SSH_OPTS} "${SSH_SALT}" bash -s -e << SALT_INSTALL_END
- sudo -i
- set -e
- export TERM=${TERM}
- export CI_DEBUG=${CI_DEBUG}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x
-
- echo -n 'Checking out cloud-init has finished running ...'
- while [ ! -f /var/lib/cloud/instance/boot-finished ]; do echo -n '.'; sleep 1; done
- echo ' done'
-
- mkdir -p /srv/salt /usr/share/salt-formulas/reclass
- rm -rf ${OPNFV_GIT_DIR} ${OPNFV_FUEL_DIR}
- mv ${OPNFV_TMP_DIR} ${OPNFV_GIT_DIR} && chown -R root.root ${OPNFV_GIT_DIR}
- find ${OPNFV_GIT_DIR} -name '.git' -type f | while read f_git; do
- sed -i 's@${LOCAL_GIT_DIR}@${OPNFV_GIT_DIR}@g' \$f_git
- done
- ln -sf ${OPNFV_GIT_DIR}${F_GIT_SUBD} ${OPNFV_FUEL_DIR}
- ln -sf ${OPNFV_FUEL_DIR}/mcp/reclass /srv/salt
- ln -sf ${OPNFV_FUEL_DIR}/mcp/deploy/scripts /srv/salt
- ln -sf ${OPNFV_FUEL_DIR}/mcp/scripts/mcp.rsa $(dirname "${OPNFV_FUEL_DIR}")
-
- cp -r ${OPNFV_FUEL_DIR}/mcp/metadata/service /usr/share/salt-formulas/reclass
- cd /srv/salt/reclass/classes/service && \
- ln -sf /usr/share/salt-formulas/reclass/service/opendaylight
-
- # Armband APT-MK nightly/extra repo for forked & extended reclass
- wget -qO - https://linux.enea.com/apt-mk/public.gpg | apt-key add -
- echo 'deb http://linux.enea.com/apt-mk/xenial nightly extra' > \
- '/etc/apt/sources.list.d/armband_mcp_extra.list'
- apt-get update
-
- cd /srv/salt/scripts
- export DEBIAN_FRONTEND=noninteractive
- echo 'Dpkg::Use-Pty "0";' > /etc/apt/apt.conf.d/90silence-dpkg
- OLD_DOMAIN=\$(grep -sPzo "id: cfg01\.\K(\S*)" /etc/salt/minion.d/minion.conf) || true
- BOOTSTRAP_SALTSTACK_OPTS=" -r -dX stable 2017.7 " \
- MASTER_HOSTNAME=cfg01.${CLUSTER_DOMAIN} DISTRIB_REVISION=nightly \
- EXTRA_FORMULAS="nfs panko gnocchi oslo-templates" \
- ./salt-master-init.sh
- salt-key -Ay
-
- cp -r ${OPNFV_FUEL_DIR}/mcp/salt-formulas/* /usr/share/salt-formulas/env
- cd ${OPNFV_FUEL_DIR}/mcp/patches && ./patch.sh patches.list formulas
- cd ${OPNFV_FUEL_DIR}/mcp/patches && ./patch.sh patches.list reclass
-
- source ${OPNFV_FUEL_DIR}/mcp/scripts/lib.sh
- wait_for 3.0 "salt-call state.apply salt"
-
- # In case scenario changed (and implicitly domain name), re-register minions
- if [ -n "\${OLD_DOMAIN}" ] && [ "\${OLD_DOMAIN}" != "${CLUSTER_DOMAIN}" ]; then
- salt "*.\${OLD_DOMAIN}" cmd.run "grep \${OLD_DOMAIN} -sRl /etc/salt | \
- xargs --no-run-if-empty sed -i 's/\${OLD_DOMAIN}/${CLUSTER_DOMAIN}/g'; \
- service salt-minion restart" || true
- salt-key -yd "*.\${OLD_DOMAIN}"
- salt-key -Ay
- fi
-
- # Init specific to VMs on FN (all for virtual, cfg|mas for baremetal)
- wait_for 3.0 'salt -C "cfg01*" state.apply linux'
- if [[ "${LOCAL_VIRT_NODES}" =~ mas ]]; then
- wait_for 3.0 'salt -C "mas*" test.ping'
- else
- wait_for 3.0 '(for n in ${LOCAL_VIRT_NODES}; do salt -C \${n}.* test.ping || exit; done)'
- fi
- wait_for 3.0 'salt -C "E@^(${NODE_MASK}|cfg01).*" saltutil.sync_all'
- wait_for 3.0 'salt -C "E@^(${NODE_MASK}|cfg01).*" state.apply salt'
-
- wait_for 3.0 'salt -C "E@^(${NODE_MASK}).*" state.sls linux.system,linux.storage'
- wait_for 2.0 'salt -C "E@^(${NODE_MASK}).*" state.sls linux.network'
- salt -C "E@^(${NODE_MASK}).*" system.reboot
- wait_for 90.0 'salt -C "E@^(${NODE_MASK}).*" test.ping'
- wait_for 3.0 'salt -C "E@^(${NODE_MASK}).*" pkg.upgrade refresh=False dist_upgrade=True'
-
- wait_for 3.0 'salt -C "E@^(${NODE_MASK}|cfg01).*" state.sls ntp'
-
- if [ -f "${OPNFV_FUEL_DIR}/${OPNFV_VCP_IMG}" ]; then
- mkdir -p "${OPNFV_VCP_DIR}"
- mv "${OPNFV_FUEL_DIR}/${OPNFV_VCP_IMG}" "${OPNFV_VCP_DIR}/"
- fi
-SALT_INSTALL_END
diff --git a/mcp/scripts/xdf_data.sh.j2 b/mcp/scripts/xdf_data.sh.j2
index c0629fec4..ee5fffab7 100644
--- a/mcp/scripts/xdf_data.sh.j2
+++ b/mcp/scripts/xdf_data.sh.j2
@@ -14,6 +14,7 @@
{%- import 'net_map.j2' as nm with context -%}
{%- set arch = conf[conf.MCP_JUMP_ARCH] -%}
{%- set V = conf.virtual -%}
+{%- do V.nodes.update(arch.default.virtual.nodes) -%}
{%- set section_map = {
'infra': -1,
'control': nm.ctl01.idx,
@@ -33,7 +34,7 @@
{%- macro serialize_vnodes() -%}
{%- set arr = [] -%}
{%- for section in section_map -%}
- {%- for n in V.nodes[section] -%}
+ {%- for n in V.nodes[section] or [] -%}
{%- if section_map[section] < 0 or conf.nodes[section_map[section] + loop.index0].node.type == 'virtual' -%}
{%- if n not in V -%}{%- do V.update({n: {}}) -%}{%- endif -%}
{%- do arr.append(pack([n, V[n].ram or arch.default.ram,
@@ -48,7 +49,7 @@
{%- macro filter_nodes(type, output_as_query = False, sections = section_map) -%}
{%- set arr = [] -%}
{%- for section in sections -%}
- {%- for n in V.nodes[section] -%}
+ {%- for n in V.nodes[section] or [] -%}
{%- if ( (section_map[section] < 0 and type == 'virtual') or
(section_map[section] >= 0 and
conf.nodes[section_map[section] + loop.index0].node.type in type) ) -%}
@@ -87,7 +88,7 @@ OPNFV_BRIDGES=(
)
export CLUSTER_DOMAIN={{ conf.cluster.domain }}
-cluster_states={{ bash_arr(conf.cluster.states) }}
+cluster_states={{ bash_arr(arch.default.cluster.states + conf.cluster.states) }}
virtual_nodes={{ filter_nodes('virtual') }}
control_nodes_query={{ filter_nodes(['baremetal', 'virtual'], True, ['control']) }}
base_image={{ arch.base_image }}