Updating Apex to OpenStack Ocata 91/33091/48
authorDan Radez <dradez@redhat.com>
Fri, 31 Mar 2017 03:03:43 +0000 (23:03 -0400)
committerDan Radez <dradez@redhat.com>
Tue, 9 May 2017 19:09:42 +0000 (15:09 -0400)
- 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 <dradez@redhat.com>
43 files changed:
build/Makefile
build/cache.sh
build/functions.sh
build/opnfv-environment.yaml
build/overcloud-full.sh
build/overcloud-opendaylight.sh
build/patches/0001-Removes-doing-yum-update.patch [deleted file]
build/patches/puppet-neutron-add-odl-settings.patch [deleted file]
build/patches/puppet-neutron-vpp-ml2.patch [deleted file]
build/rpm_specs/openstack-congress-server.service [deleted file]
build/rpm_specs/openstack-congress.spec [deleted file]
build/rpm_specs/openstack-tacker-server.service [deleted file]
build/rpm_specs/openstack-tacker.spec [deleted file]
build/rpm_specs/opnfv-apex-common.spec
build/rpm_specs/opnfv-apex-release.spec
build/rpm_specs/opnfv-apex-undercloud.spec
build/rpm_specs/python-tackerclient.spec [deleted file]
build/undercloud.sh
build/variables.sh
ci/PR_revision.log
ci/build.sh
ci/clean.sh
ci/dev_dep_check.sh
ci/test.sh
config/deploy/deploy_settings.yaml
config/deploy/os-odl-bgpvpn-ha.yaml
config/deploy/os-odl-bgpvpn-noha.yaml
config/deploy/os-odl-csit-noha.yaml
config/deploy/os-odl-gluon-noha.yaml
config/deploy/os-odl-nofeature-ha.yaml
config/deploy/os-odl-nofeature-noha.yaml
config/deploy/os-odl-ovs_dpdk-ha.yaml
config/deploy/os-odl-ovs_dpdk-noha.yaml
config/deploy/os-odl_l2-sfc-noha.yaml
config/yum.repos.d/opnfv-apex.repo
lib/configure-deps-functions.sh
lib/configure-vm [new file with mode: 0755]
lib/installer/domain.xml
lib/overcloud-deploy-functions.sh
lib/post-install-functions.sh
lib/python/apex/inventory.py
lib/undercloud-functions.sh
lib/virtual-setup-functions.sh

index ed98325..2df4142 100644 (file)
@@ -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
index 4c530b0..17f0db2 100644 (file)
@@ -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"
index 7ace4b0..becc0df 100644 (file)
@@ -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
index 8eeb126..6289e2d 100644 (file)
@@ -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
index 9ecb1c3..c03ae2c 100755 (executable)
@@ -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
index d61c1f2..bacf536 100755 (executable)
@@ -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 (file)
index 86e6ea3..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-From d04e8f730de074bafefea4c105a8270100efd9c1 Mon Sep 17 00:00:00 2001
-From: Tim Rozet <tdrozet@gmail.com>
-Date: Wed, 25 Jan 2017 09:53:17 -0500
-Subject: [PATCH] Removes doing yum update
-
-Signed-off-by: Tim Rozet <tdrozet@gmail.com>
----
- 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 (file)
index aa0b35a..0000000
+++ /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 (file)
index 5e1313f..0000000
+++ /dev/null
@@ -1,244 +0,0 @@
-From 72afc22fbba73fdb474bd6e5c1c47ab31219a9b9 Mon Sep 17 00:00:00 2001
-From: Feng Pan <fpan@redhat.com>
-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('<SERVICE DEFAULT>')
-+  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 <physical_network>:<physical_interface>
-+#   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 (file)
index 20c3a67..0000000
+++ /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 (file)
index 2121193..0000000
+++ /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 (file)
index 9bf16cd..0000000
+++ /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 (file)
index 0ec4d51..0000000
+++ /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 <dradez@redhat.com> - 2016.2-1
-- Version update for Newton
-
-* Mon Jul 25 2016 Tim Rozet <trozet@redhat.com> - 2015.2-1
-- Initial Commit
index 13a0481..541c1fe 100644 (file)
@@ -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 <dradez@redhat.com> - 5.0-2
+- adding configure-vm
 * Tue Apr 04 2017 Dan Radez <dradez@redhat.com> - 5.0-1
 - Version update for Euphrates
 - rename to ovs_dpdk
index 1be58a1..5f84a4f 100644 (file)
@@ -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
index 55a614d..93fc6e0 100644 (file)
@@ -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 (file)
index 5758f7c..0000000
+++ /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 <dradez@redhat.com> - 2016.2-1
-- Version update for Newton
-
-* Mon Jul 25 2016 Tim Rozet <trozet@redhat.com> - 2015.2-1
-- Initial Commit
index 6d8937f..8d82bca 100755 (executable)
@@ -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
index a496608..9d85e7a 100644 (file)
@@ -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)}')
index 58f3eda..3d7cc2d 100644 (file)
@@ -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
index 3531a65..31d7ba6 100755 (executable)
@@ -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
index 4335b82..bd48c0d 100755 (executable)
@@ -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
index 6d0aa11..71cea22 100755 (executable)
@@ -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..."
index 4f8a042..3e538ff 100755 (executable)
@@ -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..."
index aedd197..3186a5d 100644 (file)
@@ -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.
index ef51e73..76d051e 100644 (file)
@@ -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
index 7812d05..d569ba6 100644 (file)
@@ -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
index ad61e26..d5e2695 100644 (file)
@@ -3,7 +3,7 @@ global_params:
 
 deploy_options:
   sdn_controller: opendaylight
-  odl_version: boron
+  odl_version: carbon
   sdn_l3: true
   tacker: false
   congress: false
index cdeb90c..12e5d25 100644 (file)
@@ -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
index d421c7c..64af606 100644 (file)
@@ -3,7 +3,7 @@ global_params:
 
 deploy_options:
   sdn_controller: opendaylight
-  odl_version: boron
+  odl_version: carbon
   sdn_l3: true
   tacker: true
   congress: true
index 972b1f8..d95ed9c 100644 (file)
@@ -3,7 +3,7 @@ global_params:
 
 deploy_options:
   sdn_controller: opendaylight
-  odl_version: boron
+  odl_version: carbon
   sdn_l3: true
   tacker: true
   congress: true
index ad26569..8e3674a 100644 (file)
@@ -3,7 +3,7 @@ global_params:
 
 deploy_options:
   sdn_controller: opendaylight
-  odl_version: boron
+  odl_version: carbon
   sdn_l3: true
   tacker: true
   congress: true
index 6f7630d..1711fc6 100644 (file)
@@ -3,7 +3,7 @@ global_params:
 
 deploy_options:
   sdn_controller: opendaylight
-  odl_version: boron
+  odl_version: carbon
   sdn_l3: true
   tacker: true
   congress: true
index fa9a786..4423b17 100644 (file)
@@ -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
index aff0942..21e7e16 100644 (file)
@@ -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
index 3c82c66..3290001 100755 (executable)
@@ -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 (executable)
index 0000000..340a7ab
--- /dev/null
@@ -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 <value>.{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'] = """
+      <interface type='bridge'>
+        <source bridge='%(ovsbridge)s'/>
+        <virtualport type='openvswitch'/>
+        <model type='%(nicdriver)s'/>
+      </interface>""" % nicparams
+        else:
+            params['network'] = """
+      <!-- regular natted network, for access to the vm -->
+      <interface type='network'>
+        <source network='default'/>
+        <model type='%(nicdriver)s'/>
+      </interface>""" % 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'] += """
+          <!-- bridged 'bare metal' network on %(bminterface)s -->
+          <interface type='network'>
+            <mac address='%(bmmacaddress)s'/>
+            <source network='%(bminterface)s'/>
+            <model type='%(nicdriver)s'/>
+          </interface>""" % bm_interface_params
+
+    if args.enable_serial_console:
+        params['enable_serial_console'] = """
+        <serial type='pty'>
+          <target port='0'/>
+        </serial>
+        <console type='pty'>
+          <target type='serial' port='0'/>
+        </console>
+        """
+    if args.direct_boot:
+        params['direct_boot'] = """
+        <kernel>/var/lib/libvirt/images/%(direct_boot)s.vmlinuz</kernel>
+        <initrd>/var/lib/libvirt/images/%(direct_boot)s.initrd</initrd>
+        """ % { 'direct_boot': args.direct_boot }
+    if args.kernel_args:
+        params['kernel_args'] = """
+        <cmdline>%s</cmdline>
+        """ % ' '.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()
index c710e56..ead0de6 100644 (file)
@@ -7,6 +7,8 @@
     <type arch='%(arch)s'>hvm</type>
     <boot dev='%(bootdev)s'/>
     <bootmenu enable='no'/>
+    %(direct_boot)s
+    %(kernel_args)s
   </os>
   <features>
     <acpi/>
index e5f9134..f26a72a 100755 (executable)
@@ -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" <<EOI
-      LIBGUESTFS_BACKEND=direct virt-customize --run-command "yum -y remove opendaylight" \
-                                               --run-command "yum -y install /root/${odl_version}/*" \
-                                               -a overcloud-full.qcow2
+    if [[  -n "$odl_version" ]]; then
+        ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
+          LIBGUESTFS_BACKEND=direct virt-customize --run-command "yum -y remove opendaylight" \
+                                                   --run-command "yum -y install /root/${odl_version}/*" \
+                                                   -a overcloud-full.qcow2
 EOI
+    fi
   fi
 
   # Override ODL if we enable netvirt for fdio
@@ -333,6 +331,9 @@ EOI
   DEPLOY_OPTIONS+=" --control-flavor control --compute-flavor compute"
   if [[ "$virtual" == "TRUE" ]]; then
      DEPLOY_OPTIONS+=" -e virtual-environment.yaml"
+     # double check the status of the vbmc devices
+     # TODO add some validation logic here
+     vbmc list
   fi
 
   echo -e "${blue}INFO: Deploy options set:\n${DEPLOY_OPTIONS}${reset}"
@@ -356,33 +357,25 @@ echo "Uploading overcloud glance images"
 openstack overcloud image upload
 
 echo "Configuring undercloud and discovering nodes"
-openstack baremetal import --json instackenv.json
+
 
 if [[ -z "$virtual" ]]; then
-  openstack baremetal introspection bulk start
-  if [[ -n "$root_disk_list" ]]; then
-    openstack baremetal configure boot --root-device=${root_disk_list}
-  else
-    openstack baremetal configure boot
-  fi
+  openstack overcloud node import instackenv.json
+  openstack overcloud node introspect --all-manageable --provide
+  #if [[ -n "$root_disk_list" ]]; then
+    # TODO: replace node configure boot with ironic node-update
+    # TODO: configure boot is not used in ocata here anymore
+    #openstack overcloud node configure boot --root-device=${root_disk_list}
+    #https://github.com/openstack/tripleo-quickstart-extras/blob/master/roles/overcloud-prep-images/templates/overcloud-prep-images.sh.j2#L73-L130
+    #ironic node-update $ironic_node add properties/root_device='{"{{ node['key'] }}": "{{ node['value'] }}"}'
+  #fi
 else
-  openstack baremetal configure boot
+  openstack overcloud node import --provide instackenv.json
 fi
 
-echo "Configuring flavors"
-for flavor in baremetal control compute; do
-  echo -e "${blue}INFO: Updating flavor: \${flavor}${reset}"
-  if openstack flavor list | grep \${flavor}; then
-    openstack flavor delete \${flavor}
-  fi
-  openstack flavor create --id auto --ram 4096 --disk 39 --vcpus 1 \${flavor}
-  if ! openstack flavor list | grep \${flavor}; then
-    echo -e "${red}ERROR: Unable to create flavor \${flavor}${reset}"
-  fi
-done
-openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" baremetal
-openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" --property "capabilities:profile"="control" control
-openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" --property "capabilities:profile"="compute" compute
+openstack flavor set --property "cpu_arch"="x86_64" baremetal
+openstack flavor set --property "cpu_arch"="x86_64" control
+openstack flavor set --property "cpu_arch"="x86_64" compute
 echo "Configuring nameserver on ctlplane network"
 dns_server_ext=''
 for dns_server in ${dns_servers}; do
@@ -390,7 +383,7 @@ for dns_server in ${dns_servers}; do
 done
 neutron subnet-update \$(neutron subnet-list | grep -Ev "id|tenant|external|storage" | grep -v \\\\-\\\\- | awk {'print \$2'}) \${dns_server_ext}
 sed -i '/CloudDomain:/c\  CloudDomain: '${domain_name} ${ENV_FILE}
-echo "Executing overcloud deployment, this should run for an extended period without output."
+echo "Executing overcloud deployment, this could run for an extended period without output."
 sleep 60 #wait for Hypervisor stats to check-in to nova
 # save deploy command so it can be used for debugging
 cat > deploy_command << EOF
index a93ad54..7678b0d 100755 (executable)
@@ -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
index ce16ef4..2e08d3b 100644 (file)
@@ -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'):
index 0b13c8c..a17036a 100755 (executable)
@@ -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" <<EOI
-while read -r line; do
-  stack_key=\${stack_key}\\\\\\\\n\${line}
-done < <(cat ~/.ssh/id_rsa)
-stack_key=\$(echo \$stack_key | sed 's/\\\\\\\\n//')
-sed -i 's~INSERT_STACK_USER_PRIV_KEY~'"\$stack_key"'~' instackenv.json
-EOI
-  fi
-
-  # copy stack's ssh key to this users authorized keys
-  ssh -T ${SSH_OPTIONS[@]} "root@$UNDERCLOUD" "cat /home/stack/.ssh/id_rsa.pub" >> ~/.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
-
 }
index c74a374..ac7b507 100755 (executable)
@@ -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
 }