popd
-#Adding OpenDaylight to overcloud
pushd stack
+
+##########################################################
+##### Prep initial overcloud image with common deps #####
+##########################################################
+
# make a copy of the cached overcloud-full image
-cp overcloud-full.qcow2 overcloud-full-odl.qcow2
+cp overcloud-full.qcow2 overcloud-full-opendaylight.qcow2
+# Update puppet-aodh it's old
+rm -rf aodh
+git clone https://github.com/openstack/puppet-aodh aodh
+pushd aodh
+git checkout stable/liberty
+popd
+tar -czf puppet-aodh.tar.gz aodh
-#install aodh on overcloud
+# Add epel, aodh and ceph, remove openstack-neutron-openvswitch
AODH_PKG="openstack-aodh-api,openstack-aodh-common,openstack-aodh-compat,openstack-aodh-evaluator,openstack-aodh-expirer"
AODH_PKG+=",openstack-aodh-listener,openstack-aodh-notifier"
-
-# remove unnecessary packages and install necessary packages
-LIBGUESTFS_BACKEND=direct virt-customize --run-command "yum remove -y openstack-neutron-openvswitch" \
+LIBGUESTFS_BACKEND=direct virt-customize --upload puppet-aodh.tar.gz:/etc/puppet/modules/ \
+ --run-command "cd /etc/puppet/modules/ && rm -rf aodh && tar xzf puppet-aodh.tar.gz" \
+ --run-command "yum remove -y openstack-neutron-openvswitch" \
--install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
- --upload /etc/yum.repos.d/opendaylight.repo:/etc/yum.repos.d/opendaylight.repo \
- --install opendaylight,python-networking-odl,ceph \
- --install $AODH_PKG \
- -a overcloud-full-odl.qcow2
+ --install "$AODH_PKG,ceph" \
+ -a overcloud-full-opendaylight.qcow2
+
+###############################################
+##### Adding OpenDaylight to overcloud #####
+###############################################
+
+cat > /tmp/opendaylight.repo << EOF
+[opendaylight]
+name=OpenDaylight \$releasever - \$basearch
+baseurl=http://cbs.centos.org/repos/nfv7-opendaylight-33-release/\$basearch/os/
+enabled=1
+gpgcheck=0
+EOF
+
+# install ODL packages
+LIBGUESTFS_BACKEND=direct virt-customize \
+ --upload /tmp/opendaylight.repo:/etc/yum.repos.d/opendaylight.repo \
+ --install opendaylight,python-networking-odl \
+ -a overcloud-full-opendaylight.qcow2
## WORK AROUND
## when OpenDaylight lands in upstream RDO manager this can be removed
git archive --format=tar.gz --prefix=opendaylight/ HEAD > ../puppet-opendaylight.tar.gz
popd
LIBGUESTFS_BACKEND=direct virt-customize --upload puppet-opendaylight.tar.gz:/etc/puppet/modules/ \
- --run-command "cd /etc/puppet/modules/ && tar xzf puppet-opendaylight.tar.gz" -a overcloud-full-odl.qcow2
+ --run-command "cd /etc/puppet/modules/ && tar xzf puppet-opendaylight.tar.gz" \
+ --upload ../opendaylight-puppet-neutron.patch:/tmp \
+ --run-command "cd /etc/puppet/modules/neutron && patch -Np1 < /tmp/opendaylight-puppet-neutron.patch" \
+ -a overcloud-full-opendaylight.qcow2
# Patch in OpenDaylight installation and configuration
LIBGUESTFS_BACKEND=direct virt-customize --upload ../opnfv-tripleo-heat-templates.patch:/tmp \
--run-command "cd /usr/share/openstack-tripleo-heat-templates/ && patch -Np1 < /tmp/opnfv-tripleo-heat-templates.patch" \
-a instack.qcow2
-LIBGUESTFS_BACKEND=direct virt-customize --upload ../opendaylight-puppet-neutron.patch:/tmp \
- --run-command "cd /etc/puppet/modules/neutron && patch -Np1 < /tmp/opendaylight-puppet-neutron.patch" \
- -a overcloud-full-odl.qcow2
# REMOVE ME AFTER Brahmaputra
LIBGUESTFS_BACKEND=direct virt-customize --upload ../puppet-neutron-force-metadata.patch:/tmp \
--run-command "cd /etc/puppet/modules/neutron && patch -Np1 < /tmp/puppet-neutron-force-metadata.patch" \
- -a overcloud-full-odl.qcow2
+ -a overcloud-full-opendaylight.qcow2
LIBGUESTFS_BACKEND=direct virt-customize --upload ../puppet-cinder-quota-fix.patch:/tmp \
--run-command "cd /etc/puppet/modules/cinder && patch -Np1 < /tmp/puppet-cinder-quota-fix.patch" \
- -a overcloud-full-odl.qcow2
+ -a overcloud-full-opendaylight.qcow2
# END REMOVE ME AFTER Brahmaputra
-## END WORK AROUND
-popd
+################################################
+##### Adding SFC+OpenDaylight overcloud #####
+################################################
-## WORK AROUND
-## Current package of puppet-aodh is old
+cat > /tmp/opendaylight.repo << EOF
+[opendaylight]
+name=OpenDaylight \$releasever - \$basearch
+baseurl=http://cbs.centos.org/repos/nfv7-opendaylight-4-testing/\$basearch/os/
+enabled=1
+gpgcheck=0
+EOF
-pushd stack
-rm -rf aodh
-git clone https://github.com/openstack/puppet-aodh aodh
-pushd aodh
-git checkout stable/liberty
-popd
+#copy opendaylight overcloud full to isolate odl-sfc
+cp overcloud-full-opendaylight.qcow2 overcloud-full-opendaylight-sfc.qcow2
+LIBGUESTFS_BACKEND=direct virt-customize \
+ --run-command 'yum update -y https://radez.fedorapeople.org/openvswitch-2.3.90-1.x86_64.rpm https://radez.fedorapeople.org/openvswitch-kmod-2.3.90-1.el7.centos.x86_64.rpm' \
+ --install 'https://radez.fedorapeople.org/kernel-ml-3.13.7-1.el7.centos.x86_64.rpm' \
+ --run-command 'grub2-set-default "\$(grep -P \"submenu|^menuentry\" /boot/grub2/grub.cfg | cut -d \"\\x27\" | head -n 1)"' \
+ --upload /tmp/opendaylight.repo:/etc/yum.repos.d/opendaylight.repo \
+ --run-command "yum update -y opendaylight" \
+ -a overcloud-full-opendaylight-sfc.qcow2
-tar -czf puppet-aodh.tar.gz aodh
-LIBGUESTFS_BACKEND=direct virt-customize --upload puppet-aodh.tar.gz:/etc/puppet/modules/ \
- --run-command "cd /etc/puppet/modules/ && rm -rf aodh && tar xzf puppet-aodh.tar.gz" \
- -a overcloud-full-odl.qcow2
-## END WORK AROUND
-popd
+
+
+###############################################
+##### Adding ONOS to overcloud #####
+###############################################
## WORK AROUND
## when ONOS lands in upstream OPNFV artifacts this can be removed
# upload the onos puppet module
-pushd stack
rm -rf puppet-onos
git clone https://github.com/bobzhouHW/puppet-onos.git
mv puppet-onos onos
tar -czf puppet-onos.tar.gz onos
LIBGUESTFS_BACKEND=direct virt-customize --upload puppet-onos.tar.gz:/etc/puppet/modules/ \
- --run-command "cd /etc/puppet/modules/ && tar xzf puppet-onos.tar.gz" -a overcloud-full-odl.qcow2
+ --run-command "cd /etc/puppet/modules/ && tar xzf puppet-onos.tar.gz" -a overcloud-full-opendaylight.qcow2
## END WORK AROUND
+
popd
# move and Sanitize private keys from instack.json file
DEPLOY_OPTIONS=""
RESOURCES=/var/opt/opnfv/stack
CONFIG=/var/opt/opnfv
-INSTACKENV=$CONFIG/instackenv.json
OPNFV_NETWORK_TYPES="admin_network private_network public_network storage_network"
# Netmap used to map networks to OVS bridge names
NET_MAP['admin_network']="brbm"
NET_MAP['public_network']="brbm2"
NET_MAP['storage_network']="brbm3"
-##LIBRARIES
-source $CONFIG/lib/common-functions.sh
-source $CONFIG/lib/installer/onos/onos_gw_mac_update.sh
-
##FUNCTIONS
##translates yaml into variables
##params: filename, prefix (ex. "config_")
function configure_undercloud {
echo
- echo "Copying configuration file and disk images to instack"
- scp ${SSH_OPTIONS[@]} $RESOURCES/overcloud-full.qcow2 "stack@$UNDERCLOUD":
+ echo "Copying configuration files to instack"
if [[ "$net_isolation_enabled" == "TRUE" ]]; then
configure_network_environment $CONFIG/network-environment.yaml
echo -e "${blue}Network Environment set for Deployment: ${reset}"
else
DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/opendaylight.yaml"
fi
+ SDN_IMAGE=opendaylight
+ if [ ${deploy_options_array['sfc']} == 'true' ]; then
+ SDN_IMAGE+=-sfc
+ fi
elif [ ${deploy_options_array['sdn_controller']} == 'opendaylight-external' ]; then
DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/opendaylight-external.yaml"
+ SDN_IMAGE=opendaylight
elif [ ${deploy_options_array['sdn_controller']} == 'onos' ]; then
DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/onos.yaml"
+ SDN_IMAGE=opendaylight
elif [ ${deploy_options_array['sdn_controller']} == 'opencontrail' ]; then
echo -e "${red}ERROR: OpenContrail is currently unsupported...exiting${reset}"
+ else
+ echo "${red}Invalid sdn_controller: ${deploy_options_array['sdn_controller']}${reset}"
+ echo "${red}Valid choices are opendaylight, opendaylight-external, onos, opencontrail${reset}"
exit 1
fi
+ echo "Copying overcloud image to instack"
+ scp ${SSH_OPTIONS[@]} $RESOURCES/overcloud-full-${SDN_IMAGE}.qcow2 "stack@$UNDERCLOUD":overcloud-full.qcow2
+
# make sure ceph is installed
DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/storage-environment.yaml"
echo "Configuring undercloud and discovering nodes"
openstack baremetal import --json instackenv.json
openstack baremetal configure boot
+if [[ -z "$virtual" ]]; then
openstack baremetal introspection bulk start
+fi
echo "Configuring flavors"
for flavor in baremetal control compute; do
echo -e "${blue}INFO: Updating flavor: \${flavor}${reset}"
echo -e "${blue}INFO: Post Install Configuration will be skipped. It is not supported with --flat${reset}"
post_config="FALSE"
fi
+
+ ##LIBRARIES
+ # Do this after cli parse so that $CONFIG is set properly
+ source $CONFIG/lib/common-functions.sh
+ source $CONFIG/lib/installer/onos/onos_gw_mac_update.sh
+
}
##END FUNCTIONS