From aa8d14269635388d9e608d5fc8180d1bab3634ef Mon Sep 17 00:00:00 2001 From: Fabricio Henrique Ramos Date: Mon, 22 Nov 2021 21:44:21 -0300 Subject: [PATCH] Add debian packaging for distributedcloud Add debian packaging structure distributedcloud Test Plan: Pass: build package on Debian Pass: build Debian image Pass: install Debian image Pass: build package on CentOS Pass: build CentOS image Pass: install CentOS image Pass: CentOS controller unlocked/available Story: 2009101 Task: 44042 Signed-off-by: Fabricio Henrique Ramos Change-Id: Ie777d4ec4db6b54e46092d43509ecef799fcebbe --- debian_pkg_dirs | 1 + distributedcloud/debian/deb_folder/changelog | 5 + distributedcloud/debian/deb_folder/control | 89 +++++++++++++++ distributedcloud/debian/deb_folder/copyright | 24 ++++ .../distributedcloud-dccommon.install | 4 + .../distributedcloud-dcdbsync.install | 7 ++ .../distributedcloud-dcmanager.dirs | 1 + .../distributedcloud-dcmanager.install | 15 +++ .../distributedcloud-dcorch.install | 13 +++ .../distributedcloud-wheels.install | 1 + .../debian/deb_folder/py3dist-overrides | 2 + distributedcloud/debian/deb_folder/rules | 103 ++++++++++++++++++ .../debian/deb_folder/source/format | 1 + distributedcloud/debian/dl_hook | 18 +++ distributedcloud/debian/meta_data.yaml | 7 ++ 15 files changed, 291 insertions(+) create mode 100644 debian_pkg_dirs create mode 100644 distributedcloud/debian/deb_folder/changelog create mode 100644 distributedcloud/debian/deb_folder/control create mode 100644 distributedcloud/debian/deb_folder/copyright create mode 100644 distributedcloud/debian/deb_folder/distributedcloud-dccommon.install create mode 100644 distributedcloud/debian/deb_folder/distributedcloud-dcdbsync.install create mode 100644 distributedcloud/debian/deb_folder/distributedcloud-dcmanager.dirs create mode 100644 distributedcloud/debian/deb_folder/distributedcloud-dcmanager.install create mode 100644 distributedcloud/debian/deb_folder/distributedcloud-dcorch.install create mode 100644 distributedcloud/debian/deb_folder/distributedcloud-wheels.install create mode 100644 distributedcloud/debian/deb_folder/py3dist-overrides create mode 100755 distributedcloud/debian/deb_folder/rules create mode 100644 distributedcloud/debian/deb_folder/source/format create mode 100755 distributedcloud/debian/dl_hook create mode 100644 distributedcloud/debian/meta_data.yaml diff --git a/debian_pkg_dirs b/debian_pkg_dirs new file mode 100644 index 000000000..3211ad056 --- /dev/null +++ b/debian_pkg_dirs @@ -0,0 +1 @@ +distributedcloud diff --git a/distributedcloud/debian/deb_folder/changelog b/distributedcloud/debian/deb_folder/changelog new file mode 100644 index 000000000..eb13face6 --- /dev/null +++ b/distributedcloud/debian/deb_folder/changelog @@ -0,0 +1,5 @@ +distributedcloud (1.0-1) unstable; urgency=medium + + * Initial release. + + -- Fabricio Henrique Ramos Thu, 11 Nov 2021 15:08:35 -0300 diff --git a/distributedcloud/debian/deb_folder/control b/distributedcloud/debian/deb_folder/control new file mode 100644 index 000000000..8cad7b6d9 --- /dev/null +++ b/distributedcloud/debian/deb_folder/control @@ -0,0 +1,89 @@ +Source: distributedcloud +Section: admin +Priority: optional +Maintainer: StarlingX Developers +Build-Depends: + debhelper-compat (= 13), + dh-python, + python3-openssl, + python3-babel, + python3-cryptography, + python3-dev, + python3-eventlet, + python3-jsonschema (>= 2.0.0), + python3-keyring, + python3-keystoneauth1 (>= 3.1.0), + python3-keystonemiddleware, + python3-netaddr, + python3-oslo.concurrency (>= 3.29.1), + python3-oslo.config, + python3-oslo.context, + python3-oslo.db, + python3-oslo.i18n, + python3-oslo.log, + python3-oslo.messaging, + python3-oslo.middleware, + python3-oslo.policy, + python3-oslo.rootwrap, + python3-oslo.serialization, + python3-oslo.service, + python3-oslo.utils, + python3-oslo.versionedobjects, + python3-pbr (>= 1.8), + python3-pecan (>= 1.0.0), + python3-pip, + python3-routes (>= 1.12.3), + python3-setuptools, + python3-sphinx, + python3-sphinxcontrib.httpdomain, + python3-wheel +Standards-Version: 4.1.2 +Homepage: https://www.starlingx.io + +Package: distributedcloud-dccommon +Architecture: any +Depends: + ${misc:Depends}, + ${python3:Depends}, + python3:any, + python3-kubernetes +Description: Distributed Cloud Common Module + Distributed Cloud Common Module + +Package: distributedcloud-dcmanager +Architecture: any +Depends: + ${misc:Depends}, + ${python3:Depends}, + python3:any, +Description: Distributed Cloud Manager + Distributed Cloud Manager + +Package: distributedcloud-dcorch +Architecture: any +Depends: + ${misc:Depends}, + ${python3:Depends}, + openstack-resource-agents, + python3:any, + python3-psutil +Description: Distributed Cloud Orchestrator + Distributed Cloud Orchestrator + +Package: distributedcloud-dcdbsync +Architecture: any +Depends: + ${misc:Depends}, + ${python3:Depends}, + python3:any +Description: Distributed Cloud DCorch DBsync Agent + Distributed Cloud DCorch DBsync Agent + +Package: distributedcloud-wheels +Architecture: any +Depends: + ${misc:Depends}, + ${python3:Depends}, + python3:any +Description: Distributed Cloud wheels + Contains python wheels for distributedcloud diff --git a/distributedcloud/debian/deb_folder/copyright b/distributedcloud/debian/deb_folder/copyright new file mode 100644 index 000000000..f6b35a7dd --- /dev/null +++ b/distributedcloud/debian/deb_folder/copyright @@ -0,0 +1,24 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: distcloud-client +Upstream-Contact: StarlingX Developers +Source: https://opendev.org/starlingx/distcloud-client + +Files: debian/* +Copyright: 2021 Wind River Systems, Inc. +License: Apache-2 + +License: Apache-2 + Licensed 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 + . + https://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. + . + On Debian-based systems the full text of the Apache version 2.0 license + can be found in `/usr/share/common-licenses/Apache-2.0'. diff --git a/distributedcloud/debian/deb_folder/distributedcloud-dccommon.install b/distributedcloud/debian/deb_folder/distributedcloud-dccommon.install new file mode 100644 index 000000000..48d37200e --- /dev/null +++ b/distributedcloud/debian/deb_folder/distributedcloud-dccommon.install @@ -0,0 +1,4 @@ +etc/logrotate.d/distcloud.conf +etc/syslog-ng/conf.d/distcloud.conf +usr/lib/python3/dist-packages/dccommon/* +usr/lib/python3/dist-packages/distributedcloud-*.egg-info diff --git a/distributedcloud/debian/deb_folder/distributedcloud-dcdbsync.install b/distributedcloud/debian/deb_folder/distributedcloud-dcdbsync.install new file mode 100644 index 000000000..8fd2d8f1b --- /dev/null +++ b/distributedcloud/debian/deb_folder/distributedcloud-dcdbsync.install @@ -0,0 +1,7 @@ +etc/dcdbsync/dcdbsync.conf +usr/bin/dcdbsync-api +usr/lib/ocf/resource.d/openstack/dcdbsync-* +usr/lib/python3/dist-packages/dcdbsync/* +usr/lib/systemd/system/dcdbsync-api.service +usr/lib/systemd/system/dcdbsync-openstack-api.service +usr/lib/tmpfiles.d/dcdbsync.conf diff --git a/distributedcloud/debian/deb_folder/distributedcloud-dcmanager.dirs b/distributedcloud/debian/deb_folder/distributedcloud-dcmanager.dirs new file mode 100644 index 000000000..0ab46f3d6 --- /dev/null +++ b/distributedcloud/debian/deb_folder/distributedcloud-dcmanager.dirs @@ -0,0 +1 @@ +/opt/dc/ansible diff --git a/distributedcloud/debian/deb_folder/distributedcloud-dcmanager.install b/distributedcloud/debian/deb_folder/distributedcloud-dcmanager.install new file mode 100644 index 000000000..b9bd6cb36 --- /dev/null +++ b/distributedcloud/debian/deb_folder/distributedcloud-dcmanager.install @@ -0,0 +1,15 @@ +etc/dcmanager/dcmanager.conf +usr/bin/dcmanager-api +usr/bin/dcmanager-audit +usr/bin/dcmanager-audit-worker +usr/bin/dcmanager-manage +usr/bin/dcmanager-manager +usr/bin/dcmanager-orchestrator +usr/lib/ocf/resource.d/openstack/dcmanager-* +usr/lib/python3/dist-packages/dcmanager/* +usr/lib/systemd/system/dcmanager-api.service +usr/lib/systemd/system/dcmanager-audit.service +usr/lib/systemd/system/dcmanager-audit-worker.service +usr/lib/systemd/system/dcmanager-orchestrator.service +usr/lib/systemd/system/dcmanager-manager.service +usr/lib/tmpfiles.d/dcmanager.conf diff --git a/distributedcloud/debian/deb_folder/distributedcloud-dcorch.install b/distributedcloud/debian/deb_folder/distributedcloud-dcorch.install new file mode 100644 index 000000000..46f2a1526 --- /dev/null +++ b/distributedcloud/debian/deb_folder/distributedcloud-dcorch.install @@ -0,0 +1,13 @@ +etc/dcorch/dcorch.conf +usr/bin/clean-dcorch +usr/bin/dcorch-api +usr/bin/dcorch-api-proxy +usr/bin/dcorch-engine +usr/bin/dcorch-manage +usr/lib/ocf/resource.d/openstack/dcorch-* +usr/lib/python3/dist-packages/dcorch/* +usr/lib/systemd/system/dcorch-api.service +usr/lib/systemd/system/dcorch-engine.service +usr/lib/systemd/system/dcorch-sysinv-api-proxy.service +usr/lib/systemd/system/dcorch-identity-api-proxy.service +usr/lib/tmpfiles.d/dcorch.conf diff --git a/distributedcloud/debian/deb_folder/distributedcloud-wheels.install b/distributedcloud/debian/deb_folder/distributedcloud-wheels.install new file mode 100644 index 000000000..0ed0387d0 --- /dev/null +++ b/distributedcloud/debian/deb_folder/distributedcloud-wheels.install @@ -0,0 +1 @@ +wheels/* diff --git a/distributedcloud/debian/deb_folder/py3dist-overrides b/distributedcloud/debian/deb_folder/py3dist-overrides new file mode 100644 index 000000000..7e029fae7 --- /dev/null +++ b/distributedcloud/debian/deb_folder/py3dist-overrides @@ -0,0 +1,2 @@ +# translate pycrypto to python3-cryptography +pycrypto python3-cryptography diff --git a/distributedcloud/debian/deb_folder/rules b/distributedcloud/debian/deb_folder/rules new file mode 100755 index 000000000..f2d26ba7c --- /dev/null +++ b/distributedcloud/debian/deb_folder/rules @@ -0,0 +1,103 @@ +#!/usr/bin/make -f +#export DH_VERBOSE = 1 + +export PBR_VERSION = 1.0.0 +export PYBUILD_NAME = distributedcloud + +ROOT = $(CURDIR)/debian/tmp +SYSTEMD_DIR = $(ROOT)/usr/lib/systemd/system +TMP_DIR = $(ROOT)/usr/lib/tmpfiles.d +OCF_DIR = $(ROOT)/usr/lib/ocf/resource.d/openstack +SYS_CONF_DIR = $(ROOT)/etc +BIN_DIR = $(ROOT)/usr/bin + +%: + dh $@ --with python3 --buildsystem=pybuild + +override_dh_install: + # install systemd unit files + install -p -D -m 644 files/dcmanager-api.service $(SYSTEMD_DIR)/dcmanager-api.service + install -p -D -m 644 files/dcmanager-manager.service $(SYSTEMD_DIR)/dcmanager-manager.service + install -p -D -m 644 files/dcmanager-audit.service $(SYSTEMD_DIR)/dcmanager-audit.service + install -p -D -m 644 files/dcmanager-audit-worker.service $(SYSTEMD_DIR)/dcmanager-audit-worker.service + install -p -D -m 644 files/dcmanager-orchestrator.service $(SYSTEMD_DIR)/dcmanager-orchestrator.service + + install -p -D -m 644 files/dcorch-api.service $(SYSTEMD_DIR)/dcorch-api.service + install -p -D -m 644 files/dcorch-engine.service $(SYSTEMD_DIR)/dcorch-engine.service + install -p -D -m 644 files/dcorch-sysinv-api-proxy.service $(SYSTEMD_DIR)/dcorch-sysinv-api-proxy.service + install -p -D -m 644 files/dcorch-identity-api-proxy.service $(SYSTEMD_DIR)/dcorch-identity-api-proxy.service + + install -p -D -m 644 files/dcdbsync-api.service $(SYSTEMD_DIR)/dcdbsync-api.service + + install -p -D -m 644 files/dcorch.conf $(TMP_DIR)/dcorch.conf + install -p -D -m 644 files/dcmanager.conf $(TMP_DIR)/dcmanager.conf + + # install systemd unit files for optional second instance + install -p -D -m 644 files/dcdbsync-openstack-api.service $(SYSTEMD_DIR)/dcdbsync-openstack-api.service + install -p -D -m 644 files/dcdbsync.conf $(TMP_DIR)/dcdbsync.conf + + install -p -D -m 644 files/distcloud-syslog.conf $(SYS_CONF_DIR)/syslog-ng/conf.d/distcloud.conf + install -p -D -m 644 files/distcloud-logrotate.conf $(SYS_CONF_DIR)/logrotate.d/distcloud.conf + + # install ocf scripts + install -d -m 755 $(OCF_DIR) + install -p -D -m 755 ocf/* $(OCF_DIR)/ + + # install dcorch cleaner + install -m 755 -D -p files/clean-dcorch $(BIN_DIR)/clean-dcorch + + # install ansible overrides dir + install -d -m 600 $(ROOT)/opt/dc/ansible + + # Generate sample config and add the current directory to PYTHONPATH so + # oslo-config-generator doesn't skip heat's entry points. + PYTHONPATH=. oslo-config-generator --config-file=./dcmanager/config-generator.conf + PYTHONPATH=. oslo-config-generator --config-file=./dcorch/config-generator.conf + PYTHONPATH=. oslo-config-generator --config-file=./dcdbsync/config-generator.conf + + # install default config files + oslo-config-generator \ + --config-file ./dcmanager/config-generator.conf \ + --output-file ./dcmanager/dcmanager.conf.sample + install -p -D -m 640 ./dcmanager/dcmanager.conf.sample $(SYS_CONF_DIR)/dcmanager/dcmanager.conf + + oslo-config-generator \ + --config-file ./dcorch/config-generator.conf \ + --output-file ./dcorch/dcorch.conf.sample + install -p -D -m 640 ./dcorch/dcorch.conf.sample $(SYS_CONF_DIR)/dcorch/dcorch.conf + + oslo-config-generator \ + --config-file ./dcdbsync/config-generator.conf \ + --output-file ./dcdbsync/dcdbsync.conf.sample + install -p -D -m 640 ./dcdbsync/dcdbsync.conf.sample $(SYS_CONF_DIR)/dcdbsync/dcdbsync.conf + + python3 setup.py install \ + --root=$(ROOT) \ + --prefix=/usr \ + --install-data=/usr/share \ + --install-layout=deb \ + --single-version-externally-managed + + rm -rf $(ROOT)/usr/lib/python3/dist-packages/dcmanagerclient/tests + rm -rf $(ROOT)/usr/lib/python3/dist-packages/dccommon/tests + rm -rf $(ROOT)/usr/lib/python3/dist-packages/dcmanager/tests + rm -rf $(ROOT)/usr/lib/python3/dist-packages/dcorch/tests + + python3 setup.py bdist_wheel \ + --universal \ + -d $(ROOT)/wheels + + dh_install + +override_dh_auto_test: + echo "do nothing..." + +override_dh_fixperms: + dh_fixperms \ + --exclude etc/dcdbsync/dcdbsync.conf \ + --exclude etc/dcmanager/dcmanager.conf \ + --exclude etc/dcorch/dcorch.conf + +execute_after_dh_fixperms: + # forcing 600 for /opt/dc/ansible + chmod 600 debian/distributedcloud-dcmanager/opt/dc/ansible diff --git a/distributedcloud/debian/deb_folder/source/format b/distributedcloud/debian/deb_folder/source/format new file mode 100644 index 000000000..163aaf8d8 --- /dev/null +++ b/distributedcloud/debian/deb_folder/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/distributedcloud/debian/dl_hook b/distributedcloud/debian/dl_hook new file mode 100755 index 000000000..e8f9d97ad --- /dev/null +++ b/distributedcloud/debian/dl_hook @@ -0,0 +1,18 @@ +#!/bin/bash + +set -x + +PKG_BUILD_NAME=$1 +PKG_BUILD_DIR=$(realpath `pwd`/${PKG_BUILD_NAME}) + +STX_BASE=$(realpath ${MY_REPO}/stx) +PKG_BASE=$(realpath ${STX_BASE}/distributedcloud/distributedcloud) + +mkdir ${PKG_BUILD_NAME} + +cp -r ${PKG_BASE}/* ${PKG_BUILD_DIR}/ + +mkdir ${PKG_BUILD_DIR}/files +cp ${PKG_BUILD_DIR}/centos/files/* ${PKG_BUILD_DIR}/files/ + +rm -rf ${PKG_BUILD_DIR}/centos diff --git a/distributedcloud/debian/meta_data.yaml b/distributedcloud/debian/meta_data.yaml new file mode 100644 index 000000000..b797c1892 --- /dev/null +++ b/distributedcloud/debian/meta_data.yaml @@ -0,0 +1,7 @@ +--- +debname: distributedcloud +debver: 1.0-1 +dl_hook: dl_hook +revision: + dist: $STX_DIST + PKG_GITREVCOUNT: true