export RPMUDR = $(shell pwd)/noarch/opnfv-apex-undercloud-$(RPMVERS)-$(shell echo ${RELEASE} | tr -d '_-').noarch.rpm
export RPMODL = $(shell pwd)/noarch/opnfv-apex-$(RPMVERS)-$(shell echo ${RELEASE} | tr -d '_-').noarch.rpm
export RPMONO = $(shell pwd)/noarch/opnfv-apex-onos-$(RPMVERS)-$(shell echo ${RELEASE} | tr -d '_-').noarch.rpm
-export RPMSFC = $(shell pwd)/noarch/opnfv-apex-opendaylight-sfc-$(RPMVERS)-$(shell echo ${RELEASE} | tr -d '_-').noarch.rpm
.PHONY: all
all: iso
.PHONY: clean
-clean: images-clean rpms-clean iso-clean tacker-clean congress-clean vpp-clean
+clean: images-clean rpms-clean iso-clean tacker-clean tackerclient-clean congress-clean vpp-clean
.PHONY: images
-images: undercloud overcloud-full overcloud-opendaylight overcloud-onos overcloud-opendaylight-sfc
+images: undercloud overcloud-full overcloud-opendaylight overcloud-onos
.PHONY: images-clean
-images-clean: undercloud-clean overcloud-full-clean overcloud-opendaylight-clean overcloud-onos-clean overcloud-opendaylight-sfc-clean
- @rm -rf images/
+images-clean: undercloud-clean overcloud-full-clean overcloud-opendaylight-clean overcloud-onos-clean
+ rm -rf images/
.PHONY: rpms
-rpms: common-rpm undercloud-rpm opendaylight-rpm onos-rpm opendaylight-sfc-rpm
+rpms: common-rpm undercloud-rpm opendaylight-rpm onos-rpm
.PHONY: rpms-check
-rpms-check: common-rpm-check undercloud-rpm-check opendaylight-rpm-check onos-rpm-check opendaylight-sfc-rpm-check
+rpms-check: common-rpm-check undercloud-rpm-check opendaylight-rpm-check onos-rpm-check
.PHONY: rpms-clean
-rpms-clean: common-rpm-clean undercloud-rpm-clean opendaylight-rpm-clean onos-rpm-clean opendaylight-sfc-rpm-clean
+rpms-clean: common-rpm-clean undercloud-rpm-clean opendaylight-rpm-clean onos-rpm-clean
+ rm -rf noarch
opnfv-apex-common.tar.gz:
pushd ../ && git archive --format=tar.gz --prefix=opnfv-apex-common-$(RPMVERS)/ HEAD > build/opnfv-apex-common.tar.gz
# build the common RPM
rpmbuild --clean -ba rpm_specs/opnfv-apex-common.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`)' -D "release $(shell echo $(RELEASE) | tr -d '_-')"
+.PHONY: common-rpm-clean
+common-rpm-clean:
+
##################
# PYTHON TESTS #
##################
.PHONY: tacker-clean
tacker-clean:
- @rm -rf openstack-tacker-2015.2
- @rm -f openstack-tacker.tar.gz
+ rm -rf openstack-tacker-2015.2
+ rm -f openstack-tacker.tar.gz
openstack-tacker.tar.gz:
@echo "Preparing the Tacker RPM prerequisites"
#################
.PHONY: tackerclient-clean
-
tackerclient-clean:
- @rm -rf python-tackerclient-2015.2
- @rm -f python-tackerclient.tar.gz
+ rm -rf python-tackerclient-2015.2
+ rm -f python-tackerclient.tar.gz
python-tackerclient.tar.gz:
@echo "Preparing the TackerClient RPM prerequisites"
.PHONY: undercloud-clean
undercloud-clean:
- @rm -f images/undercloud.*
+ rm -f images/undercloud.*
+ rm -rf opnfv-tht.tar.gz
+ rm -rf opnfv-tht/
.PHONY: undercloud
undercloud: images/undercloud.qcow2
@echo "Building the Apex Undercloud RPM"
rpmbuild --clean -ba rpm_specs/opnfv-apex-undercloud.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`)' -D "release $(shell echo $(RELEASE) | tr -d '_-')"
+.PHONY: undercloud-rpm-clean
+undercloud-rpm-clean:
+
###############
# OVERCLOUD #
###############
.PHONY: overcloud-full-clean
overcloud-full-clean:
- @rm -rf images/overcloud-full.d
- @rm -f images/overcloud-full.*
+ rm -rf images/overcloud-full.d
+ rm -f images/overcloud-full.*
+ rm -rf opnfv-puppet-tripleo.tar.gz
+ rm -rf opnfv-puppet-tripleo/
+ rm -rf os-net-config.tar.gz
+ rm -rf os-net-config/
.PHONY: overcloud-full
overcloud-full: images/overcloud-full.qcow2
- images/overcloud-full.qcow2: tacker-rpm tackerclient-rpm congress-rpm networking-vpp-rpm
+ images/overcloud-full.qcow2: congress-rpm networking-vpp-rpm
@echo "Building the Apex Base Overcloud Image"
@./overcloud-full.sh
# build the overcloud RPM
rpmbuild --clean -ba rpm_specs/opnfv-apex.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`)' -D "release $(shell echo $(RELEASE) | tr -d '_-')"
+.PHONY: opendaylight-rpm-clean
+opendaylight-rpm-clean:
+
###############
# ONOS #
###############
.PHONY: onos-rpm-clean
onos-rpm-clean:
- @rpmbuild --clean rpm_specs/opnfv-apex-onos.spec -D "release $(shell echo $RELEASE | tr -d '_-')"
+ @#rpmbuild --clean rpm_specs/opnfv-apex-onos.spec -D "release $(shell echo $RELEASE | tr -d '_-')"
+ rm -rf opnfv-apex-onos.tar.gz
opnfv-apex-onos.tar.gz: images/overcloud-full-onos.qcow2
tar -czf opnfv-apex-onos.tar.gz --xform="s:images/overcloud-full-onos.qcow2:opnfv-apex-onos-$(RPMVERS)/build/images/overcloud-full-onos.qcow2:" images/overcloud-full-onos.qcow2
# build the overcloud RPM
rpmbuild --clean -ba rpm_specs/opnfv-apex-onos.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`)' -D "release $(shell echo $(RELEASE) | tr -d '_-')"
-###############
-# ODL-SFC #
-###############
-
-.PHONY: overcloud-opendaylight-sfc-clean
-overcloud-opendaylight-sfc-clean:
- @rm -f images/overcloud-full-opendaylight-sfc.qcow2
-
-.PHONY: overcloud-opendaylight-sfc
-overcloud-opendaylight-sfc: images/overcloud-full-opendaylight-sfc.qcow2
-
-images/overcloud-full-opendaylight-sfc.qcow2: images/overcloud-full-opendaylight.qcow2
- @echo "Building the Apex OpenDaylight Overcloud Image"
- @./overcloud-opendaylight-sfc.sh
-
-opnfv-apex-opendaylight-sfc.tar.gz: images/overcloud-full-opendaylight-sfc.qcow2
- tar -czf opnfv-apex-opendaylight-sfc.tar.gz --xform="s:images/overcloud-full-opendaylight-sfc.qcow2:opnfv-apex-opendaylight-sfc-$(RPMVERS)/build/images/overcloud-full-opendaylight-sfc.qcow2:" images/overcloud-full-opendaylight-sfc.qcow2
-
-.PHONY: opendaylight-sfc-rpm-check
-opendaylight-sfc-rpm-check: opnfv-apex-opendaylight-sfc.tar.gz
- rpmbuild --clean -bi -bl rpm_specs/opnfv-apex-opendaylight-sfc.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`)' -D "release $(shell echo $(RELEASE) | tr -d '_-')"
-
-.PHONY: opendaylight-sfc-rpm
-opendaylight-sfc-rpm: opnfv-apex-opendaylight-sfc.tar.gz $(RPMSFC)
-
-$(RPMSFC):
- @echo "Building the Apex OpenDaylight SFC RPM"
- rpmbuild --clean -ba rpm_specs/opnfv-apex-opendaylight-sfc.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`)' -D "release $(shell echo $(RELEASE) | tr -d '_-')"
-
###############
# ISO #
###############
@ln $(RPMUDR) centos/Packages
@ln $(RPMODL) centos/Packages
@ln $(RPMONO) centos/Packages
- @ln $(RPMSFC) centos/Packages
# add packages to the centos packages
cd centos/Packages && yumdownloader openvswitch
cd centos/Packages && yumdownloader openstack-tripleo
tar -xf cache/overcloud-full.tar -C images/
mv -f images/overcloud-full.qcow2 images/overcloud-full_build.qcow2
- # Add extra space to the overcloud image
- qemu-img resize images/overcloud-full_build.qcow2 +1G
- LIBGUESTFS_BACKEND=direct virt-customize -a images/overcloud-full_build.qcow2 \
- --run-command 'resize2fs /dev/sda'
-
##########################################################
##### Prep initial overcloud image with common deps #####
##########################################################
# upload the tacker puppet module and untar it
LIBGUESTFS_BACKEND=direct virt-customize \
--upload ../opnfv-puppet-tripleo.tar.gz:/etc/puppet/modules \
+ --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 "puppet module install cristifalcas/etcd" \
--run-command "yum update -y puppet" \
--install "centos-release-qemu-ev" \
- --run-command "yum update -y qemu-kvm-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 ../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 ../noarch/openstack-congress-2016.1-1.el7.centos.noarch.rpm:/root/ \
- --install /root/openstack-congress-2016.1-1.el7.centos.noarch.rpm \
+ --upload ../noarch/$openstack_congress_pkg:/root/ \
+ --install /root/$openstack_congress_pkg \
--install "python2-congressclient" \
--upload puppet-congress.tar.gz:/etc/puppet/modules/ \
--run-command "cd /etc/puppet/modules/ && tar xzf puppet-congress.tar.gz" \
--run-command "cd /etc/puppet/modules && tar xzf puppet-fdio.tar.gz" \
--upload vsperf.tar.gz:/var/opt \
--run-command "cd /var/opt && tar xzf vsperf.tar.gz" \
- --upload ../noarch/python-tackerclient-2015.2-1.trozet.noarch.rpm:/root/ \
- --install /root/python-tackerclient-2015.2-1.trozet.noarch.rpm \
- --upload ../noarch/openstack-tacker-2015.2-1.trozet.noarch.rpm:/root/ \
- --install /root/openstack-tacker-2015.2-1.trozet.noarch.rpm \
--upload puppet-tacker.tar.gz:/etc/puppet/modules/ \
--run-command "cd /etc/puppet/modules/ && tar xzf puppet-tacker.tar.gz" \
--run-command "pip install python-senlinclient" \
popd > /dev/null
tar czf ovs.tar.gz ovs
-# Required packages to redirect stdin with virt-customize
-virt_pkg_str="./$libguestfs_pkg "
-wget $virt_uri_base/$libguestfs_pkg
-for package in ${virt_pkgs[@]}; do
- wget "$virt_uri_base/$package"
- virt_pkg_str+=" ./$package"
-done
-
-if ! sudo yum -y install ${virt_pkg_str}; then
- if [ "$(rpm -q libguestfs)" != "$(rpm -qpf $libguestfs_pkg)" ]; then
- echo "ERROR: Failed to update libguestfs"
- exit 1
- fi
-fi
-
-
-
# BUILD NSH OVS
LIBGUESTFS_BACKEND=direct virt-customize \
--upload ../build_ovs_nsh.sh:/root/ \
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
- rdo_images_uri=http://artifacts.opnfv.org/apex/colorado
+ rdo_images_uri=http://buildlogs.centos.org/centos/7/cloud/x86_64/tripleo_images/newton/delorean
onos_release_uri=https://downloads.onosproject.org/nightly/
onos_release_file=onos-1.6.0-rc2.tar.gz
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
+openstack_congress_pkg="openstack-congress-2016.1-1$(rpm -E '%dist').noarch.rpm"
doctor_driver=https://raw.githubusercontent.com/openstack/congress/master/congress/datasources/doctor_driver.py
if [ -z ${GS_PATHNAME+x} ]; then
GS_PATHNAME=/colorado
'vpp-python-api-16.09-release.x86_64.rpm'
)
honeycomb_pkg='honeycomb-1.16.9-FINAL.noarch.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
-
-virt_uri_base=https://people.redhat.com/~rjones/libguestfs-RHEL-7.3-preview
-libguestfs_pkg='libguestfs-1.32.7-3.el7.x86_64.rpm'
-virt_pkgs=(
-'libguestfs-tools-1.32.7-3.el7.noarch.rpm'
-'libguestfs-tools-c-1.32.7-3.el7.x86_64.rpm'
-'supermin-5.1.16-4.el7.x86_64.rpm'
-'supermin5-5.1.16-4.el7.x86_64.rpm'
-'supermin-helper-5.1.16-4.el7.x86_64.rpm'
-'perl-Sys-Guestfs-1.32.7-3.el7.x86_64.rpm'
-'python-libguestfs-1.32.7-3.el7.x86_64.rpm'
-)
local num_control_nodes
if [[ "${#deploy_options_array[@]}" -eq 0 || "${deploy_options_array['sdn_controller']}" == 'opendaylight' ]]; then
- if [ "${deploy_options_array['sdn_l3']}" == 'True' ]; then
- DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/opendaylight_l3.yaml"
- elif [ "${deploy_options_array['sfc']}" == 'True' ]; then
+ if [ "${deploy_options_array['sfc']}" == 'True' ]; then
DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/opendaylight_sfc.yaml"
elif [ "${deploy_options_array['vpn']}" == 'True' ]; then
DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/opendaylight_sdnvpn.yaml"
elif [ "${deploy_options_array['vpn']}" == 'true' ]; then
DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/opendaylight_sdnvpn.yaml"
else
- DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/opendaylight.yaml"
+ DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/neutron-opendaylight-l3.yaml"
fi
SDN_IMAGE=opendaylight
- if [ "${deploy_options_array['sfc']}" == 'True' ]; then
- SDN_IMAGE+=-sfc
- if [ ! -f $RESOURCES/overcloud-full-${SDN_IMAGE}.qcow2 ]; then
- echo "${red} $RESOURCES/overcloud-full-${SDN_IMAGE}.qcow2 is required to execute an SFC deployment."
- echo "Please install the opnfv-apex-opendaylight-sfc package to provide this overcloud image for deployment.${reset}"
- exit 1
- fi
- 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
# Make sure the correct overcloud image is available
if [ ! -f $RESOURCES/overcloud-full-${SDN_IMAGE}.qcow2 ]; then
echo "${red} $RESOURCES/overcloud-full-${SDN_IMAGE}.qcow2 is required to execute your deployment."
- echo "Both ONOS and OpenDaylight are currently deployed from this image."
echo "Please install the opnfv-apex package to provide this overcloud image for deployment.${reset}"
exit 1
fi
--run-command "sed -i 's/\\(^\\s\\+\\)\\(start_daemon "$OVS_VSWITCHD_PRIORITY"\\)/\\1umask 0002 \\&\\& \\2/' /usr/share/openvswitch/scripts/ovs-ctl" \
-a overcloud-full.qcow2
fi
+
EOI
elif [ "${deploy_options_array['dataplane']}" != 'ovs' ]; then
ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" "LIBGUESTFS_BACKEND=direct virt-customize -a overcloud-full.qcow2 --root-password password:opnfvapex"
fi
+ # upgrade ovs into ovs 2.5.90 with NSH function if SFC is enabled
+ if [[ "${deploy_options_array['sfc']}" == 'True' && "${deploy_options_array['dataplane']}" == 'ovs' ]]; then
+ ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
+ LIBGUESTFS_BACKEND=direct virt-customize --run-command "yum install -y /root/ovs/rpm/rpmbuild/RPMS/x86_64/${ovs_kmod_rpm_name}" \
+ --run-command "yum upgrade -y /root/ovs/rpm/rpmbuild/RPMS/x86_64/${ovs_rpm_name}" \
+ -a overcloud-full.qcow2
+EOI
+ fi
+
# Set ODL version accordingly
if [[ "${deploy_options_array['sdn_controller']}" == 'opendaylight' && "${deploy_options_array['odl_version']}" == 'boron' ]]; then
ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
fi
EOI
+ echo -e "${blue}INFO: Including /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml ${reset}"
+ if [ "$debug" == 'TRUE' ]; then
+ ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" "cat /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml"
+ fi
DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml"
fi