From 01d6e043b48d017e727fc61e41a3bbf38e853685 Mon Sep 17 00:00:00 2001 From: Scott Little Date: Wed, 19 Sep 2018 11:23:33 -0400 Subject: [PATCH] Move Distributed Cloud OCF scripts out of openstack-ras StarlingX specific OCF scripts (ie: OCF scripts that are not from the OpenStack foundation) should be packaged in the StarlingX repos and not in the stx-staging repos. The following 9 Distributed Cloud OCF scripts should be moved into the distributedcloud-dcorch rpm built from the openstack/stx-distcloud repo: dcmanager-api dcmanager-manager dcorch-cinder-api-proxy dcorch-engine dcorch-neutron-api-proxy dcorch-nova-api-proxy dcorch-patch-api-proxy dcorch-snmp dcorch-sysinv-api-proxy Depends-On: Ic7b040733e8df66bdd79d45675d63e58abbd85e1 Change-Id: I080b6e893d5f6ccff04951879eed71e8ccbe0b52 Story: 2003715 Task: 26374 Signed-off-by: Scott Little --- .../centos/distributedcloud.spec | 9 + .../openstack-ras/centos/build_srpm.data | 1 - .../centos/files/dcorch-identity-api-proxy | 327 ------------------ .../openstack-ras/centos/openstack-ras.spec | 12 - 4 files changed, 9 insertions(+), 340 deletions(-) delete mode 100644 openstack/openstack-ras/centos/files/dcorch-identity-api-proxy diff --git a/openstack/distributedcloud/centos/distributedcloud.spec b/openstack/distributedcloud/centos/distributedcloud.spec index 974319b1..c85aeced 100644 --- a/openstack/distributedcloud/centos/distributedcloud.spec +++ b/openstack/distributedcloud/centos/distributedcloud.spec @@ -76,6 +76,7 @@ Distributed Cloud Manager %package dcorch Summary: DC Orchestrator # TODO(John): should we add Requires lines? +Requires: openstack-ras %description dcorch Distributed Cloud Orchestrator @@ -126,6 +127,10 @@ install -p -D -m 644 %{SOURCE8} %{buildroot}%{_unitdir}/dcorch-cinder-api-proxy. install -p -D -m 644 %{SOURCE9} %{buildroot}%{_unitdir}/dcorch-neutron-api-proxy.service install -p -D -m 644 %{SOURCE10} %{buildroot}%{_unitdir}/dcorch-identity-api-proxy.service +# install ocf scripts +install -d -m 755 ${RPM_BUILD_ROOT}/usr/lib/ocf/resource.d/openstack +install -p -D -m 755 ocf/* ${RPM_BUILD_ROOT}/usr/lib/ocf/resource.d/openstack/ + # install default config files cd %{_builddir}/%{pypi_name}-%{version} && oslo-config-generator --config-file ./dcorch/config-generator.conf --output-file %{_builddir}/%{pypi_name}-%{version}/etc/dcorch/dcorch.conf.sample install -p -D -m 640 %{_builddir}/%{pypi_name}-%{version}/etc/dcorch/dcorch.conf.sample %{buildroot}%{_sysconfdir}/dcorch/dcorch.conf @@ -170,6 +175,10 @@ install -p -D -m 640 %{_builddir}/%{pypi_name}-%{version}/etc/dcorch/dcorch.conf %dir %attr(0755,root,root) %{_localstatedir}/cache/dcorch %dir %attr(0755,root,root) %{_sysconfdir}/dcorch %config(noreplace) %attr(-, dcorch, dcorch) %{_sysconfdir}/dcorch/dcorch.conf +%dir %attr(0755,root,root) /usr/lib/ocf/resource.d/openstack +%defattr(-,root,root,-) +/usr/lib/ocf/resource.d/openstack/* + %pre dcorch getent group dcorch >/dev/null || groupadd -r --gid 173 dcorch getent passwd dcorch >/dev/null || \ diff --git a/openstack/openstack-ras/centos/build_srpm.data b/openstack/openstack-ras/centos/build_srpm.data index b977484e..1adea914 100644 --- a/openstack/openstack-ras/centos/build_srpm.data +++ b/openstack/openstack-ras/centos/build_srpm.data @@ -1,5 +1,4 @@ SRC_DIR="$CGCS_BASE/git/openstack-ras" -COPY_LIST="$FILES_BASE/*" TIS_BASE_SRCREV=fe339af22d62454dca5a4f1ca071c958bfcd950d TIS_PATCH_VER=GITREVCOUNT diff --git a/openstack/openstack-ras/centos/files/dcorch-identity-api-proxy b/openstack/openstack-ras/centos/files/dcorch-identity-api-proxy deleted file mode 100644 index e38f22ba..00000000 --- a/openstack/openstack-ras/centos/files/dcorch-identity-api-proxy +++ /dev/null @@ -1,327 +0,0 @@ -#!/bin/sh -# OpenStack DC Orchestrator Identity Api Proxy Service (dcorch-identity-api-proxy) -# -# Description: -# Manages an OpenStack DC Orchestrator Identity Api Proxy Service (dcorch-identity-api-proxy) -# process as an HA resource -# -# -# Copyright (c) 2018 Wind River Systems, Inc. -# -# SPDX-License-Identifier: Apache-2.0 -# -# See usage() function below for more details ... -# -# OCF instance parameters: -# OCF_RESKEY_binary -# OCF_RESKEY_config -# OCF_RESKEY_user -# OCF_RESKEY_pid -# OCF_RESKEY_additional_parameters -####################################################################### -# Initialization: - -: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat} -. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs - -####################################################################### - -# Fill in some defaults if no values are specified - -OCF_RESKEY_binary_default="/usr/bin/dcorch-api-proxy" -OCF_RESKEY_config_default="/etc/dcorch/dcorch.conf" -OCF_RESKEY_user_default="dcorch" -OCF_RESKEY_pid_default="$HA_RSCTMP/$OCF_RESOURCE_INSTANCE.pid" - -: ${OCF_RESKEY_binary=${OCF_RESKEY_binary_default}} -: ${OCF_RESKEY_config=${OCF_RESKEY_config_default}} -: ${OCF_RESKEY_user=${OCF_RESKEY_user_default}} -: ${OCF_RESKEY_pid=${OCF_RESKEY_pid_default}} - -####################################################################### - -usage() { - cat < - - -1.0 - - -Resource agent for the DC Orchestrator Identity Api proxy service (dcorch-identity-api-proxy) - -Manages the OpenStack DC Orchestrator Identity Api Proxy Service (dcorch-identity-api-proxy) - - - - -Location of the DC Orchestrator Identity Api proxy server binary (dcorch-identity-api-proxy) - -DC Orchestrator Identity Api proxy server binary (dcorch-identity-api-proxy) - - - - - -Location of the DC Orchestrator Identity Api proxy (dcorch-identity-api-proxy) configuration file - -DC Orchestrator Identity Api proxy (dcorch-identity-api-proxy registry) config file - - - - - -User running DC Orchestrator Identity Api proxy (dcorch-identity-api-proxy) - -DC Orchestrator Identity Api proxy (dcorch-identity-api-proxy) user - - - - - -The pid file to use for this DC Orchestrator Identity Api proxy (dcorch-identity-api-proxy) instance - -DC Orchestrator Identity Api proxy (dcorch-identity-api-proxy) pid file - - - - - -Additional parameters to pass on to the OpenStack identity API (dcorch-identity-api-proxy) - -Additional parameters for dcorch-identity-api-proxy - - - - - - - - - - - - - - -END -} - -####################################################################### -# Functions invoked by resource manager actions - -dcorch_identity_api_proxy_validate() { - local rc - - check_binary $OCF_RESKEY_binary - check_binary curl - check_binary tr - check_binary grep - check_binary cut - check_binary head - - # A config file on shared storage that is not available - # during probes is OK. - if [ ! -f $OCF_RESKEY_config ]; then - if ! ocf_is_probe; then - ocf_log err "Config $OCF_RESKEY_config doesn't exist" - return $OCF_ERR_INSTALLED - fi - ocf_log_warn "Config $OCF_RESKEY_config not available during a probe" - fi - - getent passwd $OCF_RESKEY_user >/dev/null 2>&1 - rc=$? - if [ $rc -ne 0 ]; then - ocf_log err "User $OCF_RESKEY_user doesn't exist" - return $OCF_ERR_INSTALLED - fi - - true -} - -dcorch_identity_api_proxy_status() { - local pid - local rc - - if [ ! -f $OCF_RESKEY_pid ]; then - ocf_log info "DC Orchestrator Identity Api proxy (dcorch-identity-api-proxy) is not running" - return $OCF_NOT_RUNNING - else - pid=`cat $OCF_RESKEY_pid` - fi - - ocf_run -warn kill -s 0 $pid - rc=$? - if [ $rc -eq 0 ]; then - return $OCF_SUCCESS - else - ocf_log info "Old PID file found, but DC Orchestrator Identity Api proxy (dcorch-identity-api-proxy) is not running" - rm -f $OCF_RESKEY_pid - return $OCF_NOT_RUNNING - fi -} - -dcorch_identity_api_proxy_monitor() { - local rc - - dcorch_identity_api_proxy_status - rc=$? - - # If status returned anything but success, return that immediately - if [ $rc -ne $OCF_SUCCESS ]; then - return $rc - fi - - # Further verify the service availibility. - - ocf_log debug "DC Orchestrator Identity Api proxy (dcorch-identity-api-proxy) monitor succeeded" - return $OCF_SUCCESS -} - -dcorch_identity_api_proxy_start() { - local rc - - dcorch_identity_api_proxy_status - rc=$? - if [ $rc -eq $OCF_SUCCESS ]; then - ocf_log info "DC Orchestrator Identity Api proxy (dcorch-identity-api-proxy) already running" - return $OCF_SUCCESS - fi - - # Change the working dir to /, to be sure it's accesible - cd / - - # run the actual dcorch-identity-api-proxy daemon. Don't use ocf_run as we're sending the tool's output - # straight to /dev/null anyway and using ocf_run would break stdout-redirection here. - su ${OCF_RESKEY_user} -s /bin/sh -c "${OCF_RESKEY_binary} --config-file=$OCF_RESKEY_config --type identity \ - $OCF_RESKEY_additional_parameters"' >> /dev/null 2>&1 & echo $!' > $OCF_RESKEY_pid - - # Spin waiting for the server to come up. - # Let the CRM/LRM time us out if required - while true; do - dcorch_identity_api_proxy_monitor - rc=$? - [ $rc -eq $OCF_SUCCESS ] && break - if [ $rc -ne $OCF_NOT_RUNNING ]; then - ocf_log err "DC Orchestrator Identity Api proxy (dcorch-identity-api-proxy) start failed" - exit $OCF_ERR_GENERIC - fi - sleep 1 - done - - ocf_log info "DC Orchestrator Identity Api proxy (dcorch-identity-api-proxy) started" - return $OCF_SUCCESS -} - -dcorch_identity_api_proxy_confirm_stop() { - local my_bin - local my_processes - - my_binary=`which ${OCF_RESKEY_binary}` - my_type="identity" - my_processes=`pgrep -f "^(python|/usr/bin/python|/usr/bin/python2) ${my_binary} .*--type ${my_type}([^\w-]|$)"` - - if [ -n "${my_processes}" ] - then - ocf_log info "About to SIGKILL the following: ${my_processes}" - # replace the new line with with a space in the process list - kill -9 `echo "${my_processes}" | tr '\n' ' '` - fi -} - -dcorch_identity_api_proxy_stop() { - local rc - local pid - - dcorch_identity_api_proxy_status - rc=$? - if [ $rc -eq $OCF_NOT_RUNNING ]; then - ocf_log info "DC Orchestrator Identity Api proxy (dcorch-identity-api-proxy) already stopped" - dcorch_identity_api_proxy_confirm_stop - return $OCF_SUCCESS - fi - - # Try SIGTERM - pid=`cat $OCF_RESKEY_pid` - ocf_run kill -s TERM $pid - rc=$? - if [ $rc -ne 0 ]; then - ocf_log err "DC Orchestrator Identity Api proxy (dcorch-identity-api-proxy) couldn't be stopped" - dcorch_identity_api_proxy_confirm_stop - exit $OCF_ERR_GENERIC - fi - - # stop waiting - shutdown_timeout=15 - if [ -n "$OCF_RESKEY_CRM_meta_timeout" ]; then - shutdown_timeout=$((($OCF_RESKEY_CRM_meta_timeout/1000)-5)) - fi - count=0 - while [ $count -lt $shutdown_timeout ]; do - dcorch_identity_api_proxy_status - rc=$? - if [ $rc -eq $OCF_NOT_RUNNING ]; then - break - fi - count=`expr $count + 1` - sleep 1 - ocf_log debug "DC Orchestrator Identity Api proxy (dcorch-identity-api-proxy) still hasn't stopped yet. Waiting ..." - done - - dcorch_identity_api_proxy_status - rc=$? - if [ $rc -ne $OCF_NOT_RUNNING ]; then - # SIGTERM didn't help either, try SIGKILL - ocf_log info "DC Orchestrator Identity Api proxy (dcorch-identity-api-proxy) failed to stop after ${shutdown_timeout}s \ - using SIGTERM. Trying SIGKILL ..." - ocf_run kill -s KILL $pid - fi - dcorch_identity_api_proxy_confirm_stop - - ocf_log info "DC Orchestrator Identity Api proxy (dcorch-identity-api-proxy) stopped" - - rm -f $OCF_RESKEY_pid - - return $OCF_SUCCESS -} - -####################################################################### - -case "$1" in - meta-data) meta_data - exit $OCF_SUCCESS;; - usage|help) usage - exit $OCF_SUCCESS;; -esac - -# Anything except meta-data and help must pass validation -dcorch_identity_api_proxy_validate || exit $? - -# What kind of method was invoked? -case "$1" in - start) dcorch_identity_api_proxy_start;; - stop) dcorch_identity_api_proxy_stop;; - status) dcorch_identity_api_proxy_status;; - monitor) dcorch_identity_api_proxy_monitor;; - validate-all) ;; - *) usage - exit $OCF_ERR_UNIMPLEMENTED;; -esac - diff --git a/openstack/openstack-ras/centos/openstack-ras.spec b/openstack/openstack-ras/centos/openstack-ras.spec index b28608ed..223ef2cd 100644 --- a/openstack/openstack-ras/centos/openstack-ras.spec +++ b/openstack/openstack-ras/centos/openstack-ras.spec @@ -15,7 +15,6 @@ Requires: /usr/bin/env Requires: /bin/sh Source0: %{name}-%{version}.tar.gz -Source1: dcorch-identity-api-proxy %description OpenStack Resource Agents from Madkiss @@ -28,7 +27,6 @@ OpenStack Resource Agents from Madkiss rm -rf ${RPM_BUILD_ROOT}/usr/lib/ocf/resource.d/openstack/ceilometer-agent-central rm -rf ${RPM_BUILD_ROOT}/usr/lib/ocf/resource.d/openstack/ceilometer-alarm-evaluator rm -rf ${RPM_BUILD_ROOT}/usr/lib/ocf/resource.d/openstack/ceilometer-alarm-notifier -install -p -D -m 755 %{SOURCE1} ${RPM_BUILD_ROOT}/usr/lib/ocf/resource.d/openstack/dcorch-identity-api-proxy %files %defattr(-,root,root,-) @@ -71,13 +69,3 @@ install -p -D -m 755 %{SOURCE1} ${RPM_BUILD_ROOT}/usr/lib/ocf/resource.d/opensta "/usr/lib/ocf/resource.d/openstack/ceilometer-collector" "/usr/lib/ocf/resource.d/openstack/panko-api" "/usr/lib/ocf/resource.d/openstack/nova-placement-api" -"/usr/lib/ocf/resource.d/openstack/dcorch-snmp" -"/usr/lib/ocf/resource.d/openstack/dcmanager-manager" -"/usr/lib/ocf/resource.d/openstack/dcorch-nova-api-proxy" -"/usr/lib/ocf/resource.d/openstack/dcorch-sysinv-api-proxy" -"/usr/lib/ocf/resource.d/openstack/dcmanager-api" -"/usr/lib/ocf/resource.d/openstack/dcorch-engine" -"/usr/lib/ocf/resource.d/openstack/dcorch-neutron-api-proxy" -"/usr/lib/ocf/resource.d/openstack/dcorch-cinder-api-proxy" -"/usr/lib/ocf/resource.d/openstack/dcorch-patch-api-proxy" -"/usr/lib/ocf/resource.d/openstack/dcorch-identity-api-proxy"