From 63cba2086d2c032b76b787420aca657160cc9138 Mon Sep 17 00:00:00 2001 From: Sam Hague Date: Fri, 10 Jan 2014 08:33:04 -0500 Subject: [PATCH] Add support for of1.3. - Modified controller.spec to: - support the of1.3 option - support the three different run.sh scripts for the different distributions - Added run.dist.sh script to wrap all the run.sh scripts. This file is called by the systemd and sys init scripts. - Added patch file to modify the run.sh calls to run.internal.sh. The files assume run.internal.sh is in the same working directory as the wrapper run.sh which is not the case with systemd or sysv installs. - Added distribution options to opendaylight-controller sysconfig. File is used to select the distribution to start. Change-Id: Ia4daa92a8ce2237edd8ff5e242c40df53b04b8c3 Signed-off-by: Sam Hague --- packaging/rpm/opendaylight-controller.spec | 38 +++++++--- .../rpm/opendaylight-controller.sysconfig | 14 +++- packaging/rpm/opendaylight-controller.systemd | 4 +- packaging/rpm/opendaylight-controller.sysv | 4 +- packaging/rpm/opendaylight-distribution.spec | 7 +- .../opendaylight-integration-fix-paths.patch | 18 +++++ packaging/rpm/run.dist.sh | 76 ++++++++++--------- 7 files changed, 110 insertions(+), 51 deletions(-) create mode 100644 packaging/rpm/opendaylight-integration-fix-paths.patch diff --git a/packaging/rpm/opendaylight-controller.spec b/packaging/rpm/opendaylight-controller.spec index 7db2a7f..9f51dab 100644 --- a/packaging/rpm/opendaylight-controller.spec +++ b/packaging/rpm/opendaylight-controller.spec @@ -3,7 +3,7 @@ Name: opendaylight-controller Version: 0.1.0 -Release: 0.4.0%{?dist} +Release: 0.5.0%{?dist} Summary: OpenDaylight SDN Controller Group: Applications/Communications License: EPL @@ -14,11 +14,11 @@ URL: http://www.opendaylight.org # cd controller # git archive --prefix=opendaylight-controller-0.1.0/ HEAD | xz > opendaylight-controller-0.1.0.tar.xz # git clone https://git.opendaylight.org/gerrit/p/integration.git -# cd packaging/rpm -# git archive HEAD opendaylight-controller.sysconfig opendaylight-controller.systemd \ -# opendaylight-controller.sysv run.dist.sh | xz > opendaylight-controller-integration-0.1.0.tar.xz +# cd integration +# git archive --prefix=opendaylight-integration-0.1.0/HEAD | xz > opendaylight-integration-0.1.0.tar.xz Source0: %{name}-%{version}.tar.xz -Source1: %{name}-integration-%{version}.tar.xz +Source1: opendaylight-integration-%{version}.tar.xz +Patch0: opendaylight-integration-fix-paths.patch BuildArch: noarch @@ -70,6 +70,10 @@ Requires(postun): initscripts # This is the directory that has all the JAVA dependencies. %global deps_dir %{_javadir}/opendaylight-controller-dependencies +# This is the integration buildsubdir and packaging dirs: +#%global intbuildsubdir %{_builddir}/%{buildsubdir}/opendaylight-integration-%{version} +%global pkgdir opendaylight-integration-%{version}/packaging/rpm + %description OpenDaylight SDN Controller @@ -79,6 +83,9 @@ OpenDaylight SDN Controller %setup -q %setup -q -D -T -a 1 +cd opendaylight-integration-%{version} +%patch0 -p1 + # In more restrictive distributions we should also here remove from the source # package any third party binaries, or replace them with those provided by the @@ -125,12 +132,20 @@ ln -s %{resources_dir}/lib %{buildroot}%{data_dir} ln -s %{resources_dir}/plugins %{buildroot}%{data_dir} %if 0%{?fedora} -install -m 644 -D %{name}.systemd %{buildroot}%{_unitdir}/%{name}.service +install -m 644 -D %{pkgdir}/%{name}.systemd %{buildroot}%{_unitdir}/%{name}.service %else -install -m 644 -D %{name}.sysv %{buildroot}%{_initddir}/%{name} +install -m 644 -D %{pkgdir}/%{name}.sysv %{buildroot}%{_initddir}/%{name} %endif -install -m 644 -D %{name}.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/%{name} -install -m 755 -D run.dist.sh %{buildroot}%{resources_dir}/run.dist.sh +install -m 644 -D %{pkgdir}/%{name}.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/%{name} + +# Fix all the run.sh files to the right names. +install -m 755 -D %{buildroot}%{resources_dir}/run.sh %{buildroot}%{resources_dir}/run.internal.sh +install -m 755 -D opendaylight-integration-%{version}/distributions/base/src/assemble/resources/run.sh \ + %{buildroot}%{resources_dir}/run.base.sh +rm %{buildroot}%{resources_dir}/run.sh +install -m 755 -D opendaylight-integration-%{version}/distributions/virtualization/src/assemble/resources/run.sh \ + %{buildroot}%{resources_dir}/run.sh +install -m 755 -D opendaylight-integration-%{version}/packaging/rpm/run.dist.sh %{buildroot}%{resources_dir}/run.dist.sh # Usually one wants to replace the .jar files of the dependencies by symlinks # to the ones provided to the system. This assumes the dependencies have been @@ -161,6 +176,8 @@ find %{buildroot}%{resources_dir} -type f -exec chmod 644 {} \; find %{buildroot}%{data_dir} -type d -exec chmod 755 {} \; find %{buildroot}%{data_dir} -type f -exec chmod 755 {} \; chmod 755 %{buildroot}%{resources_dir}/run.sh +chmod 755 %{buildroot}%{resources_dir}/run.base.sh +chmod 755 %{buildroot}%{resources_dir}/run.internal.sh chmod 755 %{buildroot}%{resources_dir}/run.dist.sh %if 0%{?rhel} chmod 755 %{buildroot}%{_initddir}/%{name} @@ -251,6 +268,9 @@ fi %endif %changelog +* Thu Jan 09 2014 Sam Hague - 0.1.0-0.5.0 +- Updates for OF1.3 support. + * Thu Jan 02 2014 Sam Hague - 0.1.0-0.4.0 - Updates to include building distributions. diff --git a/packaging/rpm/opendaylight-controller.sysconfig b/packaging/rpm/opendaylight-controller.sysconfig index e5dd2ef..b70f565 100644 --- a/packaging/rpm/opendaylight-controller.sysconfig +++ b/packaging/rpm/opendaylight-controller.sysconfig @@ -6,4 +6,16 @@ ODL_DATADIR=/var/lib/opendaylight-controller #JAVA_HOME=/usr # The requested distribution: -ODL_DIST="-virt ovsdb" \ No newline at end of file +# Use the following table to select the distribution: +# Distribution Value +# -------------------- ----------- +# base base +# virtualization ovsdb virt-ovsdb +# virtualization vtn virt-vtn +# virtualization opendove virt-opendove +# service provider sp +ODL_DIST="virt-ovsdb" + +# Any additional options required. +# I.E. -of13, -debug, or -console +ODL_OPTS="" \ No newline at end of file diff --git a/packaging/rpm/opendaylight-controller.systemd b/packaging/rpm/opendaylight-controller.systemd index 53bd7d3..b7f1ea9 100644 --- a/packaging/rpm/opendaylight-controller.systemd +++ b/packaging/rpm/opendaylight-controller.systemd @@ -9,8 +9,8 @@ User=opendaylight Group=opendaylight EnvironmentFile=-/etc/sysconfig/opendaylight-controller WorkingDirectory=/var/lib/opendaylight-controller -ExecStart=-/usr/share/opendaylight-controller/run.dist.sh $ODL_DIST -start -ExecStop=-/usr/share/opendaylight-controller/run.sh -stop +ExecStart=-/usr/share/opendaylight-controller/run.dist.sh $ODL_DIST $ODL_OPTS -start +ExecStop=-/usr/share/opendaylight-controller/run.dist.sh -stop [Install] WantedBy=multi-user.target diff --git a/packaging/rpm/opendaylight-controller.sysv b/packaging/rpm/opendaylight-controller.sysv index 6a4ac7c..c26e510 100644 --- a/packaging/rpm/opendaylight-controller.sysv +++ b/packaging/rpm/opendaylight-controller.sysv @@ -33,7 +33,7 @@ start() { [ -f $config ] || exit 6 echo -n $"Starting $prog: " # if not running, start it up here, usually something like "daemon $exec" - $exec $ODL_DIST -start + $exec $ODL_DIST $ODL_OPTS -start retval=$? echo # [ $retval -eq 0 ] && touch $lockfile @@ -43,7 +43,7 @@ start() { stop() { echo -n $"Stopping $prog: " # stop it here, often "killproc $prog" - /usr/share/opendaylight-controller/run.sh" -stop + $exec -stop retval=$? echo # [ $retval -eq 0 ] && rm -f $lockfile diff --git a/packaging/rpm/opendaylight-distribution.spec b/packaging/rpm/opendaylight-distribution.spec index 1807dac..2194a4a 100644 --- a/packaging/rpm/opendaylight-distribution.spec +++ b/packaging/rpm/opendaylight-distribution.spec @@ -3,14 +3,13 @@ Name: opendaylight-distribution Version: 0.1.0 -Release: 0.1.0%{?dist} +Release: 0.2.0%{?dist} Summary: OpenDaylight SDN Controller Distributions Group: Applications/Communications License: EPL URL: http://www.opendaylight.org BuildArch: noarch -Requires: java >= 1:1.7.0 Requires: opendaylight-controller Requires: opendaylight-ovsdb Requires: opendaylight-controller-dependencies @@ -23,5 +22,9 @@ OpenDaylight SDN Controller Distributions %endif %changelog +* Thu Jan 09 2014 Sam Hague - 0.1.0-0.5.0 +- Updates for OF1.3 support. +- Remove java Requires. + * Thu Jan 02 2014 Sam Hague - 0.1.0-0.1.0 - Initial package. diff --git a/packaging/rpm/opendaylight-integration-fix-paths.patch b/packaging/rpm/opendaylight-integration-fix-paths.patch new file mode 100644 index 0000000..739acd3 --- /dev/null +++ b/packaging/rpm/opendaylight-integration-fix-paths.patch @@ -0,0 +1,18 @@ +diff -uNr opendaylight-integration-0.1.0/distributions/base/src/assemble/resources/run.sh opendaylight-integration-0.1.0p/distributions/base/src/assemble/resources/run.sh +--- opendaylight-integration-0.1.0/distributions/base/src/assemble/resources/run.sh 2014-01-08 22:12:55.000000000 -0500 ++++ opendaylight-integration-0.1.0p/distributions/base/src/assemble/resources/run.sh 2014-01-09 15:53:26.458683536 -0500 +@@ -42,4 +42,4 @@ + FILTER=${FILTERBEGINING}${OF_FILTER}${BUNDLEFILTER}${FILTERENDING} + + # Run the command +-$CONTROLLER_RUNSH -Dfelix.fileinstall.filter="$FILTER" $NEWARGS ++/usr/share/opendaylight-controller/run.internal.sh -Dfelix.fileinstall.filter="$FILTER" $NEWARGS +diff -uNr opendaylight-integration-0.1.0/distributions/virtualization/src/assemble/resources/run.sh opendaylight-integration-0.1.0p/distributions/virtualization/src/assemble/resources/run.sh +--- opendaylight-integration-0.1.0/distributions/virtualization/src/assemble/resources/run.sh 2014-01-08 22:12:55.000000000 -0500 ++++ opendaylight-integration-0.1.0p/distributions/virtualization/src/assemble/resources/run.sh 2014-01-09 15:53:46.410725659 -0500 +@@ -34,4 +34,4 @@ + fi + fi + +-./run.base.sh -bundlefilter "org.opendaylight.(${ODL_VIRT_FILTER})" "${@:1:$virtIndex-1}" "${@:virtIndex+2}" ++/usr/share/opendaylight-controller/run.base.sh -bundlefilter "org.opendaylight.(${ODL_VIRT_FILTER})" "${@:1:$virtIndex-1}" "${@:virtIndex+2}" diff --git a/packaging/rpm/run.dist.sh b/packaging/rpm/run.dist.sh index f8c92c9..3407033 100755 --- a/packaging/rpm/run.dist.sh +++ b/packaging/rpm/run.dist.sh @@ -1,37 +1,43 @@ #!/bin/bash -function usage { - echo "Please select one of the 3 supported Virtualization technology : \"$0 -virt [ovsdb | opendove | vtn]\"" - exit 1 -} - -virtIndex=0 -while true ; do - (( i += 1 )) - case "${@:$i:1}" in - -virt) virtIndex=$i ;; - "") break ;; - esac -done - -# Virtualization edition select -if [ ${virtIndex} -eq 0 ]; then - usage -fi - -virt=${@:$virtIndex+1:1} -if [ "${virt}" == "" ]; then - usage -else - if [ "${virt}" == "ovsdb" ]; then - ODL_VIRT_FILTER="opendove|vtn" - elif [ "${virt}" == "opendove" ]; then - ODL_VIRT_FILTER="ovsdb|vtn" - elif [ "${virt}" == "vtn" ]; then - ODL_VIRT_FILTER="affinity|opendove|ovsdb|controller.(arphandler|samples)" - else - usage - fi -fi - -/usr/share/opendaylight-controller/run.sh -Dfelix.fileinstall.filter="^(?!org.opendaylight.(${ODL_VIRT_FILTER})).*" "${@:1:$virtIndex-1}" "${@:virtIndex+2}" +option=$1; +shift + +case "$option" in +base) + bundlefilter="-bundlefilter org.opendaylight.ovsdb.ovsdb.neutron" + /usr/share/opendaylight-controller/run.base.sh $bundlefilter "$@" + ;; + +virt-ovsdb) + bundlefilter="-bundlefilter org.opendaylight.(vtn|opendove)" + /usr/share/opendaylight-controller/run.sh -virt ovsdb "$@" + ;; + +virt-vtn) + echo "$option not supported yet" + #bundlefilter="-bundlefilter org.opendaylight.(affinity|opendove|ovsdb|controller.(arphandler|samples)" + #/usr/share/opendaylight-controller/run.sh -virt vtn "$@" + ;; + +virt-opendove) + echo "$option not supported yet" + #bundlefilter="-bundlefilter org.opendaylight.(ovsdb|vtn)" + #/usr/share/opendaylight-controller/run.sh -virt vtn "$@" + ;; + +sp) + echo "$option not supported yet" + #/usr/share/opendaylight-controller/run.sh sp "$@" + ;; + +-stop) + /usr/share/opendaylight-controller/run.internal.sh -stop + ;; + +*) + echo "Invalid option: $option" + ;; +esac + +exit 0 -- 2.36.6