From ac3a86983e4c049a3115c7bd77eeacaeb19d0ca3 Mon Sep 17 00:00:00 2001 From: Dan Radez Date: Thu, 30 Mar 2017 23:03:43 -0400 Subject: Updating Apex to OpenStack Ocata - power management updated to virtualbmc, pxe_ssh is deprecated - removing custom tacker build - removing custom congress build - disabling yum update in undercloud on the cli instead of in a patch - Undercloud is direct kernel booted now, there are no kernel and initrd in the disk image from upstream - remove OpenDaylight previous to Carbon JIRA: APEX-433 JIRA: APEX-432 JIRA: APEX-431 Change-Id: I6963f16e65eacade5607a3082b58b6150331406c Signed-off-by: Dan Radez --- build/Makefile | 77 +------ build/cache.sh | 2 +- build/functions.sh | 2 +- build/opnfv-environment.yaml | 46 ++-- build/overcloud-full.sh | 47 +--- build/overcloud-opendaylight.sh | 34 +-- build/patches/0001-Removes-doing-yum-update.patch | 25 --- .../patches/puppet-neutron-add-odl-settings.patch | 47 ---- build/patches/puppet-neutron-vpp-ml2.patch | 244 --------------------- build/rpm_specs/openstack-congress-server.service | 13 -- build/rpm_specs/openstack-congress.spec | 77 ------- build/rpm_specs/openstack-tacker-server.service | 15 -- build/rpm_specs/openstack-tacker.spec | 84 ------- build/rpm_specs/opnfv-apex-common.spec | 8 +- build/rpm_specs/opnfv-apex-release.spec | 2 +- build/rpm_specs/opnfv-apex-undercloud.spec | 2 +- build/rpm_specs/python-tackerclient.spec | 44 ---- build/undercloud.sh | 18 +- build/variables.sh | 20 +- ci/PR_revision.log | 14 -- ci/build.sh | 7 +- ci/clean.sh | 2 +- ci/dev_dep_check.sh | 10 +- ci/test.sh | 2 +- config/deploy/deploy_settings.yaml | 6 +- config/deploy/os-odl-bgpvpn-ha.yaml | 2 +- config/deploy/os-odl-bgpvpn-noha.yaml | 2 +- config/deploy/os-odl-csit-noha.yaml | 2 +- config/deploy/os-odl-gluon-noha.yaml | 2 +- config/deploy/os-odl-nofeature-ha.yaml | 2 +- config/deploy/os-odl-nofeature-noha.yaml | 2 +- config/deploy/os-odl-ovs_dpdk-ha.yaml | 2 +- config/deploy/os-odl-ovs_dpdk-noha.yaml | 2 +- config/deploy/os-odl_l2-sfc-noha.yaml | 2 +- config/yum.repos.d/opnfv-apex.repo | 4 +- lib/configure-deps-functions.sh | 7 +- lib/configure-vm | 171 +++++++++++++++ lib/installer/domain.xml | 2 + lib/overcloud-deploy-functions.sh | 61 +++--- lib/post-install-functions.sh | 51 ++--- lib/python/apex/inventory.py | 2 + lib/undercloud-functions.sh | 87 ++------ lib/virtual-setup-functions.sh | 52 +++-- 43 files changed, 363 insertions(+), 940 deletions(-) delete mode 100644 build/patches/0001-Removes-doing-yum-update.patch delete mode 100644 build/patches/puppet-neutron-add-odl-settings.patch delete mode 100644 build/patches/puppet-neutron-vpp-ml2.patch delete mode 100644 build/rpm_specs/openstack-congress-server.service delete mode 100644 build/rpm_specs/openstack-congress.spec delete mode 100644 build/rpm_specs/openstack-tacker-server.service delete mode 100644 build/rpm_specs/openstack-tacker.spec delete mode 100644 build/rpm_specs/python-tackerclient.spec create mode 100755 lib/configure-vm diff --git a/build/Makefile b/build/Makefile index ed983256..2df41424 100644 --- a/build/Makefile +++ b/build/Makefile @@ -13,18 +13,6 @@ export RELEASE = "0" export RPM_DIST = $(shell rpm -E %dist) -export TACKER_REPO := $(shell awk -F\= '/^tacker_repo/ {print $$2}' variables.sh ) -export TACKER_BRANCH := $(shell awk -F\= '/^tacker_branch/ {print $$2}' variables.sh ) -export TACKER_COMMIT := $(shell git ls-remote $(TACKER_REPO) $(TACKER_BRANCH) | awk '{print substr($$1,1,7)}') - -export TACKERCLIENT_REPO := $(shell awk -F\= '/^tackerclient_repo/ {print $$2}' variables.sh ) -export TACKERCLIENT_BRANCH := $(shell awk -F\= '/^tackerclient_branch/ {print $$2}' variables.sh ) -export TACKERCLIENT_COMMIT := $(shell git ls-remote $(TACKERCLIENT_REPO) $(TACKERCLIENT_BRANCH) | awk '{print substr($$1,1,7)}') - -export CONGRESS_REPO := $(shell awk -F\= '/^congress_repo/ {print $$2}' variables.sh ) -export CONGRESS_BRANCH := $(shell awk -F\= '/^congress_branch/ {print $$2}' variables.sh ) -export CONGRESS_COMMIT := $(shell git ls-remote $(CONGRESS_REPO) $(CONGRESS_BRANCH) | awk '{print substr($$1,1,7)}') - export NETVPP_VERS := $(shell grep Version $(shell pwd)/rpm_specs/networking-vpp.spec | head -n 1 | awk '{ print $$2 }') export NETVPP_REPO := $(shell awk -F\= '/^netvpp_repo/ {print $$2}' variables.sh ) export NETVPP_BRANCH := $(shell awk -F\= '/^netvpp_branch/ {print $$2}' variables.sh ) @@ -129,61 +117,6 @@ python-pep8-check: pep8 ../lib/python pep8 ../tests -############### -# TACKER # -############### - -$(BUILD_DIR)/openstack-tacker.tar.gz: - @echo "Preparing the Tacker RPM prerequisites" - git clone $(TACKER_REPO) -b $(TACKER_BRANCH) $(BUILD_DIR)/openstack-tacker-2016.2 - cp rpm_specs/openstack-tacker-server.service $(BUILD_DIR)/openstack-tacker-2016.2 - tar czf $(BUILD_DIR)/openstack-tacker.tar.gz -C $(BUILD_DIR) openstack-tacker-2016.2 - -.PHONY: tacker-rpm -tacker-rpm: $(BUILD_DIR)/openstack-tacker.tar.gz $(BUILD_DIR)/noarch/openstack-tacker-2016.2-1.git$(TACKER_COMMIT).noarch.rpm - -$(BUILD_DIR)/noarch/openstack-tacker-2016.2-1.git$(TACKER_COMMIT).noarch.rpm: - @echo "Building the Tacker RPM" - rpmbuild --clean -ba --target noarch rpm_specs/openstack-tacker.spec $(RPM_DIR_ARGS) -D 'git .git$(TACKER_COMMIT)' - -################# -# TACKERCLIENT # -################# - -$(BUILD_DIR)/python-tackerclient.tar.gz: - @echo "Preparing the TackerClient RPM prerequisites" - git clone $(TACKERCLIENT_REPO) -b $(TACKERCLIENT_BRANCH) $(BUILD_DIR)/python-tackerclient-2016.2 - tar czf $(BUILD_DIR)/python-tackerclient.tar.gz -C $(BUILD_DIR) python-tackerclient-2016.2 - -.PHONY: tackerclient-rpm -tackerclient-rpm: $(BUILD_DIR)/python-tackerclient.tar.gz $(BUILD_DIR)/noarch/python-tackerclient-2016.2-1.git$(TACKERCLIENT_COMMIT).noarch.rpm - -$(BUILD_DIR)/noarch/python-tackerclient-2016.2-1.git$(TACKERCLIENT_COMMIT).noarch.rpm: - @echo "Building the TackerClient RPM" - rpmbuild --clean -ba --target noarch rpm_specs/python-tackerclient.spec $(RPM_DIR_ARGS) -D 'git .git$(TACKERCLIENT_COMMIT)' - -############### -# CONGRESS # -############### - -.PHONY: congress-clean -congress-clean: - @rm -rf $(BUILD_DIR)/openstack-congress-2016.2 - @rm -f $(BUILD_DIR)/openstack-congress.tar.gz - -$(BUILD_DIR)/openstack-congress.tar.gz: - @echo "Preparing the Congress RPM prerequisites" - git clone $(CONGRESS_REPO) -b $(CONGRESS_BRANCH) $(BUILD_DIR)/openstack-congress-2016.2 - cp rpm_specs/openstack-congress-server.service $(BUILD_DIR)/openstack-congress-2016.2 - tar czf $(BUILD_DIR)/openstack-congress.tar.gz -C $(BUILD_DIR) openstack-congress-2016.2 - -.PHONY: congress-rpm -congress-rpm: $(BUILD_DIR)/noarch/openstack-congress-2016.2-1.git$(CONGRESS_COMMIT).noarch.rpm - -$(BUILD_DIR)/noarch/openstack-congress-2016.2-1.git$(CONGRESS_COMMIT).noarch.rpm: $(BUILD_DIR)/openstack-congress.tar.gz - @echo "Building the Congress RPM" - rpmbuild --clean -ba --target noarch rpm_specs/openstack-congress.spec $(RPM_DIR_ARGS) -D 'git .git$(CONGRESS_COMMIT)' - ################## # NETWORKING-VPP # ################## @@ -194,9 +127,9 @@ $(BUILD_DIR)/python-networking-vpp.tar.gz: tar czf $(BUILD_DIR)/python-networking-vpp.tar.gz -C $(BUILD_DIR) python-networking-vpp-$(NETVPP_VERS) .PHONY: networking-vpp-rpm -networking-vpp-rpm: $(BUILD_DIR)/noarch/python-networking-vpp-$(NETVPP_VERS)-1.git$(NETVPP_COMMIT)$(RPM_DIST).noarch.rpm +networking-vpp-rpm: $(BUILD_DIR)/noarch/python-networking-vpp-*.noarch.rpm -$(BUILD_DIR)/noarch/python-networking-vpp-$(NETVPP_VERS)-1.git$(NETVPP_COMMIT)$(RPM_DIST).noarch.rpm: $(BUILD_DIR)/python-networking-vpp.tar.gz +$(BUILD_DIR)/noarch/python-networking-vpp-*.noarch.rpm: $(BUILD_DIR)/python-networking-vpp.tar.gz @echo "Building the Networking VPP RPM" rpmbuild --clean -ba --target noarch rpm_specs/networking-vpp.spec $(RPM_DIR_ARGS) -D 'git .git$(NETVPP_COMMIT)' @@ -207,7 +140,7 @@ $(BUILD_DIR)/noarch/python-networking-vpp-$(NETVPP_VERS)-1.git$(NETVPP_COMMIT)$( .PHONY: undercloud undercloud: $(BUILD_DIR)/undercloud.qcow2 -$(BUILD_DIR)/undercloud.qcow2: tackerclient-rpm +$(BUILD_DIR)/undercloud.qcow2: @echo "Building the Apex Undercloud Image" @./undercloud.sh @@ -236,7 +169,7 @@ $(RPMUDR): .PHONY: overcloud-full overcloud-full: $(BUILD_DIR)/overcloud-full.qcow2 -$(BUILD_DIR)/overcloud-full.qcow2: congress-rpm tacker-rpm networking-vpp-rpm +$(BUILD_DIR)/overcloud-full.qcow2: $(BUILD_DIR)/noarch/python-networking-vpp-*.noarch.rpm @echo "Building the Apex Base Overcloud Image" @./overcloud-full.sh @@ -329,7 +262,7 @@ iso: iso-clean images rpms $(CENTISO) @ln $(RPMUDR) $(BUILD_DIR)/centos/Packages @ln $(RPMODL) $(BUILD_DIR)/centos/Packages # add packages to the centos packages - cd $(BUILD_DIR)/centos/Packages && yumdownloader openvswitch openstack-tripleo jq python34 python34-libs python34-yaml python34-setuptools ipxe-roms-qemu + cd $(BUILD_DIR)/centos/Packages && yumdownloader openvswitch openstack-tripleo jq python34 python34-libs python34-PyYAML python34-setuptools ipxe-roms-qemu cd $(BUILD_DIR)/centos/Packages && curl -O https://radez.fedorapeople.org/python34-markupsafe-0.23-9.el7.centos.x86_64.rpm cd $(BUILD_DIR)/centos/Packages && curl -O https://radez.fedorapeople.org/python3-jinja2-2.8-5.el7.centos.noarch.rpm cd $(BUILD_DIR)/centos/Packages && curl -O http://artifacts.opnfv.org/apex/dependencies/python3-ipmi-0.3.0-1.noarch.rpm diff --git a/build/cache.sh b/build/cache.sh index 4c530b02..17f0db2e 100644 --- a/build/cache.sh +++ b/build/cache.sh @@ -21,7 +21,7 @@ function cache_dir { # $2 = filename to write to function curl_file { if [ -f $CACHE_DIR/$2 ]; then - echo "Removing stale $2" + echo "Removing stale $2" rm -f $CACHE_DIR/$2 fi echo "Downloading $1" diff --git a/build/functions.sh b/build/functions.sh index 7ace4b0d..becc0df1 100644 --- a/build/functions.sh +++ b/build/functions.sh @@ -14,7 +14,7 @@ clone_fork () { # Use apex tripleo-heat-templates fork local ghcreds="" local pr_num="" - local ref="stable/danube" + local ref="stable/euphrates" local repo="https://github.com/trozet/$1" if git log -1 | grep "${1}-pr:" | grep -o '[0-9]*'; then diff --git a/build/opnfv-environment.yaml b/build/opnfv-environment.yaml index 8eeb1265..6289e2d9 100644 --- a/build/opnfv-environment.yaml +++ b/build/opnfv-environment.yaml @@ -2,6 +2,7 @@ #types parameters: + # value updated via lib/overcloud-deploy-functions.sh #CloudDomain: parameter_defaults: @@ -9,17 +10,17 @@ parameter_defaults: NeutronEnableForceMetadata: true NeutronEnableDHCPMetadata: true NeutronEnableIsolatedMetadata: true + # the following parameters are given values via + # lib/overcloud-deploy-functions.sh when they are used by a scenario #NeutronVPPAgentPhysnets: 'datacentre:GigabitEthernet2/2/0' - #NovaSchedulerDefaultFilters: "RamFilter,ComputeFilter,AvailabilityZoneFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,NUMATopologyFilter" - # Kernel arguments, this value will be set to kernel arguments specified for compute nodes in deploy setting file. - #ComputeKernelArgs: "intel_iommu=on iommu=pt default_hugepagesz=2MB hugepagesz=2MB hugepages=2048" - #PmdCoreList: 1 - #OvsDpdkCoreList: 2 - #OvsDpdkSocketMemory: 1024 + #NovaSchedulerDefaultFilters: + #ComputeKernelArgs: + #PmdCoreList: + #OvsDpdkCoreList: + #OvsDpdkSocketMemory: #ControllerExtraConfig: #NovaComputeExtraConfig: ExtraConfig: - tripleo::ringbuilder::build_ring: False nova::nova_public_key: type: 'ssh-rsa' replace_public_key: @@ -31,11 +32,11 @@ parameter_defaults: key: 'os_compute_api:servers:show:host_status' value: 'rule:admin_or_owner' nova::api::default_floating_pool: 'external' - #VPP routing node, used for odl-fdio only. + # VPP routing node, used for odl-fdio only. + # value updated via lib/overcloud-deploy-functions.sh #opendaylight::vpp_routing_node: overcloud-novacompute-0.opnfvlf.org ControllerServices: - OS::TripleO::Services::CACerts -# - OS::TripleO::Services::CephClient - OS::TripleO::Services::CephMon - OS::TripleO::Services::CephOSD - OS::TripleO::Services::CephExternal @@ -44,7 +45,6 @@ parameter_defaults: - OS::TripleO::Services::CinderBackup - OS::TripleO::Services::CinderScheduler - OS::TripleO::Services::CinderVolume - - OS::TripleO::Services::Core - OS::TripleO::Services::Kernel - OS::TripleO::Services::Keystone - OS::TripleO::Services::GlanceApi @@ -70,13 +70,11 @@ parameter_defaults: - OS::TripleO::Services::MongoDb - OS::TripleO::Services::NovaApi - OS::TripleO::Services::NovaMetadata + - OS::TripleO::Services::NovaPlacement - OS::TripleO::Services::NovaScheduler - OS::TripleO::Services::NovaConsoleauth - OS::TripleO::Services::NovaVncProxy - OS::TripleO::Services::Ntp - - OS::TripleO::Services::SwiftProxy - - OS::TripleO::Services::SwiftStorage - - OS::TripleO::Services::SwiftRingBuilder - OS::TripleO::Services::Snmp - OS::TripleO::Services::Timezone - OS::TripleO::Services::CeilometerApi @@ -107,19 +105,18 @@ parameter_defaults: - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::OpenDaylightApi - OS::TripleO::Services::OpenDaylightOvs - - OS::TripleO::Services::ONOSApi - - OS::TripleO::Services::ONOSOvs +# - OS::TripleO::Services::ONOSApi +# - OS::TripleO::Services::ONOSOvs - OS::TripleO::Services::SensuClient - OS::TripleO::Services::FluentdClient - - OS::TripleO::Services::VipHosts - OS::TripleO::Services::Etcd - - OS::TripleO::Services::Gluon +# - OS::TripleO::Services::Gluon - OS::TripleO::Services::Tacker - - OS::TripleO::Services::NeutronHoneycombAgent +# - OS::TripleO::Services::NeutronHoneycombAgent - OS::TripleO::Services::Congress - - OS::TripleO::Services::NeutronVppAgent +# - OS::TripleO::Services::NeutronVppAgent - OS::TripleO::Services::OVNDBs - - OS::TripleO::Services::Vpp +# - OS::TripleO::Services::Vpp ComputeServices: - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephClient @@ -140,10 +137,9 @@ parameter_defaults: - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::NeutronSriovAgent - OS::TripleO::Services::OpenDaylightOvs - - OS::TripleO::Services::ONOSOvs +# - OS::TripleO::Services::ONOSOvs - OS::TripleO::Services::SensuClient - OS::TripleO::Services::FluentdClient - - OS::TripleO::Services::VipHosts - - OS::TripleO::Services::NeutronHoneycombAgent - - OS::TripleO::Services::NeutronVppAgent - - OS::TripleO::Services::Vpp +# - OS::TripleO::Services::NeutronHoneycombAgent +# - OS::TripleO::Services::NeutronVppAgent +# - OS::TripleO::Services::Vpp diff --git a/build/overcloud-full.sh b/build/overcloud-full.sh index 9ecb1c32..c03ae2c2 100755 --- a/build/overcloud-full.sh +++ b/build/overcloud-full.sh @@ -42,13 +42,6 @@ for package in ${dpdk_rpms[@]}; do dpdk_pkg_str+=" --upload ${BUILD_DIR}/${package}:/root/dpdk_rpms" done -# tar up the congress puppet module -rm -rf puppet-congress -git clone https://github.com/openstack/puppet-congress -pushd puppet-congress > /dev/null -git archive --format=tar.gz --prefix=congress/ HEAD > ${BUILD_DIR}/puppet-congress.tar.gz -popd > /dev/null - # tar up the fd.io module rm -rf puppet-fdio git clone https://git.fd.io/puppet-fdio @@ -61,12 +54,14 @@ rm -rf vsperf vsperf.tar.gz git clone https://gerrit.opnfv.org/gerrit/vswitchperf vsperf tar czf vsperf.tar.gz vsperf -# tar up the tacker puppet module -rm -rf puppet-tacker -git clone https://github.com/openstack/puppet-tacker -pushd puppet-tacker > /dev/null -git archive --format=tar.gz --prefix=tacker/ origin/stable/ocata > ${BUILD_DIR}/puppet-tacker.tar.gz -popd > /dev/null +# Master FD.IO Repo +cat > ${BUILD_DIR}/fdio.repo << EOF +[fdio-master] +name=fd.io master branch latest merge +baseurl=https://nexus.fd.io/content/repositories/fd.io.master.centos7/ +enabled=1 +gpgcheck=0 +EOF # Get Real Time Kernel from kvm4nfv populate_cache $kvmfornfv_uri_base/$kvmfornfv_kernel_rpm @@ -84,19 +79,16 @@ qemu-img resize overcloud-full_build.qcow2 +900MB # expand file system to max disk size # installing forked opnfv-puppet-tripleo # upload dpdk rpms but do not install -# install the congress rpms -# upload and explode the congress puppet module # install fd.io yum repo and packages # upload puppet fdio # git clone vsperf into the overcloud image -# upload the tacker puppet module and untar it -# install tacker # upload the rt_kvm kernel LIBGUESTFS_BACKEND=direct virt-customize \ --run-command "xfs_growfs /dev/sda" \ --upload ${BUILD_DIR}/opnfv-puppet-tripleo.tar.gz:/etc/puppet/modules \ --run-command "cd /etc/puppet/modules && rm -rf tripleo && tar xzf opnfv-puppet-tripleo.tar.gz" \ - --run-command "yum update -y python-ipaddress rabbitmq-server erlang*" \ + --upload ${BUILD_DIR}/os-net-config.tar.gz:/usr/lib/python2.7/site-packages \ + --run-command "cd /usr/lib/python2.7/site-packages/ && rm -rf os_net_config && tar xzf os-net-config.tar.gz" \ --run-command "if ! rpm -qa | grep python-redis; then yum install -y python-redis; fi" \ --run-command "sed -i 's/^#UseDNS.*$/UseDNS no/' /etc/ssh/sshd_config" \ --run-command "sed -i 's/^GSSAPIAuthentication.*$/GSSAPIAuthentication no/' /etc/ssh/sshd_config" \ @@ -109,39 +101,20 @@ LIBGUESTFS_BACKEND=direct virt-customize \ --run-command "yum install -y etcd" \ --install python-etcd \ --run-command "puppet module install cristifalcas/etcd" \ - --run-command "yum update -y puppet" \ --install "centos-release-qemu-ev" \ --run-command "yum install -y qemu-kvm-ev-2.3.0-31.el7_2.21.1.x86_64" \ --run-command "yum remove -y qemu-system-x86" \ - --upload ${BUILD_DIR}/os-net-config.tar.gz:/usr/lib/python2.7/site-packages \ - --run-command "cd /usr/lib/python2.7/site-packages/ && rm -rf os_net_config && tar xzf os-net-config.tar.gz" \ - --upload ${BUILD_DIR}/noarch/$congress_pkg:/root/ \ - --install /root/$congress_pkg \ - --install "python2-congressclient" \ - --upload ${BUILD_DIR}/puppet-congress.tar.gz:/etc/puppet/modules/ \ - --run-command "cd /etc/puppet/modules/ && tar xzf puppet-congress.tar.gz" \ --run-command "rm -f /etc/sysctl.d/80-vpp.conf" \ --install unzip \ --upload ${BUILD_DIR}/puppet-fdio.tar.gz:/etc/puppet/modules \ --run-command "cd /etc/puppet/modules && tar xzf puppet-fdio.tar.gz" \ --upload ${BUILD_DIR}/vsperf.tar.gz:/var/opt \ --run-command "cd /var/opt && tar xzf vsperf.tar.gz" \ - --upload ${BUILD_DIR}/puppet-tacker.tar.gz:/etc/puppet/modules/ \ - --run-command "cd /etc/puppet/modules/ && tar xzf puppet-tacker.tar.gz" \ - --upload ${BUILD_DIR}/noarch/$tacker_pkg:/root/ \ - --install /root/$tacker_pkg \ - --upload ${BUILD_DIR}/noarch/$tackerclient_pkg:/root/ \ - --install /root/$tackerclient_pkg \ --run-command "curl -f https://copr.fedorainfracloud.org/coprs/leifmadsen/ovs-master/repo/epel-7/leifmadsen-ovs-master-epel-7.repo > /etc/yum.repos.d/leifmadsen-ovs-master-epel-7.repo" \ --run-command "mkdir /root/ovs27" \ --run-command "yumdownloader --destdir=/root/ovs27 openvswitch*2.7* python-openvswitch-2.7*" \ - --run-command "pip install python-senlinclient" \ --run-command "sed -i -E 's/timeout=[0-9]+/timeout=60/g' /usr/share/openstack-puppet/modules/rabbitmq/lib/puppet/provider/rabbitmqctl.rb" \ - --upload ${BUILD_ROOT}/patches/puppet-neutron-add-odl-settings.patch:/usr/share/openstack-puppet/modules/neutron/ \ - --run-command "cd /usr/share/openstack-puppet/modules/neutron && patch -p1 < puppet-neutron-add-odl-settings.patch" \ --upload ${CACHE_DIR}/$kvmfornfv_kernel_rpm:/root/ \ - --upload ${BUILD_ROOT}/patches/puppet-neutron-vpp-ml2.patch:/usr/share/openstack-puppet/modules/neutron/ \ - --run-command "cd /usr/share/openstack-puppet/modules/neutron && patch -p1 < puppet-neutron-vpp-ml2.patch" \ -a overcloud-full_build.qcow2 mv -f overcloud-full_build.qcow2 overcloud-full.qcow2 diff --git a/build/overcloud-opendaylight.sh b/build/overcloud-opendaylight.sh index d61c1f2e..bacf5360 100755 --- a/build/overcloud-opendaylight.sh +++ b/build/overcloud-opendaylight.sh @@ -19,26 +19,7 @@ cp -f overcloud-full.qcow2 overcloud-full-opendaylight_build.qcow2 ##### Adding OpenDaylight to overcloud ##### ############################################### -# Beryllium Repo cat > ${BUILD_DIR}/opendaylight.repo << EOF -[opendaylight-4-release] -name=CentOS CBS OpenDaylight Beryllium repository -baseurl=http://cbs.centos.org/repos/nfv7-opendaylight-4-release/\$basearch/os/ -enabled=1 -gpgcheck=0 -EOF - -# Boron Repo -cat > ${BUILD_DIR}/opendaylight_boron.repo << EOF -[opendaylight-5-release] -name=CentOS CBS OpenDaylight Boron repository -baseurl=http://cbs.centos.org/repos/nfv7-opendaylight-5-testing/\$basearch/os/ -enabled=1 -gpgcheck=0 -EOF - -# Master Repo -cat > ${BUILD_DIR}/opendaylight_master.repo << EOF [opendaylight-6-release] name=CentOS CBS OpenDaylight Carbon repository baseurl=http://cbs.centos.org/repos/nfv7-opendaylight-6-testing/\$basearch/os/ @@ -85,20 +66,12 @@ populate_cache http://artifacts.opnfv.org/apex/danube/fdio_netvirt/odl-netvirt-v # install quagga/zrpc # upload neutron patch for generic NS linux interface driver + OVS for external networks LIBGUESTFS_BACKEND=direct virt-customize \ - --upload ${BUILD_DIR}/opendaylight_boron.repo:/etc/yum.repos.d/opendaylight.repo \ - --run-command "yum install --downloadonly --downloaddir=/root/boron/ opendaylight" \ - --upload ${BUILD_DIR}/opendaylight_master.repo:/etc/yum.repos.d/opendaylight.repo \ - --run-command "yum install --downloadonly --downloaddir=/root/master/ opendaylight" \ --upload ${BUILD_DIR}/opendaylight.repo:/etc/yum.repos.d/opendaylight.repo \ - --run-command "wget https://nexus.fd.io/content/repositories/fd.io.stable.1704.centos7/io/fd/hc2vpp/honeycomb/1.17.04-2048.noarch/honeycomb-1.17.04-2048.noarch.rpm -O /root/fdio/honeycomb-1.17.04-2048.noarch.rpm" \ + --run-command "curl -L https://nexus.fd.io/content/repositories/fd.io.stable.1704.centos7/io/fd/hc2vpp/honeycomb/1.17.04-2048.noarch/honeycomb-1.17.04-2048.noarch.rpm > /root/fdio/honeycomb-1.17.04-2048.noarch.rpm" \ --install opendaylight,python-networking-odl \ --run-command "yum install -y /root/fdio/honeycomb-1.17.04-2048.noarch.rpm" \ --upload ${BUILD_DIR}/puppet-opendaylight.tar.gz:/etc/puppet/modules/ \ --run-command "cd /etc/puppet/modules/ && tar xzf puppet-opendaylight.tar.gz" \ - --upload ${BUILD_DIR}/networking-bgpvpn.tar.gz:/root/ \ - --run-command "cd /root/ && tar xzf networking-bgpvpn.tar.gz && yum localinstall -y *networking-bgpvpn*.rpm" \ - --run-command "rm -f /etc/neutron/networking_bgpvpn.conf" \ - --run-command "touch /etc/neutron/networking_bgpvpn.conf" \ --upload ${BUILD_DIR}/puppet-gluon.tar.gz:/etc/puppet/modules/ \ --run-command "cd /etc/puppet/modules/ && tar xzf puppet-gluon.tar.gz" \ --install epel-release \ @@ -116,5 +89,10 @@ LIBGUESTFS_BACKEND=direct virt-customize \ --upload ${CACHE_DIR}/odl-netvirt-vpp-distribution.tar.gz:/root/ \ -a overcloud-full-opendaylight_build.qcow2 + # TODO: Put bgpvpn back into the build + #--upload ${BUILD_DIR}/networking-bgpvpn.tar.gz:/root/ \ + #--run-command "cd /root/ && tar xzf networking-bgpvpn.tar.gz && yum localinstall -y *networking-bgpvpn*.rpm" \ + #--run-command "rm -f /etc/neutron/networking_bgpvpn.conf" \ + #--run-command "touch /etc/neutron/networking_bgpvpn.conf" \ LIBGUESTFS_BACKEND=direct virt-sparsify --compress overcloud-full-opendaylight_build.qcow2 overcloud-full-opendaylight.qcow2 popd > /dev/null diff --git a/build/patches/0001-Removes-doing-yum-update.patch b/build/patches/0001-Removes-doing-yum-update.patch deleted file mode 100644 index 86e6ea3f..00000000 --- a/build/patches/0001-Removes-doing-yum-update.patch +++ /dev/null @@ -1,25 +0,0 @@ -From d04e8f730de074bafefea4c105a8270100efd9c1 Mon Sep 17 00:00:00 2001 -From: Tim Rozet -Date: Wed, 25 Jan 2017 09:53:17 -0500 -Subject: [PATCH] Removes doing yum update - -Signed-off-by: Tim Rozet ---- - instack_undercloud/undercloud.py | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/instack_undercloud/undercloud.py b/instack_undercloud/undercloud.py -index 2b9ff8c..b26cb49 100644 ---- a/instack_undercloud/undercloud.py -+++ b/instack_undercloud/undercloud.py -@@ -1209,7 +1209,6 @@ def install(instack_root): - _validate_configuration() - instack_env = _generate_environment(instack_root) - _generate_init_data(instack_env) -- _run_yum_update(instack_env) - _run_instack(instack_env) - _run_orc(instack_env) - _post_config(instack_env) --- -2.9.3 - diff --git a/build/patches/puppet-neutron-add-odl-settings.patch b/build/patches/puppet-neutron-add-odl-settings.patch deleted file mode 100644 index aa0b35a1..00000000 --- a/build/patches/puppet-neutron-add-odl-settings.patch +++ /dev/null @@ -1,47 +0,0 @@ -diff --git a/manifests/plugins/ml2/opendaylight.pp b/manifests/plugins/ml2/opendaylight.pp -index a27c4d6..13b56c4 100644 ---- a/manifests/plugins/ml2/opendaylight.pp -+++ b/manifests/plugins/ml2/opendaylight.pp -@@ -29,12 +29,22 @@ - # (optional) The URI used to connect to the local OVSDB server - # Defaults to 'tcp:127.0.0.1:6639' - # -+# [*port_binding_controller*] -+# (optional) Name of the controller to be used for port binding. -+# Defaults to $::os_service_default -+# -+# [*odl_hostconf_uri*] -+# (optional) Path for ODL host configuration REST interface. -+# Defaults to $::os_service_default -+# - class neutron::plugins::ml2::opendaylight ( -- $package_ensure = 'present', -- $odl_username = $::os_service_default, -- $odl_password = $::os_service_default, -- $odl_url = $::os_service_default, -- $ovsdb_connection = 'tcp:127.0.0.1:6639', -+ $package_ensure = 'present', -+ $odl_username = $::os_service_default, -+ $odl_password = $::os_service_default, -+ $odl_url = $::os_service_default, -+ $ovsdb_connection = 'tcp:127.0.0.1:6639', -+ $port_binding_controller = $::os_service_default, -+ $odl_hostconf_uri = $::os_service_default, - ) { - - include ::neutron::deps -@@ -48,9 +58,11 @@ class neutron::plugins::ml2::opendaylight ( - ) - - neutron_plugin_ml2 { -- 'ml2_odl/username': value => $odl_username; -- 'ml2_odl/password': value => $odl_password; -- 'ml2_odl/url': value => $odl_url; -+ 'ml2_odl/username': value => $odl_username; -+ 'ml2_odl/password': value => $odl_password; -+ 'ml2_odl/url': value => $odl_url; -+ 'ml2_odl/port_binding_controller': value => $port_binding_controller; -+ 'ml2_odl/odl_hostconf_uri': value => $odl_hostconf_uri; - } - - neutron_config { diff --git a/build/patches/puppet-neutron-vpp-ml2.patch b/build/patches/puppet-neutron-vpp-ml2.patch deleted file mode 100644 index 5e1313f8..00000000 --- a/build/patches/puppet-neutron-vpp-ml2.patch +++ /dev/null @@ -1,244 +0,0 @@ -From 72afc22fbba73fdb474bd6e5c1c47ab31219a9b9 Mon Sep 17 00:00:00 2001 -From: Feng Pan -Date: Tue, 28 Feb 2017 18:07:53 -0500 -Subject: [PATCH] Add support for networking-vpp ML2 driver - -Change-Id: Ib45681b1e414001c42070a32e8f81778b4e9f15f ---- - .../provider/neutron_agent_vpp/ini_settings.rb | 15 ++++ - lib/puppet/type/neutron_agent_vpp.rb | 28 +++++++ - manifests/agents/ml2/vpp.pp | 91 ++++++++++++++++++++++ - manifests/deps.pp | 1 + - manifests/params.pp | 3 + - manifests/plugins/ml2/vpp.pp | 38 +++++++++ - 6 files changed, 176 insertions(+) - create mode 100644 lib/puppet/provider/neutron_agent_vpp/ini_settings.rb - create mode 100644 lib/puppet/type/neutron_agent_vpp.rb - create mode 100644 manifests/agents/ml2/vpp.pp - create mode 100644 manifests/plugins/ml2/vpp.pp - -diff --git a/lib/puppet/provider/neutron_agent_vpp/ini_settings.rb b/lib/puppet/provider/neutron_agent_vpp/ini_settings.rb -new file mode 100644 -index 0000000..d8da7ab ---- /dev/null -+++ b/lib/puppet/provider/neutron_agent_vpp/ini_settings.rb -@@ -0,0 +1,15 @@ -+Puppet::Type.type(:neutron_agent_vpp).provide( -+ :ini_setting, -+ :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting) -+) do -+ -+ def self.file_path -+ '/etc/neutron/plugins/ml2/vpp_agent.ini' -+ end -+ -+ # added for backwards compatibility with older versions of inifile -+ def file_path -+ self.class.file_path -+ end -+ -+end -diff --git a/lib/puppet/type/neutron_agent_vpp.rb b/lib/puppet/type/neutron_agent_vpp.rb -new file mode 100644 -index 0000000..0718db8 ---- /dev/null -+++ b/lib/puppet/type/neutron_agent_vpp.rb -@@ -0,0 +1,28 @@ -+Puppet::Type.newtype(:neutron_agent_vpp) do -+ -+ ensurable -+ -+ newparam(:name, :namevar => true) do -+ desc 'Section/setting name to manage from vpp agent config.' -+ newvalues(/\S+\/\S+/) -+ end -+ -+ newproperty(:value) do -+ desc 'The value of the setting to be defined.' -+ munge do |value| -+ value = value.to_s.strip -+ value.capitalize! if value =~ /^(true|false)$/i -+ value -+ end -+ end -+ -+ newparam(:ensure_absent_val) do -+ desc 'A value that is specified as the value property will behave as if ensure => absent was specified' -+ defaultto('') -+ end -+ -+ autorequire(:package) do -+ 'neutron-vpp-agent' -+ end -+ -+end -diff --git a/manifests/agents/ml2/vpp.pp b/manifests/agents/ml2/vpp.pp -new file mode 100644 -index 0000000..faae279 ---- /dev/null -+++ b/manifests/agents/ml2/vpp.pp -@@ -0,0 +1,91 @@ -+# == Class: neutron::agents::ml2::vpp -+# -+# Configure networking-vpp Neutron agent for ML2 plugin. -+# -+# === Parameters -+# -+# [*package_ensure*] -+# (optional) Package ensure state. -+# Defaults to 'present'. -+# -+# [*enabled*] -+# (required) Whether or not to enable the agent. -+# Defaults to true. -+# -+# [*manage_service*] -+# (optional) Whether to start/stop the service -+# Defaults to true -+# -+# [*physnets*] -+# (optional) Comma-separated list of : -+# tuples mapping physical network names to agent's node-specific physical -+# network interfaces. Defaults to $::os_service_default. -+# -+# [*etcd_host*] -+# (optional) etcd server host name/ip -+# Defaults to $::os_service_default. -+# -+# [*etcd_port*] -+# (optional) etcd server listening port. -+# Defaults to $::os_service_default. -+# -+# [*etcd_user*] -+# (optional) User name for etcd authentication -+# Defaults to $::os_service_default. -+# -+# [*etcd_pass*] -+# (optional) Password for etcd authentication -+# Defaults to $::os_service_default. -+# -+# [*purge_config*] -+# (optional) Whether to set only the specified config options -+# in the vpp config. -+# Defaults to false. -+# -+class neutron::agents::ml2::vpp ( -+ $package_ensure = 'present', -+ $enabled = true, -+ $manage_service = true, -+ $physnets = $::os_service_default, -+ $etcd_host = $::os_service_default, -+ $etcd_port = $::os_service_default, -+ $etcd_user = $::os_service_default, -+ $etcd_pass = $::os_service_default, -+ $purge_config = false, -+) { -+ include ::neutron::deps -+ include ::neutron::params -+ -+ resources { 'neutron_agent_vpp': -+ purge => $purge_config, -+ } -+ -+ neutron_agent_vpp { -+ 'ml2_vpp/physnets': value => $physnets; -+ 'ml2_vpp/etcd_host': value => $etcd_host; -+ 'ml2_vpp/etcd_port': value => $etcd_port; -+ 'ml2_vpp/etcd_user': value => $etcd_user; -+ 'ml2_vpp/etcd_pass': value => $etcd_pass; -+ } -+ -+ package { 'neutron-vpp-agent': -+ ensure => $package_ensure, -+ name => $::neutron::params::vpp_plugin_package, -+ tag => ['openstack', 'neutron-package'], -+ } -+ -+ if $manage_service { -+ if $enabled { -+ $service_ensure = 'running' -+ } else { -+ $service_ensure = 'stopped' -+ } -+ } -+ -+ service { 'neutron-vpp-agent-service': -+ ensure => $service_ensure, -+ name => $::neutron::params::vpp_agent_service, -+ enable => $enabled, -+ tag => ['neutron-service'], -+ } -+} -diff --git a/manifests/deps.pp b/manifests/deps.pp -index 94b6f78..835e906 100644 ---- a/manifests/deps.pp -+++ b/manifests/deps.pp -@@ -35,6 +35,7 @@ class neutron::deps { - # All other inifile providers need to be processed in the config block - Anchor['neutron::config::begin'] -> Neutron_agent_linuxbridge<||> ~> Anchor['neutron::config::end'] - Anchor['neutron::config::begin'] -> Neutron_agent_ovs<||> ~> Anchor['neutron::config::end'] -+ Anchor['neutron::config::begin'] -> Neutron_agent_vpp<||> ~> Anchor['neutron::config::end'] - Anchor['neutron::config::begin'] -> Neutron_api_config<||> ~> Anchor['neutron::config::end'] - Anchor['neutron::config::begin'] -> Neutron_api_paste_ini<||> ~> Anchor['neutron::config::end'] - Anchor['neutron::config::begin'] -> Neutron_config<||> ~> Anchor['neutron::config::end'] -diff --git a/manifests/params.pp b/manifests/params.pp -index 05ef627..02b9be1 100644 ---- a/manifests/params.pp -+++ b/manifests/params.pp -@@ -86,6 +86,9 @@ class neutron::params { - - $kernel_headers = "linux-headers-${::kernelrelease}" - -+ $vpp_plugin_package = 'python-networking-vpp' -+ $vpp_agent_service = 'neutron-vpp-agent' -+ - } elsif($::osfamily == 'Debian') { - - $nobody_user_group = 'nogroup' -diff --git a/manifests/plugins/ml2/vpp.pp b/manifests/plugins/ml2/vpp.pp -new file mode 100644 -index 0000000..837a614 ---- /dev/null -+++ b/manifests/plugins/ml2/vpp.pp -@@ -0,0 +1,38 @@ -+# -+# Install the networking-vpp ML2 mechanism driver and generate config file -+# from parameters in the other classes. -+# -+# === Parameters -+# -+# [*etcd_host*] -+# (optional) etcd server host name or IP. -+# Defaults to $::os_service_default -+# -+# [*etcd_port*] -+# (optional) etcd server listening port. -+# Defaults to $::os_service_default. -+# -+# [*etcd_user*] -+# (optional) User name for etcd authentication -+# Defaults to $::os_service_default. -+# -+# [*etcd_pass*] -+# (optional) Password for etcd authentication -+# Defaults to $::os_service_default. -+# -+class neutron::plugins::ml2::vpp ( -+ $etcd_host = $::os_service_default, -+ $etcd_port = $::os_service_default, -+ $etcd_user = $::os_service_default, -+ $etcd_pass = $::os_service_default, -+) { -+ include ::neutron::deps -+ require ::neutron::plugins::ml2 -+ -+ neutron_plugin_ml2 { -+ 'ml2_vpp/etcd_host': value => $etcd_host; -+ 'ml2_vpp/etcd_port': value => $etcd_port; -+ 'ml2_vpp/etcd_user': value => $etcd_user; -+ 'ml2_vpp/etcd_pass': value => $etcd_pass; -+ } -+} --- -2.9.3 - diff --git a/build/rpm_specs/openstack-congress-server.service b/build/rpm_specs/openstack-congress-server.service deleted file mode 100644 index 20c3a67b..00000000 --- a/build/rpm_specs/openstack-congress-server.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=OpenStack Congress Server -After=syslog.target network.target - -[Service] -Type=simple -User=congress -ExecStart=/usr/bin/congress-server --config-file /etc/congress/congress.conf --log-file /var/log/congress/congress.log -Restart=on-failure - -[Install] -WantedBy=multi-user.target - diff --git a/build/rpm_specs/openstack-congress.spec b/build/rpm_specs/openstack-congress.spec deleted file mode 100644 index 21211932..00000000 --- a/build/rpm_specs/openstack-congress.spec +++ /dev/null @@ -1,77 +0,0 @@ -%define debug_package %{nil} - -Name: openstack-congress -Version: 2016.2 -Release: 1%{?git}%{?dist} -Summary: OpenStack servicevm/device manager - -Group: Applications/Internet -License: Apache 2.0 -URL: https://wiki.openstack.org/wiki/Congress/Installation -Source0: openstack-congress.tar.gz - -BuildArch: noarch - -BuildRequires: python-setuptools python2-oslo-config python2-debtcollector libffi-devel python-devel openssl-devel python2-oslo-config python2-debtcollector python34-devel - -%description -OpenStack policy manager - -%prep -%setup -q -rm requirements.txt - - -%build -#rm requirements.txt -#/usr/bin/python setup.py build - - -%install -/usr/bin/python setup.py install --root=%{buildroot} - -rm -rf %{buildroot}/usr/lib/python2.7/site-packages/congress_tempest_tests - -install -d -m 755 %{buildroot}/var/log/congress/ -install -d -m 755 %{buildroot}/etc/congress/snapshot/ - -install etc/api-paste.ini %{buildroot}/etc/congress/api-paste.ini -install etc/policy.json %{buildroot}/etc/congress/policy.json -tox -e genconfig --workdir ../.tox -install etc/congress.conf.sample %{buildroot}/etc/congress/congress.conf - -install -p -D -m 644 openstack-congress-server.service %{buildroot}%{_unitdir}/openstack-congress-server.service -install -d -m 755 %{buildroot}%{_sharedstatedir}/congress - -%pre -getent group congress >/dev/null || groupadd -r congress -if ! getent passwd congress >/dev/null; then - useradd -r -g congress -G congress,nobody -d %{_sharedstatedir}/congress -s /sbin/nologin -c "OpenStack Congress Daemon" congress -fi -exit 0 - -%post -%systemd_post openstack-congress - -%preun -%systemd_preun openstack-congress - -%postun -%systemd_postun_with_restart openstack-congress - -%files -%{python2_sitelib}/congress-*.egg-info -/etc/congress/api-paste.ini -/etc/congress/congress.conf -/etc/congress/policy.json -/usr/bin/congress-db-manage -/usr/bin/congress-server -%{_unitdir}/openstack-congress-server.service -/usr/lib/python2.7/site-packages/congress -/usr/lib/python2.7/site-packages/congress_dashboard -/usr/lib/python2.7/site-packages/antlr3runtime - -%dir %attr(0750, congress, root) %{_localstatedir}/log/congress - -%changelog - diff --git a/build/rpm_specs/openstack-tacker-server.service b/build/rpm_specs/openstack-tacker-server.service deleted file mode 100644 index 9bf16cd5..00000000 --- a/build/rpm_specs/openstack-tacker-server.service +++ /dev/null @@ -1,15 +0,0 @@ -[Unit] -Description=OpenStack Tacker Server -After=syslog.target network.target - -[Service] -Type=simple -User=tacker -ExecStart=/usr/bin/openstack-tacker-server --config-file /usr/share/tacker/tacker-dist.conf --config-file /etc/tacker/tacker.conf --log-file /var/log/tacker/tacker.log -PrivateTmp=true -NotifyAccess=all -KillMode=process -Restart=on-failure - -[Install] -WantedBy=multi-user.target diff --git a/build/rpm_specs/openstack-tacker.spec b/build/rpm_specs/openstack-tacker.spec deleted file mode 100644 index 0ec4d518..00000000 --- a/build/rpm_specs/openstack-tacker.spec +++ /dev/null @@ -1,84 +0,0 @@ -%define debug_package %{nil} - -Name: openstack-tacker -Version: 2016.2 -Release: 1%{?git} -Summary: OpenStack servicevm/device manager - -Group: Applications/Internet -License: Apache 2.0 -URL: https://wiki.openstack.org/wiki/Tacker/Installation -Source0: openstack-tacker.tar.gz - -BuildArch: noarch -BuildRequires: python-setuptools - -%description -OpenStack servicevm/device manager - -%prep -%setup -q - - -%build -rm requirements.txt -#/usr/bin/python setup.py build - - -%install -/usr/bin/python setup.py install --root=%{buildroot} -#remove tests -rm -rf %{buildroot}/usr/lib/python2.7/site-packages/tacker/tests -# Move config files from /usr/etc/ to /etc -mv %{buildroot}/usr/etc %{buildroot} -#remove init script -rm -fr %{buildroot}/etc/init.d - -# Install systemd script -install -p -D -m 644 openstack-tacker-server.service %{buildroot}%{_unitdir}/openstack-tacker-server.service - -# Remove egg-info -rm -rf %{buildroot}/usr/lib/python2.7/site-packages/*egg-info - -install -d -m 755 %{buildroot}%{_localstatedir}/cache/tacker -install -d -m 755 %{buildroot}%{_sharedstatedir}/tacker -install -d -m 755 %{buildroot}%{_localstatedir}/log/tacker - -%pre -getent group tacker >/dev/null || groupadd -r tacker -if ! getent passwd tacker >/dev/null; then - useradd -r -g tacker -G tacker,nobody -d %{_sharedstatedir}/tacker -s /sbin/nologin -c "OpenStack Tacker Daemon" tacker -fi -exit 0 - -%post -%systemd_post openstack-tacker-server - -%preun -%systemd_preun openstack-tacker-server - -%postun -%systemd_postun_with_restart openstack-tacker-server - -%files -/usr/bin/tacker-server -/usr/bin/tacker-db-manage -/usr/bin/tacker-rootwrap -%{_unitdir}/openstack-tacker-server.service -/usr/lib/python2.7/site-packages/tacker/* - -#%config(noreplace) %attr(-, root, tacker) %{_sysconfdir}/tacker/tacker.conf` -%{_sysconfdir}/rootwrap.d/tacker.filters -%{_sysconfdir}/tacker/api-paste.ini -%{_sysconfdir}/tacker/policy.json -%{_sysconfdir}/tacker/rootwrap.conf -%dir %attr(0750, tacker, root) %{_localstatedir}/cache/tacker -%dir %attr(0750, tacker, root) %{_sharedstatedir}/tacker -%dir %attr(0750, tacker, root) %{_localstatedir}/log/tacker - -%changelog -* Wed Nov 30 2016 Dan Radez - 2016.2-1 -- Version update for Newton - -* Mon Jul 25 2016 Tim Rozet - 2015.2-1 -- Initial Commit diff --git a/build/rpm_specs/opnfv-apex-common.spec b/build/rpm_specs/opnfv-apex-common.spec index 13a04817..541c1fec 100644 --- a/build/rpm_specs/opnfv-apex-common.spec +++ b/build/rpm_specs/opnfv-apex-common.spec @@ -10,8 +10,8 @@ Source0: opnfv-apex-common.tar.gz BuildArch: noarch BuildRequires: python-docutils python34-devel -Requires: openstack-tripleo opnfv-apex-sdn opnfv-apex-undercloud openvswitch qemu-kvm bridge-utils libguestfs-tools -Requires: initscripts net-tools iputils iproute iptables python34 python34-yaml python3-jinja2 python3-ipmi +Requires: opnfv-apex-sdn opnfv-apex-undercloud openvswitch qemu-kvm bridge-utils libguestfs-tools +Requires: initscripts net-tools iputils iproute iptables python34 python34-yaml python3-jinja2 python3-ipmi python2-virtualbmc Requires: ipxe-roms-qemu >= 20160127-1 %description @@ -77,6 +77,7 @@ install lib/undercloud-functions.sh %{buildroot}%{_var}/opt/opnfv/lib/ install lib/overcloud-deploy-functions.sh %{buildroot}%{_var}/opt/opnfv/lib/ install lib/post-install-functions.sh %{buildroot}%{_var}/opt/opnfv/lib/ install lib/utility-functions.sh %{buildroot}%{_var}/opt/opnfv/lib/ +install lib/configure-vm %{buildroot}%{_var}/opt/opnfv/lib/ install lib/python/apex_python_utils.py %{buildroot}%{_var}/opt/opnfv/lib/python/ mkdir -p %{buildroot}%{python3_sitelib}/apex/ install lib/python/apex/__init__.py %{buildroot}%{python3_sitelib}/apex/ @@ -117,6 +118,7 @@ install config/inventory/pod_example_settings.yaml %{buildroot}%{_docdir}/opnfv/ %{_var}/opt/opnfv/lib/overcloud-deploy-functions.sh %{_var}/opt/opnfv/lib/post-install-functions.sh %{_var}/opt/opnfv/lib/utility-functions.sh +%{_var}/opt/opnfv/lib/configure-vm %{_var}/opt/opnfv/lib/python/ %{python3_sitelib}/apex/ %{_var}/opt/opnfv/lib/installer/domain.xml @@ -161,6 +163,8 @@ install config/inventory/pod_example_settings.yaml %{buildroot}%{_docdir}/opnfv/ %doc %{_docdir}/opnfv/inventory.yaml.example %changelog +* Mon May 08 2017 Dan Radez - 5.0-2 +- adding configure-vm * Tue Apr 04 2017 Dan Radez - 5.0-1 - Version update for Euphrates - rename to ovs_dpdk diff --git a/build/rpm_specs/opnfv-apex-release.spec b/build/rpm_specs/opnfv-apex-release.spec index 1be58a1c..5f84a4fc 100644 --- a/build/rpm_specs/opnfv-apex-release.spec +++ b/build/rpm_specs/opnfv-apex-release.spec @@ -9,7 +9,7 @@ URL: https://gerrit.opnfv.org/gerrit/apex.git Source0: opnfv-apex-release.tar.gz BuildArch: noarch -Requires: rdo-release = newton epel-release libvirt-python +Requires: rdo-release = ocata epel-release libvirt-python %description RPM Release file that provides a yum repo file to install OPNFV Apex diff --git a/build/rpm_specs/opnfv-apex-undercloud.spec b/build/rpm_specs/opnfv-apex-undercloud.spec index 55a614d0..93fc6e0d 100644 --- a/build/rpm_specs/opnfv-apex-undercloud.spec +++ b/build/rpm_specs/opnfv-apex-undercloud.spec @@ -9,7 +9,7 @@ URL: https://gerrit.opnfv.org/gerrit/apex.git Source0: opnfv-apex-undercloud.tar.gz BuildArch: noarch -BuildRequires: openvswitch libvirt qemu-kvm python-docutils +BuildRequires: python-docutils Requires: openvswitch libvirt qemu-kvm bridge-utils libguestfs-tools %description diff --git a/build/rpm_specs/python-tackerclient.spec b/build/rpm_specs/python-tackerclient.spec deleted file mode 100644 index 5758f7c0..00000000 --- a/build/rpm_specs/python-tackerclient.spec +++ /dev/null @@ -1,44 +0,0 @@ -%define debug_package %{nil} - -Name: python-tackerclient -Version: 2016.2 -Release: 1%{?git} -Summary: CLI and Client Library for OpenStack Networking - -Group: Applications/Internet -License: Apache 2.0 -URL: https://wiki.openstack.org/wiki/Tacker/Installation -Source0: python-tackerclient.tar.gz - -BuildArch: noarch -BuildRequires: python-setuptools -#Requires: stevedore>=1.5.0 http oslo.config>=1.11.0 oslo.messaging!=1.17.0!=1.17.1>=1.16.0 oslo.rootwrap>=2.0.0 python-novaclient>=2.22.0 - -%description -CLI and Client Library for OpenStack Networking - -%prep -%setup -q - - -%build -rm requirements.txt -#/usr/bin/python setup.py build - - -%install -/usr/bin/python setup.py install --prefix=%{buildroot} --install-lib=%{buildroot}/usr/lib/python2.7/site-packages -#rm -rf %{buildroot}/usr/lib/python2.7/site-packages/tacker/tests - - -%files -/bin/tacker -/usr/lib/python2.7/site-packages/tackerclient/* -/usr/lib/python2.7/site-packages/python_tackerclient-* - -%changelog -* Wed Nov 30 2016 Dan Radez - 2016.2-1 -- Version update for Newton - -* Mon Jul 25 2016 Tim Rozet - 2015.2-1 -- Initial Commit diff --git a/build/undercloud.sh b/build/undercloud.sh index 6d8937ff..8d82bcac 100755 --- a/build/undercloud.sh +++ b/build/undercloud.sh @@ -27,15 +27,11 @@ popd > /dev/null # inject rt_kvm kernel rpm name into the enable file sed "s/kvmfornfv_kernel.rpm/$kvmfornfv_kernel_rpm/" ${BUILD_ROOT}/enable_rt_kvm.yaml | tee ${BUILD_DIR}/enable_rt_kvm.yaml +# Turn off GSSAPI Auth in sshd # installing forked opnfv-tht # enabling ceph OSDs to live on the controller # seeding configuration files specific to OPNFV -# add congress client -# add congress password to python-tripleoclient -# add tacker password to tripleo-common -# upload tacker repo and install the client package # Add performance image scripts -# hack for disabling undercloud package update LIBGUESTFS_BACKEND=direct virt-customize \ --run-command "sed -i 's/^#UseDNS.*$/UseDNS no/' /etc/ssh/sshd_config" \ --run-command "sed -i 's/^GSSAPIAuthentication.*$/GSSAPIAuthentication no/' /etc/ssh/sshd_config" \ @@ -53,17 +49,7 @@ LIBGUESTFS_BACKEND=direct virt-customize \ --upload ${BUILD_ROOT}/ovs-dpdk-preconfig.yaml:/home/stack/ \ --upload ${BUILD_ROOT}/csit-environment.yaml:/home/stack/ \ --upload ${BUILD_ROOT}/virtual-environment.yaml:/home/stack/ \ - --install "python2-congressclient" \ - --run-command "sed -i '/SwiftPassword/a\ \x27TackerPassword\x27,' /usr/lib/python2.7/site-packages/tripleo_common/constants.py" \ - --run-command "sed -i '/CinderPassword/a\ \x27CongressPassword\x27,' /usr/lib/python2.7/site-packages/tripleo_common/constants.py" \ - --upload ${BUILD_DIR}/noarch/$tackerclient_pkg:/root/ \ - --install /root/$tackerclient_pkg \ - --install "python2-aodhclient" \ - --install "openstack-heat-engine" \ - --install "openstack-heat-api-cfn" \ - --install "openstack-heat-api" \ - --upload ${BUILD_ROOT}/patches/0001-Removes-doing-yum-update.patch:/usr/lib/python2.7/site-packages/ \ - --run-command "cd /usr/lib/python2.7/site-packages/ && patch -p1 < 0001-Removes-doing-yum-update.patch" \ + --install "libguestfs-tools" \ -a undercloud_build.qcow2 mv -f undercloud_build.qcow2 undercloud.qcow2 diff --git a/build/variables.sh b/build/variables.sh index a496608a..9d85e7a1 100644 --- a/build/variables.sh +++ b/build/variables.sh @@ -15,11 +15,10 @@ CACHE_DIR="$(dirname ${BUILD_ROOT})/.cache" CACHE_HISTORY=".cache_history" PATCHES_DIR="${BUILD_ROOT}/patches" +rdo_images_uri=${RDO_IMAGES_URI:-https://images.rdoproject.org/ocata/delorean/current-tripleo/stable/} + onos_release_uri=https://downloads.onosproject.org/release/ onos_release_file=onos-1.8.4.tar.gz -# CBS is broken for now, as a workaround use backup file server -#rdo_images_uri=${RDO_IMAGES_URI:-http://buildlogs.centos.org/centos/7/cloud/$(uname -p)/tripleo_images/newton/delorean} -rdo_images_uri=${RDO_IMAGES_URI:-https://images.rdoproject.org/newton/delorean/consistent/stable} onos_jdk_uri=http://artifacts.opnfv.org/apex/colorado onos_ovs_uri=http://artifacts.opnfv.org/apex/colorado onos_ovs_pkg=package_ovs_rpm3.tar.gz @@ -37,21 +36,6 @@ dpdk_rpms=( kvmfornfv_uri_base="http://artifacts.opnfv.org/kvmfornfv/danube" kvmfornfv_kernel_rpm="kvmfornfv-8e1bfc88-apex-kernel-4.4.50_rt62_centos.x86_64.rpm" -tacker_repo="http://github.com/openstack/tacker" -tacker_branch="stable/newton" -tacker_commit=$(git ls-remote ${tacker_repo} ${tacker_branch} | awk '{print substr($1,1,7)}') -tacker_pkg=openstack-tacker-2016.2-1.git${tacker_commit}.noarch.rpm - -tackerclient_repo="http://github.com/openstack/python-tackerclient" -tackerclient_branch="stable/newton" -tackerclient_commit=$(git ls-remote ${tackerclient_repo} ${tackerclient_branch} | awk '{print substr($1,1,7)}') -tackerclient_pkg=python-tackerclient-2016.2-1.git${tackerclient_commit}.noarch.rpm - -congress_repo="http://github.com/openstack/congress" -congress_branch="stable/newton" -congress_commit=$(git ls-remote ${congress_repo} ${congress_branch} | awk '{print substr($1,1,7)}') -congress_pkg=openstack-congress-2016.2-1.git${congress_commit}$(rpm -E %dist).noarch.rpm - netvpp_repo="https://github.com/openstack/networking-vpp" netvpp_branch="master" netvpp_commit=$(git ls-remote ${netvpp_repo} ${netvpp_branch} | awk '{print substr($1,1,7)}') diff --git a/ci/PR_revision.log b/ci/PR_revision.log index 58f3edad..3d7cc2de 100644 --- a/ci/PR_revision.log +++ b/ci/PR_revision.log @@ -2,17 +2,3 @@ #Note this is only needed for triggering commits with no code change in #Apex, but changes do occur in opnfv-tht #PR number, PR Title -96,Add etcd service -98,Tacker support -107,Enable ODL clustering -110,Adding endpoint url definitions for tacker -109,Adding endpoint url definitions to congress -115,Increases mariadb open files limit for noha deployments -116,Adding notifier topic to ceilometer -114,Use networking-odl v1 driver in bgpvpn -119,Fixes missing ':' with setting hieradata for mariadb limit -19,opnfv-puppet-tripleo, Only increases mariadb limit with noha deployments -120,Add old openflow port (6633) and karaf ssh port (8101) -123,Disable L3 HA for ODL/FDIO scenarios -124,setting keystone region for tacker and congress -111,Backporting OVN fixes diff --git a/ci/build.sh b/ci/build.sh index 3531a657..31d7ba62 100755 --- a/ci/build.sh +++ b/ci/build.sh @@ -35,7 +35,7 @@ CACHE_DEST="" CACHE_DIR="${APEX_ROOT}/.cache" CACHE_NAME="apex-cache" MAKE_TARGETS="images" -REQUIRED_PKGS="rpm-build python-docutils" +REQUIRED_PKGS="rpm-build python-docutils python2-virtualbmc" RELEASE_RPM="" parse_cmdline() { @@ -129,7 +129,10 @@ if [[ -n "$CACHE_DEST" && -n "$MAKE_TARGETS" ]]; then rm -rf $CACHE_DIR mkdir $CACHE_DIR echo "Unpacking Cache to ${CACHE_DIR}" - tar -xvzf ${CACHE_DEST}/${CACHE_NAME}.tgz -C ${CACHE_DIR} + tar -xvzf ${CACHE_DEST}/${CACHE_NAME}.tgz -C ${CACHE_DIR} || { + rm ${CACHE_DEST}/${CACHE_NAME}.tgz + echo "Cache unpack failed, Will rebuild." + } echo "Cache contents after unpack:" ls -al ${CACHE_DIR} else diff --git a/ci/clean.sh b/ci/clean.sh index 4335b821..bd48c0d1 100755 --- a/ci/clean.sh +++ b/ci/clean.sh @@ -102,6 +102,7 @@ for i in $(seq 0 $vm_index); do /usr/bin/touch /var/lib/libvirt/images/baremetal${i}.qcow2 virsh vol-delete baremetal${i}.qcow2 --pool default 2> /dev/null | xargs echo -n rm -f /var/lib/libvirt/images/baremetal${i}.qcow2 2> /dev/null + if [ -e /root/.vbmc/baremetal$i ]; then vbmc delete baremetal$i; fi done for network in ${OPNFV_NETWORK_TYPES}; do @@ -119,7 +120,6 @@ done # clean pub keys from root's auth keys sed -i '/stack@undercloud.localdomain/d' /root/.ssh/authorized_keys -sed -i '/virtual-power-key/d' /root/.ssh/authorized_keys # force storage cleanup diff --git a/ci/dev_dep_check.sh b/ci/dev_dep_check.sh index 6d0aa11f..71cea22c 100755 --- a/ci/dev_dep_check.sh +++ b/ci/dev_dep_check.sh @@ -32,8 +32,11 @@ if ! sudo yum update -y ipxe-roms-qemu; then fi # check for other packages -for i in epel-release python34-PyYAML openvswitch openstack-tripleo libguestfs libguestfs-tools-c libvirt-python python2-oslo-config python2-debtcollector python34-devel libxslt-devel libxml2-devel; do -# Make sure deploy deps are installed +for i in epel-release python34-PyYAML openvswitch openstack-tripleo libguestfs \ + libguestfs-tools-c libvirt-python python2-oslo-config \ + python2-debtcollector python34-devel libxslt-devel \ + libxml2-devel python-virtualbmc; do + # Make sure deploy deps are installed if ! rpm -q $i > /dev/null; then if ! sudo yum install -y $i; then echo "Failed to install $i package..." @@ -49,9 +52,6 @@ sudo pip3 install python-ipmi # Make sure jinja2 is installed easy_install-3.4 jinja2 -# TODO(cgoncalves): remove once congress RPM is downloaded from upstream -easy_install-3.4 tox - # Required packages to redirect stdin with virt-customize if ! sudo yum -y install libguestfs libguestfs-tools libguestfs-tools-c supermin supermin5 supermin-helper perl-Sys-Guestfs python-libguestfs; then echo "Failed to install supermin/libguestfs packages..." diff --git a/ci/test.sh b/ci/test.sh index 4f8a0421..3e538ffb 100755 --- a/ci/test.sh +++ b/ci/test.sh @@ -11,7 +11,7 @@ set -e # Make sure python dependencies are installed -for pkg in epel-release python34-devel python34-nose python-pep8; do +for pkg in iproute epel-release python34-devel python34-nose python34-PyYAML python-pep8 python34-mock; do if ! rpm -q ${pkg} > /dev/null; then if ! sudo yum install -y ${pkg}; then echo "Failed to install ${pkg} package..." diff --git a/config/deploy/deploy_settings.yaml b/config/deploy/deploy_settings.yaml index aedd1979..3186a5da 100644 --- a/config/deploy/deploy_settings.yaml +++ b/config/deploy/deploy_settings.yaml @@ -14,9 +14,9 @@ deploy_options: sdn_controller: opendaylight # Which version of ODL to use. This is only valid if 'opendaylight' was used - # above. Valid options are 'beryllium', 'boron' and 'carbon'. If no value - # is specified, Beryllium will be used. - #odl_version: boron + # above. Valid options are 'carbon'. If no value + # is specified, carbon will be used. + #odl_version: carbon # Whether to configure ODL L3 support. This will disable the Neutron L3 Agent and # use ODL instead. diff --git a/config/deploy/os-odl-bgpvpn-ha.yaml b/config/deploy/os-odl-bgpvpn-ha.yaml index ef51e737..76d051eb 100644 --- a/config/deploy/os-odl-bgpvpn-ha.yaml +++ b/config/deploy/os-odl-bgpvpn-ha.yaml @@ -4,7 +4,7 @@ global_params: deploy_options: sdn_controller: opendaylight sdn_l3: true - odl_version: boron + odl_version: carbon tacker: false congress: true sfc: false diff --git a/config/deploy/os-odl-bgpvpn-noha.yaml b/config/deploy/os-odl-bgpvpn-noha.yaml index 7812d054..d569ba6c 100644 --- a/config/deploy/os-odl-bgpvpn-noha.yaml +++ b/config/deploy/os-odl-bgpvpn-noha.yaml @@ -4,7 +4,7 @@ global_params: deploy_options: sdn_controller: opendaylight sdn_l3: true - odl_version: boron + odl_version: carbon tacker: false congress: true sfc: false diff --git a/config/deploy/os-odl-csit-noha.yaml b/config/deploy/os-odl-csit-noha.yaml index ad61e26b..d5e2695e 100644 --- a/config/deploy/os-odl-csit-noha.yaml +++ b/config/deploy/os-odl-csit-noha.yaml @@ -3,7 +3,7 @@ global_params: deploy_options: sdn_controller: opendaylight - odl_version: boron + odl_version: carbon sdn_l3: true tacker: false congress: false diff --git a/config/deploy/os-odl-gluon-noha.yaml b/config/deploy/os-odl-gluon-noha.yaml index cdeb90c5..12e5d25f 100644 --- a/config/deploy/os-odl-gluon-noha.yaml +++ b/config/deploy/os-odl-gluon-noha.yaml @@ -4,7 +4,7 @@ global_params: deploy_options: sdn_controller: opendaylight sdn_l3: true - odl_version: boron + odl_version: carbon tacker: false congress: true sfc: false diff --git a/config/deploy/os-odl-nofeature-ha.yaml b/config/deploy/os-odl-nofeature-ha.yaml index d421c7ca..64af606a 100644 --- a/config/deploy/os-odl-nofeature-ha.yaml +++ b/config/deploy/os-odl-nofeature-ha.yaml @@ -3,7 +3,7 @@ global_params: deploy_options: sdn_controller: opendaylight - odl_version: boron + odl_version: carbon sdn_l3: true tacker: true congress: true diff --git a/config/deploy/os-odl-nofeature-noha.yaml b/config/deploy/os-odl-nofeature-noha.yaml index 972b1f85..d95ed9c6 100644 --- a/config/deploy/os-odl-nofeature-noha.yaml +++ b/config/deploy/os-odl-nofeature-noha.yaml @@ -3,7 +3,7 @@ global_params: deploy_options: sdn_controller: opendaylight - odl_version: boron + odl_version: carbon sdn_l3: true tacker: true congress: true diff --git a/config/deploy/os-odl-ovs_dpdk-ha.yaml b/config/deploy/os-odl-ovs_dpdk-ha.yaml index ad265699..8e3674a0 100644 --- a/config/deploy/os-odl-ovs_dpdk-ha.yaml +++ b/config/deploy/os-odl-ovs_dpdk-ha.yaml @@ -3,7 +3,7 @@ global_params: deploy_options: sdn_controller: opendaylight - odl_version: boron + odl_version: carbon sdn_l3: true tacker: true congress: true diff --git a/config/deploy/os-odl-ovs_dpdk-noha.yaml b/config/deploy/os-odl-ovs_dpdk-noha.yaml index 6f7630dc..1711fc63 100644 --- a/config/deploy/os-odl-ovs_dpdk-noha.yaml +++ b/config/deploy/os-odl-ovs_dpdk-noha.yaml @@ -3,7 +3,7 @@ global_params: deploy_options: sdn_controller: opendaylight - odl_version: boron + odl_version: carbon sdn_l3: true tacker: true congress: true diff --git a/config/deploy/os-odl_l2-sfc-noha.yaml b/config/deploy/os-odl_l2-sfc-noha.yaml index fa9a7868..4423b175 100644 --- a/config/deploy/os-odl_l2-sfc-noha.yaml +++ b/config/deploy/os-odl_l2-sfc-noha.yaml @@ -4,7 +4,7 @@ global_params: deploy_options: sdn_controller: opendaylight sdn_l3: false - odl_version: boron + odl_version: carbon tacker: true congress: true sfc: true diff --git a/config/yum.repos.d/opnfv-apex.repo b/config/yum.repos.d/opnfv-apex.repo index aff09420..21e7e163 100644 --- a/config/yum.repos.d/opnfv-apex.repo +++ b/config/yum.repos.d/opnfv-apex.repo @@ -1,6 +1,6 @@ [opnfv-apex] -name=OPNFV Apex Danube -baseurl=http://artifacts.opnfv.org/apex/danube/yumrepo/ +name=OPNFV Apex Euphrates +baseurl=http://artifacts.opnfv.org/apex/euphrates/yumrepo/ failovermethod=priority enabled=1 gpgcheck=0 diff --git a/lib/configure-deps-functions.sh b/lib/configure-deps-functions.sh index 3c82c66a..32900015 100755 --- a/lib/configure-deps-functions.sh +++ b/lib/configure-deps-functions.sh @@ -90,9 +90,14 @@ EOF fi done else + # verify virtualbmc is installed for a virtual install + if ! rpm -q python2-virtualbmc; then + echo -e "${red}ERROR: Package python2-virtualbmc is required to do a virtual install.$reset" + exit 1 + fi for network in ${OPNFV_NETWORK_TYPES}; do if ! ovs-vsctl --may-exist add-br ${NET_MAP[$network]}; then - echo -e "${red}ERROR: Failed to create ovs bridge ${NET_MAP[$network]}{$reset}" + echo -e "${red}ERROR: Failed to create ovs bridge ${NET_MAP[$network]}${reset}" exit 1 fi echo "${blue}INFO: Creating Virsh Network: $network${reset}" diff --git a/lib/configure-vm b/lib/configure-vm new file mode 100755 index 00000000..340a7ab6 --- /dev/null +++ b/lib/configure-vm @@ -0,0 +1,171 @@ +#!/usr/bin/env python + +import argparse +import math +import os +import random + +import libvirt + +templatedir = os.getenv('LIB', '/var/opt/opnfv/lib') + '/installer/' + +MAX_NUM_MACS = math.trunc(0xff/2) + + +def generate_baremetal_macs(count=1): + """Generate an Ethernet MAC address suitable for baremetal testing.""" + # NOTE(dprince): We generate our own bare metal MAC address's here + # instead of relying on libvirt so that we can ensure the + # locally administered bit is set low. (The libvirt default is + # to set the 2nd MSB high.) This effectively allows our + # fake baremetal VMs to more accurately behave like real hardware + # and fixes issues with bridge/DHCP configurations which rely + # on the fact that bridges assume the MAC address of the lowest + # attached NIC. + # MACs generated for a given machine will also be in sequential + # order, which matches how most BM machines are laid out as well. + # Additionally we increment each MAC by two places. + macs = [] + + if count > MAX_NUM_MACS: + raise ValueError("The MAX num of MACS supported is %i." % MAX_NUM_MACS) + + base_nums = [0x00, + random.randint(0x00, 0xff), + random.randint(0x00, 0xff), + random.randint(0x00, 0xff), + random.randint(0x00, 0xff)] + base_mac = ':'.join(map(lambda x: "%02x" % x, base_nums)) + + start = random.randint(0x00, 0xff) + if (start + (count * 2)) > 0xff: + # leave room to generate macs in sequence + start = 0xff - count * 2 + for num in range(0, count*2, 2): + mac = start + num + macs.append(base_mac + ":" + ("%02x" % mac)) + return macs + +def main(): + parser = argparse.ArgumentParser( + description="Configure a kvm virtual machine for the seed image.") + parser.add_argument('--name', default='seed', + help='the name to give the machine in libvirt.') + parser.add_argument('--image', + help='Use a custom image file (must be qcow2).') + parser.add_argument('--diskbus', default='sata', + help='Choose an alternate bus type for the disk') + parser.add_argument('--baremetal-interface', nargs='+', default=['brbm'], + help='The interface which bare metal nodes will be connected to.') + parser.add_argument('--engine', default='kvm', + help='The virtualization engine to use') + parser.add_argument('--arch', default='i686', + help='The architecture to use') + parser.add_argument('--memory', default='2097152', + help="Maximum memory for the VM in KB.") + parser.add_argument('--cpus', default='1', + help="CPU count for the VM.") + parser.add_argument('--bootdev', default='hd', + help="What boot device to use (hd/network).") + parser.add_argument('--seed', default=False, action='store_true', + help='Create a seed vm with two interfaces.') + parser.add_argument('--ovsbridge', default="", + help='Place the seed public interface on this ovs bridge.') + parser.add_argument('--libvirt-nic-driver', default='virtio', + help='The libvirt network driver to use') + parser.add_argument('--enable-serial-console', action="store_true", + help='Enable a serial console') + parser.add_argument('--direct-boot', + help='Enable directboot to .{vmlinux & initrd}') + parser.add_argument('--kernel-arg', action="append", dest='kernel_args', + help='Kernel arguments, use multiple time for multiple args.') + parser.add_argument('--uri', default='qemu:///system', + help='The server uri with which to connect.') + args = parser.parse_args() + with file(templatedir + '/domain.xml', 'rb') as f: + source_template = f.read() + imagefile = '/var/lib/libvirt/images/seed.qcow2' + if args.image: + imagefile = args.image + imagefile = os.path.realpath(imagefile) + params = { + 'name': args.name, + 'imagefile': imagefile, + 'engine': args.engine, + 'arch': args.arch, + 'memory': args.memory, + 'cpus': args.cpus, + 'bootdev': args.bootdev, + 'network': '', + 'enable_serial_console': '', + 'direct_boot': '', + 'kernel_args': '', + } + if args.image is not None: + params['imagefile'] = args.image + + # Configure the bus type for the target disk device + params['diskbus'] = args.diskbus + nicparams = { + 'nicdriver': args.libvirt_nic_driver, + 'ovsbridge': args.ovsbridge, + } + if args.seed: + if args.ovsbridge: + params['network'] = """ + + + + + """ % nicparams + else: + params['network'] = """ + + + + + """ % nicparams + + macs = generate_baremetal_macs(len(args.baremetal_interface)) + + params['bm_network'] = "" + for bm_interface, mac in zip(args.baremetal_interface, macs): + bm_interface_params = { + 'bminterface': bm_interface, + 'bmmacaddress': mac, + 'nicdriver': args.libvirt_nic_driver, + } + params['bm_network'] += """ + + + + + + """ % bm_interface_params + + if args.enable_serial_console: + params['enable_serial_console'] = """ + + + + + + + """ + if args.direct_boot: + params['direct_boot'] = """ + /var/lib/libvirt/images/%(direct_boot)s.vmlinuz + /var/lib/libvirt/images/%(direct_boot)s.initrd + """ % { 'direct_boot': args.direct_boot } + if args.kernel_args: + params['kernel_args'] = """ + %s + """ % ' '.join(args.kernel_args) + + libvirt_template = source_template % params + conn=libvirt.open(args.uri) + a = conn.defineXML(libvirt_template) + print ("Created machine %s with UUID %s" % (args.name, a.UUIDString())) + +if __name__ == '__main__': + main() diff --git a/lib/installer/domain.xml b/lib/installer/domain.xml index c710e561..ead0de69 100644 --- a/lib/installer/domain.xml +++ b/lib/installer/domain.xml @@ -7,6 +7,8 @@ hvm + %(direct_boot)s + %(kernel_args)s diff --git a/lib/overcloud-deploy-functions.sh b/lib/overcloud-deploy-functions.sh index e5f9134b..f26a72a3 100755 --- a/lib/overcloud-deploy-functions.sh +++ b/lib/overcloud-deploy-functions.sh @@ -42,7 +42,7 @@ function overcloud_deploy { DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/neutron-opendaylight-honeycomb-l2.yaml" fi else - DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/neutron-opendaylight-l3.yaml" + DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/neutron-opendaylight.yaml" fi SDN_IMAGE=opendaylight elif [ "${deploy_options_array['sdn_controller']}" == 'opendaylight-external' ]; then @@ -256,22 +256,20 @@ EOI # Set ODL version accordingly if [[ "${deploy_options_array['sdn_controller']}" == 'opendaylight' && -n "${deploy_options_array['odl_version']}" ]]; then case "${deploy_options_array['odl_version']}" in - beryllium) odl_version='' + carbon) odl_version='' ;; - boron) odl_version='boron' - ;; - carbon) odl_version='master' - ;; - *) echo -e "${red}Invalid ODL version ${deploy_options_array['odl_version']}. Please use 'carbon' or 'boron' values.${reset}" + *) echo -e "${red}Invalid ODL version ${deploy_options_array['odl_version']}. Please use 'carbon'.${reset}" exit 1 ;; esac - ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" < deploy_command << EOF diff --git a/lib/post-install-functions.sh b/lib/post-install-functions.sh index a93ad541..7678b0d3 100755 --- a/lib/post-install-functions.sh +++ b/lib/post-install-functions.sh @@ -91,36 +91,37 @@ source overcloudrc set -o errexit echo "Configuring Neutron external network" if [[ -n "$external_nic_mapping_compute_vlan" && "$external_nic_mapping_compute_vlan" != 'native' ]]; then - neutron net-create external --router:external=True --tenant-id \$(openstack project show service | grep id | awk '{ print \$4 }') --provider:network_type vlan --provider:segmentation_id ${external_nic_mapping_compute_vlan} --provider:physical_network datacentre + openstack network create external --project service --external --provider-network-type vlan --provider-segment $external_nic_mapping_compute_vlan --provider-physical-network datacentre else - neutron net-create external --router:external=True --tenant-id \$(openstack project show service | grep id | awk '{ print \$4 }') --provider:network_type flat --provider:physical_network datacentre + openstack network create external --project service --external --provider-network-type flat --provider-physical-network datacentre fi if [ "$external_network_ipv6" == "True" ]; then - neutron subnet-create --name external-net --tenant-id \$(openstack project show service | grep id | awk '{ print \$4 }') external --ip_version 6 --ipv6_ra_mode slaac --ipv6_address_mode slaac --gateway ${external_gateway} --allocation-pool start=${external_floating_ip_range%%,*},end=${external_floating_ip_range##*,} ${external_cidr} + openstack subnet create external-subnet --project service --network external --no-dhcp --gateway $external_gateway --allocation-pool start=${external_floating_ip_range%%,*},end=${external_floating_ip_range##*,} --subnet-range $external_cidr --ip-version 6 --ipv6-ra-mode slaac --ipv6-address-mode slaac elif [[ "$enabled_network_list" =~ "external" ]]; then - neutron subnet-create --name external-net --tenant-id \$(openstack project show service | grep id | awk '{ print \$4 }') --disable-dhcp external --gateway ${external_gateway} --allocation-pool start=${external_floating_ip_range%%,*},end=${external_floating_ip_range##*,} ${external_cidr} + openstack subnet create external-subnet --project service --network external --no-dhcp --gateway $external_gateway --allocation-pool start=${external_floating_ip_range%%,*},end=${external_floating_ip_range##*,} --subnet-range $external_cidr else # we re-use the introspection range for floating ips with single admin network - neutron subnet-create --name external-net --tenant-id \$(openstack project show service | grep id | awk '{ print \$4 }') --disable-dhcp external --gateway ${admin_gateway} --allocation-pool start=${admin_introspection_range%%,*},end=${admin_introspection_range##*,} ${admin_cidr} + openstack subnet create external-subnet --project service --network external --no-dhcp --gateway $admin_gateway --allocation-pool start=${admin_introspection_range%%,*},end=${admin_introspection_range##*,} --subnet-range $admin_cidr fi if [ "${deploy_options_array['gluon']}" == 'True' ]; then echo "Creating Gluon dummy network and subnet" - neutron net-create --shared --provider:network_type vxlan GluonNetwork - neutron subnet-create --name GluonSubnet --no-gateway --disable-dhcp GluonNetwork 0.0.0.0/1 + openstack network create gluon-network --share --provider-network-type vxlan + openstack subnet create gluon-subnet --no-gateway --no-dhcp --network GluonNetwork --subnet-range 0.0.0.0/1 fi -echo "Removing sahara endpoint and service" -sahara_service_id=\$(openstack service list | grep sahara | cut -d ' ' -f 2) -sahara_endpoint_id=\$(openstack endpoint list | grep sahara | cut -d ' ' -f 2) -[[ -n "\$sahara_endpoint_id" ]] && openstack endpoint delete \$sahara_endpoint_id -[[ -n "\$sahara_service_id" ]] && openstack service delete \$sahara_service_id - -echo "Removing swift endpoint and service" -swift_service_id=\$(openstack service list | grep swift | cut -d ' ' -f 2) -swift_endpoint_id=\$(openstack endpoint list | grep swift | cut -d ' ' -f 2) -[[ -n "\$swift_endpoint_id" ]] && openstack endpoint delete \$swift_endpoint_id -[[ -n "\$swift_service_id" ]] && openstack service delete \$swift_service_id +# Fix project_id and os_tenant_name not in overcloudrc +# Deprecated openstack client does not need project_id +# and os_tenant_name anymore but glance client and +# Rally in general does need it. +# REMOVE when not needed in Rally/glance-client anymore. +if ! grep -q "OS_PROJECT_ID" ./overcloudrc;then + project_id=\$(openstack project list |grep admin|awk '{print \$2}') + echo "export OS_PROJECT_ID=\$project_id" >> ./overcloudrc +fi +if ! grep -q "OS_TENANT_NAME" ./overcloudrc;then + echo "export OS_TENANT_NAME=admin" >> ./overcloudrc +fi if [ "${deploy_options_array['dataplane']}" == 'fdio' ] || [ "${deploy_options_array['dataplane']}" == 'ovs_dpdk' ]; then for flavor in \$(openstack flavor list -c Name -f value); do @@ -160,20 +161,6 @@ if [ "${deploy_options_array['congress']}" == 'True' ]; then fi -# Fix project_id and os_tenant_name not in overcloudrc -# Deprecated openstack client does not need project_id -# and os_tenant_name anymore but glance client and -# Rally in generall does need it. -# REMOVE when not needed in Rally/glance-client anymore. -if ! grep -q "OS_PROJECT_ID" ./overcloudrc;then - project_id=\$(openstack project list |grep admin|awk '{print \$2}') - echo "export OS_PROJECT_ID=\$project_id" >> ./overcloudrc -fi -if ! grep -q "OS_TENANT_NAME" ./overcloudrc;then - echo "export OS_TENANT_NAME=admin" >> ./overcloudrc -fi - - EOI # we need to restart neutron-server in Gluon deployments to allow the Gluon core diff --git a/lib/python/apex/inventory.py b/lib/python/apex/inventory.py index ce16ef41..2e08d3b9 100644 --- a/lib/python/apex/inventory.py +++ b/lib/python/apex/inventory.py @@ -43,6 +43,8 @@ class Inventory(dict): node['pm_password'] = node['ipmi_pass'] node['pm_user'] = node['ipmi_user'] node['mac'] = [node['mac_address']] + if 'cpus' in node: + node['cpu'] = node['cpus'] for i in ('ipmi_ip', 'ipmi_pass', 'ipmi_user', 'mac_address', 'disk_device'): diff --git a/lib/undercloud-functions.sh b/lib/undercloud-functions.sh index 0b13c8c8..a17036ac 100755 --- a/lib/undercloud-functions.sh +++ b/lib/undercloud-functions.sh @@ -11,6 +11,7 @@ ##verify vm exists, an has a dhcp lease assigned to it ##params: none function setup_undercloud_vm { + local libvirt_imgs=/var/lib/libvirt/images if ! virsh list --all | grep undercloud > /dev/null; then undercloud_nets="default admin" if [[ $enabled_network_list =~ "external" ]]; then @@ -27,17 +28,18 @@ function setup_undercloud_vm { #error: internal error: received hangup / error event on socket #error: Reconnected to the hypervisor - local undercloud_dst=/var/lib/libvirt/images/undercloud.qcow2 - cp -f $IMAGES/undercloud.qcow2 $undercloud_dst + cp -f $IMAGES/undercloud.qcow2 $libvirt_imgs/undercloud.qcow2 + cp -f $IMAGES/overcloud-full.vmlinuz $libvirt_imgs/overcloud-full.vmlinuz + cp -f $IMAGES/overcloud-full.initrd $libvirt_imgs/overcloud-full.initrd # resize Undercloud machine echo "Checking if Undercloud needs to be resized..." - undercloud_size=$(LIBGUESTFS_BACKEND=direct virt-filesystems --long -h --all -a $undercloud_dst |grep device | grep -Eo "[0-9\.]+G" | sed -n 's/\([0-9][0-9]*\).*/\1/p') + undercloud_size=$(LIBGUESTFS_BACKEND=direct virt-filesystems --long -h --all -a $libvirt_imgs/undercloud.qcow2 |grep device | grep -Eo "[0-9\.]+G" | sed -n 's/\([0-9][0-9]*\).*/\1/p') if [ "$undercloud_size" -lt 30 ]; then qemu-img resize /var/lib/libvirt/images/undercloud.qcow2 +25G - LIBGUESTFS_BACKEND=direct virt-resize --expand /dev/sda1 $IMAGES/undercloud.qcow2 $undercloud_dst - LIBGUESTFS_BACKEND=direct virt-customize -a $undercloud_dst --run-command 'xfs_growfs -d /dev/sda1 || true' - new_size=$(LIBGUESTFS_BACKEND=direct virt-filesystems --long -h --all -a $undercloud_dst |grep filesystem | grep -Eo "[0-9\.]+G" | sed -n 's/\([0-9][0-9]*\).*/\1/p') + LIBGUESTFS_BACKEND=direct virt-resize --expand /dev/sda1 $IMAGES/undercloud.qcow2 $libvirt_imgs/undercloud.qcow2 + LIBGUESTFS_BACKEND=direct virt-customize -a $libvirt_imgs/undercloud.qcow2 --run-command 'xfs_growfs -d /dev/sda1 || true' + new_size=$(LIBGUESTFS_BACKEND=direct virt-filesystems --long -h --all -a $libvirt_imgs/undercloud.qcow2 |grep filesystem | grep -Eo "[0-9\.]+G" | sed -n 's/\([0-9][0-9]*\).*/\1/p') if [ "$new_size" -lt 30 ]; then echo "Error resizing Undercloud machine, disk size is ${new_size}" exit 1 @@ -56,11 +58,11 @@ function setup_undercloud_vm { # if the VM is not running update the authkeys and start it if ! virsh list | grep undercloud > /dev/null; then if [ "$debug" == 'TRUE' ]; then - LIBGUESTFS_BACKEND=direct virt-customize -a $undercloud_dst --root-password password:opnfvapex + LIBGUESTFS_BACKEND=direct virt-customize -a $libvirt_imgs/undercloud.qcow2 --root-password password:opnfvapex fi echo "Injecting ssh key to Undercloud VM" - LIBGUESTFS_BACKEND=direct virt-customize -a $undercloud_dst --run-command "mkdir -p /root/.ssh/" \ + LIBGUESTFS_BACKEND=direct virt-customize -a $libvirt_imgs/undercloud.qcow2 --run-command "mkdir -p /root/.ssh/" \ --upload ~/.ssh/id_rsa.pub:/root/.ssh/authorized_keys \ --run-command "chmod 600 /root/.ssh/authorized_keys && restorecon /root/.ssh/authorized_keys" \ --run-command "cp /root/.ssh/authorized_keys /home/stack/.ssh/" \ @@ -115,6 +117,9 @@ function setup_undercloud_vm { echo -e "${blue}\r ${reset}" sleep 1 + # ensure stack user on Undercloud machine has an ssh key + ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" "if [ ! -e ~/.ssh/id_rsa.pub ]; then ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa; fi" + # ssh key fix for stack user ssh -T ${SSH_OPTIONS[@]} "root@$UNDERCLOUD" "restorecon -r /home/stack" } @@ -163,47 +168,13 @@ $compute_nic_template EOF EOI - # ensure stack user on Undercloud machine has an ssh key - ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" "if [ ! -e ~/.ssh/id_rsa.pub ]; then ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa; fi" - - if [ "$virtual" == "TRUE" ]; then - - # copy the Undercloud VM's stack user's pub key to - # root's auth keys so that Undercloud can control - # vm power on the hypervisor - ssh ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" "cat /home/stack/.ssh/id_rsa.pub" >> /root/.ssh/authorized_keys - fi - - # allow stack to control power management on the hypervisor via sshkey - # only if this is a virtual deployment - if [ "$virtual" == "TRUE" ]; then - ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <> ~/.ssh/authorized_keys - # disable requiretty for sudo ssh -T ${SSH_OPTIONS[@]} "root@$UNDERCLOUD" "sed -i 's/Defaults\s*requiretty//'" /etc/sudoers # configure undercloud on Undercloud VM - echo "Running undercloud configuration." - echo "Logging undercloud configuration to undercloud:/home/stack/apex-undercloud-install.log" + echo "Running undercloud installation and configuration." + echo "Logging undercloud installation to stack@undercloud:/home/stack/apex-undercloud-install.log" ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" << EOI -sed -i 's/#local_ip/local_ip/' undercloud.conf -sed -i 's/#network_gateway/network_gateway/' undercloud.conf -sed -i 's/#network_cidr/network_cidr/' undercloud.conf -sed -i 's/#dhcp_start/dhcp_start/' undercloud.conf -sed -i 's/#dhcp_end/dhcp_end/' undercloud.conf -sed -i 's/#inspection_iprange/inspection_iprange/' undercloud.conf -sed -i 's/#undercloud_debug/undercloud_debug/' undercloud.conf - openstack-config --set undercloud.conf DEFAULT local_ip ${admin_installer_vm_ip}/${admin_cidr##*/} openstack-config --set undercloud.conf DEFAULT network_gateway ${admin_installer_vm_ip} openstack-config --set undercloud.conf DEFAULT network_cidr ${admin_cidr} @@ -213,6 +184,7 @@ openstack-config --set undercloud.conf DEFAULT inspection_iprange ${admin_intros openstack-config --set undercloud.conf DEFAULT undercloud_debug false openstack-config --set undercloud.conf DEFAULT undercloud_hostname "undercloud.${domain_name}" openstack-config --set undercloud.conf DEFAULT enable_ui false +openstack-config --set undercloud.conf DEFAULT undercloud_update_packages false sudo openstack-config --set /etc/ironic/ironic.conf disk_utils iscsi_verify_attempts 30 sudo openstack-config --set /etc/ironic/ironic.conf disk_partitioner check_device_max_retries 40 @@ -224,14 +196,12 @@ sudo sed -i '/CephClusterFSID:/c\\ CephClusterFSID: \\x27$(cat /proc/sys/kernel sudo sed -i '/CephMonKey:/c\\ CephMonKey: \\x27'"\$(ceph-authtool --gen-print-key)"'\\x27' /usr/share/openstack-tripleo-heat-templates/environments/storage-environment.yaml sudo sed -i '/CephAdminKey:/c\\ CephAdminKey: \\x27'"\$(ceph-authtool --gen-print-key)"'\\x27' /usr/share/openstack-tripleo-heat-templates/environments/storage-environment.yaml -# we assume that packages will not need to be updated with undercloud install -# and that it will be used only to configure the undercloud -# packages updates would need to be handled manually with yum update -sudo cp -f /usr/share/diskimage-builder/elements/yum/bin/install-packages /usr/share/diskimage-builder/elements/yum/bin/install-packages.bak -cat << 'EOF' | sudo tee /usr/share/diskimage-builder/elements/yum/bin/install-packages > /dev/null -#!/bin/sh -exit 0 -EOF +##### +# TEMP WORKAROUND, REMOVE WHEN SNAPS SUPPORTS GLANCE API v2 +# JIRA: SNAPS-66 +##### +sudo sed -i '/glance::api::enable_v1_api/ s/false/true/' -i /usr/share/openstack-tripleo-heat-templates/puppet/services/glance-api.yaml + openstack undercloud install &> apex-undercloud-install.log || { # cat the undercloud install log incase it fails @@ -240,8 +210,6 @@ openstack undercloud install &> apex-undercloud-install.log || { exit 1 } -sleep 30 -sudo systemctl restart openstack-glance-api # Set nova domain name sudo openstack-config --set /etc/nova/nova.conf DEFAULT dns_domain ${domain_name} sudo openstack-config --set /etc/nova/nova.conf DEFAULT dhcp_domain ${domain_name} @@ -254,11 +222,6 @@ sudo systemctl restart openstack-nova-scheduler sudo openstack-config --set /etc/neutron/neutron.conf DEFAULT dns_domain ${domain_name} sudo systemctl restart neutron-server sudo systemctl restart neutron-dhcp-agent - -sudo sed -i '/num_engine_workers/c\num_engine_workers = 2' /etc/heat/heat.conf -sudo sed -i '/#workers\s=/c\workers = 2' /etc/heat/heat.conf -sudo systemctl restart openstack-heat-engine -sudo systemctl restart openstack-heat-api EOI # configure external network @@ -286,10 +249,4 @@ fi EOI fi -# WORKAROUND: must restart the above services to fix sync problem with nova compute manager -# TODO: revisit and file a bug if necessary. This should eventually be removed -# as well as glance api problem -echo -e "${blue}INFO: Sleeping 15 seconds while services come back from restart${reset}" -sleep 15 - } diff --git a/lib/virtual-setup-functions.sh b/lib/virtual-setup-functions.sh index c74a374b..ac7b507b 100755 --- a/lib/virtual-setup-functions.sh +++ b/lib/virtual-setup-functions.sh @@ -74,23 +74,26 @@ EOF node${i}: mac_address: "$mac" ipmi_ip: 192.168.122.1 - ipmi_user: root - ipmi_pass: "INSERT_STACK_USER_PRIV_KEY" - pm_type: "pxe_ssh" - cpus: $vcpus + ipmi_user: admin + ipmi_pass: "password" + pm_type: "pxe_ipmitool" + pm_port: "623$i" + cpu: $vcpus memory: $ramsize disk: 41 arch: "x86_64" capabilities: "$capability" EOF + vbmc add baremetal$i --port 623$i + if service firewalld status > /dev/null; then + firewall-cmd --permanent --zone=public --add-port=623$i/udp + fi + # TODO: add iptables check and commands too + vbmc start baremetal$i done - - #Overwrite the tripleo-inclubator domain.xml with our own, keeping a backup. - if [ ! -f /usr/share/tripleo/templates/domain.xml.bak ]; then - /usr/bin/mv -f /usr/share/tripleo/templates/domain.xml /usr/share/tripleo/templates/domain.xml.bak + if service firewalld status > /dev/null; then + firewall-cmd --reload fi - - /usr/bin/cp -f $LIB/installer/domain.xml /usr/share/tripleo/templates/domain.xml } ##Create virtual nodes in virsh @@ -101,7 +104,7 @@ EOF ## vcpus - Number of VCPUs to use (defaults to 4) ## ramsize - Size of RAM for VM in MB (defaults to 8192) function define_vm () { - local vcpus ramsize + local vcpus ramsize volume_path direct_boot kernel_args if [ -z "$5" ]; then vcpus=4 @@ -129,14 +132,23 @@ function define_vm () { exit 1 fi + # undercloud need to be direct booted. + # the upstream image no longer includes the kernel and initrd + if [ "$1" == 'undercloud' ]; then + direct_boot='--direct-boot overcloud-full' + kernel_args='--kernel-arg console=ttyS0 --kernel-arg root=/dev/sda' + fi + # create the VM - /usr/libexec/openstack-tripleo/configure-vm --name $1 \ - --bootdev $2 \ - --image "$volume_path" \ - --diskbus sata \ - --arch x86_64 \ - --cpus $vcpus \ - --memory $ramsize \ - --libvirt-nic-driver virtio \ - --baremetal-interface $4 + $LIB/configure-vm --name $1 \ + --bootdev $2 \ + --image "$volume_path" \ + --diskbus sata \ + --arch $(uname -i) \ + --cpus $vcpus \ + --memory $ramsize \ + --libvirt-nic-driver virtio \ + $direct_boot \ + $kernel_args \ + --baremetal-interface $4 } -- cgit 1.2.3-korg