Merge "Auto Generated INFO.yaml file"
authorGregory Elkinbard <elkinbar@gmail.com>
Mon, 7 May 2018 17:49:54 +0000 (17:49 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Mon, 7 May 2018 17:49:54 +0000 (17:49 +0000)
263 files changed:
.gitignore
.gitmodules
README.rst
ci/deploy.sh
docs/release/installation/installation.instruction.rst
docs/release/release-notes/release-notes.rst
docs/release/scenarios/os-nosdn-ovs-ha/os-nosdn-ovs-ha.rst
docs/release/scenarios/os-nosdn-ovs-noha/os-nosdn-ovs-noha.rst
docs/release/userguide/userguide.rst
mcp/config/labs/local/idf-pod1.yaml
mcp/config/labs/local/idf-virtual1.yaml [new file with mode: 0644]
mcp/config/labs/local/pod1.yaml
mcp/config/labs/local/virtual1.yaml [new file with mode: 0644]
mcp/config/scenario/.gitignore [new file with mode: 0644]
mcp/config/scenario/README.rst
mcp/config/scenario/baremetal/os-nosdn-nofeature-ha.yaml [deleted file]
mcp/config/scenario/baremetal/os-nosdn-ovs-ha.yaml [deleted file]
mcp/config/scenario/baremetal/os-odl-nofeature-ha.yaml [deleted file]
mcp/config/scenario/defaults-x86_64.yaml [deleted file]
mcp/config/scenario/defaults.yaml [moved from mcp/config/scenario/defaults-aarch64.yaml with 57% similarity]
mcp/config/scenario/os-nosdn-nofeature-ha.yaml.j2 [new file with mode: 0644]
mcp/config/scenario/os-nosdn-nofeature-noha.yaml [moved from mcp/config/scenario/virtual/os-nosdn-nofeature-noha.yaml with 91% similarity]
mcp/config/scenario/os-nosdn-ovs-ha.yaml.j2 [new file with mode: 0644]
mcp/config/scenario/os-nosdn-ovs-noha.yaml [moved from mcp/config/scenario/virtual/os-nosdn-ovs-noha.yaml with 91% similarity]
mcp/config/scenario/os-odl-nofeature-ha.yaml.j2 [new file with mode: 0644]
mcp/config/scenario/os-odl-nofeature-noha.yaml [moved from mcp/config/scenario/virtual/os-odl-nofeature-noha.yaml with 87% similarity]
mcp/config/scenario/os-ovn-nofeature-ha.yaml.j2 [new file with mode: 0644]
mcp/config/scenario/os-ovn-nofeature-noha.yaml [moved from mcp/config/scenario/virtual/os-ovn-nofeature-noha.yaml with 89% similarity]
mcp/config/states/baremetal_init
mcp/config/states/dpdk
mcp/config/states/maas
mcp/config/states/neutron_compute [deleted file]
mcp/config/states/opendaylight
mcp/config/states/openstack_ha
mcp/config/states/openstack_noha
mcp/config/states/ovn_ctl_opts [deleted file]
mcp/config/states/virtual_control_plane
mcp/metadata/service/opendaylight/server/single.yml
mcp/patches/0001-opendaylight-formula-neutron.patch [deleted file]
mcp/patches/0002-maas-region-skip-credentials-update.patch
mcp/patches/0003-maas-region-force-artifact-download.patch
mcp/patches/0004-maas-region-use-authorized_keys-1st-entry.patch [deleted file]
mcp/patches/0004-network.dpdk-Move-ifcfg-br-prv-to-interfaces.u.patch [new file with mode: 0644]
mcp/patches/0005-maas-module-Obtain-fabric-ID-from-CIDR.patch
mcp/patches/0006-maas-module-Add-VLAN-DHCP-enable-support.patch
mcp/patches/0007-network.interface-Fix-ifup-OVS-port-with-route.patch
mcp/patches/0008-Handle-extra-environment-variables.patch [new file with mode: 0644]
mcp/patches/0008-Handle-kernel-boot-options.patch [deleted file]
mcp/patches/0009-controller-Use-keystoneclient-to-check-project-ID.patch [deleted file]
mcp/patches/0010-maas-region-allow-timeout-override.patch
mcp/patches/0011-system.repo-Debian-Add-keyserver-proxy-support.patch
mcp/patches/0012-linux.storage.lvm-Disable-filter.patch [deleted file]
mcp/patches/0012-routes-Skip-network-restart-on-noifupdown.patch [new file with mode: 0644]
mcp/patches/0013-dpdk-Support-ovs-bridge-tagging.patch [deleted file]
mcp/patches/0014-reclass.storage.node-Merge-duplicate-nodes.patch [new file with mode: 0644]
mcp/patches/0015-Set-ovs-bridges-as-L3-interfaces.patch [new file with mode: 0644]
mcp/patches/0016-Set-boot-source-selections.patch [new file with mode: 0644]
mcp/patches/fuel-patch-copyright.template
mcp/patches/patch.sh
mcp/patches/patches.list
mcp/patches/patches_init.list [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-ovn-noha/openstack/init.yml with 84% similarity]
mcp/patches/reclass-system-salt-model/0001-Bring-in-opendaylight-support.patch [deleted file]
mcp/patches/reclass-system-salt-model/0001-Use-keystone-v3-endpoints-by-default.patch [moved from mcp/patches/reclass-system-salt-model/0003-Use-keystone-v3-endpoints-by-default.patch with 92% similarity]
mcp/patches/reclass-system-salt-model/0002-Revert-Admin-endpoint-for-keystone-v3.patch [moved from mcp/patches/reclass-system-salt-model/0004-Revert-Admin-endpoint-for-keystone-v3.patch with 100% similarity]
mcp/patches/reclass-system-salt-model/0002-mongodb-Parameterize-cluster-hostnames.patch [deleted file]
mcp/patches/scripts/0001-salt-master-setup.sh-Allow-arm64-salt-bootstrap.patch
mcp/patches/scripts/0002-salt-master-init.sh-Apply-OPNFV-Fuel-patches.patch [new file with mode: 0644]
mcp/patches/scripts/0003-salt-master-setup-Group-APT-install-formulas.patch [moved from mcp/patches/scripts/0002-salt-master-setup-Group-APT-install-formulas.patch with 97% similarity]
mcp/reclass/classes/cluster/.gitignore
mcp/reclass/classes/cluster/README.rst
mcp/reclass/classes/cluster/all-mcp-arch-common/aarch64/init.yml
mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_dpdk_pdf.yml.j2 [new file with mode: 0644]
mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_pdf.yml.j2 [new file with mode: 0644]
mcp/reclass/classes/cluster/all-mcp-arch-common/init.yml
mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/init.yml
mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/pod_config.yml.example [deleted file]
mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/runtime.yml [deleted file]
mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/runtime.yml.j2 [moved from mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/pod_config.yml with 54% similarity]
mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/runtime.yml.template [deleted file]
mcp/reclass/classes/cluster/all-mcp-arch-common/x86_64/init.yml
mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/kvm_pdf.yml.j2 [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_compute_pdf.yml.j2 [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_proxy.yml [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/compute.yml [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/compute_pdf.yml.j2 [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/database.yml [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/telemetry.yml [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/config.yml [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/config_pdf.yml.j2 [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/kvm.yml [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/maas.yml [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/compute.yml.j2 [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/database.yml [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/init.yml [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/proxy.yml [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/telemetry.yml [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/infra/kvm.yml [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/infra/maas.yml [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/compute_pdf.yml.j2 [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/database.yml [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/init.yml [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/proxy.yml [deleted file]
mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/telemetry.yml [deleted file]
mcp/reclass/classes/cluster/mcp-pike-common-ha/include/lab_proxy_pdf.yml.j2 [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/lab_proxy_pdf.yml.j2 with 100% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-ha/include/maas_proxy.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/include/proxy.yml with 94% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/config.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/config.yml with 92% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/init.yml.j2 [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/init.yml with 87% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/kvm.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/kvm.yml with 95% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/kvm_pdf.yml.j2 [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/maas.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/maas.yml with 50% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/maas_pdf.yml.j2 [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_compute.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_compute.yml with 75% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_compute_pdf.yml.j2 [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_control.yml.j2 [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_control.yml with 59% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_control_init.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_control_init.yml with 93% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_database.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_database.yml with 96% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_database_init.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_database_init.yml with 88% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_init.yml.j2 [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_init.yml with 76% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_interface_vcp_biport.yml.j2 [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_interface_vcp_biport.yml with 82% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_interface_vcp_triport.yml.j2 [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_interface_vcp_triport.yml with 87% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_message_queue.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_message_queue.yml with 95% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_proxy.yml.j2 [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_telemetry.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_telemetry.yml with 96% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-noha/haproxy_openstack_api.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/haproxy_openstack_api.yml with 99% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-noha/infra/config.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/infra/config.yml with 67% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-noha/infra/init.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/infra/init.yml with 94% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-noha/init_options.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/init_options.yml with 63% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_compute.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/openstack_compute.yml with 63% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_compute_pdf.yml.j2 [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_control.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/openstack_control.yml with 85% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_control_pdf.yml.j2 [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_gateway.yml [moved from mcp/reclass/nodes/cfg01.baremetal-mcp-pike-ovs-dpdk-ha.local.yml with 61% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_gateway_pdf.yml.j2 [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/openstack_gateway.yml with 79% similarity]
mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_init.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/openstack_init.yml with 85% similarity]
mcp/reclass/classes/cluster/mcp-pike-odl-ha/infra/config.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/infra/config.yml with 81% similarity]
mcp/reclass/classes/cluster/mcp-pike-odl-ha/infra/init.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-odl-ha/infra/init_vcp.yml.j2 [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-odl-ha/infra/kvm.yml.j2 [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/infra/kvm.yml with 79% similarity]
mcp/reclass/classes/cluster/mcp-pike-odl-ha/infra/maas.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/infra/init.yml with 73% similarity]
mcp/reclass/classes/cluster/mcp-pike-odl-ha/init.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/init.yml with 75% similarity]
mcp/reclass/classes/cluster/mcp-pike-odl-ha/opendaylight/control.yml.j2 [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/opendaylight/control.yml with 70% similarity]
mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/compute.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/compute_pdf.yml.j2 [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/control.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/control.yml with 51% similarity]
mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/database.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/init.yml.j2 [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/init.yml with 62% similarity]
mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/message_queue.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/proxy.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/proxy.yml with 58% similarity]
mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/telemetry.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-odl-noha/infra/config.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/infra/config.yml with 71% similarity]
mcp/reclass/classes/cluster/mcp-pike-odl-noha/infra/init.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/infra/init.yml with 74% similarity]
mcp/reclass/classes/cluster/mcp-pike-odl-noha/init.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/init.yml with 62% similarity]
mcp/reclass/classes/cluster/mcp-pike-odl-noha/opendaylight/control.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/opendaylight/control.yml with 66% similarity]
mcp/reclass/classes/cluster/mcp-pike-odl-noha/opendaylight/control_pdf.yml.j2 [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-odl-noha/openstack/compute.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/openstack/compute.yml with 74% similarity]
mcp/reclass/classes/cluster/mcp-pike-odl-noha/openstack/control.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/openstack/control.yml with 60% similarity]
mcp/reclass/classes/cluster/mcp-pike-odl-noha/openstack/gateway.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/openstack/gateway.yml with 51% similarity]
mcp/reclass/classes/cluster/mcp-pike-odl-noha/openstack/init.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/openstack/init.yml with 78% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/config.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/infra/config.yml with 69% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/init.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/init_vcp.yml.j2 [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/kvm.yml.j2 [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/message_queue.yml with 64% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/maas.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovn-ha/init.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/init.yml with 75% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/compute.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/compute.yml with 70% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/compute_pdf.yml.j2 [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/control.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/control.yml with 66% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/database.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/init.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/openstack/init.yml with 81% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/message_queue.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/proxy.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/infra/maas.yml with 66% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/telemetry.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovn-noha/infra/config.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-ovn-noha/infra/config.yml with 73% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovn-noha/infra/init.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-ovn-noha/infra/init.yml with 74% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovn-noha/init.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovn-noha/openstack/compute.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-ovn-noha/openstack/compute.yml with 87% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovn-noha/openstack/control.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-ovn-noha/openstack/control.yml with 74% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovn-noha/openstack/init.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/config.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/init.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/init.yml with 71% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/init_vcp.yml.j2 [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/kvm.yml.j2 [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/message_queue.yml with 63% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/maas.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/init.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/init.yml with 73% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/compute.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/compute_pdf.yml.j2 [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/control.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/control.yml with 70% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/database.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/init.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/infra/init.yml with 67% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/message_queue.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/proxy.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/telemetry.yml [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/infra/init.yml with 65% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/infra/config.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/infra/config.yml with 51% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/infra/init.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/infra/init.yml with 74% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/init.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-ovn-noha/init.yml with 65% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/openstack/compute.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/openstack/compute.yml with 73% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/openstack/control.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/openstack/control.yml with 71% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/openstack/gateway.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/openstack/gateway.yml with 82% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/openstack/init.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/config.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/init.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/init_vcp.yml.j2 [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/kvm.yml.j2 [moved from mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/message_queue.yml with 64% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/maas.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-ha/init.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/compute.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/compute_pdf.yml.j2 [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/control.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/database.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/init.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/message_queue.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/proxy.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/telemetry.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-noha/infra/config.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/infra/config.yml with 61% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovs-noha/infra/init.yml [moved from mcp/config/states/networking_gw with 74% similarity, mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-noha/init.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/mcp-pike-ovs-noha/openstack/compute.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/openstack/compute.yml with 82% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovs-noha/openstack/control.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/openstack/control.yml with 75% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovs-noha/openstack/gateway.yml [moved from mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/openstack/gateway.yml with 83% similarity]
mcp/reclass/classes/cluster/mcp-pike-ovs-noha/openstack/init.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/init.yml [deleted file]
mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/openstack/init.yml [deleted file]
mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/init.yml [deleted file]
mcp/reclass/classes/system
mcp/reclass/nodes/cfg01.mcp-pike-odl-ha.local.yml [moved from mcp/reclass/nodes/cfg01.baremetal-mcp-pike-odl-ha.local.yml with 86% similarity]
mcp/reclass/nodes/cfg01.mcp-pike-odl-noha.local.yml [moved from mcp/reclass/nodes/cfg01.virtual-mcp-pike-ovn-noha.local.yml with 86% similarity]
mcp/reclass/nodes/cfg01.mcp-pike-ovn-ha.local.yml [new file with mode: 0644]
mcp/reclass/nodes/cfg01.mcp-pike-ovn-noha.local.yml [moved from mcp/reclass/nodes/cfg01.baremetal-mcp-pike-ovs-ha.local.yml with 86% similarity]
mcp/reclass/nodes/cfg01.mcp-pike-ovs-dpdk-ha.local.yml [moved from mcp/reclass/nodes/cfg01.virtual-mcp-pike-odl-noha.local.yml with 86% similarity]
mcp/reclass/nodes/cfg01.mcp-pike-ovs-dpdk-noha.local.yml [new file with mode: 0644]
mcp/reclass/nodes/cfg01.mcp-pike-ovs-ha.local.yml [new file with mode: 0644]
mcp/reclass/nodes/cfg01.mcp-pike-ovs-noha.local.yml [new file with mode: 0644]
mcp/reclass/nodes/cfg01.virtual-mcp-pike-ovs-dpdk-noha.local.yml [deleted file]
mcp/reclass/nodes/cfg01.virtual-mcp-pike-ovs-noha.local.yml [deleted file]
mcp/salt-formulas/maas/machines/delete.sls
mcp/salt-formulas/maas/machines/mark_broken_fixed.sls
mcp/salt-formulas/maas/machines/override_failed_testing.sls [new file with mode: 0644]
mcp/salt-formulas/maas/machines/set_storage_layout.sls [new file with mode: 0644]
mcp/salt-formulas/maas/pxe_nat.sls [new file with mode: 0644]
mcp/salt-formulas/opendaylight/client.sls [deleted file]
mcp/salt-formulas/opendaylight/files/jetty.xml
mcp/salt-formulas/opendaylight/files/setenv.shell
mcp/salt-formulas/opendaylight/map.jinja
mcp/salt-formulas/opendaylight/server.sls
mcp/salt-formulas/opnfv/route_wrapper.sls [new file with mode: 0644]
mcp/scripts/.gitignore [new file with mode: 0644]
mcp/scripts/globals.sh
mcp/scripts/lib.sh
mcp/scripts/lib_template.sh [new file with mode: 0644]
mcp/scripts/net_public.xml [deleted file]
mcp/scripts/pharos
mcp/scripts/requirements_deb.yaml
mcp/scripts/requirements_rpm.yaml
mcp/scripts/salt.sh
mcp/scripts/sysinfo_print.sh
mcp/scripts/user-data.admin.sh.j2 [new file with mode: 0644]
mcp/scripts/user-data.mcp.sh.j2 [moved from mcp/scripts/user-data.template with 73% similarity]
mcp/scripts/virsh_net/net_internal.xml [moved from mcp/scripts/net_internal.xml with 100% similarity]
mcp/scripts/virsh_net/net_mcpcontrol.xml.j2 [moved from mcp/scripts/net_mcpcontrol.xml.template with 58% similarity]
mcp/scripts/virsh_net/net_mgmt.xml.j2 [moved from mcp/scripts/net_mgmt.xml with 50% similarity]
mcp/scripts/virsh_net/net_public.xml.j2 [new file with mode: 0644]
mcp/scripts/virsh_net/net_pxebr.xml.j2 [new file with mode: 0644]
mcp/scripts/xdf_data.sh.j2 [new file with mode: 0644]

index 38b4440..fe7a864 100644 (file)
@@ -10,7 +10,7 @@
 **/docs_output/
 **/releng/
 **/mcp/deploy/images/
-**/mcp/scripts/mcp.rsa*
 **/mcp/scripts/user-data.sh
-**/mcp/scripts/net_mcpcontrol.xml
+**/mcp/scripts/virsh_net/*.xml
 **/mcp/scripts/*.img
+**/net_map.j2
index 565943d..c7c4458 100644 (file)
@@ -2,7 +2,6 @@
        path = mcp/reclass/classes/system
        url = https://github.com/Mirantis/reclass-system-salt-model
        branch = master
-        ignore = all
 [submodule "scripts"]
        path = mcp/deploy/scripts
        url = https://github.com/salt-formulas/salt-formulas-scripts
index e1b9201..467c211 100644 (file)
@@ -1,3 +1,3 @@
 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
 .. SPDX-License-Identifier: CC-BY-4.0
-.. (c) 2017 Ericsson AB, Mirantis Inc., Enea AB and others.
+.. (c) 2018 Ericsson AB, Mirantis Inc., Enea AB and others.
index 9a22e9e..a5fec4d 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/bash -e
-# shellcheck disable=SC2034,SC2154,SC1090,SC1091
+# shellcheck disable=SC2034,SC2154,SC1090,SC1091,SC2155
 ##############################################################################
-# Copyright (c) 2017 Ericsson AB, Mirantis Inc., Enea AB and others.
+# Copyright (c) 2018 Ericsson AB, Mirantis Inc., Enea AB and others.
 # jonas.bjurel@ericsson.com
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Apache License, Version 2.0
@@ -16,9 +16,9 @@ do_exit () {
     local RC=$?
     cleanup_mounts > /dev/null 2>&1
     if [ ${RC} -eq 0 ]; then
-        notify "\n[OK] MCP: Openstack installation finished succesfully!\n\n" 2
+        notify_n "[OK] MCP: Openstack installation finished succesfully!" 2
     else
-        notify "\n[ERROR] MCP: Openstack installation threw a fatal error!\n\n"
+        notify_n "[ERROR] MCP: Openstack installation threw a fatal error!"
     fi
 }
 #
@@ -38,7 +38,7 @@ $(notify "USAGE:" 2)
   $(basename "$0") -l lab-name -p pod-name -s deploy-scenario \\
     [-b Lab Config Base URI] \\
     [-S storage-dir] [-L /path/to/log/file.tar.gz] \\
-    [-f[f]] [-F] [-e | -E[E]] [-d] [-D]
+    [-f[f]] [-F] [-e | -E[E]] [-d] [-D] [-N]
 
 $(notify "OPTIONS:" 2)
   -b  Base-uri for the stack-configuration structure
@@ -55,25 +55,26 @@ $(notify "OPTIONS:" 2)
   -s  Deploy-scenario short-name
   -S  Storage dir for VM images
   -L  Deployment log path and file name
+  -N  Experimental: Do not virtualize control plane (novcp)
 
-$(notify "Description:" 2)
+$(notify_i "Description:" 2)
 Deploys the Fuel@OPNFV stack on the indicated lab resource.
 
 This script provides the Fuel@OPNFV deployment abstraction.
 It depends on the OPNFV official configuration directory/file structure
 and provides a fairly simple mechanism to execute a deployment.
 
-$(notify "Input parameters to the build script are:" 2)
+$(notify_i "Input parameters to the build script are:" 2)
 -b Base URI to the configuration directory (needs to be provided in URI style,
    it can be a local resource: file:// or a remote resource http(s)://).
    A POD Descriptor File (PDF) and its Installer Descriptor File (IDF)
    companion should be available at:
    <base-uri>/labs/<lab-name>/<pod-name>.yaml
    <base-uri>/labs/<lab-name>/idf-<pod-name>.yaml
-   An example config is provided inside current repo in
-   <./mcp/config>.
    The default is using the git submodule tracking 'OPNFV Pharos' in
    <./mcp/scripts/pharos>.
+   An example config is provided inside current repo in
+   <./mcp/config>, automatically linked as <./mcp/scripts/pharos/labs/local>.
 -d Dry-run - Produce deploy config files, but do not execute deploy
 -D Debug logging - Enable extra logging in sh deploy scripts (set -x)
 -e Do not launch environment deployment
@@ -90,6 +91,8 @@ $(notify "Input parameters to the build script are:" 2)
 -L Deployment log path and name, eg. -L /home/jenkins/job.log.tar.gz
 -l Lab name as defined in the configuration directory, e.g. lf
 -p POD name as defined in the configuration directory, e.g. pod2
+-N Experimental: Instead of virtualizing the control plane (VCP), deploy
+   control plane directly on baremetal nodes
 -P Skip installing dependency distro packages on current host
    This flag should only be used if you have kept back older packages that
    would be upgraded and that is undesirable on the current system.
@@ -98,11 +101,11 @@ $(notify "Input parameters to the build script are:" 2)
    has to be defined in config directory (e.g. os-odl-nofeature-ha).
 -S Storage dir for VM images, default is mcp/deploy/images
 
-$(notify "[NOTE] sudo & virsh priviledges are needed for this script to run" 3)
+$(notify_i "[NOTE] sudo & virsh priviledges are needed for this script to run" 3)
 
 Example:
 
-$(notify "sudo $(basename "$0") \\
+$(notify_i "sudo $(basename "$0") \\
   -b file:///home/jenkins/securedlab \\
   -l lf -p pod2 \\
   -s os-odl-nofeature-ha" 2)
@@ -113,18 +116,6 @@ EOF
 # END of usage description
 ##############################################################################
 
-##############################################################################
-# BEGIN of colored notification wrapper
-#
-notify() {
-    tput setaf "${2:-1}" || true
-    echo -en "${1:-"[WARN] Unsupported opt arg: $3\\n"}"
-    tput sgr0
-}
-#
-# END of colored notification wrapper
-##############################################################################
-
 ##############################################################################
 # BEGIN of variables to customize
 #
@@ -132,10 +123,6 @@ CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x
 REPO_ROOT_PATH=$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")
 DEPLOY_DIR=$(cd "${REPO_ROOT_PATH}/mcp/scripts"; pwd)
 STORAGE_DIR=$(cd "${REPO_ROOT_PATH}/mcp/deploy/images"; pwd)
-RECLASS_CLUSTER_DIR=$(cd "${REPO_ROOT_PATH}/mcp/reclass/classes/cluster"; pwd)
-DEPLOY_TYPE='baremetal'
-BR_NAMES=('admin' 'mgmt' 'private' 'public')
-OPNFV_BRIDGES=('pxebr' 'mgmt' 'internal' 'public')
 URI_REGEXP='(file|https?|ftp)://.*'
 BASE_CONFIG_URI="file://${REPO_ROOT_PATH}/mcp/scripts/pharos"
 
@@ -146,9 +133,11 @@ USE_EXISTING_INFRA=${USE_EXISTING_INFRA:-0}
 INFRA_CREATION_ONLY=${INFRA_CREATION_ONLY:-0}
 NO_DEPLOY_ENVIRONMENT=${NO_DEPLOY_ENVIRONMENT:-0}
 ERASE_ENV=${ERASE_ENV:-0}
+MCP_VCP=${MCP_VCP:-1}
 
 source "${DEPLOY_DIR}/globals.sh"
 source "${DEPLOY_DIR}/lib.sh"
+source "${DEPLOY_DIR}/lib_template.sh"
 
 #
 # END of variables to customize
@@ -158,13 +147,13 @@ source "${DEPLOY_DIR}/lib.sh"
 # BEGIN of main
 #
 set +x
-while getopts "b:dDfEFl:L:p:Ps:S:he" OPTION
+while getopts "b:dDfEFl:L:Np:Ps:S:he" OPTION
 do
     case $OPTION in
         b)
             BASE_CONFIG_URI=${OPTARG}
             if [[ ! $BASE_CONFIG_URI =~ ${URI_REGEXP} ]]; then
-                notify "[ERROR] -b $BASE_CONFIG_URI - invalid URI\n"
+                notify "[ERROR] -b $BASE_CONFIG_URI - invalid URI"
                 usage
                 exit 1
             fi
@@ -193,10 +182,15 @@ do
         L)
             DEPLOY_LOG="${OPTARG}"
             ;;
+        N)
+            MCP_VCP=0
+            ;;
         p)
             TARGET_POD=${OPTARG}
-            if [[ "${TARGET_POD}" =~ "virtual" ]]; then
-                DEPLOY_TYPE='virtual'
+            if [[ "${TARGET_POD}" =~ virtual ]]; then
+                # All vPODs will use 'local-virtual1' PDF/IDF for now
+                TARGET_LAB='local'
+                TARGET_POD='virtual1'
             fi
             ;;
         P)
@@ -215,23 +209,20 @@ do
             exit 0
             ;;
         *)
-            notify "[ERROR] Arguments not according to new argument style\n"
-            exit 1
+            notify_e "[ERROR] Unsupported arg, see -h for help"
             ;;
     esac
 done
 
 if [[ "$(sudo whoami)" != 'root' ]]; then
-    notify "[ERROR] This script requires sudo rights\n" 1>&2
-    exit 1
+    notify_e "[ERROR] This script requires sudo rights"
 fi
 
 # Validate mandatory arguments are set
 if [ -z "${TARGET_LAB}" ] || [ -z "${TARGET_POD}" ] || \
    [ -z "${DEPLOY_SCENARIO}" ]; then
-    notify "[ERROR] At least one of the mandatory args is missing!\n" 1>&2
     usage
-    exit 1
+    notify_e "[ERROR] At least one of the mandatory args is missing!"
 fi
 
 [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x
@@ -248,26 +239,14 @@ pushd "${DEPLOY_DIR}" > /dev/null
 
 # Install required packages on jump server
 if [ ${USE_EXISTING_PKGS} -eq 1 ]; then
-    notify "[NOTE] Skipping distro pkg installation\n" 2 1>&2
+    notify "[NOTE] Skipping distro pkg installation2
 else
-    notify "[NOTE] Installing required distro pkgs\n" 2 1>&2
-    if [ -n "$(command -v apt-get)" ]; then
-      pkg_type='deb'; pkg_cmd='sudo apt-get install -y'
-    else
-      pkg_type='rpm'; pkg_cmd='sudo yum install -y --skip-broken'
-    fi
-    eval "$(parse_yaml "./requirements_${pkg_type}.yaml")"
-    for section in 'common' "${DEPLOY_TYPE}" "$(uname -m)"; do
-      section_var="requirements_pkg_${section}[*]"
-      pkg_list+=" ${!section_var}"
-    done
-    # shellcheck disable=SC2086
-    ${pkg_cmd} ${pkg_list}
+    notify "[NOTE] Installing required distro pkgs" 2
+    jumpserver_pkg_install
 fi
 
 if ! virsh list >/dev/null 2>&1; then
-    notify "[ERROR] This script requires hypervisor access\n" 1>&2
-    exit 1
+    notify_e "[ERROR] This script requires hypervisor access"
 fi
 
 # Collect jump server system information for deploy debugging
@@ -276,116 +255,41 @@ fi
 # Clone git submodules and apply our patches
 make -C "${REPO_ROOT_PATH}/mcp/patches" deepclean patches-import
 
-# Convert Pharos-compatible POD Descriptor File (PDF) to reclass model input
-PHAROS_GEN_CONFIG_SCRIPT="./pharos/config/utils/generate_config.py"
-PHAROS_INSTALLER_ADAPTER="./pharos/config/installers/fuel/pod_config.yml.j2"
-BASE_CONFIG_PDF="${BASE_CONFIG_URI}/labs/${TARGET_LAB}/${TARGET_POD}.yaml"
-BASE_CONFIG_IDF="${BASE_CONFIG_URI}/labs/${TARGET_LAB}/idf-${TARGET_POD}.yaml"
-LOCAL_PDF="${STORAGE_DIR}/$(basename "${BASE_CONFIG_PDF}")"
-LOCAL_IDF="${STORAGE_DIR}/$(basename "${BASE_CONFIG_IDF}")"
-LOCAL_PDF_RECLASS="${STORAGE_DIR}/pod_config.yml"
-if ! curl --create-dirs -o "${LOCAL_PDF}" "${BASE_CONFIG_PDF}"; then
-    if [ "${DEPLOY_TYPE}" = 'baremetal' ]; then
-        notify "[ERROR] Could not retrieve PDF (Pod Descriptor File)!\n" 1>&2
-        exit 1
-    else
-        notify "[WARN] Could not retrieve PDF (Pod Descriptor File)!\n" 3
-    fi
-elif ! curl -o "${LOCAL_IDF}" "${BASE_CONFIG_IDF}"; then
-    notify "[WARN] POD has no IDF (Installer Descriptor File)!\n" 3
-elif ! "${PHAROS_GEN_CONFIG_SCRIPT}" -y "${LOCAL_PDF}" \
-    -j "${PHAROS_INSTALLER_ADAPTER}" > "${LOCAL_PDF_RECLASS}"; then
-    notify "[ERROR] Could not convert PDF to reclass model input!\n" 1>&2
-    exit 1
-fi
-
 # Check scenario file existence
-SCENARIO_DIR="../config/scenario"
-if [ ! -f  "${SCENARIO_DIR}/${DEPLOY_TYPE}/${DEPLOY_SCENARIO}.yaml" ]; then
-    notify "[ERROR] Scenario definition file is missing!\n" 1>&2
-    exit 1
+SCENARIO_DIR="$(readlink -f "../config/scenario")"
+if [ ! -f "${SCENARIO_DIR}/${DEPLOY_SCENARIO}.yaml" ] && \
+   [ ! -f "${SCENARIO_DIR}/${DEPLOY_SCENARIO}.yaml.j2" ]; then
+    notify_e "[ERROR] Scenario definition file is missing!"
 fi
 
-# Check defaults file existence
-if [ ! -f  "${SCENARIO_DIR}/defaults-$(uname -i).yaml" ]; then
-    notify "[ERROR] Scenario defaults file is missing!\n" 1>&2
-    exit 1
-fi
+# key might not exist yet ...
+generate_ssh_key
+export MAAS_SSH_KEY="$(cat "$(basename "${SSH_KEY}").pub")"
 
-# Get required infra deployment data
-set +x
-eval "$(parse_yaml "${SCENARIO_DIR}/defaults-$(uname -i).yaml")"
-eval "$(parse_yaml "${SCENARIO_DIR}/${DEPLOY_TYPE}/${DEPLOY_SCENARIO}.yaml")"
-eval "$(parse_yaml "${LOCAL_PDF_RECLASS}")"
-[[ "${CI_DEBUG}" =~ (false|0) ]] || set -x
-
-export CLUSTER_DOMAIN=${cluster_domain}
-
-# Serialize vnode data as '<name0>,<ram0>,<vcpu0>|<name1>,<ram1>,<vcpu1>[...]'
-for node in "${virtual_nodes[@]}"; do
-    virtual_custom_ram="virtual_${node}_ram"
-    virtual_custom_vcpus="virtual_${node}_vcpus"
-    virtual_nodes_data+="${node},"
-    virtual_nodes_data+="${!virtual_custom_ram:-$virtual_default_ram},"
-    virtual_nodes_data+="${!virtual_custom_vcpus:-$virtual_default_vcpus}|"
-done
-virtual_nodes_data=${virtual_nodes_data%|}
-
-# Serialize repos, packages to (pre-)install/remove for:
-# - foundation node VM base image (virtual: all VMs, baremetal: cfg01|mas01)
-# - virtualized control plane VM base image (only when VCP is used)
-base_image_flavors=common
-if [[ "${cluster_states[*]}" =~ virtual_control ]]; then
-  base_image_flavors+=" control"
-fi
-for sc in ${base_image_flavors}; do
-  for va in apt_keys apt_repos pkg_install pkg_remove; do
-    key=virtual_${sc}_${va}
-    eval "${key}=\${${key}[@]// /|}"
-    eval "${key}=\${${key}// /,}"
-    virtual_repos_pkgs+="${!key}^"
-  done
-done
-virtual_repos_pkgs=${virtual_repos_pkgs%^}
-
-# Expand reclass and virsh network templates
-for tp in "${RECLASS_CLUSTER_DIR}/all-mcp-arch-common/opnfv/"*.template \
-    net_*.template; do
-        eval "cat <<-EOF
-               $(<"${tp}")
-               EOF" 2> /dev/null > "${tp%.template}"
-done
+# Expand jinja2 templates based on PDF data and env vars
+export MCP_VCP MCP_JUMP_ARCH=$(uname -i)
+do_templates_scenario "${STORAGE_DIR}" "${TARGET_LAB}" "${TARGET_POD}" \
+                      "${BASE_CONFIG_URI}" "${SCENARIO_DIR}"
+do_templates_cluster  "${STORAGE_DIR}" "${TARGET_LAB}" "${TARGET_POD}" \
+                      "${REPO_ROOT_PATH}" \
+                      "${SCENARIO_DIR}/defaults.yaml" \
+                      "${SCENARIO_DIR}/${DEPLOY_SCENARIO}.yaml"
 
-# Convert Pharos-compatible PDF to reclass network definitions
-if [ "${DEPLOY_TYPE}" = 'baremetal' ]; then
-    find "${RECLASS_CLUSTER_DIR}" -name '*.j2' | while read -r tp
-    do
-        if ! "${PHAROS_GEN_CONFIG_SCRIPT}" -y "${LOCAL_PDF}" \
-          -j "${tp}" > "${tp%.j2}"; then
-             notify "[ERROR] Could not convert PDF to reclass network defs!\n"
-             exit 1
-        fi
-    done
-fi
+# Determine additional data (e.g. jump bridge names) based on XDF
+source "${DEPLOY_DIR}/xdf_data.sh"
 
-# Determine 'admin', 'mgmt', 'private' and 'public' bridge names based on IDF
-for ((i = 0; i < ${#BR_NAMES[@]}; i++)); do
-    br_jump=$(eval echo "\$parameters__param_opnfv_jump_bridge_${BR_NAMES[i]}")
-    if [ -n "${br_jump}" ] && [ "${br_jump}" != 'None' ]; then
-        OPNFV_BRIDGES[${i}]="${br_jump}"
-    fi
-done
-notify "[NOTE] Using bridges: ${OPNFV_BRIDGES[*]}\n" 2
+# Jumpserver prerequisites check
+notify "[NOTE] Using bridges: ${OPNFV_BRIDGES[*]}" 2
+jumpserver_check_requirements "${virtual_nodes[*]}" "${OPNFV_BRIDGES[@]}"
 
 # Infra setup
 if [ ${DRY_RUN} -eq 1 ]; then
-    notify "[NOTE] Dry run, skipping all deployment tasks\n" 2 1>&2
+    notify "[NOTE] Dry run, skipping all deployment tasks2
     exit 0
 elif [ ${USE_EXISTING_INFRA} -gt 0 ]; then
-    notify "[NOTE] Use existing infra\n" 2 1>&2
+    notify "[NOTE] Use existing infra2
     check_connection
 else
-    generate_ssh_key
     prepare_vms "${base_image}" "${STORAGE_DIR}" "${virtual_repos_pkgs}" \
       "${virtual_nodes[@]}"
     create_networks "${OPNFV_BRIDGES[@]}"
@@ -396,16 +300,16 @@ else
     check_connection
 fi
 if [ ${USE_EXISTING_INFRA} -lt 2 ]; then
-    wait_for 5 "./salt.sh ${LOCAL_PDF_RECLASS}"
+    wait_for 5 "./salt.sh ${STORAGE_DIR}/pod_config.yml ${virtual_nodes[*]}"
 fi
 
 # Openstack cluster setup
 set +x
 if [ ${INFRA_CREATION_ONLY} -eq 1 ] || [ ${NO_DEPLOY_ENVIRONMENT} -eq 1 ]; then
-    notify "[NOTE] Skip openstack cluster setup\n" 2
+    notify "[NOTE] Skip openstack cluster setup" 2
 else
     for state in "${cluster_states[@]}"; do
-        notify "[STATE] Applying state: ${state}\n" 2
+        notify "[STATE] Applying state: ${state}" 2
         # shellcheck disable=SC2086,2029
         wait_for 5 "ssh ${SSH_OPTS} ${SSH_SALT} sudo \
             CI_DEBUG=$CI_DEBUG ERASE_ENV=$ERASE_ENV \
index 6c0bf4c..acf4aac 100644 (file)
@@ -6,7 +6,7 @@
 Abstract
 ========
 
-This document describes how to install the Euphrates release of
+This document describes how to install the Fraser release of
 OPNFV when using Fuel as a deployment tool, covering its usage,
 limitations, dependencies and required system resources.
 This is an unified documentation for both x86_64 and aarch64
@@ -18,14 +18,14 @@ Introduction
 ============
 
 This document provides guidelines on how to install and
-configure the Euphrates release of OPNFV when using Fuel as a
+configure the Fraser release of OPNFV when using Fuel as a
 deployment tool, including required software and hardware configurations.
 
 Although the available installation options provide a high degree of
 freedom in how the system is set up, including architecture, services
 and features, etc., said permutations may not provide an OPNFV
 compliant reference architecture. This document provides a
-step-by-step guide that results in an OPNFV Euphrates compliant
+step-by-step guide that results in an OPNFV Fraser compliant
 deployment.
 
 The audience of this document is assumed to have good knowledge of
@@ -35,7 +35,7 @@ networking and Unix/Linux administration.
 Preface
 =======
 
-Before starting the installation of the Euphrates release of
+Before starting the installation of the Fraser release of
 OPNFV, using Fuel as a deployment tool, some planning must be
 done.
 
@@ -69,7 +69,7 @@ Hardware Requirements for Virtual Deploys
 =========================================
 
 The following minimum hardware requirements must be met for the virtual
-installation of Euphrates using Fuel:
+installation of Fraser using Fuel:
 
 +----------------------------+--------------------------------------------------------+
 | **HW Aspect**              | **Requirement**                                        |
@@ -83,7 +83,7 @@ installation of Euphrates using Fuel:
 +----------------------------+--------------------------------------------------------+
 | **RAM**                    | Minimum 32GB/server (Depending on VNF work load)       |
 +----------------------------+--------------------------------------------------------+
-| **Disk**                   | Minimum 100GB (SSD or SCSI (15krpm) highly recommended |
+| **Disk**                   | Minimum 100GB (SSD or SCSI (15krpm) highly recommended)|
 +----------------------------+--------------------------------------------------------+
 
 
@@ -92,7 +92,7 @@ Hardware Requirements for Baremetal Deploys
 ===========================================
 
 The following minimum hardware requirements must be met for the baremetal
-installation of Euphrates using Fuel:
+installation of Fraser using Fuel:
 
 +-------------------------+------------------------------------------------------+
 | **HW Aspect**           | **Requirement**                                      |
@@ -173,7 +173,7 @@ the Fuel OPNFV reference platform. All the networks involved in the OPNFV
 infrastructure as well as the provider networks and the private tenant
 VLANs needs to be manually configured.
 
-Manual configuration of the Euphrates hardware platform should
+Manual configuration of the Fraser hardware platform should
 be carried out according to the `OPNFV Pharos Specification
 <https://wiki.opnfv.org/display/pharos/Pharos+Specification>`_.
 
@@ -185,10 +185,10 @@ The Jumpserver node should be pre-provisioned with an operating system,
 according to the Pharos specification. Relevant network bridges should
 also be pre-configured (e.g. admin_br, mgmt_br, public_br).
 
-   - The admin bridge (admin_br) is mandatory for the baremetal nodes PXE booting during fuel installation.
-   - The management bridge (mgmt_br) is required for testing suites (e.g. functest/yardstick), it is
-     suggested to pre-configure it for debugging purposes.
-   - The public bridge (public_br) is also nice to have for debugging purposes, but not mandatory.
+- The admin bridge (admin_br) is mandatory for the baremetal nodes PXE booting during Fuel installation.
+- The management bridge (mgmt_br) is required for testing suites (e.g. functest/yardstick), it is
+  suggested to pre-configure it for debugging purposes.
+- The public bridge (public_br) is also nice to have for debugging purposes, but not mandatory.
 
 The user running the deploy script on the Jumpserver should belong to "sudo" and "libvirt" groups,
 and have passwordless sudo access.
@@ -207,6 +207,13 @@ The following example adds the groups to the user "jenkins"
     ...
     %jenkins ALL=(ALL) NOPASSWD:ALL
 
+The folder containing the temporary deploy artifacts (/home/jenkins/tmpdir in the examples below)
+needs to have mask 777 in order for libvirt to be able to use them.
+
+.. code-block:: bash
+
+    $ mkdir -p -m 777 /home/jenkins/tmpdir
+
 For an AArch64 Jumpserver, the "libvirt" minimum required version is 3.x, 3.5 or newer highly recommended.
 While not mandatory, upgrading the kernel and QEMU on the Jumpserver is also highly recommended
 (especially on AArch64 Jumpservers).
@@ -229,15 +236,15 @@ create a new sources list file `/apt/sources.list.d/armband.list` with the follo
 Fuel@OPNFV has been validated by CI using the following distributions
 installed on the Jumpserver:
 
-   - CentOS 7 (recommended by Pharos specification);
-   - Ubuntu Xenial;
+- CentOS 7 (recommended by Pharos specification);
+- Ubuntu Xenial;
 
-**NOTE**: The install script expects 'libvirt' to be already running on the Jumpserver.In case libvirt
+**NOTE**: The install script expects 'libvirt' to be already running on the Jumpserver. In case libvirt
 packages are missing, the script will install them; but depending on the OS distribution, the user
 might have to start the 'libvirtd' service manually, then run the deploy script again. Therefore, it
-is recommened to install libvirt-bin explicitly on the Jumpserver before the deployment.
+is recommended to install libvirt-bin explicitly on the Jumpserver before the deployment.
 
-**NOTE**: It is also recommened to install the newer kernel on the Jumpserver before the deployment.
+**NOTE**: It is also recommended to install the newer kernel on the Jumpserver before the deployment.
 
 **NOTE**: The install script will automatically install the rest of required distro package
 dependencies on the Jumpserver, unless explicitly asked not to (via -P deploy arg). This includes
@@ -262,7 +269,7 @@ a reclass model. This model provides the formula inputs to Salt, to make the dep
 automatic based on deployment scenario.
 The reclass model covers:
 
-   - Infrastucture node definition: Salt Master node (cfg01) and MaaS node (mas01)
+   - Infrastructure node definition: Salt Master node (cfg01) and MaaS node (mas01)
    - OpenStack node definition: Controller nodes (ctl01, ctl02, ctl03) and Compute nodes (cmp001, cmp002)
    - Infrastructure components to install (software packages, services etc.)
    - OpenStack components and services (rabbitmq, galera etc.), as well as all configuration for them
@@ -302,17 +309,18 @@ In this figure there are examples of two virtual deploys:
    - Jumphost 2 has a mix of Linux and virsh bridges; When Linux bridge exists for a specified network,
      the deploy script will skip creating a virsh bridge for it
 
-**Note**: A virtual network "mcpcontrol" is always created. For virtual deploys, "mcpcontrol" is also
- used for Admin, leaving the PXE/Admin bridge unused.
+**Note**: A virtual network "mcpcontrol" is always created for initial connection
+of the VMs on Jumphost.
 
 
 Automatic Installation of a Baremetal POD
 =========================================
 
 The baremetal installation process can be done by editing the information about
-hardware and environment in the reclass files, or by using a Pod Descriptor File (PDF).
-This file contains all the information about the hardware and network of the deployment
-the will be fed to the reclass model during deployment.
+hardware and environment in the reclass files, or by using the files Pod Descriptor
+File (PDF) and Installer Descriptor File (IDF) as described in the OPNFV Pharos project.
+These files contain all the information about the hardware and network of the deployment
+that will be fed to the reclass model during deployment.
 
 The installation is done automatically with the deploy script, which will:
 
@@ -355,8 +363,8 @@ In the baremetal deploy all bridges but "mcpcontrol" are Linux bridges. For the
 required to pre-configure at least the admin_br bridge for the PXE/Admin.
 For the targets, the bridges are created by the deploy script.
 
-**Note**: A virtual network "mcpcontrol" is always created. For baremetal deploys, PXE bridge is used
-for baremetal node provisioning, while "mcpcontrol" is used to provision the infrastructure VMs only.
+**Note**: A virtual network "mcpcontrol" is always created for initial connection
+of the VMs on Jumphost.
 
 
 Steps to Start the Automatic Deploy
@@ -380,11 +388,11 @@ These steps are common both for virtual and baremetal deploys.
        $ git clone https://git.opnfv.org/armband
        $ cd armband
 
-#. Checkout the Euphrates release
+#. Checkout the Fraser release
 
    .. code-block:: bash
 
-       $ git checkout opnfv-5.0.2
+       $ git checkout opnfv-6.0.0
 
 #. Start the deploy script
 
@@ -416,15 +424,14 @@ Examples
 
       .. code-block:: bash
 
-         $ ci/deploy.sh -b file:///home/jenkins/tmpdir/securedlab \
-                        -l ericsson \
-                        -p virtual_kvm \
-                        -s os-nosdn-nofeature-noha \
-                        -D \
-                        -S /home/jenkins/tmpdir |& tee deploy.log
+          $ ci/deploy.sh -l ericsson \
+                         -p virtual3 \
+                         -s os-nosdn-nofeature-noha \
+                         -D \
+                         -S /home/jenkins/tmpdir |& tee deploy.log
 
-   Once the deployment is complete, the OpenStack Dashboard, Horizon is
-   available at http://<controller VIP>:8078, e.g. http://10.16.0.101:8078.
+   Once the deployment is complete, the OpenStack Dashboard, Horizon, is
+   available at http://<controller VIP>:8078
    The administrator credentials are **admin** / **opnfv_secret**.
 
 #. Baremetal deploy
@@ -433,8 +440,7 @@ Examples
 
       .. code-block:: bash
 
-          $ ci/deploy.sh -b file:///home/jenkins/tmpdir/securedlab \
-                         -l lf \
+          $ ci/deploy.sh -l lf \
                          -p pod2 \
                          -s os-nosdn-nofeature-ha \
                          -D \
@@ -446,15 +452,11 @@ Examples
 
          Fuel@OPNFV LF POD2 Network Layout
 
-   Once the deployment is complete, the SaltStack Deployment Documentation is
-   available at http://<Proxy VIP>:8090, e.g. http://172.30.10.103:8090.
-
    An aarch64 deploy on pod5 from Arm lab
 
       .. code-block:: bash
 
-          $ ci/deploy.sh -b file:///home/jenkins/tmpdir/securedlab \
-                         -l arm \
+          $ ci/deploy.sh -l arm \
                          -p pod5 \
                          -s os-nosdn-nofeature-ha \
                          -D \
@@ -466,24 +468,43 @@ Examples
 
          Fuel@OPNFV ARM POD5 Network Layout
 
-Pod Descriptor Files
-====================
+   Once the deployment is complete, the SaltStack Deployment Documentation is
+   available at http://<proxy public VIP>:8090
+
+**NOTE**: The deployment uses the OPNFV Pharos project as input (PDF and IDF files)
+for hardware and network configuration of all current OPNFV PODs.
+When deploying a new POD, one can pass the `-b` flag to the deploy script to override
+the path for the labconfig directory structure containing the PDF and IDF.
+
+   .. code-block:: bash
+
+       $ ci/deploy.sh -b file://<absolute_path_to_labconfig> \
+                      -l <lab_name> \
+                      -p <pod_name> \
+                      -s <scenario> \
+                      -D \
+                      -S <tmp_folder> |& tee deploy.log
+
+   - <absolute_path_to_labconfig> is the absolute path to a local directory, populated
+     similar to Pharos, i.e. PDF/IDF reside in <absolute_path_to_labconfig>/labs/<lab_name>
+   - <lab_name> is the same as the directory in the path above
+   - <pod_name> is the name used for the PDF (<pod_name>.yaml) and IDF (idf-<pod_name>.yaml) files
+
+
+
+Pod and Installer Descriptor Files
+==================================
 
 Descriptor files provide the installer with an abstraction of the target pod
 with all its hardware characteristics and required parameters. This information
 is split into two different files:
 Pod Descriptor File (PDF) and Installer Descriptor File (IDF).
 
-
-The Pod Descriptor File is a hardware and network description of the pod
+The Pod Descriptor File is a hardware description of the pod
 infrastructure. The information is modeled under a yaml structure.
 A reference file with the expected yaml structure is available at
 *mcp/config/labs/local/pod1.yaml*
 
-A common network section describes all the internal and provider networks
-assigned to the pod. Each network is expected to have a vlan tag, IP subnet and
-attached interface on the boards. Untagged vlans shall be defined as "native".
-
 The hardware description is arranged into a main "jumphost" node and a "nodes"
 set for all target boards. For each node the following characteristics
 are defined:
@@ -491,25 +512,57 @@ are defined:
 - Node parameters including CPU features and total memory.
 - A list of available disks.
 - Remote management parameters.
-- Network interfaces list including mac address, speed and advanced features.
-- IP list of fixed IPs for the node
-
-**Note**: the fixed IPs are ignored by the MCP installer script and it will instead
-assign based on the network ranges defined under the pod network configuration.
+- Network interfaces list including mac address, speed, advanced features and name.
 
+**Note**: The fixed IPs are ignored by the MCP installer script and it will instead
+assign based on the network ranges defined in IDF.
 
 The Installer Descriptor File extends the PDF with pod related parameters
 required by the installer. This information may differ per each installer type
-and it is not considered part of the pod infrastructure. Fuel installer relies
-on the IDF model to map the networks to the bridges on the foundation node and
-to setup all node NICs by defining the expected OS device name and bus address.
+and it is not considered part of the pod infrastructure.
+The IDF file must be named after the PDF with the prefix "idf-". A reference file with the expected
+structure is available at *mcp/config/labs/local/idf-pod1.yaml*
 
+The file follows a yaml structure and two sections "net_config" and "fuel" are expected.
 
-The file follows a yaml structure and a "fuel" section is expected. Contents and
-references must be aligned with the PDF file. The IDF file must be named after
-the PDF with the prefix "idf-". A reference file with the expected structure
-is available at *mcp/config/labs/local/idf-pod1.yaml*
+The "net_config" section describes all the internal and provider networks
+assigned to the pod. Each used network is expected to have a vlan tag, IP subnet and
+attached interface on the boards. Untagged vlans shall be defined as "native".
 
+The "fuel" section defines several sub-sections required by the Fuel installer:
+
+- jumphost: List of bridge names for each network on the Jumpserver.
+- network: List of device name and bus address info of all the target nodes.
+  The order must be aligned with the order defined in PDF file. Fuel installer relies on the IDF model
+  to setup all node NICs by defining the expected device name and bus address.
+- maas: Defines the target nodes commission timeout and deploy timeout. (optional)
+- reclass: Defines compute parameter tuning, including huge pages, cpu pinning
+  and other DPDK settings. (optional)
+
+The following parameters can be defined in the IDF files under "reclass". Those value will
+overwrite the default configuration values in Fuel repository:
+
+- nova_cpu_pinning: List of CPU cores nova will be pinned to. Currently disabled.
+- compute_hugepages_size: Size of each persistent huge pages. Usual values are '2M' and '1G'.
+- compute_hugepages_count: Total number of persistent huge pages.
+- compute_hugepages_mount: Mount point to use for huge pages.
+- compute_kernel_isolcpu: List of certain CPU cores that are isolated from Linux scheduler.
+- compute_dpdk_driver: Kernel module to provide userspace I/O support.
+- compute_ovs_pmd_cpu_mask: Hexadecimal mask of CPUs to run DPDK Poll-mode drivers.
+- compute_ovs_dpdk_socket_mem: Set of amount huge pages in MB to be used by OVS-DPDK daemon
+  taken for each NUMA node. Set size is equal to NUMA nodes count, elements are divided by comma.
+- compute_ovs_dpdk_lcore_mask: Hexadecimal mask of DPDK lcore parameter used to run DPDK processes.
+- compute_ovs_memory_channels: Number of memory channels to be used.
+- dpdk0_driver: NIC driver to use for physical network interface.
+- dpdk0_n_rxq: Number of RX queues.
+
+
+The full description of the PDF and IDF file structure are available as yaml schemas.
+The schemas are defined as a git submodule in Fuel repository. Input files provided
+to the installer will be validated against the schemas.
+
+- *mcp/scripts/pharos/config/pdf/pod1.schema.yaml*
+- *mcp/scripts/pharos/config/pdf/idf-pod1.schema.yaml*
 
 =============
 Release Notes
@@ -529,7 +582,7 @@ OPNFV
 
 OpenStack
 
-4) `OpenStack Ocata Release Artifacts <http://www.openstack.org/software/ocata>`_
+4) `OpenStack Pike Release Artifacts <http://www.openstack.org/software/pike>`_
 5) `OpenStack Documentation <http://docs.openstack.org>`_
 
 OpenDaylight
index 0052ab6..5ee3bc0 100644 (file)
@@ -6,7 +6,7 @@
 Abstract
 ========
 
-This document compiles the release notes for the Euphrates release of
+This document compiles the release notes for the Fraser release of
 OPNFV when using Fuel as a deployment tool. This is an unified documentation
 for both x86_64 and aarch64 architectures. All information is common for
 both architectures except when explicitly stated.
@@ -17,9 +17,9 @@ Important Notes
 ===============
 
 These notes provides release information for the use of Fuel as deployment
-tool for the Euphrates release of OPNFV.
+tool for the Fraser release of OPNFV.
 
-The goal of the Euphrates release and this Fuel-based deployment process is
+The goal of the Fraser release and this Fuel-based deployment process is
 to establish a lab ready platform accelerating further development
 of the OPNFV infrastructure.
 
@@ -29,7 +29,7 @@ Carefully follow the installation-instructions.
 Summary
 =======
 
-For Euphrates, the typical use of Fuel as an OpenStack installer is
+For Fraser, the typical use of Fuel as an OpenStack installer is
 supplemented with OPNFV unique components such as:
 
 - `OpenDaylight <http://www.opendaylight.org/software>`_
@@ -37,7 +37,7 @@ supplemented with OPNFV unique components such as:
 
 As well as OPNFV-unique configurations of the Hardware and Software stack.
 
-This Euphrates artifact provides Fuel as the deployment stage tool in the
+This Fraser artifact provides Fuel as the deployment stage tool in the
 OPNFV CI pipeline including:
 
 - Documentation built by Jenkins
@@ -48,10 +48,10 @@ OPNFV CI pipeline including:
 
   - installation instructions
 
-- Automated deployment of Euphrates with running on bare metal or a nested
+- Automated deployment of Fraser with running on baremetal or a nested
   hypervisor environment (KVM)
 
-- Automated validation of the Euphrates deployment
+- Automated validation of the Fraser deployment
 
 ============
 Release Data
@@ -61,22 +61,23 @@ Release Data
 | **Project**                          | fuel/armband                         |
 |                                      |                                      |
 +--------------------------------------+--------------------------------------+
-| **Repo/tag**                         | opnfv-5.1.0                          |
+| **Repo/tag**                         | opnfv-6.0.0                          |
 |                                      |                                      |
 +--------------------------------------+--------------------------------------+
-| **Release designation**              | Euphrates 5.1                        |
+| **Release designation**              | Fraser 6.0                           |
 |                                      |                                      |
 +--------------------------------------+--------------------------------------+
-| **Release date**                     | December 15 2017                     |
+| **Release date**                     | April 27 2018                        |
 |                                      |                                      |
 +--------------------------------------+--------------------------------------+
-| **Purpose of the delivery**          | Euphrates alignment to Released      |
-|                                      | MCP 1.0 baseline + features and      |
+| **Purpose of the delivery**          | Fraser alignment to Released         |
+|                                      | MCP baseline + features and          |
 |                                      | bug-fixes for the following          |
 |                                      | feaures:                             |
 |                                      |                                      |
 |                                      | - Open vSwitch for NFV               |
 |                                      | - OpenDaylight                       |
+|                                      | - DPDK                               |
 +--------------------------------------+--------------------------------------+
 
 Version Change
@@ -84,25 +85,25 @@ Version Change
 
 Module Version Changes
 ----------------------
-This is the Euphrates 5.1 release.
+This is the Fraser 6.0 release.
 It is based on following upstream versions:
 
-- MCP 1.0 Base Release
+- MCP Base Release
 
-- OpenStack Ocata Release
+- OpenStack Pike Release
 
-- OpenDaylight
+- OpenDaylight Oxygen Release
 
 Document Changes
 ----------------
-This is the Euphrates 5.1 release.
+This is the Fraser 6.0 release.
 It comes with the following documentation:
 
-- `Installation instructions <http://docs.opnfv.org/en/stable-euphrates/submodules/armband/docs/release/installation/installation.instruction.html>`_
+- :ref:`fuel-release-installation-label`
 
 - Release notes (This document)
 
-- `User guide <http://docs.opnfv.org/en/stable-euphrates/submodules/fuel/docs/release/userguide/userguide.html>`_
+- :ref:`fuel-release-userguide-label`
 
 Reason for Version
 ==================
@@ -111,14 +112,14 @@ Feature Additions
 -----------------
 
 **JIRA TICKETS:**
-`Euphrates 5.1 new features  <https://jira.opnfv.org/issues/?filter=12114>`_
+`Fraser 6.0 new features  <https://jira.opnfv.org/issues/?filter=12302>`_
 
 Bug Corrections
 ---------------
 
 **JIRA TICKETS:**
 
-`Euphrates 5.1 bug fixes  <https://jira.opnfv.org/issues/?filter=12115>`_
+`Fraser 6.0 bug fixes  <https://jira.opnfv.org/issues/?filter=12303>`_
 
 (Also See respective Integrated feature project's bug tracking)
 
@@ -135,12 +136,11 @@ Software Deliverables
 Documentation Deliverables
 --------------------------
 
-- `Installation instructions <http://docs.opnfv.org/en/stable-euphrates/submodules/armband/docs/release/installation/installation.instruction.html>`_
+- :ref:`fuel-release-installation-label`
 
 - Release notes (This document)
 
-- `User guide <http://docs.opnfv.org/en/stable-euphrates/submodules/fuel/docs/release/userguide/userguide.html>`_
-
+- :ref:`fuel-release-userguide-label`
 
 =========================================
 Known Limitations, Issues and Workarounds
@@ -163,7 +163,7 @@ Known Issues
 
 **JIRA TICKETS:**
 
-`Known issues <https://jira.opnfv.org/issues/?filter=12116>`_
+`Known issues <https://jira.opnfv.org/issues/?filter=12304>`_
 
 (Also See respective Integrated feature project's bug tracking)
 
@@ -179,13 +179,13 @@ Workarounds
 ============
 Test Results
 ============
-The Euphrates 5.1 release with the Fuel deployment tool has undergone QA test
+The Fraser 6.0 release with the Fuel deployment tool has undergone QA test
 runs, see separate test results.
 
 ==========
 References
 ==========
-For more information on the OPNFV Euphrates 5.1 release, please see:
+For more information on the OPNFV Fraser 6.0 release, please see:
 
 OPNFV
 =====
@@ -197,7 +197,7 @@ OPNFV
 OpenStack
 =========
 
-4) `OpenStack Ocata Release Artifacts <http://www.openstack.org/software/ocata>`_
+4) `OpenStack Pike Release Artifacts <http://www.openstack.org/software/pike>`_
 
 5) `OpenStack Documentation <http://docs.openstack.org>`_
 
index 5e30ab5..c51a5f5 100644 (file)
@@ -2,14 +2,14 @@
 .. http://creativecommons.org/licenses/by/4.0
 .. (c)2017 Mirantis Inc., Enea Software AB and others
 
-This document provides scenario level details for Euphrates 5.0 of
+This document provides scenario level details for Fraser 6.0 of
 deployment with no SDN controller and no extra features enabled.
 
 ============
 Introduction
 ============
 
-This scenario is used primarily to validate and deploy a Ocata OpenStack
+This scenario is used primarily to validate and deploy a Pike OpenStack
 deployment without any NFV features or SDN controller enabled.
 
 Scenario components and composition
@@ -38,5 +38,5 @@ None
 References
 ==========
 
-For more information on the OPNFV Euphrates release, please visit
-http://www.opnfv.org/euphrates
+For more information on the OPNFV Fraser release, please visit
+http://www.opnfv.org/software
index 7ac4e11..99c4de0 100644 (file)
@@ -2,14 +2,14 @@
 .. http://creativecommons.org/licenses/by/4.0
 .. (c) 2017 Mirantis Inc., Enea Software AB and others
 
-This document provides scenario level details for Euphrates 5.0 of
+This document provides scenario level details for Fraser 6.0 of
 deployment with no SDN controller and no extra features enabled.
 
 ============
 Introduction
 ============
 
-This scenario is used primarily to validate and deploy a Ocata OpenStack
+This scenario is used primarily to validate and deploy a Pike OpenStack
 deployment without any NFV features or SDN controller enabled.
 
 
@@ -24,7 +24,7 @@ the DPDK-enabled Open vSwitch component.
 Scenario usage overview
 =======================
 
-Simply deploy this scenario by using the os-nosdn-ovs-ha.yaml deploy
+Simply deploy this scenario by using the os-nosdn-ovs-noha.yaml deploy
 settings file.
 
 
@@ -36,6 +36,5 @@ Tested on virtual deploy only.
 References
 ==========
 
-For more information on the OPNFV Euphrates release, please visit
-http://www.opnfv.org/euphrates
-
+For more information on the OPNFV Fraser release, please visit
+http://www.opnfv.org/software
index 2b46a84..fd9dfa7 100644 (file)
@@ -6,9 +6,9 @@
 Abstract
 ========
 
-This document contains details about how to use OPNFV Fuel - Euphrates
+This document contains details about how to use OPNFV Fuel - Fraser
 release - after it was deployed. For details on how to deploy check the
-installation instructions in the :ref:`references` section.
+installation instructions in the :ref:`fuel_userguide_references` section.
 
 This is an unified documentation for both x86_64 and aarch64
 architectures. All information is common for both architectures
@@ -22,26 +22,25 @@ Network Overview
 
 Fuel uses several networks to deploy and administer the cloud:
 
-+------------------+-------------------+---------------------------------------------------------+
-| Network name     | Deploy Type       | Description                                             |
-|                  |                   |                                                         |
-+==================+===================+=========================================================+
-| **PXE/ADMIN**    | baremetal only    | Used for booting the nodes via PXE                      |
-+------------------+-------------------+---------------------------------------------------------+
-| **MCPCONTROL**   | baremetal &       | Used to provision the infrastructure VMs (Salt & MaaS). |
-|                  | virtual           | On virtual deploys, it is used for Admin too (on target |
-|                  |                   | VMs) leaving the PXE/Admin bridge unused                |
-+------------------+-------------------+---------------------------------------------------------+
-| **Mgmt**         | baremetal &       | Used for internal communication between                 |
-|                  | virtual           | OpenStack components                                    |
-+------------------+-------------------+---------------------------------------------------------+
-| **Internal**     | baremetal &       | Used for VM data communication within the               |
-|                  | virtual           | cloud deployment                                        |
-+------------------+-------------------+---------------------------------------------------------+
-| **Public**       | baremetal &       | Used to provide Virtual IPs for public endpoints        |
-|                  | virtual           | that are used to connect to OpenStack services APIs.    |
-|                  |                   | Used by Virtual machines to access the Internet         |
-+------------------+-------------------+---------------------------------------------------------+
++------------------+---------------------------------------------------------+
+| Network name     | Description                                             |
+|                  |                                                         |
++==================+=========================================================+
+| **PXE/ADMIN**    | Used for booting the nodes via PXE and/or Salt          |
+|                  | control network                                         |
++------------------+---------------------------------------------------------+
+| **MCPCONTROL**   | Used to provision the infrastructure VMs (Salt & MaaS)  |
++------------------+---------------------------------------------------------+
+| **Mgmt**         | Used for internal communication between                 |
+|                  | OpenStack components                                    |
++------------------+---------------------------------------------------------+
+| **Internal**     | Used for VM data communication within the               |
+|                  | cloud deployment                                        |
++------------------+---------------------------------------------------------+
+| **Public**       | Used to provide Virtual IPs for public endpoints        |
+|                  | that are used to connect to OpenStack services APIs.    |
+|                  | Used by Virtual machines to access the Internet         |
++------------------+---------------------------------------------------------+
 
 
 These networks - except mcpcontrol - can be linux bridges configured before the deploy on the
@@ -60,27 +59,21 @@ Accessing the Cloud
 Access to any component of the deployed cloud is done from Jumpserver to user *ubuntu* with
 ssh key */var/lib/opnfv/mcp.rsa*. The example below is a connection to Salt master.
 
-   .. code-block:: bash
+    .. code-block:: bash
 
-       $ ssh -o StrictHostKeyChecking=no -i  /var/lib/opnfv/mcp.rsa  -l ubuntu 10.20.0.2
+        $ ssh -o StrictHostKeyChecking=no -i  /var/lib/opnfv/mcp.rsa  -l ubuntu 10.20.0.2
 
 **Note**: The Salt master IP is not hard set, it is configurable via INSTALLER_IP during deployment
 
+Logging in to cluster nodes is possible from the Jumpserver and from Salt master. On the Salt master
+cluster hostnames can be used instead of IP addresses:
 
-The Fuel baremetal deploy has a Virtualized Control Plane (VCP) which means that the controller
-services are installed in VMs on the baremetal targets (kvm servers). These VMs can also be
-accessed with virsh console: user *opnfv*, password *opnfv_secret*. This method does not apply
-to infrastructure VMs (Salt master and MaaS).
+    .. code-block:: bash
 
-The example below is a connection to a controller VM. The connection is made from the baremetal
-server kvm01.
+        $ sudo -i
+        $ ssh -i mcp.rsa ubuntu@ctl01
 
-   .. code-block:: bash
-
-       $ ssh -o StrictHostKeyChecking=no -i  /var/lib/opnfv/mcp.rsa  -l ubuntu x.y.z.141
-       ubuntu@kvm01:~$ virsh console ctl01
-
-User *ubuntu* has sudo rights. User *opnfv* has sudo rights only on aarch64 deploys.
+User *ubuntu* has sudo rights.
 
 
 =============================
@@ -96,34 +89,34 @@ For example tell salt to execute a ping to 8.8.8.8 on all the nodes.
 .. figure:: img/saltstack.png
 
 Complex filters can be done to the target like compound queries or node roles.
-For more information about Salt see the :ref:`references` section.
+For more information about Salt see the :ref:`fuel_userguide_references` section.
 
 Some examples are listed below. Note that these commands are issued from Salt master
-with *root* user.
+as *root* user.
 
 
 #. View the IPs of all the components
 
-   .. code-block:: bash
+    .. code-block:: bash
 
-       root@cfg01:~$ salt "*" network.ip_addrs
-       cfg01.baremetal-mcp-ocata-odl-ha.local:
+        root@cfg01:~$ salt "*" network.ip_addrs
+        cfg01.mcp-pike-odl-ha.local:
            - 10.20.0.2
            - 172.16.10.100
-       mas01.baremetal-mcp-ocata-odl-ha.local:
+        mas01.mcp-pike-odl-ha.local:
            - 10.20.0.3
            - 172.16.10.3
            - 192.168.11.3
-       .........................
+        .........................
 
 
 #. View the interfaces of all the components and put the output in a file with yaml format
 
-   .. code-block:: bash
+    .. code-block:: bash
 
-       root@cfg01:~$ salt "*" network.interfaces --out yaml --output-file interfaces.yaml
-       root@cfg01:~# cat interfaces.yaml
-       cfg01.baremetal-mcp-ocata-odl-ha.local:
+        root@cfg01:~$ salt "*" network.interfaces --out yaml --output-file interfaces.yaml
+        root@cfg01:~# cat interfaces.yaml
+        cfg01.mcp-pike-odl-ha.local:
          enp1s0:
            hwaddr: 52:54:00:72:77:12
            inet:
@@ -136,77 +129,77 @@ with *root* user.
              prefixlen: '64'
              scope: link
            up: true
-       .........................
+        .........................
 
 
 #. View installed packages in MaaS node
 
-   .. code-block:: bash
+    .. code-block:: bash
 
-      root@cfg01:~# salt "mas*" pkg.list_pkgs
-      mas01.baremetal-mcp-ocata-odl-ha.local:
-          ----------
-          accountsservice:
-              0.6.40-2ubuntu11.3
-          acl:
-              2.2.52-3
-          acpid:
-              1:2.0.26-1ubuntu2
-          adduser:
-              3.113+nmu3ubuntu4
-          anerd:
-              1
-      .........................
+        root@cfg01:~# salt "mas*" pkg.list_pkgs
+        mas01.mcp-pike-odl-ha.local:
+            ----------
+            accountsservice:
+                0.6.40-2ubuntu11.3
+            acl:
+                2.2.52-3
+            acpid:
+                1:2.0.26-1ubuntu2
+            adduser:
+                3.113+nmu3ubuntu4
+            anerd:
+                1
+        .........................
 
 
 #. Execute any linux command on all nodes (list the content of */var/log* in this example)
 
-   .. code-block:: bash
+    .. code-block:: bash
 
-      root@cfg01:~# salt "*" cmd.run 'ls /var/log'
-      cfg01.baremetal-mcp-ocata-odl-ha.local:
-         alternatives.log
-         apt
-         auth.log
-         boot.log
-         btmp
-         cloud-init-output.log
-         cloud-init.log
-      .........................
+        root@cfg01:~# salt "*" cmd.run 'ls /var/log'
+        cfg01.mcp-pike-odl-ha.local:
+           alternatives.log
+           apt
+           auth.log
+           boot.log
+           btmp
+           cloud-init-output.log
+           cloud-init.log
+        .........................
 
 
 #. Execute any linux command on nodes using compound queries filter
 
-   .. code-block:: bash
+    .. code-block:: bash
 
-      root@cfg01:~# salt -C '* and cfg01*' cmd.run 'ls /var/log'
-      cfg01.baremetal-mcp-ocata-odl-ha.local:
-         alternatives.log
-         apt
-         auth.log
-         boot.log
-         btmp
-         cloud-init-output.log
-         cloud-init.log
-      .........................
+        root@cfg01:~# salt -C '* and cfg01*' cmd.run 'ls /var/log'
+        cfg01.mcp-pike-odl-ha.local:
+           alternatives.log
+           apt
+           auth.log
+           boot.log
+           btmp
+           cloud-init-output.log
+           cloud-init.log
+        .........................
 
 
 #. Execute any linux command on nodes using role filter
 
-   .. code-block:: bash
+    .. code-block:: bash
 
-      root@cfg01:~# salt -I 'nova:compute' cmd.run 'ls /var/log'
-      cmp001.baremetal-mcp-ocata-odl-ha.local:
-         alternatives.log
-         apache2
-         apt
-         auth.log
-         btmp
-         ceilometer
-         cinder
-         cloud-init-output.log
-         cloud-init.log
-      .........................
+        root@cfg01:~# salt -I 'nova:compute' cmd.run 'ls /var/log'
+        cmp001.mcp-pike-odl-ha.local:
+           alternatives.log
+           apache2
+           apt
+           auth.log
+           btmp
+           ceilometer
+           cinder
+           cloud-init-output.log
+           cloud-init.log
+        .........................
 
 
 
@@ -217,19 +210,19 @@ Accessing Openstack
 Once the deployment is complete, Openstack CLI is accessible from controller VMs (ctl01..03).
 Openstack credentials are at */root/keystonercv3*.
 
- .. code-block:: bash
   .. code-block:: bash
 
-    root@ctl01:~# source keystonercv3
-    root@ctl01:~# openstack image list
-    +--------------------------------------+-----------------------------------------------+--------+
-    | ID                                   | Name                                          | Status |
-    +======================================+===============================================+========+
-    | 152930bf-5fd5-49c2-b3a1-cae14973f35f | CirrosImage                                   | active |
-    | 7b99a779-78e4-45f3-9905-64ae453e3dcb | Ubuntu16.04                                   | active |
-    +--------------------------------------+-----------------------------------------------+--------+
+        root@ctl01:~# source keystonercv3
+        root@ctl01:~# openstack image list
+        +--------------------------------------+-----------------------------------------------+--------+
+        | ID                                   | Name                                          | Status |
+        +======================================+===============================================+========+
+        | 152930bf-5fd5-49c2-b3a1-cae14973f35f | CirrosImage                                   | active |
+        | 7b99a779-78e4-45f3-9905-64ae453e3dcb | Ubuntu16.04                                   | active |
+        +--------------------------------------+-----------------------------------------------+--------+
 
 
-The OpenStack Dashboard, Horizon is available at http://<controller VIP>:8078, e.g. http://10.16.0.101:8078.
+The OpenStack Dashboard, Horizon, is available at http://<proxy public VIP>
 The administrator credentials are *admin*/*opnfv_secret*.
 
 .. figure:: img/horizon_login.png
@@ -239,19 +232,78 @@ A full list of IPs/services is available at <proxy public VIP>:8090 for baremeta
 
 .. figure:: img/salt_services_ip.png
 
-For Virtual deploys, the most commonly used IPs are in the table below.
+==============================
+Guest Operating System Support
+==============================
+
+There are a number of possibilities regarding the guest operating systems which can be spawned
+on the nodes. The current system spawns virtual machines for VCP VMs on the KVM nodes  and VMs
+requested by users in OpenStack compute nodes. Currently the system supports the following
+UEFI-images for the guests:
+
++------------------+-------------------+------------------+
+| OS name          | x86_64 status     | aarch64 status   |
++==================+===================+==================+
+| Ubuntu 17.10     | untested          | Full support     |
++------------------+-------------------+------------------+
+| Ubuntu 16.04     | Full support      | Full support     |
++------------------+-------------------+------------------+
+| Ubuntu 14.04     | untested          | Full support     |
++------------------+-------------------+------------------+
+| Fedora atomic 27 | untested          | Not supported    |
++------------------+-------------------+------------------+
+| Fedora cloud 27  | untested          | Not supported    |
++------------------+-------------------+------------------+
+| Debian           | untested          | Full support     |
++------------------+-------------------+------------------+
+| Centos 7         | untested          | Not supported    |
++------------------+-------------------+------------------+
+| Cirros 0.3.5     | Full support      | Full support     |
++------------------+-------------------+------------------+
+| Cirros 0.4.0     | Full support      | Full support     |
++------------------+-------------------+------------------+
+
+
+The above table covers only UEFI image and implies OVMF/AAVMF firmware on the host. An x86 deployment
+also supports non-UEFI images, however that choice is up to the underlying hardware and the administrator
+to make.
+
+The images for the above operating systems can be found in their respective websites.
+
+===================
+Openstack Endpoints
+===================
+
+For each Openstack service three endpoints are created: admin, internal and public.
+
+    .. code-block:: bash
 
-+-----------+--------------+---------------+
-| Component | IP           | Default value |
-+===========+==============+===============+
-| gtw01     | x.y.z.110    | 172.16.10.110 |
-+-----------+--------------+---------------+
-| ctl01     | x.y.z.100    | 172.16.10.100 |
-+-----------+--------------+---------------+
-| cmp001    | x.y.z.105    | 172.16.10.105 |
-+-----------+--------------+---------------+
-| cmp002    | x.y.z.106    | 172.16.10.106 |
-+-----------+--------------+---------------+
+        ubuntu@ctl01:~$ openstack endpoint list --service keystone
+        +----------------------------------+-----------+--------------+--------------+---------+-----------+------------------------------+
+        | ID                               | Region    | Service Name | Service Type | Enabled | Interface | URL                          |
+        +----------------------------------+-----------+--------------+--------------+---------+-----------+------------------------------+
+        | 008fec57922b4e9e8bf02c770039ae77 | RegionOne | keystone     | identity     | True    | internal  | http://172.16.10.26:5000/v3  |
+        | 1a1f3c3340484bda9ef7e193f50599e6 | RegionOne | keystone     | identity     | True    | admin     | http://172.16.10.26:35357/v3 |
+        | b0a47d42d0b6491b995d7e6230395de8 | RegionOne | keystone     | identity     | True    | public    | https://10.0.15.2:5000/v3    |
+        +----------------------------------+-----------+--------------+--------------+---------+-----------+------------------------------+
+
+MCP sets up all Openstack services to talk to each other over unencrypted
+connections on the internal management network. All admin/internal endpoints use
+plain http, while the public endpoints are https connections terminated via nginx
+at the VCP proxy VMs.
+
+To access the public endpoints an SSL certificate has to be provided. For
+convenience, the installation script will copy the required certificate into
+to the cfg01 node at /etc/ssl/certs/os_cacert.
+
+Copy the certificate from the cfg01 node to the client that will access the https
+endpoints and place it under /etc/ssl/certs. The SSL connection will be established
+automatically after.
+
+    .. code-block:: bash
+
+        $ ssh -o StrictHostKeyChecking=no -i  /var/lib/opnfv/mcp.rsa  -l ubuntu 10.20.0.2 \
+        "cat /etc/ssl/certs/os_cacert" | sudo tee /etc/ssl/certs/os_cacert
 
 
 =============================
@@ -274,36 +326,36 @@ After the installation is done, a webbrowser on the host can be used to view the
 
 #. Create a new directory at any location
 
-   .. code-block:: bash
+    .. code-block:: bash
 
-      $ mkdir -p modeler
+        $ mkdir -p modeler
 
 
 #. Place fuel repo in the above directory
 
-   .. code-block:: bash
+    .. code-block:: bash
 
-      $ cd modeler
-      $ git clone https://gerrit.opnfv.org/gerrit/fuel && cd fuel
+        $ cd modeler
+        $ git clone https://gerrit.opnfv.org/gerrit/fuel && cd fuel
 
 
 #. Create a container and mount the above host directory
 
-   .. code-block:: bash
+    .. code-block:: bash
 
-      $ docker run --privileged -it -v <absolute_path>/modeler:/host ubuntu bash
+        $ docker run --privileged -it -v <absolute_path>/modeler:/host ubuntu bash
 
 
 #. Install all the required packages inside the container.
 
-   .. code-block:: bash
+    .. code-block:: bash
 
-      $ apt-get update
-      $ apt-get install -y npm nodejs
-      $ npm install -g reclass-doc
-      $ cd /host/fuel/mcp/reclass
-      $ ln -s /usr/bin/nodejs /usr/bin/node
-      $ reclass-doc --output /host /host/fuel/mcp/reclass
+        $ apt-get update
+        $ apt-get install -y npm nodejs
+        $ npm install -g reclass-doc
+        $ cd /host/fuel/mcp/reclass
+        $ ln -s /usr/bin/nodejs /usr/bin/node
+        $ reclass-doc --output /host /host/fuel/mcp/reclass
 
 
 #. View the results from the host by using a browser. The file to open should be now at modeler/index.html
@@ -311,14 +363,12 @@ After the installation is done, a webbrowser on the host can be used to view the
    .. figure:: img/reclass_doc.png
 
 
-.. _references:
+.. _fuel_userguide_references:
 
 ==========
 References
 ==========
 
-1) `Installation instructions <http://docs.opnfv.org/en/stable-euphrates/submodules/fuel/docs/release/installation/installation.instruction.html>`_
+1) :ref:`fuel-release-installation-label`
 2) `Saltstack Documentation <https://docs.saltstack.com/en/latest/topics>`_
-3) `Saltstack Formulas <http://salt-formulas.readthedocs.io/en/latest/develop/overview-reclass.html>`_
-
-
+3) `Saltstack Formulas <http://salt-formulas.readthedocs.io/en/latest/>`_
index 4ee359f..b916707 100644 (file)
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# Copyright (c) 2018 Linux Foundation, 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
 
 idf:
   version: 0.1
+  net_config:
+    # NOTE: Network names are likely to change after the PDF spec is updated
+    oob:
+      interface: 0
+      ip-range: 172.30.8.65-172.30.8.75
+      vlan: 410
+    admin:
+      interface: 0
+      vlan: native
+      network: 192.168.11.0  # Untagged, 'PXE/Admin' on wiki, different IP
+      mask: 24
+    mgmt:
+      interface: 0
+      vlan: 300
+      network: 10.167.4.0    # Tagged, 'vlan 300' on wiki
+      ip-range: 10.167.4.10-10.167.4.254  # Some IPs are in use by lab infra
+      mask: 24
+    storage:
+      interface: 3
+      vlan: 301
+      network: 10.2.0.0      # Tagged, not the same with 'storage' on wiki
+      mask: 24
+    private:
+      interface: 1
+      vlan: 1000
+      network: 10.1.0.0      # Tagged, not the same with 'private' on wiki
+      mask: 24
+    public:
+      interface: 2
+      vlan: native
+      network: 172.30.10.0   # Untagged, 'public' on wiki
+      ip-range: 172.30.10.100-172.30.10.254  # Some IPs are in use by lab infra
+      mask: 24
+      gateway: 172.30.10.1
+      dns:
+        - 8.8.8.8
+        - 8.8.4.4
   fuel:
     jumphost:
       bridges:
         admin: 'pxebr'
         mgmt: 'br-ctl'
-        private: ''
-        public: ''
+        private: ~
+        public: ~
     network:
       node:
         # Ordered-list, index should be in sync with node index in PDF
diff --git a/mcp/config/labs/local/idf-virtual1.yaml b/mcp/config/labs/local/idf-virtual1.yaml
new file mode 100644 (file)
index 0000000..79a5fa0
--- /dev/null
@@ -0,0 +1,101 @@
+##############################################################################
+# Copyright (c) 2018 Ericsson AB, 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
+##############################################################################
+---
+### Fuel@OPNFV sample VIRTUAL installer descriptor file ###
+
+idf:
+  version: 0.0  # Intentionally invalid to indicate this is experimental
+  net_config:
+    # NOTE: Network names are likely to change after the PDF spec is updated
+    oob:
+      interface: 0
+      ip-range: ~
+      vlan: native
+    # All networks (except OOB) are virtual networks managed by `libvirt`
+    # Interface indexes are based on Fuel installer defaults
+    admin:
+      interface: 0  # when used, will be first vnet interface, untagged
+      vlan: native
+      network: 192.168.11.0
+      mask: 24
+    mgmt:
+      interface: 1  # when used, will be second vnet interface, untagged
+      vlan: native
+      network: 172.16.10.0
+      ip-range: 172.16.10.10-172.16.10.254  # Some IPs are in use by lab infra
+      mask: 24
+    storage:
+      interface: 4  # when used, will be fifth vnet interface, untagged
+      vlan: native
+      network: 192.168.20.0
+      mask: 24
+    private:
+      interface: 2  # when used, will be third vnet interface, untagged
+      vlan: 1000-1999
+      network: 10.1.0.0
+      mask: 24
+    public:
+      interface: 3  # when used, will be fourth vnet interface, untagged
+      vlan: native
+      network: 10.16.0.0
+      ip-range: 10.16.0.100-10.16.0.254  # Some IPs are in use by lab infra
+      mask: 24
+      gateway: 10.16.0.1
+      dns:
+        - 8.8.8.8
+        - 8.8.4.4
+  fuel:
+    jumphost:
+      bridges:
+        admin: ~
+        mgmt: ~
+        private: ~
+        public: ~
+    network:
+      node:
+        # Ordered-list, index should be in sync with node index in PDF
+        - interfaces: &interfaces
+            # Ordered-list, index should be in sync with interface index in PDF
+            - 'ens3'
+            - 'ens4'
+            - 'ens5'
+            - 'ens6'
+          busaddr: &busaddr
+            # Bus-info reported by `ethtool -i ethX`
+            - '0000:00:03.0'
+            - '0000:00:04.0'
+            - '0000:00:05.0'
+            - '0000:00:06.0'
+        - interfaces: *interfaces
+          busaddr: *busaddr
+        - interfaces: *interfaces
+          busaddr: *busaddr
+        - interfaces: *interfaces
+          busaddr: *busaddr
+        - interfaces: *interfaces
+          busaddr: *busaddr
+    reclass:
+      node:
+        - compute_params: &compute_params
+            common: &compute_params_common
+              compute_hugepages_size: 2M
+              compute_hugepages_count: 2048
+              compute_hugepages_mount: /mnt/hugepages_2M
+            dpdk:
+              <<: *compute_params_common
+              compute_dpdk_driver: uio
+              compute_ovs_pmd_cpu_mask: "0x6"
+              compute_ovs_dpdk_socket_mem: "1024"
+              compute_ovs_dpdk_lcore_mask: "0x8"
+              compute_ovs_memory_channels: "2"
+              dpdk0_driver: igb_uio
+              dpdk0_n_rxq: 2
+        - compute_params: *compute_params
+        - compute_params: *compute_params
+        - compute_params: *compute_params
+        - compute_params: *compute_params
index cf60dcf..219b2a6 100644 (file)
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# Copyright (c) 2018 Linux Foundation, 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
@@ -8,6 +8,7 @@
 ---
 ### LF POD 2 descriptor file ###
 
+version: 1.0
 details:
   pod_owner: Trevor Bramwell
   contact: tbramwell@linuxfoundation.org
@@ -16,42 +17,6 @@ details:
   type: production
   link: https://wiki.opnfv.org/display/pharos/LF+POD+2
 ##############################################################################
-net_config:
-  # NOTE: Network names are likely to change after the PDF spec is updated
-  oob:
-    interface: 0
-    ip-range: 172.30.8.65-172.30.8.75
-    vlan: 410
-  admin:
-    interface: 0
-    vlan: native
-    network: 192.168.11.0  # Untagged, 'PXE/Admin' on wiki, different IP
-    mask: 24
-  mgmt:
-    interface: 0
-    vlan: 300
-    network: 10.167.4.0    # Tagged, 'vlan 300' on wiki
-    mask: 24
-  storage:
-    interface: 3
-    vlan: 301
-    network: 10.2.0.0      # Tagged, not the same with 'storage' on wiki
-    mask: 24
-  private:
-    interface: 1
-    vlan: 1000
-    network: 10.1.0.0      # Tagged, not the same with 'private' on wiki
-    mask: 24
-  public:
-    interface: 2
-    vlan: native
-    network: 172.30.10.0   # Untagged, 'public' on wiki
-    mask: 24
-    gateway: 172.30.10.1
-    dns:
-      - 8.8.8.8
-      - 8.8.4.4
-##############################################################################
 jumphost:
   name: pod2-jump
   node:
@@ -68,7 +33,7 @@ jumphost:
       disk_capacity: 2400G
       disk_type: hdd
       disk_interface: sas
-      disk_rotation:
+      disk_rotation: 0
   os: centos-7
   remote_params: &remote_params
     type: ipmi
@@ -84,19 +49,20 @@ jumphost:
     - mac_address: "00:25:b5:a0:00:1a"
       speed: 40gb
       features: 'dpdk|sriov'
+      address: 192.168.11.1
+      name: 'nic1'
     - mac_address: "00:25:b5:a0:00:1b"
       speed: 40gb
       features: 'dpdk|sriov'
+      name: 'nic2'
     - mac_address: "00:25:b5:a0:00:1c"
       speed: 40gb
       features: 'dpdk|sriov'
+      name: 'nic3'
     - mac_address: "00:25:b5:a0:00:1d"
       speed: 40gb
       features: 'dpdk|sriov'
-  fixed_ips:
-    admin: 192.168.11.1
-    mgmt: 10.167.4.1
-    public: 172.30.10.72
+      name: 'nic4'
 ##############################################################################
 nodes:
   - name: pod2-node1
@@ -118,19 +84,19 @@ nodes:
       - mac_address: "00:25:b5:a0:00:2a"
         speed: 40gb
         features: 'dpdk|sriov'
+        name: 'nic1'
       - mac_address: "00:25:b5:a0:00:2b"
         speed: 40gb
         features: 'dpdk|sriov'
+        name: 'nic2'
       - mac_address: "00:25:b5:a0:00:2c"
         speed: 40gb
         features: 'dpdk|sriov'
+        name: 'nic3'
       - mac_address: "00:25:b5:a0:00:2d"
         speed: 40gb
         features: 'dpdk|sriov'
-    fixed_ips:
-      admin: 192.168.11.2
-      mgmt: 10.167.4.2
-      public: 172.30.10.2
+        name: 'nic4'
   ############################################################################
   - name: pod2-node2
     node: *nodeparams
@@ -143,19 +109,19 @@ nodes:
       - mac_address: "00:25:b5:a0:00:3a"
         speed: 40gb
         features: 'dpdk|sriov'
+        name: 'nic1'
       - mac_address: "00:25:b5:a0:00:3b"
         speed: 40gb
         features: 'dpdk|sriov'
+        name: 'nic2'
       - mac_address: "00:25:b5:a0:00:3c"
         speed: 40gb
         features: 'dpdk|sriov'
+        name: 'nic3'
       - mac_address: "00:25:b5:a0:00:3d"
         speed: 40gb
         features: 'dpdk|sriov'
-    fixed_ips:
-      admin: 192.168.11.3
-      mgmt: 10.167.4.3
-      public: 172.30.10.3
+        name: 'nic4'
   ############################################################################
   - name: pod2-node3
     node: *nodeparams
@@ -168,19 +134,19 @@ nodes:
       - mac_address: "00:25:b5:a0:00:4a"
         speed: 40gb
         features: 'dpdk|sriov'
+        name: 'nic1'
       - mac_address: "00:25:b5:a0:00:4b"
         speed: 40gb
         features: 'dpdk|sriov'
+        name: 'nic2'
       - mac_address: "00:25:b5:a0:00:4c"
         speed: 40gb
         features: 'dpdk|sriov'
+        name: 'nic3'
       - mac_address: "00:25:b5:a0:00:4d"
         speed: 40gb
         features: 'dpdk|sriov'
-    fixed_ips:
-      admin: 192.168.11.4
-      mgmt: 10.167.4.4
-      public: 172.30.10.4
+        name: 'nic4'
   ############################################################################
   - name: pod2-node4
     node: *nodeparams
@@ -193,19 +159,19 @@ nodes:
       - mac_address: "00:25:b5:a0:00:5a"
         speed: 40gb
         features: 'dpdk|sriov'
+        name: 'nic1'
       - mac_address: "00:25:b5:a0:00:5b"
         speed: 40gb
         features: 'dpdk|sriov'
+        name: 'nic2'
       - mac_address: "00:25:b5:a0:00:5c"
         speed: 40gb
         features: 'dpdk|sriov'
+        name: 'nic3'
       - mac_address: "00:25:b5:a0:00:5d"
         speed: 40gb
         features: 'dpdk|sriov'
-    fixed_ips:
-      admin: 192.168.11.5
-      mgmt: 10.167.4.5
-      public: 172.30.10.5
+        name: 'nic4'
   ############################################################################
   - name: pod2-node5
     node: *nodeparams
@@ -218,16 +184,16 @@ nodes:
       - mac_address: "00:25:b5:a0:00:6a"
         speed: 40gb
         features: 'dpdk|sriov'
+        name: 'nic1'
       - mac_address: "00:25:b5:a0:00:6b"
         speed: 40gb
         features: 'dpdk|sriov'
+        name: 'nic2'
       - mac_address: "00:25:b5:a0:00:6c"
         speed: 40gb
         features: 'dpdk|sriov'
+        name: 'nic3'
       - mac_address: "00:25:b5:a0:00:6d"
         speed: 40gb
         features: 'dpdk|sriov'
-    fixed_ips:
-      admin: 192.168.11.6
-      mgmt: 10.167.4.6
-      public: 172.30.10.6
+        name: 'nic4'
diff --git a/mcp/config/labs/local/virtual1.yaml b/mcp/config/labs/local/virtual1.yaml
new file mode 100644 (file)
index 0000000..e46a2c6
--- /dev/null
@@ -0,0 +1,127 @@
+##############################################################################
+# Copyright (c) 2018 Ericsson AB, 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
+##############################################################################
+---
+### Fuel@OPNFV sample VIRTUAL POD descriptor file ###
+### NOTE: This is subject to change as vPDF is not yet officialy supported ###
+
+version: 0.0  # Intentionally invalid to indicate this is experimental
+details:
+  pod_owner: Fuel@OPNFV
+  contact: Fuel@OPNFV
+  lab: Example Lab
+  location: Example Location
+  type: development
+  link: https://wiki.opnfv.org/display/pharos/
+##############################################################################
+jumphost:
+  name: virtual1-jump
+  node:
+    type: baremetal
+    vendor: HP
+    model: ProLiant BL460c Gen8
+    arch: x86_64
+    cpus: 2
+    cpu_cflags: ivybridge
+    cores: 10
+    memory: 64G
+  disks:
+    - name: 'disk1'
+      disk_capacity: 800G
+      disk_type: hdd
+      disk_interface: scsi
+      disk_rotation: 15000
+  os: ubuntu-16.04
+  remote_management:
+    type: ipmi
+    versions:
+      - 1.0
+      - 2.0
+    user: changeme
+    pass: changeme
+    address: 0.0.0.0
+    mac_address: "00:00:00:00:00:00"
+  interfaces:
+    - name: 'nic1'
+      speed: 10gb
+      features: 'dpdk|sriov'
+      mac_address: "00:00:00:00:00:00"
+      vlan: native
+    - name: 'nic2'
+      speed: 10gb
+      features: 'dpdk|sriov'
+      mac_address: "00:00:00:00:00:00"
+      vlan: native
+##############################################################################
+nodes:
+  - name: node-1
+    node: &nodeparams
+      # Fuel overrides certain params (e.g. cpus, mem) based on node role later
+      type: virtual
+      vendor: libvirt
+      model: virt
+      arch: x86_64
+      cpus: 1
+      cpu_cflags: ivybridge
+      cores: 8
+      memory: 6G
+    disks: &disks
+      - name: 'disk1'
+        disk_capacity: 100G
+        disk_type: hdd
+        disk_interface: scsi  # virtio-scsi
+        disk_rotation: 15000
+    remote_management: &remotemgmt
+      type: libvirt
+      user: changeme
+      pass: changeme
+      address: 127.0.0.1  # Not used currently, will be 'qemu:///system' later
+    interfaces: &interfaces
+      - name: 'nic1'
+        speed: 10gb
+        features: 'dpdk|sriov'
+        mac_address: "00:00:00:00:00:00"  # MACs will be assigned by libvirt
+        vlan: native
+      - name: 'nic2'
+        speed: 10gb
+        features: 'dpdk|sriov'
+        mac_address: "00:00:00:00:00:00"
+        vlan: native
+      - name: 'nic3'
+        speed: 10gb
+        features: 'dpdk|sriov'
+        mac_address: "00:00:00:00:00:00"
+        vlan: native
+      - name: 'nic4'
+        speed: 10gb
+        features: 'dpdk|sriov'
+        mac_address: "00:00:00:00:00:00"
+        vlan: native
+  ############################################################################
+  - name: node-2
+    node: *nodeparams
+    disks: *disks
+    remote_management: *remotemgmt
+    interfaces: *interfaces
+  ############################################################################
+  - name: node-3
+    node: *nodeparams
+    disks: *disks
+    remote_management: *remotemgmt
+    interfaces: *interfaces
+  ############################################################################
+  - name: node-4
+    node: *nodeparams
+    disks: *disks
+    remote_management: *remotemgmt
+    interfaces: *interfaces
+  ############################################################################
+  - name: node-5
+    node: *nodeparams
+    disks: *disks
+    remote_management: *remotemgmt
+    interfaces: *interfaces
diff --git a/mcp/config/scenario/.gitignore b/mcp/config/scenario/.gitignore
new file mode 100644 (file)
index 0000000..46c7f92
--- /dev/null
@@ -0,0 +1 @@
+*-ha.yaml
index 389877a..e03182f 100644 (file)
@@ -19,4 +19,4 @@ feature scenarios used by Fuel@OPNFV, e.g.:
 NOTES:
 ------
 This directory is highly likely to change and/or be replaced/complemented
-by the new PDF (Pod Descriptor File) info in securedlab OPNFV git repo.
+by the new PDF (Pod Descriptor File) info in Pharos OPNFV git repo.
diff --git a/mcp/config/scenario/baremetal/os-nosdn-nofeature-ha.yaml b/mcp/config/scenario/baremetal/os-nosdn-nofeature-ha.yaml
deleted file mode 100644 (file)
index b721db4..0000000
+++ /dev/null
@@ -1,26 +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
-##############################################################################
----
-cluster:
-  domain: baremetal-mcp-pike-ovs-ha.local
-  states:
-    - maas
-    - baremetal_init
-    - virtual_control_plane
-    - openstack_ha
-    - networks
-virtual:
-  nodes:
-    - cfg01
-    - mas01
-  cfg01:
-    vcpus: 4
-    ram: 6144
-  mas01:
-    vcpus: 4
-    ram: 6144
diff --git a/mcp/config/scenario/baremetal/os-nosdn-ovs-ha.yaml b/mcp/config/scenario/baremetal/os-nosdn-ovs-ha.yaml
deleted file mode 100644 (file)
index eec97eb..0000000
+++ /dev/null
@@ -1,28 +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
-##############################################################################
----
-cluster:
-  domain: baremetal-mcp-pike-ovs-dpdk-ha.local
-  states:
-    - maas
-    - baremetal_init
-    - virtual_control_plane
-    - dpdk
-    - openstack_ha
-    - networks
-    - networking_gw
-virtual:
-  nodes:
-    - cfg01
-    - mas01
-  cfg01:
-    vcpus: 4
-    ram: 6144
-  mas01:
-    vcpus: 4
-    ram: 6144
diff --git a/mcp/config/scenario/baremetal/os-odl-nofeature-ha.yaml b/mcp/config/scenario/baremetal/os-odl-nofeature-ha.yaml
deleted file mode 100644 (file)
index a72c00d..0000000
+++ /dev/null
@@ -1,27 +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
-##############################################################################
----
-cluster:
-  domain: baremetal-mcp-pike-odl-ha.local
-  states:
-    - maas
-    - baremetal_init
-    - virtual_control_plane
-    - opendaylight
-    - openstack_ha
-    - networks
-virtual:
-  nodes:
-    - cfg01
-    - mas01
-  cfg01:
-    vcpus: 4
-    ram: 6144
-  mas01:
-    vcpus: 4
-    ram: 6144
diff --git a/mcp/config/scenario/defaults-x86_64.yaml b/mcp/config/scenario/defaults-x86_64.yaml
deleted file mode 100644 (file)
index 18b0826..0000000
+++ /dev/null
@@ -1,27 +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
-##############################################################################
----
-base_image: https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img
-virtual:
-  default:
-    vcpus: 2
-    ram: 4096
-  common:
-    apt:
-      keys:
-        - https://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.11/SALTSTACK-GPG-KEY.pub
-      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/2016.11 xenial main
-    pkg:
-      install:
-        - salt-minion
-  control:
-    pkg:
-      install:
-        - cloud-init
similarity index 57%
rename from mcp/config/scenario/defaults-aarch64.yaml
rename to mcp/config/scenario/defaults.yaml
index 1efa12a..13f2dd5 100644 (file)
@@ -1,13 +1,34 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc. and others.
+# 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
 ##############################################################################
 ---
-base_image: https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-arm64-uefi1.img
-virtual:
+x86_64:
+  base_image: https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img
+  default:
+    vcpus: 2
+    ram: 4096
+  common:
+    apt:
+      keys:
+        - https://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.11/SALTSTACK-GPG-KEY.pub
+      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/2016.11 xenial main
+    pkg:
+      install:
+        - linux-generic-hwe-16.04
+        - salt-minion
+  control:
+    apt: ~
+    pkg:
+      install:
+        - cloud-init
+aarch64:
+  base_image: https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-arm64-uefi1.img
   default:
     vcpus: 6
     ram: 4096
@@ -25,6 +46,7 @@ virtual:
         - linux-headers-generic-hwe-16.04-edge
         - salt-minion
   control:
+    apt: ~
     pkg:
       install:
         - cloud-init
diff --git a/mcp/config/scenario/os-nosdn-nofeature-ha.yaml.j2 b/mcp/config/scenario/os-nosdn-nofeature-ha.yaml.j2
new file mode 100644 (file)
index 0000000..2c4a5f1
--- /dev/null
@@ -0,0 +1,67 @@
+##############################################################################
+# 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 %}
+{%- set cluster = {'has_virtual_nodes': False} %}
+{%- for node in conf.nodes %}
+  {%- if not cluster.has_virtual_nodes and node.node.type == 'baremetal' %}
+    {%- do cluster.update({'has_baremetal_nodes': True}) %}
+  {%- endif %}
+{%- endfor %}
+---
+cluster:
+  domain: mcp-pike-ovs-ha.local
+  states:
+{%- if cluster.has_baremetal_nodes %}
+    - maas
+    - baremetal_init
+{%- endif %}
+{%- if conf.MCP_VCP %}
+    - virtual_control_plane
+{%- endif %}
+    - openstack_ha
+    - networks
+virtual:
+  nodes:
+    - cfg01
+{%- if cluster.has_baremetal_nodes %}
+    - mas01
+{%- endif %}
+{#- Most likely, controllers will always have the same type and number (3) #}
+{%- if conf.nodes[nm.ctl01.idx].node.type == 'virtual' %}
+    - kvm01
+    - kvm02
+    - kvm03
+{%- endif %}
+{#- Later, we might have mixed computes here, for hybrid multi-arch testing #}
+{%- if conf.nodes[nm.cmp001.idx].node.type == 'virtual' %}
+    - cmp001
+    - cmp002
+{%- endif %}
+  cfg01:
+    vcpus: 4
+    ram: 6144
+  # Below values are only used when nodes are defined in virtual.nodes above
+  mas01:
+    vcpus: 4
+    ram: 6144
+  # NOTE: We might need to add more RAM here
+  kvm01:
+    vcpus: 4
+    ram: 14336
+  kvm02:
+    vcpus: 4
+    ram: 14336
+  kvm03:
+    vcpus: 4
+    ram: 14336
+  cmp001:
+    vcpus: 4
+    ram: 8192
+  cmp002:
+    vcpus: 4
+    ram: 8192
@@ -7,11 +7,10 @@
 ##############################################################################
 ---
 cluster:
-  domain: virtual-mcp-pike-ovs-noha.local
+  domain: mcp-pike-ovs-noha.local
   states:
     - openstack_noha
     - neutron_gateway
-    - neutron_compute
     - networks
 virtual:
   nodes:
diff --git a/mcp/config/scenario/os-nosdn-ovs-ha.yaml.j2 b/mcp/config/scenario/os-nosdn-ovs-ha.yaml.j2
new file mode 100644 (file)
index 0000000..96db117
--- /dev/null
@@ -0,0 +1,68 @@
+##############################################################################
+# 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 %}
+{%- set cluster = {'has_virtual_nodes': False} %}
+{%- for node in conf.nodes %}
+  {%- if not cluster.has_virtual_nodes and node.node.type == 'baremetal' %}
+    {%- do cluster.update({'has_baremetal_nodes': True}) %}
+  {%- endif %}
+{%- endfor %}
+---
+cluster:
+  domain: mcp-pike-ovs-dpdk-ha.local
+  states:
+{%- if cluster.has_baremetal_nodes %}
+    - maas
+    - baremetal_init
+{%- endif %}
+{%- if conf.MCP_VCP %}
+    - virtual_control_plane
+{%- endif %}
+    - dpdk
+    - openstack_ha
+    - networks
+virtual:
+  nodes:
+    - cfg01
+{%- if cluster.has_baremetal_nodes %}
+    - mas01
+{%- endif %}
+{#- Most likely, controllers will always have the same type and number (3) #}
+{%- if conf.nodes[nm.ctl01.idx].node.type == 'virtual' %}
+    - kvm01
+    - kvm02
+    - kvm03
+{%- endif %}
+{#- Later, we might have mixed computes here, for hybrid multi-arch testing #}
+{%- if conf.nodes[nm.cmp001.idx].node.type == 'virtual' %}
+    - cmp001
+    - cmp002
+{%- endif %}
+  cfg01:
+    vcpus: 4
+    ram: 6144
+  # Below values are only used when nodes are defined in virtual.nodes above
+  mas01:
+    vcpus: 4
+    ram: 6144
+  # NOTE: We might need to add more RAM here
+  kvm01:
+    vcpus: 4
+    ram: 14336
+  kvm02:
+    vcpus: 4
+    ram: 14336
+  kvm03:
+    vcpus: 4
+    ram: 14336
+  cmp001:
+    vcpus: 4
+    ram: 8192
+  cmp002:
+    vcpus: 4
+    ram: 8192
@@ -7,12 +7,11 @@
 ##############################################################################
 ---
 cluster:
-  domain: virtual-mcp-pike-ovs-dpdk-noha.local
+  domain: mcp-pike-ovs-dpdk-noha.local
   states:
     - dpdk
     - openstack_noha
     - neutron_gateway
-    - neutron_compute
     - networks
 virtual:
   nodes:
diff --git a/mcp/config/scenario/os-odl-nofeature-ha.yaml.j2 b/mcp/config/scenario/os-odl-nofeature-ha.yaml.j2
new file mode 100644 (file)
index 0000000..0bd3a13
--- /dev/null
@@ -0,0 +1,68 @@
+##############################################################################
+# 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 %}
+{%- set cluster = {'has_virtual_nodes': False} %}
+{%- for node in conf.nodes %}
+  {%- if not cluster.has_virtual_nodes and node.node.type == 'baremetal' %}
+    {%- do cluster.update({'has_baremetal_nodes': True}) %}
+  {%- endif %}
+{%- endfor %}
+---
+cluster:
+  domain: mcp-pike-odl-ha.local
+  states:
+{%- if cluster.has_baremetal_nodes %}
+    - maas
+    - baremetal_init
+{%- endif %}
+{%- if conf.MCP_VCP %}
+    - virtual_control_plane
+{%- endif %}
+    - opendaylight
+    - openstack_ha
+    - networks
+virtual:
+  nodes:
+    - cfg01
+{%- if cluster.has_baremetal_nodes %}
+    - mas01
+{%- endif %}
+{#- Most likely, controllers will always have the same type and number (3) #}
+{%- if conf.nodes[nm.ctl01.idx].node.type == 'virtual' %}
+    - kvm01
+    - kvm02
+    - kvm03
+{%- endif %}
+{#- Later, we might have mixed computes here, for hybrid multi-arch testing #}
+{%- if conf.nodes[nm.cmp001.idx].node.type == 'virtual' %}
+    - cmp001
+    - cmp002
+{%- endif %}
+  cfg01:
+    vcpus: 4
+    ram: 6144
+  # Below values are only used when nodes are defined in virtual.nodes above
+  mas01:
+    vcpus: 4
+    ram: 6144
+  # NOTE: We might need to add more RAM here
+  kvm01:
+    vcpus: 4
+    ram: 14336
+  kvm02:
+    vcpus: 4
+    ram: 14336
+  kvm03:
+    vcpus: 4
+    ram: 14336
+  cmp001:
+    vcpus: 4
+    ram: 8192
+  cmp002:
+    vcpus: 4
+    ram: 8192
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,7 +7,7 @@
 ##############################################################################
 ---
 cluster:
-  domain: virtual-mcp-pike-odl-noha.local
+  domain: mcp-pike-odl-noha.local
   states:
     - opendaylight
     - openstack_noha
diff --git a/mcp/config/scenario/os-ovn-nofeature-ha.yaml.j2 b/mcp/config/scenario/os-ovn-nofeature-ha.yaml.j2
new file mode 100644 (file)
index 0000000..8b7fda0
--- /dev/null
@@ -0,0 +1,67 @@
+##############################################################################
+# 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 %}
+{%- set cluster = {'has_virtual_nodes': False} %}
+{%- for node in conf.nodes %}
+  {%- if not cluster.has_virtual_nodes and node.node.type == 'baremetal' %}
+    {%- do cluster.update({'has_baremetal_nodes': True}) %}
+  {%- endif %}
+{%- endfor %}
+---
+cluster:
+  domain: mcp-pike-ovn-ha.local
+  states:
+{%- if cluster.has_baremetal_nodes %}
+    - maas
+    - baremetal_init
+{%- endif %}
+{%- if conf.MCP_VCP %}
+    - virtual_control_plane
+{%- endif %}
+    - openstack_ha
+    - networks
+virtual:
+  nodes:
+    - cfg01
+{%- if cluster.has_baremetal_nodes %}
+    - mas01
+{%- endif %}
+{#- Most likely, controllers will always have the same type and number (3) #}
+{%- if conf.nodes[nm.ctl01.idx].node.type == 'virtual' %}
+    - kvm01
+    - kvm02
+    - kvm03
+{%- endif %}
+{#- Later, we might have mixed computes here, for hybrid multi-arch testing #}
+{%- if conf.nodes[nm.cmp001.idx].node.type == 'virtual' %}
+    - cmp001
+    - cmp002
+{%- endif %}
+  cfg01:
+    vcpus: 4
+    ram: 6144
+  # Below values are only used when nodes are defined in virtual.nodes above
+  mas01:
+    vcpus: 4
+    ram: 6144
+  # NOTE: We might need to add more RAM here
+  kvm01:
+    vcpus: 4
+    ram: 14336
+  kvm02:
+    vcpus: 4
+    ram: 14336
+  kvm03:
+    vcpus: 4
+    ram: 14336
+  cmp001:
+    vcpus: 4
+    ram: 8192
+  cmp002:
+    vcpus: 4
+    ram: 8192
@@ -7,11 +7,9 @@
 ##############################################################################
 ---
 cluster:
-  domain: virtual-mcp-pike-ovn-noha.local
+  domain: mcp-pike-ovn-noha.local
   states:
     - openstack_noha
-    - ovn_ctl_opts
-    - neutron_compute
     - networks
 virtual:
   nodes:
index c147728..891eae3 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/bash -e
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -25,8 +25,11 @@ salt -C 'kvm* or cmp*' file.replace $debian_ip_source \
 salt -C 'kvm*' pkg.install bridge-utils
 salt -C 'kvm*' state.apply linux.network,linux.system.kernel
 salt -C 'kvm* or cmp*' state.apply salt.minion
-salt -C 'cmp*' state.apply linux.system
+wait_for 5.0 "salt -C 'cmp*' state.apply linux.system"
+# wrap distro `route` binary to silence errors when route already exists
+wait_for 5.0 "salt -C 'kvm* or cmp*' state.apply opnfv.route_wrapper"
 salt -C 'cmp*' state.apply linux.network || true
+wait_for 30.0 "salt -C 'kvm* or cmp*' test.ping"
 
 # disable dhcp offered routes on compute nodes
 salt -C 'cmp*' file.write /etc/dhcp/dhclient-enter-hooks.d/no-default-route \
index 5ae2aac..281b78f 100755 (executable)
@@ -12,8 +12,5 @@ CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x
 # shellcheck disable=SC1090
 source "$(dirname "${BASH_SOURCE[0]}")/../../scripts/lib.sh"
 
-salt -I 'nova:compute' system.reboot
-wait_for 90.0 "salt -I 'nova:compute' test.ping"
-
 salt -I 'nova:compute' alternatives.set ovs-vswitchd /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk
 salt -I 'nova:compute' service.restart openvswitch-switch
index 8f7a866..10cfd01 100755 (executable)
@@ -14,6 +14,9 @@ ERASE_ENV=${ERASE_ENV:-0}
 source "$(dirname "${BASH_SOURCE[0]}")/../../scripts/globals.sh"
 source "$(dirname "${BASH_SOURCE[0]}")/../../scripts/lib.sh"
 
+bm_nodes=$(salt --out yaml 'mas01*' pillar.get maas:region:machines | \
+           awk '/^\s+\w+[[:digit:]]+:$/ {gsub(/:$/, "*"); printf "%s ", $1}')
+
 # Wait for MaaS commissioning/deploy to finish, retry on failure
 function maas_fixup() {
   local statuscmd="salt 'mas01*' --out yaml state.apply maas.machines.status"
@@ -27,12 +30,19 @@ function maas_fixup() {
 
   local fcnodes=$(echo "${statusout}" | \
     grep -Pzo 'status: Failed commissioning\n\s+system_id: \K.+\n')
+  local ftnodes=$(echo "${statusout}" | \
+    grep -Pzo 'status: Failed testing\n\s+system_id: \K.+\n')
   for node_system_id in ${fcnodes}; do
     salt -C 'mas01*' state.apply maas.machines.delete \
       pillar="{'system_id': '${node_system_id}'}"
     sleep 10
   done
-  if [ -n "${fcnodes}" ]; then
+  for node_system_id in ${ftnodes}; do
+    salt -C 'mas01*' state.apply maas.machines.override_failed_testing \
+      pillar="{'system_id': '${node_system_id}'}"
+    sleep 10
+  done
+  if [ -n "${fcnodes}" ] || [ -n "${ftnodes}" ]; then
     salt -C 'mas01*' state.apply maas.machines
     return 1
   fi
@@ -47,6 +57,16 @@ function maas_fixup() {
     sleep 10
   done
   if [ -n "${fdnodes}" ] || [ -n "${rnodes}" ]; then
+    for node_system_id in ${fdnodes} ${rnodes}; do
+      # For now, we allocate 30GB (fixed) for / on cmp nodes
+      local node_hostname=$(echo "${statusout}" | \
+        grep -Pzo 'hostname: \K.+(?=\n.+\n\s+system_id: '"${node_system_id}"')')
+      if [[ "${node_hostname}" =~ ^cmp ]]; then
+        salt -C 'mas01*' state.apply maas.machines.set_storage_layout \
+          pillar="{'system_id': '${node_system_id}', 'lv_size': '32212254720'}"
+        sleep 10
+      fi
+    done
     salt -C 'mas01*' state.apply maas.machines.deploy
     return 1
   fi
@@ -68,16 +88,19 @@ fi
 
 # MaaS rack/region controller, node commissioning
 salt -C 'mas01*' state.apply linux,salt,openssh,ntp
+salt -C 'mas01*' state.apply maas.pxe_nat
 salt -C 'mas01*' state.apply maas.cluster
 
 wait_for 10 "salt -C 'mas01*' state.apply maas.region"
 
-salt -C 'mas01*' state.apply maas.machines
+if [ -n "${bm_nodes}" ]; then
+  salt -C 'mas01*' state.apply maas.machines
+fi
 
 # cleanup outdated salt keys
 sleep 30
 salt-key --out yaml | awk '!/^(minions|- cfg01|- mas01)/ {print $2}' | \
-  xargs -I{} salt-key -yd {}
+  xargs --no-run-if-empty -I{} salt-key -yd {}
 
 # MaaS node deployment
 wait_for 10 maas_fixup
@@ -87,18 +110,6 @@ salt -C 'mas01*' pillar.item\
   maas:region:admin:password
 
 # Check all baremetal nodes are available
-rc=1
-attempt=0
-total_attempts=10
-while [ $rc -ne 0 ] && [ ${attempt} -lt ${total_attempts} ]; do
-  bm_nodes=$(salt --out yaml 'mas01*' pillar.get maas:region:machines | \
-             awk '/^\s+\w+[[:digit:]]+:$/ {gsub(/:$/, "*"); print $1}')
-  rc=0
-  for node in $bm_nodes; do
-    salt "$node" test.ping 2>/dev/null || { rc=$?; break; };
-  done
-  sleep 5
-  ((attempt+=1))
-done
+wait_for 5.0 "(for n in ${bm_nodes}; do salt \${n} test.ping 2>/dev/null || exit; done)"
 
 wait_for 10.0 "salt -C '* and not cfg01* and not mas01*' saltutil.sync_all"
diff --git a/mcp/config/states/neutron_compute b/mcp/config/states/neutron_compute
deleted file mode 100755 (executable)
index c6b90e2..0000000
+++ /dev/null
@@ -1,12 +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
-
-salt -I 'neutron:compute' state.sls neutron
index 34a2c3b..de15d0c 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/bash -e
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -9,7 +9,13 @@
 
 CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x
 
-salt -I 'opendaylight:server' state.sls opendaylight
-salt -I 'opendaylight:client' state.sls opendaylight.client
-salt -I 'opendaylight:client' cmd.run 'neutron-odl-ovs-hostconfig --noovs_dpdk'
-salt -I 'neutron:server' state.sls opendaylight.client
+# shellcheck disable=SC1090
+source "$(dirname "${BASH_SOURCE[0]}")/../../scripts/lib.sh"
+
+# Get OpenDaylight server options with prefix odl_
+function odl() {
+  salt --out txt -I 'opendaylight:server' pillar.get "opendaylight:server:odl_$1" | cut -d ' ' -f2
+}
+
+wait_for 5.0 "salt -I 'opendaylight:server' state.sls opendaylight"
+wait_for 20 "salt --out yaml -C 'I@neutron:server and *01*' network.connect $(odl bind_ip) $(odl rest_port) | fgrep -q 'result: true'"
index 0bbf7cd..77063d6 100755 (executable)
@@ -12,8 +12,8 @@ CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x
 # shellcheck disable=SC1090
 source "$(dirname "${BASH_SOURCE[0]}")/../../scripts/lib.sh"
 
-salt -I 'keepalived:cluster' state.sls keepalived -b 1
-salt -I 'keepalived:cluster' pillar.get keepalived:cluster:instance:VIP:address
+wait_for 5.0 "salt -I 'keepalived:cluster' state.sls keepalived -b 1"
+wait_for 5.0 "salt -I 'keepalived:cluster' pillar.get keepalived:cluster:instance:VIP:address"
 
 salt -C 'I@rabbitmq:server and *01*' state.sls rabbitmq
 salt -I 'rabbitmq:server' state.sls rabbitmq
@@ -25,10 +25,10 @@ salt -I 'glusterfs:server' cmd.run "gluster peer status; gluster volume status"
 salt -I 'glusterfs:client' state.sls glusterfs.client
 
 salt -I 'galera:master' state.sls galera
-salt -I 'galera:slave' state.sls galera
+salt -I 'galera:slave' state.sls galera -b 1
 salt -I 'galera:master' mysql.status | grep -A1 wsrep_cluster_size
 
-salt -I 'memcached:server' state.sls memcached
+wait_for 3.0 "salt -I 'memcached:server' state.sls memcached"
 
 salt -I 'haproxy:proxy' state.sls haproxy
 salt -I 'haproxy:proxy' service.status haproxy
@@ -38,15 +38,15 @@ set +e; salt -I 'keystone:server' state.sls keystone.server -b 1; set -e
 salt -I 'keystone:server' service.restart apache2
 salt -I 'keystone:server' state.sls keystone.server -b 1
 
-wait_for 30 "salt -I 'keystone:client' state.sls keystone.client"
+wait_for 30.0 "salt -I 'keystone:client' state.sls keystone.client"
 salt -I 'keystone:server' cmd.run ". /root/keystonercv3; openstack service list"
 
 salt -I 'glance:server' state.sls glance -b 1
 salt -I 'nova:controller' state.sls nova -b 1
 salt -I 'heat:server' state.sls heat -b 1
 
-wait_for 5 "salt -I 'cinder:controller' state.sls cinder -b 1"
-wait_for 3 "salt -I 'cinder:volume' state.sls cinder"
+wait_for 5.0 "salt -I 'cinder:controller' state.sls cinder -b 1"
+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
@@ -54,7 +54,7 @@ salt -I 'neutron:gateway' state.sls neutron.gateway
 salt -I 'nova:compute' state.sls nova
 
 salt -C 'I@mongodb:server and *01*' state.sls mongodb || true
-wait_for 10 "salt -C 'I@mongodb:server and *01*' cmd.run 'mongo localhost:27017/admin'"
+wait_for 10.0 "salt -C 'I@mongodb:server and *01*' cmd.run 'mongo localhost:27017/admin'"
 salt -C 'I@mongodb:server and *01*' cmd.run 'mongo localhost:27017/admin --eval "rs.initiate()"'
 salt -I 'mongodb:server' state.sls mongodb
 
@@ -63,23 +63,27 @@ salt -I 'ceilometer:server' state.sls ceilometer
 salt -I 'ceilometer:agent' state.sls ceilometer
 
 salt -I 'horizon:server' state.sls horizon
-salt -I 'nginx:server' state.sls nginx,sphinx
-
-# workaround for the pike horizon is missing css, FUEL-324
-salt -I 'horizon:server' file.symlink \
-  /var/lib/openstack-dashboard/static \
-  /usr/share/openstack-dashboard/static
-salt -I 'horizon:server' cmd.run "/usr/share/openstack-dashboard/manage.py collectstatic --noinput"
-salt -I 'horizon:server' cmd.run "/usr/share/openstack-dashboard/manage.py compress --force"
-salt -I 'horizon:server' file.append /etc/openstack-dashboard/local_settings.py \
- "AVAILABLE_THEMES = [ ('default', 'Default', 'themes/default'),]"
-salt -I 'horizon:server' service.reload apache2
-
-clstr_vip_addr=$(salt -C 'I@nginx:server and *01*' --out=yaml \
-  pillar.get _param:cluster_vip_address | awk '{print $2; exit}')
-salt -C 'I@nginx:server and *01*' cp.push \
-  "/etc/ssl/certs/${clstr_vip_addr}-with-chain.crt" upload_path='certs/os_cacert'
-cd /etc/ssl/certs && ln -sf /var/cache/salt/master/minions/prx01.*/files/certs/os_cacert
+salt -I 'nginx:server' state.sls nginx
+
+# workaround for Ubuntu Pike Horizon missing css, FUEL-324
+if ! salt -C 'I@horizon:server and *01*' --out=yaml pkg.version openstack-dashboard | grep -qE ':.*mcp'; then
+  salt -I 'horizon:server' file.symlink \
+    /var/lib/openstack-dashboard/static \
+    /usr/share/openstack-dashboard/static
+  salt -I 'horizon:server' cmd.run "/usr/share/openstack-dashboard/manage.py collectstatic --noinput"
+  salt -I 'horizon:server' cmd.run "/usr/share/openstack-dashboard/manage.py compress --force"
+  salt -I 'horizon:server' file.append /etc/openstack-dashboard/local_settings.py \
+   "AVAILABLE_THEMES = [ ('default', 'Default', 'themes/default'),]"
+  salt -I 'horizon:server' service.reload apache2
+fi
+
+cluster_public_host=$(salt -C 'I@nginx:server and *01*' --out=yaml \
+  pillar.get _param:cluster_public_host | awk '{print $2; exit}')
+dashboard_host=$(salt -C 'I@nginx:server and *01*' --out=yaml cp.push \
+  "/etc/ssl/certs/${cluster_public_host}-with-chain.crt" \
+  upload_path='certs/os_cacert' | cut -d':' -f1)
+cd /etc/ssl/certs && \
+  ln -sf "/var/cache/salt/master/minions/${dashboard_host}/files/certs/os_cacert"
 
 # glance v1 api is required by orchestra tests
 salt -I 'glance:server' ini.set_option /etc/glance/glance-api.conf '{DEFAULT: {enable_v1_api: True}}'
index 9fc30bb..4c8cbcf 100755 (executable)
@@ -42,6 +42,7 @@ salt -I 'cinder:controller' state.sls cinder
 wait_for 3 "salt -I 'cinder:volume' state.sls cinder"
 
 salt -I 'neutron:server' state.sls neutron
+salt -I 'neutron:compute' state.sls neutron
 
 salt -I 'nova:compute' state.sls nova
 
diff --git a/mcp/config/states/ovn_ctl_opts b/mcp/config/states/ovn_ctl_opts
deleted file mode 100755 (executable)
index eeb336b..0000000
+++ /dev/null
@@ -1,15 +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
-
-salt -I 'neutron:server' file.append /etc/default/ovn-central \
-  args="OVN_CTL_OPTS='--db-nb-create-insecure-remote=yes --db-sb-create-insecure-remote=yes'"
-salt -I 'neutron:server' service.restart ovn-central
-sleep 30
index 338c447..c391cfe 100755 (executable)
@@ -33,20 +33,10 @@ 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(/:$/, "*"); print $1}')
+            awk '/\s+\w+:$/ {gsub(/:$/, "*"); printf "%s ", $1}')
 
 # Check all vcp nodes are available
-rc=1
-attempt=0
-total_attempts=50
-while [ $rc -ne 0 ] && [ ${attempt} -lt ${total_attempts} ]; do
-  rc=0
-  for node in $vcp_nodes; do
-    salt "$node" test.ping 2>/dev/null || { rc=$?; break; };
-  done
-  sleep 5
-  ((attempt+=1))
-done
+wait_for 25.0 "(for n in ${vcp_nodes}; do salt \${n} test.ping 2>/dev/null || exit; done)"
 
 wait_for 10.0 "salt -C '* and not cfg01* and not mas01*' saltutil.sync_all"
 
@@ -58,7 +48,7 @@ cd /srv/salt/env/prd/maas/files && ln -sf \
 salt -C 'E@^(?!cfg01|mas01|kvm|cmp00).*' cp.get_file \
   "salt://maas/files/$(basename "${APT_CONF_D_CURTIN}")" "${APT_CONF_D_CURTIN}"
 
-wait_for 10 "salt -C 'E@^(?!cfg01|mas01|kvm|cmp00).*' state.apply salt"
+wait_for 10.0 "salt -C 'E@^(?!cfg01|mas01|kvm|cmp00).*' state.apply salt"
 wait_for 10.0 "salt -C 'E@^(?!cfg01|mas01|kvm|cmp00).*' state.apply linux,ntp"
 
 wait_for 10.0 "salt -C 'E@^(?!cfg01|mas01|kvm|cmp00).*' ssh.set_auth_key ${SUDO_USER} \
@@ -67,6 +57,7 @@ wait_for 10.0 "salt -C 'E@^(?!cfg01|mas01|kvm|cmp00).*' ssh.set_auth_key ${SUDO_
 # Disable proxy dhcp routes after installation
 salt -C 'prx*' file.write /etc/dhcp/dhclient-enter-hooks.d/no-default-route \
   args='unset new_routers'
+salt -C 'prx*' state.apply opnfv.route_wrapper
 salt -C 'prx*' system.reboot
 wait_for 30.0 "salt -C 'prx*' test.ping"
 
index b714809..3a762b3 100644 (file)
@@ -9,8 +9,12 @@
 applications:
   - opendaylight
 parameters:
+  _param:
+    version: oxygen
   opendaylight:
     server:
       enabled: 'True'
+      version: ${_param:version}
+      repo: 'odl-team/${_param:version}'
       logging:
         engine: syslog
diff --git a/mcp/patches/0001-opendaylight-formula-neutron.patch b/mcp/patches/0001-opendaylight-formula-neutron.patch
deleted file mode 100644 (file)
index 4bd1617..0000000
+++ /dev/null
@@ -1,135 +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: Michael Polenchuk <mpolenchuk@mirantis.com>
-Date: Thu, 29 Jun 2017 12:05:25 +0400
-Subject: [PATCH] Bring in opendaylight support
-
-Change-Id: Ie9073fafccba336f94b1996bd85c98d7a7f5060b
-
-diff --git a/neutron/files/pike/dhcp_agent.ini b/neutron/files/pike/dhcp_agent.ini
-index d327e64..739dddf 100644
---- a/neutron/files/pike/dhcp_agent.ini
-+++ b/neutron/files/pike/dhcp_agent.ini
-@@ -1,3 +1,8 @@
-+{%- if pillar.neutron.gateway is defined %}
-+{%- from "neutron/map.jinja" import gateway as neutron with context %}
-+{%- else %}
-+{%- from "neutron/map.jinja" import compute as neutron with context %}
-+{%- endif %}
- [DEFAULT]
-
- #
-@@ -48,6 +53,7 @@ enable_isolated_metadata = True
- # this value will force the DHCP server to append specific host routes to the DHCP request. If this option is set, then the metadata service
- # will be activated for all the networks. (boolean value)
- #force_metadata = false
-+{% if neutron.backend.router is defined %}force_metadata = True{% endif %}
-
- # Allows for serving metadata requests coming from a dedicated metadata access network whose CIDR is 169.254.169.254/16 (or larger prefix),
- # and is connected to a Neutron router from which the VMs send metadata:1 request. In this case DHCP Option 121 will not be injected in VMs,
-diff --git a/neutron/files/pike/ml2_conf.ini b/neutron/files/pike/ml2_conf.ini
-index b61e313..02da3b1 100644
---- a/neutron/files/pike/ml2_conf.ini
-+++ b/neutron/files/pike/ml2_conf.ini
-@@ -134,7 +134,8 @@ tenant_network_types = {{ server.backend.tenant_network_types }}
- {%- for mechanism_name, mechanism in server.get('backend', {}).get('mechanism', []).items() %}
- {%- do mechanism_drivers.append(mechanism.get('driver')) if 'driver' in mechanism %}
- {%- endfor %}
--{%- if "vxlan" in server.backend.tenant_network_types %}
-+{%- set opendaylight_enabled = true if 'opendaylight' in mechanism_drivers|join else false %}
-+{%- if "vxlan" in server.backend.tenant_network_types and not opendaylight_enabled %}
- {%- do mechanism_drivers.append('l2population') %}
- {%- endif %}
- mechanism_drivers = {{ ','.join(mechanism_drivers) }}
-@@ -311,3 +312,11 @@ ovn_nb_connection = tcp:{{ server.controller_vip }}:6641
- ovn_sb_connection = tcp:{{ server.controller_vip }}:6642
- ovn_l3_scheduler = leastloaded
- {%- endif %}
-+
-+{%- if opendaylight_enabled %}
-+[ml2_odl]
-+port_binding_controller = pseudo-agentdb-binding
-+url = http://{{ server.backend.host }}:{{ server.backend.rest_api_port }}/controller/nb/v2/neutron
-+username = {{ server.backend.user }}
-+password = {{ server.backend.password }}
-+{%- endif %}
-diff --git a/neutron/files/pike/neutron-generic.conf.Debian b/neutron/files/pike/neutron-generic.conf.Debian
-index 123386d..d77f6c8 100644
---- a/neutron/files/pike/neutron-generic.conf.Debian
-+++ b/neutron/files/pike/neutron-generic.conf.Debian
-@@ -37,7 +37,7 @@ auth_strategy = keystone
-
- core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin
-
--service_plugins =neutron.services.l3_router.l3_router_plugin.L3RouterPlugin,neutron.services.metering.metering_plugin.MeteringPlugin
-+service_plugins = {{ neutron.backend.get('router', 'router')}}, metering
-
- {% endif %}
-
-@@ -668,7 +668,7 @@ root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf
- # needs to execute commands in Dom0 in the hypervisor of XenServer, this item
- # should be set to 'xenapi_root_helper', so that it will keep a XenAPI session
- # to pass commands to Dom0. (string value)
--root_helper_daemon = sudo neutron-rootwrap-daemon /etc/neutron/rootwrap.conf
-+#root_helper_daemon = <None>
-
- # Seconds between nodes reporting state to server; should be less than
- # agent_down_time, best if it is half or less than agent_down_time. (floating
-@@ -2092,3 +2092,8 @@ heartbeat_rate = 2
- # Sets the list of available ciphers. value should be a string in the OpenSSL
- # cipher list format. (string value)
- #ciphers = <None>
-+
-+{%- if neutron.backend.ovsdb_connection is defined %}
-+[ovs]
-+ovsdb_connection = {{ neutron.backend.ovsdb_connection }}
-+{%- endif %}
-diff --git a/neutron/files/pike/neutron-server.conf.Debian b/neutron/files/pike/neutron-server.conf.Debian
-index 79376a2..a7a4645 100644
---- a/neutron/files/pike/neutron-server.conf.Debian
-+++ b/neutron/files/pike/neutron-server.conf.Debian
-@@ -50,7 +50,7 @@ core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin
- {% set l3_plugin = 'networking_ovn.l3.l3_ovn.OVNL3RouterPlugin' %}
- {% endif %}
-
--service_plugins ={{ l3_plugin }}, neutron.services.metering.metering_plugin.MeteringPlugin
-+service_plugins = {{ server.backend.get('router', l3_plugin)}}, metering
- {%- if server.lbaas is defined -%},lbaasv2{%- endif -%}
- {%- if fwaas.get('enabled', False) -%},{{ fwaas[fwaas.api_version]['service_plugin'] }}{%- endif -%}
- {%- if server.get('qos', 'True') -%},neutron.services.qos.qos_plugin.QoSPlugin{%- endif -%}
-@@ -703,7 +703,7 @@ root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf
- # needs to execute commands in Dom0 in the hypervisor of XenServer, this item
- # should be set to 'xenapi_root_helper', so that it will keep a XenAPI session
- # to pass commands to Dom0. (string value)
--root_helper_daemon = sudo neutron-rootwrap-daemon /etc/neutron/rootwrap.conf
-+#root_helper_daemon = <None>
-
- # Seconds between nodes reporting state to server; should be less than
- # agent_down_time, best if it is half or less than agent_down_time. (floating
-@@ -2245,3 +2245,8 @@ username = {{ server.identity.user }}
- password = {{ server.identity.password }}
- auth_url=http://{{ server.identity.host }}:35357
- {%- endif %}
-+
-+{%- if server.backend.ovsdb_connection is defined %}
-+[ovs]
-+ovsdb_connection = {{ server.backend.ovsdb_connection }}
-+{%- endif %}
-diff --git a/neutron/gateway.sls b/neutron/gateway.sls
-index 81513d8..7ec9b91 100644
---- a/neutron/gateway.sls
-+++ b/neutron/gateway.sls
-@@ -32,6 +32,7 @@ neutron_gateway_packages:
- /etc/neutron/dhcp_agent.ini:
-   file.managed:
-   - source: salt://neutron/files/{{ gateway.version }}/dhcp_agent.ini
-+  - template: jinja
-   - require:
-     - pkg: neutron_gateway_packages
-
index 11e8bef..1d226e4 100644 (file)
@@ -1,5 +1,5 @@
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-: Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+: 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
index 6e6c18f..b61a3d1 100644 (file)
@@ -1,5 +1,5 @@
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-: Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+: 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
diff --git a/mcp/patches/0004-maas-region-use-authorized_keys-1st-entry.patch b/mcp/patches/0004-maas-region-use-authorized_keys-1st-entry.patch
deleted file mode 100644 (file)
index a4fb44b..0000000
+++ /dev/null
@@ -1,45 +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: Charalampos Kominos <Charalampos.Kominos@enea.com>
-Date: Sat, 5 Aug 2017 02:03:01 +0200
-Subject: [PATCH] maas: region: use authorized_keys 1st entry
-
-MaaS custom py modules accepts the "sshprefs" variable via pillar,
-however we want to read it from ~ubuntu/.ssh/authorized_keys.
-
-Bypass the py module and call MaaS CLI directly, passing the first
-authorized key, which should be mcp.rsa.pub.
-
-Signed-off-by: Charalampos Kominos <Charalampos.Kominos@enea.com>
----
-
-diff --git a/maas/region.sls b/maas/region.sls
---- a/maas/region.sls
-+++ b/maas/region.sls
-@@ -242,12 +242,16 @@
-   - require:
-     - module: maas_config
-
--{%- if region.get('sshprefs', False)  %}
- maas_sshprefs:
--  module.run:
--  - name: maas.process_sshprefs
-+# NOTE(armband): maas.process_sshprefs also works, but we need to read the key
-+#                from authorized_keys. Should be reworked at some point.
-+# module.run:
-+# - name: maas.process_sshprefs
-+# - require:
-+  cmd.run:
-+  - name: "maas login {{ region.admin.username }} http://{{ region.bind.host }}:5240/MAAS/api/2.0 - < /var/lib/maas/.maas_credentials && SSH_KEY=$(cat authorized_keys | head -1) && (maas opnfv sshkeys read | grep -q \"$SSH_KEY\" || maas opnfv sshkeys create \"key=$SSH_KEY\")"
-+  - cwd: "/home/ubuntu/.ssh"
-   - require:
-     - module: maas_config
--{%- endif %}
-
- {%- endif %}
diff --git a/mcp/patches/0004-network.dpdk-Move-ifcfg-br-prv-to-interfaces.u.patch b/mcp/patches/0004-network.dpdk-Move-ifcfg-br-prv-to-interfaces.u.patch
new file mode 100644 (file)
index 0000000..180a9dd
--- /dev/null
@@ -0,0 +1,41 @@
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+: 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: Sun, 25 Feb 2018 03:43:49 +0100
+Subject: [PATCH] network.dpdk: Move ifcfg-br-prv to interfaces.u
+
+Workaround for Upstream-Bug:
+https://github.com/saltstack/salt/issues/40262
+
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ linux/network/dpdk.sls | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/linux/network/dpdk.sls b/linux/network/dpdk.sls
+index 05fe05f..cc0ff9e 100644
+--- a/linux/network/dpdk.sls
++++ b/linux/network/dpdk.sls
+@@ -128,7 +128,7 @@ linux_network_dpdk_bridge_interface_{{ interface_name }}:
+         After=openvswitch-switch.service
+
+ {# enforce ip address and mtu for ovs dpdk br-prv #}
+-/etc/network/interfaces.d/ifcfg-{{ interface_name }}:
++/etc/network/interfaces.u/ifcfg-{{ interface_name }}:
+   file.managed:
+     - contents: |
+         auto {{ interface_name }}
+@@ -138,6 +138,7 @@ linux_network_dpdk_bridge_interface_{{ interface_name }}:
+         {%- if interface.mtu is defined %}
+         mtu {{ interface.mtu }}
+         {%- endif %}
++    - makedirs: True
+     - require:
+       - file: /etc/systemd/system/ifup@{{ interface_name }}.service.d/override.conf
+
index 4c626ba..4a81786 100644 (file)
@@ -1,5 +1,5 @@
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-: Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+: 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
index 8d4a72c..d2f5311 100644 (file)
@@ -1,5 +1,5 @@
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-: Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+: 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
index 49b2b88..2a5e29e 100644 (file)
@@ -1,5 +1,5 @@
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-: Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+: 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
diff --git a/mcp/patches/0008-Handle-extra-environment-variables.patch b/mcp/patches/0008-Handle-extra-environment-variables.patch
new file mode 100644 (file)
index 0000000..8df3227
--- /dev/null
@@ -0,0 +1,25 @@
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+: 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: Michael Polenchuk <mpolenchuk@mirantis.com>
+Date: Mon, 12 Mar 2018 17:43:09 +0400
+Subject: [PATCH] Handle extra environment variables
+
+Change-Id: Ieae46ac65041630759c82238a8a5ce0535c454b2
+
+diff --git a/keystone/files/keystonercv3 b/keystone/files/keystonercv3
+index 1b7f378..984c8a2 100644
+--- a/keystone/files/keystonercv3
++++ b/keystone/files/keystonercv3
+@@ -11,3 +11,6 @@ export OS_REGION_NAME={{ server.region }}
+ export OS_INTERFACE=internal
+ export OS_ENDPOINT_TYPE="internal"
+ export OS_CACERT="{{ server.cacert }}"
++{%- for opt, value in server.get('openrc_extra', {}).iteritems() %}
++{{ "export %s=%s"|format(opt|upper, value) }}
++{%- endfor %}
diff --git a/mcp/patches/0008-Handle-kernel-boot-options.patch b/mcp/patches/0008-Handle-kernel-boot-options.patch
deleted file mode 100644 (file)
index f5198a2..0000000
+++ /dev/null
@@ -1,69 +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: Michael Polenchuk <mpolenchuk@mirantis.com>
-Date: Thu, 25 Jan 2018 13:22:39 +0400
-Subject: [PATCH] Handle kernel boot options
-
-The 'system.kernel.elevator' and 'system.kernel.isolcpu' options
-have been kept for backward compatibility and should be used in new
-fashion way with system.kernel.boot_options parameter.
-
-Change-Id: I51f7167b8b8946500df2065ee6b02bcf21809bc9
-
-diff --git a/linux/system/kernel.sls b/linux/system/kernel.sls
-index 59b7177..b1c3f3b 100644
---- a/linux/system/kernel.sls
-+++ b/linux/system/kernel.sls
-@@ -3,39 +3,24 @@
-
- {%- if system.kernel is defined %}
-
--{%- if system.kernel.isolcpu is defined or system.kernel.elevator is defined %}
-+{%- set kernel_boot_opts = [] %}
-+{%- do kernel_boot_opts.append('isolcpus=' ~ system.kernel.isolcpu) if system.kernel.isolcpu is defined %}
-+{%- do kernel_boot_opts.append('elevator=' ~ system.kernel.elevator) if system.kernel.elevator is defined %}
-+{%- do kernel_boot_opts.extend(system.kernel.boot_options) if system.kernel.boot_options is defined %}
-
-+{%- if kernel_boot_opts %}
- include:
-   - linux.system.grub
-
--{%- if system.kernel.isolcpu is defined %}
--
--/etc/default/grub.d/90-isolcpu.cfg:
--  file.managed:
--    - contents: 'GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT isolcpus={{ system.kernel.isolcpu }}"'
--    - require:
--      - file: grub_d_directory
--{%- if grains.get('virtual_subtype', None) not in ['Docker', 'LXC'] %} 
--    - watch_in:
--      - cmd: grub_update
--
--{%- endif %}
--{%- endif %}
--
--{%- if system.kernel.elevator is defined %}
--
--/etc/default/grub.d/91-elevator.cfg:
-+/etc/default/grub.d/99-custom-settings.cfg:
-   file.managed:
--    - contents: 'GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT elevator={{ system.kernel.elevator }}"'
-+    - contents: 'GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT {{ kernel_boot_opts|join(' ') }}"'
-     - require:
-       - file: grub_d_directory
- {%- if grains.get('virtual_subtype', None) not in ['Docker', 'LXC'] %}
-     - watch_in:
-       - cmd: grub_update
--
--{%- endif %}
- {%- endif %}
--
- {%- endif %}
-
- {%- if system.kernel.version is defined %}
diff --git a/mcp/patches/0009-controller-Use-keystoneclient-to-check-project-ID.patch b/mcp/patches/0009-controller-Use-keystoneclient-to-check-project-ID.patch
deleted file mode 100644 (file)
index ed34e06..0000000
+++ /dev/null
@@ -1,168 +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: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
-Date: Wed, 3 Jan 2018 00:50:50 +0100
-Subject: [PATCH] controller: Use keystoneclient to check project ID
-
-Port fix from [1] for using the internal network when connecting
-to keystone during project ID validation in nova, instead of
-going through public endpoint (and using SSL).
-
-[1] https://bugs.launchpad.net/nova/+bug/1716344
-
-Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
----
- nova/controller.sls                                |  10 ++
- ...keystoneclient-to-check-project-ID-exists.patch | 116 +++++++++++++++++++++
- 2 files changed, 126 insertions(+)
- create mode 100644 nova/files/0001-Use-keystoneclient-to-check-project-ID-exists.patch
-
-diff --git a/nova/controller.sls b/nova/controller.sls
-index a55d037..59af945 100644
---- a/nova/controller.sls
-+++ b/nova/controller.sls
-@@ -71,6 +71,16 @@ contrail_nova_packages:
-
- {%- endif %}
-
-+nova-api-openstack-identity-patch:
-+  file.patch:
-+  - name: /usr/lib/python2.7/dist-packages
-+  - source: salt://nova/files/0001-Use-keystoneclient-to-check-project-ID-exists.patch
-+  - hash: False
-+  - options: '-p1'
-+  - unless: 'test -f /var/cache/salt/minion/files/base/nova/files/0001-Use-keystoneclient-to-check-project-ID-exists.patch && cd /usr/lib/python2.7/dist-packages && patch -p1 -R --dry-run /var/cache/salt/minion/files/base/nova/files/0001-Use-keystoneclient-to-check-project-ID-exists.patch'
-+  - require:
-+    - pkg: nova_controller_packages
-+
- /etc/nova/nova.conf:
-   file.managed:
-   - source: salt://nova/files/{{ controller.version }}/nova-controller.conf.{{ grains.os_family }}
-diff --git a/nova/files/0001-Use-keystoneclient-to-check-project-ID-exists.patch b/nova/files/0001-Use-keystoneclient-to-check-project-ID-exists.patch
-new file mode 100644
-index 0000000..58d027e
---- /dev/null
-+++ b/nova/files/0001-Use-keystoneclient-to-check-project-ID-exists.patch
-@@ -0,0 +1,116 @@
-+From: Christoph Fiehe <fiehe@gmx.de>
-+Date: Wed, 3 Jan 2018 00:11:20 +0100
-+Subject: [PATCH] Use keystoneclient to check project ID exists
-+
-+Based on Christoph's implementation proposed in [1].
-+
-+[1] https://bugs.launchpad.net/nova/+bug/1716344
-+
-+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
-+---
-+ nova/api/openstack/identity.py | 81 ++++++++++++++++--------------------------
-+ 1 file changed, 30 insertions(+), 51 deletions(-)
-+
-+diff --git a/nova/api/openstack/identity.py b/nova/api/openstack/identity.py
-+index 833d3b5..3269cec 100644
-+--- a/nova/api/openstack/identity.py
-++++ b/nova/api/openstack/identity.py
-+@@ -12,16 +12,15 @@
-+ # License for the specific language governing permissions and limitations
-+ # under the License.
-+
-+-from keystoneauth1 import exceptions as kse
-+-from keystoneauth1 import loading as ks_loading
-++from keystoneauth1 import session
-++from keystoneclient import exceptions as kse
-++from keystoneclient.v3 import client
-+ from oslo_log import log as logging
-+ import webob
-+
-+-import nova.conf
-+ from nova.i18n import _
-+
-+
-+-CONF = nova.conf.CONF
-+ LOG = logging.getLogger(__name__)
-+
-+
-+@@ -32,51 +31,31 @@ def verify_project_id(context, project_id):
-+     an HTTPBadRequest is emitted.
-+
-+     """
-+-    sess = ks_loading.load_session_from_conf_options(
-+-        CONF, 'keystone', auth=context.get_auth_plugin())
-+-
-+-    failure = webob.exc.HTTPBadRequest(
-+-            explanation=_("Project ID %s is not a valid project.") %
-+-            project_id)
-++    auth = context.get_auth_plugin()
-++    sess = session.Session(auth=auth)
-++    keystone = client.Client(session=sess)
-+     try:
-+-        resp = sess.get('/projects/%s' % project_id,
-+-                        endpoint_filter={
-+-                            'service_type': 'identity',
-+-                            'version': (3, 0)
-+-                        },
-+-                        raise_exc=False)
-+-    except kse.EndpointNotFound:
-+-        LOG.error(
-+-            "Keystone identity service version 3.0 was not found. This might "
-+-            "be because your endpoint points to the v2.0 versioned endpoint "
-+-            "which is not supported. Please fix this.")
-+-        raise failure
-+-    except kse.ClientException:
-+-        # something is wrong, like there isn't a keystone v3 endpoint,
-+-        # we'll take the pass and default to everything being ok.
-+-        LOG.exception("Unable to contact keystone to verify project_id")
-+-        return True
-+-
-+-    if resp:
-+-        # All is good with this 20x status
-+-        return True
-+-    elif resp.status_code == 404:
-+-        # we got access, and we know this project is not there
-+-        raise failure
-+-    elif resp.status_code == 403:
-+-        # we don't have enough permission to verify this, so default
-+-        # to "it's ok".
-+-        LOG.info(
-+-            "Insufficient permissions for user %(user)s to verify "
-+-            "existence of project_id %(pid)s",
-+-            {"user": context.user_id, "pid": project_id})
-+-        return True
-+-    else:
-+-        LOG.warning(
-+-            "Unexpected response from keystone trying to "
-+-            "verify project_id %(pid)s - resp: %(code)s %(content)s",
-+-            {"pid": project_id,
-+-             "code": resp.status_code,
-+-             "content": resp.content})
-+-        # realize we did something wrong, but move on with a warning
-+-        return True
-++        project = keystone.projects.get(project_id)
-++    except kse.ClientException as e:
-++        if e.http_status == 404:
-++            # we got access, and we know this project is not there
-++            raise webob.exc.HTTPBadRequest(
-++                explanation=_("Project ID %s is not a valid project.") %
-++                project_id)
-++        elif e.http_status == 403:
-++            # we don't have enough permission to verify this, so default
-++            # to "it's ok".
-++            LOG.info(
-++                "Insufficient permissions for user %(user)s to verify "
-++                "existence of project_id %(pid)s",
-++                {"user": context.user_id, "pid": project_id})
-++            return True
-++        else:
-++            LOG.warning(
-++                "Unexpected response from keystone trying to "
-++                "verify project_id %(pid)s - resp: %(code)s %(content)s",
-++                {"pid": project_id,
-++                 "code": resp.status_code,
-++                 "content": resp.content})
-++            # realize we did something wrong, but move on with a warning
-++            return True
index 5b8d5a1..c6f9e3a 100644 (file)
@@ -1,5 +1,5 @@
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-: Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+: 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
@@ -31,6 +31,11 @@ reserved range, but instead DHCP will assign them *inside* the range.
 One alternative would be to handle this via API calls, for each
 node's PXE physical interface, but that overcomplicates things.
 
+3. MaaS blocksize: For some reason the python library behind tftp forces ip
+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>
@@ -39,7 +44,7 @@ Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
 diff --git a/maas/region.sls b/maas/region.sls
 --- a/maas/region.sls
 +++ b/maas/region.sls
-@@ -19,6 +19,36 @@
+@@ -19,6 +19,46 @@
    - require:
      - pkg: maas_region_packages
 
@@ -63,6 +68,16 @@ diff --git a/maas/region.sls b/maas/region.sls
 +    - require_in:
 +      - service: maas_region_services
 +
++maas_ip_blksize_force:
++  file.replace:
++    - name: "/usr/lib/python3/dist-packages/tftp/bootstrap.py"
++    - pattern: 'int_blksize = min\(\(int_blksize, MAX_BLOCK_SIZE\)\)'
++    - repl: 'int_blksize = 1464'
++    - require:
++      - pkg: maas_region_packages
++    - require_in:
++      - service: maas_region_services
++
 +maas_interface_default_mode_dhcp:
 +  file.replace:
 +    - name: "/usr/lib/python3/dist-packages/maasserver/models/node.py"
index fdf84dc..48e945a 100644 (file)
@@ -1,5 +1,5 @@
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-: Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+: 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
@@ -31,6 +31,11 @@ When the new http(s) proxy param is set:
 If linux:system:proxy:keyserver is not defined, the behavior is
 unchanged for backwards compatibility.
 
+To allow runtime decisions whether the keyserver proxy should be used
+add an additional condition for it to match the first nameserver.
+This allows us to mix virtual nodes with MaaS-provisioned nodes in
+Fuel@OPNFV, while keeping the ext_pillar common.
+
 Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
 ---
  README.rst            | 16 ++++++++++++++++
@@ -38,14 +43,13 @@ Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
  2 files changed, 56 insertions(+)
 
 diff --git a/linux/system/repo.sls b/linux/system/repo.sls
-index 5d4d059..724db5a 100644
 --- a/linux/system/repo.sls
 +++ b/linux/system/repo.sls
 @@ -96,13 +96,50 @@ linux_repo_{{ name }}_key:
      - name: "curl -s {{ repo.key_url }} | apt-key add -"
      - watch:
        - file: default_repo_list
-+{%- if system.proxy.keyserver is defined %}
++{%- if system.proxy.keyserver is defined and grains['dns']['nameservers'][0] in system.proxy.keyserver.http %}
 +    - env:
 +      - http_proxy: {{ system.proxy.get('keyserver', {}).get('http', '') }}
 +      - https_proxy: {{ system.proxy.get('keyserver', {}).get('https', '') }}
@@ -58,7 +62,7 @@ index 5d4d059..724db5a 100644
 
  {%- if repo.get('enabled', True) %}
 
-+{%- if system.proxy.keyserver is defined %}
++{%- if system.proxy.keyserver is defined and grains['dns']['nameservers'][0] in system.proxy.keyserver.http %}
 +
 +{%- if repo.get('key') %}
 +
@@ -96,7 +100,7 @@ index 5d4d059..724db5a 100644
    {%- endif %}
    - file: /etc/apt/sources.list.d/{{ name }}.list
    - clean_file: {{ repo.clean|default(True) }}
-+  {%- if system.proxy.keyserver is not defined %}
++  {%- if system.proxy.keyserver is not defined or grains['dns']['nameservers'][0] not in system.proxy.keyserver.http %}
    {%- if repo.key_id is defined %}
    - keyid: {{ repo.key_id }}
    {%- endif %}
diff --git a/mcp/patches/0012-linux.storage.lvm-Disable-filter.patch b/mcp/patches/0012-linux.storage.lvm-Disable-filter.patch
deleted file mode 100644 (file)
index de74fad..0000000
+++ /dev/null
@@ -1,35 +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: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
-Date: Sat, 18 Nov 2017 22:03:01 +0200
-Subject: [PATCH] linux.storage.lvm: Disable filter
-
-Due to upstream bug [1], mixing OS-managed LVM volumes with Cinder
-LVM volumes leads to a broken filter value in lvm.conf.
-Temporarily disable the filter (whitelisting all devices, similar
-to no-Cinder use-cases) until upstream bug is fixed.
-
-[1] https://github.com/salt-formulas/salt-formula-linux/issues/127
-
-Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
----
-
-diff --git a/linux/files/lvm.conf b/linux/files/lvm.conf
---- a/linux/files/lvm.conf
-+++ b/linux/files/lvm.conf
-@@ -129,7 +129,8 @@
-         # Example
-         # Accept every block device:
-
--        filter = [ {%- for vgname, vg in storage.lvm.iteritems() %}{%- if vg.get('enabled', True) %}{%- for dev in vg.devices %}"a|{{ dev }}*|"{%- if not loop.last %},{%- endif %}{%- endfor %}{%- endif %}{%- endfor %}, "r|.*|" ]
-+        # NOTE(opnfv): https://github.com/salt-formulas/salt-formula-linux/issues/127
-+        # filter = [ {%- for vgname, vg in storage.lvm.iteritems() %}{%- if vg.get('enabled', True) %}{%- for dev in vg.devices %}"a|{{ dev }}*|"{%- if not loop.last %},{%- endif %}{%- endfor %}{%- endif %}{%- endfor %}, "r|.*|" ]
-
-         # filter = [ "a|.*/|" ]
-         # Reject the cdrom drive:
diff --git a/mcp/patches/0012-routes-Skip-network-restart-on-noifupdown.patch b/mcp/patches/0012-routes-Skip-network-restart-on-noifupdown.patch
new file mode 100644 (file)
index 0000000..fb42512
--- /dev/null
@@ -0,0 +1,37 @@
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+: 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: Mon, 8 Jan 2018 05:09:11 +0100
+Subject: [PATCH] routes: Skip network restart on 'noifupdown'
+
+Previously, setting up routes did not allow passing 'require_reboot',
+so each route change would lead to a networking service restart,
+rendering interface configuration options like 'noifupdown' useless.
+Allow disabling network restart per-interface using the existing
+'noifupdown' option.
+
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ linux/network/interface.sls | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/linux/network/interface.sls b/linux/network/interface.sls
+index 921ceac..6ebc670 100644
+--- a/linux/network/interface.sls
++++ b/linux/network/interface.sls
+@@ -338,6 +338,9 @@ linux_network_{{ interface_name }}_routes:
+       gateway: {{ route.gateway }}
+       {%- endif %}
+     {%- endfor %}
++  {%- if interface.noifupdown is defined %}
++  - require_reboot: {{ interface.noifupdown }}
++  {%- endif %}
+
+ {%- endif %}
+
diff --git a/mcp/patches/0013-dpdk-Support-ovs-bridge-tagging.patch b/mcp/patches/0013-dpdk-Support-ovs-bridge-tagging.patch
deleted file mode 100644 (file)
index f73931e..0000000
+++ /dev/null
@@ -1,30 +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: Michael Polenchuk <mpolenchuk@mirantis.com>
-Date: Mon, 22 Jan 2018 15:22:47 +0400
-Subject: [PATCH] [dpdk] Support ovs bridge tagging
-
-Bring in "tag" option for dpdk/ovs bridges
-to support vlan-tagged vxlan mode.
-
-Change-Id: I7f1f88233694f2c8b968a6cf55584f32879ec042
-
-diff --git a/linux/network/dpdk.sls b/linux/network/dpdk.sls
-index 1ac9e25..05fe05f 100644
---- a/linux/network/dpdk.sls
-+++ b/linux/network/dpdk.sls
-@@ -110,7 +110,7 @@ linux_network_dpdk_bond_mode_{{ interface_name }}:
-
- linux_network_dpdk_bridge_interface_{{ interface_name }}:
-   cmd.run:
--    - name: "ovs-vsctl add-br {{ interface_name }} -- set bridge {{ interface_name }} datapath_type=netdev"
-+    - name: "ovs-vsctl add-br {{ interface_name }} -- set bridge {{ interface_name }} datapath_type=netdev{% if interface.tag is defined %} -- set port {{ interface_name }} tag={{ interface.tag }}{% endif %}"
-     - unless: "ovs-vsctl show | grep {{ interface_name }}"
-
-     {# OVS dpdk needs ip address for vxlan termination on bridge br-prv #}
diff --git a/mcp/patches/0014-reclass.storage.node-Merge-duplicate-nodes.patch b/mcp/patches/0014-reclass.storage.node-Merge-duplicate-nodes.patch
new file mode 100644 (file)
index 0000000..a9d5b65
--- /dev/null
@@ -0,0 +1,44 @@
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+: 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: Sun, 03 Dec 2017 22:03:01 +0200
+Subject: [PATCH] reclass.storage.node: Merge duplicate nodes
+
+Reclass does not support duplicate nodes in top pillar, so merge all
+nodes with the same name into a single node, inheriting classes from
+all instances.
+
+This allows using multiple "system.reclass.storage.system.*_cluster"
+classes for the same node, based on re-using the name (hostname).
+
+NOTE: defaults.merge module does not merge lists (e.g. for classes),
+so handle that case separately.
+
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+
+diff --git a/reclass/storage/node.sls b/reclass/storage/node.sls
+--- a/reclass/storage/node.sls
++++ b/reclass/storage/node.sls
+@@ -1,7 +1,15 @@
+ {%- from "reclass/map.jinja" import storage with context %}
+ {%- if storage.enabled %}
+
++{%- set storage_by_name = {} %}
+ {%- for node_name, node in storage.get('node', {}).iteritems() %}
++{%- set new_node_name = node.get('name', node_name) %}
++{%- set new_node = storage_by_name.get(new_node_name, {'classes': []}) %}
++{%- do salt['defaults.merge'](node, {'classes': new_node.classes + node.classes}) %}
++{%- do salt['defaults.merge'](storage_by_name, {new_node_name: node}) %}
++{%- endfor %}
++
++{%- for node_name, node in storage_by_name.iteritems() %}
+
+ {%- if node.repeat is defined %}
+
diff --git a/mcp/patches/0015-Set-ovs-bridges-as-L3-interfaces.patch b/mcp/patches/0015-Set-ovs-bridges-as-L3-interfaces.patch
new file mode 100644 (file)
index 0000000..c55a372
--- /dev/null
@@ -0,0 +1,86 @@
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+: 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: Michael Polenchuk <mpolenchuk@mirantis.com>
+Date: Wed, 28 Feb 2018 17:54:28 +0400
+Subject: [PATCH] Set ovs bridges as L3 interfaces
+
+Change-Id: I1e83129cc184cf481bea21d7aa452bf60d9e0499
+
+diff --git a/linux/files/ovs_bridge b/linux/files/ovs_bridge
+new file mode 100644
+index 0000000..c609e45
+--- /dev/null
++++ b/linux/files/ovs_bridge
+@@ -0,0 +1,13 @@
++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 %}
++  {%- if bridge.datapath_type is defined %}
++  ovs_extra set Bridge ${IFACE} datapath_type={{ bridge.datapath_type }}
++  {%- endif %}
+diff --git a/linux/files/ovs_port b/linux/files/ovs_port
+index 222ca8e..efb0307 100644
+--- a/linux/files/ovs_port
++++ b/linux/files/ovs_port
+@@ -1,6 +1,9 @@
+ auto {{ port_name }}
+ allow-{{ port.bridge }} {{ port_name }}
+ iface {{ port_name }} inet {{ port.get('proto', 'manual') }}
++{%- if '.' in port_name %}
++vlan-raw-device {{ port_name.split('.')[0] }}
++{%- endif %}
+ ovs_type {{ port.get('ovs_port_type', 'OVSIntPort') }}
+ 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
+--- a/linux/network/interface.sls
++++ b/linux/network/interface.sls
+@@ -91,6 +91,34 @@ add_int_{{ int_name }}_to_ovs_dpdk_bridge_{{ interface_name }}:
+ ovs_bridge_{{ interface_name }}:
+   openvswitch_bridge.present:
+   - name: {{ interface_name }}
++{%- if interface.get('proto', 'manual') == 'static' %}
++  file.managed:
++  - name: /etc/network/interfaces.u/ifcfg-{{ interface_name }}
++  - makedirs: True
++  - source: salt://linux/files/ovs_bridge
++  - defaults:
++      bridge: {{ interface|yaml }}
++      bridge_name: {{ interface_name }}
++  - template: jinja
++
++linux_interfaces_include_{{ interface_name }}:
++  file.prepend:
++  - name: /etc/network/interfaces
++  - text: |
++      source /etc/network/interfaces.d/*
++      # Workaround for Upstream-Bug: https://github.com/saltstack/salt/issues/40262
++      source /etc/network/interfaces.u/*
++
++ovs_bridge_up_{{ interface_name }}:
++  cmd.run:
++  - name: ifup {{ interface_name }}
++  - require:
++    - file: ovs_bridge_{{ interface_name }}
++    - openvswitch_bridge: ovs_bridge_{{ interface_name }}
++    - file: linux_interfaces_final_include
++  - unless:
++    - ip link show {{ interface_name }} | grep -q '\<UP\>'
++{%- endif %}
+
+ {# add linux network interface into OVS bridge #}
+ {%- for int_name, int in network.interface.items() %}
diff --git a/mcp/patches/0016-Set-boot-source-selections.patch b/mcp/patches/0016-Set-boot-source-selections.patch
new file mode 100644 (file)
index 0000000..ff52681
--- /dev/null
@@ -0,0 +1,31 @@
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+: 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: Michael Polenchuk <mpolenchuk@mirantis.com>
+Date: Thu, 26 Apr 2018 16:29:02 +0400
+Subject: [PATCH] Set boot source selections
+
+Change-Id: I8dc738b3e6e6f1bfcc1348873f162651aff8bbdf
+
+diff --git a/maas/region.sls b/maas/region.sls
+--- a/maas/region.sls
++++ b/maas/region.sls
+@@ -171,6 +171,13 @@ maas_login_admin:
+   cmd.run:
+   - name: "maas-region apikey --username {{ region.admin.username }} > /var/lib/maas/.maas_credentials"
+
++boot_source_selections:
++  cmd.run:
++  - name: "maas login {{ region.admin.username }} http://{{ region.bind.host }}:5240/MAAS/api/2.0 - < /var/lib/maas/.maas_credentials && maas opnfv boot-source-selection update 1 1 release='{{ region.maas_config.default_distro_series }}'"
++  - require:
++    - cmd: maas_login_admin
++  - unless: "maas login {{ region.admin.username }} http://{{ region.bind.host }}:5240/MAAS/api/2.0 - < /var/lib/maas/.maas_credentials && maas opnfv boot-source-selections read 1 | grep -q {{ region.maas_config.default_distro_series }}"
++
+ maas_force_artifact_sync:
+   cmd.script:
+   - name: salt://maas/files/maas-artifact-sync.sh
index 6c52af7..e924580 100644 (file)
@@ -1,5 +1,5 @@
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-: Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+: 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
index 1da3bc5..bb48dcd 100755 (executable)
@@ -11,10 +11,9 @@ 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 [[ ! "${p_dest}" =~ '^#' ]] && [[ "${p_dest}" =~ $2 ]] && \
-      ! 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}"
+    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 < "$1"
+  done < <(grep -vE '^#' "${1}" | grep -E "^.*${2}.*: ")
 fi
index 2eb45b2..6a6e7a3 100644 (file)
@@ -1,20 +1,19 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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: 0001-opendaylight-formula-neutron.patch
 /usr/share/salt-formulas/env: 0002-maas-region-skip-credentials-update.patch
 /usr/share/salt-formulas/env: 0003-maas-region-force-artifact-download.patch
-/usr/share/salt-formulas/env: 0004-maas-region-use-authorized_keys-1st-entry.patch
+/usr/share/salt-formulas/env: 0004-network.dpdk-Move-ifcfg-br-prv-to-interfaces.u.patch
 /usr/share/salt-formulas/env: 0005-maas-module-Obtain-fabric-ID-from-CIDR.patch
 /usr/share/salt-formulas/env: 0006-maas-module-Add-VLAN-DHCP-enable-support.patch
 /usr/share/salt-formulas/env: 0007-network.interface-Fix-ifup-OVS-port-with-route.patch
-/usr/share/salt-formulas/env: 0008-Handle-kernel-boot-options.patch
-/usr/share/salt-formulas/env: 0009-controller-Use-keystoneclient-to-check-project-ID.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: 0012-linux.storage.lvm-Disable-filter.patch
-/usr/share/salt-formulas/env: 0013-dpdk-Support-ovs-bridge-tagging.patch
+/usr/share/salt-formulas/env: 0012-routes-Skip-network-restart-on-noifupdown.patch
+/usr/share/salt-formulas/env: 0015-Set-ovs-bridges-as-L3-interfaces.patch
+/usr/share/salt-formulas/env: 0016-Set-boot-source-selections.patch
@@ -5,6 +5,4 @@
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
----
-classes:
-  - cluster.virtual-mcp-pike-common-noha.openstack_init
+/usr/share/salt-formulas/env: 0014-reclass.storage.node-Merge-duplicate-nodes.patch
diff --git a/mcp/patches/reclass-system-salt-model/0001-Bring-in-opendaylight-support.patch b/mcp/patches/reclass-system-salt-model/0001-Bring-in-opendaylight-support.patch
deleted file mode 100644 (file)
index c7ba5a7..0000000
+++ /dev/null
@@ -1,110 +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: Michael Polenchuk <mpolenchuk@mirantis.com>
-Date: Thu, 29 Jun 2017 12:22:42 +0400
-Subject: [PATCH] Bring in opendaylight support
-
-Change-Id: I3efec9a8b586a6c75b1c1635ad2a7024d73d9ad2
----
- neutron/control/opendaylight/cluster.yml               | 17 +++++++++++++++++
- neutron/control/opendaylight/single.yml                | 15 +++++++++++++++
- neutron/gateway/opendaylight/single.yml                |  7 +++++++
- opendaylight/server/single.yml                         |  2 ++
- reclass/storage/system/opendaylight_control_single.yml | 13 +++++++++++++
- 5 files changed, 54 insertions(+)
- create mode 100644 neutron/control/opendaylight/cluster.yml
- create mode 100644 neutron/control/opendaylight/single.yml
- create mode 100644 neutron/gateway/opendaylight/single.yml
- create mode 100644 opendaylight/server/single.yml
- create mode 100644 reclass/storage/system/opendaylight_control_single.yml
-
-diff --git a/neutron/control/opendaylight/cluster.yml b/neutron/control/opendaylight/cluster.yml
-new file mode 100644
-index 0000000..a32e7ab
---- /dev/null
-+++ b/neutron/control/opendaylight/cluster.yml
-@@ -0,0 +1,17 @@
-+classes:
-+- service.keepalived.cluster.single
-+- service.haproxy.proxy.single
-+- service.neutron.control.cluster
-+- system.neutron.control.openvswitch.cluster
-+parameters:
-+  neutron:
-+    server:
-+      backend:
-+        host: ${_param:opendaylight_service_host}
-+        rest_api_port: 8282
-+        user: admin
-+        password: admin
-+        ovsdb_connection: tcp:127.0.0.1:6639
-+        mechanism:
-+          ovs:
-+            driver: opendaylight_v2
-diff --git a/neutron/control/opendaylight/single.yml b/neutron/control/opendaylight/single.yml
-new file mode 100644
-index 0000000..053f14d
---- /dev/null
-+++ b/neutron/control/opendaylight/single.yml
-@@ -0,0 +1,15 @@
-+classes:
-+- service.neutron.control.single
-+- system.neutron.control.openvswitch.single
-+parameters:
-+  neutron:
-+    server:
-+      backend:
-+        host: ${_param:opendaylight_service_host}
-+        rest_api_port: 8282
-+        user: admin
-+        password: admin
-+        ovsdb_connection: tcp:127.0.0.1:6639
-+        mechanism:
-+          ovs:
-+            driver: opendaylight_v2
-diff --git a/neutron/gateway/opendaylight/single.yml b/neutron/gateway/opendaylight/single.yml
-new file mode 100644
-index 0000000..2169001
---- /dev/null
-+++ b/neutron/gateway/opendaylight/single.yml
-@@ -0,0 +1,7 @@
-+classes:
-+- service.neutron.gateway.single
-+parameters:
-+  neutron:
-+    gateway:
-+      backend:
-+        ovsdb_connection: tcp:127.0.0.1:6639
-diff --git a/opendaylight/server/single.yml b/opendaylight/server/single.yml
-new file mode 100644
-index 0000000..3d11872
---- /dev/null
-+++ b/opendaylight/server/single.yml
-@@ -0,0 +1,2 @@
-+classes:
-+- service.opendaylight.server.single
-diff --git a/reclass/storage/system/opendaylight_control_single.yml b/reclass/storage/system/opendaylight_control_single.yml
-new file mode 100644
-index 0000000..ad809f5
---- /dev/null
-+++ b/reclass/storage/system/opendaylight_control_single.yml
-@@ -0,0 +1,13 @@
-+parameters:
-+  _param:
-+    opendaylight_control_hostname: odl01
-+  reclass:
-+    storage:
-+      node:
-+        opendaylight_control_node01:
-+          name: ${_param:opendaylight_control_hostname}
-+          domain: ${_param:cluster_domain}
-+          params:
-+            salt_master_host: ${_param:reclass_config_master}
-+            linux_system_codename: ${_param:linux_system_codename}
-+            single_address: ${_param:opendaylight_service_host}
@@ -1,5 +1,5 @@
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-: Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+: 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
@@ -20,7 +20,7 @@ Change-Id: I7e9a1b180f4e0ddb24ec72ed9f08c9e2580c7897
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/keystone/client/single.yml b/keystone/client/single.yml
-index ebf5b5f..8007710 100644
+index a79ed7ec..86b4e09e 100644
 --- a/keystone/client/single.yml
 +++ b/keystone/client/single.yml
 @@ -4,7 +4,7 @@ classes:
@@ -31,4 +31,4 @@ index ebf5b5f..8007710 100644
 +- system.keystone.client.service.keystone3
  - system.keystone.client.service.neutron
  parameters:
-   linux:
+   _param:
diff --git a/mcp/patches/reclass-system-salt-model/0002-mongodb-Parameterize-cluster-hostnames.patch b/mcp/patches/reclass-system-salt-model/0002-mongodb-Parameterize-cluster-hostnames.patch
deleted file mode 100644 (file)
index b75044b..0000000
+++ /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
-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
-Date: Sun, 10 Dec 2017 21:58:52 +0100
-Subject: [PATCH] mongodb: Parameterize cluster hostnames
-
-Replace mdb{01,02,03} with reclass params, similar to prev commit.
-
-Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
----
- mongodb/server/cluster.yml | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/mongodb/server/cluster.yml b/mongodb/server/cluster.yml
-index f3c16d6..1d1e397 100644
---- a/mongodb/server/cluster.yml
-+++ b/mongodb/server/cluster.yml
-@@ -3,9 +3,9 @@ classes:
- parameters:
-   _param:
-     mongodb_server_replica_set: mongodb
--    mongodb_master: mdb01
-+    mongodb_master: ${_param:openstack_telemetry_node01_hostname}
-     mongodb_server_members:
--    - host: mdb01
-+    - host: ${_param:openstack_telemetry_node01_hostname}
-       priority: 2
--    - host: mdb02
--    - host: mdb03
-+    - host: ${_param:openstack_telemetry_node02_hostname}
-+    - host: ${_param:openstack_telemetry_node03_hostname}
index 8d0c46c..498743b 100644 (file)
@@ -1,5 +1,5 @@
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-: Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+: 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
diff --git a/mcp/patches/scripts/0002-salt-master-init.sh-Apply-OPNFV-Fuel-patches.patch b/mcp/patches/scripts/0002-salt-master-init.sh-Apply-OPNFV-Fuel-patches.patch
new file mode 100644 (file)
index 0000000..6c7cbb6
--- /dev/null
@@ -0,0 +1,35 @@
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+: 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: Fri, 8 Dec 2017 20:30:46 +0100
+Subject: [PATCH] salt-master-init.sh: Apply OPNFV Fuel patches
+
+Some of Fuel@OPNFV patches need to be applied before the reclass
+storage.node state is ran for Salt Master, i.e. between installing
+salt-formula-* packages and configuring the Salt Master salt services.
+
+JIRA: FUEL-310
+
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ salt-master-init.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/salt-master-init.sh b/salt-master-init.sh
+index 343324c..a4ec138 100755
+--- a/salt-master-init.sh
++++ b/salt-master-init.sh
+@@ -284,6 +284,7 @@ options
+     system_config
+
+     saltmaster_bootstrap &&\
++    /root/fuel/mcp/patches/patch.sh /root/fuel/mcp/patches/patches_init.list formulas &&\
+     saltmaster_init &&\
+
+     verify_salt_minions
@@ -1,5 +1,5 @@
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-: Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+: 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
@@ -23,7 +23,7 @@ Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
  2 files changed, 13 insertions(+), 5 deletions(-)
 
 diff --git a/salt-master-init.sh b/salt-master-init.sh
-index 343324c..48a05b9 100755
+index a4ec138..db90a22 100755
 --- a/salt-master-init.sh
 +++ b/salt-master-init.sh
 @@ -24,6 +24,12 @@ options() {
index 496fab9..a6b1b7d 100644 (file)
@@ -1 +1,17 @@
 **/*_pdf.yml
+mcp-pike-common-ha/infra/init.yml
+mcp-pike-common-ha/openstack_control.yml
+mcp-pike-common-ha/openstack_init.yml
+mcp-pike-common-ha/openstack_interface_vcp_biport.yml
+mcp-pike-common-ha/openstack_interface_vcp_triport.yml
+mcp-pike-common-ha/openstack_proxy.yml
+mcp-pike-ovs-ha/infra/init_vcp.yml
+mcp-pike-ovs-ha/infra/kvm.yml
+mcp-pike-ovs-dpdk-ha/infra/init_vcp.yml
+mcp-pike-ovs-dpdk-ha/infra/kvm.yml
+mcp-pike-odl-ha/infra/init_vcp.yml
+mcp-pike-odl-ha/infra/kvm.yml
+mcp-pike-ovn-ha/infra/init_vcp.yml
+mcp-pike-ovn-ha/infra/kvm.yml
+mcp-pike-odl-ha/opendaylight/control.yml
+mcp-pike-odl-ha/openstack/init.yml
index dc09cfb..6923404 100644 (file)
@@ -8,16 +8,16 @@ Fuel@OPNFV Cluster Reclass Models
 Overview
 --------
 
-#. Common classes (baremetal + virtual)
+#. Common classes (HA + noHA)
 
    - all-mcp-arch-common
 
-#. Common classes (specific to either baremetal or virtual deploys)
+#. Common classes (HA baremetal/virtual, noHA virtual)
 
-   - baremetal-mcp-<release>-common-ha
-   - virtual-mcp-<release>-common-noha
+   - mcp-<release>-common-ha
+   - mcp-<release>-common-noha
 
 #. Cluster specific classes
 
-   - baremetal-mcp-<release>-*-{ha,noha}
-   - virtual-mcp-<release>-*-{ha,noha}
+   - mcp-<release>-*-{ha,noha}
+   - mcp-<release>-*-{ha,noha}
index 3b333ed..a44475b 100644 (file)
@@ -8,6 +8,7 @@
 ---
 parameters:
   _param:
+    salt_control_trusty_image: ''  # Dummy value, to keep reclass 1.5.2 happy
     salt_control_xenial_image: salt://salt/files/control/images/base_image_opnfv_fuel_vcp.img
 
     # VMs spawned on Foundation Node / Jump Host net ifaces (max 4)
diff --git a/mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_dpdk_pdf.yml.j2 b/mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_dpdk_pdf.yml.j2
new file mode 100644 (file)
index 0000000..703d535
--- /dev/null
@@ -0,0 +1,42 @@
+##############################################################################
+# 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 %}
+---
+parameters:
+  reclass:
+    storage:
+      node:
+        # NOTE: Until SDF is in place, assume all computes are identical
+        openstack_compute_node01: &openstack_compute_node01
+          params:
+{#- No partial defaults, all or nothing. Defaults tuned for lf-pod2. #}
+{%- if conf.idf.fuel.reclass is defined %}
+{%- if conf.idf.fuel.reclass.node[nm.cmp001.idx].compute_params.dpdk is defined %}
+{#- Can't dump json here due to dpdk0_* below, explicitly create yaml #}
+{%- set _dpdk = conf.idf.fuel.reclass.node[nm.cmp001.idx].compute_params.dpdk %}
+{%- for _i in _dpdk %}
+            {{ _i }}: '"{{ _dpdk[_i] }}"'
+{%- endfor %}
+{%- endif %}
+{%- else %}
+            compute_hugepages_size: 2M
+            compute_hugepages_count: 8192
+            compute_hugepages_mount: /mnt/hugepages_2M
+            compute_kernel_isolcpu: 2,3,10,11
+            compute_dpdk_driver: uio
+            compute_ovs_pmd_cpu_mask: '"0xc04"'
+            compute_ovs_dpdk_socket_mem: '"2048,2048"'
+            compute_ovs_dpdk_lcore_mask: '"0x8"'
+            compute_ovs_memory_channels: '"2"'
+            dpdk0_driver: igb_uio
+            dpdk0_n_rxq: 2
+{%- endif %}
+            dpdk0_name: {{ nm.cmp001.nic_private }}
+            dpdk0_pci: '"{{ nm.cmp001.bus_private }}"'
+        openstack_compute_node02:
+          <<: *openstack_compute_node01
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
new file mode 100644 (file)
index 0000000..fb25cc6
--- /dev/null
@@ -0,0 +1,33 @@
+##############################################################################
+# 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 %}
+---
+parameters:
+  reclass:
+    storage:
+      node:
+        # NOTE: Until SDF is in place, assume all computes are identical
+        openstack_compute_node01: &openstack_compute_node01
+          params:
+{#- No partial defaults, all or nothing. Defaults tuned for lf-pod2. #}
+{%- if conf.idf.fuel.reclass is defined %}
+{%- if conf.idf.fuel.reclass.node[nm.cmp001.idx].compute_params.common is defined %}
+{%- set _common = conf.idf.fuel.reclass.node[nm.cmp001.idx].compute_params.common %}
+{%- for _i in _common %}
+            {{ _i }}: '"{{ _common[_i] }}"'
+{%- endfor %}
+{%- else %}
+            dummy_value: ~
+{%- endif %}
+{%- else %}
+            compute_hugepages_size: 1G
+            compute_hugepages_count: 16
+            compute_hugepages_mount: /mnt/hugepages_1G
+{%- endif %}
+        openstack_compute_node02:
+          <<: *openstack_compute_node01
index f09ee5d..f9aeb71 100644 (file)
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
index 28dcdcd..9a47b1c 100644 (file)
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
diff --git a/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/pod_config.yml.example b/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/pod_config.yml.example
deleted file mode 100644 (file)
index 628aeba..0000000
+++ /dev/null
@@ -1,111 +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
-##############################################################################
----
-parameters:
-  _param:
-
-    opnfv_infra_config_address: 10.167.4.100
-    opnfv_infra_config_pxe_address: 192.168.11.2
-    opnfv_infra_maas_node01_address: 10.167.4.3
-    opnfv_infra_maas_node01_deploy_address: 192.168.11.3
-    opnfv_infra_kvm_address: 10.167.4.140
-    opnfv_infra_kvm_node01_address: 10.167.4.141
-    opnfv_infra_kvm_node02_address: 10.167.4.142
-    opnfv_infra_kvm_node03_address: 10.167.4.143
-
-    opnfv_infra_maas_pxe_network_address: 192.168.11.0
-    opnfv_infra_maas_pxe_start_address: 192.168.11.4
-    opnfv_infra_maas_pxe_end_address: 192.168.11.100
-
-    opnfv_openstack_gateway_node01_address: 10.167.4.124
-    opnfv_openstack_gateway_node02_address: 10.167.4.125
-    opnfv_openstack_gateway_node03_address: 10.167.4.126
-    opnfv_openstack_gateway_node01_tenant_address: 10.1.0.6
-    opnfv_openstack_gateway_node02_tenant_address: 10.1.0.7
-    opnfv_openstack_gateway_node03_tenant_address: 10.1.0.9
-    opnfv_openstack_proxy_address: 172.30.10.103
-    opnfv_openstack_proxy_node01_address: 172.30.10.104
-    opnfv_openstack_proxy_node02_address: 172.30.10.105
-    opnfv_openstack_proxy_control_address: 10.167.4.103
-    opnfv_openstack_proxy_node01_control_address: 10.167.4.104
-    opnfv_openstack_proxy_node02_control_address: 10.167.4.105
-    opnfv_openstack_control_address: 10.167.4.10
-    opnfv_openstack_control_node01_address: 10.167.4.11
-    opnfv_openstack_control_node02_address: 10.167.4.12
-    opnfv_openstack_control_node03_address: 10.167.4.13
-    opnfv_openstack_database_address: 10.167.4.50
-    opnfv_openstack_database_node01_address: 10.167.4.51
-    opnfv_openstack_database_node02_address: 10.167.4.52
-    opnfv_openstack_database_node03_address: 10.167.4.53
-    opnfv_openstack_message_queue_address: 10.167.4.40
-    opnfv_openstack_message_queue_node01_address: 10.167.4.41
-    opnfv_openstack_message_queue_node02_address: 10.167.4.42
-    opnfv_openstack_message_queue_node03_address: 10.167.4.43
-    opnfv_openstack_telemetry_address: 10.167.4.75
-    opnfv_openstack_telemetry_node01_address: 10.167.4.76
-    opnfv_openstack_telemetry_node02_address: 10.167.4.77
-    opnfv_openstack_telemetry_node03_address: 10.167.4.78
-    opnfv_openstack_compute_node01_single_address: 10.167.4.101
-    opnfv_openstack_compute_node02_single_address: 10.167.4.102
-    opnfv_openstack_compute_node03_single_address: 10.167.4.103
-    opnfv_openstack_compute_node01_control_address: 10.167.4.101
-    opnfv_openstack_compute_node02_control_address: 10.167.4.102
-    opnfv_openstack_compute_node03_control_address: 10.167.4.103
-    opnfv_openstack_compute_node01_tenant_address: 10.1.0.101
-    opnfv_openstack_compute_node02_tenant_address: 10.1.0.102
-    opnfv_openstack_compute_node03_tenant_address: 10.1.0.103
-    opnfv_openstack_compute_node01_external_address: 172.30.10.101
-    opnfv_openstack_compute_node02_external_address: 172.30.10.102
-
-    opnfv_opendaylight_server_node01_single_address: 10.167.4.111
-
-    opnfv_net_public: 172.30.10.0/24
-    opnfv_net_public_mask: 255.255.255.0
-    opnfv_net_public_gw: 172.30.10.1
-    opnfv_net_public_pool_start: 172.30.10.80
-    opnfv_net_public_pool_end: 172.30.10.100
-    opnfv_name_servers: ['8.8.8.8', '8.8.4.4']
-    opnfv_dns_server01: '8.8.8.8'
-
-    opnfv_net_mgmt_vlan: 300
-    opnfv_net_tenant_vlan: 1000
-
-    opnfv_maas_node01_architecture: 'amd64/generic'
-    opnfv_maas_node01_power_address: 172.30.8.75
-    opnfv_maas_node01_power_type: ipmi
-    opnfv_maas_node01_power_user: admin
-    opnfv_maas_node01_power_password: octopus
-    opnfv_maas_node01_interface_mac: '00:25:b5:a0:00:2a'
-
-    opnfv_maas_node02_architecture: 'amd64/generic'
-    opnfv_maas_node02_power_address: 172.30.8.65
-    opnfv_maas_node02_power_type: ipmi
-    opnfv_maas_node02_power_user: admin
-    opnfv_maas_node02_power_password: octopus
-    opnfv_maas_node02_interface_mac: '00:25:b5:a0:00:3a'
-
-    opnfv_maas_node03_architecture: 'amd64/generic'
-    opnfv_maas_node03_power_address: 172.30.8.74
-    opnfv_maas_node03_power_type: ipmi
-    opnfv_maas_node03_power_user: admin
-    opnfv_maas_node03_power_password: octopus
-    opnfv_maas_node03_interface_mac: '00:25:b5:a0:00:4a'
-
-    opnfv_maas_node04_architecture: 'amd64/generic'
-    opnfv_maas_node04_power_address: 172.30.8.73
-    opnfv_maas_node04_power_type: ipmi
-    opnfv_maas_node04_power_user: admin
-    opnfv_maas_node04_power_password: octopus
-    opnfv_maas_node04_interface_mac: '00:25:b5:a0:00:5a'
-
-    opnfv_maas_node05_architecture: 'amd64/generic'
-    opnfv_maas_node05_power_address: 172.30.8.72
-    opnfv_maas_node05_power_type: ipmi
-    opnfv_maas_node05_power_user: admin
-    opnfv_maas_node05_power_password: octopus
-    opnfv_maas_node05_interface_mac: '00:25:b5:a0:00:6a'
diff --git a/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/runtime.yml b/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/runtime.yml
deleted file mode 100644 (file)
index 387b57f..0000000
+++ /dev/null
@@ -1,14 +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
-##############################################################################
----
-parameters:
-  _param:
-    opnfv_salt_master_ip: 10.20.0.2
-    opnfv_maas_mcp_address: 10.20.0.3
-    opnfv_net_mcpcontrol: 10.20.0.0
-    opnfv_net_mcpcontrol_mask: 255.255.255.0
@@ -1,12 +1,15 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
 ##############################################################################
 ---
+{#- conf.MCPCONTROL_NET & co are mandatory, defaults are set via globals.sh #}
 parameters:
   _param:
-    # NOTE: This file is overwritten at runtime by parsing the PDF.
-    opnfv_use_pod_descriptor_file: true
+    opnfv_salt_master_ip: {{ conf.SALT_MASTER }}
+    opnfv_maas_mcp_address: {{ conf.MAAS_IP }}
+    opnfv_net_mcpcontrol: {{ conf.MCPCONTROL_NET }}
+    opnfv_net_mcpcontrol_mask: {{ conf.MCPCONTROL_PREFIX | netmask }}
diff --git a/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/runtime.yml.template b/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/runtime.yml.template
deleted file mode 100644 (file)
index 64f7535..0000000
+++ /dev/null
@@ -1,14 +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
-##############################################################################
----
-parameters:
-  _param:
-    opnfv_salt_master_ip: ${SALT_MASTER}
-    opnfv_maas_mcp_address: ${MAAS_IP}
-    opnfv_net_mcpcontrol: ${SALT_MASTER%.*}.0
-    opnfv_net_mcpcontrol_mask: 255.255.255.0
index a7e469b..a62dd04 100644 (file)
@@ -8,6 +8,7 @@
 ---
 parameters:
   _param:
+    salt_control_trusty_image: ''  # Dummy value, to keep reclass 1.5.2 happy
     salt_control_xenial_image: salt://salt/files/control/images/base_image_opnfv_fuel_vcp.img
 
     # VMs spawned on Foundation Node / Jump Host net ifaces (max 4)
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/kvm_pdf.yml.j2 b/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/kvm_pdf.yml.j2
deleted file mode 100644 (file)
index 0aab6cb..0000000
+++ /dev/null
@@ -1,98 +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
-##############################################################################
-{# NOTE: br-{mgmt,ctl} are cross-referenced, careful when changing names #}
-{%- if conf.idf is defined and conf.idf.net_config is defined -%}
-    {#- NOTE: Currently, we assume all cluster nodes use the same mapping -#}
-
-    {#- Determine interface index for each network (plumbing vars) -#}
-    {%- set idx_admin = conf['idf']['net_config']['admin']['interface'] -%}
-    {%- set idx_mgmt = conf['idf']['net_config']['mgmt']['interface'] -%}
-    {%- set idx_private = conf['idf']['net_config']['private']['interface'] -%}
-    {%- set idx_public = conf['idf']['net_config']['public']['interface'] -%}
-
-    {#- Physical interface OS name for each network (e.g. em1, enp1s0f1) -#}
-    {%- set node = conf['idf']['fuel']['network']['node'][0] -%}
-    {%- set nic_admin = node['interfaces'][idx_admin] -%}
-    {%- set nic_mgmt = node['interfaces'][idx_mgmt] -%}
-    {%- set nic_private = node['interfaces'][idx_private] -%}
-    {%- set nic_public = node['interfaces'][idx_public] -%}
-
-    {#- PCI addresses (only for DPDK on private) -#}
-    {%- set bus_private = node['busaddr'][idx_private] -%}
-
-    {#- VLAN for each network (only untagged 'admin' is supported by MaaS config!) -#}
-    {%- set vlan_admin = conf['idf']['net_config']['admin']['vlan'] -%}
-    {%- set vlan_mgmt = conf['idf']['net_config']['mgmt']['vlan'] -%}
-    {%- set vlan_private = conf['idf']['net_config']['private']['vlan'] -%}
-    {%- set vlan_public = conf['idf']['net_config']['public']['vlan'] -%}
-{%- else -%}
-    {%- set nic_admin = 'enp6s0' -%}
-    {%- set nic_mgmt = 'enp6s0' -%}
-    {%- set nic_private = None -%}
-    {%- set nic_public = None -%}
-    {%- set vlan_admin = 'native' -%}
-    {%- set vlan_mgmt = '300' -%}
-    {%- set vlan_private = '1000' -%}
-{%- endif -%}
-
-{#- Filter-out NIC duplicates by constructing a dict (used NICs only) -#}
-{%- set nics = { nic_admin: True, nic_mgmt: True, nic_public: True } -%}
-
-{%- set vlans = { vlan_admin: nic_admin, vlan_mgmt: nic_mgmt, vlan_public: nic_public } -%}
----
-parameters:
-  linux:
-    network:
-      interface:
-{%- for nic in nics %}
-        {{ nic }}:
-          enabled: true
-          type: eth
-          proto: manual
-          address: 0.0.0.0
-          netmask: 255.255.255.0
-          name: {{ nic }}
-          noifupdown: true
-{%- endfor %}
-
-{%- for vlan in vlans %}
-    {%- if vlan and vlan != 'native' %}
-        {{ vlans[vlan] }}.{{ vlan }}:
-          enabled: true
-          proto: manual
-          type: vlan
-          name: {{ vlans[vlan] }}.{{ vlan }}
-          use_interfaces:
-            - {{ vlans[vlan] }}
-    {%- endif %}
-{%- endfor %}
-
-        br-mgmt:
-          enabled: true
-          proto: dhcp
-          type: bridge
-          use_interfaces:
-            - {{ nic_admin }}{% if vlan_admin and vlan_admin != 'native' %}.{{ vlan_admin }}{% endif %}
-          noifupdown: true
-        br-ctl:
-          enabled: true
-          type: bridge
-          proto: static
-          address: ${_param:single_address}
-          netmask: 255.255.255.0
-          use_interfaces:
-            - {{ nic_mgmt }}{% if vlan_mgmt and vlan_mgmt != 'native' %}.{{ vlan_mgmt }}{% endif %}
-        br-ex:
-          enabled: true
-          proto: manual
-          address: 0.0.0.0
-          netmask: ${_param:opnfv_net_public_mask}
-          type: bridge
-          use_interfaces:
-            - {{ nic_public }}{% if vlan_public and vlan_public != 'native' %}.{{ vlan_public }}{% endif %}
-          noifupdown: true
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_compute_pdf.yml.j2
deleted file mode 100644 (file)
index 2e94669..0000000
+++ /dev/null
@@ -1,118 +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
-##############################################################################
-{# NOTE: br-{mgmt,ctl} are cross-referenced, careful when changing names #}
-{%- if conf.idf is defined and conf.idf.net_config is defined -%}
-    {#- NOTE: Currently, we assume all cluster nodes use the same mapping -#}
-
-    {#- Determine interface index for each network (plumbing vars) -#}
-    {%- set idx_admin = conf['idf']['net_config']['admin']['interface'] -%}
-    {%- set idx_mgmt = conf['idf']['net_config']['mgmt']['interface'] -%}
-    {%- set idx_private = conf['idf']['net_config']['private']['interface'] -%}
-    {%- set idx_public = conf['idf']['net_config']['public']['interface'] -%}
-
-    {#- Physical interface OS name for each network (e.g. em1, enp1s0f1) -#}
-    {%- set iface_names = conf['idf']['fuel']['network']['node'][3]['interfaces'] -%}
-    {%- set nic_admin = iface_names[idx_admin] -%}
-    {%- set nic_mgmt = iface_names[idx_mgmt] -%}
-    {%- set nic_private = iface_names[idx_private] -%}
-    {%- set nic_public = iface_names[idx_public] -%}
-
-    {#- VLAN for each network (only untagged 'admin' is supported by MaaS config!) -#}
-    {%- set vlan_admin = conf['idf']['net_config']['admin']['vlan'] -%}
-    {%- set vlan_mgmt = conf['idf']['net_config']['mgmt']['vlan'] -%}
-    {%- set vlan_private = conf['idf']['net_config']['private']['vlan'] -%}
-    {%- set vlan_public = conf['idf']['net_config']['public']['vlan'] -%}
-{%- else -%}
-    {%- set nic_admin = 'enp6s0' -%}
-    {%- set nic_mgmt = 'enp6s0' -%}
-    {%- set nic_private = None -%}
-    {%- set nic_public = None -%}
-    {%- set vlan_admin = 'native' -%}
-    {%- set vlan_mgmt = '300' -%}
-    {%- set vlan_private = '1000' -%}
-{%- endif -%}
-
-{#- Filter-out NIC duplicates by constructing a dict (used NICs only) -#}
-{%- set nics = { nic_admin: True, nic_mgmt: True } -%}
-
-{%- set vlans = { vlan_admin: nic_admin, vlan_mgmt: nic_mgmt } -%}
----
-parameters:
-  linux:
-    network:
-      bridge: openvswitch
-      interface:
-{%- for nic in nics %}
-    {%- if nic == nic_admin %}
-        {{ nic }}:
-          enabled: true
-          type: eth
-          proto: dhcp
-          name: {{ nic }}
-    {%- else %}
-        {{ nic }}:
-          enabled: true
-          type: eth
-          proto: manual
-          address: 0.0.0.0
-          {%- if nic == nic_public %}
-          netmask: ${_param:opnfv_net_public_mask}
-          {%- else %}
-          netmask: 255.255.255.0
-          {%- endif %}
-          mtu: ${_param:interface_mtu}
-          name: {{ nic }}
-    {%- endif %}
-{%- endfor %}
-
-{%- for vlan in vlans %}
-    {%- if vlan and vlan != 'native' %}
-        {{ vlans[vlan] }}.{{ vlan }}:
-          enabled: true
-          proto: manual
-          type: vlan
-          name: {{ vlans[vlan] }}.{{ vlan }}
-          use_interfaces:
-            - {{ vlans[vlan] }}
-    {%- endif %}
-{%- endfor %}
-
-        br-ctl:
-          enabled: true
-          type: bridge
-          proto: static
-          address: ${_param:single_address}
-          netmask: 255.255.255.0
-          use_interfaces:
-            - {{ nic_mgmt }}{% if vlan_mgmt and vlan_mgmt != 'native' %}.{{ vlan_mgmt }}{% endif %}
-        br-floating:
-          enabled: true
-          type: ovs_bridge
-          mtu: ${_param:interface_mtu}
-        br-ex:
-          enabled: true
-          type: ovs_port
-          bridge: br-floating
-          proto: static
-          {%- if vlan_public and vlan_public != 'native' %}
-          ovs_options: tag={{ vlan_public }}
-          {%- endif %}
-          address: ${_param:external_address}
-          netmask: 255.255.255.0
-          route:
-            public:
-              address: 0.0.0.0
-              netmask: 0.0.0.0
-              gateway: ${_param:opnfv_net_public_gw}
-        {{ nic_public }}:
-          enabled: true
-          proto: manual
-          ovs_port_type: OVSPort
-          type: ovs_port
-          ovs_bridge: br-floating
-          bridge: br-floating
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_proxy.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_proxy.yml
deleted file mode 100644 (file)
index f83590c..0000000
+++ /dev/null
@@ -1,45 +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
-##############################################################################
----
-classes:
-  - system.nginx.server.single
-  - system.nginx.server.proxy.openstack_api
-  - system.nginx.server.proxy.openstack_vnc
-  - system.nginx.server.proxy.openstack_web
-  - system.nginx.server.proxy.openstack.aodh
-  - system.nginx.server.proxy.openstack.ceilometer
-  - system.horizon.server.single
-  - system.salt.minion.cert.proxy
-  - system.sphinx.server.doc.reclass
-  - service.keepalived.cluster.single
-  - system.keepalived.cluster.instance.openstack_web_public_vip
-parameters:
-  _param:
-    cluster_vip_address: ${_param:openstack_proxy_address}
-    keepalived_openstack_web_public_vip_address: ${_param:cluster_vip_address}
-    keepalived_openstack_web_public_vip_interface: ${_param:single_nic}
-    keepalived_vip_address: ${_param:openstack_proxy_control_address}
-    keepalived_vip_interface: ${_param:control_nic}
-    keepalived_vip_virtual_router_id: 240
-    nginx_proxy_ssl:
-      enabled: true
-      authority: ${_param:salt_minion_ca_authority}
-      engine: salt
-      mode: secure
-    salt_minion_ca_host: cfg01.${_param:cluster_domain}
-  linux:
-    system:
-      package:
-        libapache2-mod-wsgi:
-          version: latest
-  salt:
-    minion:
-      cert:
-        proxy:
-          alternative_names: "IP:${_param:openstack_proxy_address}"
-          key_usage: 'digitalSignature, keyEncipherment'
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/compute.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/compute.yml
deleted file mode 100644 (file)
index 473b3ff..0000000
+++ /dev/null
@@ -1,31 +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
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-pike-common-ha.openstack_compute
-  - cluster.baremetal-mcp-pike-odl-ha.openstack.compute_pdf
-  - cluster.baremetal-mcp-pike-odl-ha.infra
-  - system.neutron.gateway.opendaylight.single
-parameters:
-  _param:
-    neutron_agents:
-      - neutron-dhcp-agent
-      - neutron-metadata-agent
-  opendaylight:
-    client:
-      ovsdb_server_iface: ptcp:6639:127.0.0.1
-      ovsdb_odl_iface: tcp:${_param:opendaylight_service_host}:6640
-      tunnel_ip: ${_param:tenant_address}
-      provider_mappings: physnet1:br-floating
-  neutron:
-    gateway:
-      agent_mode: ${_param:neutron_gateway_agent_mode}
-      pkgs: ${_param:neutron_agents}
-      services: ${_param:neutron_agents}
-      backend:
-        router: ${_param:opendaylight_router}
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/compute_pdf.yml.j2
deleted file mode 100644 (file)
index 52090cc..0000000
+++ /dev/null
@@ -1,83 +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
-##############################################################################
-{# NOTE: br-{mgmt,ctl} are cross-referenced, careful when changing names #}
-{%- if conf.idf is defined and conf.idf.net_config is defined -%}
-    {#- NOTE: Currently, we assume all cluster nodes use the same mapping -#}
-
-    {#- Determine interface index for each network (plumbing vars) -#}
-    {%- set idx_admin = conf['idf']['net_config']['admin']['interface'] -%}
-    {%- set idx_mgmt = conf['idf']['net_config']['mgmt']['interface'] -%}
-    {%- set idx_private = conf['idf']['net_config']['private']['interface'] -%}
-    {%- set idx_public = conf['idf']['net_config']['public']['interface'] -%}
-
-    {#- Physical interface OS name for each network (e.g. em1, enp1s0f1) -#}
-    {%- set node = conf['idf']['fuel']['network']['node'][1] -%}
-    {%- set nic_admin = node['interfaces'][idx_admin] -%}
-    {%- set nic_mgmt = node['interfaces'][idx_mgmt] -%}
-    {%- set nic_private = node['interfaces'][idx_private] -%}
-    {%- set nic_public = node['interfaces'][idx_public] -%}
-
-    {#- PCI addresses (only for DPDK on private) -#}
-    {%- set bus_private = node['busaddr'][idx_private] -%}
-
-    {#- VLAN for each network (only untagged 'admin' is supported by MaaS config!) -#}
-    {%- set vlan_admin = conf['idf']['net_config']['admin']['vlan'] -%}
-    {%- set vlan_mgmt = conf['idf']['net_config']['mgmt']['vlan'] -%}
-    {%- set vlan_private = conf['idf']['net_config']['private']['vlan'] -%}
-    {%- set vlan_public = conf['idf']['net_config']['public']['vlan'] -%}
-{%- else -%}
-    {%- set nic_admin = 'enp6s0' -%}
-    {%- set nic_mgmt = 'enp6s0' -%}
-    {%- set nic_private = None -%}
-    {%- set nic_public = None -%}
-    {%- set vlan_admin = 'native' -%}
-    {%- set vlan_mgmt = '300' -%}
-    {%- set vlan_private = '1000' -%}
-{%- endif -%}
-
-{#- Filter-out NIC duplicates by constructing a dict (used NICs only) -#}
-{%- set nics = { nic_private: True } -%}
-
-{%- set vlans = { vlan_private: nic_private } -%}
----
-parameters:
-  linux:
-    network:
-      interface:
-{%- for nic in nics %}
-        {{ nic }}:
-          enabled: true
-          type: eth
-    {%- if nic == nic_admin %}
-          proto: dhcp
-    {%- else %}
-          proto: manual
-    {%- endif %}
-          name: {{ nic }}
-{%- endfor %}
-
-{%- for vlan in vlans %}
-    {%- if vlan and vlan != 'native' %}
-        {{ vlans[vlan] }}.{{ vlan }}:
-          enabled: true
-          proto: manual
-          type: vlan
-          name: {{ vlans[vlan] }}.{{ vlan }}
-          use_interfaces:
-            - {{ vlans[vlan] }}
-    {%- endif %}
-{%- endfor %}
-
-        br-mesh:
-          enabled: true
-          type: bridge
-          address: ${_param:tenant_address}
-          netmask: 255.255.255.0
-          mtu: 1500
-          use_interfaces:
-            - {{ nic_private }}{% if vlan_private and vlan_private != 'native' %}.{{ vlan_private }}{% endif %}
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/database.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/database.yml
deleted file mode 100644 (file)
index 8585c69..0000000
+++ /dev/null
@@ -1,12 +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
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport
-  - cluster.baremetal-mcp-pike-common-ha.openstack_database
-  - cluster.baremetal-mcp-pike-odl-ha
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/telemetry.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/telemetry.yml
deleted file mode 100644 (file)
index 83d1be8..0000000
+++ /dev/null
@@ -1,12 +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
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport
-  - cluster.baremetal-mcp-pike-common-ha.openstack_telemetry
-  - cluster.baremetal-mcp-pike-odl-ha.infra
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/config.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/config.yml
deleted file mode 100644 (file)
index 3b7ba99..0000000
+++ /dev/null
@@ -1,12 +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
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-pike-common-ha.infra.config
-  - cluster.baremetal-mcp-pike-ovs-dpdk-ha.infra
-  - cluster.baremetal-mcp-pike-ovs-dpdk-ha.infra.config_pdf
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/config_pdf.yml.j2 b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/config_pdf.yml.j2
deleted file mode 100644 (file)
index 08e8ab7..0000000
+++ /dev/null
@@ -1,54 +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
-##############################################################################
-{# NOTE: br-{mgmt,ctl} are cross-referenced, careful when changing names #}
-{%- if conf.idf is defined and conf.idf.net_config is defined -%}
-    {#- NOTE: Currently, we assume all cluster nodes use the same mapping -#}
-
-    {#- Determine interface index for each network (plumbing vars) -#}
-    {%- set idx_admin = conf['idf']['net_config']['admin']['interface'] -%}
-    {%- set idx_mgmt = conf['idf']['net_config']['mgmt']['interface'] -%}
-    {%- set idx_private = conf['idf']['net_config']['private']['interface'] -%}
-    {%- set idx_public = conf['idf']['net_config']['public']['interface'] -%}
-
-    {#- Physical interface OS name for each network (e.g. em1, enp1s0f1) -#}
-    {%- set node = conf['idf']['fuel']['network']['node'][0] -%}
-    {%- set nic_admin = node['interfaces'][idx_admin] -%}
-    {%- set nic_mgmt = node['interfaces'][idx_mgmt] -%}
-    {%- set nic_private = node['interfaces'][idx_private] -%}
-    {%- set nic_public = node['interfaces'][idx_public] -%}
-
-    {#- PCI addresses (only for DPDK on private) -#}
-    {%- set bus_private = node['busaddr'][idx_private] -%}
-
-    {#- VLAN for each network (only untagged 'admin' is supported by MaaS config!) -#}
-    {%- set vlan_admin = conf['idf']['net_config']['admin']['vlan'] -%}
-    {%- set vlan_mgmt = conf['idf']['net_config']['mgmt']['vlan'] -%}
-    {%- set vlan_private = conf['idf']['net_config']['private']['vlan'] -%}
-    {%- set vlan_public = conf['idf']['net_config']['public']['vlan'] -%}
-{%- else -%}
-    {%- set nic_admin = 'enp6s0' -%}
-    {%- set nic_mgmt = 'enp6s0' -%}
-    {%- set nic_private = None -%}
-    {%- set nic_public = None -%}
-    {%- set vlan_admin = 'native' -%}
-    {%- set vlan_mgmt = '300' -%}
-    {%- set vlan_private = '1000' -%}
-{%- endif -%}
----
-parameters:
-  reclass:
-    storage:
-      node:
-        openstack_compute_node01:
-          params:
-            dpdk0_name: {{ nic_private }}
-            dpdk0_pci: '"{{ bus_private }}"'
-        openstack_compute_node02:
-          params:
-            dpdk0_name: {{ nic_private }}
-            dpdk0_pci: '"{{ bus_private }}"'
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/kvm.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/kvm.yml
deleted file mode 100644 (file)
index bb2087d..0000000
+++ /dev/null
@@ -1,11 +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
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-pike-common-ha.infra.kvm
-  - cluster.baremetal-mcp-pike-ovs-dpdk-ha.infra
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/maas.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/maas.yml
deleted file mode 100644 (file)
index fb55539..0000000
+++ /dev/null
@@ -1,11 +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
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-pike-common-ha.infra.maas
-  - cluster.baremetal-mcp-pike-ovs-dpdk-ha.infra
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/compute.yml.j2 b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/compute.yml.j2
deleted file mode 100644 (file)
index 76fa179..0000000
+++ /dev/null
@@ -1,47 +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
-##############################################################################
-{%- if conf.idf is defined and conf.idf.net_config is defined -%}
-    {%- set vlan_private = conf['idf']['net_config']['private']['vlan'] -%}
-{%- else -%}
-    {%- set vlan_private = '1000' -%}
-{%- endif -%}
----
-classes:
-  - cluster.baremetal-mcp-pike-common-ha.openstack_compute
-  - cluster.baremetal-mcp-pike-ovs-dpdk-ha.infra
-  - system.neutron.compute.nfv.dpdk
-parameters:
-  neutron:
-    gateway:
-      dpdk: 'True'
-      vhost_socket_dir: ${_param:compute_ovs_vhost_socket_dir}
-      backend:
-        tenant_vlan_range: ${_param:neutron_tenant_vlan_range}
-  nova:
-    compute:
-      libvirt_service: libvirtd
-      libvirt_bin: /etc/default/libvirtd
-  linux:
-    network:
-      interface:
-        dpdk0:
-          name: ${_param:dpdk0_name}
-          pci: ${_param:dpdk0_pci}
-          driver: igb_uio
-          enabled: true
-          bridge: br-prv
-          type: dpdk_ovs_port
-          n_rxq: 2
-        br-prv:
-          enabled: true
-          type: dpdk_ovs_bridge
-          address: ${_param:tenant_address}
-          netmask: 255.255.255.0
-          {%- if vlan_private and vlan_private != 'native' %}
-          tag: {{ vlan_private }}
-          {%- endif %}
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/database.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/database.yml
deleted file mode 100644 (file)
index 86b4038..0000000
+++ /dev/null
@@ -1,12 +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
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport
-  - cluster.baremetal-mcp-pike-common-ha.openstack_database
-  - cluster.baremetal-mcp-pike-ovs-dpdk-ha
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/init.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/init.yml
deleted file mode 100644 (file)
index 49af851..0000000
+++ /dev/null
@@ -1,24 +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
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-pike-common-ha.openstack_init
-parameters:
-  _param:
-    neutron_tenant_network_types: "flat,vxlan"
-    neutron_tenant_vlan_range: "1000:1030"
-    nova_cpu_pinning: "5-7,13-15"
-    compute_hugepages_size: 2M
-    compute_hugepages_count: 8192
-    compute_hugepages_mount: /mnt/hugepages_2M
-    compute_kernel_isolcpu: 2,3,5,6,7,10,11,13,14,15
-    compute_dpdk_driver: uio
-    compute_ovs_pmd_cpu_mask: "0xc04"
-    compute_ovs_dpdk_socket_mem: "2048,2048"
-    compute_ovs_dpdk_lcore_mask: "0x8"
-    compute_ovs_memory_channels: "2"
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/proxy.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/proxy.yml
deleted file mode 100644 (file)
index de960d9..0000000
+++ /dev/null
@@ -1,12 +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
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_triport
-  - cluster.baremetal-mcp-pike-common-ha.openstack_proxy
-  - cluster.baremetal-mcp-pike-ovs-dpdk-ha.infra
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/telemetry.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/telemetry.yml
deleted file mode 100644 (file)
index 680efa8..0000000
+++ /dev/null
@@ -1,12 +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
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport
-  - cluster.baremetal-mcp-pike-common-ha.openstack_telemetry
-  - cluster.baremetal-mcp-pike-ovs-dpdk-ha.infra
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/infra/kvm.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/infra/kvm.yml
deleted file mode 100644 (file)
index b4c2a67..0000000
+++ /dev/null
@@ -1,11 +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
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-pike-common-ha.infra.kvm
-  - cluster.baremetal-mcp-pike-ovs-ha.infra
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/infra/maas.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/infra/maas.yml
deleted file mode 100644 (file)
index 4bb3d74..0000000
+++ /dev/null
@@ -1,11 +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
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-pike-common-ha.infra.maas
-  - cluster.baremetal-mcp-pike-ovs-ha.infra
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/compute_pdf.yml.j2
deleted file mode 100644 (file)
index 7b90c72..0000000
+++ /dev/null
@@ -1,83 +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
-##############################################################################
-{# NOTE: br-{mgmt,ctl} are cross-referenced, careful when changing names #}
-{%- if conf.idf is defined and conf.idf.net_config is defined -%}
-    {#- NOTE: Currently, we assume all cluster nodes use the same mapping -#}
-
-    {#- Determine interface index for each network (plumbing vars) -#}
-    {%- set idx_admin = conf['idf']['net_config']['admin']['interface'] -%}
-    {%- set idx_mgmt = conf['idf']['net_config']['mgmt']['interface'] -%}
-    {%- set idx_private = conf['idf']['net_config']['private']['interface'] -%}
-    {%- set idx_public = conf['idf']['net_config']['public']['interface'] -%}
-
-    {#- Physical interface OS name for each network (e.g. em1, enp1s0f1) -#}
-    {%- set node = conf['idf']['fuel']['network']['node'][0] -%}
-    {%- set nic_admin = node['interfaces'][idx_admin] -%}
-    {%- set nic_mgmt = node['interfaces'][idx_mgmt] -%}
-    {%- set nic_private = node['interfaces'][idx_private] -%}
-    {%- set nic_public = node['interfaces'][idx_public] -%}
-
-    {#- PCI addresses (only for DPDK on private) -#}
-    {%- set bus_private = node['busaddr'][idx_private] -%}
-
-    {#- VLAN for each network (only untagged 'admin' is supported by MaaS config!) -#}
-    {%- set vlan_admin = conf['idf']['net_config']['admin']['vlan'] -%}
-    {%- set vlan_mgmt = conf['idf']['net_config']['mgmt']['vlan'] -%}
-    {%- set vlan_private = conf['idf']['net_config']['private']['vlan'] -%}
-    {%- set vlan_public = conf['idf']['net_config']['public']['vlan'] -%}
-{%- else -%}
-    {%- set nic_admin = 'enp6s0' -%}
-    {%- set nic_mgmt = 'enp6s0' -%}
-    {%- set nic_private = None -%}
-    {%- set nic_public = None -%}
-    {%- set vlan_admin = 'native' -%}
-    {%- set vlan_mgmt = '300' -%}
-    {%- set vlan_private = '1000' -%}
-{%- endif -%}
-
-{#- Filter-out NIC duplicates by constructing a dict (used NICs only) -#}
-{%- set nics = { nic_private: True } -%}
-
-{%- set vlans = { vlan_private: nic_private } -%}
----
-parameters:
-  linux:
-    network:
-      interface:
-{%- for nic in nics %}
-        {{ nic }}:
-          enabled: true
-          type: eth
-    {%- if nic == nic_admin %}
-          proto: dhcp
-    {%- else %}
-          proto: manual
-    {%- endif %}
-          name: {{ nic }}
-{%- endfor %}
-
-{%- for vlan in vlans %}
-    {%- if vlan and vlan != 'native' %}
-        {{ vlans[vlan] }}.{{ vlan }}:
-          enabled: true
-          proto: manual
-          type: vlan
-          name: {{ vlans[vlan] }}.{{ vlan }}
-          use_interfaces:
-            - {{ vlans[vlan] }}
-    {%- endif %}
-{%- endfor %}
-
-        br-mesh:
-          enabled: true
-          type: bridge
-          address: ${_param:tenant_address}
-          netmask: 255.255.255.0
-          mtu: 1500
-          use_interfaces:
-            - {{ nic_private }}{% if vlan_private and vlan_private != 'native' %}.{{ vlan_private }}{% endif %}
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/database.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/database.yml
deleted file mode 100644 (file)
index 85f5ebc..0000000
+++ /dev/null
@@ -1,12 +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
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport
-  - cluster.baremetal-mcp-pike-common-ha.openstack_database
-  - cluster.baremetal-mcp-pike-ovs-ha
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/init.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/init.yml
deleted file mode 100644 (file)
index f1c8b93..0000000
+++ /dev/null
@@ -1,18 +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
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-pike-common-ha.openstack_init
-parameters:
-  _param:
-    neutron_tenant_network_types: "flat,vxlan"
-    nova_cpu_pinning: "1,2,3,4,5,7,8,9,10,11"
-    compute_hugepages_size: 1G
-    compute_hugepages_count: 16
-    compute_hugepages_mount: /mnt/hugepages_1G
-    compute_kernel_isolcpu: ${_param:nova_cpu_pinning}
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/proxy.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/proxy.yml
deleted file mode 100644 (file)
index 5c91f60..0000000
+++ /dev/null
@@ -1,12 +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
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_triport
-  - cluster.baremetal-mcp-pike-common-ha.openstack_proxy
-  - cluster.baremetal-mcp-pike-ovs-ha.infra
diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/telemetry.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/telemetry.yml
deleted file mode 100644 (file)
index c6b1119..0000000
+++ /dev/null
@@ -1,12 +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
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport
-  - cluster.baremetal-mcp-pike-common-ha.openstack_telemetry
-  - cluster.baremetal-mcp-pike-ovs-ha.infra
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -25,7 +25,7 @@ classes:
   # - system.reclass.storage.system.stacklight_monitor_cluster
   # - system.reclass.storage.system.stacklight_telemetry_cluster
   - system.reclass.storage.system.infra_maas_single
-  - cluster.baremetal-mcp-pike-common-ha.infra.lab_proxy_pdf
+  - cluster.mcp-pike-common-ha.include.lab_proxy_pdf
 parameters:
   _param:
     salt_master_base_environment: prd
@@ -117,18 +117,22 @@ parameters:
         #     - system.kibana.client.single
         openstack_control_node01:
           classes:
-            - cluster.baremetal-mcp-pike-common-ha.openstack_control_init
+            - cluster.mcp-pike-common-ha.openstack_control_init
           params:
             linux_system_codename: xenial
+            # NOTE: When VCP is present, external_address is not used
+            external_address: ${_param:openstack_proxy_node01_address}
         openstack_control_node02:
           params:
             linux_system_codename: xenial
+            external_address: 0.0.0.0
         openstack_control_node03:
           params:
             linux_system_codename: xenial
+            external_address: ${_param:openstack_proxy_node02_address}
         openstack_database_node01:
           classes:
-            - cluster.baremetal-mcp-pike-common-ha.openstack_database_init
+            - cluster.mcp-pike-common-ha.openstack_database_init
           params:
             linux_system_codename: xenial
         openstack_database_node02:
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -9,11 +9,11 @@
 classes:
   - system.linux.system.single
   - cluster.all-mcp-arch-common
-  # - cluster.baremetal-mcp-pike-common-ha.stacklight
-  # - cluster.baremetal-mcp-pike-common-ha.stacklight.client
+  # - cluster.mcp-pike-common-ha.stacklight
+  # - cluster.mcp-pike-common-ha.stacklight.client
 parameters:
   _param:
-    apt_mk_version: stable
+    apt_mk_version: nightly
     mcp_repo_version: 1.1
     salt_version: 2016.11
     cluster_domain: ${_param:cluster_name}.local
@@ -31,9 +31,16 @@ parameters:
     infra_maas_node01_deploy_address: ${_param:opnfv_infra_maas_node01_deploy_address}
 
     infra_kvm_address: ${_param:opnfv_infra_kvm_address}
+{%- if conf.MCP_VCP %}
     infra_kvm_node01_address: ${_param:opnfv_infra_kvm_node01_address}
     infra_kvm_node02_address: ${_param:opnfv_infra_kvm_node02_address}
     infra_kvm_node03_address: ${_param:opnfv_infra_kvm_node03_address}
+{%- else %}
+    # For NOVCP, we override kvm addresses to overlap with ctl
+    infra_kvm_node01_address: ${_param:openstack_control_node01_address}
+    infra_kvm_node02_address: ${_param:openstack_control_node02_address}
+    infra_kvm_node03_address: ${_param:openstack_control_node03_address}
+{%- endif %}
 
     infra_maas_node01_hostname: mas01
     infra_kvm_node01_hostname: kvm01
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -21,8 +21,9 @@ classes:
   # - system.salt.control.cluster.stacklight_server_cluster
   # - system.salt.control.cluster.stacklight_log_cluster
   # - system.salt.control.cluster.stacklight_telemetry_cluster
-  - cluster.baremetal-mcp-pike-common-ha.infra.kvm_pdf
-  - cluster.baremetal-mcp-pike-common-ha.include.proxy
+  - cluster.mcp-pike-common-ha.infra.kvm_pdf
+  - cluster.mcp-pike-common-ha.include.maas_proxy
+  - cluster.mcp-pike-common-ha.include.lab_proxy_pdf
 parameters:
   _param:
     linux_system_codename: xenial
@@ -34,9 +35,6 @@ parameters:
     keepalived_vip_interface: br-ctl
     keepalived_vip_virtual_router_id: 69
   linux:
-    network:
-      remove_iface_files:
-        - '/etc/network/interfaces.d/50-cloud-init.cfg'
     system:
       kernel:
         boot_options:
diff --git a/mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/kvm_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/kvm_pdf.yml.j2
new file mode 100644 (file)
index 0000000..97166c6
--- /dev/null
@@ -0,0 +1,66 @@
+##############################################################################
+# 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
+##############################################################################
+{#- NOTE: br-{mgmt,ctl} are cross-referenced, careful when changing names #}
+{%- import 'net_map.j2' as nm with context %}
+{#- Filter-out NIC duplicates by constructing a dict (used NICs only) #}
+{%- set nics = { nm.ctl01.nic_admin: True, nm.ctl01.nic_mgmt: True, nm.ctl01.nic_public: True } %}
+{%- set vlans = { nm.vlan_admin: nm.ctl01.nic_admin, nm.vlan_mgmt: nm.ctl01.nic_mgmt, nm.vlan_public: nm.ctl01.nic_public } %}
+---
+parameters:
+  linux:
+    network:
+      interface:
+{%- for nic in nics %}
+        {{ nic }}:
+          enabled: true
+          type: eth
+          proto: manual
+          address: 0.0.0.0
+          netmask: 255.255.255.0
+          name: {{ nic }}
+          noifupdown: true
+{%- endfor %}
+
+{%- for vlan in vlans %}
+    {%- if vlan | int > 0 %}
+        {{ vlans[vlan] }}.{{ vlan }}:
+          enabled: true
+          proto: manual
+          type: vlan
+          name: {{ vlans[vlan] }}.{{ vlan }}
+          use_interfaces:
+            - {{ vlans[vlan] }}
+          noifupdown: true
+    {%- endif %}
+{%- endfor %}
+
+        br-mgmt:
+          enabled: true
+          proto: dhcp
+          type: bridge
+          use_interfaces:
+            - {{ nm.ctl01.nic_admin }}{% if nm.vlan_admin | int > 0 %}.{{ nm.vlan_admin }}{% endif %}
+          noifupdown: true
+        br-ctl:
+          enabled: true
+          type: bridge
+          proto: static
+          address: ${_param:single_address}
+          netmask: 255.255.255.0
+          use_interfaces:
+            - {{ nm.ctl01.nic_mgmt }}{% if nm.vlan_mgmt | int > 0 %}.{{ nm.vlan_mgmt }}{% endif %}
+          noifupdown: true
+        br-ex:
+          enabled: true
+          proto: manual
+          address: 0.0.0.0
+          netmask: ${_param:opnfv_net_public_mask}
+          type: bridge
+          use_interfaces:
+            - {{ nm.ctl01.nic_public }}{% if nm.vlan_public | int > 0 %}.{{ nm.vlan_public }}{% endif %}
+          noifupdown: true
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -9,7 +9,8 @@
 classes:
   - system.maas.region.single
   - service.maas.cluster.single
-  - cluster.baremetal-mcp-pike-common-ha.infra.lab_proxy_pdf
+  - cluster.mcp-pike-common-ha.include.lab_proxy_pdf
+  - cluster.mcp-pike-common-ha.infra.maas_pdf
 parameters:
   _param:
     dhcp_interface: ${_param:opnfv_fn_vm_primary_interface}
@@ -24,7 +25,7 @@ parameters:
     maas_db_password: opnfv_secret
     dns_server01: ${_param:opnfv_dns_server01}
     single_address: ${_param:infra_maas_node01_deploy_address}
-    hwe_kernel: 'ga-16.04'
+    hwe_kernel: 'hwe-16.04'
   maas:
     region:
       salt_master_ip: ${_param:reclass_config_master}
@@ -54,62 +55,6 @@ parameters:
               vid: 0
               dhcp_on: true
               primary_rack: ${_param:infra_maas_node01_hostname}
-      machines:
-        kvm01:
-          interface:
-            mac: ${_param:opnfv_maas_node01_interface_mac}
-          power_parameters:
-            power_address: ${_param:opnfv_maas_node01_power_address}
-            power_password: ${_param:opnfv_maas_node01_power_password}
-            power_type: ${_param:opnfv_maas_node01_power_type}
-            power_user: ${_param:opnfv_maas_node01_power_user}
-          architecture: ${_param:opnfv_maas_node01_architecture}
-          distro_series: xenial
-          hwe_kernel: ${_param:hwe_kernel}
-        kvm02:
-          interface:
-            mac: ${_param:opnfv_maas_node02_interface_mac}
-          power_parameters:
-            power_address: ${_param:opnfv_maas_node02_power_address}
-            power_password: ${_param:opnfv_maas_node02_power_password}
-            power_type: ${_param:opnfv_maas_node02_power_type}
-            power_user: ${_param:opnfv_maas_node02_power_user}
-          architecture: ${_param:opnfv_maas_node02_architecture}
-          distro_series: xenial
-          hwe_kernel: ${_param:hwe_kernel}
-        kvm03:
-          interface:
-            mac: ${_param:opnfv_maas_node03_interface_mac}
-          power_parameters:
-            power_address: ${_param:opnfv_maas_node03_power_address}
-            power_password: ${_param:opnfv_maas_node03_power_password}
-            power_type: ${_param:opnfv_maas_node03_power_type}
-            power_user: ${_param:opnfv_maas_node03_power_user}
-          architecture: ${_param:opnfv_maas_node03_architecture}
-          distro_series: xenial
-          hwe_kernel: ${_param:hwe_kernel}
-        cmp001:
-          interface:
-            mac: ${_param:opnfv_maas_node04_interface_mac}
-          power_parameters:
-            power_address: ${_param:opnfv_maas_node04_power_address}
-            power_password: ${_param:opnfv_maas_node04_power_password}
-            power_type: ${_param:opnfv_maas_node04_power_type}
-            power_user: ${_param:opnfv_maas_node04_power_user}
-          architecture: ${_param:opnfv_maas_node04_architecture}
-          distro_series: xenial
-          hwe_kernel: ${_param:hwe_kernel}
-        cmp002:
-          interface:
-            mac: ${_param:opnfv_maas_node05_interface_mac}
-          power_parameters:
-            power_address: ${_param:opnfv_maas_node05_power_address}
-            power_password: ${_param:opnfv_maas_node05_power_password}
-            power_type: ${_param:opnfv_maas_node05_power_type}
-            power_user: ${_param:opnfv_maas_node05_power_user}
-          architecture: ${_param:opnfv_maas_node05_architecture}
-          distro_series: xenial
-          hwe_kernel: ${_param:hwe_kernel}
     cluster:
       saltstack_repo_xenial: "http://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.11/ xenial main"
   linux:
diff --git a/mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/maas_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/maas_pdf.yml.j2
new file mode 100644 (file)
index 0000000..cff6d9b
--- /dev/null
@@ -0,0 +1,32 @@
+##############################################################################
+# 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
+##############################################################################
+---
+parameters:
+  maas:
+    region:
+      sshprefs:
+        - '{{ conf.MAAS_SSH_KEY }}'
+      machines:
+      {%- set pxe_interface = conf.idf.net_config.admin.interface %}
+      {#- We only support exactly 5 nodes for now, hardcoded order #}
+      {%- set node_roles = ['kvm01', 'kvm02', 'kvm03', 'cmp001', 'cmp002'] %}
+      {%- for node in conf.nodes %}
+      {%- if node.node.type == 'baremetal' %}
+        {{ node_roles[loop.index0] }}:
+          interface:
+            mac: {{ node.interfaces[pxe_interface].mac_address }}
+          power_parameters:
+            power_address: {{ node.remote_management.address.rsplit('/')[0] }}
+            power_password: {{ node.remote_management.pass }}
+            power_type: {{ node.remote_management.type }}
+            power_user: {{ node.remote_management.user }}
+          architecture: {{ node.node.arch | dpkg_arch }}/generic
+          distro_series: xenial
+          hwe_kernel: ${_param:hwe_kernel}
+      {%- endif %}
+      {%- endfor %}
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,18 +7,18 @@
 ##############################################################################
 ---
 classes:
+  - system.linux.system.repo.mcp.openstack
   - system.linux.system.repo.glusterfs
-  - system.linux.storage.loopback
   - system.glusterfs.client.cluster
   - system.nova.compute.cluster
   - system.nova.compute.nfv.hugepages
-  - system.nova.compute.nfv.cpu_pinning
   - system.neutron.gateway.cluster
   - system.cinder.volume.single
   - system.cinder.volume.backend.lvm
   - system.ceilometer.agent.cluster
-  - cluster.baremetal-mcp-pike-common-ha.openstack_compute_pdf
-  - cluster.baremetal-mcp-pike-common-ha.include.proxy
+  - cluster.mcp-pike-common-ha.openstack_compute_pdf
+  - cluster.mcp-pike-common-ha.include.maas_proxy
+  - cluster.mcp-pike-common-ha.include.lab_proxy_pdf
 parameters:
   _param:
     cluster_vip_address: ${_param:openstack_control_address}
@@ -33,7 +33,6 @@ parameters:
     interface_mtu: 1500
     keepalived_vip_interface: br-ctl
     keepalived_vip_virtual_router_id: 69
-    loopback_device_size: 20
     linux_system_codename: xenial
     glusterfs_version: '3.13'
   glusterfs:
@@ -44,10 +43,18 @@ parameters:
           server: ${_param:glusterfs_service_host}
           # yamllint disable-line rule:line-length
           opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
+  cinder:
+    volume:
+      backend:
+        lvm-driver:
+          # Align system.cinder.volume.backend.lvm and MaaS data
+          volume_group: ${linux:storage:lvm:cinder-vg:name}
   linux:
-    network:
-      remove_iface_files:
-        - '/etc/network/interfaces.d/50-cloud-init.cfg'
+    storage:
+      lvm:
+        # Align with both system.cinder.volume.backend.lvm and MaaS data
+        cinder-vg:
+          name: vgroot
     system:
       kernel:
         sysctl:
@@ -59,3 +66,7 @@ parameters:
   neutron:
     gateway:
       vlan_aware_vms: true
+      root_helper_daemon: false
+  nova:
+    compute:
+      disk_cachemodes: file=directsync,block=none
diff --git a/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_compute_pdf.yml.j2
new file mode 100644 (file)
index 0000000..fd51f5f
--- /dev/null
@@ -0,0 +1,93 @@
+##############################################################################
+# 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
+##############################################################################
+{#- NOTE: br-{mgmt,ctl} are cross-referenced, careful when changing names #}
+{%- import 'net_map.j2' as nm with context %}
+{#- Filter-out NIC duplicates by constructing a dict (used NICs only) #}
+{%- set nics = { nm.cmp001.nic_admin: True, nm.cmp001.nic_mgmt: True } %}
+{%- set vlans = { nm.vlan_admin: nm.cmp001.nic_admin, nm.vlan_mgmt: nm.cmp001.nic_mgmt } %}
+---
+parameters:
+  _param:
+    # Should later be determined via PDF/IDF, AArch64 has ESP on /dev/sda1
+{%- if conf.nodes[nm.cmp001.idx].node.type == 'virtual' %}
+    ~cinder_lvm_devices: ['/dev/vdb']
+{%- elif conf.nodes[nm.cmp001.idx].node.arch == 'aarch64' or
+         conf.nodes[nm.cmp001.idx].disks.0.disk_capacity | storage_size_num | float > 2000000000000 %}
+    ~cinder_lvm_devices: ['/dev/sda2']
+{%- else %}
+    ~cinder_lvm_devices: ['/dev/sda1']
+{%- endif %}
+  linux:
+    network:
+      bridge: openvswitch
+      interface:
+{%- for nic in nics %}
+    {%- if nic == nm.cmp001.nic_admin %}
+        {{ nic }}:
+          enabled: true
+          type: eth
+          proto: dhcp
+          name: {{ nic }}
+    {%- else %}
+        {{ nic }}:
+          enabled: true
+          type: eth
+          proto: manual
+          address: 0.0.0.0
+          {%- if nic == nm.cmp001.nic_public %}
+          netmask: ${_param:opnfv_net_public_mask}
+          {%- else %}
+          netmask: 255.255.255.0
+          {%- endif %}
+          mtu: ${_param:interface_mtu}
+          name: {{ nic }}
+    {%- endif %}
+{%- endfor %}
+
+{%- for vlan in vlans %}
+    {%- if vlan | int > 0 %}
+        {{ vlans[vlan] }}.{{ vlan }}:
+          enabled: true
+          proto: manual
+          type: vlan
+          name: {{ vlans[vlan] }}.{{ vlan }}
+          use_interfaces:
+            - {{ vlans[vlan] }}
+    {%- endif %}
+{%- endfor %}
+
+        br-ctl:
+          enabled: true
+          type: bridge
+          proto: static
+          address: ${_param:single_address}
+          netmask: 255.255.255.0
+          use_interfaces:
+            - {{ nm.cmp001.nic_mgmt }}{% if nm.vlan_mgmt | int > 0 %}.{{ nm.vlan_mgmt }}{% endif %}
+        br-floating:
+          enabled: true
+          type: ovs_bridge
+          mtu: ${_param:interface_mtu}
+          proto: static
+          address: ${_param:external_address}
+          netmask: ${_param:opnfv_net_public_mask}
+          use_interfaces:
+            - {{ nm.cmp001.nic_public }}{% if nm.vlan_public | int > 0 %}.{{ nm.vlan_public }}{% endif %}
+          route:
+            public:
+              address: 0.0.0.0
+              netmask: 0.0.0.0
+              gateway: ${_param:opnfv_net_public_gw}
+        ovs_port_{{ nm.cmp001.nic_public }}:
+          enabled: true
+          name: {{ nm.cmp001.nic_public }}{% if nm.vlan_public | int > 0 %}.{{ nm.vlan_public }}{% endif %}
+          proto: manual
+          ovs_port_type: OVSPort
+          type: ovs_port
+          ovs_bridge: br-floating
+          bridge: br-floating
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -25,8 +25,36 @@ classes:
   - system.glusterfs.client.cluster
   - system.glusterfs.client.volume.glance
   - system.glusterfs.client.volume.keystone
+{%- if not conf.MCP_VCP %}
+  # sync from kvm
+  - service.keepalived.cluster.single
+  - system.glusterfs.server.volume.glance
+  - system.glusterfs.server.volume.keystone
+  - system.glusterfs.server.cluster
+  # NOTE(armband): Disabled for novcp
+  # - system.salt.control.virt
+  # - system.salt.control.cluster.openstack_control_cluster
+  # - system.salt.control.cluster.openstack_proxy_cluster
+  # - system.salt.control.cluster.openstack_database_cluster
+  # - system.salt.control.cluster.openstack_message_queue_cluster
+  # - system.salt.control.cluster.openstack_telemetry_cluster
+  # - system.salt.control.cluster.stacklight_server_cluster
+  # - system.salt.control.cluster.stacklight_log_cluster
+  # - system.salt.control.cluster.stacklight_telemetry_cluster
+  - cluster.mcp-pike-common-ha.infra.kvm_pdf
+  - cluster.mcp-pike-common-ha.include.maas_proxy
+  - cluster.mcp-pike-common-ha.include.lab_proxy_pdf
+{%- endif %}
 parameters:
   _param:
+{%- if not conf.MCP_VCP %}
+    linux_system_codename: xenial  # sync from kvm
+    # For NOVCP, we switch keepalived VIPs, to keep cluster_vip_address in ctl
+    single_nic: br-ctl  # for keepalive_vip_interface interpolation
+    control_nic: ~      # Dummy value to keep reclass 1.5.2 happy
+    keepalived_openstack_web_public_vip_address: ${_param:openstack_proxy_address}
+    keepalived_openstack_web_public_vip_interface: br-ex
+{%- endif %}
     keepalived_vip_interface: ${_param:single_nic}
     keepalived_vip_virtual_router_id: 50
     cluster_vip_address: ${_param:openstack_control_address}
@@ -39,6 +67,7 @@ parameters:
     cluster_node03_address: ${_param:openstack_control_node03_address}
     nova_vncproxy_url: https://${_param:cluster_public_host}:6080
     glusterfs_version: '3.13'
+{%- if conf.MCP_VCP %}
   heat:
     server:
       metadata:
@@ -62,12 +91,55 @@ parameters:
         - nova-novncproxy
         - nova-scheduler
         - python-novaclient
+{%- else %}
+  libvirt:
+    server:
+      service: libvirtd
+      config_sys: /etc/default/libvirtd
+      unix_sock_group: libvirt
+  linux:
+    network:
+      # Add public IPs here as overrides, no need to fork another kvm_pdf.j2
+      interface:
+        br-ex:
+          address: ${_param:external_address}
+          proto: static
+  apache:
+    server:
+      bind:
+        ~ports: ~
+      ~modules:
+        - rewrite
+        - wsgi
+  # sync from common-ha kvm role
+  glusterfs:
+    server:
+      service: glusterd
+      volumes:
+        nova_instances:
+          storage: /srv/glusterfs/nova_instances
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/nova_instances
+            - ${_param:cluster_node02_address}:/srv/glusterfs/nova_instances
+            - ${_param:cluster_node03_address}:/srv/glusterfs/nova_instances
+          options:
+            cluster.readdir-optimize: 'True'
+            nfs.disable: 'True'
+            network.remote-dio: 'True'
+            cluster.favorite-child-policy: mtime
+            diagnostics.client-log-level: WARNING
+            diagnostics.brick-log-level: WARNING
+{%- endif %}
   neutron:
     server:
       vlan_aware_vms: true
+      root_helper_daemon: false
   keystone:
     server:
       cacert: /etc/ssl/certs/mcp_os_cacert
+      openrc_extra:
+        volume_device_name: vdc
   bind:
     server:
       control:
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -12,35 +12,56 @@ parameters:
     openstack_version: pike
 
     # openstack service addresses
+{%- if conf.MCP_VCP %}
     openstack_proxy_control_address: ${_param:opnfv_openstack_proxy_control_address}
     openstack_proxy_node01_control_address: ${_param:opnfv_openstack_proxy_node01_control_address}
     openstack_proxy_node02_control_address: ${_param:opnfv_openstack_proxy_node02_control_address}
+{%- else %}
+    openstack_proxy_control_address: ${_param:opnfv_openstack_control_address}
+    openstack_proxy_node01_control_address: ${_param:opnfv_openstack_control_node01_address}
+    openstack_proxy_node02_control_address: ${_param:opnfv_openstack_control_node03_address}
+{%- endif %}
+
     openstack_proxy_address: ${_param:opnfv_openstack_proxy_address}
     openstack_proxy_node01_address: ${_param:opnfv_openstack_proxy_node01_address}
     openstack_proxy_node02_address: ${_param:opnfv_openstack_proxy_node02_address}
+
     openstack_control_address: ${_param:opnfv_openstack_control_address}
     openstack_control_node01_address: ${_param:opnfv_openstack_control_node01_address}
     openstack_control_node02_address: ${_param:opnfv_openstack_control_node02_address}
     openstack_control_node03_address: ${_param:opnfv_openstack_control_node03_address}
+
+{%- if conf.MCP_VCP %}
     openstack_database_address: ${_param:opnfv_openstack_database_address}
     openstack_database_node01_address: ${_param:opnfv_openstack_database_node01_address}
     openstack_database_node02_address: ${_param:opnfv_openstack_database_node02_address}
     openstack_database_node03_address: ${_param:opnfv_openstack_database_node03_address}
+
     openstack_message_queue_address: ${_param:opnfv_openstack_message_queue_address}
     openstack_message_queue_node01_address: ${_param:opnfv_openstack_message_queue_node01_address}
     openstack_message_queue_node02_address: ${_param:opnfv_openstack_message_queue_node02_address}
     openstack_message_queue_node03_address: ${_param:opnfv_openstack_message_queue_node03_address}
 
-
-    openstack_telemetry_hostname: mdb
-    openstack_telemetry_node01_hostname: mdb01
-    openstack_telemetry_node02_hostname: mdb02
-    openstack_telemetry_node03_hostname: mdb03
-
     openstack_telemetry_address: ${_param:opnfv_openstack_telemetry_address}
     openstack_telemetry_node01_address: ${_param:opnfv_openstack_telemetry_node01_address}
     openstack_telemetry_node02_address: ${_param:opnfv_openstack_telemetry_node02_address}
     openstack_telemetry_node03_address: ${_param:opnfv_openstack_telemetry_node03_address}
+{%- else %}
+    openstack_database_address: ${_param:openstack_control_address}
+    openstack_database_node01_address: ${_param:openstack_control_node01_address}
+    openstack_database_node02_address: ${_param:openstack_control_node02_address}
+    openstack_database_node03_address: ${_param:openstack_control_node03_address}
+
+    openstack_message_queue_address: ${_param:openstack_control_address}
+    openstack_message_queue_node01_address: ${_param:openstack_control_node01_address}
+    openstack_message_queue_node02_address: ${_param:openstack_control_node02_address}
+    openstack_message_queue_node03_address: ${_param:openstack_control_node03_address}
+
+    openstack_telemetry_address: ${_param:openstack_control_address}
+    openstack_telemetry_node01_address: ${_param:openstack_control_node01_address}
+    openstack_telemetry_node02_address: ${_param:openstack_control_node02_address}
+    openstack_telemetry_node03_address: ${_param:openstack_control_node03_address}
+{%- endif %}
 
     # OpenStack Compute
     openstack_compute_node01_single_address: ${_param:opnfv_openstack_compute_node01_single_address}
@@ -56,6 +77,7 @@ parameters:
     openstack_compute_node02_external_address: ${_param:opnfv_openstack_compute_node02_external_address}
 
     # openstack service hostnames
+{%- if conf.MCP_VCP %}
     openstack_proxy_hostname: prx
     openstack_proxy_node01_hostname: prx01
     openstack_proxy_node02_hostname: prx02
@@ -71,16 +93,50 @@ parameters:
     openstack_message_queue_node01_hostname: msg01
     openstack_message_queue_node02_hostname: msg02
     openstack_message_queue_node03_hostname: msg03
+    openstack_telemetry_hostname: mdb
+    openstack_telemetry_node01_hostname: mdb01
+    openstack_telemetry_node02_hostname: mdb02
+    openstack_telemetry_node03_hostname: mdb03
+{%- else %}
+    openstack_proxy_hostname: ${_param:openstack_control_hostname}
+    openstack_proxy_node01_hostname: ${_param:openstack_control_node01_hostname}
+    openstack_proxy_node02_hostname: ${_param:openstack_control_node03_hostname}
+    openstack_control_hostname: kvm
+    openstack_control_node01_hostname: kvm01
+    openstack_control_node02_hostname: kvm02
+    openstack_control_node03_hostname: kvm03
+    openstack_database_hostname: ${_param:openstack_control_hostname}
+    openstack_database_node01_hostname: ${_param:openstack_control_node01_hostname}
+    openstack_database_node02_hostname: ${_param:openstack_control_node02_hostname}
+    openstack_database_node03_hostname: ${_param:openstack_control_node03_hostname}
+    openstack_message_queue_hostname: ${_param:openstack_control_hostname}
+    openstack_message_queue_node01_hostname: ${_param:openstack_control_node01_hostname}
+    openstack_message_queue_node02_hostname: ${_param:openstack_control_node02_hostname}
+    openstack_message_queue_node03_hostname: ${_param:openstack_control_node03_hostname}
+    openstack_telemetry_hostname: ${_param:openstack_control_hostname}
+    openstack_telemetry_node01_hostname: ${_param:openstack_control_node01_hostname}
+    openstack_telemetry_node02_hostname: ${_param:openstack_control_node02_hostname}
+    openstack_telemetry_node03_hostname: ${_param:openstack_control_node03_hostname}
+{%- endif %}
 
     # openstack compute
     openstack_compute_node01_hostname: cmp001
     openstack_compute_node02_hostname: cmp002
 
+    # opendaylight options
+{%- if conf.MCP_VCP %}
+    opendaylight_server_node01_hostname: odl01
+    opendaylight_server_node01_single_address: ${_param:opnfv_opendaylight_server_node01_single_address}
+{%- else %}
+    opendaylight_control_hostname: ${_param:openstack_control_node02_hostname}
+    opendaylight_server_node01_hostname: ${_param:opendaylight_control_hostname}
+    opendaylight_server_node01_single_address: ${_param:opnfv_openstack_control_node02_address}
+{%- endif %}
+
     openstack_region: RegionOne
     admin_email: root@localhost
     # Neutron osv/nodvr
     neutron_control_dvr: 'False'
-    neutron_l3_ha: 'True'
     neutron_global_physnet_mtu: 1500
     neutron_external_mtu: 1500
     neutron_gateway_dvr: 'False'
@@ -110,7 +166,11 @@ parameters:
     nova_service_host: ${_param:openstack_control_address}
     neutron_version: ${_param:openstack_version}
     neutron_service_host: ${_param:openstack_control_address}
+{%- if conf.MCP_VCP %}
     glusterfs_service_host: ${_param:infra_kvm_address}
+{%- else %}
+    glusterfs_service_host: ${_param:openstack_control_address}
+{%- endif %}
     mysql_admin_user: root
     mysql_admin_password: opnfv_secret
     mysql_cinder_password: opnfv_secret
@@ -188,9 +248,12 @@ parameters:
   linux:
     system:
       repo:
+        uca-staging:
+          source: "deb http://ppa.launchpad.net/ubuntu-cloud-archive/${_param:openstack_version}-staging/ubuntu xenial main"
+          key_id: 9F68104E
+          key_server: keyserver.ubuntu.com
         uca:
           source: "deb http://ubuntu-cloud.archive.canonical.com/ubuntu xenial-updates/${_param:openstack_version} main"
-          architectures: amd64
           key_id: EC4926EA
           key_server: keyserver.ubuntu.com
       kernel:
@@ -200,6 +263,7 @@ parameters:
           net.ipv4.tcp_fin_timeout: 30
     network:
       host:
+{%- if conf.MCP_VCP %}
         prx:
           address: ${_param:openstack_proxy_control_address}
           names:
@@ -295,6 +359,28 @@ parameters:
           names:
             - ${_param:openstack_telemetry_node03_hostname}
             - ${_param:openstack_telemetry_node03_hostname}.${_param:cluster_domain}
+{%- else %}
+        kvm:
+          address: ${_param:openstack_control_address}
+          names:
+            - ${_param:openstack_control_hostname}
+            - ${_param:openstack_control_hostname}.${_param:cluster_domain}
+        kvm01:
+          address: ${_param:openstack_control_node01_address}
+          names:
+            - ${_param:openstack_control_node01_hostname}
+            - ${_param:openstack_control_node01_hostname}.${_param:cluster_domain}
+        kvm02:
+          address: ${_param:openstack_control_node02_address}
+          names:
+            - ${_param:openstack_control_node02_hostname}
+            - ${_param:openstack_control_node02_hostname}.${_param:cluster_domain}
+        kvm03:
+          address: ${_param:openstack_control_node03_address}
+          names:
+            - ${_param:openstack_control_node03_hostname}
+            - ${_param:openstack_control_node03_hostname}.${_param:cluster_domain}
+{%- endif %}
         cmp001:
           address: ${_param:openstack_compute_node01_control_address}
           names:
@@ -1,13 +1,15 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
 ##############################################################################
 ---
+{%- if conf.MCP_VCP %}
 classes:
-  - cluster.baremetal-mcp-pike-common-ha.include.proxy
+  - cluster.mcp-pike-common-ha.include.maas_proxy
+  - cluster.mcp-pike-common-ha.include.lab_proxy_pdf
 parameters:
   _param:
     dhcp_nic: ${_param:opnfv_vcp_vm_primary_interface}
@@ -27,3 +29,4 @@ parameters:
           name: ${_param:single_nic}
           address: ${_param:single_address}
           netmask: ${_param:opnfv_net_public_mask}
+{%- endif %}
@@ -1,13 +1,15 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
 ##############################################################################
 ---
+{%- if conf.MCP_VCP %}
 classes:
-  - cluster.baremetal-mcp-pike-common-ha.include.proxy
+  - cluster.mcp-pike-common-ha.include.maas_proxy
+  - cluster.mcp-pike-common-ha.include.lab_proxy_pdf
 parameters:
   _param:
     dhcp_nic: ${_param:opnfv_vcp_vm_primary_interface}
@@ -40,3 +42,4 @@ parameters:
           name: ${_param:control_nic}
           address: ${_param:control_address}
           netmask: 255.255.255.0
+{%- endif %}
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
diff --git a/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_proxy.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_proxy.yml.j2
new file mode 100644 (file)
index 0000000..26943b7
--- /dev/null
@@ -0,0 +1,98 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - system.nginx.server.single
+  - system.nginx.server.proxy.openstack_api
+  - system.nginx.server.proxy.openstack_vnc
+  - system.nginx.server.proxy.openstack_web
+  - system.nginx.server.proxy.openstack.aodh
+  - system.nginx.server.proxy.openstack.ceilometer
+  - system.horizon.server.single
+  - system.salt.minion.cert.proxy
+  - system.sphinx.server.doc.reclass
+  - service.keepalived.cluster.single
+  - system.keepalived.cluster.instance.openstack_web_public_vip
+parameters:
+  _param:
+    cluster_vip_address: ${_param:openstack_proxy_address}
+    keepalived_openstack_web_public_vip_address: ${_param:cluster_vip_address}
+    keepalived_openstack_web_public_vip_interface: ${_param:single_nic}
+    keepalived_vip_address: ${_param:openstack_proxy_control_address}
+    keepalived_vip_interface: ${_param:control_nic}
+    keepalived_vip_virtual_router_id: 240
+    nginx_proxy_ssl:
+      enabled: true
+      authority: ${_param:salt_minion_ca_authority}
+      engine: salt
+      mode: secure
+    salt_minion_ca_host: cfg01.${_param:cluster_domain}
+  linux:
+    system:
+      package:
+        libapache2-mod-wsgi:
+          version: latest
+{%- if not conf.MCP_VCP %}
+    # Set up routes similar to prx*ovs-ha
+    network:
+      interface:
+        br-ex:
+          route:
+            public:
+              address: 0.0.0.0
+              netmask: 0.0.0.0
+              gateway: ${_param:opnfv_net_public_gw}
+  nginx:
+    server:
+      # NOTE(armband): Define host.address for all proxies for uniformity
+      site:
+        nginx_proxy_novnc: &nginx_openstack_proxy_address
+          host:
+            address: ${_param:openstack_proxy_address}
+        nginx_proxy_openstack_api_aodh:
+          <<: *nginx_openstack_proxy_address
+        nginx_proxy_openstack_api_ceilometer:
+          <<: *nginx_openstack_proxy_address
+        nginx_proxy_openstack_api_cinder:
+          <<: *nginx_openstack_proxy_address
+        nginx_proxy_openstack_api_glance:
+          <<: *nginx_openstack_proxy_address
+        nginx_proxy_openstack_api_heat:
+          <<: *nginx_openstack_proxy_address
+        nginx_proxy_openstack_api_heat_cfn:
+          <<: *nginx_openstack_proxy_address
+        nginx_proxy_openstack_api_heat_cloudwatch:
+          <<: *nginx_openstack_proxy_address
+        nginx_proxy_openstack_api_keystone:
+          <<: *nginx_openstack_proxy_address
+        nginx_proxy_openstack_api_keystone_private:
+          <<: *nginx_openstack_proxy_address
+        nginx_proxy_openstack_api_neutron:
+          <<: *nginx_openstack_proxy_address
+        nginx_proxy_openstack_api_nova:
+          <<: *nginx_openstack_proxy_address
+        nginx_proxy_openstack_api_nova_ec2:
+          <<: *nginx_openstack_proxy_address
+        nginx_proxy_openstack_web:
+          <<: *nginx_openstack_proxy_address
+        nginx_ssl_redirect_openstack_web:
+          <<: *nginx_openstack_proxy_address
+        nginx_static_reclass_doc:
+          <<: *nginx_openstack_proxy_address
+{%- endif %}
+  salt:
+    minion:
+      cert:
+        proxy:
+          alternative_names: "IP:${_param:openstack_proxy_address}"
+          key_usage: 'digitalSignature, keyEncipherment'
+  keepalived:
+    cluster:
+      vrrp_scripts:
+        check_pidof:
+          args: 'nginx'
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -21,10 +21,10 @@ parameters:
   _param:
     openstack_control_node01_hostname: ctl01
     reclass_data_repository: local
-    reclass_config_master: ${_param:opnfv_salt_master_ip}
+    reclass_config_master: ${_param:opnfv_infra_config_pxe_address}
     salt_master_environment_repository: "https://github.com/tcpcloud"
     salt_master_environment_revision: master
-    single_address: 172.16.10.100
+    single_address: ${_param:opnfv_infra_config_address}
     salt_master_host: 127.0.0.1
     salt_master_base_environment: prd
     salt_minion_ca_host: ${linux:network:fqdn}
@@ -33,6 +33,11 @@ parameters:
   linux:
     network:
       interface:
+        dhcp:
+          enabled: true
+          type: eth
+          proto: dhcp
+          name: ${_param:opnfv_fn_vm_primary_interface}
         single_int:
           enabled: true
           name: ${_param:opnfv_fn_vm_secondary_interface}
@@ -40,6 +45,13 @@ parameters:
           proto: static
           address: ${_param:single_address}
           netmask: 255.255.255.0
+        pxe:
+          enabled: true
+          type: eth
+          proto: static
+          name: ${_param:opnfv_fn_vm_tertiary_interface}
+          address: ${_param:opnfv_infra_config_pxe_address}
+          netmask: 255.255.255.0
   salt:
     master:
       file_recv: true
@@ -59,11 +71,11 @@ parameters:
             single_address: ${_param:openstack_control_node01_address}
         openstack_compute_node01:
           params:
-            single_address: 172.16.10.105
-            tenant_address: 10.1.0.105
-            external_address: 10.16.0.105
+            single_address: ${_param:opnfv_openstack_compute_node01_control_address}
+            tenant_address: ${_param:opnfv_openstack_compute_node01_tenant_address}
+            external_address: ${_param:opnfv_openstack_compute_node01_external_address}
         openstack_compute_node02:
           params:
-            single_address: 172.16.10.106
-            tenant_address: 10.1.0.106
-            external_address: 10.16.0.106
+            single_address: ${_param:opnfv_openstack_compute_node02_control_address}
+            tenant_address: ${_param:opnfv_openstack_compute_node02_tenant_address}
+            external_address: ${_param:opnfv_openstack_compute_node02_external_address}
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -1,26 +1,28 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
 ##############################################################################
 ---
+classes:
+  - cluster.all-mcp-arch-common
 parameters:
   _param:
     # infra service addresses
-    infra_config_address: 172.16.10.100
+    infra_config_address: ${_param:opnfv_infra_config_address}
     # openstack service addresses
-    openstack_control_address: 172.16.10.101
-    openstack_control_node01_address: 172.16.10.101
-    openstack_control_node02_address: 172.16.10.102
-    openstack_control_node03_address: 172.16.10.103
+    openstack_control_address: ${_param:opnfv_openstack_control_node01_address}
+    openstack_control_node01_address: ${_param:opnfv_openstack_control_node01_address}
+    openstack_control_node02_address: ${_param:opnfv_openstack_control_node02_address}
+    openstack_control_node03_address: ${_param:opnfv_openstack_control_node03_address}
     openstack_database_address: ${_param:openstack_control_address}
     openstack_message_queue_address: ${_param:openstack_control_address}
     openstack_message_queue_node01_address: ${_param:openstack_control_node01_address}
     openstack_message_queue_node02_address: ${_param:openstack_control_node02_address}
     openstack_message_queue_node03_address: ${_param:openstack_control_node03_address}
-    openstack_gateway_address: 172.16.10.110
+    openstack_gateway_address: ${_param:opnfv_openstack_gateway_node01_address}
     control_address: ${_param:openstack_control_address}
     ntp_strata_host1: 1.se.pool.ntp.org
     ntp_strata_host2: 0.se.pool.ntp.org
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,7 +7,6 @@
 ##############################################################################
 ---
 classes:
-  - system.linux.storage.loopback
   - service.nfs.client
   - system.nova.compute.single
   - service.cinder.volume.single
@@ -15,19 +14,21 @@ classes:
   - system.ceilometer.agent.cluster
   - system.ceilometer.client.nova_compute
   - system.ceilometer.client.cinder_volume
+  - system.linux.system.repo.mcp.openstack
+  - cluster.mcp-pike-common-noha.openstack_compute_pdf
 parameters:
   _param:
-    primary_interface: ${_param:opnfv_fn_vm_secondary_interface}
-    tenant_interface: ${_param:opnfv_fn_vm_tertiary_interface}
-    external_interface: ${_param:opnfv_fn_vm_quaternary_interface}
     interface_mtu: 9000
     linux_system_codename: xenial
-    loopback_device_size: 20
+    ~cinder_lvm_devices: ['/dev/vdb']
   nova:
     compute:
       libvirt_service: libvirtd
       libvirt_bin: /etc/default/libvirtd
+      disk_cachemodes: file=directsync,block=none
       vncproxy_url: http://${_param:cluster_vip_address}:6080
+      bind:
+        vnc_address: ${_param:single_address}
       network:
         region: ${_param:openstack_region}
         user: neutron
@@ -37,6 +38,7 @@ parameters:
     compute:
       notification: true
       vlan_aware_vms: true
+      root_helper_daemon: false
       agent_mode: ${_param:neutron_compute_agent_mode}
       message_queue:
         host: ${_param:openstack_control_address}
@@ -65,31 +67,3 @@ parameters:
         sysctl:
           vm.dirty_ratio: 10
           vm.dirty_background_ratio: 5
-    network:
-      bridge: openvswitch
-      interface:
-        dhcp_int:
-          enabled: true
-          name: ${_param:opnfv_fn_vm_primary_interface}
-          proto: dhcp
-          type: eth
-          mtu: ${_param:interface_mtu}
-        primary_interface:
-          enabled: true
-          name: ${_param:primary_interface}
-          proto: manual
-          type: eth
-        tenant_interface:
-          enabled: true
-          name: ${_param:tenant_interface}
-          mtu: ${_param:interface_mtu}
-          proto: manual
-          type: eth
-        br-mgmt:
-          enabled: true
-          type: bridge
-          proto: static
-          address: ${_param:single_address}
-          netmask: 255.255.255.0
-          use_interfaces:
-            - ${_param:primary_interface}
diff --git a/mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_compute_pdf.yml.j2
new file mode 100644 (file)
index 0000000..64af148
--- /dev/null
@@ -0,0 +1,44 @@
+##############################################################################
+# 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
+##############################################################################
+{#- NOTE: br-{mgmt,ctl} are cross-referenced, careful when changing names #}
+{%- import 'net_map.j2' as nm with context %}
+---
+parameters:
+  _param:
+    primary_interface: {{ nm.cmp001.nic_mgmt }}
+    tenant_interface: {{ nm.cmp001.nic_private }}
+    external_interface: {{ nm.cmp001.nic_public }}
+  linux:
+    network:
+      bridge: openvswitch
+      interface:
+        dhcp_int:
+          enabled: true
+          name: {{ nm.cmp001.nic_admin }}
+          proto: dhcp
+          type: eth
+          mtu: ${_param:interface_mtu}
+        primary_interface:
+          enabled: true
+          name: ${_param:primary_interface}
+          proto: manual
+          type: eth
+        tenant_interface:
+          enabled: true
+          name: ${_param:tenant_interface}
+          mtu: ${_param:interface_mtu}
+          proto: manual
+          type: eth
+        br-mgmt:
+          enabled: true
+          type: bridge
+          proto: static
+          address: ${_param:single_address}
+          netmask: 255.255.255.0
+          use_interfaces:
+            - ${_param:primary_interface}
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -43,7 +43,8 @@ classes:
   - system.aodh.server.single
   - system.horizon.server.single
   - service.haproxy.proxy.single
-  - cluster.virtual-mcp-pike-common-noha.haproxy_openstack_api
+  - cluster.mcp-pike-common-noha.haproxy_openstack_api
+  - cluster.mcp-pike-common-noha.openstack_control_pdf
 parameters:
   _param:
     linux_system_codename: xenial
@@ -52,25 +53,11 @@ parameters:
       package:
         python-msgpack:
           version: latest
-    network:
-      interface:
-        single_int:
-          enabled: true
-          name: ${_param:opnfv_fn_vm_secondary_interface}
-          type: eth
-          proto: static
-          address: ${_param:single_address}
-          netmask: 255.255.255.0
-        public_int:
-          enabled: true
-          name: ${_param:opnfv_fn_vm_quaternary_interface}
-          type: eth
-          proto: static
-          address: ${_param:cluster_public_host}
-          netmask: 255.255.255.0
   keystone:
     server:
       admin_email: ${_param:admin_email}
+      openrc_extra:
+        volume_device_name: vdc
   glance:
     server:
       storage:
@@ -140,3 +127,4 @@ parameters:
   neutron:
     server:
       vlan_aware_vms: true
+      root_helper_daemon: false
diff --git a/mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_control_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_control_pdf.yml.j2
new file mode 100644 (file)
index 0000000..8219637
--- /dev/null
@@ -0,0 +1,32 @@
+##############################################################################
+# 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 %}
+---
+parameters:
+  linux:
+    network:
+      interface:
+        dhcp_int:
+          enabled: true
+          name: {{ nm.ctl01.nic_admin }}
+          proto: dhcp
+          type: eth
+        single_int:
+          enabled: true
+          name: {{ nm.ctl01.nic_mgmt }}
+          type: eth
+          proto: static
+          address: ${_param:single_address}
+          netmask: 255.255.255.0
+        public_int:
+          enabled: true
+          name: {{ nm.ctl01.nic_public }}
+          type: eth
+          proto: static
+          address: ${_param:cluster_public_host}
+          netmask: 255.255.255.0
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,12 +7,14 @@
 ##############################################################################
 ---
 classes:
-  - cluster.baremetal-mcp-pike-ovs-dpdk-ha.infra.config
+  - cluster.mcp-pike-common-noha.openstack_gateway_pdf
 parameters:
   _param:
+    interface_mtu: 9000
     linux_system_codename: xenial
-    reclass_data_revision: master
-  linux:
-    system:
-      name: cfg01
-      domain: baremetal-mcp-pike-ovs-dpdk-ha.local
+  neutron:
+    gateway:
+      notification: true
+      agent_mode: ${_param:neutron_gateway_agent_mode}
+      vlan_aware_vms: true
+      root_helper_daemon: false
@@ -1,30 +1,24 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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 %}
 parameters:
   _param:
-    primary_interface: ${_param:opnfv_fn_vm_secondary_interface}
-    tenant_interface: ${_param:opnfv_fn_vm_tertiary_interface}
-    external_interface: ${_param:opnfv_fn_vm_quaternary_interface}
-    interface_mtu: 9000
-    linux_system_codename: xenial
-  neutron:
-    gateway:
-      notification: true
-      agent_mode: ${_param:neutron_gateway_agent_mode}
-      vlan_aware_vms: true
+    primary_interface: {{ nm.ctl01.nic_mgmt }}
+    tenant_interface: {{ nm.ctl01.nic_private }}
+    external_interface: {{ nm.ctl01.nic_public }}
   linux:
     network:
       bridge: openvswitch
       interface:
         dhcp_int:
           enabled: true
-          name: ${_param:opnfv_fn_vm_primary_interface}
+          name: {{ nm.ctl01.nic_admin }}
           proto: dhcp
           type: eth
           mtu: ${_param:interface_mtu}
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -9,12 +9,12 @@
 parameters:
   _param:
     openstack_version: pike
-    apt_mk_version: stable
+    apt_mk_version: nightly
     mcp_repo_version: 1.1
     openstack_region: RegionOne
     admin_email: root@localhost
     cluster_public_protocol: http
-    cluster_public_host: 10.16.0.101
+    cluster_public_host: ${_param:opnfv_openstack_control_node01_external_address}
     neutron_public_protocol: http
     neutron_control_dvr: 'False'
     neutron_l3_ha: 'False'
@@ -31,11 +31,11 @@ parameters:
     cluster_vip_address: ${_param:cluster_public_host}
     cluster_local_address: ${_param:openstack_control_address}
     cluster_node01_hostname: ctl01
-    cluster_node01_address: 172.16.10.101
+    cluster_node01_address: ${_param:opnfv_openstack_control_node01_address}
     cluster_node02_hostname: ctl02
-    cluster_node02_address: 172.16.10.102
+    cluster_node02_address: ${_param:opnfv_openstack_control_node02_address}
     cluster_node03_hostname: ctl03
-    cluster_node03_address: 172.16.10.103
+    cluster_node03_address: ${_param:opnfv_openstack_control_node03_address}
     rabbitmq_secret_key: opnfv_secret
     rabbitmq_admin_password: opnfv_secret
     rabbitmq_openstack_password: opnfv_secret
@@ -52,8 +52,6 @@ parameters:
     ceilometer_database_host: ${_param:cluster_local_address}
     cinder_version: ${_param:openstack_version}
     cinder_service_host: ${_param:cluster_local_address}
-    ceilometer_graphite_publisher_host: 172.16.10.107
-    ceilometer_graphite_publisher_port: 2013
     nova_version: ${_param:openstack_version}
     nova_service_host: ${_param:cluster_local_address}
     nova_vncproxy_url: http://${_param:cluster_vip_address}:8060
@@ -96,9 +94,14 @@ parameters:
   linux:
     system:
       repo:
+        uca-staging:
+          # yamllint disable rule:line-length
+          source: "deb http://ppa.launchpad.net/ubuntu-cloud-archive/${_param:openstack_version}-staging/ubuntu xenial main"
+          key_id: 9F68104E
+          key_server: keyserver.ubuntu.com
+          # yamllint enable rule:line-length
         uca:
           source: "deb http://ubuntu-cloud.archive.canonical.com/ubuntu xenial-updates/${_param:openstack_version} main"
-          architectures: amd64
           key_id: EC4926EA
           key_server: keyserver.ubuntu.com
       kernel:
@@ -124,12 +127,12 @@ parameters:
             - gtw01
             - gtw01.${_param:cluster_domain}
         cmp01:
-          address: 172.16.10.105
+          address: ${_param:opnfv_openstack_compute_node01_control_address}
           names:
             - cmp01
             - cmp01.${_param:cluster_domain}
         cmp02:
-          address: 172.16.10.106
+          address: ${_param:opnfv_openstack_compute_node02_control_address}
           names:
             - cmp02
             - cmp02.${_param:cluster_domain}
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -8,8 +8,9 @@
 ---
 classes:
   - system.reclass.storage.system.opendaylight_control_single
-  - cluster.baremetal-mcp-pike-common-ha.infra.config
-  - cluster.baremetal-mcp-pike-odl-ha.infra
+  - cluster.mcp-pike-common-ha.infra.config
+  - cluster.mcp-pike-odl-ha.infra
+  - cluster.all-mcp-arch-common.infra.config_pdf
 parameters:
   reclass:
     storage:
diff --git a/mcp/reclass/classes/cluster/mcp-pike-odl-ha/infra/init.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/infra/init.yml
new file mode 100644 (file)
index 0000000..419c059
--- /dev/null
@@ -0,0 +1,14 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.infra
+  - cluster.mcp-pike-odl-ha.openstack
+parameters:
+  _param:
+    cluster_name: mcp-pike-odl-ha
diff --git a/mcp/reclass/classes/cluster/mcp-pike-odl-ha/infra/init_vcp.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/infra/init_vcp.yml.j2
new file mode 100644 (file)
index 0000000..3853265
--- /dev/null
@@ -0,0 +1,12 @@
+##############################################################################
+# 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
+##############################################################################
+---
+{%- if conf.MCP_VCP %}
+classes:
+  - cluster.mcp-pike-odl-ha.infra
+{%- endif %}
@@ -1,14 +1,16 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
 ##############################################################################
 ---
+{%- if conf.MCP_VCP %}
+# NOTE(armband): we don't want to pull in salt.control for novcp
 classes:
-  - cluster.baremetal-mcp-pike-common-ha.infra.kvm
-  - cluster.baremetal-mcp-pike-odl-ha.infra
+  - cluster.mcp-pike-common-ha.infra.kvm
+  - cluster.mcp-pike-odl-ha.infra
 parameters:
   salt:
     control:
@@ -16,7 +18,7 @@ parameters:
         # Default production sizing
         opendaylight.server:
           cpu: 4
-          ram: 6144
+          ram: 8192
           disk_profile: small
           net_profile: default
       cluster:
@@ -27,3 +29,4 @@ parameters:
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: opendaylight.server
+{%- endif %}
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,8 +7,8 @@
 ##############################################################################
 ---
 classes:
-  - cluster.virtual-mcp-pike-common-noha.infra
-
+  - cluster.mcp-pike-common-ha.infra.maas
+  - cluster.mcp-pike-odl-ha.infra
 parameters:
   _param:
-    cluster_name: virtual-mcp-pike-ovs-dpdk-noha
+    hwe_kernel: 'ga-16.04'
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -8,5 +8,5 @@
 ---
 classes:
   - cluster.all-mcp-arch-common
-  - cluster.baremetal-mcp-pike-ovs-ha.infra
-  - cluster.baremetal-mcp-pike-ovs-ha.openstack
+  - cluster.mcp-pike-odl-ha.infra
+  - cluster.mcp-pike-odl-ha.openstack
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,9 +7,11 @@
 ##############################################################################
 ---
 classes:
-  - system.opendaylight.server.single
-  - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport
-  - cluster.baremetal-mcp-pike-odl-ha
+  - service.opendaylight.server.single
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport
+{%- if conf.MCP_VCP %}
+  - cluster.mcp-pike-odl-ha
+{%- endif %}
 parameters:
   _param:
     linux_system_codename: xenial
@@ -17,14 +19,12 @@ parameters:
     server:
       odl_bind_ip: ${_param:single_address}
       odl_rest_port: 8282
-      java_min_mem: 4g
-      java_max_mem: 4g
+      java_min_mem: 6g
+      java_max_mem: 6g
       router_enabled: true
       karaf_features:
         odl_default:
           - odl-restconf-all
           - odl-aaa-authn
-          - odl-dlux-all
-          - odl-mdsal-apidocs
         netvirt:
           - odl-netvirt-openstack
diff --git a/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/compute.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/compute.yml
new file mode 100644 (file)
index 0000000..6c3e0d0
--- /dev/null
@@ -0,0 +1,17 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - service.neutron.gateway.opendaylight.single
+  - cluster.mcp-pike-common-ha.openstack_compute
+  - cluster.mcp-pike-odl-ha.openstack.compute_pdf
+  - cluster.mcp-pike-odl-ha.infra
+parameters:
+  neutron:
+    gateway:
+      agent_mode: ${_param:neutron_gateway_agent_mode}
diff --git a/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/compute_pdf.yml.j2
new file mode 100644 (file)
index 0000000..912537f
--- /dev/null
@@ -0,0 +1,49 @@
+##############################################################################
+# 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 %}
+{#- Filter-out NIC duplicates by constructing a dict (used NICs only) #}
+{%- set nics = { nm.cmp001.nic_private: True } %}
+{%- set vlan_private_start = nm.vlan_private.rsplit('-')[0] %}
+{%- set vlans = { vlan_private_start: nm.cmp001.nic_private } %}
+---
+parameters:
+  linux:
+    network:
+      interface:
+{%- for nic in nics %}
+        {{ nic }}:
+          enabled: true
+          type: eth
+    {%- if nic == nm.cmp001.nic_admin %}
+          proto: dhcp
+    {%- else %}
+          proto: manual
+    {%- endif %}
+          name: {{ nic }}
+{%- endfor %}
+
+{%- for vlan in vlans %}
+    {%- if vlan | int > 0 %}
+        {{ vlans[vlan] }}.{{ vlan }}:
+          enabled: true
+          proto: manual
+          type: vlan
+          name: {{ vlans[vlan] }}.{{ vlan }}
+          use_interfaces:
+            - {{ vlans[vlan] }}
+    {%- endif %}
+{%- endfor %}
+
+        br-mesh:
+          enabled: true
+          type: bridge
+          address: ${_param:tenant_address}
+          netmask: 255.255.255.0
+          mtu: 1500
+          use_interfaces:
+            - {{ nm.cmp001.nic_private }}{% if vlan_private_start | int > 0 %}.{{ vlan_private_start }}{% endif %}
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -8,11 +8,14 @@
 ---
 classes:
   - system.neutron.control.opendaylight.cluster
-  - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport
-  - cluster.baremetal-mcp-pike-common-ha.openstack_control
-  - cluster.baremetal-mcp-pike-odl-ha.infra
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport
+  - cluster.mcp-pike-common-ha.openstack_control
+  - cluster.mcp-pike-odl-ha.infra
 parameters:
-  neutron:
+  keystone:
     server:
-      backend:
-        router: ${_param:opendaylight_router}
+      openrc_extra:
+        # For HA, all public services are available through nginx on prx
+        sdn_controller_ip: ${_param:cluster_public_host}
+        sdn_username: admin  # Hardcoded to default ODL values for now
+        sdn_password: admin
diff --git a/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/database.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/database.yml
new file mode 100644 (file)
index 0000000..69cb24d
--- /dev/null
@@ -0,0 +1,12 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport
+  - cluster.mcp-pike-common-ha.openstack_database
+  - cluster.mcp-pike-odl-ha.infra.init_vcp
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,21 +7,14 @@
 ##############################################################################
 ---
 classes:
-  - cluster.baremetal-mcp-pike-common-ha.openstack_init
+  - cluster.mcp-pike-common-ha.openstack_init
 parameters:
   _param:
     # opendaylight options
-    opendaylight_server_node01_single_address: ${_param:opnfv_opendaylight_server_node01_single_address}
     opendaylight_service_host: ${_param:opendaylight_server_node01_single_address}
-    opendaylight_server_node01_hostname: odl01
-    opendaylight_router: odl-router_v2
 
     neutron_tenant_network_types: "flat,vxlan"
-    nova_cpu_pinning: "1,2,3,4,5,7,8,9,10,11"
-    compute_hugepages_size: 1G
-    compute_hugepages_count: 16
-    compute_hugepages_mount: /mnt/hugepages_1G
-    compute_kernel_isolcpu: ${_param:nova_cpu_pinning}
+{%- if conf.MCP_VCP %}
   linux:
     network:
       host:
@@ -30,3 +23,4 @@ parameters:
           names:
             - ${_param:opendaylight_server_node01_hostname}
             - ${_param:opendaylight_server_node01_hostname}.${_param:cluster_domain}
+{%- endif %}
diff --git a/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/message_queue.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/message_queue.yml
new file mode 100644 (file)
index 0000000..604728d
--- /dev/null
@@ -0,0 +1,12 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport
+  - cluster.mcp-pike-common-ha.openstack_message_queue
+  - cluster.mcp-pike-odl-ha.infra.init_vcp
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,25 +7,13 @@
 ##############################################################################
 ---
 classes:
-  - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_triport
-  - cluster.baremetal-mcp-pike-common-ha.openstack_proxy
-  - cluster.baremetal-mcp-pike-odl-ha.infra
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_triport
+  - cluster.mcp-pike-common-ha.openstack_proxy
+  - cluster.mcp-pike-odl-ha.infra.init_vcp
 parameters:
   nginx:
     server:
       site:
-        nginx_proxy_opendaylight_web:
-          enabled: true
-          type: nginx_proxy
-          name: opendaylight_web
-          check: false
-          proxy:
-            host: ${_param:opendaylight_service_host}
-            port: 8181
-            protocol: http
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 8181
         nginx_proxy_opendaylight_rest:
           enabled: true
           type: nginx_proxy
diff --git a/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/telemetry.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/telemetry.yml
new file mode 100644 (file)
index 0000000..20df2aa
--- /dev/null
@@ -0,0 +1,12 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport
+  - cluster.mcp-pike-common-ha.openstack_telemetry
+  - cluster.mcp-pike-odl-ha.infra.init_vcp
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -9,8 +9,9 @@
 classes:
   - system.reclass.storage.system.opendaylight_control_single
   - system.reclass.storage.system.openstack_gateway_single
-  - cluster.virtual-mcp-pike-common-noha.infra.config
-  - cluster.virtual-mcp-pike-odl-noha
+  - cluster.mcp-pike-common-noha.infra.config
+  - cluster.mcp-pike-odl-noha
+  - cluster.all-mcp-arch-common.infra.config_pdf
 parameters:
   reclass:
     storage:
@@ -23,5 +24,5 @@ parameters:
             single_address: ${_param:opendaylight_service_host}
         openstack_gateway_node01:
           params:
-            tenant_address: 10.1.0.110
-            external_address: 10.16.0.110
+            tenant_address: ${_param:opnfv_openstack_gateway_node01_tenant_address}
+            external_address: ${_param:opnfv_openstack_gateway_node01_external_address}
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,8 +7,8 @@
 ##############################################################################
 ---
 classes:
-  - cluster.virtual-mcp-pike-common-noha.infra
+  - cluster.mcp-pike-common-noha.infra
 
 parameters:
   _param:
-    cluster_name: virtual-mcp-pike-odl-noha
+    cluster_name: mcp-pike-odl-noha
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -8,11 +8,10 @@
 ---
 classes:
   - system.linux.system.single
-  - cluster.all-mcp-arch-common
-  - cluster.virtual-mcp-pike-common-noha.init_options
-  - cluster.virtual-mcp-pike-odl-noha.infra
-  - cluster.virtual-mcp-pike-odl-noha.openstack
+  - cluster.mcp-pike-common-noha.init_options
+  - cluster.mcp-pike-odl-noha.infra
+  - cluster.mcp-pike-odl-noha.openstack
 
 parameters:
   _param:
-    opendaylight_service_host: 172.16.10.111
+    opendaylight_service_host: ${_param:opnfv_opendaylight_server_node01_single_address}
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -9,21 +9,12 @@
 classes:
   - system.linux.system.repo.mcp.openstack
   - system.linux.system.repo.mcp.extra
-  - system.opendaylight.server.single
-  - cluster.virtual-mcp-pike-odl-noha
+  - service.opendaylight.server.single
+  - cluster.mcp-pike-odl-noha
+  - cluster.mcp-pike-odl-noha.opendaylight.control_pdf
 parameters:
   _param:
     linux_system_codename: xenial
-  linux:
-    network:
-      interface:
-        single_int:
-          enabled: true
-          name: ${_param:opnfv_fn_vm_secondary_interface}
-          type: eth
-          proto: static
-          address: ${_param:single_address}
-          netmask: 255.255.255.0
   opendaylight:
     server:
       odl_bind_ip: ${_param:single_address}
@@ -35,7 +26,5 @@ parameters:
         odl_default:
           - odl-restconf-all
           - odl-aaa-authn
-          - odl-dlux-all
-          - odl-mdsal-apidocs
         netvirt:
           - odl-netvirt-openstack
diff --git a/mcp/reclass/classes/cluster/mcp-pike-odl-noha/opendaylight/control_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-odl-noha/opendaylight/control_pdf.yml.j2
new file mode 100644 (file)
index 0000000..fbb7de8
--- /dev/null
@@ -0,0 +1,25 @@
+##############################################################################
+# 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 %}
+---
+parameters:
+  linux:
+    network:
+      interface:
+        dhcp_int:
+          enabled: true
+          name: {{ nm.ctl01.nic_admin }}
+          proto: dhcp
+          type: eth
+        single_int:
+          enabled: true
+          name: {{ nm.ctl01.nic_mgmt }}
+          type: eth
+          proto: static
+          address: ${_param:single_address}
+          netmask: 255.255.255.0
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -8,32 +8,25 @@
 ---
 classes:
   - service.neutron.compute.single
-  - cluster.virtual-mcp-pike-common-noha.openstack_compute
-  - cluster.virtual-mcp-pike-odl-noha
+  - service.neutron.compute.opendaylight.single
+  - cluster.mcp-pike-common-noha.openstack_compute
+  - cluster.mcp-pike-odl-noha
 parameters:
-  opendaylight:
-    client:
-      ovsdb_server_iface: ptcp:6639:127.0.0.1
-      ovsdb_odl_iface: tcp:${_param:opendaylight_service_host}:6640
-      tunnel_ip: ${_param:tenant_address}
-      provider_mappings: physnet1:br-floating
   linux:
     network:
-      gateway: ${_param:openstack_gateway_address}
       interface:
         external_interface:
           enabled: true
+          type: eth
           name: ${_param:external_interface}
           mtu: ${_param:interface_mtu}
           proto: manual
-          type: eth
         br-mesh:
           enabled: true
           type: bridge
           proto: static
           address: ${_param:tenant_address}
           netmask: 255.255.255.0
-          gateway: 10.1.0.110
           use_interfaces:
             - ${_param:tenant_interface}
         br-floating:
@@ -50,7 +43,7 @@ parameters:
           type: bridge
           mtu: ${_param:interface_mtu}
           address: ${_param:external_address}
-          netmask: 255.255.255.0
+          netmask: ${_param:opnfv_net_public_mask}
           use_interfaces:
             - ${_param:external_interface}
           use_ovs_ports:
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -8,27 +8,12 @@
 ---
 classes:
   - system.neutron.control.opendaylight.single
-  - cluster.virtual-mcp-pike-common-noha.openstack_control
-  - cluster.virtual-mcp-pike-odl-noha
+  - cluster.mcp-pike-common-noha.openstack_control
+  - cluster.mcp-pike-odl-noha
 parameters:
-  neutron:
-    server:
-      backend:
-        router: ${_param:opendaylight_router}
   haproxy:
     proxy:
       listen:
-        opendaylight-web:
-          type: general-service
-          service_name: opendaylight
-          binds:
-            - address: ${_param:cluster_vip_address}
-              port: 8181
-          servers:
-            - name: odl01
-              host: ${_param:opendaylight_service_host}
-              port: 8181
-              params: ${_param:haproxy_check}
         opendaylight-rest:
           type: general-service
           service_name: opendaylight
@@ -40,3 +25,10 @@ parameters:
               host: ${_param:opendaylight_service_host}
               port: 8282
               params: ${_param:haproxy_check}
+  keystone:
+    server:
+      openrc_extra:
+        # For noHA, all public services are available through haproxy on ctl
+        sdn_controller_ip: ${_param:cluster_vip_address}
+        sdn_username: admin  # Hardcoded to default ODL values for now
+        sdn_password: admin
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,26 +7,10 @@
 ##############################################################################
 ---
 classes:
-  - cluster.virtual-mcp-pike-common-noha.openstack_gateway
-  - system.neutron.gateway.opendaylight.single
-  - cluster.virtual-mcp-pike-odl-noha
+  - cluster.mcp-pike-common-noha.openstack_gateway
+  - service.neutron.gateway.opendaylight.single
+  - cluster.mcp-pike-odl-noha
 parameters:
-  _param:
-    neutron_agents:
-      - neutron-dhcp-agent
-      - neutron-metadata-agent
-  neutron:
-    gateway:
-      pkgs: ${_param:neutron_agents}
-      services: ${_param:neutron_agents}
-      backend:
-        router: ${_param:opendaylight_router}
-  opendaylight:
-    client:
-      ovsdb_server_iface: ptcp:6639:127.0.0.1
-      ovsdb_odl_iface: tcp:${_param:opendaylight_service_host}:6640
-      tunnel_ip: ${_param:tenant_address}
-      provider_mappings: physnet1:br-floating
   linux:
     network:
       interface:
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,7 +7,7 @@
 ##############################################################################
 ---
 classes:
-  - cluster.virtual-mcp-pike-common-noha.openstack_init
+  - cluster.mcp-pike-common-noha.openstack_init
 parameters:
   _param:
     neutron_tenant_network_types: "flat,vxlan"
@@ -16,7 +16,7 @@ parameters:
     network:
       host:
         odl01:
-          address: 172.16.10.111
+          address: ${_param:opnfv_opendaylight_server_node01_single_address}
           names:
             - odl01
             - odl01.${_param:cluster_domain}
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,5 +7,6 @@
 ##############################################################################
 ---
 classes:
-  - cluster.baremetal-mcp-pike-common-ha.infra.config
-  - cluster.baremetal-mcp-pike-ovs-ha.infra
+  - cluster.mcp-pike-common-ha.infra.config
+  - cluster.mcp-pike-ovn-ha.infra
+  - cluster.all-mcp-arch-common.infra.config_pdf
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/init.yml
new file mode 100644 (file)
index 0000000..5c7438a
--- /dev/null
@@ -0,0 +1,14 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.infra
+  - cluster.mcp-pike-ovn-ha.openstack
+parameters:
+  _param:
+    cluster_name: mcp-pike-ovn-ha
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/init_vcp.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/init_vcp.yml.j2
new file mode 100644 (file)
index 0000000..46acb7d
--- /dev/null
@@ -0,0 +1,12 @@
+##############################################################################
+# 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
+##############################################################################
+---
+{%- if conf.MCP_VCP %}
+classes:
+  - cluster.mcp-pike-ovn-ha.infra
+{%- endif %}
@@ -1,12 +1,14 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
 ##############################################################################
 ---
+{%- if conf.MCP_VCP %}
+# NOTE(armband): we don't want to pull in salt.control for novcp
 classes:
-  - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport
-  - cluster.baremetal-mcp-pike-common-ha.openstack_message_queue
-  - cluster.baremetal-mcp-pike-odl-ha
+  - cluster.mcp-pike-common-ha.infra.kvm
+  - cluster.mcp-pike-ovn-ha.infra
+{%- endif %}
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/maas.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/maas.yml
new file mode 100644 (file)
index 0000000..398768e
--- /dev/null
@@ -0,0 +1,11 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.infra.maas
+  - cluster.mcp-pike-ovn-ha.infra
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -8,5 +8,5 @@
 ---
 classes:
   - cluster.all-mcp-arch-common
-  - cluster.baremetal-mcp-pike-odl-ha.infra
-  - cluster.baremetal-mcp-pike-odl-ha.openstack
+  - cluster.mcp-pike-ovn-ha.infra
+  - cluster.mcp-pike-ovn-ha.openstack
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,9 +7,9 @@
 ##############################################################################
 ---
 classes:
-  - cluster.baremetal-mcp-pike-common-ha.openstack_compute
-  - cluster.baremetal-mcp-pike-ovs-ha.openstack.compute_pdf
-  - cluster.baremetal-mcp-pike-ovs-ha.infra
+  - cluster.mcp-pike-common-ha.openstack_compute
+  - cluster.mcp-pike-ovn-ha.openstack.compute_pdf
+  - cluster.mcp-pike-ovn-ha.infra
 parameters:
   nova:
     compute:
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/compute_pdf.yml.j2
new file mode 100644 (file)
index 0000000..912537f
--- /dev/null
@@ -0,0 +1,49 @@
+##############################################################################
+# 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 %}
+{#- Filter-out NIC duplicates by constructing a dict (used NICs only) #}
+{%- set nics = { nm.cmp001.nic_private: True } %}
+{%- set vlan_private_start = nm.vlan_private.rsplit('-')[0] %}
+{%- set vlans = { vlan_private_start: nm.cmp001.nic_private } %}
+---
+parameters:
+  linux:
+    network:
+      interface:
+{%- for nic in nics %}
+        {{ nic }}:
+          enabled: true
+          type: eth
+    {%- if nic == nm.cmp001.nic_admin %}
+          proto: dhcp
+    {%- else %}
+          proto: manual
+    {%- endif %}
+          name: {{ nic }}
+{%- endfor %}
+
+{%- for vlan in vlans %}
+    {%- if vlan | int > 0 %}
+        {{ vlans[vlan] }}.{{ vlan }}:
+          enabled: true
+          proto: manual
+          type: vlan
+          name: {{ vlans[vlan] }}.{{ vlan }}
+          use_interfaces:
+            - {{ vlans[vlan] }}
+    {%- endif %}
+{%- endfor %}
+
+        br-mesh:
+          enabled: true
+          type: bridge
+          address: ${_param:tenant_address}
+          netmask: 255.255.255.0
+          mtu: 1500
+          use_interfaces:
+            - {{ nm.cmp001.nic_private }}{% if vlan_private_start | int > 0 %}.{{ vlan_private_start }}{% endif %}
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -8,6 +8,6 @@
 ---
 classes:
   - system.neutron.control.openvswitch.cluster
-  - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport
-  - cluster.baremetal-mcp-pike-common-ha.openstack_control
-  - cluster.baremetal-mcp-pike-ovs-ha.infra
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport
+  - cluster.mcp-pike-common-ha.openstack_control
+  - cluster.mcp-pike-ovn-ha.infra
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/database.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/database.yml
new file mode 100644 (file)
index 0000000..2ed79ab
--- /dev/null
@@ -0,0 +1,12 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport
+  - cluster.mcp-pike-common-ha.openstack_database
+  - cluster.mcp-pike-ovn-ha.infra_vcp
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,7 +7,7 @@
 ##############################################################################
 ---
 classes:
-  - cluster.virtual-mcp-pike-common-noha.openstack_init
+  - cluster.mcp-pike-common-ha.openstack_init
 parameters:
   _param:
     neutron_tenant_network_types: "flat,vxlan"
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/message_queue.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/message_queue.yml
new file mode 100644 (file)
index 0000000..db587ac
--- /dev/null
@@ -0,0 +1,12 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport
+  - cluster.mcp-pike-common-ha.openstack_message_queue
+  - cluster.mcp-pike-ovn-ha.infra_vcp
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,5 +7,6 @@
 ##############################################################################
 ---
 classes:
-  - cluster.baremetal-mcp-pike-common-ha.infra.maas
-  - cluster.baremetal-mcp-pike-odl-ha.infra
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_triport
+  - cluster.mcp-pike-common-ha.openstack_proxy
+  - cluster.mcp-pike-ovn-ha.infra_vcp
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/telemetry.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/telemetry.yml
new file mode 100644 (file)
index 0000000..4b9d9ac
--- /dev/null
@@ -0,0 +1,12 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport
+  - cluster.mcp-pike-common-ha.openstack_telemetry
+  - cluster.mcp-pike-ovn-ha.infra_vcp
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,5 +7,5 @@
 ##############################################################################
 ---
 classes:
-  - cluster.virtual-mcp-pike-common-noha.infra.config
-  - cluster.virtual-mcp-pike-ovn-noha
+  - cluster.mcp-pike-common-noha.infra.config
+  - cluster.mcp-pike-ovn-noha
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,8 +7,8 @@
 ##############################################################################
 ---
 classes:
-  - cluster.virtual-mcp-pike-common-noha.infra
+  - cluster.mcp-pike-common-noha.infra
 
 parameters:
   _param:
-    cluster_name: virtual-mcp-pike-ovn-noha
+    cluster_name: mcp-pike-ovn-noha
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovn-noha/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-noha/init.yml
new file mode 100644 (file)
index 0000000..b3aa404
--- /dev/null
@@ -0,0 +1,13 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - system.linux.system.single
+  - cluster.mcp-pike-common-noha.init_options
+  - cluster.mcp-pike-ovn-noha.infra
+  - cluster.mcp-pike-ovn-noha.openstack
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -8,9 +8,12 @@
 ---
 classes:
   - service.neutron.compute.ovn.single
-  - cluster.virtual-mcp-pike-common-noha.openstack_compute
-  - cluster.virtual-mcp-pike-ovn-noha
+  - cluster.mcp-pike-common-noha.openstack_compute
+  - cluster.mcp-pike-ovn-noha
 parameters:
+  neutron:
+    compute:
+      controller_vip: ${_param:cluster_local_address}
   linux:
     network:
       interface:
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -8,5 +8,5 @@
 ---
 classes:
   - system.neutron.control.ovn.single
-  - cluster.virtual-mcp-pike-common-noha.openstack_control
-  - cluster.virtual-mcp-pike-ovn-noha
+  - cluster.mcp-pike-common-noha.openstack_control
+  - cluster.mcp-pike-ovn-noha
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovn-noha/openstack/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-noha/openstack/init.yml
new file mode 100644 (file)
index 0000000..03d46ef
--- /dev/null
@@ -0,0 +1,10 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-noha.openstack_init
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/config.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/config.yml
new file mode 100644 (file)
index 0000000..0b06326
--- /dev/null
@@ -0,0 +1,12 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.infra.config
+  - cluster.mcp-pike-ovs-dpdk-ha.infra
+  - cluster.all-mcp-arch-common.infra.config_dpdk_pdf
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,11 +7,11 @@
 ##############################################################################
 ---
 classes:
-  - cluster.baremetal-mcp-pike-common-ha.infra
-  - cluster.baremetal-mcp-pike-ovs-dpdk-ha.openstack
+  - cluster.mcp-pike-common-ha.infra
+  - cluster.mcp-pike-ovs-dpdk-ha.openstack
 parameters:
   _param:
-    cluster_name: baremetal-mcp-pike-ovs-dpdk-ha
+    cluster_name: mcp-pike-ovs-dpdk-ha
   linux:
     system:
       service:
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/init_vcp.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/init_vcp.yml.j2
new file mode 100644 (file)
index 0000000..9e85995
--- /dev/null
@@ -0,0 +1,12 @@
+##############################################################################
+# 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
+##############################################################################
+---
+{%- if conf.MCP_VCP %}
+classes:
+  - cluster.mcp-pike-ovs-dpdk-ha.infra
+{%- endif %}
@@ -1,12 +1,14 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
 ##############################################################################
 ---
+{%- if conf.MCP_VCP %}
+# NOTE(armband): we don't want to pull in salt.control for novcp
 classes:
-  - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport
-  - cluster.baremetal-mcp-pike-common-ha.openstack_message_queue
-  - cluster.baremetal-mcp-pike-ovs-dpdk-ha
+  - cluster.mcp-pike-common-ha.infra.kvm
+  - cluster.mcp-pike-ovs-dpdk-ha.infra
+{%- endif %}
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/maas.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/maas.yml
new file mode 100644 (file)
index 0000000..f472885
--- /dev/null
@@ -0,0 +1,11 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.infra.maas
+  - cluster.mcp-pike-ovs-dpdk-ha.infra
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -8,5 +8,5 @@
 ---
 classes:
   - cluster.all-mcp-arch-common
-  - cluster.baremetal-mcp-pike-ovs-dpdk-ha.infra
-  - cluster.baremetal-mcp-pike-ovs-dpdk-ha.openstack
+  - cluster.mcp-pike-ovs-dpdk-ha.infra
+  - cluster.mcp-pike-ovs-dpdk-ha.openstack
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/compute.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/compute.yml
new file mode 100644 (file)
index 0000000..d121c08
--- /dev/null
@@ -0,0 +1,28 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.openstack_compute
+  - cluster.mcp-pike-ovs-dpdk-ha.infra
+  - cluster.mcp-pike-ovs-dpdk-ha.openstack.compute_pdf
+  - system.neutron.compute.nfv.dpdk
+parameters:
+  neutron:
+    gateway:
+      dpdk: 'True'
+      vhost_socket_dir: ${_param:compute_ovs_vhost_socket_dir}
+      backend:
+        tenant_vlan_range: ${_param:neutron_tenant_vlan_range}
+  nova:
+    compute:
+      libvirt_service: libvirtd
+      libvirt_bin: /etc/default/libvirtd
+  linux:
+    system:
+      kernel:
+        isolcpu: ${_param:compute_kernel_isolcpu}
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/compute_pdf.yml.j2
new file mode 100644 (file)
index 0000000..cf9a0b3
--- /dev/null
@@ -0,0 +1,27 @@
+##############################################################################
+# 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 %}
+---
+parameters:
+  linux:
+    network:
+      ovs_nowait: true
+      interface:
+        dpdk0:
+          name: ${_param:dpdk0_name}
+          pci: ${_param:dpdk0_pci}
+          driver: ${_param:dpdk0_driver}
+          enabled: true
+          bridge: br-prv
+          type: dpdk_ovs_port
+          n_rxq: ${_param:dpdk0_n_rxq}
+        br-prv:
+          enabled: true
+          type: dpdk_ovs_bridge
+        br-floating:
+          datapath_type: netdev
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -8,9 +8,9 @@
 ---
 classes:
   - system.neutron.control.openvswitch.cluster
-  - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport
-  - cluster.baremetal-mcp-pike-common-ha.openstack_control
-  - cluster.baremetal-mcp-pike-ovs-dpdk-ha.infra
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport
+  - cluster.mcp-pike-common-ha.openstack_control
+  - cluster.mcp-pike-ovs-dpdk-ha.infra
 parameters:
   neutron:
     server:
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/database.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/database.yml
new file mode 100644 (file)
index 0000000..324ec3f
--- /dev/null
@@ -0,0 +1,12 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport
+  - cluster.mcp-pike-common-ha.openstack_database
+  - cluster.mcp-pike-ovs-dpdk-ha.infra.init_vcp
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,8 +7,8 @@
 ##############################################################################
 ---
 classes:
-  - cluster.baremetal-mcp-pike-common-ha.infra
-  - cluster.baremetal-mcp-pike-ovs-ha.openstack
+  - cluster.mcp-pike-common-ha.openstack_init
 parameters:
   _param:
-    cluster_name: baremetal-mcp-pike-ovs-ha
+    neutron_tenant_network_types: "flat,vlan"
+    neutron_tenant_vlan_range: ${_param:opnfv_net_tenant_vlan}
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/message_queue.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/message_queue.yml
new file mode 100644 (file)
index 0000000..f15e431
--- /dev/null
@@ -0,0 +1,12 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport
+  - cluster.mcp-pike-common-ha.openstack_message_queue
+  - cluster.mcp-pike-ovs-dpdk-ha.infra.init_vcp
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/proxy.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/proxy.yml
new file mode 100644 (file)
index 0000000..09eda53
--- /dev/null
@@ -0,0 +1,12 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_triport
+  - cluster.mcp-pike-common-ha.openstack_proxy
+  - cluster.mcp-pike-ovs-dpdk-ha.infra.init_vcp
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,8 +7,6 @@
 ##############################################################################
 ---
 classes:
-  - cluster.baremetal-mcp-pike-common-ha.infra
-  - cluster.baremetal-mcp-pike-odl-ha.openstack
-parameters:
-  _param:
-    cluster_name: baremetal-mcp-pike-odl-ha
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport
+  - cluster.mcp-pike-common-ha.openstack_telemetry
+  - cluster.mcp-pike-ovs-dpdk-ha.infra.init_vcp
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -8,21 +8,14 @@
 ---
 classes:
   - system.reclass.storage.system.openstack_gateway_single
-  - cluster.virtual-mcp-pike-common-noha.infra.config
-  - cluster.virtual-mcp-pike-ovs-dpdk-noha
+  - cluster.mcp-pike-common-noha.infra.config
+  - cluster.mcp-pike-ovs-dpdk-noha
+  - cluster.all-mcp-arch-common.infra.config_dpdk_pdf
 parameters:
   reclass:
     storage:
       node:
-        openstack_compute_node01:
-          params:
-            dpdk0_name: ${_param:opnfv_fn_vm_tertiary_interface}
-            dpdk0_pci: '"0000:00:05.0"'
-        openstack_compute_node02:
-          params:
-            dpdk0_name: ${_param:opnfv_fn_vm_tertiary_interface}
-            dpdk0_pci: '"0000:00:05.0"'
         openstack_gateway_node01:
           params:
-            tenant_address: 10.1.0.110
-            external_address: 10.16.0.110
+            tenant_address: ${_param:opnfv_openstack_gateway_node01_tenant_address}
+            external_address: ${_param:opnfv_openstack_gateway_node01_external_address}
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,8 +7,8 @@
 ##############################################################################
 ---
 classes:
-  - cluster.virtual-mcp-pike-common-noha.infra
+  - cluster.mcp-pike-common-noha.infra
 
 parameters:
   _param:
-    cluster_name: virtual-mcp-pike-ovs-noha
+    cluster_name: mcp-pike-ovs-dpdk-noha
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -8,7 +8,6 @@
 ---
 classes:
   - system.linux.system.single
-  - cluster.all-mcp-arch-common
-  - cluster.virtual-mcp-pike-common-noha.init_options
-  - cluster.virtual-mcp-pike-ovn-noha.infra
-  - cluster.virtual-mcp-pike-ovn-noha.openstack
+  - cluster.mcp-pike-common-noha.init_options
+  - cluster.mcp-pike-ovs-dpdk-noha.infra
+  - cluster.mcp-pike-ovs-dpdk-noha.openstack
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -10,8 +10,8 @@ classes:
   - system.nova.compute.nfv.hugepages
   - system.neutron.compute.nfv.dpdk
   - service.neutron.compute.single
-  - cluster.virtual-mcp-pike-common-noha.openstack_compute
-  - cluster.virtual-mcp-pike-ovs-dpdk-noha
+  - cluster.mcp-pike-common-noha.openstack_compute
+  - cluster.mcp-pike-ovs-dpdk-noha
 parameters:
   neutron:
     compute:
@@ -23,11 +23,13 @@ parameters:
         dpdk0:
           name: ${_param:dpdk0_name}
           pci: ${_param:dpdk0_pci}
-          driver: igb_uio
+          driver: ${_param:dpdk0_driver}
           enabled: true
           bridge: br-prv
           type: dpdk_ovs_port
-          n_rxq: 2
+          n_rxq: ${_param:dpdk0_n_rxq}
         br-prv:
           enabled: true
           type: dpdk_ovs_bridge
+        tenant_interface:
+          type: dpdk  # Not a meaningful type, just match 'dpdk' for filtering
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -8,10 +8,10 @@
 ---
 classes:
   - system.neutron.control.openvswitch.single
-  - cluster.virtual-mcp-pike-common-noha.openstack_control
-  - cluster.virtual-mcp-pike-ovs-dpdk-noha
+  - cluster.mcp-pike-common-noha.openstack_control
+  - cluster.mcp-pike-ovs-dpdk-noha
 parameters:
   neutron:
     server:
       backend:
-        tenant_vlan_range: 1000:1999
+        tenant_vlan_range: ${_param:opnfv_net_tenant_vlan}
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,9 +7,9 @@
 ##############################################################################
 ---
 classes:
-  - cluster.virtual-mcp-pike-common-noha.openstack_gateway
+  - cluster.mcp-pike-common-noha.openstack_gateway
   - service.neutron.gateway.single
-  - cluster.virtual-mcp-pike-ovs-dpdk-noha
+  - cluster.mcp-pike-ovs-dpdk-noha
 parameters:
   neutron:
     gateway:
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/openstack/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/openstack/init.yml
new file mode 100644 (file)
index 0000000..9ef4b1b
--- /dev/null
@@ -0,0 +1,13 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-noha.openstack_init
+parameters:
+  _param:
+    neutron_tenant_network_types: "flat,vlan"
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/config.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/config.yml
new file mode 100644 (file)
index 0000000..cab196d
--- /dev/null
@@ -0,0 +1,12 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.infra.config
+  - cluster.mcp-pike-ovs-ha.infra
+  - cluster.all-mcp-arch-common.infra.config_pdf
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/init.yml
new file mode 100644 (file)
index 0000000..c0c873c
--- /dev/null
@@ -0,0 +1,14 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.infra
+  - cluster.mcp-pike-ovs-ha.openstack
+parameters:
+  _param:
+    cluster_name: mcp-pike-ovs-ha
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/init_vcp.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/init_vcp.yml.j2
new file mode 100644 (file)
index 0000000..74023ce
--- /dev/null
@@ -0,0 +1,12 @@
+##############################################################################
+# 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
+##############################################################################
+---
+{%- if conf.MCP_VCP %}
+classes:
+  - cluster.mcp-pike-ovs-ha.infra
+{%- endif %}
@@ -1,12 +1,14 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
 ##############################################################################
 ---
+{%- if conf.MCP_VCP %}
+# NOTE(armband): we don't want to pull in salt.control for novcp
 classes:
-  - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport
-  - cluster.baremetal-mcp-pike-common-ha.openstack_message_queue
-  - cluster.baremetal-mcp-pike-ovs-ha
+  - cluster.mcp-pike-common-ha.infra.kvm
+  - cluster.mcp-pike-ovs-ha.infra
+{%- endif %}
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/maas.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/maas.yml
new file mode 100644 (file)
index 0000000..d0aabd9
--- /dev/null
@@ -0,0 +1,11 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.infra.maas
+  - cluster.mcp-pike-ovs-ha.infra
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/init.yml
new file mode 100644 (file)
index 0000000..a603c84
--- /dev/null
@@ -0,0 +1,12 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.all-mcp-arch-common
+  - cluster.mcp-pike-ovs-ha.infra
+  - cluster.mcp-pike-ovs-ha.openstack
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/compute.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/compute.yml
new file mode 100644 (file)
index 0000000..fa815e8
--- /dev/null
@@ -0,0 +1,17 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.openstack_compute
+  - cluster.mcp-pike-ovs-ha.openstack.compute_pdf
+  - cluster.mcp-pike-ovs-ha.infra
+parameters:
+  nova:
+    compute:
+      libvirt_service: libvirtd
+      libvirt_bin: /etc/default/libvirtd
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/compute_pdf.yml.j2
new file mode 100644 (file)
index 0000000..912537f
--- /dev/null
@@ -0,0 +1,49 @@
+##############################################################################
+# 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 %}
+{#- Filter-out NIC duplicates by constructing a dict (used NICs only) #}
+{%- set nics = { nm.cmp001.nic_private: True } %}
+{%- set vlan_private_start = nm.vlan_private.rsplit('-')[0] %}
+{%- set vlans = { vlan_private_start: nm.cmp001.nic_private } %}
+---
+parameters:
+  linux:
+    network:
+      interface:
+{%- for nic in nics %}
+        {{ nic }}:
+          enabled: true
+          type: eth
+    {%- if nic == nm.cmp001.nic_admin %}
+          proto: dhcp
+    {%- else %}
+          proto: manual
+    {%- endif %}
+          name: {{ nic }}
+{%- endfor %}
+
+{%- for vlan in vlans %}
+    {%- if vlan | int > 0 %}
+        {{ vlans[vlan] }}.{{ vlan }}:
+          enabled: true
+          proto: manual
+          type: vlan
+          name: {{ vlans[vlan] }}.{{ vlan }}
+          use_interfaces:
+            - {{ vlans[vlan] }}
+    {%- endif %}
+{%- endfor %}
+
+        br-mesh:
+          enabled: true
+          type: bridge
+          address: ${_param:tenant_address}
+          netmask: 255.255.255.0
+          mtu: 1500
+          use_interfaces:
+            - {{ nm.cmp001.nic_private }}{% if vlan_private_start | int > 0 %}.{{ vlan_private_start }}{% endif %}
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/control.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/control.yml
new file mode 100644 (file)
index 0000000..a70a8a0
--- /dev/null
@@ -0,0 +1,13 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - system.neutron.control.openvswitch.cluster
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport
+  - cluster.mcp-pike-common-ha.openstack_control
+  - cluster.mcp-pike-ovs-ha.infra
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/database.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/database.yml
new file mode 100644 (file)
index 0000000..33c86e8
--- /dev/null
@@ -0,0 +1,12 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport
+  - cluster.mcp-pike-common-ha.openstack_database
+  - cluster.mcp-pike-ovs-ha.infra.init_vcp
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/init.yml
new file mode 100644 (file)
index 0000000..02cd14a
--- /dev/null
@@ -0,0 +1,13 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.openstack_init
+parameters:
+  _param:
+    neutron_tenant_network_types: "flat,vxlan"
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/message_queue.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/message_queue.yml
new file mode 100644 (file)
index 0000000..629b279
--- /dev/null
@@ -0,0 +1,12 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport
+  - cluster.mcp-pike-common-ha.openstack_message_queue
+  - cluster.mcp-pike-ovs-ha.infra.init_vcp
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/proxy.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/proxy.yml
new file mode 100644 (file)
index 0000000..3698965
--- /dev/null
@@ -0,0 +1,12 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_triport
+  - cluster.mcp-pike-common-ha.openstack_proxy
+  - cluster.mcp-pike-ovs-ha.infra.init_vcp
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/telemetry.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/telemetry.yml
new file mode 100644 (file)
index 0000000..26341ea
--- /dev/null
@@ -0,0 +1,12 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport
+  - cluster.mcp-pike-common-ha.openstack_telemetry
+  - cluster.mcp-pike-ovs-ha.infra.init_vcp
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -8,13 +8,14 @@
 ---
 classes:
   - system.reclass.storage.system.openstack_gateway_single
-  - cluster.virtual-mcp-pike-common-noha.infra.config
-  - cluster.virtual-mcp-pike-ovs-noha
+  - cluster.mcp-pike-common-noha.infra.config
+  - cluster.mcp-pike-ovs-noha
+  - cluster.all-mcp-arch-common.infra.config_pdf
 parameters:
   reclass:
     storage:
       node:
         openstack_gateway_node01:
           params:
-            tenant_address: 10.1.0.110
-            external_address: 10.16.0.110
+            tenant_address: ${_param:opnfv_openstack_gateway_node01_tenant_address}
+            external_address: ${_param:opnfv_openstack_gateway_node01_external_address}
old mode 100755 (executable)
new mode 100644 (file)
similarity index 74%
rename from mcp/config/states/networking_gw
rename to mcp/reclass/classes/cluster/mcp-pike-ovs-noha/infra/init.yml
index ea7c87b..54b50d2
@@ -1,4 +1,3 @@
-#!/bin/bash -e
 ##############################################################################
 # Copyright (c) 2018 Mirantis Inc., Enea AB and others.
 # All rights reserved. This program and the accompanying materials
@@ -6,7 +5,10 @@
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-noha.infra
 
-CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x
-
-salt -I 'neutron:gateway' cmd.run 'ifup --force --ignore-errors br-ex'
+parameters:
+  _param:
+    cluster_name: mcp-pike-ovs-noha
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-noha/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-noha/init.yml
new file mode 100644 (file)
index 0000000..94267fa
--- /dev/null
@@ -0,0 +1,13 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - system.linux.system.single
+  - cluster.mcp-pike-common-noha.init_options
+  - cluster.mcp-pike-ovs-noha.infra
+  - cluster.mcp-pike-ovs-noha.openstack
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -8,8 +8,8 @@
 ---
 classes:
   - service.neutron.compute.single
-  - cluster.virtual-mcp-pike-common-noha.openstack_compute
-  - cluster.virtual-mcp-pike-ovs-noha
+  - cluster.mcp-pike-common-noha.openstack_compute
+  - cluster.mcp-pike-ovs-noha
 parameters:
   linux:
     network:
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -8,5 +8,5 @@
 ---
 classes:
   - system.neutron.control.openvswitch.single
-  - cluster.virtual-mcp-pike-common-noha.openstack_control
-  - cluster.virtual-mcp-pike-ovs-noha
+  - cluster.mcp-pike-common-noha.openstack_control
+  - cluster.mcp-pike-ovs-noha
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -7,9 +7,9 @@
 ##############################################################################
 ---
 classes:
-  - cluster.virtual-mcp-pike-common-noha.openstack_gateway
+  - cluster.mcp-pike-common-noha.openstack_gateway
   - service.neutron.gateway.single
-  - cluster.virtual-mcp-pike-ovs-noha
+  - cluster.mcp-pike-ovs-noha
 parameters:
   linux:
     network:
diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-noha/openstack/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-noha/openstack/init.yml
new file mode 100644 (file)
index 0000000..e94c4a0
--- /dev/null
@@ -0,0 +1,13 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-common-noha.openstack_init
+parameters:
+  _param:
+    neutron_tenant_network_types: "flat,vxlan"
diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/init.yml b/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/init.yml
deleted file mode 100644 (file)
index 07e3ef2..0000000
+++ /dev/null
@@ -1,14 +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
-##############################################################################
----
-classes:
-  - system.linux.system.single
-  - cluster.all-mcp-arch-common
-  - cluster.virtual-mcp-pike-common-noha.init_options
-  - cluster.virtual-mcp-pike-ovs-dpdk-noha.infra
-  - cluster.virtual-mcp-pike-ovs-dpdk-noha.openstack
diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/openstack/init.yml b/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/openstack/init.yml
deleted file mode 100644 (file)
index 5445a07..0000000
+++ /dev/null
@@ -1,21 +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
-##############################################################################
----
-classes:
-  - cluster.virtual-mcp-pike-common-noha.openstack_init
-parameters:
-  _param:
-    neutron_tenant_network_types: "flat,vlan"
-    compute_hugepages_size: 2M
-    compute_hugepages_count: 2048
-    compute_hugepages_mount: /mnt/hugepages_2M
-    compute_dpdk_driver: uio
-    compute_ovs_pmd_cpu_mask: "0x6"
-    compute_ovs_dpdk_socket_mem: "1024"
-    compute_ovs_dpdk_lcore_mask: "0x8"
-    compute_ovs_memory_channels: "2"
diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/init.yml b/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/init.yml
deleted file mode 100644 (file)
index b29ac95..0000000
+++ /dev/null
@@ -1,14 +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
-##############################################################################
----
-classes:
-  - system.linux.system.single
-  - cluster.all-mcp-arch-common
-  - cluster.virtual-mcp-pike-common-noha.init_options
-  - cluster.virtual-mcp-pike-ovs-noha.infra
-  - cluster.virtual-mcp-pike-ovs-noha.openstack
index 86594f6..198b5b7 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 86594f66eb239eda9424b58c96914fdb27e3e7ff
+Subproject commit 198b5b7459c9f602ded773e966888705d866f6dd
@@ -7,7 +7,7 @@
 ##############################################################################
 ---
 classes:
-  - cluster.baremetal-mcp-pike-odl-ha.infra.config
+  - cluster.mcp-pike-odl-ha.infra.config
 parameters:
   _param:
     linux_system_codename: xenial
@@ -15,4 +15,4 @@ parameters:
   linux:
     system:
       name: cfg01
-      domain: baremetal-mcp-pike-odl-ha.local
+      domain: mcp-pike-odl-ha.local
@@ -7,7 +7,7 @@
 ##############################################################################
 ---
 classes:
-  - cluster.virtual-mcp-pike-ovn-noha.infra.config
+  - cluster.mcp-pike-odl-noha.infra.config
 parameters:
   _param:
     linux_system_codename: xenial
@@ -15,4 +15,4 @@ parameters:
   linux:
     system:
       name: cfg01
-      domain: virtual-mcp-pike-ovn-noha.local
+      domain: mcp-pike-odl-noha.local
diff --git a/mcp/reclass/nodes/cfg01.mcp-pike-ovn-ha.local.yml b/mcp/reclass/nodes/cfg01.mcp-pike-ovn-ha.local.yml
new file mode 100644 (file)
index 0000000..2c370db
--- /dev/null
@@ -0,0 +1,18 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-ovn-ha.infra.config
+parameters:
+  _param:
+    linux_system_codename: xenial
+    reclass_data_revision: master
+  linux:
+    system:
+      name: cfg01
+      domain: mcp-pike-ovn-ha.local
@@ -7,7 +7,7 @@
 ##############################################################################
 ---
 classes:
-  - cluster.baremetal-mcp-pike-ovs-ha.infra.config
+  - cluster.mcp-pike-ovn-noha.infra.config
 parameters:
   _param:
     linux_system_codename: xenial
@@ -15,4 +15,4 @@ parameters:
   linux:
     system:
       name: cfg01
-      domain: baremetal-mcp-pike-ovs-ha.local
+      domain: mcp-pike-ovn-noha.local
@@ -7,7 +7,7 @@
 ##############################################################################
 ---
 classes:
-  - cluster.virtual-mcp-pike-odl-noha.infra.config
+  - cluster.mcp-pike-ovs-dpdk-ha.infra.config
 parameters:
   _param:
     linux_system_codename: xenial
@@ -15,4 +15,4 @@ parameters:
   linux:
     system:
       name: cfg01
-      domain: virtual-mcp-pike-odl-noha.local
+      domain: mcp-pike-ovs-dpdk-ha.local
diff --git a/mcp/reclass/nodes/cfg01.mcp-pike-ovs-dpdk-noha.local.yml b/mcp/reclass/nodes/cfg01.mcp-pike-ovs-dpdk-noha.local.yml
new file mode 100644 (file)
index 0000000..394a9f6
--- /dev/null
@@ -0,0 +1,18 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-ovs-dpdk-noha.infra.config
+parameters:
+  _param:
+    linux_system_codename: xenial
+    reclass_data_revision: master
+  linux:
+    system:
+      name: cfg01
+      domain: mcp-pike-ovs-dpdk-noha.local
diff --git a/mcp/reclass/nodes/cfg01.mcp-pike-ovs-ha.local.yml b/mcp/reclass/nodes/cfg01.mcp-pike-ovs-ha.local.yml
new file mode 100644 (file)
index 0000000..5e3cb01
--- /dev/null
@@ -0,0 +1,18 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-ovs-ha.infra.config
+parameters:
+  _param:
+    linux_system_codename: xenial
+    reclass_data_revision: master
+  linux:
+    system:
+      name: cfg01
+      domain: mcp-pike-ovs-ha.local
diff --git a/mcp/reclass/nodes/cfg01.mcp-pike-ovs-noha.local.yml b/mcp/reclass/nodes/cfg01.mcp-pike-ovs-noha.local.yml
new file mode 100644 (file)
index 0000000..793e7c0
--- /dev/null
@@ -0,0 +1,18 @@
+##############################################################################
+# 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
+##############################################################################
+---
+classes:
+  - cluster.mcp-pike-ovs-noha.infra.config
+parameters:
+  _param:
+    linux_system_codename: xenial
+    reclass_data_revision: master
+  linux:
+    system:
+      name: cfg01
+      domain: mcp-pike-ovs-noha.local
diff --git a/mcp/reclass/nodes/cfg01.virtual-mcp-pike-ovs-dpdk-noha.local.yml b/mcp/reclass/nodes/cfg01.virtual-mcp-pike-ovs-dpdk-noha.local.yml
deleted file mode 100644 (file)
index 4c435f8..0000000
+++ /dev/null
@@ -1,18 +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
-##############################################################################
----
-classes:
-  - cluster.virtual-mcp-pike-ovs-dpdk-noha.infra.config
-parameters:
-  _param:
-    linux_system_codename: xenial
-    reclass_data_revision: master
-  linux:
-    system:
-      name: cfg01
-      domain: virtual-mcp-pike-ovs-dpdk-noha.local
diff --git a/mcp/reclass/nodes/cfg01.virtual-mcp-pike-ovs-noha.local.yml b/mcp/reclass/nodes/cfg01.virtual-mcp-pike-ovs-noha.local.yml
deleted file mode 100644 (file)
index 7a715cf..0000000
+++ /dev/null
@@ -1,18 +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
-##############################################################################
----
-classes:
-  - cluster.virtual-mcp-pike-ovs-noha.infra.config
-parameters:
-  _param:
-    linux_system_codename: xenial
-    reclass_data_revision: master
-  linux:
-    system:
-      name: cfg01
-      domain: virtual-mcp-pike-ovs-noha.local
index dbb625a..2903f92 100644 (file)
@@ -10,6 +10,7 @@
 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:
index 17a7df8..46691bb 100644 (file)
 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'] }}"
+  - 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
new file mode 100644 (file)
index 0000000..e7fe1d2
--- /dev/null
@@ -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/mcp/salt-formulas/maas/machines/set_storage_layout.sls b/mcp/salt-formulas/maas/machines/set_storage_layout.sls
new file mode 100644 (file)
index 0000000..0b7e371
--- /dev/null
@@ -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 set_storage_layout via _modules/maas.py
+set_storage_layout:
+  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 set-storage-layout {{ pillar['system_id'] }} storage_layout={{ pillar['storage_layout'] | default('lvm') }} lv_size={{ pillar['lv_size'] | default('100%') }}"
+  - require:
+    - cmd: maas_login_admin
diff --git a/mcp/salt-formulas/maas/pxe_nat.sls b/mcp/salt-formulas/maas/pxe_nat.sls
new file mode 100644 (file)
index 0000000..701bae0
--- /dev/null
@@ -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') }}/24
+    - save: True
+
+iptables_pxe_source:
+  iptables.append:
+    - table: filter
+    - chain: INPUT
+    - jump: ACCEPT
+    - destination: 0/0
+    - source: {{ salt['pillar.get']('_param:single_address') }}/24
+    - save: True
+
+iptables_pxe_destination:
+  iptables.append:
+    - table: filter
+    - chain: INPUT
+    - jump: ACCEPT
+    - destination: {{ salt['pillar.get']('_param:single_address') }}/24
+    - source: 0/0
+    - save: True
diff --git a/mcp/salt-formulas/opendaylight/client.sls b/mcp/salt-formulas/opendaylight/client.sls
deleted file mode 100644 (file)
index dba51b3..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-##############################################################################
-# Copyright (c) 2017 Mirantis Inc. 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 "opendaylight/map.jinja" import client with context %}
-{%- if client.get('enabled', True) %}
-
-opendaylight_client_packages:
-  pkg.installed:
-  - pkgs: {{ client.pkgs }}
-
-{%- if pillar.linux.network.bridge is defined and pillar.linux.network.bridge == 'openvswitch' %}
-ovs_set_manager:
-  cmd.run:
-  - name: "ovs-vsctl set-manager {{ client.ovsdb_server_iface }} {{ client.ovsdb_odl_iface }}"
-  - unless: "ovs-vsctl get-manager | grep -Fx {{ client.ovsdb_odl_iface }}"
-
-ovs_set_tunnel_endpoint:
-  cmd.run:
-  - name: "ovs-vsctl set Open_vSwitch . other_config:local_ip={{ client.tunnel_ip }}"
-  - unless: "ovs-vsctl get Open_vSwitch . other_config | fgrep local_ip"
-  - require:
-    - cmd: ovs_set_manager
-
-{%- if client.provider_mappings is defined %}
-ovs_set_provider_mapping:
-  cmd.run:
-  - name: "ovs-vsctl set Open_vSwitch . other_config:provider_mappings={{ client.provider_mappings }}"
-  - unless: "ovs-vsctl get Open_vSwitch . other_config | fgrep provider_mappings"
-  - require:
-    - cmd: ovs_set_manager
-{%- endif %}
-
-{%- endif %}
-{%- endif %}
index e637188..de2ac67 100644 (file)
@@ -84,7 +84,7 @@ DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
                     <Property name="jetty.host"/>
                 </Set>
                 <Set name="port">
-                    <Property name="jetty.port" default="8181"/>
+                    <Property name="jetty.port" default="{{ server.odl_rest_port }}"/>
                 </Set>
                 <Set name="idleTimeout">
                     <Property name="http.timeout" default="300000"/>
@@ -94,37 +94,6 @@ DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
         </Arg>
     </Call>
 
-    <Call name="addConnector">
-        <Arg>
-            <New class="org.eclipse.jetty.server.ServerConnector">
-                <Arg name="server">
-                    <Ref refid="Server" />
-                </Arg>
-                <Arg name="factories">
-                    <Array type="org.eclipse.jetty.server.ConnectionFactory">
-                        <Item>
-                            <New class="org.eclipse.jetty.server.HttpConnectionFactory">
-                                <Arg name="config">
-                                    <Ref refid="http-legacy" />
-                                </Arg>
-                            </New>
-                        </Item>
-                    </Array>
-                </Arg>
-                <Set name="host">{{ server.odl_bind_ip }}
-                    <Property name="jetty.host"/>
-                </Set>
-                <Set name="port">
-                    <Property name="jetty.port" default="{{ server.odl_rest_port }}"/>
-                </Set>
-                <Set name="idleTimeout">
-                    <Property name="http.timeout" default="300000"/>
-                </Set>q
-                <Set name="name">jetty-legacy</Set>
-            </New>
-        </Arg>
-    </Call>
-
     <!-- =========================================================== -->
     <!-- Configure Authentication Realms -->
     <!-- Realms may be configured for the entire server here, or -->
index d7dfbd9..2921ade 100644 (file)
@@ -19,4 +19,3 @@ export EXTRA_JAVA_OPTS='{{ server.java_extra_opts }}' # Additional JVM options
 # export KARAF_OPTS # Additional available Karaf options
 # export KARAF_DEBUG # Enable debug mode
 # export KARAF_REDIRECT # Enable/set the std/err redirection when using bin/start
-
index 9e9df1d..3857511 100644 (file)
@@ -11,7 +11,7 @@
       'karaf_features': {'default': ['standard', 'wrap', 'ssh']},
       'odl_rest_port': '8282',
       'odl_bind_ip': '0.0.0.0',
-      'repo': 'odl-team/nitrogen',
+      'repo': 'odl-team/oxygen',
       'log_levels': {},
       'enable_ha': false,
       'ha_node_ips': [],
@@ -26,9 +26,3 @@
       'repo': 'opendaylight-6-testing'
     },
 }, merge=salt['pillar.get']('opendaylight:server')) %}
-
-{%- set client = salt['grains.filter_by']({
-  'Debian': {
-    'pkgs': ['python-networking-odl'],
-  },
-}, merge=salt['pillar.get']('opendaylight:client')) %}
index f953cdd..51a4d9f 100644 (file)
@@ -15,10 +15,10 @@ opendaylight_repo_key:
     - name: "apt-key adv --keyserver keyserver.ubuntu.com --recv 44C05248"
 {%- if system.proxy is defined and system.proxy.keyserver is defined %}
     - env:
-{%- if system.proxy.keyserver.http is defined %}
+{%- if system.proxy.keyserver.http is defined and grains['dns']['nameservers'][0] in system.proxy.keyserver.http %}
       - http_proxy: {{ system.proxy.keyserver.http }}
 {%- endif %}
-{%- if system.proxy.keyserver.https is defined %}
+{%- if system.proxy.keyserver.https is defined and grains['dns']['nameservers'][0] in system.proxy.keyserver.https %}
       - https_proxy: {{ system.proxy.keyserver.https }}
 {%- endif %}
 {%- endif %}
@@ -29,8 +29,8 @@ opendaylight_repo:
   # https://github.com/saltstack/salt/pull/45224
   # - ppa: {{ server.repo }}
   - human_name: opendaylight-ppa
-  - name: deb http://ppa.launchpad.net/odl-team/nitrogen/ubuntu xenial main
-  - file: /etc/apt/sources.list.d/odl-team-ubuntu-nitrogen-xenial.list
+  - name: deb http://ppa.launchpad.net/odl-team/{{ server.version }}/ubuntu xenial main
+  - file: /etc/apt/sources.list.d/odl-team-ubuntu-{{ server.version }}-xenial.list
 
 opendaylight:
   pkg.installed:
@@ -49,6 +49,13 @@ opendaylight:
     - ini: /opt/opendaylight/etc/org.apache.karaf.features.cfg
     - ini: /opt/opendaylight/etc/org.ops4j.pax.web.cfg
 
+# TODO: use service.masked state once salt get updated to 2017.7.0+
+service.mask:
+  module.run:
+  - m_name: opendaylight
+  - require_in:
+    - pkg: opendaylight
+
 /opt/opendaylight/etc/jetty.xml:
   file.managed:
   - source: salt://opendaylight/files/jetty.xml
@@ -78,6 +85,7 @@ opendaylight:
   ini.options_present:
     - sections:
         org.ops4j.pax.web.listening.addresses: {{ server.odl_bind_ip }}
+        org.osgi.service.http.port: {{ server.odl_rest_port }}
 
 {%- if server.get('router_enabled', false) %}
 /opt/opendaylight/etc/custom.properties:
diff --git a/mcp/salt-formulas/opnfv/route_wrapper.sls b/mcp/salt-formulas/opnfv/route_wrapper.sls
new file mode 100644 (file)
index 0000000..6132f31
--- /dev/null
@@ -0,0 +1,27 @@
+##############################################################################
+# 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/local/sbin/route:
+  file.managed:
+    - contents: |
+        #!/bin/sh
+
+        # Workaround salt-managed routes breaking ifup when route already exists
+        route_binary='/sbin/route'
+        route_output=$("${route_binary}" "$@" 2>&1)
+        route_return=$?
+
+        if [ -n "${route_output}" ]; then
+            if echo "${route_output}" | grep -q 'SIOCADDRT: File exists'; then
+                exit 0
+            fi
+            echo "${route_output}"
+        fi
+        exit "${route_return}"
+    - user: root
+    - group: root
+    - mode: 755
diff --git a/mcp/scripts/.gitignore b/mcp/scripts/.gitignore
new file mode 100644 (file)
index 0000000..a7f658e
--- /dev/null
@@ -0,0 +1,3 @@
+mcp.rsa*
+user-data.*.sh
+xdf_data.sh
index fe8d7a3..54f015c 100644 (file)
@@ -12,8 +12,45 @@ export CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x
 export SSH_KEY=${SSH_KEY:-"/var/lib/opnfv/mcp.rsa"}
 export SALT_MASTER=${INSTALLER_IP:-10.20.0.2}
 export SALT_MASTER_USER=${SALT_MASTER_USER:-ubuntu}
+
+# Derived from INSTALLER_IP
+export MCPCONTROL_NET=${MCPCONTROL_NET:-${SALT_MASTER%.*}.0}
+export MCPCONTROL_PREFIX=${MCPCONTROL_PREFIX:-24}
 export MAAS_IP=${MAAS_IP:-${SALT_MASTER%.*}.3}
 
-# Derivated from above global vars
+# Derived from above global vars, not overideable
 export SSH_OPTS="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ${SSH_KEY}"
 export SSH_SALT="${SALT_MASTER_USER}@${SALT_MASTER}"
+
+##############################################################################
+# BEGIN of colored notification wrappers
+#
+
+# same as `notify_i` + trailing '\n';
+function notify() {
+    local msg=${1}; shift
+    notify_i "${msg}\n" "$@"
+}
+
+# Inline (no newline added) colored output notification wrapper
+function notify_i() {
+    tput setaf "${2:-1}" || true
+    echo -en "${1:-"[WARN] Unsupported opt arg: $3\\n"}"
+    tput sgr0
+}
+
+# same as `notify` + extra '\n' before and after;
+function notify_n() {
+    local msg=${1}; shift
+    notify_i "\n${msg}\n\n" "$@"
+}
+
+# same as `notify` + stderr output + exit;
+function notify_e() {
+    local msg=${1}; shift
+    notify_i "\n${msg}\n\n" "$@" 1>&2
+    exit 1
+}
+#
+# END of colored notification wrapper
+##############################################################################
index d91dcc3..ce5db25 100644 (file)
@@ -1,7 +1,7 @@
 #!/bin/bash -e
-# shellcheck disable=SC2155,SC1001
+# shellcheck disable=SC2155,SC1001,SC2015,SC2128
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -38,10 +38,11 @@ function get_base_image {
 function __kernel_modules {
   # Load mandatory kernel modules: loop, nbd
   local image_dir=$1
-  sudo modprobe loop
+  test -e /dev/loop-control || sudo modprobe loop
   if sudo modprobe nbd max_part=8 || sudo modprobe -f nbd max_part=8; then
     return 0
   fi
+  if [ -e /dev/nbd0 ]; then return 0; fi  # nbd might be inbuilt
   # CentOS (or RHEL family in general) do not provide 'nbd' out of the box
   echo "[WARN] 'nbd' kernel module cannot be loaded!"
   if [ ! -e /etc/redhat-release ]; then
@@ -120,7 +121,7 @@ function mount_image {
       break
     fi
   done
-  OPNFV_LOOP_DEV=$(losetup -f)
+  OPNFV_LOOP_DEV=$(sudo losetup -f)
   OPNFV_MAP_DEV=/dev/mapper/$(basename "${OPNFV_NBD_DEV}")p1
   export OPNFV_MNT_DIR OPNFV_LOOP_DEV
   [ -n "${OPNFV_NBD_DEV}" ] && [ -n "${OPNFV_LOOP_DEV}" ] || exit 1
@@ -213,7 +214,7 @@ function cleanup_mounts {
     fi
   fi
   if [ -n "${OPNFV_LOOP_DEV}" ] && \
-    losetup "${OPNFV_LOOP_DEV}" 1>&2 > /dev/null; then
+    sudo losetup "${OPNFV_LOOP_DEV}" 1>&2 > /dev/null; then
       sudo losetup -d "${OPNFV_LOOP_DEV}"
   fi
   if [ -n "${OPNFV_NBD_DEV}" ]; then
@@ -225,6 +226,7 @@ function cleanup_mounts {
 function cleanup_uefi {
   # Clean up Ubuntu boot entry if cfg01, kvm nodes online from previous deploy
   local cmd_str="ssh ${SSH_OPTS} ${SSH_SALT}"
+  ping -c 1 -w 1 "${SALT_MASTER}" || return 0
   [ ! "$(hostname)" = 'cfg01' ] || cmd_str='eval'
   ${cmd_str} "sudo salt -C 'kvm* or cmp*' cmd.run \
     \"which efibootmgr > /dev/null 2>&1 && \
@@ -282,14 +284,21 @@ function prepare_vms {
     ln -sf "${image_dir}/${_tmp}" "${image_dir}/${image}"
   fi
 
-  envsubst < user-data.template > user-data.sh # CWD should be <mcp/scripts>
-
   # Create config ISO and resize OS disk image for each foundation node VM
   for node in "${vnodes[@]}"; do
-    ./create-config-drive.sh -k "$(basename "${SSH_KEY}").pub" -u user-data.sh \
-       -h "${node}" "${image_dir}/mcp_${node}.iso"
+    if [[ "${node}" =~ ^(cfg01|mas01) ]]; then
+      user_data='user-data.mcp.sh'
+    else
+      user_data='user-data.admin.sh'
+    fi
+    ./create-config-drive.sh -k "$(basename "${SSH_KEY}").pub" \
+       -u "${user_data}" -h "${node}" "${image_dir}/mcp_${node}.iso"
     cp "${image_dir}/${image}" "${image_dir}/mcp_${node}.qcow2"
     qemu-img resize "${image_dir}/mcp_${node}.qcow2" 100G
+    # Prepare dedicated drive for cinder on cmp nodes
+    if [[ "${node}" =~ ^(cmp) ]]; then
+      qemu-img create "${image_dir}/mcp_${node}_storage.qcow2" 100G
+    fi
   done
 
   # VCP VMs base image specific changes
@@ -310,19 +319,72 @@ function prepare_vms {
   fi
 }
 
+function jumpserver_pkg_install {
+  if [ -n "$(command -v apt-get)" ]; then
+    pkg_type='deb'; pkg_cmd='sudo apt-get install -y'
+  else
+    pkg_type='rpm'; pkg_cmd='sudo yum install -y --skip-broken'
+  fi
+  eval "$(parse_yaml "./requirements_${pkg_type}.yaml")"
+  for section in 'common' "$(uname -i)"; do
+    section_var="requirements_pkg_${section}[*]"
+    pkg_list+=" ${!section_var}"
+  done
+  # shellcheck disable=SC2086
+  ${pkg_cmd} ${pkg_list}
+}
+
+function jumpserver_check_requirements {
+  # shellcheck disable=SC2178
+  local vnodes=$1; shift
+  local br=("$@")
+  local err_br_not_found='Linux bridge not found!'
+  local err_br_virsh_net='is a virtual network, Linux bridge expected!'
+  local warn_br_endpoint="Endpoints might be inaccessible from external hosts!"
+  # MaaS requires a Linux bridge for PXE/admin
+  if [[ "${vnodes}" =~ mas01 ]]; then
+    if ! brctl showmacs "${br[0]}" >/dev/null 2>&1; then
+      notify_e "[ERROR] PXE/admin (${br[0]}) ${err_br_not_found}"
+    fi
+    # Assume virsh network name matches bridge name (true if created by us)
+    if virsh net-info "${br[0]}" >/dev/null 2>&1; then
+      notify_e "[ERROR] ${br[0]} ${err_br_virsh_net}"
+    fi
+  fi
+  # If virtual nodes are present, public should be a Linux bridge
+  if [ "$(echo "${vnodes}" | wc -w)" -gt 2 ]; then
+    if ! brctl showmacs "${br[3]}" >/dev/null 2>&1; then
+      if [[ "${vnodes}" =~ mas01 ]]; then
+        # Baremetal nodes *require* a proper public network
+        notify_e "[ERROR] Public (${br[3]}) ${err_br_not_found}"
+      else
+        notify_n "[WARN] Public (${br[3]}) ${err_br_not_found}" 3
+        notify_n "[WARN] ${warn_br_endpoint}" 3
+      fi
+    fi
+    if virsh net-info "${br[3]}" >/dev/null 2>&1; then
+      if [[ "${vnodes}" =~ mas01 ]]; then
+        notify_e "[ERROR] ${br[3]} ${err_br_virsh_net}"
+      else
+        notify_n "[WARN] ${br[3]} ${err_br_virsh_net}" 3
+        notify_n "[WARN] ${warn_br_endpoint}" 3
+      fi
+    fi
+  fi
+}
+
 function create_networks {
   local vnode_networks=("$@")
   # create required networks, including constant "mcpcontrol"
-  # FIXME(alav): since we renamed "pxe" to "mcpcontrol", we need to make sure
-  # we delete the old "pxe" virtual network, or it would cause IP conflicts.
-  for net in "pxe" "mcpcontrol" "${vnode_networks[@]}"; do
+  for net in "mcpcontrol" "${vnode_networks[@]}"; do
     if virsh net-info "${net}" >/dev/null 2>&1; then
       virsh net-destroy "${net}" || true
       virsh net-undefine "${net}"
     fi
     # in case of custom network, host should already have the bridge in place
-    if [ -f "net_${net}.xml" ] && [ ! -d "/sys/class/net/${net}/bridge" ]; then
-      virsh net-define "net_${net}.xml"
+    if [ -f "virsh_net/net_${net}.xml" ] && \
+     [ ! -d "/sys/class/net/${net}/bridge" ]; then
+      virsh net-define "virsh_net/net_${net}.xml"
       virsh net-autostart "${net}"
       virsh net-start "${net}"
     fi
@@ -334,7 +396,6 @@ function create_vms {
   # vnode data should be serialized with the following format:
   # '<name0>,<ram0>,<vcpu0>|<name1>,<ram1>,<vcpu1>[...]'
   IFS='|' read -r -a vnodes <<< "$1"; shift
-  local vnode_networks=("$@")
 
   # AArch64: prepare arch specific arguments
   local virt_extra_args=""
@@ -348,20 +409,30 @@ function create_vms {
     IFS=',' read -r -a vnode_data <<< "${serialized_vnode_data}"
 
     # prepare network args
-    net_args=" --network network=mcpcontrol,model=virtio"
-    if [ "${DEPLOY_TYPE:-}" = 'baremetal' ]; then
+    local vnode_networks=("$@")
+    if [[ "${vnode_data[0]}" =~ ^(cfg01|mas01) ]]; then
+      net_args=" --network network=mcpcontrol,model=virtio"
       # 3rd interface gets connected to PXE/Admin Bridge (cfg01, mas01)
       vnode_networks[2]="${vnode_networks[0]}"
+    else
+      net_args=" --network bridge=${vnode_networks[0]},model=virtio"
     fi
     for net in "${vnode_networks[@]:1}"; do
       net_args="${net_args} --network bridge=${net},model=virtio"
     done
 
+    # dedicated storage drive for cinder on cmp nodes
+    virt_extra_storage=
+    if [[ "${vnode_data[0]}" =~ ^(cmp) ]]; then
+      virt_extra_storage="--disk path=${image_dir}/mcp_${vnode_data[0]}_storage.qcow2,format=qcow2,bus=virtio,cache=none,io=native"
+    fi
+
     # shellcheck disable=SC2086
     virt-install --name "${vnode_data[0]}" \
     --ram "${vnode_data[1]}" --vcpus "${vnode_data[2]}" \
     --cpu host-passthrough --accelerate ${net_args} \
     --disk path="${image_dir}/mcp_${vnode_data[0]}.qcow2",format=qcow2,bus=virtio,cache=none,io=native \
+    ${virt_extra_storage} \
     --os-type linux --os-variant none \
     --boot hd --vnc --console pty --autostart --noreboot \
     --disk path="${image_dir}/mcp_${vnode_data[0]}.iso",device=cdrom \
@@ -443,12 +514,11 @@ function wait_for {
     for attempt in $(seq "${total_attempts}"); do
       echo "[wait_for] Attempt ${attempt}/${total_attempts%.*} for: ${cmdstr}"
       if [ "${total_attempts%.*}" = "${total_attempts}" ]; then
-        # shellcheck disable=SC2015
         eval "${cmdstr}" && echo "[wait_for] OK: ${cmdstr}" && return 0 || true
       else
-        !(eval "${cmdstr}" || echo __fuel_wf_failure__) |& tee /dev/stderr | \
-          grep -Eq '(Not connected|No response|__fuel_wf_failure__)' && \
-          echo "[wait_for] OK: ${cmdstr}" && return 0 || true
+        ! (eval "${cmdstr}" || echo 'No response') |& tee /dev/stderr | \
+           grep -Eq '(Not connected|No response)' && \
+           echo "[wait_for] OK: ${cmdstr}" && return 0 || true
       fi
       sleep "${sleep_time}"
     done
@@ -460,15 +530,18 @@ function wait_for {
 function do_sysctl_cfg {
   local _conf='/etc/sysctl.d/99-opnfv-fuel-bridge.conf'
   # https://wiki.libvirt.org/page/Net.bridge.bridge-nf-call_and_sysctl.conf
-  echo 'net.bridge.bridge-nf-call-arptables = 0' |& sudo tee "${_conf}"
-  echo 'net.bridge.bridge-nf-call-iptables = 0'  |& sudo tee -a "${_conf}"
-  echo 'net.bridge.bridge-nf-call-ip6tables = 0' |& sudo tee -a "${_conf}"
-  sudo sysctl -q -p "${_conf}"
+  if modprobe br_netfilter bridge; then
+    echo 'net.bridge.bridge-nf-call-arptables = 0' |& sudo tee "${_conf}"
+    echo 'net.bridge.bridge-nf-call-iptables = 0'  |& sudo tee -a "${_conf}"
+    echo 'net.bridge.bridge-nf-call-ip6tables = 0' |& sudo tee -a "${_conf}"
+    # Some distros / sysadmins explicitly blacklist br_netfilter
+    sudo sysctl -q -p "${_conf}" || true
+  fi
 }
 
 function get_nova_compute_pillar_data {
   local value=$(salt -C 'I@nova:compute and *01*' pillar.get _param:"${1}" --out yaml | cut -d ' ' -f2)
   if [ "${value}" != "''" ]; then
-    echo  ${value}
+    echo "${value}"
   fi
 }
diff --git a/mcp/scripts/lib_template.sh b/mcp/scripts/lib_template.sh
new file mode 100644 (file)
index 0000000..0fbe628
--- /dev/null
@@ -0,0 +1,88 @@
+#!/bin/bash -e
+# shellcheck disable=SC2155,SC1001,SC2015,SC2128
+##############################################################################
+# 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
+##############################################################################
+#
+# Library of shell functions dedicated to j2 template handling
+#
+
+PHAROS_GEN_CFG='./pharos/config/utils/generate_config.py'
+PHAROS_IA='./pharos/config/installers/fuel/pod_config.yml.j2'
+PHAROS_VALIDATE_SCHEMA_SCRIPT='./pharos/config/utils/validate_schema.py'
+PHAROS_SCHEMA_PDF='./pharos/config/pdf/pod1.schema.yaml'
+PHAROS_SCHEMA_IDF='./pharos/config/pdf/idf-pod1.schema.yaml'
+
+# Handles pod_config and scenarios only
+function do_templates_scenario {
+  local image_dir=$1; shift
+  local target_lab=$1; shift
+  local target_pod=$1; shift
+  local lab_config_uri=$1; shift
+  local scenario_dir=$1
+
+  BASE_CONFIG_PDF="${lab_config_uri}/labs/${target_lab}/${target_pod}.yaml"
+  BASE_CONFIG_IDF="${lab_config_uri}/labs/${target_lab}/idf-${target_pod}.yaml"
+  LOCAL_PDF="${image_dir}/$(basename "${BASE_CONFIG_PDF}")"
+  LOCAL_IDF="${image_dir}/$(basename "${BASE_CONFIG_IDF}")"
+
+  # Make sample PDF/IDF available via default lab-config (pharos submodule)
+  ln -sf "$(readlink -f "../config/labs/local")" "./pharos/labs/"
+
+  # Expand scenario file and main reclass input (pod_config.yaml) based on PDF
+  if ! curl --create-dirs -o "${LOCAL_PDF}" "${BASE_CONFIG_PDF}"; then
+    notify_e "[ERROR] Could not retrieve PDF (Pod Descriptor File)!"
+  elif ! curl -o "${LOCAL_IDF}" "${BASE_CONFIG_IDF}"; then
+    notify_e "[ERROR] Could not retrieve IDF (Installer Descriptor File)!"
+  fi
+  # Check first if configuration files are valid
+  if [[ ! "$target_pod" =~ "virtual" ]]; then
+    if ! "${PHAROS_VALIDATE_SCHEMA_SCRIPT}" -y "${LOCAL_PDF}" \
+      -s "${PHAROS_SCHEMA_PDF}"; then
+      notify_e "[ERROR] PDF does not match yaml schema!"
+    elif ! "${PHAROS_VALIDATE_SCHEMA_SCRIPT}" -y "${LOCAL_IDF}" \
+      -s "${PHAROS_SCHEMA_IDF}"; then
+      notify_e "[ERROR] IDF does not match yaml schema!"
+    fi
+  fi
+  if ! "${PHAROS_GEN_CFG}" -y "${LOCAL_PDF}" \
+    -j "${PHAROS_IA}" -v > "${image_dir}/pod_config.yml"; then
+    notify_e "[ERROR] Could not convert PDF+IDF to reclass model input!"
+  fi
+  printenv | \
+    awk '/^(SALT|MCP|MAAS).*=/ { gsub(/=/,": "); print }' >> "${LOCAL_PDF}"
+  j2args=$(find "${scenario_dir}" -name '*.j2' -exec echo -j {} \;)
+  # shellcheck disable=SC2086
+  if ! "${PHAROS_GEN_CFG}" -y "${LOCAL_PDF}" ${j2args} -b -v \
+    -i "$(dirname "$(readlink -f "${PHAROS_IA}")")"; then
+    notify_e '[ERROR] Could not convert j2 scenario definitions!'
+  fi
+}
+
+# Expand reclass and virsh network templates based on PDF + IDF + others
+function do_templates_cluster {
+  local image_dir=$1; shift
+  local target_lab=$1; shift
+  local target_pod=$1; shift
+  local git_repo_root=$1; shift
+  local extra_yaml=("$@")
+
+  RECLASS_CLUSTER_DIR=$(cd "${git_repo_root}/mcp/reclass/classes/cluster"; pwd)
+  LOCAL_PDF="${image_dir}/${target_pod}.yaml"
+
+  for _yaml in "${extra_yaml[@]}"; do
+    awk '/^---$/{f=1;next;}f' "${_yaml}" >> "${LOCAL_PDF}"
+  done
+  # shellcheck disable=SC2046
+  j2args=$(find "${RECLASS_CLUSTER_DIR}" "$(readlink -f virsh_net)" $(readlink -f ./*j2) \
+           -name '*.j2' -exec echo -j {} \;)
+  # shellcheck disable=SC2086
+  if ! "${PHAROS_GEN_CFG}" -y "${LOCAL_PDF}" ${j2args} -b -v \
+    -i "$(dirname "$(readlink -f "${PHAROS_IA}")")"; then
+    notify_e '[ERROR] Could not convert PDF to network definitions!'
+  fi
+}
diff --git a/mcp/scripts/net_public.xml b/mcp/scripts/net_public.xml
deleted file mode 100644 (file)
index d6df4aa..0000000
+++ /dev/null
@@ -1,14 +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
--->
-<network>
-  <name>public</name>
-  <bridge name="public"/>
-  <forward mode="nat"/>
-  <ip address="10.16.0.1" netmask="255.255.255.0" />
-</network>
index 77b600e..68dc60c 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 77b600ef0d64210c1b5fd72581cfe7752fa00c8c
+Subproject commit 68dc60c1aa7199279995c1fee59ad151b5012af9
index 9a6ec82..04ddcf6 100644 (file)
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -23,15 +23,14 @@ requirements_pkg:
     - rsync
     - uuid-runtime
     - virtinst
+    # python is indirectly required for PDF parsing
+    - python
+    - python-ipaddress
+    - python-jinja2
+    - python-yaml
+    - python-jsonschema
   # Optional, arch-specific requirements, matched by key name = $(uname -m)
   aarch64:
     # AArch64 VMs use AAVMF (guest UEFI)
     - ipxe-qemu
     - qemu-efi
-  # Optional, deploy-type-specific requirements
-  baremetal:
-    # For baremetal, python is indirectly required for PDF parsing
-    - python
-    - python-ipaddress
-    - python-jinja2
-    - python-yaml
index ebd7e85..3df4d0a 100644 (file)
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -16,6 +16,8 @@ requirements_pkg:
     - elfutils-libelf-devel
     - e2fsprogs
     - genisoimage
+    - gcc
+    - gdisk
     - git
     - kpartx
     - libvirt
@@ -27,14 +29,13 @@ requirements_pkg:
     - util-linux
     - virt-install
     - wget
-  # Optional, arch-specific requirements, matched by key name = $(uname -m)
-  aarch64:
-    # AArch64 VMs use AAVMF (guest UEFI)
-    - AAVMF
-  # Optional, deploy-type-specific requirements
-  baremetal:
-    # For baremetal, python is indirectly required for PDF parsing
+    # For python is indirectly required for PDF parsing
     - python
     - python-ipaddress
     - python-jinja2
     - python-yaml
+    - python-jsonschema
+  # Optional, arch-specific requirements, matched by key name = $(uname -m)
+  aarch64:
+    # AArch64 VMs use AAVMF (guest UEFI)
+    - AAVMF
index 03218e2..aecfece 100755 (executable)
@@ -16,15 +16,15 @@ 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"
+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
-NODE_MASK='*'
-
-[[ "${CLUSTER_DOMAIN}" =~ virtual ]] || NODE_MASK='mas01*'
+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
@@ -63,18 +63,25 @@ ssh ${SSH_OPTS} "${SSH_SALT}" bash -s -e << SALT_INSTALL_END
   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}")
   cd /srv/salt/${OPNFV_RDIR} && rm -f arch && ln -sf "\$(uname -i)" arch
 
   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 2016.11 " \
-    MASTER_HOSTNAME=cfg01.${CLUSTER_DOMAIN} DISTRIB_REVISION=stable \
+    MASTER_HOSTNAME=cfg01.${CLUSTER_DOMAIN} DISTRIB_REVISION=nightly \
       EXTRA_FORMULAS="nfs" \
         ./salt-master-init.sh
   salt-key -Ay
@@ -96,21 +103,26 @@ ssh ${SSH_OPTS} "${SSH_SALT}" bash -s -e << SALT_INSTALL_END
   fi
 
   # Init specific to VMs on FN (all for virtual, cfg|mas for baremetal)
-  salt -C "${NODE_MASK} or cfg01*" saltutil.sync_all
-  wait_for 3.0 'salt -C "${NODE_MASK} or cfg01*" state.apply salt'
   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'
 
-  salt -C "${NODE_MASK} and not cfg01*" state.sls linux || true
-  salt -C "${NODE_MASK} and not cfg01*" pkg.upgrade refresh=False
+  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' || true
+  salt -C "E@^(${NODE_MASK}).*" state.sls opnfv.route_wrapper
+  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'
 
-  salt -C "${NODE_MASK} or cfg01*" state.sls ntp
+  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
-
-  # symlink manually until package with required commit is available
-  cd /usr/share/salt-formulas/env/aodh/files
-  ln -sf ocata pike
 SALT_INSTALL_END
index bff36af..49ed824 100755 (executable)
 # Collect jump server system information for deploy debugging
 #
 
+# HW info
+cat /proc/cpuinfo
+free -mh
+df -h
+
 # Network info
 brctl show
+ip a
+route -n
 
 # Distro & pkg info
 cat /etc/*-release
 uname -a
+
+# Misc info
+sudo losetup -a
diff --git a/mcp/scripts/user-data.admin.sh.j2 b/mcp/scripts/user-data.admin.sh.j2
new file mode 100644 (file)
index 0000000..d9b86c7
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/bash
+##############################################################################
+# 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
+##############################################################################
+rm /etc/salt/minion_id
+rm -f /etc/salt/pki/minion/minion_master.pub
+echo "id: $(hostname).{{ conf.cluster.domain }}" > /etc/salt/minion
+{#- should be in sync with 'opnfv_infra_config_pxe_address' in 'pharos/config/installers/fuel/pod_config.yml.j2 #}
+echo "master: {{ conf.idf.net_config.admin.network | ipaddr_index(2) }}" >> /etc/salt/minion
+service salt-minion restart
similarity index 73%
rename from mcp/scripts/user-data.template
rename to mcp/scripts/user-data.mcp.sh.j2
index 189310b..bd80961 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/bash
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# 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
@@ -8,6 +8,6 @@
 ##############################################################################
 rm /etc/salt/minion_id
 rm -f /etc/salt/pki/minion/minion_master.pub
-echo "id: $(hostname).${CLUSTER_DOMAIN}" > /etc/salt/minion
-echo "master: ${SALT_MASTER}" >> /etc/salt/minion
+echo "id: $(hostname).{{ conf.cluster.domain }}" > /etc/salt/minion
+echo "master: {{ conf.SALT_MASTER }}" >> /etc/salt/minion
 service salt-minion restart
similarity index 58%
rename from mcp/scripts/net_mcpcontrol.xml.template
rename to mcp/scripts/virsh_net/net_mcpcontrol.xml.j2
index e0034fd..95424db 100644 (file)
@@ -6,13 +6,14 @@
  which accompanies this distribution, and is available at
  http://www.apache.org/licenses/LICENSE-2.0
 -->
+{#- conf.MCPCONTROL_NET & co are mandatory, defaults are set via globals.sh #}
 <network>
   <name>mcpcontrol</name>
   <bridge name="mcpcontrol"/>
   <forward mode="nat"/>
-  <ip address="${SALT_MASTER%.*}.1" netmask="255.255.255.0">
+  <ip address="{{ conf.MCPCONTROL_NET | ipaddr_index(1) }}" netmask="{{ conf.MCPCONTROL_PREFIX | netmask }}">
     <dhcp>
-      <range start="${SALT_MASTER%.*}.2" end="${SALT_MASTER%.*}.254"/>
+      <range start="{{ conf.MCPCONTROL_NET | ipaddr_index(2) }}" end="{{ conf.MCPCONTROL_NET | ipaddr_index(254) }}"/>
     </dhcp>
   </ip>
 </network>
similarity index 50%
rename from mcp/scripts/net_mgmt.xml
rename to mcp/scripts/virsh_net/net_mgmt.xml.j2
index 4fbec71..a558293 100644 (file)
@@ -6,8 +6,15 @@
  which accompanies this distribution, and is available at
  http://www.apache.org/licenses/LICENSE-2.0
 -->
+{%- if conf.idf.net_config.mgmt is defined %}
+  {%- set mgmt_network = conf.idf.net_config.mgmt.network %}
+  {%- set mgmt_prefix = conf.idf.net_config.mgmt.mask %}
+{%- else %}
+  {%- set mgmt_network = '172.16.10.0' %}
+  {%- set mgmt_prefix = '24' %}
+{%- endif %}
 <network>
   <name>mgmt</name>
   <bridge name="mgmt"/>
-  <ip address="172.16.10.1" netmask="255.255.255.0"/>
+  <ip address="{{ mgmt_network | ipaddr_index(1) }}" netmask="{{ mgmt_prefix | netmask }}"/>
 </network>
diff --git a/mcp/scripts/virsh_net/net_public.xml.j2 b/mcp/scripts/virsh_net/net_public.xml.j2
new file mode 100644 (file)
index 0000000..737b638
--- /dev/null
@@ -0,0 +1,32 @@
+<!--
+ 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
+-->
+{%- set cluster = {'has_virtual_nodes': False} %}
+{%- for node in conf.nodes %}
+  {%- if not cluster.has_virtual_nodes and node.node.type == 'virtual' %}
+    {%- do cluster.update({'has_virtual_nodes': True}) %}
+  {%- endif %}
+{%- endfor %}
+{%- if conf.idf.net_config.public is defined %}
+  {%- set public_network = conf.idf.net_config.public.network %}
+  {%- set public_prefix = conf.idf.net_config.public.mask %}
+{%- else %}
+  {%- set public_network = '10.16.0.0' %}
+  {%- set public_prefix = '24' %}
+{%- endif %}
+<network>
+  <name>public</name>
+  <bridge name="public"/>
+{%- if cluster.has_virtual_nodes %}
+{#- Ideally, jumpserver would have a real Linux bridge we will hook to.
+    In case it doesn't, we use this virsh network as a *mock* public.
+    The *mock* public should NOT overlap with the real public in any way. #}
+  <forward mode="nat"/>
+  <ip address="{{ public_network | ipaddr_index(1) }}" netmask="{{ public_prefix | netmask }}"/>
+{%- endif %}
+</network>
diff --git a/mcp/scripts/virsh_net/net_pxebr.xml.j2 b/mcp/scripts/virsh_net/net_pxebr.xml.j2
new file mode 100644 (file)
index 0000000..f82780c
--- /dev/null
@@ -0,0 +1,26 @@
+<!--
+ 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
+-->
+{%- if conf.idf.net_config.admin is defined %}
+  {%- set pxebr_network = conf.idf.net_config.admin.network %}
+  {%- set pxebr_prefix = conf.idf.net_config.admin.mask %}
+{%- else %}
+  {%- set pxebr_network = '192.168.11.0' %}
+  {%- set pxebr_prefix = '24' %}
+{%- endif %}
+<network>
+  <name>pxebr</name>
+  <forward mode="nat"/>
+  <bridge name="pxebr"/>
+  <ip address="{{ pxebr_network | ipaddr_index(1) }}" netmask="{{ pxebr_prefix | netmask }}">
+    <!-- NOTE: .254 is harcoded for now (for /24 prefix), should be computed instead. -->
+    <dhcp>
+      <range start="{{ pxebr_network | ipaddr_index(4) }}" end="{{ pxebr_network | ipaddr_index(254) }}"/>
+    </dhcp>
+  </ip>
+</network>
diff --git a/mcp/scripts/xdf_data.sh.j2 b/mcp/scripts/xdf_data.sh.j2
new file mode 100644 (file)
index 0000000..8c9d5d9
--- /dev/null
@@ -0,0 +1,71 @@
+#!/bin/bash -e
+# shellcheck disable=SC2034
+##############################################################################
+# 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
+##############################################################################
+#
+# Data derived from XDF (PDF/IDF/SDF/etc), used as input in deploy.sh
+#
+
+{%- set arch = conf[conf.MCP_JUMP_ARCH] -%}
+
+{%- macro bash_arr(_l) -%}
+  ({%- for n in _l -%}'{{ n }}' {% endfor -%})
+{%- endmacro -%}
+
+{#- Pack list as `sep`-separated string, replacing spaces with '|' -#}
+{%- macro pack(x = [], sep = ',') -%}
+  {{ x | join(sep) | replace(' ', '|') }}
+{%- endmacro -%}
+
+{#- Pack all vnode data as string -#}
+{%- macro serialize_vnodes() -%}
+  {%- set V = conf.virtual -%}
+  {%- set arr = [] -%}
+  {%- for n in V.nodes -%}
+    {%- if n not in V -%}{%- do V.update({n: {}}) -%}{%- endif -%}
+    {%- do arr.append(pack([n, V[n].ram or arch.default.ram,
+                               V[n].vcpus or arch.default.vcpus])) -%}
+  {%- endfor -%}
+  '{{ pack(arr, '|') }}'
+{%- endmacro -%}
+
+{#- Pack apt_pkg data as string -#}
+{%- macro serialize_apt_pkg() -%}
+  {%- set arr = [] -%}
+  {%- set sections = [arch.common] -%}
+  {%- if conf.MCP_VCP -%}
+    {%- do sections.append(arch.control) -%}
+  {%- endif -%}
+  {%- for c in sections -%}
+    {%- do arr.append(pack([pack(c.apt['keys']), pack(c.apt.repos),
+                            pack(c.pkg.install), pack(c.pkg.remove)], '^')) -%}
+  {%- endfor -%}
+  '{{ pack(arr, '^') }}'
+{%- endmacro -%}
+
+{%- set bridges = conf.idf.fuel.jumphost.bridges %}
+# Determine bridge names based on IDF, where all bridges are now mandatory
+OPNFV_BRIDGES=(
+  '{{ bridges.admin or "pxebr" }}'
+  '{{ bridges.mgmt or "mgmt" }}'
+  '{{ bridges.private or "internal" }}'
+  '{{ bridges.public or "public" }}'
+)
+
+export CLUSTER_DOMAIN={{ conf.cluster.domain }}
+cluster_states={{ bash_arr(conf.cluster.states) }}
+virtual_nodes={{ bash_arr(conf.virtual.nodes) }}
+base_image={{ arch.base_image }}
+
+# Serialize vnode data as '<name0>,<ram0>,<vcpu0>|<name1>,<ram1>,<vcpu1>[...]'
+virtual_nodes_data={{ serialize_vnodes() }}
+
+# Serialize repos, packages to (pre-)install/remove for:
+# - foundation node VM base image (virtual: all VMs, baremetal: cfg01|mas01)
+# - virtualized control plane VM base image (only when VCP is used)
+virtual_repos_pkgs={{ serialize_apt_pkg() }}