diff options
-rw-r--r-- | build/opnfv-environment.yaml | 1 | ||||
-rwxr-xr-x | build/overcloud-full.sh | 14 | ||||
-rwxr-xr-x | build/overcloud-opendaylight.sh | 1 | ||||
-rw-r--r-- | build/patches/disable_odl_clustering.patch | 46 | ||||
-rw-r--r-- | build/rpm_specs/opnfv-apex-common.spec | 3 | ||||
-rw-r--r-- | ci/PR_revision.log | 1 | ||||
-rw-r--r-- | config/deploy/os-ovn-nofeature-noha.yaml | 10 | ||||
-rwxr-xr-x | lib/overcloud-deploy-functions.sh | 29 |
8 files changed, 104 insertions, 1 deletions
diff --git a/build/opnfv-environment.yaml b/build/opnfv-environment.yaml index b42779ba..0018aa96 100644 --- a/build/opnfv-environment.yaml +++ b/build/opnfv-environment.yaml @@ -114,6 +114,7 @@ parameter_defaults: - OS::TripleO::Services::NeutronHoneycombAgent - OS::TripleO::Services::Congress - OS::TripleO::Services::NeutronVppAgent + - OS::TripleO::Services::OVNDBs ComputeServices: - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephClient diff --git a/build/overcloud-full.sh b/build/overcloud-full.sh index cfda0398..dbf297fd 100755 --- a/build/overcloud-full.sh +++ b/build/overcloud-full.sh @@ -68,6 +68,13 @@ pushd puppet-tacker > /dev/null git archive --format=tar.gz --prefix=tacker/ origin/stable/ocata > ${BUILD_DIR}/puppet-tacker.tar.gz popd > /dev/null +# tar up the ovn puppet module +rm -rf puppet-ovn +git clone https://github.com/openstack/puppet-ovn +pushd puppet-ovn > /dev/null +git archive --format=tar.gz --prefix=ovn/ origin/stable/ocata > ${BUILD_DIR}/puppet-ovn.tar.gz +popd > /dev/null + # Master FD.IO Repo cat > ${BUILD_DIR}/fdio.repo << EOF [fdio-master] @@ -104,11 +111,11 @@ qemu-img resize overcloud-full_build.qcow2 +900MB 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*" \ --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" \ - --run-command "cd /etc/puppet/modules && rm -rf tripleo && tar xzf opnfv-puppet-tripleo.tar.gz" \ --run-command "mkdir /root/dpdk_rpms" \ --upload ${BUILD_DIR}/fdio.repo:/etc/yum.repos.d/fdio.repo \ $dpdk_pkg_str \ @@ -142,6 +149,11 @@ LIBGUESTFS_BACKEND=direct virt-customize \ --install /root/$tacker_pkg \ --upload ${BUILD_DIR}/noarch/$tackerclient_pkg:/root/ \ --install /root/$tackerclient_pkg \ + --upload ${BUILD_DIR}/puppet-ovn.tar.gz:/etc/puppet/modules/ \ + --run-command "cd /etc/puppet/modules/ && rm -fr ovn && tar xzf puppet-ovn.tar.gz" \ + --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/ \ diff --git a/build/overcloud-opendaylight.sh b/build/overcloud-opendaylight.sh index a668bfed..f8682f6c 100755 --- a/build/overcloud-opendaylight.sh +++ b/build/overcloud-opendaylight.sh @@ -109,6 +109,7 @@ LIBGUESTFS_BACKEND=direct virt-customize \ --install zeromq-4.1.4,zeromq-devel-4.1.4 \ --install capnproto-devel,capnproto-libs,capnproto \ --upload ${BUILD_ROOT}/patches/neutron-patch-NSDriver.patch:/usr/lib/python2.7/site-packages/ \ + --upload ${BUILD_ROOT}/patches/disable_odl_clustering.patch:/etc/puppet/modules/tripleo/ \ -a overcloud-full-opendaylight_build.qcow2 LIBGUESTFS_BACKEND=direct virt-sparsify --compress overcloud-full-opendaylight_build.qcow2 overcloud-full-opendaylight.qcow2 diff --git a/build/patches/disable_odl_clustering.patch b/build/patches/disable_odl_clustering.patch new file mode 100644 index 00000000..151481fc --- /dev/null +++ b/build/patches/disable_odl_clustering.patch @@ -0,0 +1,46 @@ +diff --git a/manifests/profile/base/neutron/opendaylight.pp b/manifests/profile/base/neutron/opendaylight.pp +index 3269f3e..556fe63 100644 +--- a/manifests/profile/base/neutron/opendaylight.pp ++++ b/manifests/profile/base/neutron/opendaylight.pp +@@ -22,34 +22,19 @@ + # (Optional) The current step of the deployment + # Defaults to hiera('step') + # +-# [*odl_api_ips*] +-# (Optional) List of OpenStack Controller IPs for ODL API +-# Defaults to hiera('opendaylight_api_node_ips') +-# +-# [*node_name*] +-# (Optional) The short hostname of node +-# Defaults to hiera('bootstack_nodeid') ++# [*primary_node*] ++# (Optional) The hostname of the first node of this role type ++# Defaults to hiera('bootstrap_nodeid', undef) + # + class tripleo::profile::base::neutron::opendaylight ( + $step = hiera('step'), +- $odl_api_ips = hiera('opendaylight_api_node_ips'), +- $node_name = hiera('bootstack_nodeid') ++ $primary_node = hiera('bootstrap_nodeid', undef), + ) { + + if $step >= 1 { +- if empty($odl_api_ips) { +- fail('No IPs assigned to OpenDaylight Api Service') +- } elsif size($odl_api_ips) == 2 { +- fail('2 node OpenDaylight deployments are unsupported. Use 1 or greater than 2') +- } elsif size($odl_api_ips) > 2 { +- $node_string = split($node_name, '-') +- $ha_node_index = $node_string[-1] + 1 +- class { '::opendaylight': +- enable_ha => true, +- ha_node_ips => $odl_api_ips, +- ha_node_index => $ha_node_index, +- } +- } else { ++ # Configure ODL only on first node of the role where this service is ++ # applied ++ if $primary_node == downcase($::hostname) { + include ::opendaylight + } + } diff --git a/build/rpm_specs/opnfv-apex-common.spec b/build/rpm_specs/opnfv-apex-common.spec index 4266897c..c1bf2968 100644 --- a/build/rpm_specs/opnfv-apex-common.spec +++ b/build/rpm_specs/opnfv-apex-common.spec @@ -59,6 +59,7 @@ install config/deploy/os-odl_l3-nofeature-noha.yaml %{buildroot}%{_sysconfdir}/o install config/deploy/os-odl_l3-ovs-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl_l3-ovs-ha.yaml install config/deploy/os-odl_l3-ovs-noha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl_l3-ovs-noha.yaml install config/deploy/os-odl-gluon-noha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl-gluon-noha.yaml +install config/deploy/os-ovn-nofeature-noha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-ovn-nofeature-noha.yaml #install config/deploy/os-onos-nofeature-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-onos-nofeature-ha.yaml #install config/deploy/os-onos-sfc-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-onos-sfc-ha.yaml install config/deploy/os-ocl-nofeature-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-ocl-nofeature-ha.yaml @@ -144,6 +145,7 @@ install config/inventory/pod_example_settings.yaml %{buildroot}%{_docdir}/opnfv/ %{_sysconfdir}/opnfv-apex/os-odl_l3-nofeature-ha.yaml %{_sysconfdir}/opnfv-apex/os-odl_l3-nofeature-noha.yaml %{_sysconfdir}/opnfv-apex/os-odl-gluon-noha.yaml +%{_sysconfdir}/opnfv-apex/os-ovn-nofeature-noha.yaml #%{_sysconfdir}/opnfv-apex/os-onos-nofeature-ha.yaml #%{_sysconfdir}/opnfv-apex/os-onos-sfc-ha.yaml %{_sysconfdir}/opnfv-apex/os-ocl-nofeature-ha.yaml @@ -170,6 +172,7 @@ install config/inventory/pod_example_settings.yaml %{buildroot}%{_docdir}/opnfv/ * Wed Mar 08 2017 Dan Radez <dradez@redhat.com> - 4.0-5 - Commenting out ONOS, unsupported in Danube - Adding kvm4nfv files +- Adding OVN files * Tue Feb 14 2017 Feng Pan <fpan@redhat.com> - 4.0-4 - Add network_settings_vpp.yaml * Fri Feb 3 2017 Nikolas Hermanns <nikolas.hermanns@ericsson.com> - 4.0-3 diff --git a/ci/PR_revision.log b/ci/PR_revision.log index 067aa8b2..58f3edad 100644 --- a/ci/PR_revision.log +++ b/ci/PR_revision.log @@ -15,3 +15,4 @@ 120,Add old openflow port (6633) and karaf ssh port (8101) 123,Disable L3 HA for ODL/FDIO scenarios 124,setting keystone region for tacker and congress +111,Backporting OVN fixes diff --git a/config/deploy/os-ovn-nofeature-noha.yaml b/config/deploy/os-ovn-nofeature-noha.yaml new file mode 100644 index 00000000..e03ac0ab --- /dev/null +++ b/config/deploy/os-ovn-nofeature-noha.yaml @@ -0,0 +1,10 @@ +global_params: + ha_enabled: false + +deploy_options: + sdn_controller: ovn + sdn_l3: false + tacker: false + congress: true + sfc: false + vpn: false diff --git a/lib/overcloud-deploy-functions.sh b/lib/overcloud-deploy-functions.sh index 17e24cca..37e8229b 100755 --- a/lib/overcloud-deploy-functions.sh +++ b/lib/overcloud-deploy-functions.sh @@ -55,6 +55,15 @@ function overcloud_deploy { # DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/onos.yaml" #fi #SDN_IMAGE=onos + elif [ "${deploy_options_array['sdn_controller']}" == 'ovn' ]; then + if [[ "$ha_enabled" == "True" ]]; then + DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/neutron-ml2-ovn-ha.yaml" + echo "${red}OVN HA support is not not supported... exiting.${reset}" + exit 1 + else + DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/neutron-ml2-ovn.yaml" + fi + SDN_IMAGE=opendaylight elif [ "${deploy_options_array['sdn_controller']}" == 'opencontrail' ]; then echo -e "${red}ERROR: OpenContrail is currently unsupported...exiting${reset}" exit 1 @@ -172,6 +181,15 @@ EOI LIBGUESTFS_BACKEND=direct virt-customize --run-command "cd /usr/lib/python2.7/site-packages/ && patch -p1 < neutron-patch-NSDriver.patch" \ -a overcloud-full.qcow2 EOI + + # Disable clustering for ODL FDIO HA scenarios + if [[ "${deploy_options_array['sdn_controller']}" == 'opendaylight' ]]; then + ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI + LIBGUESTFS_BACKEND=direct virt-customize --run-command "cd /etc/puppet/modules/tripleo/ && patch -p1 < disable_odl_clustering.patch" \ + -a overcloud-full.qcow2 +EOI + fi + # Configure routing node for odl_l3-fdio if [[ "${deploy_options_array['sdn_l3']}" == 'True' ]]; then ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI @@ -259,6 +277,17 @@ EOI DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/storage-environment.yaml" fi + if [ "${deploy_options_array['sdn_controller']}" == 'ovn' ]; then + # The epoch in deloran's ovs is 1: and in leif's is 0: + # so we have to execute a downgrade instead of an update + ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI + LIBGUESTFS_BACKEND=direct virt-customize \ + --run-command "cd /root/ovs27 && yum update -y *openvswitch*" \ + --run-command "cd /root/ovs27 && yum downgrade -y *openvswitch*" \ + -a overcloud-full.qcow2 +EOI + fi + # get number of nodes available in inventory num_control_nodes=$(ssh -T ${SSH_OPTIONS[@]} "root@$UNDERCLOUD" "grep -c profile:control /home/stack/instackenv.json") num_compute_nodes=$(ssh -T ${SSH_OPTIONS[@]} "root@$UNDERCLOUD" "grep -c profile:compute /home/stack/instackenv.json") |