Merge "Adds configuring vpp/hc on all nodes"
authorTim Rozet <trozet@redhat.com>
Wed, 3 Aug 2016 19:23:14 +0000 (19:23 +0000)
committerGerrit Code Review <gerrit@172.30.200.206>
Wed, 3 Aug 2016 19:23:14 +0000 (19:23 +0000)
32 files changed:
build/Makefile
build/network-environment.yaml
build/openstack-congress.spec [new file with mode: 0755]
build/openstack-tacker.spec [new file with mode: 0644]
build/opnfv-environment.yaml
build/overcloud-full.sh
build/overcloud-onos.sh
build/overcloud-opendaylight-sfc.sh
build/variables.sh
ci/PR_revision.log
ci/dev_deploy_check.sh
config/deploy/os-nosdn-nofeature-ha.yaml
config/deploy/os-nosdn-nofeature-noha.yaml
config/deploy/os-nosdn-ovs-ha.yaml
config/deploy/os-nosdn-ovs-noha.yaml
config/deploy/os-nosdn-performance-ha.yaml
config/deploy/os-ocl-nofeature-ha.yaml
config/deploy/os-odl_l2-bgpvpn-ha.yaml
config/deploy/os-odl_l2-fdio-ha.yaml
config/deploy/os-odl_l2-fdio-noha.yaml
config/deploy/os-odl_l2-nofeature-ha.yaml
config/deploy/os-odl_l2-sdnvpn-ha.yaml
config/deploy/os-odl_l2-sfc-noha.yaml
config/deploy/os-odl_l3-nofeature-ha.yaml
config/deploy/os-onos-nofeature-ha.yaml
config/deploy/os-onos-sfc-ha.yaml
config/network/network_settings_v6.yaml
lib/common-functions.sh
lib/overcloud-deploy-functions.sh
lib/post-install-functions.sh
lib/python/apex/network_settings.py
lib/virtual-setup-functions.sh

index 8430561..96711d2 100644 (file)
@@ -27,7 +27,7 @@ all_networks="admin_network private_network storage_network external_network api
 all: iso
 
 .PHONY: clean
-clean: images-clean rpms-clean iso-clean
+clean: images-clean rpms-clean iso-clean tacker-clean congress-clean
 
 .PHONY: images
 images: undercloud overcloud-full overcloud-opendaylight overcloud-onos overcloud-opendaylight-sfc
@@ -84,6 +84,51 @@ python-pep8-check:
        pep8 ../lib/python
        pep8 ../tests
 
+###############
+#  TACKER     #
+###############
+
+.PHONY: tacker-clean
+
+tacker-clean:
+       @rm -rf openstack-tacker-2015.2
+       @rm -f openstack-tacker.tar.gz
+
+openstack-tacker.tar.gz:
+       @echo "Preparing the Tacker RPM prerequisites"
+       git clone http://github.com/trozet/tacker -b SFC_colorado openstack-tacker-2015.2
+       tar czf openstack-tacker.tar.gz openstack-tacker-2015.2
+
+.PHONY: tacker-rpm
+tacker-rpm: openstack-tacker.tar.gz openstack-tacker-2015.2-1.noarch.rpm
+
+openstack-tacker-2015.2-1.noarch.rpm:
+       @echo "Building the Tacker RPM"
+       rpmbuild --clean -bb --target noarch openstack-tacker.spec -D '_topdir %(echo `pwd`)' -D '_builddir %(echo `pwd`)' -D '_sourcedir %(echo `pwd`)' -D '_rpmdir %(echo `pwd`)' -D '_specdir %(echo `pwd`)' -D '_srcrpmdir %(echo `pwd`)'
+
+###############
+#  CONGRESS   #
+###############
+
+.PHONY: congress-clean
+
+congress-clean:
+       @rm -rf openstack-congress-2016.1
+       @rm -f openstack-congress.tar.gz
+
+openstack-congress.tar.gz:
+       @echo "Preparing the Congress RPM prerequisites"
+       git clone http://github.com/openstack/congress -b stable/mitaka openstack-congress-2016.1
+       cd openstack-congress-2016.1 && curl -O https://radez.fedorapeople.org/openstack-congress.service
+       tar czf openstack-congress.tar.gz openstack-congress-2016.1
+
+.PHONY: congress-rpm
+congress-rpm: openstack-congress.tar.gz openstack-congress-2016.1-1.noarch.rpm
+
+openstack-congress-2016.1-1.noarch.rpm:
+       @echo "Building the Congress RPM"
+       rpmbuild --clean -bb --target noarch openstack-congress.spec -D '_topdir %(echo `pwd`)' -D '_builddir %(echo `pwd`)' -D '_sourcedir %(echo `pwd`)' -D '_rpmdir %(echo `pwd`)' -D '_specdir %(echo `pwd`)' -D '_srcrpmdir %(echo `pwd`)'
+
 ###############
 #  UNDERCLOUD #
 ###############
@@ -129,7 +174,7 @@ overcloud-full-clean:
 .PHONY: overcloud-full
 overcloud-full: images/overcloud-full.qcow2
 
-images/overcloud-full.qcow2:
+images/overcloud-full.qcow2: tacker-rpm congress-rpm
        @echo "Building the Apex Base Overcloud Image"
        @./overcloud-full.sh
 
index bbd0796..8b5b070 100644 (file)
@@ -81,6 +81,7 @@ parameters:
     SwiftMgmtNetwork: storage
     SwiftProxyNetwork: storage
     TackerApiNetwork: internal_api
+    CongressApiNetwork: internal_api
     HorizonNetwork: internal_api
     MemcachedNetwork: internal_api
     RabbitMqNetwork: internal_api
diff --git a/build/openstack-congress.spec b/build/openstack-congress.spec
new file mode 100755 (executable)
index 0000000..0dd3491
--- /dev/null
@@ -0,0 +1,80 @@
+%define debug_package %{nil}
+
+Name:          openstack-congress
+Version:       2016.1
+Release:       1%{?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
+#Requires:     pbr>=0.8 Paste PasteDeploy>=1.5.0 Routes>=1.12.3!=2.0 anyjson>=0.3.3 argparse
+#Requires:     Babel>=1.3 eventlet>=0.16.1!=0.17.0 greenlet>=0.3.2 httplib2>=0.7.5 requests>=2.2.0!=2.4.0
+#Requires:     iso8601>=0.1.9 kombu>=2.5.0 netaddr>=0.7.12 SQLAlchemy<1.1.0>=0.9.7
+#Requires:     WebOb>=1.2.3 python-heatclient>=0.3.0 python-keystoneclient>=1.1.0 alembic>=0.7.2 six>=1.9.0
+#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
+OpenStack policy manager
+
+%prep
+#git archive --format=tar.gz --prefix=openstack-congress-%{version}/ HEAD > openstack-congress.tar.gz
+
+%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
+
+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 -egenconfig
+install etc/congress.conf.sample %{buildroot}/etc/congress/congress.conf
+
+install -p -D -m 644 openstack-congress.service %{buildroot}%{_unitdir}/openstack-congress.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
+
+%config /etc/congress/congress.conf
+/etc/congress/policy.json
+/etc/congress/api-paste.ini
+/bin/congress-server
+/bin/congress-db-manage
+%{_unitdir}/openstack-congress.service
+/usr/lib/python2.7/site-packages/congress/*
+/usr/lib/python2.7/site-packages/congress-*
+/usr/lib/python2.7/site-packages/congress_tempest_tests/*
+/usr/lib/python2.7/site-packages/antlr3runtime/*
+%dir %attr(0750, congress, root) %{_localstatedir}/log/congress
+
+%changelog
+
diff --git a/build/openstack-tacker.spec b/build/openstack-tacker.spec
new file mode 100644 (file)
index 0000000..ca5ccd9
--- /dev/null
@@ -0,0 +1,74 @@
+%define debug_package %{nil}
+
+Name:   openstack-tacker
+Version:  2015.2
+Release:  1
+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
+#Requires:  pbr>=0.8 Paste PasteDeploy>=1.5.0 Routes>=1.12.3!=2.0 anyjson>=0.3.3 argparse
+#Requires:  Babel>=1.3 eventlet>=0.16.1!=0.17.0 greenlet>=0.3.2 httplib2>=0.7.5 requests>=2.2.0!=2.4.0
+#Requires:  iso8601>=0.1.9 kombu>=2.5.0 netaddr>=0.7.12 SQLAlchemy<1.1.0>=0.9.7
+#Requires:  WebOb>=1.2.3 python-heatclient>=0.3.0 python-keystoneclient>=1.1.0 alembic>=0.7.2 six>=1.9.0
+#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
+OpenStack servicevm/device manager
+
+%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
+#remove tests
+rm -rf %{buildroot}/usr/lib/python2.7/site-packages/tacker/tests
+
+install -p -D -m 644 apex/systemd/openstack-tacker.service %{buildroot}%{_unitdir}/openstack-tacker.service
+
+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
+
+%preun
+%systemd_preun openstack-tacker
+
+%postun
+%systemd_postun_with_restart openstack-tacker
+
+%files
+/bin/tacker-server
+/bin/tacker-db-manage
+/bin/tacker-rootwrap
+/etc/init.d/tacker-server
+%{_unitdir}/openstack-tacker.service
+/etc/rootwrap.d/servicevm.filters
+%config(noreplace) %attr(-, root, tacker) %{_sysconfdir}/tacker/*
+/usr/lib/python2.7/site-packages/tacker/*
+/usr/lib/python2.7/site-packages/tacker-*
+%dir %attr(0750, tacker, root) %{_localstatedir}/cache/tacker
+%dir %attr(0750, tacker, root) %{_sharedstatedir}/tacker
+%dir %attr(0750, tacker, root) %{_localstatedir}/log/tacker
+
+%changelog
index 61915c9..4f9fd98 100644 (file)
@@ -8,9 +8,15 @@ parameters:
   ControllerEnableSwiftStorage: false
 #  CloudDomain:
   EnableSahara: false
-  EnableTacker: false
+  EnableTacker: true
   ExtraConfig:
     tripleo::ringbuilder::build_ring: False
+    nova::nova_public_key:
+      type: 'ssh-rsa'
+      replace_public_key:
+    nova::nova_private_key:
+      type: 'ssh-rsa'
+      replace_private_key:
     nova::policy::policies:
       nova-os_compute_api:servers:show:host_status:
         key: 'os_compute_api:servers:show:host_status'
index 7eb22d1..6a72705 100755 (executable)
@@ -13,7 +13,6 @@ source ./variables.sh
 source ./functions.sh
 
 populate_cache "$rdo_images_uri/overcloud-full.tar"
-populate_cache "$openstack_congress"
 
 if [ ! -d images/ ]; then mkdir images; fi
 tar -xf cache/overcloud-full.tar -C images/
@@ -53,7 +52,7 @@ done
 
 # tar up the congress puppet module
 rm -rf puppet-congress
-git clone https://github.com/radez/puppet-congress
+git clone -b stable/mitaka https://github.com/radez/puppet-congress
 pushd puppet-congress > /dev/null
 git archive --format=tar.gz --prefix=congress/ origin/stable/mitaka > ../puppet-congress.tar.gz
 popd > /dev/null
@@ -89,7 +88,8 @@ tar czf vsperf.tar.gz vsperf
 
 # tar up the tacker puppet module
 rm -rf puppet-tacker
-git clone https://github.com/radez/puppet-tacker
+# TODO move this back to radez puppet-tacker after PR is accepted
+git clone -b fix_db_sync https://github.com/trozet/puppet-tacker
 pushd puppet-tacker > /dev/null
 git archive --format=tar.gz --prefix=tacker/ HEAD > ../puppet-tacker.tar.gz
 popd > /dev/null
@@ -120,7 +120,8 @@ LIBGUESTFS_BACKEND=direct virt-customize \
     --run-command "yum remove -y qemu-system-x86" \
     --upload ../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" \
-    --install "$openstack_congress" \
+    --upload ../noarch/openstack-congress-2016.1-1.el7.centos.noarch.rpm:/root/ \
+    --install /root/openstack-congress-2016.1-1.el7.centos.noarch.rpm \
     --install "python2-congressclient" \
     --upload puppet-congress.tar.gz:/etc/puppet/modules/ \
     --run-command "cd /etc/puppet/modules/ && tar xzf puppet-congress.tar.gz" \
@@ -133,9 +134,12 @@ LIBGUESTFS_BACKEND=direct virt-customize \
     --upload vsperf.tar.gz:/var/opt \
     --run-command "cd /var/opt && tar xzf vsperf.tar.gz" \
     --upload /tmp/tacker.repo:/etc/yum.repos.d/ \
-    --install "openstack-tacker,python-tackerclient" \
+    --install "python-tackerclient" \
+    --upload ../noarch/openstack-tacker-2015.2-1.noarch.rpm:/root/ \
+    --install /root/openstack-tacker-2015.2-1.noarch.rpm \
     --upload puppet-tacker.tar.gz:/etc/puppet/modules/ \
     --run-command "cd /etc/puppet/modules/ && tar xzf puppet-tacker.tar.gz" \
+    --run-command "yum install -y https://dl.dropboxusercontent.com/u/7079970/rabbitmq-server-3.6.3-5.el7ost.noarch.rpm" \
     -a overcloud-full_build.qcow2
 
 mv -f overcloud-full_build.qcow2 overcloud-full.qcow2
index e13923d..4b8b135 100755 (executable)
@@ -19,8 +19,8 @@ cp -f overcloud-full.qcow2 overcloud-full-onos_build.qcow2
 #######################################
 
 # upgrade ovs into ovs 2.5.90 with NSH function
-curl -L -O ${onos_ovs_uri}/package_ovs_rpm_new.tar.gz
-tar -xzf package_ovs_rpm_new.tar.gz
+curl -L -O ${onos_ovs_uri}/package_ovs_rpm2.tar.gz
+tar -xzf package_ovs_rpm2.tar.gz
 LIBGUESTFS_BACKEND=direct virt-customize --upload ${ovs_kmod_rpm_name}:/root/ \
                                          --run-command "yum install -y /root/${ovs_kmod_rpm_name}" \
                                          --upload ${ovs_rpm_name}:/root/ \
index 5032ba0..7f8508a 100755 (executable)
@@ -20,8 +20,8 @@ cp -f overcloud-full-opendaylight.qcow2 overcloud-full-opendaylight-sfc_build.qc
 
 # upgrade ovs into ovs 2.5.90 with NSH function
 if ! [[ -f "$ovs_rpm_name"  &&  -f "$ovs_kmod_rpm_name" ]]; then
-  curl -L -O ${onos_ovs_uri}/package_ovs_rpm_new.tar.gz
-  tar -xzf package_ovs_rpm_new.tar.gz
+  curl -L -O ${onos_ovs_uri}/package_ovs_rpm2.tar.gz
+  tar -xzf package_ovs_rpm2.tar.gz
 fi
 
 LIBGUESTFS_BACKEND=direct virt-customize --upload ${ovs_kmod_rpm_name}:/root/ \
index 6632b52..134cc29 100644 (file)
@@ -12,9 +12,8 @@ rdo_images_uri=https://ci.centos.org/artifacts/rdo/images/mitaka/delorean/stable
 onos_release_uri=https://downloads.onosproject.org/nightly/
 onos_release_file=onos-1.6.0-rc2.tar.gz
 onos_jdk_uri=https://www.dropbox.com/s/qyujpib8zyhzeev
-onos_ovs_uri=https://www.dropbox.com/s/7rfr9l2qz3a36cc
-openstack_congress=https://radez.fedorapeople.org/openstack-congress-2016.1-1.fc24.noarch.rpm
-doctor_driver=https://raw.githubusercontent.com/muroi/congress/doctor-poc/congress/datasources/doctor_driver.py
+onos_ovs_uri=https://www.dropbox.com/s/2dyd8zyt2l6p586
+doctor_driver=https://raw.githubusercontent.com/openstack/congress/master/congress/datasources/doctor_driver.py
 
 dpdk_uri_base=http://artifacts.opnfv.org/ovsnfv
 dpdk_rpms=(
@@ -25,5 +24,5 @@ dpdk_rpms=(
 'ovs4opnfv-32930523-openvswitch-2.5.90-0.12032.gitc61e93d6.1.el7.centos.x86_64.rpm'
 )
 
-ovs_rpm_name=openvswitch-2.5.90-0.11974.gitc4623bb8.1.el7.centos.x86_64.rpm
+ovs_rpm_name=openvswitch-2.5.90-1.el7.centos.x86_64.rpm
 ovs_kmod_rpm_name=openvswitch-kmod-2.5.90-1.el7.centos.x86_64.rpm
index de684ef..fa978df 100644 (file)
@@ -16,3 +16,6 @@
 40,Move mongo to step 1
 42, congress typo
 44,Fixes nova host/ip bug
+43,Add support for live migration and resize
+41,Add pcs cleanup exec
+50,Fix rabbitmq ipv6 config
\ No newline at end of file
index 831ff1f..68a9ac2 100755 (executable)
@@ -45,3 +45,6 @@ done
 
 # 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
index 6e85fa2..286b516 100644 (file)
@@ -5,6 +5,6 @@ deploy_options:
   sdn_controller: false
   sdn_l3: false
   tacker: true
-  congress: false
+  congress: true
   sfc: false
   vpn: false
index cfdc5dd..2d1b44a 100644 (file)
@@ -5,6 +5,6 @@ deploy_options:
   sdn_controller: false
   sdn_l3: false
   tacker: true
-  congress: false
+  congress: true
   sfc: false
   vpn: false
index 739b3e3..11b093f 100644 (file)
@@ -5,7 +5,7 @@ deploy_options:
   sdn_controller: false
   sdn_l3: false
   tacker: true
-  congress: false
+  congress: true
   sfc: false
   vpn: false
   dataplane: ovs_dpdk
index 9cb783d..3082dcb 100644 (file)
@@ -5,7 +5,7 @@ deploy_options:
   sdn_controller: false
   sdn_l3: false
   tacker: true
-  congress: false
+  congress: true
   sfc: false
   vpn: false
   dataplane: ovs_dpdk
index c975e24..acbc1d3 100644 (file)
@@ -5,7 +5,7 @@ deploy_options:
   sdn_controller: false
   sdn_l3: false
   tacker: true
-  congress: false
+  congress: true
   sfc: false
   vpn: false
   vsperf: false
index 710a0be..4ad1ee2 100644 (file)
@@ -5,6 +5,6 @@ deploy_options:
   sdn_controller: opencontrail
   sdn_l3: false
   tacker: true
-  congress: false
+  congress: true
   sfc: false
   vpn: false
index 7350777..1d29c2b 100644 (file)
@@ -5,6 +5,6 @@ deploy_options:
   sdn_controller: opendaylight
   sdn_l3: false
   tacker: false
-  congress: false
+  congress: true
   sfc: false
   vpn: true
index c7a9d8e..c66b35b 100644 (file)
@@ -6,7 +6,7 @@ deploy_options:
   sdn_l3: false
   odl_version: boron
   tacker: true
-  congress: false
+  congress: true
   sfc: false
   vpn: false
   vpp: true
index ca09015..15942fd 100644 (file)
@@ -6,7 +6,7 @@ deploy_options:
   sdn_l3: false
   odl_version: boron
   tacker: true
-  congress: false
+  congress: true
   sfc: false
   vpn: false
   vpp: true
index e614fd4..4c88eeb 100644 (file)
@@ -6,6 +6,6 @@ deploy_options:
   sdn_l3: false
   odl_version: beryllium
   tacker: true
-  congress: false
+  congress: true
   sfc: false
   vpn: false
index ca35a0f..f6904f0 100644 (file)
@@ -5,6 +5,6 @@ deploy_options:
   sdn_controller: opendaylight
   sdn_l3: false
   tacker: true
-  congress: false
+  congress: true
   sfc: false
   vpn: true
index e8f3f98..fa9a786 100644 (file)
@@ -6,6 +6,6 @@ deploy_options:
   sdn_l3: false
   odl_version: boron
   tacker: true
-  congress: false
+  congress: true
   sfc: true
   vpn: false
index 4765045..e54f28b 100644 (file)
@@ -5,6 +5,6 @@ deploy_options:
   sdn_controller: opendaylight
   sdn_l3: true
   tacker: true
-  congress: false
+  congress: true
   sfc: false
   vpn: false
index 1de5229..0d083dd 100644 (file)
@@ -5,6 +5,6 @@ deploy_options:
   sdn_controller: onos
   sdn_l3: true
   tacker: true
-  congress: false
+  congress: true
   sfc: false
   vpn: false
index e0c8d9e..f0b7851 100644 (file)
@@ -5,6 +5,6 @@ deploy_options:
   sdn_controller: onos
   sdn_l3: true
   tacker: true
-  congress: false
+  congress: true
   sfc: true
   vpn: false
index 8ca5eac..dd2d066 100644 (file)
@@ -30,12 +30,15 @@ dns_servers: ["8.8.8.8", "8.8.4.4"]
 # network is used as the OpenStack management network which
 # carries e.g. communication between its internal components.
 # This network must be IPv4 currently.
+domain_name: 'opnfvapex.com'
 
 admin_network:
   enabled: true
   network_type: bridged
   bridged_interface: ''
   bond_interfaces: ''
+  compute_interface: nic1
+  controller_interface: nic1
   vlan: native
   usable_ip_range: 192.0.2.11,192.0.2.99
   gateway: 192.0.2.1
@@ -53,6 +56,11 @@ admin_network:
 private_network:
   enabled: true
   cidr: 11.0.0.0/24
+  vlan: native
+  cidr: 11.0.0.0/24
+  compute_interface: nic2
+  controller_interface: nic2
+
 
 # "public" network is used for external connectivity.
 # The external network provides Internet access for virtual
@@ -65,6 +73,9 @@ public_network:
   enabled: true
   network_type: ''
   bridged_interface: ''
+  compute_interface: nic3
+  controller_interface: nic3
+  vlan: native
   cidr: 2001:db8::/64
   gateway: 2001:db8::1
   provisioner_ip: 2001:db8::1
@@ -76,11 +87,18 @@ public_network:
 storage_network:
   enabled: true
   cidr: fd00:fd00:fd00:2000::/64
+  vlan: native
+  compute_interface: nic4
+  controller_interface: nic4
+
 
 # "api" is an optional network used by internal openstack api services.
 api_network:
   enabled: true
   cidr: fd00:fd00:fd00:4000::/64
+  vlan: native
+  compute_interface: nic5
+  controller_interface: nic5
 
 #public_network:
 #  enabled: true                                     #If disabled, public_network traffic will collapse to admin network
index 2ace997..6941093 100644 (file)
@@ -21,13 +21,19 @@ function prefix2mask {
 }
 
 ##find ip of interface
-##params: interface name
+##params: interface name, address family
 function find_ip {
+  local af
   if [[ -z "$1" ]]; then
     return 1
   fi
+  if [[ -z "$2" ]]; then
+    af=4
+  else
+    af=$2
+  fi
 
-  python3.4 -B $LIB/python/apex_python_utils.py find-ip -i $1
+  python3.4 -B $LIB/python/apex_python_utils.py find-ip -i $1 -af $af
 }
 
 ##attach interface to OVS and set the network config correctly
@@ -287,3 +293,16 @@ function verify_internet {
     return 1
   fi
 }
+
+##tests if overcloud nodes have external connectivity
+#params:none
+function test_overcloud_connectivity {
+  for node in $(undercloud_connect stack ". stackrc && nova list" | grep -Eo "controller-[0-9]+|compute-[0-9]+" | tr -d -) ; do
+    if ! overcloud_connect $node "ping -c 2 $ping_site > /dev/null"; then
+      echo "${blue}Node ${node} was unable to ping site ${ping_site}${reset}"
+      return 1
+    fi
+  done
+  echo "${blue}Overcloud external connectivity OK${reset}"
+}
+
index 5b0e1ac..e613dae 100755 (executable)
@@ -212,10 +212,18 @@ if [ "$debug" == 'TRUE' ]; then
     LIBGUESTFS_BACKEND=direct virt-customize -a overcloud-full.qcow2 --root-password password:opnfvapex
 fi
 
-if [ "${deploy_options_array['tacker']}" == 'True' ]; then
-    sed -i '/EnableTacker/\\c  EnableTacker: true' opnfv-environment.yaml
+if [ "${deploy_options_array['tacker']}" == 'False' ]; then
+    sed -i '/EnableTacker:/c\  EnableTacker: false' opnfv-environment.yaml
 fi
 
+# Create a key for use by nova for live migration
+echo "Creating nova SSH key for nova resize support"
+ssh-keygen -f nova_id_rsa -b 1024 -P ""
+public_key=\'\$(cat nova_id_rsa.pub | cut -d ' ' -f 2)\'
+sed -i "s#replace_public_key:#key: \$public_key#g" opnfv-environment.yaml
+python -c 'open("opnfv-environment-new.yaml", "w").write((open("opnfv-environment.yaml").read().replace("replace_private_key:", "key: \"" + "".join(open("nova_id_rsa").readlines()).replace("\\n","\\\n") + "\"")))'
+mv -f opnfv-environment-new.yaml opnfv-environment.yaml
+
 source stackrc
 set -o errexit
 # Workaround for APEX-207 where sometimes swift proxy is down
index af72d8f..a7499fe 100755 (executable)
@@ -11,7 +11,8 @@
 ##Post configuration after install
 ##params: none
 function configure_post_install {
-  local opnfv_attach_networks ovs_ip ip_range net_cidr tmp_ip
+  local opnfv_attach_networks ovs_ip ip_range net_cidr tmp_ip af public_network_ipv6
+  public_network_ipv6=False
   opnfv_attach_networks="admin_network public_network"
 
   echo -e "${blue}INFO: Post Install Configuration Running...${reset}"
@@ -41,9 +42,19 @@ EOI
       eval "ip_range=\${${network}_usable_ip_range}"
       ovs_ip=${ip_range##*,}
       eval "net_cidr=\${${network}_cidr}"
+      if [[ $ovs_ip =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
+        af=4
+      else
+        af=6
+        if [ "$network" == "public_network" ]; then
+          public_network_ipv6=True
+        fi
+        #enable ipv6 on bridge interface
+        echo 0 > /proc/sys/net/ipv6/conf/${NET_MAP[$network]}/disable_ipv6
+      fi
       sudo ip addr add ${ovs_ip}/${net_cidr##*/} dev ${NET_MAP[$network]}
       sudo ip link set up ${NET_MAP[$network]}
-      tmp_ip=$(find_ip ${NET_MAP[$network]})
+      tmp_ip=$(find_ip ${NET_MAP[$network]} $af)
       if [ -n "$tmp_ip" ]; then
         echo -e "${blue}INFO: OVS Bridge ${NET_MAP[$network]} IP set: ${tmp_ip}${reset}"
         continue
@@ -81,7 +92,11 @@ if [[ -n "$public_network_vlan" && "$public_network_vlan" != 'native' ]]; then
 else
   neutron net-create external --router:external=True --tenant-id \$(openstack project show service | grep id | awk '{ print \$4 }')
 fi
-neutron subnet-create --name external-net --tenant-id \$(openstack project show service | grep id | awk '{ print \$4 }') --disable-dhcp external --gateway ${public_network_gateway} --allocation-pool start=${public_network_floating_ip_range%%,*},end=${public_network_floating_ip_range##*,} ${public_network_cidr}
+if [ "$public_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 ${public_network_gateway} --allocation-pool start=${public_network_floating_ip_range%%,*},end=${public_network_floating_ip_range##*,} ${public_network_cidr}
+else
+  neutron subnet-create --name external-net --tenant-id \$(openstack project show service | grep id | awk '{ print \$4 }') --disable-dhcp external --gateway ${public_network_gateway} --allocation-pool start=${public_network_floating_ip_range%%,*},end=${public_network_floating_ip_range##*,} ${public_network_cidr}
+fi
 
 echo "Removing sahara endpoint and service"
 sahara_service_id=\$(openstack service list | grep sahara | cut -d ' ' -f 2)
@@ -108,7 +123,8 @@ fi
 EOI
 
   # for virtual, we NAT public network through Undercloud
-  if [ "$virtual" == "TRUE" ]; then
+  # same goes for baremetal if only jumphost has external connectivity
+  if [ "$virtual" == "TRUE" ] || ! test_overcloud_connectivity && [ "$public_network_ipv6" != "True" ]; then
     if ! configure_undercloud_nat ${public_network_cidr}; then
       echo -e "${red}ERROR: Unable to NAT undercloud with external net: ${public_network_cidr}${reset}"
       exit 1
@@ -174,4 +190,11 @@ source stackrc
 echo "Undercloud IP: $UNDERCLOUD, please connect by doing 'opnfv-util undercloud'"
 echo "Overcloud dashboard available at http://\$(heat output-show overcloud PublicVip | sed 's/"//g')/dashboard"
 EOI
+
+if [[ "$ha_enabled" == 'True' ]]; then
+  if [ "$debug" == "TRUE" ]; then
+    echo "${blue}\nChecking pacemaker service status\n${reset}"
+  fi
+  overcloud_connect "controller0" "for i in \$(sudo pcs status | grep '^* ' | cut -d ' ' -f 2 | cut -d '_' -f 1 | uniq); do echo \"WARNING: Service: \$i not running\"; done"
+fi
 }
index f280766..c81256e 100644 (file)
@@ -223,7 +223,7 @@ class NetworkSettings:
             - introspection_range
         - public_network:
             - provisioner_ip
-            - floating_ip
+            - floating_ip_range
             - gateway
         """
         if network == constants.ADMIN_NETWORK:
@@ -236,7 +236,7 @@ class NetworkSettings:
         elif network == constants.PUBLIC_NETWORK:
             self._config_ip(network, 'provisioner_ip', 1)
             self._config_ip_range(network=network,
-                                  setting='floating_ip',
+                                  setting='floating_ip_range',
                                   end_offset=2, count=20)
             self._config_gateway(network)
 
index e7410da..ed4d4df 100755 (executable)
@@ -40,6 +40,17 @@ EOF
   fi
 
   for i in $(seq 0 $vm_index); do
+    if [ "$VM_COMPUTES" -gt 0 ]; then
+      capability="profile:compute"
+      VM_COMPUTES=$((VM_COMPUTES - 1))
+    else
+      capability="profile:control"
+      if [[ "${deploy_options_array['sdn_controller']}" == 'opendaylight' && "$ha_enabled" == "True" && "$ramsize" -lt 10240 ]]; then
+         echo "WARN: RAM per controller too low.  OpenDaylight specified in HA deployment requires at least 10GB"
+         echo "INFO: Increasing RAM per controller to 10GB"
+         ramsize=10240
+      fi
+    fi
     if ! virsh list --all | grep baremetal${i} > /dev/null; then
       define_vm baremetal${i} network 41 'admin_network' $vcpus $ramsize
       for n in private_network public_network storage_network api_network; do
@@ -54,13 +65,6 @@ EOF
     #virsh vol-list default | grep baremetal${i} 2>&1> /dev/null || virsh vol-create-as default baremetal${i}.qcow2 41G --format qcow2
     mac=$(virsh domiflist baremetal${i} | grep admin_network | awk '{ print $5 }')
 
-    if [ "$VM_COMPUTES" -gt 0 ]; then
-      capability="profile:compute"
-      VM_COMPUTES=$((VM_COMPUTES - 1))
-    else
-      capability="profile:control"
-    fi
-
     cat >> $CONFIG/instackenv-virt.json << EOF
     {
       "pm_addr": "192.168.122.1",