utilities/tools/collector/debian-scripts/collect_dc.sh
Eric MacDonald f87df98a96 Use sm-query of service-group to determine controller activity state
Several collect plugins were using the 'sm-query service' with
'management-ip' as the target service to determine if the host
collect is running on is the active controller.

    sm-query service management-ip

Unfortunately, a recent update changed the name of the 'management-ip'
service. This change lead to that query always returning a 'disabled'
status.

This update changes to use 'sm-query service-group controller-services'
instead of a specific service query that might change again in the
future. It also migrates the replicated is_service_active function to
the collect_utils file making it common and reusable by all aspects of
collect. This function was renamed to 'is_controller_active' because
it's no longer representing the activity state of a particular service.

Test Plan:

PASS: Verify 'sysinv' plugin creates var/extra/inventory.info file
      on active controller. sysinv CLI command output.
PASS: Verify 'fm' plugin creates var/extra/alarm.info file
      on active controller. FM alarm and event listings.
PASS: Verify 'ceph' plugin creates var/extra/ceph.info file
      on active controller with 'ceph df' output content.
PASS: Verify 'dc' plugin creates var/extra/distributed_cloud.info file
      on active controller of a system controller or subcloud.

Closes-Bug: 2070496

Change-Id: I9989708f1d87a5ef312129cfe3ede8c862764cb0
Signed-off-by: Eric MacDonald <eric.macdonald@windriver.com>
2024-06-28 15:35:20 +00:00

88 lines
2.4 KiB
Bash
Executable File

#! /bin/bash
#
# Copyright (c) 2020-2022 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
# Loads Up Utilities and Commands Variables
source /usr/local/sbin/collect_parms
source /usr/local/sbin/collect_utils
SERVICE="distributed_cloud"
LOGFILE="${extradir}/${SERVICE}.info"
function is_distributed_cloud_env {
distributed_cloud=`sm-query service-group distributed-cloud-services | grep "active"`
if [ -z "$distributed_cloud" ] ; then
return 0
else
return 1
fi
}
function is_subcloud {
subcloud=`cat /etc/platform/platform.conf | grep "distributed_cloud_role" | grep "subcloud"`
if [ -z "$subcloud" ] ; then
return 0
else
return 1
fi
}
# Must be a distributed cloud environment
is_distributed_cloud_env
if [ "$?" = "0" ] ; then
exit 0
fi
###############################################################################
# Only Controller
###############################################################################
if [ "$nodetype" = "controller" ] ; then
# Must be an active controller
is_active_controller
if [ "$?" = "0" ] ; then
exit 0
fi
echo "${hostname}: Distributed Cloud ..: ${LOGFILE}"
is_subcloud
if [ "$?" = "1" ] ; then
# Subcloud
echo "Distributed Cloud Role: Subcloud" >> ${LOGFILE}
delimiter ${LOGFILE} "Address Pool of System Controller"
# Prints the column names of the table
system addrpool-list --nowrap | head -3 2>>${COLLECT_ERROR_LOG} >> ${LOGFILE}
# Prints the System Controller's address pool
system addrpool-list --nowrap | grep "system-controller-subnet" 2>>${COLLECT_ERROR_LOG} >> ${LOGFILE}
else
# System Controller
echo "Distributed Cloud Role: System Controller" >> ${LOGFILE}
delimiter ${LOGFILE} "dcmanager alarm summary"
dcmanager alarm summary 2>>${COLLECT_ERROR_LOG} >> ${LOGFILE}
delimiter ${LOGFILE} "dcmanager subcloud list"
dcmanager subcloud list 2>>${COLLECT_ERROR_LOG} >> ${LOGFILE}
delimiter ${LOGFILE} "dcmanager subcloud-group list"
dcmanager subcloud-group list 2>>${COLLECT_ERROR_LOG} >> ${LOGFILE}
# copy the /opt/dc/ansible dir but exclude any iso files
rsync -a --exclude '*.iso' /opt/dc/ansible ${extradir}
delimiter ${LOGFILE} "find /opt/dc-vault -ls"
find /opt/dc-vault -ls 2>>${COLLECT_ERROR_LOG} >> ${LOGFILE}
fi
fi
exit 0