From 047e898fe28716ef86ce7afab7a9d7edce80e85e Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Wed, 20 Jan 2021 22:18:26 +0530 Subject: [PATCH 01/11] packaging: build and bundle UI using npm in deb and rpm packages This changes deb and rpm packaging to build the UI using npm and bundle it in the `cloudstack-management` package and a new `cloudstack-ui` package. The `cloudstack-ui` package will install the UI under `/usr/share/cloudstack-ui/`. For both packages the config.json will not be overridden on upgrade. Signed-off-by: Rohit Yadav --- client/pom.xml | 2 +- debian/cloudstack-management.install | 1 + debian/cloudstack-ui.install | 19 +++++++++++++++++++ debian/control | 5 +++++ debian/rules | 6 ++++++ packaging/centos7/cloud.spec | 21 +++++++++++++++++++++ packaging/centos8/cloud.spec | 21 +++++++++++++++++++++ ui/{ => public}/error.html | 0 8 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 debian/cloudstack-ui.install rename ui/{ => public}/error.html (100%) diff --git a/client/pom.xml b/client/pom.xml index 98734991d6f0..cc1bd0da00b5 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -607,7 +607,7 @@ - + diff --git a/debian/cloudstack-management.install b/debian/cloudstack-management.install index 289a4957fadb..5d71db31f770 100644 --- a/debian/cloudstack-management.install +++ b/debian/cloudstack-management.install @@ -34,4 +34,5 @@ /usr/bin/cloudstack-migrate-databases /usr/bin/cloudstack-setup-encryption /usr/bin/cloudstack-sysvmadm +/usr/share/cloudstack-management/webapp/config.json /usr/share/cloudstack-management/* diff --git a/debian/cloudstack-ui.install b/debian/cloudstack-ui.install new file mode 100644 index 000000000000..7544ca158c36 --- /dev/null +++ b/debian/cloudstack-ui.install @@ -0,0 +1,19 @@ +# 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-ui/config.json +/usr/share/cloudstack-ui/* diff --git a/debian/control b/debian/control index 15467dc29a91..871206bb4289 100644 --- a/debian/control +++ b/debian/control @@ -37,6 +37,11 @@ Description: CloudStack usage monitor The CloudStack usage monitor provides usage accounting across the entire cloud for cloud operators to charge based on usage parameters. +Package: cloudstack-ui +Architecture: all +Depends: ${misc:Depends} +Description: The CloudStack UI + Package: cloudstack-docs Architecture: all Depends: ${misc:Depends} diff --git a/debian/rules b/debian/rules index 9c4e58206f14..c0b790295a84 100755 --- a/debian/rules +++ b/debian/rules @@ -93,6 +93,12 @@ override_dh_auto_install: install -m0644 packaging/systemd/$(PACKAGE)-management.service debian/$(PACKAGE)-management/lib/systemd/system/$(PACKAGE)-management.service install -m0644 packaging/systemd/$(PACKAGE)-management.default $(DESTDIR)/$(SYSCONFDIR)/default/$(PACKAGE)-management + # cloudstack-ui + mkdir -p $(DESTDIR)/usr/share/$(PACKAGE)-ui + cd ui && npm install && npm run build && cd .. + cp -r ui/dist/* $(DESTDIR)/usr/share/$(PACKAGE)-management/webapp/ + cp -r ui/dist/* $(DESTDIR)/usr/share/$(PACKAGE)-ui/ + # cloudstack-common mkdir -p $(DESTDIR)/usr/share/$(PACKAGE)-common mkdir $(DESTDIR)/usr/share/$(PACKAGE)-common/scripts diff --git a/packaging/centos7/cloud.spec b/packaging/centos7/cloud.spec index 366df32fcd17..769e2746be6e 100644 --- a/packaging/centos7/cloud.spec +++ b/packaging/centos7/cloud.spec @@ -137,6 +137,12 @@ Group: System Environment/Libraries %description usage The CloudStack usage calculation service +%package ui +Summary: CloudStack UI +Group: System Environment/Libraries +%description ui +The CloudStack UI + %package cli Summary: Apache CloudStack CLI Provides: python-marvin @@ -195,6 +201,7 @@ if [ "%{_sim}" == "SIMULATOR" -o "%{_sim}" == "simulator" ] ; then fi mvn -Psystemvm,developer $FLAGS clean package +cd ui && npm install && npm run build && cd .. %install [ ${RPM_BUILD_ROOT} != "/" ] && rm -rf ${RPM_BUILD_ROOT} @@ -255,6 +262,7 @@ cp -r client/target/utilities/scripts/db/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}- cp -r client/target/cloud-client-ui-%{_maventag}.jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/ cp -r client/target/classes/META-INF/webapp ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp +cp -r ui/dist/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp mv ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/cloud-client-ui-%{_maventag}.jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/lib/cloudstack-%{_maventag}.jar cp client/target/lib/*jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/lib/ @@ -280,6 +288,10 @@ install -D server/target/conf/cloudstack-sudoers ${RPM_BUILD_ROOT}%{_sysconfdir} touch ${RPM_BUILD_ROOT}%{_localstatedir}/run/%{name}-management.pid #install -D server/target/conf/cloudstack-catalina.logrotate ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d/%{name}-catalina +# UI +mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/%{name}-ui/ +cp -r ui/dist/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}-ui/ + # Package mysql-connector-python wget -P ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/setup/wheel https://files.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl wget -P ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/setup/wheel https://files.pythonhosted.org/packages/e9/93/4860cebd5ad3ff2664ad3c966490ccb46e3b88458b2095145bca11727ca4/setuptools-47.3.1-py3-none-any.whl @@ -355,6 +367,8 @@ install -D tools/whisker/NOTICE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-agent install -D tools/whisker/LICENSE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-agent-%{version}/LICENSE install -D tools/whisker/NOTICE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-usage-%{version}/NOTICE install -D tools/whisker/LICENSE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-usage-%{version}/LICENSE +install -D tools/whisker/NOTICE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-ui-%{version}/NOTICE +install -D tools/whisker/LICENSE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-ui-%{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 @@ -518,6 +532,7 @@ pip install --upgrade /usr/share/cloudstack-marvin/Marvin-*.tar.gz %{_datadir}/%{name}-management/setup/*.sql %{_datadir}/%{name}-management/setup/*.sh %{_datadir}/%{name}-management/setup/server-setup.xml +%config(noreplace) %{_datadir}/%{name}-management/webapp/config.json %{_datadir}/%{name}-management/webapp/* %attr(0755,root,root) %{_bindir}/%{name}-external-ipallocator.py %attr(0755,root,root) %{_initrddir}/%{name}-ipallocator @@ -560,6 +575,12 @@ pip install --upgrade /usr/share/cloudstack-marvin/Marvin-*.tar.gz %{_defaultdocdir}/%{name}-common-%{version}/LICENSE %{_defaultdocdir}/%{name}-common-%{version}/NOTICE +%files ui +%config(noreplace) %{_datadir}/%{name}-ui/config.json +%attr(0644,root,root) %{_datadir}/%{name}-ui/* +%{_defaultdocdir}/%{name}-ui-%{version}/LICENSE +%{_defaultdocdir}/%{name}-ui-%{version}/NOTICE + %files usage %attr(0644,root,root) %{_unitdir}/%{name}-usage.service %config(noreplace) %{_sysconfdir}/default/%{name}-usage diff --git a/packaging/centos8/cloud.spec b/packaging/centos8/cloud.spec index f893e786d35b..461a38da7132 100644 --- a/packaging/centos8/cloud.spec +++ b/packaging/centos8/cloud.spec @@ -125,6 +125,12 @@ Group: System Environment/Libraries %description baremetal-agent The CloudStack baremetal agent +%package ui +Summary: CloudStack UI +Group: System Environment/Libraries +%description ui +The CloudStack UI + %package usage Summary: CloudStack Usage calculation server Requires: java-11-openjdk @@ -192,6 +198,7 @@ if [ "%{_sim}" == "SIMULATOR" -o "%{_sim}" == "simulator" ] ; then fi mvn -Psystemvm,developer $FLAGS clean package +cd ui && npm install && npm run build && cd .. %install [ ${RPM_BUILD_ROOT} != "/" ] && rm -rf ${RPM_BUILD_ROOT} @@ -252,6 +259,7 @@ cp -r client/target/utilities/scripts/db/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}- cp -r client/target/cloud-client-ui-%{_maventag}.jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/ cp -r client/target/classes/META-INF/webapp ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp +cp -r ui/dist/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp mv ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/cloud-client-ui-%{_maventag}.jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/lib/cloudstack-%{_maventag}.jar cp client/target/lib/*jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/lib/ @@ -277,6 +285,10 @@ install -D server/target/conf/cloudstack-sudoers ${RPM_BUILD_ROOT}%{_sysconfdir} touch ${RPM_BUILD_ROOT}%{_localstatedir}/run/%{name}-management.pid #install -D server/target/conf/cloudstack-catalina.logrotate ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d/%{name}-catalina +# UI +mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/%{name}-ui/ +cp -r ui/dist/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}-ui/ + # Package mysql-connector-python wget -P ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/setup/wheel https://files.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl wget -P ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/setup/wheel https://files.pythonhosted.org/packages/e9/93/4860cebd5ad3ff2664ad3c966490ccb46e3b88458b2095145bca11727ca4/setuptools-47.3.1-py3-none-any.whl @@ -352,6 +364,8 @@ install -D tools/whisker/NOTICE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-agent install -D tools/whisker/LICENSE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-agent-%{version}/LICENSE install -D tools/whisker/NOTICE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-usage-%{version}/NOTICE install -D tools/whisker/LICENSE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-usage-%{version}/LICENSE +install -D tools/whisker/NOTICE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-ui-%{version}/NOTICE +install -D tools/whisker/LICENSE ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-ui-%{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 @@ -515,6 +529,7 @@ pip install --upgrade /usr/share/cloudstack-marvin/Marvin-*.tar.gz %{_datadir}/%{name}-management/setup/*.sql %{_datadir}/%{name}-management/setup/*.sh %{_datadir}/%{name}-management/setup/server-setup.xml +%config(noreplace) %{_datadir}/%{name}-management/webapp/config.json %{_datadir}/%{name}-management/webapp/* %attr(0755,root,root) %{_bindir}/%{name}-external-ipallocator.py %attr(0755,root,root) %{_initrddir}/%{name}-ipallocator @@ -557,6 +572,12 @@ pip install --upgrade /usr/share/cloudstack-marvin/Marvin-*.tar.gz %{_defaultdocdir}/%{name}-common-%{version}/LICENSE %{_defaultdocdir}/%{name}-common-%{version}/NOTICE +%files ui +%config(noreplace) %{_datadir}/%{name}-ui/config.json +%attr(0644,root,root) %{_datadir}/%{name}-ui/* +%{_defaultdocdir}/%{name}-ui-%{version}/LICENSE +%{_defaultdocdir}/%{name}-ui-%{version}/NOTICE + %files usage %attr(0644,root,root) %{_unitdir}/%{name}-usage.service %config(noreplace) %{_sysconfdir}/default/%{name}-usage diff --git a/ui/error.html b/ui/public/error.html similarity index 100% rename from ui/error.html rename to ui/public/error.html From 03035046c78781a3d38c647dce796ba75d507777 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Wed, 20 Jan 2021 22:23:55 +0530 Subject: [PATCH 02/11] include legacy dir on 4.15 Signed-off-by: Rohit Yadav --- client/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/client/pom.xml b/client/pom.xml index cc1bd0da00b5..e550849af5b0 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -608,6 +608,7 @@ + From be8839a0160def8917b25f092a757fd399ee5b5f Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Thu, 21 Jan 2021 17:53:25 +0530 Subject: [PATCH 03/11] add nodejs as new dependency Signed-off-by: Rohit Yadav --- INSTALL.md | 6 ++++++ client/pom.xml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index 6840626156f5..45173c1aa03e 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -28,6 +28,12 @@ Set up Maven (3.6.0): # echo export PATH=/usr/local/maven/bin:${PATH} >> ~/.bashrc # or .zshrc or .profile # source ~/.bashrc +Setup up NodeJS (LTS): + + # curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash - + # sudo yum install nodejs + # sudo npm install -g @vue/cli npm-check-updates + Start the MySQL service: $ service mysqld start diff --git a/client/pom.xml b/client/pom.xml index e550849af5b0..d1a63333549d 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -608,7 +608,7 @@ - + From b5a92d63b8318ba5423f99867becd1d77a10e321 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Thu, 21 Jan 2021 17:57:49 +0530 Subject: [PATCH 04/11] travis nodejs lts install Signed-off-by: Rohit Yadav --- tools/travis/before_install.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/travis/before_install.sh b/tools/travis/before_install.sh index 86a10a75a9dd..f2ecd973b622 100755 --- a/tools/travis/before_install.sh +++ b/tools/travis/before_install.sh @@ -86,6 +86,12 @@ sudo apt-get -q -y -V install freeipmi-common libfreeipmi16 libgcrypt20 libgpg-e echo -e "\nIPMI version" ipmitool -V +curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - +sudo apt-get install -y nodejs + +echo -e "\nNode version" +npm version + echo " From f06445b9ad22a7cb019a81bc4b3cc4ba79774565 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Fri, 22 Jan 2021 00:12:40 +0530 Subject: [PATCH 05/11] pom: bump depedency versions to address cve issue Signed-off-by: Rohit Yadav --- pom.xml | 56 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/pom.xml b/pom.xml index 72c5356e344e..d2b118238308 100644 --- a/pom.xml +++ b/pom.xml @@ -81,23 +81,23 @@ 1.1.1 - 1.14 + 1.15 4.4 - 1.19 + 1.20 1.3 1.4 3.1 - 2.6 - 3.9 + 2.8.0 + 3.11 1.2 - 3.6 + 3.7.2 1.6 1.10 - 1.2.2 - 2.7.0 + 1.2.3 + 2.8.0 0.5 2.6 - 2.7.0 + 2.9.0 3.6.1 @@ -116,45 +116,45 @@ 2.12.0 - 5.8.0 + 5.10.0 1.0.9 - 1.9.5 - 1.11.717 + 1.9.6 + 1.11.940 1.2.8 1.4 - 1.12 + 1.14 1.64 3.3.0 8.18 - 3.2.6 + 3.2.14 2.6.11 0.0.27 - 1.34.2 + 1.38.1 2.4.17 1.7.2 - 28.2-jre - 4.5.11 - 4.4.13 - 2.20 - 2.10.3 + 30.1-jre + 4.5.13 + 4.4.14 + 2.21 + 2.12.1 1.9.3 0.17 - 3.26.0-GA + 3.27.0-GA 3.1.1 1.3.2 2.3.0 2.3.2-1 1.19.4 - 9.4.27.v20200227 + 9.4.36.v20210114 9.4.27.v20200227 5.5.0 - 2.10.5 + 2.10.9 2.2.1 0.1.55 20090211 1.2 - 0.11.0.3 - 0.5.1 + 2.7.0 + 0.5.2 1.5.0-b01 8.0.19 2.0.4 @@ -162,16 +162,16 @@ 2.6.4 0.6.0 0.9.12 - 3.3.3_1 + 3.4.4_1 4.0.1 - 8.5.47 + 8.5.61 1.0.0-build222 6.7 0.5.0 6.2.0-3.1 3.1.3 - 1.4.11.1 - 5.2.3.RELEASE + 1.4.15 + 5.3.3 From c6775b02d857fcb80d428c878ef171d48cefe1a8 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Fri, 22 Jan 2021 02:51:03 +0530 Subject: [PATCH 06/11] fix build to include legacy dir Signed-off-by: Rohit Yadav --- client/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/pom.xml b/client/pom.xml index d1a63333549d..ba7f7556c252 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -608,7 +608,7 @@ - + From b668a9c15e38616fb3f42150dcb64dd89e35d0be Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Fri, 22 Jan 2021 02:59:05 +0530 Subject: [PATCH 07/11] address wido's request Signed-off-by: Rohit Yadav --- debian/control | 2 +- packaging/centos7/cloud.spec | 1 + packaging/centos8/cloud.spec | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 871206bb4289..15d3fb5b9fdf 100644 --- a/debian/control +++ b/debian/control @@ -3,7 +3,7 @@ Section: libs Priority: extra Maintainer: Wido den Hollander Build-Depends: debhelper (>= 9), openjdk-11-jdk | java11-sdk | java11-jdk | zulu-11, genisoimage, - python-mysql.connector | python3-mysql.connector, maven (>= 3) | maven3, python (>= 2.7), python3 (>= 3), lsb-release, dh-systemd, python-setuptools + python-mysql.connector | python3-mysql.connector, maven (>= 3) | maven3, python (>= 2.7), python3 (>= 3), nodejs (>= 12), lsb-release, dh-systemd, python-setuptools Standards-Version: 3.8.1 Homepage: http://www.cloudstack.org/ diff --git a/packaging/centos7/cloud.spec b/packaging/centos7/cloud.spec index 769e2746be6e..21b5c2f22c6a 100644 --- a/packaging/centos7/cloud.spec +++ b/packaging/centos7/cloud.spec @@ -49,6 +49,7 @@ BuildRequires: mysql-connector-python BuildRequires: maven => 3.0.0 BuildRequires: python-setuptools BuildRequires: wget +BuildRequires: nodejs %description CloudStack is a highly-scalable elastic, open source, diff --git a/packaging/centos8/cloud.spec b/packaging/centos8/cloud.spec index 461a38da7132..7d0e6767bfd0 100644 --- a/packaging/centos8/cloud.spec +++ b/packaging/centos8/cloud.spec @@ -48,6 +48,7 @@ BuildRequires: /usr/bin/mkisofs BuildRequires: maven => 3.0.0 BuildRequires: python3-setuptools BuildRequires: wget +BuildRequires: nodejs %description CloudStack is a highly-scalable elastic, open source, From ca3dc01b4b134488c3d3493a859ad367635e3e43 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Fri, 22 Jan 2021 20:13:03 +0530 Subject: [PATCH 08/11] implement wido's suggestion Signed-off-by: Rohit Yadav --- debian/cloudstack-management.install | 2 +- debian/cloudstack-ui.install | 2 +- debian/rules | 10 +++++++++- packaging/centos7/cloud.spec | 13 ++++++++++--- packaging/centos8/cloud.spec | 25 ++++++++++++++++--------- 5 files changed, 37 insertions(+), 15 deletions(-) diff --git a/debian/cloudstack-management.install b/debian/cloudstack-management.install index 5d71db31f770..e637541076ec 100644 --- a/debian/cloudstack-management.install +++ b/debian/cloudstack-management.install @@ -21,6 +21,7 @@ /etc/cloudstack/management/server.properties /etc/cloudstack/management/java.security.ciphers /etc/cloudstack/management/log4j-cloud.xml +/etc/cloudstack/management/config.json /etc/default/cloudstack-management /etc/security/limits.d/cloudstack-limits.conf /etc/sudoers.d/cloudstack @@ -34,5 +35,4 @@ /usr/bin/cloudstack-migrate-databases /usr/bin/cloudstack-setup-encryption /usr/bin/cloudstack-sysvmadm -/usr/share/cloudstack-management/webapp/config.json /usr/share/cloudstack-management/* diff --git a/debian/cloudstack-ui.install b/debian/cloudstack-ui.install index 7544ca158c36..391c7b5b5787 100644 --- a/debian/cloudstack-ui.install +++ b/debian/cloudstack-ui.install @@ -15,5 +15,5 @@ # specific language governing permissions and limitations # under the License. -/usr/share/cloudstack-ui/config.json +/etc/cloudstack/ui/config.json /usr/share/cloudstack-ui/* diff --git a/debian/rules b/debian/rules index c0b790295a84..04e0bdb3d282 100755 --- a/debian/rules +++ b/debian/rules @@ -94,10 +94,18 @@ override_dh_auto_install: install -m0644 packaging/systemd/$(PACKAGE)-management.default $(DESTDIR)/$(SYSCONFDIR)/default/$(PACKAGE)-management # cloudstack-ui + mkdir $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/ui mkdir -p $(DESTDIR)/usr/share/$(PACKAGE)-ui cd ui && npm install && npm run build && cd .. - cp -r ui/dist/* $(DESTDIR)/usr/share/$(PACKAGE)-management/webapp/ + cp -r ui/dist/config.json $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/ui/ cp -r ui/dist/* $(DESTDIR)/usr/share/$(PACKAGE)-ui/ + rm -f $(DESTDIR)/usr/share/$(PACKAGE)-ui/config.json + ln -s ../../..$(SYSCONFDIR)/$(PACKAGE)/ui/config.json $(DESTDIR)/usr/share/$(PACKAGE)-management/webapp/config.json + # copy ui to cloudstack-management + cp -r ui/dist/config.json $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/management/ + cp -r ui/dist/* $(DESTDIR)/usr/share/$(PACKAGE)-management/webapp/ + rm -f $(DESTDIR)/usr/share/$(PACKAGE)-management/webapp/config.json + ln -s ../../..$(SYSCONFDIR)/$(PACKAGE)/management/config.json $(DESTDIR)/usr/share/$(PACKAGE)-management/webapp/config.json # cloudstack-common mkdir -p $(DESTDIR)/usr/share/$(PACKAGE)-common diff --git a/packaging/centos7/cloud.spec b/packaging/centos7/cloud.spec index 21b5c2f22c6a..55fc81d15f0f 100644 --- a/packaging/centos7/cloud.spec +++ b/packaging/centos7/cloud.spec @@ -263,7 +263,10 @@ cp -r client/target/utilities/scripts/db/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}- cp -r client/target/cloud-client-ui-%{_maventag}.jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/ cp -r client/target/classes/META-INF/webapp ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp -cp -r ui/dist/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp +cp ui/dist/config.json ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/management/ +cp -r ui/dist/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp/ +rm -f ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp/config.json +ln -sf /etc/%{name}/cloudstack/config.json ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp/config.json mv ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/cloud-client-ui-%{_maventag}.jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/lib/cloudstack-%{_maventag}.jar cp client/target/lib/*jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/lib/ @@ -290,8 +293,12 @@ touch ${RPM_BUILD_ROOT}%{_localstatedir}/run/%{name}-management.pid #install -D server/target/conf/cloudstack-catalina.logrotate ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d/%{name}-catalina # UI +mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/ui mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/%{name}-ui/ +cp ui/dist/config.json ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/ui/ cp -r ui/dist/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}-ui/ +rm -f ${RPM_BUILD_ROOT}%{_datadir}/%{name}-ui/config.json +ln -sf /etc/%{name}/ui/config.json ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp/config.json # Package mysql-connector-python wget -P ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/setup/wheel https://files.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl @@ -513,6 +520,7 @@ pip install --upgrade /usr/share/cloudstack-marvin/Marvin-*.tar.gz %config(noreplace) %{_sysconfdir}/security/limits.d/cloud %config(noreplace) %attr(0640,root,cloud) %{_sysconfdir}/%{name}/management/db.properties %config(noreplace) %attr(0640,root,cloud) %{_sysconfdir}/%{name}/management/server.properties +%config(noreplace) %attr(0640,root,cloud) %{_sysconfdir}/%{name}/management/config.json %config(noreplace) %{_sysconfdir}/%{name}/management/log4j-cloud.xml %config(noreplace) %{_sysconfdir}/%{name}/management/log4j.xml %config(noreplace) %{_sysconfdir}/%{name}/management/environment.properties @@ -533,7 +541,6 @@ pip install --upgrade /usr/share/cloudstack-marvin/Marvin-*.tar.gz %{_datadir}/%{name}-management/setup/*.sql %{_datadir}/%{name}-management/setup/*.sh %{_datadir}/%{name}-management/setup/server-setup.xml -%config(noreplace) %{_datadir}/%{name}-management/webapp/config.json %{_datadir}/%{name}-management/webapp/* %attr(0755,root,root) %{_bindir}/%{name}-external-ipallocator.py %attr(0755,root,root) %{_initrddir}/%{name}-ipallocator @@ -577,7 +584,7 @@ pip install --upgrade /usr/share/cloudstack-marvin/Marvin-*.tar.gz %{_defaultdocdir}/%{name}-common-%{version}/NOTICE %files ui -%config(noreplace) %{_datadir}/%{name}-ui/config.json +%config(noreplace) %attr(0640,root,cloud) %{_sysconfdir}/%{name}/ui/config.json %attr(0644,root,root) %{_datadir}/%{name}-ui/* %{_defaultdocdir}/%{name}-ui-%{version}/LICENSE %{_defaultdocdir}/%{name}-ui-%{version}/NOTICE diff --git a/packaging/centos8/cloud.spec b/packaging/centos8/cloud.spec index 7d0e6767bfd0..e0bf34e60d8e 100644 --- a/packaging/centos8/cloud.spec +++ b/packaging/centos8/cloud.spec @@ -126,12 +126,6 @@ Group: System Environment/Libraries %description baremetal-agent The CloudStack baremetal agent -%package ui -Summary: CloudStack UI -Group: System Environment/Libraries -%description ui -The CloudStack UI - %package usage Summary: CloudStack Usage calculation server Requires: java-11-openjdk @@ -139,6 +133,12 @@ Group: System Environment/Libraries %description usage The CloudStack usage calculation service +%package ui +Summary: CloudStack UI +Group: System Environment/Libraries +%description ui +The CloudStack UI + %package cli Summary: Apache CloudStack CLI Provides: python-marvin @@ -260,7 +260,10 @@ cp -r client/target/utilities/scripts/db/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}- cp -r client/target/cloud-client-ui-%{_maventag}.jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/ cp -r client/target/classes/META-INF/webapp ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp -cp -r ui/dist/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp +cp ui/dist/config.json ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/management/ +cp -r ui/dist/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp/ +rm -f ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp/config.json +ln -sf /etc/%{name}/cloudstack/config.json ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp/config.json mv ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/cloud-client-ui-%{_maventag}.jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/lib/cloudstack-%{_maventag}.jar cp client/target/lib/*jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/lib/ @@ -287,8 +290,12 @@ touch ${RPM_BUILD_ROOT}%{_localstatedir}/run/%{name}-management.pid #install -D server/target/conf/cloudstack-catalina.logrotate ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d/%{name}-catalina # UI +mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/ui mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/%{name}-ui/ +cp ui/dist/config.json ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/ui/ cp -r ui/dist/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}-ui/ +rm -f ${RPM_BUILD_ROOT}%{_datadir}/%{name}-ui/config.json +ln -sf /etc/%{name}/ui/config.json ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp/config.json # Package mysql-connector-python wget -P ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/setup/wheel https://files.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl @@ -510,6 +517,7 @@ pip install --upgrade /usr/share/cloudstack-marvin/Marvin-*.tar.gz %config(noreplace) %{_sysconfdir}/security/limits.d/cloud %config(noreplace) %attr(0640,root,cloud) %{_sysconfdir}/%{name}/management/db.properties %config(noreplace) %attr(0640,root,cloud) %{_sysconfdir}/%{name}/management/server.properties +%config(noreplace) %attr(0640,root,cloud) %{_sysconfdir}/%{name}/management/config.json %config(noreplace) %{_sysconfdir}/%{name}/management/log4j-cloud.xml %config(noreplace) %{_sysconfdir}/%{name}/management/log4j.xml %config(noreplace) %{_sysconfdir}/%{name}/management/environment.properties @@ -530,7 +538,6 @@ pip install --upgrade /usr/share/cloudstack-marvin/Marvin-*.tar.gz %{_datadir}/%{name}-management/setup/*.sql %{_datadir}/%{name}-management/setup/*.sh %{_datadir}/%{name}-management/setup/server-setup.xml -%config(noreplace) %{_datadir}/%{name}-management/webapp/config.json %{_datadir}/%{name}-management/webapp/* %attr(0755,root,root) %{_bindir}/%{name}-external-ipallocator.py %attr(0755,root,root) %{_initrddir}/%{name}-ipallocator @@ -574,7 +581,7 @@ pip install --upgrade /usr/share/cloudstack-marvin/Marvin-*.tar.gz %{_defaultdocdir}/%{name}-common-%{version}/NOTICE %files ui -%config(noreplace) %{_datadir}/%{name}-ui/config.json +%config(noreplace) %attr(0640,root,cloud) %{_sysconfdir}/%{name}/ui/config.json %attr(0644,root,root) %{_datadir}/%{name}-ui/* %{_defaultdocdir}/%{name}-ui-%{version}/LICENSE %{_defaultdocdir}/%{name}-ui-%{version}/NOTICE From a0965c5bcfbd034c448722ce64dab2fa27aabd43 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Mon, 25 Jan 2021 12:21:27 +0530 Subject: [PATCH 09/11] fix path issue Signed-off-by: Rohit Yadav --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index 04e0bdb3d282..6d3dda09efc5 100755 --- a/debian/rules +++ b/debian/rules @@ -100,7 +100,7 @@ override_dh_auto_install: cp -r ui/dist/config.json $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/ui/ cp -r ui/dist/* $(DESTDIR)/usr/share/$(PACKAGE)-ui/ rm -f $(DESTDIR)/usr/share/$(PACKAGE)-ui/config.json - ln -s ../../..$(SYSCONFDIR)/$(PACKAGE)/ui/config.json $(DESTDIR)/usr/share/$(PACKAGE)-management/webapp/config.json + ln -s ../../..$(SYSCONFDIR)/$(PACKAGE)/ui/config.json $(DESTDIR)/usr/share/$(PACKAGE)-ui/config.json # copy ui to cloudstack-management cp -r ui/dist/config.json $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/management/ cp -r ui/dist/* $(DESTDIR)/usr/share/$(PACKAGE)-management/webapp/ From 0d2258b503eaa16ba3633e6a474d9b50114fc98c Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Wed, 27 Jan 2021 17:33:20 +0530 Subject: [PATCH 10/11] fix config symlink paths for centos pkgs Signed-off-by: Rohit Yadav --- packaging/centos7/cloud.spec | 4 ++-- packaging/centos8/cloud.spec | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packaging/centos7/cloud.spec b/packaging/centos7/cloud.spec index 55fc81d15f0f..5b0515cc599a 100644 --- a/packaging/centos7/cloud.spec +++ b/packaging/centos7/cloud.spec @@ -266,7 +266,7 @@ cp -r client/target/classes/META-INF/webapp ${RPM_BUILD_ROOT}%{_datadir}/%{name} cp ui/dist/config.json ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/management/ cp -r ui/dist/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp/ rm -f ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp/config.json -ln -sf /etc/%{name}/cloudstack/config.json ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp/config.json +ln -sf /etc/%{name}/management/config.json ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp/config.json mv ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/cloud-client-ui-%{_maventag}.jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/lib/cloudstack-%{_maventag}.jar cp client/target/lib/*jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/lib/ @@ -298,7 +298,7 @@ mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/%{name}-ui/ cp ui/dist/config.json ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/ui/ cp -r ui/dist/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}-ui/ rm -f ${RPM_BUILD_ROOT}%{_datadir}/%{name}-ui/config.json -ln -sf /etc/%{name}/ui/config.json ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp/config.json +ln -sf /etc/%{name}/ui/config.json ${RPM_BUILD_ROOT}%{_datadir}/%{name}-ui/config.json # Package mysql-connector-python wget -P ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/setup/wheel https://files.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl diff --git a/packaging/centos8/cloud.spec b/packaging/centos8/cloud.spec index e0bf34e60d8e..60d86f7ca4c6 100644 --- a/packaging/centos8/cloud.spec +++ b/packaging/centos8/cloud.spec @@ -263,7 +263,7 @@ cp -r client/target/classes/META-INF/webapp ${RPM_BUILD_ROOT}%{_datadir}/%{name} cp ui/dist/config.json ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/management/ cp -r ui/dist/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp/ rm -f ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp/config.json -ln -sf /etc/%{name}/cloudstack/config.json ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp/config.json +ln -sf /etc/%{name}/management/config.json ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp/config.json mv ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/cloud-client-ui-%{_maventag}.jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/lib/cloudstack-%{_maventag}.jar cp client/target/lib/*jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/lib/ @@ -295,7 +295,7 @@ mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/%{name}-ui/ cp ui/dist/config.json ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/ui/ cp -r ui/dist/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}-ui/ rm -f ${RPM_BUILD_ROOT}%{_datadir}/%{name}-ui/config.json -ln -sf /etc/%{name}/ui/config.json ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapp/config.json +ln -sf /etc/%{name}/ui/config.json ${RPM_BUILD_ROOT}%{_datadir}/%{name}-ui/config.json # Package mysql-connector-python wget -P ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/setup/wheel https://files.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl From 23c5dab36fab22ce21e100e7319e2d02b6a431da Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Wed, 27 Jan 2021 18:23:49 +0530 Subject: [PATCH 11/11] debian: fix ln -sf path Signed-off-by: Rohit Yadav --- debian/rules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/rules b/debian/rules index 6d3dda09efc5..de45255d9bd8 100755 --- a/debian/rules +++ b/debian/rules @@ -100,12 +100,12 @@ override_dh_auto_install: cp -r ui/dist/config.json $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/ui/ cp -r ui/dist/* $(DESTDIR)/usr/share/$(PACKAGE)-ui/ rm -f $(DESTDIR)/usr/share/$(PACKAGE)-ui/config.json - ln -s ../../..$(SYSCONFDIR)/$(PACKAGE)/ui/config.json $(DESTDIR)/usr/share/$(PACKAGE)-ui/config.json + ln -s /$(SYSCONFDIR)/$(PACKAGE)/ui/config.json $(DESTDIR)/usr/share/$(PACKAGE)-ui/config.json # copy ui to cloudstack-management cp -r ui/dist/config.json $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/management/ cp -r ui/dist/* $(DESTDIR)/usr/share/$(PACKAGE)-management/webapp/ rm -f $(DESTDIR)/usr/share/$(PACKAGE)-management/webapp/config.json - ln -s ../../..$(SYSCONFDIR)/$(PACKAGE)/management/config.json $(DESTDIR)/usr/share/$(PACKAGE)-management/webapp/config.json + ln -s /$(SYSCONFDIR)/$(PACKAGE)/management/config.json $(DESTDIR)/usr/share/$(PACKAGE)-management/webapp/config.json # cloudstack-common mkdir -p $(DESTDIR)/usr/share/$(PACKAGE)-common