diff options
32 files changed, 335 insertions, 48 deletions
diff --git a/build/Makefile b/build/Makefile index 84305618..96711d23 100644 --- a/build/Makefile +++ b/build/Makefile @@ -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 @@ -85,6 +85,51 @@ python-pep8-check: 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 diff --git a/build/network-environment.yaml b/build/network-environment.yaml index bbd0796f..8b5b070c 100644 --- a/build/network-environment.yaml +++ b/build/network-environment.yaml @@ -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 index 00000000..0dd3491c --- /dev/null +++ b/build/openstack-congress.spec @@ -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 index 00000000..ca5ccd9a --- /dev/null +++ b/build/openstack-tacker.spec @@ -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 diff --git a/build/opnfv-environment.yaml b/build/opnfv-environment.yaml index 61915c96..4f9fd986 100644 --- a/build/opnfv-environment.yaml +++ b/build/opnfv-environment.yaml @@ -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' diff --git a/build/overcloud-full.sh b/build/overcloud-full.sh index 7eb22d1d..6a72705a 100755 --- a/build/overcloud-full.sh +++ b/build/overcloud-full.sh @@ -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 diff --git a/build/overcloud-onos.sh b/build/overcloud-onos.sh index e13923d9..4b8b1350 100755 --- a/build/overcloud-onos.sh +++ b/build/overcloud-onos.sh @@ -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/ \ diff --git a/build/overcloud-opendaylight-sfc.sh b/build/overcloud-opendaylight-sfc.sh index 5032ba06..7f8508a8 100755 --- a/build/overcloud-opendaylight-sfc.sh +++ b/build/overcloud-opendaylight-sfc.sh @@ -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/ \ diff --git a/build/variables.sh b/build/variables.sh index 6632b526..134cc295 100644 --- a/build/variables.sh +++ b/build/variables.sh @@ -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 diff --git a/ci/PR_revision.log b/ci/PR_revision.log index de684ef5..fa978dfe 100644 --- a/ci/PR_revision.log +++ b/ci/PR_revision.log @@ -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 diff --git a/ci/dev_deploy_check.sh b/ci/dev_deploy_check.sh index 831ff1fd..68a9ac2b 100755 --- a/ci/dev_deploy_check.sh +++ b/ci/dev_deploy_check.sh @@ -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 diff --git a/config/deploy/os-nosdn-nofeature-ha.yaml b/config/deploy/os-nosdn-nofeature-ha.yaml index 6e85fa20..286b5162 100644 --- a/config/deploy/os-nosdn-nofeature-ha.yaml +++ b/config/deploy/os-nosdn-nofeature-ha.yaml @@ -5,6 +5,6 @@ deploy_options: sdn_controller: false sdn_l3: false tacker: true - congress: false + congress: true sfc: false vpn: false diff --git a/config/deploy/os-nosdn-nofeature-noha.yaml b/config/deploy/os-nosdn-nofeature-noha.yaml index cfdc5dd3..2d1b44ad 100644 --- a/config/deploy/os-nosdn-nofeature-noha.yaml +++ b/config/deploy/os-nosdn-nofeature-noha.yaml @@ -5,6 +5,6 @@ deploy_options: sdn_controller: false sdn_l3: false tacker: true - congress: false + congress: true sfc: false vpn: false diff --git a/config/deploy/os-nosdn-ovs-ha.yaml b/config/deploy/os-nosdn-ovs-ha.yaml index 739b3e3d..11b093f0 100644 --- a/config/deploy/os-nosdn-ovs-ha.yaml +++ b/config/deploy/os-nosdn-ovs-ha.yaml @@ -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 diff --git a/config/deploy/os-nosdn-ovs-noha.yaml b/config/deploy/os-nosdn-ovs-noha.yaml index 9cb783d3..3082dcb4 100644 --- a/config/deploy/os-nosdn-ovs-noha.yaml +++ b/config/deploy/os-nosdn-ovs-noha.yaml @@ -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 diff --git a/config/deploy/os-nosdn-performance-ha.yaml b/config/deploy/os-nosdn-performance-ha.yaml index c975e24d..acbc1d34 100644 --- a/config/deploy/os-nosdn-performance-ha.yaml +++ b/config/deploy/os-nosdn-performance-ha.yaml @@ -5,7 +5,7 @@ deploy_options: sdn_controller: false sdn_l3: false tacker: true - congress: false + congress: true sfc: false vpn: false vsperf: false diff --git a/config/deploy/os-ocl-nofeature-ha.yaml b/config/deploy/os-ocl-nofeature-ha.yaml index 710a0be9..4ad1ee2b 100644 --- a/config/deploy/os-ocl-nofeature-ha.yaml +++ b/config/deploy/os-ocl-nofeature-ha.yaml @@ -5,6 +5,6 @@ deploy_options: sdn_controller: opencontrail sdn_l3: false tacker: true - congress: false + congress: true sfc: false vpn: false diff --git a/config/deploy/os-odl_l2-bgpvpn-ha.yaml b/config/deploy/os-odl_l2-bgpvpn-ha.yaml index 73507772..1d29c2bf 100644 --- a/config/deploy/os-odl_l2-bgpvpn-ha.yaml +++ b/config/deploy/os-odl_l2-bgpvpn-ha.yaml @@ -5,6 +5,6 @@ deploy_options: sdn_controller: opendaylight sdn_l3: false tacker: false - congress: false + congress: true sfc: false vpn: true diff --git a/config/deploy/os-odl_l2-fdio-ha.yaml b/config/deploy/os-odl_l2-fdio-ha.yaml index c7a9d8e0..c66b35b6 100644 --- a/config/deploy/os-odl_l2-fdio-ha.yaml +++ b/config/deploy/os-odl_l2-fdio-ha.yaml @@ -6,7 +6,7 @@ deploy_options: sdn_l3: false odl_version: boron tacker: true - congress: false + congress: true sfc: false vpn: false vpp: true diff --git a/config/deploy/os-odl_l2-fdio-noha.yaml b/config/deploy/os-odl_l2-fdio-noha.yaml index ca090154..15942fd6 100644 --- a/config/deploy/os-odl_l2-fdio-noha.yaml +++ b/config/deploy/os-odl_l2-fdio-noha.yaml @@ -6,7 +6,7 @@ deploy_options: sdn_l3: false odl_version: boron tacker: true - congress: false + congress: true sfc: false vpn: false vpp: true diff --git a/config/deploy/os-odl_l2-nofeature-ha.yaml b/config/deploy/os-odl_l2-nofeature-ha.yaml index e614fd49..4c88eeb3 100644 --- a/config/deploy/os-odl_l2-nofeature-ha.yaml +++ b/config/deploy/os-odl_l2-nofeature-ha.yaml @@ -6,6 +6,6 @@ deploy_options: sdn_l3: false odl_version: beryllium tacker: true - congress: false + congress: true sfc: false vpn: false diff --git a/config/deploy/os-odl_l2-sdnvpn-ha.yaml b/config/deploy/os-odl_l2-sdnvpn-ha.yaml index ca35a0fe..f6904f05 100644 --- a/config/deploy/os-odl_l2-sdnvpn-ha.yaml +++ b/config/deploy/os-odl_l2-sdnvpn-ha.yaml @@ -5,6 +5,6 @@ deploy_options: sdn_controller: opendaylight sdn_l3: false tacker: true - congress: false + congress: true sfc: false vpn: true diff --git a/config/deploy/os-odl_l2-sfc-noha.yaml b/config/deploy/os-odl_l2-sfc-noha.yaml index e8f3f986..fa9a7868 100644 --- a/config/deploy/os-odl_l2-sfc-noha.yaml +++ b/config/deploy/os-odl_l2-sfc-noha.yaml @@ -6,6 +6,6 @@ deploy_options: sdn_l3: false odl_version: boron tacker: true - congress: false + congress: true sfc: true vpn: false diff --git a/config/deploy/os-odl_l3-nofeature-ha.yaml b/config/deploy/os-odl_l3-nofeature-ha.yaml index 47650459..e54f28b0 100644 --- a/config/deploy/os-odl_l3-nofeature-ha.yaml +++ b/config/deploy/os-odl_l3-nofeature-ha.yaml @@ -5,6 +5,6 @@ deploy_options: sdn_controller: opendaylight sdn_l3: true tacker: true - congress: false + congress: true sfc: false vpn: false diff --git a/config/deploy/os-onos-nofeature-ha.yaml b/config/deploy/os-onos-nofeature-ha.yaml index 1de52298..0d083dda 100644 --- a/config/deploy/os-onos-nofeature-ha.yaml +++ b/config/deploy/os-onos-nofeature-ha.yaml @@ -5,6 +5,6 @@ deploy_options: sdn_controller: onos sdn_l3: true tacker: true - congress: false + congress: true sfc: false vpn: false diff --git a/config/deploy/os-onos-sfc-ha.yaml b/config/deploy/os-onos-sfc-ha.yaml index e0c8d9e8..f0b78511 100644 --- a/config/deploy/os-onos-sfc-ha.yaml +++ b/config/deploy/os-onos-sfc-ha.yaml @@ -5,6 +5,6 @@ deploy_options: sdn_controller: onos sdn_l3: true tacker: true - congress: false + congress: true sfc: true vpn: false diff --git a/config/network/network_settings_v6.yaml b/config/network/network_settings_v6.yaml index 8ca5eaca..dd2d066e 100644 --- a/config/network/network_settings_v6.yaml +++ b/config/network/network_settings_v6.yaml @@ -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 diff --git a/lib/common-functions.sh b/lib/common-functions.sh index 2ace9970..6941093c 100644 --- a/lib/common-functions.sh +++ b/lib/common-functions.sh @@ -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}" +} + diff --git a/lib/overcloud-deploy-functions.sh b/lib/overcloud-deploy-functions.sh index 5b0e1aca..e613dae0 100755 --- a/lib/overcloud-deploy-functions.sh +++ b/lib/overcloud-deploy-functions.sh @@ -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 diff --git a/lib/post-install-functions.sh b/lib/post-install-functions.sh index af72d8f9..a7499feb 100755 --- a/lib/post-install-functions.sh +++ b/lib/post-install-functions.sh @@ -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 } diff --git a/lib/python/apex/network_settings.py b/lib/python/apex/network_settings.py index f2807664..c81256eb 100644 --- a/lib/python/apex/network_settings.py +++ b/lib/python/apex/network_settings.py @@ -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) diff --git a/lib/virtual-setup-functions.sh b/lib/virtual-setup-functions.sh index e7410da7..ed4d4dfd 100755 --- a/lib/virtual-setup-functions.sh +++ b/lib/virtual-setup-functions.sh @@ -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", |