diff --git a/plugins/integrations/cloudian/build.sh b/plugins/integrations/cloudian/build.sh index 03e4dbb2b3d..6cfe8d5fb60 100644 --- a/plugins/integrations/cloudian/build.sh +++ b/plugins/integrations/cloudian/build.sh @@ -3,7 +3,7 @@ echo "Preparing to package Cloudian Connector" RPMDIR="$PWD/rpmbuild" -PKG="cloudian-cloudstack-4.9" +PKG="cloudian-cloudstack" VERSION=`(mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version) | grep --color=none '^[0-9]\.'` if echo $VERSION | grep -q SNAPSHOT ; then @@ -37,5 +37,6 @@ if [ $? -ne 0 ]; then exit 3 else echo "RPM Build Done" + mv rpmbuild/RPMS/noarch/$PKG*rpm . fi exit diff --git a/plugins/integrations/cloudian/cloudian.spec b/plugins/integrations/cloudian/cloudian.spec index c72b9abb2e6..8857e23a8f8 100644 --- a/plugins/integrations/cloudian/cloudian.spec +++ b/plugins/integrations/cloudian/cloudian.spec @@ -1,14 +1,14 @@ + %define name cloudian-cloudstack %define release 1 -%define version 4.9 +%define version 4.9_6.2 %define summary Integrates Cloudian into CloudStack -%define dataroot_dir %{_datarootdir}/cloudstack-management -%define client_dir %{dataroot_dir}/webapps/client -%define bin_dir %{_sbindir} -%define docs_dir %{_defaultdocdir}/cloudian-cloudstack -%define rpm_state_dir %{_localstatedir}/lib/rpm-state/cloudian-cloudstack +%define dataroot_dir %{_datarootdir}/cloudstack-management +%define client_dir %{dataroot_dir}/webapps/client +%define bin_dir %{_sbindir} +%define docs_dir %{_defaultdocdir}/cloudian-cloudstack Summary: %{summary} Vendor: Cloudian Inc. @@ -17,12 +17,13 @@ License: ASL 2.0 Name: %{name} Version: %{version} Release: %{release} -Source: %{name}-%{version}.tgz +Source: %{name}.tgz BuildArch: noarch Group: System Environment/Libraries Requires: cloudstack-management >= 4.9 Requires: jre >= 1.7 +Requires: sed Requires: gzip %description @@ -31,40 +32,41 @@ CloudStack users are also provisioned in Cloudian and users can use Cloudian embedded in the CloudStack UI using single-sign-on. %prep - # Unpack the source tar file %setup -q -c -n %{name} %build +# Build backend server jar mvn clean install -o +# Copy UI plugin cp -r ../../../../../../ui/plugins/cloudian . +# Build docs +cd docs && make && cd .. %install %__rm -rf %{buildroot} %define appbase %{_builddir}/%{buildsubdir} %define client %{appbase}/client -%define buildroot_docs %{buildroot}/%{docs_dir} -%define buildroot_rpm_state %{buildroot}/%{rpm_state_dir} %define buildroot_client %{buildroot}/%{client_dir} -%define buildroot_webinf %{buildroot_client}/WEB-INF %define buildroot_plugins %{buildroot_client}/plugins +%define buildroot_webinf %{buildroot_client}/WEB-INF +%define buildroot_docs %{buildroot}/%{docs_dir} -%__install -d %{buildroot_docs} -%__install -d %{buildroot_rpm_state} %__install -d %{buildroot_client} -%__install -d %{buildroot_webinf}/lib %__install -d %{buildroot_plugins}/cloudian +%__install -d %{buildroot_webinf}/lib +%__install -d %{buildroot_docs} -# Install our server side jar files +# Install our server side jar %__install -m 0644 %{appbase}/target/cloud-plugin-integrations-cloudian-connector-*.jar %{buildroot_webinf}/lib/ # Install our ui plugin -%__install -m 0644 %{appbase}/cloudian/* %{buildroot_plugins}/cloudian/ +%__install -m 0644 %{appbase}/cloudian/* %{buildroot_plugins}/cloudian/ -# Install the script to enable/disable our connector -%__install -m 0644 %{appbase}/docs/*.html %{buildroot_docs} -%__install -m 0644 %{appbase}/docs/*.txt %{buildroot_docs} +# Install the docs +%__install -m 0644 %{appbase}/docs/*.html %{buildroot_docs} +%__install -m 0644 %{appbase}/docs/*.txt %{buildroot_docs} %files # List of files in the RPM @@ -72,99 +74,32 @@ cp -r ../../../../../../ui/plugins/cloudian . %{client_dir}/WEB-INF/lib/* %{client_dir}/plugins/cloudian/* -# our enable/disable script -%{rpm_state_dir} - %doc %{docs_dir}/* %clean # clean the buildroot %__rm -rf %{buildroot} -%pre -# RPM pre-install script -if [ $1 -ge 2 ] ; then - # Upgrade is in progress. - # Only want to trigger if only the other package was updated. - touch %{rpm_state_dir}/notrigger - /usr/sbin/cloudian-cloudstack.sh status 1>/dev/null - if [ $? -eq 3 ] ; then - # Existing connector is enabled. Disable it now using the - # old patches and old script. Remember also to re-enable - # it in %post which will have our new script and new patches. - /usr/sbin/cloudian-cloudstack.sh disable norestart - touch %{rpm_state_dir}/enable - fi -fi -exit 0 - %post # RPM post-install script -if [ $1 -ge 2 ] ; then - # Upgrading. Check if package needs to be re-enabled. - if [ -e %{rpm_state_dir}/enable ] ; then - /usr/sbin/cloudian-cloudstack.sh enable - rm -f %{rpm_state_dir}/enable +if [ -f /usr/share/cloudstack-management/webapps/client/plugins/plugins.js ]; then + if ! grep -q cloudian /usr/share/cloudstack-management/webapps/client/plugins/plugins.js; then + rm -f /usr/share/cloudstack-management/webapps/client/plugins/plugins.js.gz + sed -i "/cloudStack.plugins/a 'cloudian'," /usr/share/cloudstack-management/webapps/client/plugins/plugins.js + gzip -c /usr/share/cloudstack-management/webapps/client/plugins/plugins.js > /usr/share/cloudstack-management/webapps/client/plugins/plugins.js.gz fi - exit 0 -fi -# Installation will require configuration. -cat 1>&2 << EOF -===================================================================== -HyperStore Connect for CloudPlatform has been successfully installed. - -The next steps are: - 1. # cloudian-cloudstack.sh configure - 2. # cloudian-cloudstack.sh enable - -Should you ever wish to disable the connector: - 3. # cloudian-cloudstack.sh disable -===================================================================== -EOF -exit 0 - -%triggerin -- cloudstack-management -# RPM trigger on (re)install of cloudstack-management package -# or an install of our own package in which case we avoid running -if [ -e %{rpm_state_dir}/notrigger ] ; then - rm -f %{rpm_state_dir}/notrigger - exit 0 -fi -# Other than that, only trigger if enabled. -/usr/sbin/cloudian-cloudstack.sh status 1>/dev/null -if [ $? -eq 3 ] ; then - # cloudstack-management server which owns the files that we patch has - # been re-installed (or force erased and installed) while our connector - # was enabled. Running disable and enable is dangerous the management - # servers files may have changed and no longer be patchable. At this - # point, it's best to clean up the .orig files of our patches and - # disable the connector without reverting the patches. - /usr/sbin/cloudian-cloudstack.sh forget - cat 1>&2 << EOF -===================================================================== -The cloudian-cloudstack connector has detected that a package that it -relies on "cloudstack-management" server has been re-installed. The -connector has been disabled. - -You can re-enable the connector using: - 1. # cloudian-cloudstack.sh enable -===================================================================== -EOF - fi -exit 0 - -%preun -# RPM pre-uninstall script -# For Upgrade, pre and post take care of things. In preun, we just -# have to disable the connector if it's enabled. -if [ $1 -eq 0 ] ; then - # Actual Un-install (not upgrade) - /usr/sbin/cloudian-cloudstack.sh disable fi exit 0 %postun # RPM post-uninstall script +if [ -f /usr/share/cloudstack-management/webapps/client/plugins/plugins.js ]; then + if grep -q cloudian /usr/share/cloudstack-management/webapps/client/plugins/plugins.js; then + rm -f /usr/share/cloudstack-management/webapps/client/plugins/plugins.js.gz + sed -i "/'cloudian'/d" /usr/share/cloudstack-management/webapps/client/plugins/plugins.js + gzip -c /usr/share/cloudstack-management/webapps/client/plugins/plugins.js > /usr/share/cloudstack-management/webapps/client/plugins/plugins.js.gz + fi +fi exit 0 %changelog diff --git a/plugins/integrations/cloudian/docs/relnotes.txt b/plugins/integrations/cloudian/docs/relnotes.txt index 5c6105828d8..43959dfd862 100644 --- a/plugins/integrations/cloudian/docs/relnotes.txt +++ b/plugins/integrations/cloudian/docs/relnotes.txt @@ -18,6 +18,10 @@ Version and the Cloudian Client version. [options="header",cols="2,3,4"] |====================== |Connector Version|CloudStack Compatibility|Cloudian Compatibility +|4.2.1_2.4-1|4.2.1|Versions 2.x only +|4.2.1_4.0.1-1|4.2.1|Versions 3.x onwards +|4.3_4.0.1-1|4.3|Versions 3.x onwards +|4.5_5.0-1|4.5|Versions 5.x onwards |4.7_5.0-1|4.7|Versions 5.x onwards |4.9_6.2-1|4.9|Versions 6.2 onwards |====================== @@ -41,12 +45,16 @@ Updated for Java 7:: Re-implementation of Connector:: Re-implemented Connector per CloudStack best-practices. Configuration moved as CloudStack configuration:: - Moved Cloudian configuration to CloudStack configuration. -New Configurations:: - New configurations to fine-tune API call timeouts, SSL validations etc. + Moved Cloudian configuration to CloudStack configuration. Deprecates use + of connector properties file. +Simplifies Connector Administration:: + Simplifies connector installation, configuration, uninstallation and + upgrades. +New API timeout configuration:: + New configurations to fine-tune API call timeout. User and Group auto-provisioning:: - Better auto-provisioning of CloudStack users and domains as Cloudian users - and groups. + Better auto-provisioning and de-provisioning of CloudStack users and domains + as Cloudian users and groups. Documentation Updates:: Various documentation updates.