Skip to content

Commit

Permalink
packaging: Marvin and integration-tests packages
Browse files Browse the repository at this point in the history
This introduces two new cloudstack packages: marvin and integration-tests.
The two packages will make it easier for CI systems to install Marvin for a
specific cloudstack release/build and run integration tests that are specific
for that version/build.

- maven: add explicit juniper-contrail-api maven repository
- marvin: build source distribution for both install and package mvn phases

(cherry picked from commit de041df)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
  • Loading branch information
rohityadavcloud committed Jul 26, 2016
1 parent 227ff38 commit 0ede472
Show file tree
Hide file tree
Showing 10 changed files with 181 additions and 8 deletions.
1 change: 1 addition & 0 deletions client/pom.xml
Expand Up @@ -19,6 +19,7 @@
<artifactId>cloudstack</artifactId>
<version>4.9.0</version>
</parent>

<dependencies>
<dependency>
<groupId>org.apache.cloudstack</groupId>
Expand Down
18 changes: 18 additions & 0 deletions debian/cloudstack-integration-tests.install
@@ -0,0 +1,18 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

/usr/share/cloudstack-integration-tests/*
18 changes: 18 additions & 0 deletions debian/cloudstack-marvin.install
@@ -0,0 +1,18 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

/usr/share/cloudstack-marvin/Marvin*.tar.gz
23 changes: 23 additions & 0 deletions debian/cloudstack-marvin.postinst
@@ -0,0 +1,23 @@
#!/bin/sh

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

set -e

pip install --upgrade http://cdn.mysql.com/Downloads/Connector-Python/mysql-connector-python-2.0.4.zip#md5=3df394d89300db95163f17c843ef49df
pip install --upgrade /usr/share/cloudstack-marvin/Marvin-*.tar.gz
10 changes: 10 additions & 0 deletions debian/control
Expand Up @@ -45,3 +45,13 @@ Package: cloudstack-docs
Architecture: all
Depends: ${misc:Depends}
Description: The CloudStack documentation

Package: cloudstack-marvin
Architecture: all
Depends: ${misc:Depends}, python-pip, python-dev, libffi-dev
Description: The CloudStack Marvin library

Package: cloudstack-integration-tests
Architecture: all
Depends: ${misc:Depends}, cloudstack-marvin (= ${source:Version})
Description: The CloudStack Marvin integration tests
10 changes: 9 additions & 1 deletion debian/rules
Expand Up @@ -13,7 +13,7 @@ override_dh_auto_configure:
echo VERSION=${VERSION} >> replace.properties.tmp

override_dh_auto_build:
mvn -T C1.5 clean package -Psystemvm -DskipTests -Dsystemvm \
mvn -T C1.5 clean package -Psystemvm,developer -Dsystemvm \
-Dcs.replace.properties=replace.properties.tmp \
-Dmaven.repo.local=$(HOME)/.m2/repository \
${ACS_BUILD_OPTS}
Expand Down Expand Up @@ -125,6 +125,14 @@ override_dh_auto_install:
cp usage/target/transformed/log4j-cloud_usage.xml $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/usage/log4j-cloud.xml
install -D packaging/debian/init/cloud-usage $(DESTDIR)/$(SYSCONFDIR)/init.d/$(PACKAGE)-usage

# cloudstack-marvin
mkdir -p $(DESTDIR)/usr/share/$(PACKAGE)-marvin
cp tools/marvin/dist/Marvin-*.tar.gz $(DESTDIR)/usr/share/$(PACKAGE)-marvin/

# cloudstack-integration-tests
mkdir -p $(DESTDIR)/usr/share/$(PACKAGE)-integration-tests
cp -r test/integration/* $(DESTDIR)/usr/share/$(PACKAGE)-integration-tests/

override_dh_installinit:
dh_installinit -pcloudstack-management -pcloudstack-agent -pcloudstack-usage --onlyscripts --no-start

Expand Down
52 changes: 48 additions & 4 deletions packaging/centos63/cloud.spec
Expand Up @@ -169,6 +169,24 @@ Group: System Environment/Libraries
%description cli
Apache CloudStack command line interface

%package marvin
Summary: Apache CloudStack Marvin library
Requires: python-pip
Requires: gcc
Requires: python-devel
Requires: libffi-devel
Requires: openssl-devel
Group: System Environment/Libraries
%description marvin
Apache CloudStack Marvin library

%package integration-tests
Summary: Apache CloudStack Marvin integration tests
Requires: %{name}-marvin = %{_ver}
Group: System Environment/Libraries
%description integration-tests
Apache CloudStack Marvin integration tests

%if "%{_ossnoss}" == "noredist"
%package mysql-ha
Summary: Apache CloudStack Balancing Strategy for MySQL
Expand Down Expand Up @@ -197,18 +215,18 @@ if [ "%{_ossnoss}" == "NOREDIST" -o "%{_ossnoss}" == "noredist" ] ; then
echo "Executing mvn packaging with non-redistributable libraries"
if [ "%{_sim}" == "SIMULATOR" -o "%{_sim}" == "simulator" ] ; then
echo "Executing mvn noredist packaging with simulator ..."
mvn -Psystemvm -Dnoredist -Dsimulator clean package
mvn -Psystemvm,developer -Dnoredist -Dsimulator clean package
else
echo "Executing mvn noredist packaging without simulator..."
mvn -Psystemvm -Dnoredist clean package
mvn -Psystemvm,developer -Dnoredist clean package
fi
else
if [ "%{_sim}" == "SIMULATOR" -o "%{_sim}" == "simulator" ] ; then
echo "Executing mvn default packaging simulator ..."
mvn -Psystemvm -Dsimulator clean package
mvn -Psystemvm,developer -Dsimulator clean package
else
echo "Executing mvn default packaging without simulator ..."
mvn -Psystemvm clean package
mvn -Psystemvm,developer clean package
fi
fi

Expand Down Expand Up @@ -344,6 +362,14 @@ mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/log/%{name}/usage/
cp -r cloud-cli/cloudtool ${RPM_BUILD_ROOT}%{python_sitearch}/
install cloud-cli/cloudapis/cloud.py ${RPM_BUILD_ROOT}%{python_sitearch}/cloudapis.py

# Marvin
mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/%{name}-marvin
cp tools/marvin/dist/Marvin-*.tar.gz ${RPM_BUILD_ROOT}%{_datadir}/%{name}-marvin/

# integration-tests
mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/%{name}-integration-tests
cp -r test/integration/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}-integration-tests/

# MYSQL HA
if [ "x%{_ossnoss}" == "xnoredist" ] ; then
mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/%{name}-mysql-ha/lib
Expand All @@ -361,6 +387,10 @@ install -D tools/whisker/NOTICE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-usage
install -D tools/whisker/LICENSE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-usage-%{version}/LICENSE
install -D tools/whisker/NOTICE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-cli-%{version}/NOTICE
install -D tools/whisker/LICENSE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-cli-%{version}/LICENSE
install -D tools/whisker/NOTICE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-marvin-%{version}/NOTICE
install -D tools/whisker/LICENSE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-marvin-%{version}/LICENSE
install -D tools/whisker/NOTICE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-integration-tests-%{version}/NOTICE
install -D tools/whisker/LICENSE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-integration-tests-%{version}/LICENSE
if [ "x%{_ossnoss}" == "xnoredist" ] ; then
install -D tools/whisker/LICENSE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-mysql-ha-%{version}/LICENSE
install -D tools/whisker/NOTICE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-mysql-ha-%{version}/NOTICE
Expand Down Expand Up @@ -533,6 +563,10 @@ if [ -f "%{_sysconfdir}/%{name}/management/key" ]; then
ln -s %{_sysconfdir}/%{name}/management/key %{_sysconfdir}/%{name}/usage/key
fi

%post marvin
pip install --upgrade http://cdn.mysql.com/Downloads/Connector-Python/mysql-connector-python-2.0.4.zip#md5=3df394d89300db95163f17c843ef49df
pip install --upgrade /usr/share/cloudstack-marvin/Marvin-*.tar.gz

#No default permission as the permission setup is complex
%files management
%defattr(-,root,root,-)
Expand Down Expand Up @@ -639,6 +673,16 @@ fi
%{_defaultdocdir}/%{name}-cli-%{version}/LICENSE
%{_defaultdocdir}/%{name}-cli-%{version}/NOTICE

%files marvin
%attr(0644,root,root) %{_datadir}/%{name}-marvin/Marvin*.tar.gz
%{_defaultdocdir}/%{name}-marvin-%{version}/LICENSE
%{_defaultdocdir}/%{name}-marvin-%{version}/NOTICE

%files integration-tests
%attr(0755,root,root) %{_datadir}/%{name}-integration-tests/*
%{_defaultdocdir}/%{name}-integration-tests-%{version}/LICENSE
%{_defaultdocdir}/%{name}-integration-tests-%{version}/NOTICE

%if "%{_ossnoss}" == "noredist"
%files mysql-ha
%defattr(0644,cloud,cloud,0755)
Expand Down
46 changes: 45 additions & 1 deletion packaging/centos7/cloud.spec
Expand Up @@ -144,6 +144,24 @@ Group: System Environment/Libraries
%description cli
Apache CloudStack command line interface

%package marvin
Summary: Apache CloudStack Marvin library
Requires: python-pip
Requires: gcc
Requires: python-devel
Requires: libffi-devel
Requires: openssl-devel
Group: System Environment/Libraries
%description marvin
Apache CloudStack Marvin library

%package integration-tests
Summary: Apache CloudStack Marvin integration tests
Requires: %{name}-marvin = %{_ver}
Group: System Environment/Libraries
%description integration-tests
Apache CloudStack Marvin integration tests

%if "%{_ossnoss}" == "noredist"
%package mysql-ha
Summary: Apache CloudStack Balancing Strategy for MySQL
Expand Down Expand Up @@ -178,7 +196,7 @@ if [ "%{_sim}" == "SIMULATOR" -o "%{_sim}" == "simulator" ] ; then
FLAGS="$FLAGS -Dsimulator"
fi

mvn -Psystemvm -DskipTests $FLAGS clean package
mvn -Psystemvm,developer -DskipTests $FLAGS clean package

%install
[ ${RPM_BUILD_ROOT} != "/" ] && rm -rf ${RPM_BUILD_ROOT}
Expand Down Expand Up @@ -316,6 +334,14 @@ mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/log/%{name}/usage/
cp -r cloud-cli/cloudtool ${RPM_BUILD_ROOT}%{python_sitearch}/
install cloud-cli/cloudapis/cloud.py ${RPM_BUILD_ROOT}%{python_sitearch}/cloudapis.py

# Marvin
mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/%{name}-marvin
cp tools/marvin/dist/Marvin-*.tar.gz ${RPM_BUILD_ROOT}%{_datadir}/%{name}-marvin/

# integration-tests
mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/%{name}-integration-tests
cp -r test/integration/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}-integration-tests/

# MYSQL HA
if [ "x%{_ossnoss}" == "xnoredist" ] ; then
mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/%{name}-mysql-ha/lib
Expand All @@ -333,6 +359,10 @@ install -D tools/whisker/NOTICE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-usage
install -D tools/whisker/LICENSE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-usage-%{version}/LICENSE
install -D tools/whisker/NOTICE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-cli-%{version}/NOTICE
install -D tools/whisker/LICENSE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-cli-%{version}/LICENSE
install -D tools/whisker/NOTICE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-marvin-%{version}/NOTICE
install -D tools/whisker/LICENSE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-marvin-%{version}/LICENSE
install -D tools/whisker/NOTICE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-integration-tests-%{version}/NOTICE
install -D tools/whisker/LICENSE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-integration-tests-%{version}/LICENSE
if [ "x%{_ossnoss}" == "xnoredist" ] ; then
install -D tools/whisker/LICENSE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-mysql-ha-%{version}/LICENSE
install -D tools/whisker/NOTICE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-mysql-ha-%{version}/NOTICE
Expand Down Expand Up @@ -430,6 +460,10 @@ if [ -f "%{_sysconfdir}/%{name}/management/key" ]; then
ln -s %{_sysconfdir}/%{name}/management/key %{_sysconfdir}/%{name}/usage/key
fi

%post marvin
pip install --upgrade http://cdn.mysql.com/Downloads/Connector-Python/mysql-connector-python-2.0.4.zip#md5=3df394d89300db95163f17c843ef49df
pip install --upgrade /usr/share/cloudstack-marvin/Marvin-*.tar.gz

#No default permission as the permission setup is complex
%files management
%defattr(-,root,root,-)
Expand Down Expand Up @@ -535,6 +569,16 @@ fi
%{_defaultdocdir}/%{name}-cli-%{version}/LICENSE
%{_defaultdocdir}/%{name}-cli-%{version}/NOTICE

%files marvin
%attr(0644,root,root) %{_datadir}/%{name}-marvin/Marvin*.tar.gz
%{_defaultdocdir}/%{name}-marvin-%{version}/LICENSE
%{_defaultdocdir}/%{name}-marvin-%{version}/NOTICE

%files integration-tests
%attr(0755,root,root) %{_datadir}/%{name}-integration-tests/*
%{_defaultdocdir}/%{name}-integration-tests-%{version}/LICENSE
%{_defaultdocdir}/%{name}-integration-tests-%{version}/NOTICE

%if "%{_ossnoss}" == "noredist"
%files mysql-ha
%defattr(0644,cloud,cloud,0755)
Expand Down
7 changes: 7 additions & 0 deletions pom.xml
Expand Up @@ -44,6 +44,13 @@
<url>https://issues.apache.org/jira/browse/CLOUDSTACK</url>
</issueManagement>

<repositories>
<repository>
<id>juniper-contrail</id>
<url>http://juniper.github.io/contrail-maven/snapshots</url>
</repository>
</repositories>

<properties>
<cs.jdk.version>1.7</cs.jdk.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Expand Down
4 changes: 2 additions & 2 deletions tools/marvin/pom.xml
Expand Up @@ -73,8 +73,8 @@
</configuration>
</execution>
<execution>
<id>install</id>
<phase>install</phase>
<id>package</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
Expand Down

0 comments on commit 0ede472

Please sign in to comment.