import resource-agents-4.9.0-29.el8
This commit is contained in:
parent
99d3d41908
commit
4325103a5f
2
.gitignore
vendored
2
.gitignore
vendored
@ -5,5 +5,7 @@ SOURCES/aliyun-python-sdk-ecs-4.9.3.tar.gz
|
||||
SOURCES/aliyun-python-sdk-vpc-3.0.2.tar.gz
|
||||
SOURCES/colorama-0.3.3.tar.gz
|
||||
SOURCES/google-cloud-sdk-360.0.0-linux-x86_64.tar.gz
|
||||
SOURCES/httplib2-0.20.4.tar.gz
|
||||
SOURCES/pycryptodome-3.6.4.tar.gz
|
||||
SOURCES/pyparsing-2.4.7-py2.py3-none-any.whl
|
||||
SOURCES/pyroute2-0.4.13.tar.gz
|
||||
|
@ -5,5 +5,7 @@ c2a98b9a1562d223a76514f05028488ca000c395 SOURCES/aliyun-python-sdk-ecs-4.9.3.tar
|
||||
f14647a4d37a9a254c4e711b95a7654fc418e41e SOURCES/aliyun-python-sdk-vpc-3.0.2.tar.gz
|
||||
0fe5bd8bca54dd71223778a1e0bcca9af324abb1 SOURCES/colorama-0.3.3.tar.gz
|
||||
81f039cf075e9c8b70d5af99c189296a9e031de3 SOURCES/google-cloud-sdk-360.0.0-linux-x86_64.tar.gz
|
||||
7caf4412d9473bf17352316249a8133fa70b7e37 SOURCES/httplib2-0.20.4.tar.gz
|
||||
326a73f58a62ebee00c11a12cfdd838b196e0e8e SOURCES/pycryptodome-3.6.4.tar.gz
|
||||
c8307f47e3b75a2d02af72982a2dfefa3f56e407 SOURCES/pyparsing-2.4.7-py2.py3-none-any.whl
|
||||
147149db11104c06d405fd077dcd2aa1c345f109 SOURCES/pyroute2-0.4.13.tar.gz
|
||||
|
@ -1,6 +1,6 @@
|
||||
diff -uNr a/heartbeat/gcp-vpc-move-ip.in b/heartbeat/gcp-vpc-move-ip.in
|
||||
--- a/heartbeat/gcp-vpc-move-ip.in 2019-04-05 09:20:26.164739897 +0200
|
||||
+++ b/heartbeat/gcp-vpc-move-ip.in 2019-04-05 09:21:01.331139742 +0200
|
||||
diff --color -uNr a/heartbeat/gcp-vpc-move-ip.in b/heartbeat/gcp-vpc-move-ip.in
|
||||
--- a/heartbeat/gcp-vpc-move-ip.in 2022-06-16 09:45:21.419090782 +0200
|
||||
+++ b/heartbeat/gcp-vpc-move-ip.in 2022-06-16 10:11:22.978648598 +0200
|
||||
@@ -36,7 +36,7 @@
|
||||
. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
|
||||
|
||||
@ -10,9 +10,9 @@ diff -uNr a/heartbeat/gcp-vpc-move-ip.in b/heartbeat/gcp-vpc-move-ip.in
|
||||
OCF_RESKEY_configuration_default="default"
|
||||
OCF_RESKEY_vpc_network_default="default"
|
||||
OCF_RESKEY_interface_default="eth0"
|
||||
diff -uNr a/heartbeat/gcp-vpc-move-route.in b/heartbeat/gcp-vpc-move-route.in
|
||||
--- a/heartbeat/gcp-vpc-move-route.in 2019-04-05 09:20:26.180739624 +0200
|
||||
+++ b/heartbeat/gcp-vpc-move-route.in 2019-04-05 09:22:28.648649593 +0200
|
||||
diff --color -uNr a/heartbeat/gcp-vpc-move-route.in b/heartbeat/gcp-vpc-move-route.in
|
||||
--- a/heartbeat/gcp-vpc-move-route.in 2022-06-16 09:45:21.420090788 +0200
|
||||
+++ b/heartbeat/gcp-vpc-move-route.in 2022-06-16 10:11:22.978648598 +0200
|
||||
@@ -45,6 +45,7 @@
|
||||
from ocf import *
|
||||
|
||||
@ -20,4 +20,15 @@ diff -uNr a/heartbeat/gcp-vpc-move-route.in b/heartbeat/gcp-vpc-move-route.in
|
||||
+ sys.path.insert(0, '/usr/lib/resource-agents/bundled/gcp')
|
||||
import googleapiclient.discovery
|
||||
import pyroute2
|
||||
except ImportError:
|
||||
try:
|
||||
diff --color -uNr a/heartbeat/gcp-vpc-move-vip.in b/heartbeat/gcp-vpc-move-vip.in
|
||||
--- a/heartbeat/gcp-vpc-move-vip.in 2022-06-16 09:45:21.420090788 +0200
|
||||
+++ b/heartbeat/gcp-vpc-move-vip.in 2022-06-16 10:11:22.979648603 +0200
|
||||
@@ -29,6 +29,7 @@
|
||||
from ocf import *
|
||||
|
||||
try:
|
||||
+ sys.path.insert(0, '/usr/lib/resource-agents/bundled/gcp')
|
||||
import googleapiclient.discovery
|
||||
try:
|
||||
from google.oauth2.service_account import Credentials as ServiceAccountCredentials
|
||||
|
@ -0,0 +1,55 @@
|
||||
From bb5cfa172ca58cd8adcedcaca92bde54d0645661 Mon Sep 17 00:00:00 2001
|
||||
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
|
||||
Date: Thu, 14 Jul 2022 10:55:19 +0200
|
||||
Subject: [PATCH] openstack-agents: set domain parameter's default to Default
|
||||
and fix missing parameter name in ocf_exit_reason
|
||||
|
||||
---
|
||||
heartbeat/openstack-common.sh | 10 +++++++---
|
||||
1 file changed, 7 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/openstack-common.sh b/heartbeat/openstack-common.sh
|
||||
index b6eec09c..14d290bd 100644
|
||||
--- a/heartbeat/openstack-common.sh
|
||||
+++ b/heartbeat/openstack-common.sh
|
||||
@@ -1,6 +1,10 @@
|
||||
+OCF_RESKEY_user_domain_name_default="Default"
|
||||
+OCF_RESKEY_project_domain_name_default="Default"
|
||||
OCF_RESKEY_openstackcli_default="/usr/bin/openstack"
|
||||
OCF_RESKEY_insecure_default="false"
|
||||
|
||||
+: ${OCF_RESKEY_user_domain_name=${OCF_RESKEY_user_domain_name_default}}
|
||||
+: ${OCF_RESKEY_project_domain_name=${OCF_RESKEY_project_domain_name_default}}
|
||||
: ${OCF_RESKEY_openstackcli=${OCF_RESKEY_openstackcli_default}}
|
||||
: ${OCF_RESKEY_insecure=${OCF_RESKEY_insecure_default}}
|
||||
|
||||
@@ -64,7 +68,7 @@ Keystone Project.
|
||||
Keystone User Domain Name.
|
||||
</longdesc>
|
||||
<shortdesc lang="en">Keystone User Domain Name</shortdesc>
|
||||
-<content type="string" />
|
||||
+<content type="string" default="${OCF_RESKEY_user_domain_name_default}" />
|
||||
</parameter>
|
||||
|
||||
<parameter name="project_domain_name" required="0">
|
||||
@@ -72,7 +76,7 @@ Keystone User Domain Name.
|
||||
Keystone Project Domain Name.
|
||||
</longdesc>
|
||||
<shortdesc lang="en">Keystone Project Domain Name</shortdesc>
|
||||
-<content type="string" />
|
||||
+<content type="string" default="${OCF_RESKEY_project_domain_name_default}" />
|
||||
</parameter>
|
||||
|
||||
<parameter name="openstackcli">
|
||||
@@ -133,7 +137,7 @@ get_config() {
|
||||
exit $OCF_ERR_CONFIGURED
|
||||
fi
|
||||
if [ -z "$OCF_RESKEY_project_domain_name" ]; then
|
||||
- ocf_exit_reason " not set"
|
||||
+ ocf_exit_reason "project_domain_name not set"
|
||||
exit $OCF_ERR_CONFIGURED
|
||||
fi
|
||||
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,282 @@
|
||||
From ebea4c3620261c529cad908c0e52064df84b0c61 Mon Sep 17 00:00:00 2001
|
||||
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
|
||||
Date: Mon, 11 Jul 2022 10:28:11 +0200
|
||||
Subject: [PATCH] openstack-agents: warn when openstackcli is slow
|
||||
|
||||
---
|
||||
heartbeat/openstack-cinder-volume | 19 +++++++++++--------
|
||||
heartbeat/openstack-common.sh | 22 ++++++++++++++++++++++
|
||||
heartbeat/openstack-floating-ip | 17 ++++++++++-------
|
||||
heartbeat/openstack-info.in | 20 ++++++++++----------
|
||||
heartbeat/openstack-virtual-ip | 20 ++++++++++----------
|
||||
5 files changed, 63 insertions(+), 35 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/openstack-cinder-volume b/heartbeat/openstack-cinder-volume
|
||||
index 19bf04faf..116442c41 100755
|
||||
--- a/heartbeat/openstack-cinder-volume
|
||||
+++ b/heartbeat/openstack-cinder-volume
|
||||
@@ -113,11 +113,14 @@ _get_node_id() {
|
||||
}
|
||||
|
||||
osvol_validate() {
|
||||
+ local result
|
||||
+
|
||||
check_binary "$OCF_RESKEY_openstackcli"
|
||||
|
||||
get_config
|
||||
|
||||
- if ! $OCF_RESKEY_openstackcli volume list|grep -q $OCF_RESKEY_volume_id ; then
|
||||
+ result=$(run_openstackcli "volume list")
|
||||
+ if ! echo "$result" | grep -q $OCF_RESKEY_volume_id; then
|
||||
ocf_exit_reason "volume-id $OCF_RESKEY_volume_id not found"
|
||||
return $OCF_ERR_CONFIGURED
|
||||
fi
|
||||
@@ -156,17 +159,17 @@ osvol_monitor() {
|
||||
# Is the volue attached?
|
||||
# We use the API
|
||||
#
|
||||
- result=$($OCF_RESKEY_openstackcli volume show \
|
||||
+ result=$(run_openstackcli "volume show \
|
||||
--column status \
|
||||
--column attachments \
|
||||
--format value \
|
||||
- $OCF_RESKEY_volume_id)
|
||||
+ $OCF_RESKEY_volume_id")
|
||||
|
||||
- if echo "$result" | grep -q available ; then
|
||||
+ if echo "$result" | grep -q available; then
|
||||
ocf_log warn "$OCF_RESKEY_volume_id is not attached to any instance"
|
||||
return $OCF_NOT_RUNNING
|
||||
else
|
||||
- export attached_server_id=$(echo $result|head -n1|
|
||||
+ export attached_server_id=$(echo "$result"|head -n1|
|
||||
grep -P -o "'server_id': '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}'"|
|
||||
grep -P -o "[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}")
|
||||
ocf_log info "$OCF_RESKEY_volume_id is attached to instance $attached_server_id"
|
||||
@@ -199,7 +202,7 @@ osvol_stop() {
|
||||
#
|
||||
# Detach the volume
|
||||
#
|
||||
- if ! $OCF_RESKEY_openstackcli server remove volume $node_id $OCF_RESKEY_volume_id ; then
|
||||
+ if ! run_openstackcli "server remove volume $node_id $OCF_RESKEY_volume_id"; then
|
||||
ocf_log error "Couldn't remove volume $OCF_RESKEY_volume_id from instance $node_id"
|
||||
return $OCF_ERR_GENERIC
|
||||
fi
|
||||
@@ -225,7 +228,7 @@ osvol_start() {
|
||||
# TODO: make it optional in case multi-attachment is allowed by Cinder
|
||||
#
|
||||
if [ ! -z $attached_server_id ] ; then
|
||||
- if ! $OCF_RESKEY_openstackcli server remove volume $attached_server_id $OCF_RESKEY_volume_id ; then
|
||||
+ if ! run_openstackcli "server remove volume $attached_server_id $OCF_RESKEY_volume_id"; then
|
||||
ocf_log error "Couldn't remove volume $OCF_RESKEY_volume_id from instance $attached_server_id"
|
||||
return $OCF_ERR_GENERIC
|
||||
fi
|
||||
@@ -238,7 +241,7 @@ osvol_start() {
|
||||
#
|
||||
# Attach the volume
|
||||
#
|
||||
- $OCF_RESKEY_openstackcli server add volume $node_id $OCF_RESKEY_volume_id
|
||||
+ run_openstackcli "server add volume $node_id $OCF_RESKEY_volume_id"
|
||||
if [ $? != $OCF_SUCCESS ]; then
|
||||
ocf_log error "Couldn't add volume $OCF_RESKEY_volume_id to instance $node_id"
|
||||
return $OCF_ERR_GENERIC
|
||||
diff --git a/heartbeat/openstack-common.sh b/heartbeat/openstack-common.sh
|
||||
index 4763c90db..b6eec09c2 100644
|
||||
--- a/heartbeat/openstack-common.sh
|
||||
+++ b/heartbeat/openstack-common.sh
|
||||
@@ -145,3 +145,25 @@ get_config() {
|
||||
OCF_RESKEY_openstackcli="${OCF_RESKEY_openstackcli} --os-project-domain-name $OCF_RESKEY_project_domain_name"
|
||||
fi
|
||||
}
|
||||
+
|
||||
+run_openstackcli() {
|
||||
+ local cmd="${OCF_RESKEY_openstackcli} $1"
|
||||
+ local result
|
||||
+ local rc
|
||||
+ local start_time=$(date +%s)
|
||||
+ local end_time
|
||||
+ local elapsed_time
|
||||
+
|
||||
+ result=$($cmd)
|
||||
+ rc=$?
|
||||
+ end_time=$(date +%s)
|
||||
+ elapsed_time=$(expr $end_time - $start_time)
|
||||
+
|
||||
+ if [ $elapsed_time -gt 20 ]; then
|
||||
+ ocf_log warn "$cmd took ${elapsed_time}s to complete"
|
||||
+ fi
|
||||
+
|
||||
+ echo "$result"
|
||||
+
|
||||
+ return $rc
|
||||
+}
|
||||
diff --git a/heartbeat/openstack-floating-ip b/heartbeat/openstack-floating-ip
|
||||
index 6e2895654..7317f19a8 100755
|
||||
--- a/heartbeat/openstack-floating-ip
|
||||
+++ b/heartbeat/openstack-floating-ip
|
||||
@@ -101,11 +101,14 @@ END
|
||||
}
|
||||
|
||||
osflip_validate() {
|
||||
+ local result
|
||||
+
|
||||
check_binary "$OCF_RESKEY_openstackcli"
|
||||
|
||||
get_config
|
||||
|
||||
- if ! $OCF_RESKEY_openstackcli floating ip list|grep -q $OCF_RESKEY_ip_id ; then
|
||||
+ result=$(run_openstackcli "floating ip list")
|
||||
+ if ! echo "$result" | grep -q $OCF_RESKEY_ip_id; then
|
||||
ocf_exit_reason "ip-id $OCF_RESKEY_ip_id not found"
|
||||
return $OCF_ERR_CONFIGURED
|
||||
fi
|
||||
@@ -132,14 +135,14 @@ osflip_monitor() {
|
||||
| awk '{gsub("[^ ]*:", "");print}')
|
||||
|
||||
# Is the IP active and attached?
|
||||
- result=$($OCF_RESKEY_openstackcli floating ip show \
|
||||
+ result=$(run_openstackcli "floating ip show \
|
||||
--column port_id --column floating_ip_address \
|
||||
--format yaml \
|
||||
- $OCF_RESKEY_ip_id)
|
||||
+ $OCF_RESKEY_ip_id")
|
||||
|
||||
for port in $node_port_ids ; do
|
||||
- if echo $result | grep -q $port ; then
|
||||
- floating_ip=$(echo $result | awk '/floating_ip_address/ {print $2}')
|
||||
+ if echo "$result" | grep -q $port ; then
|
||||
+ floating_ip=$(echo "$result" | awk '/floating_ip_address/ {print $2}')
|
||||
${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -S status -n openstack_floating_ip -v $floating_ip
|
||||
|
||||
return $OCF_SUCCESS
|
||||
@@ -160,7 +163,7 @@ osflip_stop() {
|
||||
return $OCF_SUCCESS
|
||||
fi
|
||||
|
||||
- if ! $OCF_RESKEY_openstackcli floating ip unset --port $OCF_RESKEY_ip_id ; then
|
||||
+ if ! run_openstackcli "floating ip unset --port $OCF_RESKEY_ip_id"; then
|
||||
return $OCF_ERR_GENERIC
|
||||
fi
|
||||
|
||||
@@ -194,7 +197,7 @@ osflip_start() {
|
||||
|
||||
ocf_log info "Moving IP address $OCF_RESKEY_ip_id to port ID $node_port_id"
|
||||
|
||||
- $OCF_RESKEY_openstackcli floating ip set --port $node_port_id $OCF_RESKEY_ip_id
|
||||
+ run_openstackcli "floating ip set --port $node_port_id $OCF_RESKEY_ip_id"
|
||||
if [ $? != $OCF_SUCCESS ]; then
|
||||
ocf_log error "$OCF_RESKEY_ip_id Cannot be set to port $node_port_id"
|
||||
return $OCF_ERR_GENERIC
|
||||
diff --git a/heartbeat/openstack-info.in b/heartbeat/openstack-info.in
|
||||
index f3a59fc7a..6502f1df1 100755
|
||||
--- a/heartbeat/openstack-info.in
|
||||
+++ b/heartbeat/openstack-info.in
|
||||
@@ -119,9 +119,7 @@ END
|
||||
#######################################################################
|
||||
|
||||
OSInfoStats() {
|
||||
- local result
|
||||
local value
|
||||
- local node
|
||||
local node_id
|
||||
|
||||
get_config
|
||||
@@ -141,31 +139,33 @@ OSInfoStats() {
|
||||
${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n openstack_id -v "$node_id"
|
||||
|
||||
# Nova data: flavor
|
||||
- value=$($OCF_RESKEY_openstackcli server show \
|
||||
+ value=$(run_openstackcli "server show \
|
||||
--format value \
|
||||
--column flavor \
|
||||
- $node_id)
|
||||
+ $node_id")
|
||||
|
||||
${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n openstack_flavor -v "$value"
|
||||
|
||||
# Nova data: availability zone
|
||||
- value=$($OCF_RESKEY_openstackcli server show \
|
||||
+ value=$(run_openstackcli "server show \
|
||||
--format value \
|
||||
--column OS-EXT-AZ:availability_zone \
|
||||
- $node_id)
|
||||
+ $node_id")
|
||||
|
||||
${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n openstack_az -v "$value"
|
||||
|
||||
# Network data: ports
|
||||
value=""
|
||||
- for port_id in $($OCF_RESKEY_openstackcli port list \
|
||||
+ for port_id in $(run_openstackcli "port list \
|
||||
--format value \
|
||||
--column id \
|
||||
- --server $node_id); do
|
||||
- subnet_id=$($OCF_RESKEY_openstackcli port show \
|
||||
+ --server $node_id"); do
|
||||
+ subnet_result=$(run_openstackcli "port show \
|
||||
--format json \
|
||||
--column fixed_ips \
|
||||
- ${port_id} | grep -P '\"subnet_id\": \".*\",$' |
|
||||
+ ${port_id}")
|
||||
+ subnet_id=$(echo "$subnet_result" |
|
||||
+ grep -P '\"subnet_id\": \".*\",$' |
|
||||
grep -P -o '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}')
|
||||
value="${value}${subnet_id}:${port_id},"
|
||||
done
|
||||
diff --git a/heartbeat/openstack-virtual-ip b/heartbeat/openstack-virtual-ip
|
||||
index c654d980a..361357d55 100755
|
||||
--- a/heartbeat/openstack-virtual-ip
|
||||
+++ b/heartbeat/openstack-virtual-ip
|
||||
@@ -132,11 +132,11 @@ osvip_monitor() {
|
||||
|
||||
node_port_id=$(osvip_port_id)
|
||||
|
||||
- result=$($OCF_RESKEY_openstackcli port show \
|
||||
+ result=$(run_openstackcli "port show \
|
||||
--format value \
|
||||
--column allowed_address_pairs \
|
||||
- ${node_port_id})
|
||||
- if echo $result | grep -q "$OCF_RESKEY_ip"; then
|
||||
+ ${node_port_id}")
|
||||
+ if echo "$result" | grep -q "$OCF_RESKEY_ip"; then
|
||||
${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -S status -n openstack_virtual_ip -v $OCF_RESKEY_ip
|
||||
|
||||
return $OCF_SUCCESS
|
||||
@@ -158,20 +158,20 @@ osvip_stop() {
|
||||
return $OCF_SUCCESS
|
||||
fi
|
||||
|
||||
- mac_address=$($OCF_RESKEY_openstackcli port show \
|
||||
+ mac_address=$(run_openstackcli "port show \
|
||||
--format value \
|
||||
--column mac_address \
|
||||
- $node_port_id)
|
||||
- echo ${mac_address} | grep -q -P "^([0-9a-f]{2}:){5}[0-9a-f]{2}$"
|
||||
+ $node_port_id")
|
||||
+ echo "${mac_address}" | grep -q -P "^([0-9a-f]{2}:){5}[0-9a-f]{2}$"
|
||||
if [ $? -ne 0 ]; then
|
||||
ocf_log error "MAC address '${mac_address}' is not valid."
|
||||
return $OCF_ERR_GENERIC
|
||||
fi
|
||||
|
||||
- if ! $OCF_RESKEY_openstackcli port unset \
|
||||
+ if ! run_openstackcli "port unset \
|
||||
--allowed-address \
|
||||
ip-address=$OCF_RESKEY_ip,mac-address=${mac_address} \
|
||||
- $node_port_id; then
|
||||
+ $node_port_id"; then
|
||||
return $OCF_ERR_GENERIC
|
||||
fi
|
||||
|
||||
@@ -196,9 +196,9 @@ osvip_start() {
|
||||
|
||||
ocf_log info "Moving IP address $OCF_RESKEY_ip to port ID $node_port_id"
|
||||
|
||||
- $OCF_RESKEY_openstackcli port set \
|
||||
+ run_openstackcli "port set \
|
||||
--allowed-address ip-address=$OCF_RESKEY_ip \
|
||||
- $node_port_id
|
||||
+ $node_port_id"
|
||||
if [ $? != $OCF_SUCCESS ]; then
|
||||
ocf_log error "$OCF_RESKEY_ip Cannot be set to port $node_port_id"
|
||||
return $OCF_ERR_GENERIC
|
@ -0,0 +1,770 @@
|
||||
diff --color -uNr a/heartbeat/Makefile.am b/heartbeat/Makefile.am
|
||||
--- a/heartbeat/Makefile.am 2022-03-15 16:14:29.355209012 +0100
|
||||
+++ b/heartbeat/Makefile.am 2022-03-15 16:18:35.917048467 +0100
|
||||
@@ -217,6 +217,7 @@
|
||||
lvm-clvm.sh \
|
||||
lvm-plain.sh \
|
||||
lvm-tag.sh \
|
||||
+ openstack-common.sh \
|
||||
ora-common.sh \
|
||||
mysql-common.sh \
|
||||
nfsserver-redhat.sh \
|
||||
diff --color -uNr a/heartbeat/openstack-cinder-volume b/heartbeat/openstack-cinder-volume
|
||||
--- a/heartbeat/openstack-cinder-volume 2022-03-15 16:14:29.370209063 +0100
|
||||
+++ b/heartbeat/openstack-cinder-volume 2022-03-15 16:17:36.231840008 +0100
|
||||
@@ -34,11 +34,11 @@
|
||||
: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
|
||||
. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
|
||||
|
||||
+. ${OCF_FUNCTIONS_DIR}/openstack-common.sh
|
||||
+
|
||||
# Defaults
|
||||
-OCF_RESKEY_openstackcli_default="/usr/bin/openstack"
|
||||
OCF_RESKEY_volume_local_check_default="true"
|
||||
|
||||
-: ${OCF_RESKEY_openstackcli=${OCF_RESKEY_openstackcli_default}}
|
||||
: ${OCF_RESKEY_volume_local_check=${OCF_RESKEY_volume_local_check_default}}
|
||||
|
||||
#######################################################################
|
||||
@@ -68,14 +68,11 @@
|
||||
<shortdesc lang="en">Attach a cinder volume</shortdesc>
|
||||
|
||||
<parameters>
|
||||
-<parameter name="openstackcli">
|
||||
-<longdesc lang="en">
|
||||
-Path to command line tools for openstack.
|
||||
-</longdesc>
|
||||
-<shortdesc lang="en">Path to Openstack CLI tool</shortdesc>
|
||||
-<content type="string" default="${OCF_RESKEY_openstackcli_default}" />
|
||||
-</parameter>
|
||||
+END
|
||||
|
||||
+common_meta_data
|
||||
+
|
||||
+cat <<END
|
||||
<parameter name="volume_local_check">
|
||||
<longdesc lang="en">
|
||||
This option allows the cluster to monitor the cinder volume presence without
|
||||
@@ -85,28 +82,19 @@
|
||||
<content type="boolean" default="${OCF_RESKEY_volume_local_check_default}" />
|
||||
</parameter>
|
||||
|
||||
-<parameter name="openrc" required="1">
|
||||
-<longdesc lang="en">
|
||||
-Valid Openstack credentials as openrc file from api_access/openrc.
|
||||
-</longdesc>
|
||||
-<shortdesc lang="en">openrc file</shortdesc>
|
||||
-<content type="string" />
|
||||
-</parameter>
|
||||
-
|
||||
<parameter name="volume_id" required="1">
|
||||
<longdesc lang="en">
|
||||
-Cinder volume identifier to use to attach the bloc storage.
|
||||
+Cinder volume identifier to use to attach the block storage.
|
||||
</longdesc>
|
||||
<shortdesc lang="en">Volume ID</shortdesc>
|
||||
<content type="string" />
|
||||
</parameter>
|
||||
-
|
||||
</parameters>
|
||||
|
||||
<actions>
|
||||
<action name="start" timeout="180s" />
|
||||
<action name="stop" timeout="180s" />
|
||||
-<action name="monitor" depth="0" timeout="30s" interval="60s" />
|
||||
+<action name="monitor" depth="0" timeout="180s" interval="60s" />
|
||||
<action name="validate-all" timeout="5s" />
|
||||
<action name="meta-data" timeout="5s" />
|
||||
</actions>
|
||||
@@ -127,17 +115,7 @@
|
||||
osvol_validate() {
|
||||
check_binary "$OCF_RESKEY_openstackcli"
|
||||
|
||||
- if [ -z "$OCF_RESKEY_openrc" ]; then
|
||||
- ocf_exit_reason "openrc parameter not set"
|
||||
- return $OCF_ERR_CONFIGURED
|
||||
- fi
|
||||
-
|
||||
- if [ ! -f "$OCF_RESKEY_openrc" ] ; then
|
||||
- ocf_exit_reason "openrc file not found"
|
||||
- return $OCF_ERR_CONFIGURED
|
||||
- fi
|
||||
-
|
||||
- . $OCF_RESKEY_openrc
|
||||
+ get_config
|
||||
|
||||
if ! $OCF_RESKEY_openstackcli volume list|grep -q $OCF_RESKEY_volume_id ; then
|
||||
ocf_exit_reason "volume-id $OCF_RESKEY_volume_id not found"
|
||||
diff --color -uNr a/heartbeat/openstack-common.sh b/heartbeat/openstack-common.sh
|
||||
--- a/heartbeat/openstack-common.sh 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ b/heartbeat/openstack-common.sh 2022-03-15 16:17:36.232840011 +0100
|
||||
@@ -0,0 +1,147 @@
|
||||
+OCF_RESKEY_openstackcli_default="/usr/bin/openstack"
|
||||
+OCF_RESKEY_insecure_default="false"
|
||||
+
|
||||
+: ${OCF_RESKEY_openstackcli=${OCF_RESKEY_openstackcli_default}}
|
||||
+: ${OCF_RESKEY_insecure=${OCF_RESKEY_insecure_default}}
|
||||
+
|
||||
+if ocf_is_true "${OCF_RESKEY_insecure}"; then
|
||||
+ OCF_RESKEY_openstackcli="${OCF_RESKEY_openstackcli} --insecure"
|
||||
+fi
|
||||
+
|
||||
+common_meta_data() {
|
||||
+ cat <<END
|
||||
+
|
||||
+<parameter name="cloud" required="0">
|
||||
+<longdesc lang="en">
|
||||
+Openstack cloud (from ~/.config/openstack/clouds.yaml or /etc/openstack/clouds.yaml).
|
||||
+</longdesc>
|
||||
+<shortdesc lang="en">Cloud from clouds.yaml</shortdesc>
|
||||
+<content type="string" />
|
||||
+</parameter>
|
||||
+
|
||||
+<parameter name="openrc" required="0">
|
||||
+<longdesc lang="en">
|
||||
+Openstack credentials as openrc file from api_access/openrc.
|
||||
+</longdesc>
|
||||
+<shortdesc lang="en">openrc file</shortdesc>
|
||||
+<content type="string" />
|
||||
+</parameter>
|
||||
+
|
||||
+<parameter name="auth_url" required="0">
|
||||
+<longdesc lang="en">
|
||||
+Keystone Auth URL
|
||||
+</longdesc>
|
||||
+<shortdesc lang="en">Keystone Auth URL</shortdesc>
|
||||
+<content type="string" />
|
||||
+</parameter>
|
||||
+
|
||||
+<parameter name="username" required="0">
|
||||
+<longdesc lang="en">
|
||||
+Username.
|
||||
+</longdesc>
|
||||
+<shortdesc lang="en">Username</shortdesc>
|
||||
+<content type="string" />
|
||||
+</parameter>
|
||||
+
|
||||
+<parameter name="password" required="0">
|
||||
+<longdesc lang="en">
|
||||
+Password.
|
||||
+</longdesc>
|
||||
+<shortdesc lang="en">Password</shortdesc>
|
||||
+<content type="string" />
|
||||
+</parameter>
|
||||
+
|
||||
+<parameter name="project_name" required="0">
|
||||
+<longdesc lang="en">
|
||||
+Keystone Project.
|
||||
+</longdesc>
|
||||
+<shortdesc lang="en">Keystone Project</shortdesc>
|
||||
+<content type="string" />
|
||||
+</parameter>
|
||||
+
|
||||
+<parameter name="user_domain_name" required="0">
|
||||
+<longdesc lang="en">
|
||||
+Keystone User Domain Name.
|
||||
+</longdesc>
|
||||
+<shortdesc lang="en">Keystone User Domain Name</shortdesc>
|
||||
+<content type="string" />
|
||||
+</parameter>
|
||||
+
|
||||
+<parameter name="project_domain_name" required="0">
|
||||
+<longdesc lang="en">
|
||||
+Keystone Project Domain Name.
|
||||
+</longdesc>
|
||||
+<shortdesc lang="en">Keystone Project Domain Name</shortdesc>
|
||||
+<content type="string" />
|
||||
+</parameter>
|
||||
+
|
||||
+<parameter name="openstackcli">
|
||||
+<longdesc lang="en">
|
||||
+Path to command line tools for openstack.
|
||||
+</longdesc>
|
||||
+<shortdesc lang="en">Path to Openstack CLI tool</shortdesc>
|
||||
+<content type="string" default="${OCF_RESKEY_openstackcli_default}" />
|
||||
+</parameter>
|
||||
+
|
||||
+<parameter name="insecure">
|
||||
+<longdesc lang="en">
|
||||
+Allow insecure connections
|
||||
+</longdesc>
|
||||
+<shortdesc lang="en">Allow insecure connections</shortdesc>
|
||||
+<content type="boolean" default="${OCF_RESKEY_insecure_default}" />
|
||||
+</parameter>
|
||||
+END
|
||||
+}
|
||||
+
|
||||
+get_config() {
|
||||
+ if [ -n "$OCF_RESKEY_cloud" ]; then
|
||||
+ TILDE=$(echo ~)
|
||||
+ clouds_yaml="$TILDE/.config/openstack/clouds.yaml"
|
||||
+ if [ ! -f "$clouds_yaml" ]; then
|
||||
+ clouds_yaml="/etc/openstack/clouds.yaml"
|
||||
+ fi
|
||||
+ if [ ! -f "$clouds_yaml" ]; then
|
||||
+ ocf_exit_reason "~/.config/openstack/clouds.yaml and /etc/openstack/clouds.yaml does not exist"
|
||||
+ exit $OCF_ERR_CONFIGURED
|
||||
+ fi
|
||||
+ OCF_RESKEY_openstackcli="${OCF_RESKEY_openstackcli} --os-cloud $OCF_RESKEY_cloud"
|
||||
+ elif [ -n "$OCF_RESKEY_openrc" ]; then
|
||||
+ if [ ! -f "$OCF_RESKEY_openrc" ]; then
|
||||
+ ocf_exit_reason "$OCF_RESKEY_openrc does not exist"
|
||||
+ exit $OCF_ERR_CONFIGURED
|
||||
+ fi
|
||||
+ . $OCF_RESKEY_openrc
|
||||
+ else
|
||||
+ if [ -z "$OCF_RESKEY_auth_url" ]; then
|
||||
+ ocf_exit_reason "auth_url not set"
|
||||
+ exit $OCF_ERR_CONFIGURED
|
||||
+ fi
|
||||
+ if [ -z "$OCF_RESKEY_username" ]; then
|
||||
+ ocf_exit_reason "username not set"
|
||||
+ exit $OCF_ERR_CONFIGURED
|
||||
+ fi
|
||||
+ if [ -z "$OCF_RESKEY_password" ]; then
|
||||
+ ocf_exit_reason "password not set"
|
||||
+ exit $OCF_ERR_CONFIGURED
|
||||
+ fi
|
||||
+ if [ -z "$OCF_RESKEY_project_name" ]; then
|
||||
+ ocf_exit_reason "project_name not set"
|
||||
+ exit $OCF_ERR_CONFIGURED
|
||||
+ fi
|
||||
+ if [ -z "$OCF_RESKEY_user_domain_name" ]; then
|
||||
+ ocf_exit_reason "user_domain_name not set"
|
||||
+ exit $OCF_ERR_CONFIGURED
|
||||
+ fi
|
||||
+ if [ -z "$OCF_RESKEY_project_domain_name" ]; then
|
||||
+ ocf_exit_reason " not set"
|
||||
+ exit $OCF_ERR_CONFIGURED
|
||||
+ fi
|
||||
+
|
||||
+ OCF_RESKEY_openstackcli="${OCF_RESKEY_openstackcli} --os-auth-url $OCF_RESKEY_auth_url"
|
||||
+ OCF_RESKEY_openstackcli="${OCF_RESKEY_openstackcli} --os-username $OCF_RESKEY_username"
|
||||
+ OCF_RESKEY_openstackcli="${OCF_RESKEY_openstackcli} --os-password $OCF_RESKEY_password"
|
||||
+ OCF_RESKEY_openstackcli="${OCF_RESKEY_openstackcli} --os-project-name $OCF_RESKEY_project_name"
|
||||
+ OCF_RESKEY_openstackcli="${OCF_RESKEY_openstackcli} --os-user-domain-name $OCF_RESKEY_user_domain_name"
|
||||
+ OCF_RESKEY_openstackcli="${OCF_RESKEY_openstackcli} --os-project-domain-name $OCF_RESKEY_project_domain_name"
|
||||
+ fi
|
||||
+}
|
||||
diff --color -uNr a/heartbeat/openstack-floating-ip b/heartbeat/openstack-floating-ip
|
||||
--- a/heartbeat/openstack-floating-ip 2022-03-15 16:14:29.370209063 +0100
|
||||
+++ b/heartbeat/openstack-floating-ip 2022-03-15 16:17:36.233840014 +0100
|
||||
@@ -34,10 +34,9 @@
|
||||
: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
|
||||
. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
|
||||
|
||||
-# Defaults
|
||||
-OCF_RESKEY_openstackcli_default="/usr/bin/openstack"
|
||||
+. ${OCF_FUNCTIONS_DIR}/openstack-common.sh
|
||||
|
||||
-: ${OCF_RESKEY_openstackcli=${OCF_RESKEY_openstackcli_default}}
|
||||
+# Defaults
|
||||
|
||||
#######################################################################
|
||||
|
||||
@@ -67,22 +66,11 @@
|
||||
<shortdesc lang="en">Move a floating IP</shortdesc>
|
||||
|
||||
<parameters>
|
||||
-<parameter name="openstackcli">
|
||||
-<longdesc lang="en">
|
||||
-Path to command line tools for openstack.
|
||||
-</longdesc>
|
||||
-<shortdesc lang="en">Path to Openstack CLI tool</shortdesc>
|
||||
-<content type="string" default="${OCF_RESKEY_openstackcli_default}" />
|
||||
-</parameter>
|
||||
+END
|
||||
|
||||
-<parameter name="openrc" required="1">
|
||||
-<longdesc lang="en">
|
||||
-Valid Openstack credentials as openrc file from api_access/openrc.
|
||||
-</longdesc>
|
||||
-<shortdesc lang="en">openrc file</shortdesc>
|
||||
-<content type="string" />
|
||||
-</parameter>
|
||||
+common_meta_data
|
||||
|
||||
+cat <<END
|
||||
<parameter name="ip_id" required="1">
|
||||
<longdesc lang="en">
|
||||
Floating IP Identifier.
|
||||
@@ -104,7 +92,7 @@
|
||||
<actions>
|
||||
<action name="start" timeout="180s" />
|
||||
<action name="stop" timeout="180s" />
|
||||
-<action name="monitor" depth="0" timeout="30s" interval="60s" />
|
||||
+<action name="monitor" depth="0" timeout="180s" interval="60s" />
|
||||
<action name="validate-all" timeout="5s" />
|
||||
<action name="meta-data" timeout="5s" />
|
||||
</actions>
|
||||
@@ -115,17 +103,7 @@
|
||||
osflip_validate() {
|
||||
check_binary "$OCF_RESKEY_openstackcli"
|
||||
|
||||
- if [ -z "$OCF_RESKEY_openrc" ]; then
|
||||
- ocf_exit_reason "openrc parameter not set"
|
||||
- return $OCF_ERR_CONFIGURED
|
||||
- fi
|
||||
-
|
||||
- if [ ! -f "$OCF_RESKEY_openrc" ] ; then
|
||||
- ocf_exit_reason "openrc file not found"
|
||||
- return $OCF_ERR_CONFIGURED
|
||||
- fi
|
||||
-
|
||||
- . $OCF_RESKEY_openrc
|
||||
+ get_config
|
||||
|
||||
if ! $OCF_RESKEY_openstackcli floating ip list|grep -q $OCF_RESKEY_ip_id ; then
|
||||
ocf_exit_reason "ip-id $OCF_RESKEY_ip_id not found"
|
||||
diff --color -uNr a/heartbeat/openstack-info b/heartbeat/openstack-info
|
||||
--- a/heartbeat/openstack-info 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ b/heartbeat/openstack-info 2022-03-15 16:17:36.234840018 +0100
|
||||
@@ -0,0 +1,270 @@
|
||||
+#!/bin/sh
|
||||
+#
|
||||
+#
|
||||
+# OCF resource agent to set attributes from Openstack instance details.
|
||||
+# It records (in the CIB) various attributes of a node
|
||||
+#
|
||||
+# Copyright (c) 2018 Mathieu Grzybek
|
||||
+# All Rights Reserved.
|
||||
+#
|
||||
+# This program is free software; you can redistribute it and/or modify
|
||||
+# it under the terms of version 2 of the GNU General Public License as
|
||||
+# published by the Free Software Foundation.
|
||||
+#
|
||||
+# This program is distributed in the hope that it would be useful, but
|
||||
+# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
+#
|
||||
+# Further, this software is distributed without any warranty that it is
|
||||
+# free of the rightful claim of any third person regarding infringement
|
||||
+# or the like. Any license provided herein, whether implied or
|
||||
+# otherwise, applies only to this software file. Patent licenses, if
|
||||
+# any, provided herein do not apply to combinations of this program with
|
||||
+# other software, or any other product whatsoever.
|
||||
+#
|
||||
+# You should have received a copy of the GNU General Public License
|
||||
+# along with this program; if not, write the Free Software Foundation,
|
||||
+# Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
|
||||
+#
|
||||
+#######################################################################
|
||||
+# Initialization:
|
||||
+
|
||||
+: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
|
||||
+. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
|
||||
+
|
||||
+. ${OCF_FUNCTIONS_DIR}/openstack-common.sh
|
||||
+
|
||||
+# Defaults
|
||||
+OCF_RESKEY_pidfile_default="$HA_RSCTMP/OSInfo-${OCF_RESOURCE_HOSTNAME}"
|
||||
+OCF_RESKEY_delay_default="0"
|
||||
+OCF_RESKEY_clone_default="0"
|
||||
+OCF_RESKEY_curlcli_default="/usr/bin/curl"
|
||||
+OCF_RESKEY_pythoncli_default="/usr/bin/python"
|
||||
+
|
||||
+: ${OCF_RESKEY_curlcli=${OCF_RESKEY_curlcli_default}}
|
||||
+: ${OCF_RESKEY_pythoncli=${OCF_RESKEY_pythoncli_default}}
|
||||
+: ${OCF_RESKEY_pidfile=${OCF_RESKEY_pidfile_default}}
|
||||
+: ${OCF_RESKEY_delay=${OCF_RESKEY_delay_default}}
|
||||
+: ${OCF_RESKEY_clone=${OCF_RESKEY_clone_default}}
|
||||
+
|
||||
+#######################################################################
|
||||
+
|
||||
+meta_data() {
|
||||
+ cat <<END
|
||||
+<?xml version="1.0"?>
|
||||
+<!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd">
|
||||
+<resource-agent name="openstack-info" version="1.0">
|
||||
+<version>1.0</version>
|
||||
+
|
||||
+<longdesc lang="en">
|
||||
+OCF resource agent to set attributes from Openstack instance details.
|
||||
+It records (in the CIB) various attributes of a node.
|
||||
+Sample output:
|
||||
+ openstack_az : nova
|
||||
+ openstack_flavor : c1.small
|
||||
+ openstack_id : 60ac4343-5828-49b1-8aac-7c69b1417f31
|
||||
+ openstack_ports : 7960d889-9750-4160-bf41-c69a41ad72d9:96530d18-57a3-4718-af32-30f2a74c22a2,b0e55a06-bd75-468d-8baa-22cfeb65799f:a55ae917-8016-4b1e-8ffa-04311b9dc7d6
|
||||
+
|
||||
+The layout of openstack_ports is a comma-separated list of tuples "subnet_id:port_id".
|
||||
+</longdesc>
|
||||
+<shortdesc lang="en">Records various node attributes in the CIB</shortdesc>
|
||||
+
|
||||
+<parameters>
|
||||
+END
|
||||
+
|
||||
+common_meta_data
|
||||
+
|
||||
+ cat <<END
|
||||
+<parameter name="pidfile" unique="0">
|
||||
+<longdesc lang="en">PID file</longdesc>
|
||||
+<shortdesc lang="en">PID file</shortdesc>
|
||||
+<content type="string" default="${OCF_RESKEY_pidfile_default}" />
|
||||
+</parameter>
|
||||
+
|
||||
+<parameter name="delay" unique="0">
|
||||
+<longdesc lang="en">Interval to allow values to stabilize</longdesc>
|
||||
+<shortdesc lang="en">Dampening Delay</shortdesc>
|
||||
+<content type="string" default="${OCF_RESKEY_delay_default}" />
|
||||
+</parameter>
|
||||
+
|
||||
+<parameter name="curlcli">
|
||||
+<longdesc lang="en">
|
||||
+Path to command line cURL binary.
|
||||
+</longdesc>
|
||||
+<shortdesc lang="en">Path to cURL binary</shortdesc>
|
||||
+<content type="string" default="${OCF_RESKEY_curlcli_default}" />
|
||||
+</parameter>
|
||||
+
|
||||
+<parameter name="pythoncli">
|
||||
+<longdesc lang="en">
|
||||
+Path to command line Python interpreter.
|
||||
+</longdesc>
|
||||
+<shortdesc lang="en">Path to Python interpreter</shortdesc>
|
||||
+<content type="string" default="${OCF_RESKEY_pythoncli_default}" />
|
||||
+</parameter>
|
||||
+
|
||||
+</parameters>
|
||||
+
|
||||
+<actions>
|
||||
+<action name="start" timeout="180s" />
|
||||
+<action name="stop" timeout="180s" />
|
||||
+<action name="monitor" timeout="30s" interval="60s"/>
|
||||
+<action name="meta-data" timeout="5s" />
|
||||
+<action name="validate-all" timeout="20s" />
|
||||
+</actions>
|
||||
+</resource-agent>
|
||||
+END
|
||||
+}
|
||||
+
|
||||
+#######################################################################
|
||||
+
|
||||
+OSInfoStats() {
|
||||
+ local result
|
||||
+ local value
|
||||
+ local node
|
||||
+ local node_id
|
||||
+
|
||||
+ get_config
|
||||
+
|
||||
+ # Nova data: server ID
|
||||
+ node_id=$($OCF_RESKEY_curlcli \
|
||||
+ -s http://169.254.169.254/openstack/latest/meta_data.json |
|
||||
+ $OCF_RESKEY_pythoncli -m json.tool |
|
||||
+ grep -P '\"uuid\": \".*\",$' |
|
||||
+ grep -P -o '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}')
|
||||
+
|
||||
+ if [ $? -ne 0 ] ; then
|
||||
+ ocf_exit_reason "Cannot find server ID"
|
||||
+ exit $OCF_ERR_GENERIC
|
||||
+ fi
|
||||
+
|
||||
+ ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n openstack_id -v "$node_id"
|
||||
+
|
||||
+ # Nova data: flavor
|
||||
+ value=$($OCF_RESKEY_openstackcli server show \
|
||||
+ --format value \
|
||||
+ --column flavor \
|
||||
+ $node_id)
|
||||
+
|
||||
+ ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n openstack_flavor -v "$value"
|
||||
+
|
||||
+ # Nova data: availability zone
|
||||
+ value=$($OCF_RESKEY_openstackcli server show \
|
||||
+ --format value \
|
||||
+ --column OS-EXT-AZ:availability_zone \
|
||||
+ $node_id)
|
||||
+
|
||||
+ ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n openstack_az -v "$value"
|
||||
+
|
||||
+ # Network data: ports
|
||||
+ value=""
|
||||
+ for port_id in $($OCF_RESKEY_openstackcli port list \
|
||||
+ --format value \
|
||||
+ --column id \
|
||||
+ --server $node_id); do
|
||||
+ subnet_id=$($OCF_RESKEY_openstackcli port show \
|
||||
+ --format json \
|
||||
+ --column fixed_ips \
|
||||
+ ${port_id} | grep -P '\"subnet_id\": \".*\",$' |
|
||||
+ grep -P -o '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}')
|
||||
+ value+="${subnet_id}:${port_id},"
|
||||
+ done
|
||||
+ value=$(echo ${value} | sed -e 's/,$//g')
|
||||
+
|
||||
+ ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n openstack_ports -v "$value"
|
||||
+
|
||||
+ if [ ! -z "$OS_REGION_NAME" ] ; then
|
||||
+ ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n openstack_region -v "$OS_REGION_NAME"
|
||||
+ fi
|
||||
+
|
||||
+ if [ ! -z "$OS_TENANT_ID" ] ; then
|
||||
+ ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n openstack_tenant_id -v "$OS_TENANT_ID"
|
||||
+
|
||||
+ if [ ! -z "$OS_TENANT_NAME" ] ; then
|
||||
+ ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n openstack_tenant_name -v "$OS_TENANT_NAME"
|
||||
+ fi
|
||||
+ else
|
||||
+ ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n openstack_project_id -v "$OS_PROJECT_ID"
|
||||
+
|
||||
+ if [ ! -z "$OS_PROJECT_NAME" ] ; then
|
||||
+ ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n openstack_project_name -v "$OS_PROJECT_NAME"
|
||||
+ fi
|
||||
+ fi
|
||||
+
|
||||
+}
|
||||
+
|
||||
+OSInfo_usage() {
|
||||
+ cat <<END
|
||||
+usage: $0 {start|stop|monitor|validate-all|meta-data}
|
||||
+
|
||||
+Expects to have a fully populated OCF RA-compliant environment set.
|
||||
+END
|
||||
+}
|
||||
+
|
||||
+OSInfo_start() {
|
||||
+ echo $OCF_RESKEY_clone > $OCF_RESKEY_pidfile
|
||||
+ OSInfoStats
|
||||
+ exit $OCF_SUCCESS
|
||||
+}
|
||||
+
|
||||
+OSInfo_stop() {
|
||||
+ rm -f $OCF_RESKEY_pidfile
|
||||
+ ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -D -n openstack_id
|
||||
+ ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -D -n openstack_flavor
|
||||
+ ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -D -n openstack_az
|
||||
+ ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -D -n openstack_ports
|
||||
+ ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -D -n openstack_region
|
||||
+ ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -D -n openstack_tenant_id
|
||||
+ ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -D -n openstack_tenant_name
|
||||
+ ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -D -n openstack_project_id
|
||||
+ ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -D -n openstack_project_name
|
||||
+ exit $OCF_SUCCESS
|
||||
+}
|
||||
+
|
||||
+OSInfo_monitor() {
|
||||
+ if [ -f "$OCF_RESKEY_pidfile" ] ; then
|
||||
+ OSInfoStats
|
||||
+ exit $OCF_RUNNING
|
||||
+ fi
|
||||
+ exit $OCF_NOT_RUNNING
|
||||
+}
|
||||
+
|
||||
+OSInfo_validate() {
|
||||
+ check_binary "$OCF_RESKEY_curlcli"
|
||||
+ check_binary "$OCF_RESKEY_openstackcli"
|
||||
+ check_binary "$OCF_RESKEY_pythoncli"
|
||||
+
|
||||
+ return $OCF_SUCCESS
|
||||
+}
|
||||
+
|
||||
+if [ $# -ne 1 ]; then
|
||||
+ OSInfo_usage
|
||||
+ exit $OCF_ERR_ARGS
|
||||
+fi
|
||||
+
|
||||
+if [ x != x${OCF_RESKEY_delay} ]; then
|
||||
+ OCF_RESKEY_delay="-d ${OCF_RESKEY_delay}"
|
||||
+fi
|
||||
+
|
||||
+case $__OCF_ACTION in
|
||||
+meta-data) meta_data
|
||||
+ exit $OCF_SUCCESS
|
||||
+ ;;
|
||||
+start) OSInfo_validate || exit $?
|
||||
+ OSInfo_start
|
||||
+ ;;
|
||||
+stop) OSInfo_stop
|
||||
+ ;;
|
||||
+monitor) OSInfo_monitor
|
||||
+ ;;
|
||||
+validate-all) OSInfo_validate
|
||||
+ ;;
|
||||
+usage|help) OSInfo_usage
|
||||
+ exit $OCF_SUCCESS
|
||||
+ ;;
|
||||
+*) OSInfo_usage
|
||||
+ exit $OCF_ERR_UNIMPLEMENTED
|
||||
+ ;;
|
||||
+esac
|
||||
+
|
||||
+exit $?
|
||||
diff --color -uNr a/heartbeat/openstack-info.in b/heartbeat/openstack-info.in
|
||||
--- a/heartbeat/openstack-info.in 2022-03-15 16:14:29.370209063 +0100
|
||||
+++ b/heartbeat/openstack-info.in 2022-03-15 16:17:36.234840018 +0100
|
||||
@@ -32,16 +32,16 @@
|
||||
: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
|
||||
. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
|
||||
|
||||
+. ${OCF_FUNCTIONS_DIR}/openstack-common.sh
|
||||
+
|
||||
# Defaults
|
||||
OCF_RESKEY_pidfile_default="$HA_RSCTMP/OSInfo-${OCF_RESOURCE_HOSTNAME}"
|
||||
OCF_RESKEY_delay_default="0"
|
||||
OCF_RESKEY_clone_default="0"
|
||||
OCF_RESKEY_curlcli_default="/usr/bin/curl"
|
||||
-OCF_RESKEY_openstackcli_default="/usr/bin/openstack"
|
||||
OCF_RESKEY_pythoncli_default="@PYTHON@"
|
||||
|
||||
: ${OCF_RESKEY_curlcli=${OCF_RESKEY_curlcli_default}}
|
||||
-: ${OCF_RESKEY_openstackcli=${OCF_RESKEY_openstackcli_default}}
|
||||
: ${OCF_RESKEY_pythoncli=${OCF_RESKEY_pythoncli_default}}
|
||||
: ${OCF_RESKEY_pidfile=${OCF_RESKEY_pidfile_default}}
|
||||
: ${OCF_RESKEY_delay=${OCF_RESKEY_delay_default}}
|
||||
@@ -70,25 +70,23 @@
|
||||
<shortdesc lang="en">Records various node attributes in the CIB</shortdesc>
|
||||
|
||||
<parameters>
|
||||
+END
|
||||
+
|
||||
+common_meta_data
|
||||
+
|
||||
+ cat <<END
|
||||
<parameter name="pidfile" unique="0">
|
||||
<longdesc lang="en">PID file</longdesc>
|
||||
<shortdesc lang="en">PID file</shortdesc>
|
||||
<content type="string" default="${OCF_RESKEY_pidfile_default}" />
|
||||
</parameter>
|
||||
+
|
||||
<parameter name="delay" unique="0">
|
||||
<longdesc lang="en">Interval to allow values to stabilize</longdesc>
|
||||
<shortdesc lang="en">Dampening Delay</shortdesc>
|
||||
<content type="string" default="${OCF_RESKEY_delay_default}" />
|
||||
</parameter>
|
||||
|
||||
-<parameter name="openrc" required="1">
|
||||
-<longdesc lang="en">
|
||||
-Valid Openstack credentials as openrc file from api_access/openrc.
|
||||
-</longdesc>
|
||||
-<shortdesc lang="en">openrc file</shortdesc>
|
||||
-<content type="string" />
|
||||
-</parameter>
|
||||
-
|
||||
<parameter name="curlcli">
|
||||
<longdesc lang="en">
|
||||
Path to command line cURL binary.
|
||||
@@ -97,14 +95,6 @@
|
||||
<content type="string" default="${OCF_RESKEY_curlcli_default}" />
|
||||
</parameter>
|
||||
|
||||
-<parameter name="openstackcli">
|
||||
-<longdesc lang="en">
|
||||
-Path to command line tools for openstack.
|
||||
-</longdesc>
|
||||
-<shortdesc lang="en">Path to Openstack CLI tool</shortdesc>
|
||||
-<content type="string" default="${OCF_RESKEY_openstackcli_default}" />
|
||||
-</parameter>
|
||||
-
|
||||
<parameter name="pythoncli">
|
||||
<longdesc lang="en">
|
||||
Path to command line Python interpreter.
|
||||
@@ -116,9 +106,9 @@
|
||||
</parameters>
|
||||
|
||||
<actions>
|
||||
-<action name="start" timeout="20s" />
|
||||
-<action name="stop" timeout="20s" />
|
||||
-<action name="monitor" timeout="20s" interval="60s"/>
|
||||
+<action name="start" timeout="180s" />
|
||||
+<action name="stop" timeout="180s" />
|
||||
+<action name="monitor" timeout="180s" interval="60s"/>
|
||||
<action name="meta-data" timeout="5s" />
|
||||
<action name="validate-all" timeout="20s" />
|
||||
</actions>
|
||||
@@ -134,7 +124,7 @@
|
||||
local node
|
||||
local node_id
|
||||
|
||||
- . $OCF_RESKEY_openrc
|
||||
+ get_config
|
||||
|
||||
# Nova data: server ID
|
||||
node_id=$($OCF_RESKEY_curlcli \
|
||||
@@ -244,16 +234,6 @@
|
||||
check_binary "$OCF_RESKEY_openstackcli"
|
||||
check_binary "$OCF_RESKEY_pythoncli"
|
||||
|
||||
- if [ -z "$OCF_RESKEY_openrc" ]; then
|
||||
- ocf_exit_reason "openrc parameter not set"
|
||||
- return $OCF_ERR_CONFIGURED
|
||||
- fi
|
||||
-
|
||||
- if [ ! -f "$OCF_RESKEY_openrc" ] ; then
|
||||
- ocf_exit_reason "openrc file not found"
|
||||
- return $OCF_ERR_CONFIGURED
|
||||
- fi
|
||||
-
|
||||
return $OCF_SUCCESS
|
||||
}
|
||||
|
||||
diff --color -uNr a/heartbeat/openstack-virtual-ip b/heartbeat/openstack-virtual-ip
|
||||
--- a/heartbeat/openstack-virtual-ip 2022-03-15 16:14:29.370209063 +0100
|
||||
+++ b/heartbeat/openstack-virtual-ip 2022-03-15 16:17:36.235840021 +0100
|
||||
@@ -34,10 +34,9 @@
|
||||
: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
|
||||
. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
|
||||
|
||||
-# Defaults
|
||||
-OCF_RESKEY_openstackcli_default="/usr/bin/openstack"
|
||||
+. ${OCF_FUNCTIONS_DIR}/openstack-common.sh
|
||||
|
||||
-: ${OCF_RESKEY_openstackcli=${OCF_RESKEY_openstackcli_default}}
|
||||
+# Defaults
|
||||
|
||||
#######################################################################
|
||||
|
||||
@@ -68,22 +67,11 @@
|
||||
<shortdesc lang="en">Move a virtual IP</shortdesc>
|
||||
|
||||
<parameters>
|
||||
-<parameter name="openstackcli">
|
||||
-<longdesc lang="en">
|
||||
-Path to command line tools for openstack.
|
||||
-</longdesc>
|
||||
-<shortdesc lang="en">Path to Openstack CLI tool</shortdesc>
|
||||
-<content type="string" default="${OCF_RESKEY_openstackcli_default}" />
|
||||
-</parameter>
|
||||
+END
|
||||
|
||||
-<parameter name="openrc" required="1">
|
||||
-<longdesc lang="en">
|
||||
-Valid Openstack credentials as openrc file from api_access/openrc.
|
||||
-</longdesc>
|
||||
-<shortdesc lang="en">openrc file</shortdesc>
|
||||
-<content type="string" />
|
||||
-</parameter>
|
||||
+common_meta_data
|
||||
|
||||
+cat <<END
|
||||
<parameter name="ip" required="1">
|
||||
<longdesc lang="en">
|
||||
Virtual IP Address.
|
||||
@@ -105,7 +93,7 @@
|
||||
<actions>
|
||||
<action name="start" timeout="180s" />
|
||||
<action name="stop" timeout="180s" />
|
||||
-<action name="monitor" depth="0" timeout="30s" interval="60s" />
|
||||
+<action name="monitor" depth="0" timeout="180s" interval="60s" />
|
||||
<action name="validate-all" timeout="5s" />
|
||||
<action name="meta-data" timeout="5s" />
|
||||
</actions>
|
||||
@@ -128,17 +116,7 @@
|
||||
osvip_validate() {
|
||||
check_binary "$OCF_RESKEY_openstackcli"
|
||||
|
||||
- if [ -z "$OCF_RESKEY_openrc" ]; then
|
||||
- ocf_exit_reason "openrc parameter not set"
|
||||
- return $OCF_ERR_CONFIGURED
|
||||
- fi
|
||||
-
|
||||
- if [ ! -f "$OCF_RESKEY_openrc" ] ; then
|
||||
- ocf_exit_reason "openrc file not found"
|
||||
- return $OCF_ERR_CONFIGURED
|
||||
- fi
|
||||
-
|
||||
- . $OCF_RESKEY_openrc
|
||||
+ get_config
|
||||
|
||||
${HA_SBIN_DIR}/attrd_updater --query -n openstack_ports -N $(crm_node -n) > /dev/null 2>&1
|
||||
if [ $? -ne 0 ] ; then
|
@ -0,0 +1,72 @@
|
||||
From 64f434014bc198055478a139532c7cc133967c5d Mon Sep 17 00:00:00 2001
|
||||
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
|
||||
Date: Fri, 8 Jul 2022 15:41:34 +0200
|
||||
Subject: [PATCH] openstack-agents: fixes
|
||||
|
||||
- openstack-cinder-volume: dont do volume_local_check during start/stop-action
|
||||
- openstack-floating-ip/openstack-virtual-ip: dont fail in validate()
|
||||
during probe-calls
|
||||
- openstack-floating-ip: fix awk only catching last id for node_port_ids
|
||||
---
|
||||
heartbeat/openstack-cinder-volume | 2 +-
|
||||
heartbeat/openstack-floating-ip | 4 ++--
|
||||
heartbeat/openstack-virtual-ip | 4 ++--
|
||||
3 files changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/openstack-cinder-volume b/heartbeat/openstack-cinder-volume
|
||||
index cc12e58ae..19bf04faf 100755
|
||||
--- a/heartbeat/openstack-cinder-volume
|
||||
+++ b/heartbeat/openstack-cinder-volume
|
||||
@@ -138,7 +138,7 @@ osvol_monitor() {
|
||||
|
||||
node_id=$(_get_node_id)
|
||||
|
||||
- if ocf_is_true $OCF_RESKEY_volume_local_check ; then
|
||||
+ if [ "$__OCF_ACTION" = "monitor" ] && ocf_is_true $OCF_RESKEY_volume_local_check ; then
|
||||
#
|
||||
# Is the volue attached?
|
||||
# We check the local devices
|
||||
diff --git a/heartbeat/openstack-floating-ip b/heartbeat/openstack-floating-ip
|
||||
index 8c135cc24..6e2895654 100755
|
||||
--- a/heartbeat/openstack-floating-ip
|
||||
+++ b/heartbeat/openstack-floating-ip
|
||||
@@ -111,7 +111,7 @@ osflip_validate() {
|
||||
fi
|
||||
|
||||
${HA_SBIN_DIR}/attrd_updater --query -n openstack_ports -N $(crm_node -n) > /dev/null 2>&1
|
||||
- if [ $? -ne 0 ] ; then
|
||||
+ if [ $? -ne 0 ] && ! ocf_is_probe; then
|
||||
ocf_log warn "attr_updater failed to get openstack_ports attribute of node $OCF_RESOURCE_INSTANCE"
|
||||
return $OCF_ERR_GENERIC
|
||||
fi
|
||||
@@ -129,7 +129,7 @@ osflip_monitor() {
|
||||
node_port_ids=$(${HA_SBIN_DIR}/attrd_updater --query -n openstack_ports -N $(crm_node -n) \
|
||||
| awk -F= '{gsub("\"","");print $NF}' \
|
||||
| tr ',' ' ' \
|
||||
- | awk -F: '{print $NF}')
|
||||
+ | awk '{gsub("[^ ]*:", "");print}')
|
||||
|
||||
# Is the IP active and attached?
|
||||
result=$($OCF_RESKEY_openstackcli floating ip show \
|
||||
diff --git a/heartbeat/openstack-virtual-ip b/heartbeat/openstack-virtual-ip
|
||||
index a1084c420..c654d980a 100755
|
||||
--- a/heartbeat/openstack-virtual-ip
|
||||
+++ b/heartbeat/openstack-virtual-ip
|
||||
@@ -119,7 +119,7 @@ osvip_validate() {
|
||||
get_config
|
||||
|
||||
${HA_SBIN_DIR}/attrd_updater --query -n openstack_ports -N $(crm_node -n) > /dev/null 2>&1
|
||||
- if [ $? -ne 0 ] ; then
|
||||
+ if [ $? -ne 0 ] && ! ocf_is_probe; then
|
||||
ocf_log warn "attr_updater failed to get openstack_ports attribute of node $OCF_RESOURCE_INSTANCE"
|
||||
return $OCF_ERR_GENERIC
|
||||
fi
|
||||
@@ -136,7 +136,7 @@ osvip_monitor() {
|
||||
--format value \
|
||||
--column allowed_address_pairs \
|
||||
${node_port_id})
|
||||
- if echo $result | grep -q $OCF_RESKEY_ip ; then
|
||||
+ if echo $result | grep -q "$OCF_RESKEY_ip"; then
|
||||
${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -S status -n openstack_virtual_ip -v $OCF_RESKEY_ip
|
||||
|
||||
return $OCF_SUCCESS
|
26
SOURCES/bz1908148-openstack-info-fix-bashism.patch
Normal file
26
SOURCES/bz1908148-openstack-info-fix-bashism.patch
Normal file
@ -0,0 +1,26 @@
|
||||
From 8b1d3257e5176a2f50a843a21888c4b4f51f370b Mon Sep 17 00:00:00 2001
|
||||
From: Valentin Vidic <vvidic@valentin-vidic.from.hr>
|
||||
Date: Sun, 3 Apr 2022 20:31:50 +0200
|
||||
Subject: [PATCH] openstack-info: fix bashism
|
||||
|
||||
Also simplify striping of trailing comma.
|
||||
---
|
||||
heartbeat/openstack-info.in | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/openstack-info.in b/heartbeat/openstack-info.in
|
||||
index f6dc1ee4d..f3a59fc7a 100755
|
||||
--- a/heartbeat/openstack-info.in
|
||||
+++ b/heartbeat/openstack-info.in
|
||||
@@ -167,9 +167,9 @@ OSInfoStats() {
|
||||
--column fixed_ips \
|
||||
${port_id} | grep -P '\"subnet_id\": \".*\",$' |
|
||||
grep -P -o '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}')
|
||||
- value+="${subnet_id}:${port_id},"
|
||||
+ value="${value}${subnet_id}:${port_id},"
|
||||
done
|
||||
- value=$(echo ${value} | sed -e 's/,$//g')
|
||||
+ value=${value%,}
|
||||
|
||||
${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n openstack_ports -v "$value"
|
||||
|
@ -0,0 +1,44 @@
|
||||
From 26de0ad2f0f975166fe79ef72ab08e2c03519eea Mon Sep 17 00:00:00 2001
|
||||
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
|
||||
Date: Mon, 28 Mar 2022 13:25:35 +0200
|
||||
Subject: [PATCH] Filesystem: fix logic for UUID/label devices with space
|
||||
between parameter and UUID/label
|
||||
|
||||
---
|
||||
heartbeat/Filesystem | 14 ++++++++++----
|
||||
1 file changed, 10 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/Filesystem b/heartbeat/Filesystem
|
||||
index 1a90d6a42..72a1b8623 100755
|
||||
--- a/heartbeat/Filesystem
|
||||
+++ b/heartbeat/Filesystem
|
||||
@@ -596,11 +596,11 @@ Filesystem_start()
|
||||
flushbufs "$DEVICE"
|
||||
# Mount the filesystem.
|
||||
case "$FSTYPE" in
|
||||
- none) $MOUNT $options "$DEVICE" "$MOUNTPOINT" &&
|
||||
+ none) $MOUNT $options $device_opt "$DEVICE" "$MOUNTPOINT" &&
|
||||
bind_mount
|
||||
;;
|
||||
- "") $MOUNT $options "$DEVICE" "$MOUNTPOINT" ;;
|
||||
- *) $MOUNT -t "$FSTYPE" $options "$DEVICE" "$MOUNTPOINT" ;;
|
||||
+ "") $MOUNT $options $device_opt "$DEVICE" "$MOUNTPOINT" ;;
|
||||
+ *) $MOUNT -t "$FSTYPE" $options $device_opt "$DEVICE" "$MOUNTPOINT" ;;
|
||||
esac
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
@@ -902,7 +902,13 @@ set_blockdevice_var() {
|
||||
fi
|
||||
|
||||
case "$DEVICE" in
|
||||
- -*) # Oh... An option to mount instead... Typically -U or -L
|
||||
+ --*) # Typically --uuid or --label
|
||||
+ device_opt=$(echo $DEVICE | sed -E "s/([[:blank:]]|=).*//")
|
||||
+ DEVICE=$(echo $DEVICE | sed -E "s/$device_opt([[:blank:]]*|=)//")
|
||||
+ ;;
|
||||
+ -*) # Oh... An option to mount instead... Typically -U or -L
|
||||
+ device_opt=$(echo $DEVICE | cut -c1-2)
|
||||
+ DEVICE=$(echo $DEVICE | sed "s/$device_opt[[:blank:]]*//")
|
||||
;;
|
||||
/dev/null) # Special case for BSC
|
||||
blockdevice=yes
|
@ -0,0 +1,38 @@
|
||||
From d9b46474fc19d9c57e2cfb752d60319017da8410 Mon Sep 17 00:00:00 2001
|
||||
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
|
||||
Date: Wed, 6 Apr 2022 14:14:19 +0200
|
||||
Subject: [PATCH] Filesystem: improve logic for UUID/label and add note that
|
||||
/dev/disk/by-{uuid,label}/ are preferred on Linux
|
||||
|
||||
---
|
||||
heartbeat/Filesystem | 8 +++++---
|
||||
1 file changed, 5 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/Filesystem b/heartbeat/Filesystem
|
||||
index 72a1b8623..44270ad98 100755
|
||||
--- a/heartbeat/Filesystem
|
||||
+++ b/heartbeat/Filesystem
|
||||
@@ -163,6 +163,8 @@ directory where the status file is to be placed.
|
||||
<parameter name="device" required="1">
|
||||
<longdesc lang="en">
|
||||
The name of block device for the filesystem, or -U, -L options for mount, or NFS mount specification.
|
||||
+
|
||||
+NOTE: On Linux /dev/disk/by-{uuid,label}/ are preferred to -U/-L.
|
||||
</longdesc>
|
||||
<shortdesc lang="en">block device</shortdesc>
|
||||
<content type="string" default="${OCF_RESKEY_device_default}" />
|
||||
@@ -902,11 +904,11 @@ set_blockdevice_var() {
|
||||
fi
|
||||
|
||||
case "$DEVICE" in
|
||||
- --*) # Typically --uuid or --label
|
||||
- device_opt=$(echo $DEVICE | sed -E "s/([[:blank:]]|=).*//")
|
||||
+ --uuid=*|--uuid\ *|--label=*|--label\ *)
|
||||
+ device_opt=$(echo $DEVICE | sed "s/\([[:blank:]]\|=\).*//")
|
||||
DEVICE=$(echo $DEVICE | sed -E "s/$device_opt([[:blank:]]*|=)//")
|
||||
;;
|
||||
- -*) # Oh... An option to mount instead... Typically -U or -L
|
||||
+ -U*|-L*) # short versions of --uuid/--label
|
||||
device_opt=$(echo $DEVICE | cut -c1-2)
|
||||
DEVICE=$(echo $DEVICE | sed "s/$device_opt[[:blank:]]*//")
|
||||
;;
|
@ -0,0 +1,49 @@
|
||||
From 5a65f66ff803ad7ed15af958cc1efdde4d53dcb7 Mon Sep 17 00:00:00 2001
|
||||
From: Reid Wahl <nrwahl@protonmail.com>
|
||||
Date: Thu, 17 Feb 2022 03:53:21 -0800
|
||||
Subject: [PATCH] IPsrcaddr: Better error message when no matching route found
|
||||
|
||||
If OCF_RESKEY_destination is not explicitly set and `ip route list`
|
||||
can't find a route matching the specifications, the NETWORK variable
|
||||
doesn't get set. This causes a certain failure of the start operation,
|
||||
because there is no PREFIX argument to `ip route replace` (syntax
|
||||
error). It may also cause unexpected behavior for stop operations (but
|
||||
not in all cases). During a monitor, this event can only happen if
|
||||
something has changed outside the cluster's control, and so is cause
|
||||
for warning there.
|
||||
|
||||
Exit OCF_ERR_ARGS for start, log debug for probe, log warning for all
|
||||
other ops.
|
||||
|
||||
Resolves: RHBZ#1654862
|
||||
|
||||
Signed-off-by: Reid Wahl <nrwahl@protonmail.com>
|
||||
---
|
||||
heartbeat/IPsrcaddr | 14 ++++++++++++++
|
||||
1 file changed, 14 insertions(+)
|
||||
|
||||
diff --git a/heartbeat/IPsrcaddr b/heartbeat/IPsrcaddr
|
||||
index fd7b6f68d..f0216722d 100755
|
||||
--- a/heartbeat/IPsrcaddr
|
||||
+++ b/heartbeat/IPsrcaddr
|
||||
@@ -549,6 +549,20 @@ rc=$?
|
||||
INTERFACE=`echo $findif_out | awk '{print $1}'`
|
||||
if [ "$OCF_RESKEY_destination" = "0.0.0.0/0" ] ;then
|
||||
NETWORK=`$IP2UTIL route list dev $INTERFACE scope link $PROTO match $ipaddress|grep -m 1 -o '^[^ ]*'`
|
||||
+
|
||||
+ if [ -z "$NETWORK" ]; then
|
||||
+ err_str="command '$IP2UTIL route list dev $INTERFACE scope link $PROTO"
|
||||
+ err_str="$err_str match $ipaddress' failed to find a matching route"
|
||||
+
|
||||
+ if [ "$__OCF_ACTION" = "start" ]; then
|
||||
+ ocf_exit_reason "$err_str"
|
||||
+ exit $OCF_ERR_ARGS
|
||||
+ elif ! ocf_is_probe; then
|
||||
+ ocf_log warn "$err_str"
|
||||
+ else
|
||||
+ ocf_log debug "$err_str"
|
||||
+ fi
|
||||
+ fi
|
||||
else
|
||||
NETWORK="$OCF_RESKEY_destination"
|
||||
fi
|
56
SOURCES/bz2064342-3-IPsrcaddr-fix-indentation.patch
Normal file
56
SOURCES/bz2064342-3-IPsrcaddr-fix-indentation.patch
Normal file
@ -0,0 +1,56 @@
|
||||
From 0a197f1cd227e768837dff778a0c56fc1085d434 Mon Sep 17 00:00:00 2001
|
||||
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
|
||||
Date: Mon, 21 Feb 2022 13:54:04 +0100
|
||||
Subject: [PATCH] IPsrcaddr: fix indentation in better error message code
|
||||
|
||||
---
|
||||
heartbeat/IPsrcaddr | 30 +++++++++++++++---------------
|
||||
1 file changed, 15 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/IPsrcaddr b/heartbeat/IPsrcaddr
|
||||
index f0216722d..c82adc0e9 100755
|
||||
--- a/heartbeat/IPsrcaddr
|
||||
+++ b/heartbeat/IPsrcaddr
|
||||
@@ -542,27 +542,27 @@ fi
|
||||
findif_out=`$FINDIF -C`
|
||||
rc=$?
|
||||
[ $rc -ne 0 ] && {
|
||||
- ocf_exit_reason "[$FINDIF -C] failed"
|
||||
- exit $rc
|
||||
+ ocf_exit_reason "[$FINDIF -C] failed"
|
||||
+ exit $rc
|
||||
}
|
||||
|
||||
INTERFACE=`echo $findif_out | awk '{print $1}'`
|
||||
if [ "$OCF_RESKEY_destination" = "0.0.0.0/0" ] ;then
|
||||
NETWORK=`$IP2UTIL route list dev $INTERFACE scope link $PROTO match $ipaddress|grep -m 1 -o '^[^ ]*'`
|
||||
|
||||
- if [ -z "$NETWORK" ]; then
|
||||
- err_str="command '$IP2UTIL route list dev $INTERFACE scope link $PROTO"
|
||||
- err_str="$err_str match $ipaddress' failed to find a matching route"
|
||||
-
|
||||
- if [ "$__OCF_ACTION" = "start" ]; then
|
||||
- ocf_exit_reason "$err_str"
|
||||
- exit $OCF_ERR_ARGS
|
||||
- elif ! ocf_is_probe; then
|
||||
- ocf_log warn "$err_str"
|
||||
- else
|
||||
- ocf_log debug "$err_str"
|
||||
- fi
|
||||
- fi
|
||||
+ if [ -z "$NETWORK" ]; then
|
||||
+ err_str="command '$IP2UTIL route list dev $INTERFACE scope link $PROTO"
|
||||
+ err_str="$err_str match $ipaddress' failed to find a matching route"
|
||||
+
|
||||
+ if [ "$__OCF_ACTION" = "start" ]; then
|
||||
+ ocf_exit_reason "$err_str"
|
||||
+ exit $OCF_ERR_ARGS
|
||||
+ elif ! ocf_is_probe; then
|
||||
+ ocf_log warn "$err_str"
|
||||
+ else
|
||||
+ ocf_log debug "$err_str"
|
||||
+ fi
|
||||
+ fi
|
||||
else
|
||||
NETWORK="$OCF_RESKEY_destination"
|
||||
fi
|
117
SOURCES/bz2064342-4-IPsrcaddr-fixes.patch
Normal file
117
SOURCES/bz2064342-4-IPsrcaddr-fixes.patch
Normal file
@ -0,0 +1,117 @@
|
||||
From 50a596bfb977b18902dc62b99145bbd1a087690a Mon Sep 17 00:00:00 2001
|
||||
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
|
||||
Date: Tue, 1 Mar 2022 11:06:07 +0100
|
||||
Subject: [PATCH] IPsrcaddr: fixes
|
||||
|
||||
- use findif.sh to detect secondary interfaces
|
||||
- get metric and proto to update the correct route/update it correctly
|
||||
- match route using interface to fail when trying to update secondary
|
||||
interfaces without specifying destination (would update default route
|
||||
before)
|
||||
- also use PRIMARY_IP/OPTS during stop-action for default routes (to get
|
||||
back to the exact routes we started with)
|
||||
- dont fail during stop-action if route doesnt exist
|
||||
- use [[:blank:]] for WS to follow POSIX standard (suggested by nrwahl)
|
||||
---
|
||||
heartbeat/IPsrcaddr | 35 +++++++++++++++++++----------------
|
||||
1 file changed, 19 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/IPsrcaddr b/heartbeat/IPsrcaddr
|
||||
index c82adc0e9..7dbf65ff5 100755
|
||||
--- a/heartbeat/IPsrcaddr
|
||||
+++ b/heartbeat/IPsrcaddr
|
||||
@@ -52,6 +52,7 @@
|
||||
# Initialization:
|
||||
: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
|
||||
. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
|
||||
+. ${OCF_FUNCTIONS_DIR}/findif.sh
|
||||
|
||||
# Defaults
|
||||
OCF_RESKEY_ipaddress_default=""
|
||||
@@ -181,19 +182,21 @@ errorexit() {
|
||||
#
|
||||
# where the src clause "src Y.Y.Y.Y" may or may not be present
|
||||
|
||||
-WS="[`echo -en ' \t'`]"
|
||||
+WS="[[:blank:]]"
|
||||
OCTET="[0-9]\{1,3\}"
|
||||
IPADDR="\($OCTET\.\)\{3\}$OCTET"
|
||||
SRCCLAUSE="src$WS$WS*\($IPADDR\)"
|
||||
MATCHROUTE="\(.*${WS}\)\($SRCCLAUSE\)\($WS.*\|$\)"
|
||||
-FINDIF=$HA_BIN/findif
|
||||
+METRICCLAUSE=".*\(metric$WS[^ ]\+\)"
|
||||
+PROTOCLAUSE=".*\(proto$WS[^ ]\+\)"
|
||||
+FINDIF=findif
|
||||
|
||||
# findif needs that to be set
|
||||
export OCF_RESKEY_ip=$OCF_RESKEY_ipaddress
|
||||
|
||||
srca_read() {
|
||||
# Capture matching route - doublequotes prevent word splitting...
|
||||
- ROUTE="`$CMDSHOW 2> /dev/null`" || errorexit "command '$CMDSHOW' failed"
|
||||
+ ROUTE="`$CMDSHOW dev $INTERFACE 2> /dev/null`" || errorexit "command '$CMDSHOW' failed"
|
||||
|
||||
# ... so we can make sure there is only 1 matching route
|
||||
[ 1 -eq `echo "$ROUTE" | wc -l` ] || \
|
||||
@@ -201,7 +204,7 @@ srca_read() {
|
||||
|
||||
# But there might still be no matching route
|
||||
[ "$OCF_RESKEY_destination" = "0.0.0.0/0" ] && [ -z "$ROUTE" ] && \
|
||||
- ! ocf_is_probe && errorexit "no matching route exists"
|
||||
+ ! ocf_is_probe && [ "$__OCF_ACTION" != stop ] && errorexit "no matching route exists"
|
||||
|
||||
# Sed out the source ip address if it exists
|
||||
SRCIP=`echo $ROUTE | sed -n "s/$MATCHROUTE/\3/p"`
|
||||
@@ -232,8 +235,8 @@ srca_start() {
|
||||
rc=$OCF_SUCCESS
|
||||
ocf_log info "The ip route has been already set.($NETWORK, $INTERFACE, $ROUTE_WO_SRC)"
|
||||
else
|
||||
- $IP2UTIL route replace $TABLE $NETWORK dev $INTERFACE src $1 || \
|
||||
- errorexit "command 'ip route replace $TABLE $NETWORK dev $INTERFACE src $1' failed"
|
||||
+ $IP2UTIL route replace $TABLE $NETWORK dev $INTERFACE $PROTO src $1 $METRIC || \
|
||||
+ errorexit "command 'ip route replace $TABLE $NETWORK dev $INTERFACE $PROTO src $1 $METRIC' failed"
|
||||
|
||||
if [ "$OCF_RESKEY_destination" = "0.0.0.0/0" ] ;then
|
||||
$CMDCHANGE $ROUTE_WO_SRC src $1 || \
|
||||
@@ -266,14 +269,11 @@ srca_stop() {
|
||||
|
||||
[ $rc = 2 ] && errorexit "The address you specified to stop does not match the preferred source address"
|
||||
|
||||
- OPTS=""
|
||||
- if [ "$OCF_RESKEY_destination" != "0.0.0.0/0" ] ;then
|
||||
- PRIMARY_IP="$($IP2UTIL -4 -o addr show dev $INTERFACE primary | awk '{split($4,a,"/");print a[1]}')"
|
||||
- OPTS="proto kernel scope host src $PRIMARY_IP"
|
||||
- fi
|
||||
+ PRIMARY_IP="$($IP2UTIL -4 -o addr show dev $INTERFACE primary | awk '{split($4,a,"/");print a[1]}')"
|
||||
+ OPTS="proto kernel scope link src $PRIMARY_IP"
|
||||
|
||||
- $IP2UTIL route replace $TABLE $NETWORK dev $INTERFACE $OPTS || \
|
||||
- errorexit "command 'ip route replace $TABLE $NETWORK dev $INTERFACE $OPTS' failed"
|
||||
+ $IP2UTIL route replace $TABLE $NETWORK dev $INTERFACE $OPTS $METRIC || \
|
||||
+ errorexit "command 'ip route replace $TABLE $NETWORK dev $INTERFACE $OPTS $METRIC' failed"
|
||||
|
||||
if [ "$OCF_RESKEY_destination" = "0.0.0.0/0" ] ;then
|
||||
$CMDCHANGE $ROUTE_WO_SRC || \
|
||||
@@ -539,16 +539,19 @@ if [ $rc -ne $OCF_SUCCESS ]; then
|
||||
esac
|
||||
fi
|
||||
|
||||
-findif_out=`$FINDIF -C`
|
||||
+findif_out=`$FINDIF`
|
||||
rc=$?
|
||||
[ $rc -ne 0 ] && {
|
||||
- ocf_exit_reason "[$FINDIF -C] failed"
|
||||
+ ocf_exit_reason "[$FINDIF] failed"
|
||||
exit $rc
|
||||
}
|
||||
|
||||
INTERFACE=`echo $findif_out | awk '{print $1}'`
|
||||
+LISTROUTE=`$IP2UTIL route list dev $INTERFACE scope link $PROTO match $ipaddress`
|
||||
+METRIC=`echo $LISTROUTE | sed -n "s/$METRICCLAUSE/\1/p"`
|
||||
+[ -z "$PROTO" ] && PROTO=`echo $LISTROUTE | sed -n "s/$PROTOCLAUSE/\1/p"`
|
||||
if [ "$OCF_RESKEY_destination" = "0.0.0.0/0" ] ;then
|
||||
- NETWORK=`$IP2UTIL route list dev $INTERFACE scope link $PROTO match $ipaddress|grep -m 1 -o '^[^ ]*'`
|
||||
+ NETWORK=`echo $LISTROUTE | grep -m 1 -o '^[^ ]*'`
|
||||
|
||||
if [ -z "$NETWORK" ]; then
|
||||
err_str="command '$IP2UTIL route list dev $INTERFACE scope link $PROTO"
|
102
SOURCES/bz2072043-LVM-activate-fix-fence-issue.patch
Normal file
102
SOURCES/bz2072043-LVM-activate-fix-fence-issue.patch
Normal file
@ -0,0 +1,102 @@
|
||||
From e651576c1b5c1ffbe0fd1b78f209be9a3f9764e7 Mon Sep 17 00:00:00 2001
|
||||
From: XingWei-Liu <liuxingwei@uniontech.com>
|
||||
Date: Thu, 10 Mar 2022 10:38:11 +0800
|
||||
Subject: [PATCH 1/4] change lvm_status return value from ocf_not_running to
|
||||
ocf_err_generic
|
||||
|
||||
---
|
||||
heartbeat/LVM-activate | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/heartbeat/LVM-activate b/heartbeat/LVM-activate
|
||||
index aed672ea3..0aef76706 100755
|
||||
--- a/heartbeat/LVM-activate
|
||||
+++ b/heartbeat/LVM-activate
|
||||
@@ -790,7 +790,7 @@ lvm_status() {
|
||||
fi
|
||||
|
||||
if [ $dm_count -eq 0 ]; then
|
||||
- return $OCF_NOT_RUNNING
|
||||
+ return $OCF_ERR_GENERIC
|
||||
fi
|
||||
|
||||
case "$OCF_CHECK_LEVEL" in
|
||||
|
||||
From 540ae56436a4f9547bb17aa206fe0e8c7a7fea87 Mon Sep 17 00:00:00 2001
|
||||
From: XingWei-Liu <liuxingwei@uniontech.com>
|
||||
Date: Thu, 10 Mar 2022 16:44:25 +0800
|
||||
Subject: [PATCH 2/4] add if ocf_is_probe in monitor func
|
||||
|
||||
---
|
||||
heartbeat/LVM-activate | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/heartbeat/LVM-activate b/heartbeat/LVM-activate
|
||||
index 0aef76706..c86606637 100755
|
||||
--- a/heartbeat/LVM-activate
|
||||
+++ b/heartbeat/LVM-activate
|
||||
@@ -790,7 +790,11 @@ lvm_status() {
|
||||
fi
|
||||
|
||||
if [ $dm_count -eq 0 ]; then
|
||||
- return $OCF_ERR_GENERIC
|
||||
+ if ocf_is_probe ;then
|
||||
+ return $OCF_NOT_RUNNING
|
||||
+ else
|
||||
+ return $OCF_ERR_GENERIC
|
||||
+ fi
|
||||
fi
|
||||
|
||||
case "$OCF_CHECK_LEVEL" in
|
||||
|
||||
From ae3f35d4f671f3288034a257c6dd8eff9a83447a Mon Sep 17 00:00:00 2001
|
||||
From: XingWei-Liu <liuxingwei@uniontech.com>
|
||||
Date: Thu, 10 Mar 2022 16:50:04 +0800
|
||||
Subject: [PATCH 3/4] add if ocf_is_probe in monitor func
|
||||
|
||||
---
|
||||
heartbeat/LVM-activate | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/LVM-activate b/heartbeat/LVM-activate
|
||||
index c86606637..f345f73a9 100755
|
||||
--- a/heartbeat/LVM-activate
|
||||
+++ b/heartbeat/LVM-activate
|
||||
@@ -791,9 +791,9 @@ lvm_status() {
|
||||
|
||||
if [ $dm_count -eq 0 ]; then
|
||||
if ocf_is_probe ;then
|
||||
- return $OCF_NOT_RUNNING
|
||||
- else
|
||||
return $OCF_ERR_GENERIC
|
||||
+ else
|
||||
+ return $OCF_NOT_RUNNING
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
From 1072c0490ef936a1a7dfd8411da434dce1569457 Mon Sep 17 00:00:00 2001
|
||||
From: XingWei-Liu <liuxingwei@uniontech.com>
|
||||
Date: Thu, 10 Mar 2022 18:10:21 +0800
|
||||
Subject: [PATCH 4/4] reverse return value in monitor func
|
||||
|
||||
---
|
||||
heartbeat/LVM-activate | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/LVM-activate b/heartbeat/LVM-activate
|
||||
index f345f73a9..c86606637 100755
|
||||
--- a/heartbeat/LVM-activate
|
||||
+++ b/heartbeat/LVM-activate
|
||||
@@ -791,9 +791,9 @@ lvm_status() {
|
||||
|
||||
if [ $dm_count -eq 0 ]; then
|
||||
if ocf_is_probe ;then
|
||||
- return $OCF_ERR_GENERIC
|
||||
- else
|
||||
return $OCF_NOT_RUNNING
|
||||
+ else
|
||||
+ return $OCF_ERR_GENERIC
|
||||
fi
|
||||
fi
|
||||
|
@ -0,0 +1,25 @@
|
||||
From b3885f7d95fe390371f806c7f3debb3ec8ad012d Mon Sep 17 00:00:00 2001
|
||||
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
|
||||
Date: Tue, 7 Jun 2022 15:20:11 +0200
|
||||
Subject: [PATCH] lvmlockd: fail when use_lvmlockd has not been set
|
||||
|
||||
---
|
||||
heartbeat/lvmlockd | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/heartbeat/lvmlockd b/heartbeat/lvmlockd
|
||||
index 05bb0a2e5..dc7bd2d7e 100755
|
||||
--- a/heartbeat/lvmlockd
|
||||
+++ b/heartbeat/lvmlockd
|
||||
@@ -179,6 +179,11 @@ setup_lvm_config()
|
||||
out=$(lvmconfig 'global/locking_type' 2> /dev/null)
|
||||
lock_type=$(echo "$out" | cut -d'=' -f2)
|
||||
|
||||
+ if [ -z "$use_lvmlockd" ]; then
|
||||
+ ocf_exit_reason "\"use_lvmlockd\" not set in /etc/lvm/lvm.conf ..."
|
||||
+ exit $OCF_ERR_CONFIGURED
|
||||
+ fi
|
||||
+
|
||||
if [ -n "$use_lvmlockd" ] && [ "$use_lvmlockd" != 1 ] ; then
|
||||
ocf_log info "setting \"use_lvmlockd=1\" in /etc/lvm/lvm.conf ..."
|
||||
sed -i 's,^[[:blank:]]*use_lvmlockd[[:blank:]]*=.*,\ \ \ \ use_lvmlockd = 1,g' /etc/lvm/lvm.conf
|
@ -0,0 +1,47 @@
|
||||
From 99c4f2af92a10155cf072198c72deffaed3883a5 Mon Sep 17 00:00:00 2001
|
||||
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
|
||||
Date: Wed, 3 Aug 2022 17:20:31 +0200
|
||||
Subject: [PATCH] CTDB: move process to root cgroup if realtime scheduling is
|
||||
enabled
|
||||
|
||||
---
|
||||
heartbeat/CTDB.in | 2 ++
|
||||
heartbeat/ocf-shellfuncs.in | 12 ++++++++++++
|
||||
2 files changed, 14 insertions(+)
|
||||
|
||||
diff --git a/heartbeat/CTDB.in b/heartbeat/CTDB.in
|
||||
index d25d026ca..46f56cfac 100755
|
||||
--- a/heartbeat/CTDB.in
|
||||
+++ b/heartbeat/CTDB.in
|
||||
@@ -709,6 +709,8 @@ EOF
|
||||
invoke_ctdbd() {
|
||||
local vers="$1"
|
||||
|
||||
+ ocf_move_to_root_cgroup_if_rt_enabled
|
||||
+
|
||||
ocf_version_cmp "$vers" "4.9.0"
|
||||
if [ "$?" -ne "0" ]; then
|
||||
# With 4.9+, all ctdbd binary parameters are provided as
|
||||
diff --git a/heartbeat/ocf-shellfuncs.in b/heartbeat/ocf-shellfuncs.in
|
||||
index 6be4e4e30..2c53a967a 100644
|
||||
--- a/heartbeat/ocf-shellfuncs.in
|
||||
+++ b/heartbeat/ocf-shellfuncs.in
|
||||
@@ -672,6 +672,18 @@ EOF
|
||||
systemctl daemon-reload
|
||||
}
|
||||
|
||||
+# move process to root cgroup if realtime scheduling is enabled
|
||||
+ocf_move_to_root_cgroup_if_rt_enabled()
|
||||
+{
|
||||
+ if [ -e "/sys/fs/cgroup/cpu/cpu.rt_runtime_us" ]; then
|
||||
+ echo $$ >> /sys/fs/cgroup/cpu/tasks
|
||||
+
|
||||
+ if [ "$?" -ne "0" ]; then
|
||||
+ ocf_log warn "Unable to move PID $$ to the root cgroup"
|
||||
+ fi
|
||||
+ fi
|
||||
+}
|
||||
+
|
||||
# usage: crm_mon_no_validation args...
|
||||
# run crm_mon without any cib schema validation
|
||||
# This is useful when an agent runs in a bundle to avoid potential
|
@ -0,0 +1,82 @@
|
||||
From 4420ef84f3172c67fc7b8b6ae41ea173de017bf4 Mon Sep 17 00:00:00 2001
|
||||
From: Petr Pavlu <petr.pavlu@suse.com>
|
||||
Date: Wed, 25 May 2022 15:12:33 +0200
|
||||
Subject: [PATCH] aws-vpc-move-ip: Allow to set the interface label
|
||||
|
||||
Add a parameter to specify an interface label to distinguish the IP
|
||||
address managed by aws-vpc-move-ip, similarly as can be done with
|
||||
IPaddr2. This allows to easily recognize the address from other
|
||||
addresses assigned to a given interface.
|
||||
---
|
||||
heartbeat/aws-vpc-move-ip | 30 +++++++++++++++++++++++++++++-
|
||||
1 file changed, 29 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/heartbeat/aws-vpc-move-ip b/heartbeat/aws-vpc-move-ip
|
||||
index 5d5204080..dee040300 100755
|
||||
--- a/heartbeat/aws-vpc-move-ip
|
||||
+++ b/heartbeat/aws-vpc-move-ip
|
||||
@@ -43,6 +43,7 @@ OCF_RESKEY_address_default=""
|
||||
OCF_RESKEY_routing_table_default=""
|
||||
OCF_RESKEY_routing_table_role_default=""
|
||||
OCF_RESKEY_interface_default="eth0"
|
||||
+OCF_RESKEY_iflabel_default=""
|
||||
OCF_RESKEY_monapi_default="false"
|
||||
OCF_RESKEY_lookup_type_default="InstanceId"
|
||||
|
||||
@@ -54,6 +55,7 @@ OCF_RESKEY_lookup_type_default="InstanceId"
|
||||
: ${OCF_RESKEY_routing_table=${OCF_RESKEY_routing_table_default}}
|
||||
: ${OCF_RESKEY_routing_table_role=${OCF_RESKEY_routing_table_role_default}}
|
||||
: ${OCF_RESKEY_interface=${OCF_RESKEY_interface_default}}
|
||||
+: ${OCF_RESKEY_iflabel=${OCF_RESKEY_iflabel_default}}
|
||||
: ${OCF_RESKEY_monapi=${OCF_RESKEY_monapi_default}}
|
||||
: ${OCF_RESKEY_lookup_type=${OCF_RESKEY_lookup_type_default}}
|
||||
|
||||
@@ -149,6 +151,18 @@ Name of the network interface, i.e. eth0
|
||||
<content type="string" default="${OCF_RESKEY_interface_default}" />
|
||||
</parameter>
|
||||
|
||||
+<parameter name="iflabel">
|
||||
+<longdesc lang="en">
|
||||
+You can specify an additional label for your IP address here.
|
||||
+This label is appended to your interface name.
|
||||
+
|
||||
+The kernel allows alphanumeric labels up to a maximum length of 15
|
||||
+characters including the interface name and colon (e.g. eth0:foobar1234)
|
||||
+</longdesc>
|
||||
+<shortdesc lang="en">Interface label</shortdesc>
|
||||
+<content type="string" default="${OCF_RESKEY_iflabel_default}"/>
|
||||
+</parameter>
|
||||
+
|
||||
<parameter name="monapi">
|
||||
<longdesc lang="en">
|
||||
Enable enhanced monitoring using AWS API calls to check route table entry
|
||||
@@ -215,6 +229,14 @@ ec2ip_validate() {
|
||||
return $OCF_ERR_CONFIGURED
|
||||
fi
|
||||
|
||||
+ if [ -n "$OCF_RESKEY_iflabel" ]; then
|
||||
+ label=${OCF_RESKEY_interface}:${OFC_RESKEY_iflabel}
|
||||
+ if [ ${#label} -gt 15 ]; then
|
||||
+ ocf_exit_reason "Interface label [$label] exceeds maximum character limit of 15"
|
||||
+ exit $OCF_ERR_CONFIGURED
|
||||
+ fi
|
||||
+ fi
|
||||
+
|
||||
TOKEN=$(curl -sX PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
|
||||
EC2_INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id -H "X-aws-ec2-metadata-token: $TOKEN")
|
||||
|
||||
@@ -363,7 +385,13 @@ ec2ip_get_and_configure() {
|
||||
|
||||
# Reconfigure the local ip address
|
||||
ec2ip_drop
|
||||
- cmd="ip addr add ${OCF_RESKEY_ip}/32 dev $OCF_RESKEY_interface"
|
||||
+
|
||||
+ extra_opts=""
|
||||
+ if [ -n "$OCF_RESKEY_iflabel" ]; then
|
||||
+ extra_opts="$extra_opts label $OCF_RESKEY_interface:$OCF_RESKEY_iflabel"
|
||||
+ fi
|
||||
+
|
||||
+ cmd="ip addr add ${OCF_RESKEY_ip}/32 dev $OCF_RESKEY_interface $extra_opts"
|
||||
ocf_log debug "executing command: $cmd"
|
||||
$cmd
|
||||
rc=$?
|
39
SOURCES/bz2103370-ocf-tester-1-update.patch
Normal file
39
SOURCES/bz2103370-ocf-tester-1-update.patch
Normal file
@ -0,0 +1,39 @@
|
||||
From 46e8d346ca4803245f51a157591c4df1126d3b49 Mon Sep 17 00:00:00 2001
|
||||
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
|
||||
Date: Tue, 12 Jul 2022 12:45:52 +0200
|
||||
Subject: [PATCH] ocf-tester: use promotable terms
|
||||
|
||||
---
|
||||
tools/ocf-tester.in | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/tools/ocf-tester.in b/tools/ocf-tester.in
|
||||
index 10822a5a06..f1703ba1b7 100755
|
||||
--- a/tools/ocf-tester.in
|
||||
+++ b/tools/ocf-tester.in
|
||||
@@ -295,10 +295,10 @@ if [ $rc -eq 3 ]; then
|
||||
|
||||
elif [ $rc -eq 8 ]; then
|
||||
test_command demote "Cleanup, demote"
|
||||
- assert $? 0 "Your agent was a master and could not be demoted" 1
|
||||
+ assert $? 0 "Your agent was promoted and could not be demoted" 1
|
||||
|
||||
test_command stop "Cleanup, stop"
|
||||
- assert $? 0 "Your agent was a master and could not be stopped" 1
|
||||
+ assert $? 0 "Your agent was promoted and could not be stopped" 1
|
||||
|
||||
elif [ $rc -ne 7 ]; then
|
||||
test_command stop
|
||||
@@ -370,10 +370,10 @@ if [ $has_promote -eq 1 -a $has_demote -eq 1 ]; then
|
||||
assert $? 0 "Demote failed" 1
|
||||
|
||||
elif [ $has_promote -eq 0 -a $has_demote -eq 0 ]; then
|
||||
- info "* Your agent does not support master/slave (optional)"
|
||||
+ info "* Your agent does not support promotable clones (optional)"
|
||||
|
||||
else
|
||||
- echo "* Your agent partially supports master/slave"
|
||||
+ echo "* Your agent partially supports promotable clones"
|
||||
num_errors=`expr $num_errors + 1`
|
||||
fi
|
||||
|
@ -0,0 +1,166 @@
|
||||
From 687aa646852d5fd5d4e811b2ec562ebffa15e23d Mon Sep 17 00:00:00 2001
|
||||
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
|
||||
Date: Thu, 14 Jul 2022 14:52:07 +0200
|
||||
Subject: [PATCH] ocf-tester: remove deprecated lrmd/lrmadmin code that hasnt
|
||||
worked since pre-pacemaker days
|
||||
|
||||
---
|
||||
tools/ocf-tester.8 | 12 ++-----
|
||||
tools/ocf-tester.in | 81 ---------------------------------------------
|
||||
2 files changed, 2 insertions(+), 91 deletions(-)
|
||||
|
||||
diff --git a/tools/ocf-tester.8 b/tools/ocf-tester.8
|
||||
index 850ec0be04..3f398282d2 100644
|
||||
--- a/tools/ocf-tester.8
|
||||
+++ b/tools/ocf-tester.8
|
||||
@@ -1,9 +1,9 @@
|
||||
-.TH OCF-TESTER "8" "January 2012" "Tool for testing if a cluster resource is OCF compliant" "System Administration Utilities"
|
||||
+.TH OCF-TESTER "8" "July 2022" "Tool for testing if a cluster resource is OCF compliant" "System Administration Utilities"
|
||||
.SH NAME
|
||||
ocf-tester \- Part of the Linux-HA project
|
||||
.SH SYNOPSIS
|
||||
.B ocf-tester
|
||||
-[\fI-LhvqdX\fR] \fI-n resource_name \fR[\fI-o name=value\fR]\fI* /full/path/to/resource/agent\fR
|
||||
+[\fI-hvqdX\fR] \fI-n resource_name \fR[\fI-o name=value\fR]\fI* /full/path/to/resource/agent\fR
|
||||
.SH DESCRIPTION
|
||||
Tool for testing if a cluster resource is OCF compliant
|
||||
.SH OPTIONS
|
||||
@@ -26,11 +26,6 @@ Name of the resource
|
||||
\fB\-o\fR name=value
|
||||
Name and value of any parameters required by the agent
|
||||
.TP
|
||||
-\fB\-L\fR
|
||||
-Use lrmadmin/lrmd for tests
|
||||
-.PP
|
||||
-Usage: ocf\-tester [\-Lh] \fB\-n\fR resource_name [\-o name=value]* /full/path/to/resource/agent
|
||||
-.TP
|
||||
\fB\-h\fR
|
||||
This text
|
||||
.TP
|
||||
@@ -51,6 +46,3 @@ Name of the resource
|
||||
.TP
|
||||
\fB\-o\fR name=value
|
||||
Name and value of any parameters required by the agent
|
||||
-.TP
|
||||
-\fB\-L\fR
|
||||
-Use lrmadmin/lrmd for tests
|
||||
diff --git a/tools/ocf-tester.in b/tools/ocf-tester.in
|
||||
index 10822a5a06..15b14e51ea 100755
|
||||
--- a/tools/ocf-tester.in
|
||||
+++ b/tools/ocf-tester.in
|
||||
@@ -25,8 +25,6 @@
|
||||
# Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
|
||||
#
|
||||
|
||||
-LRMD=@libdir@/heartbeat/lrmd
|
||||
-LRMADMIN=@sbindir@/lrmadmin
|
||||
DATADIR=@datadir@
|
||||
METADATA_LINT="xmllint --noout --valid -"
|
||||
|
||||
@@ -61,7 +59,6 @@ usage() {
|
||||
echo " -X Turn on RA tracing (expect large output)"
|
||||
echo " -n name Name of the resource"
|
||||
echo " -o name=value Name and value of any parameters required by the agent"
|
||||
- echo " -L Use lrmadmin/lrmd for tests"
|
||||
exit $1
|
||||
}
|
||||
|
||||
@@ -104,7 +101,6 @@ while test "$done" = "0"; do
|
||||
-o) name=${2%%=*}; value=${2#*=};
|
||||
lrm_ra_args="$lrm_ra_args $2";
|
||||
ra_args="$ra_args OCF_RESKEY_$name='$value'"; shift; shift;;
|
||||
- -L) use_lrmd=1; shift;;
|
||||
-v) verbose=1; shift;;
|
||||
-d) export HA_debug=1; shift;;
|
||||
-X) export OCF_TRACE_RA=1; verbose=1; shift;;
|
||||
@@ -140,79 +136,6 @@ stopped_rc=7
|
||||
has_demote=1
|
||||
has_promote=1
|
||||
|
||||
-start_lrmd() {
|
||||
- lrmd_timeout=0
|
||||
- lrmd_interval=0
|
||||
- lrmd_target_rc=EVERYTIME
|
||||
- lrmd_started=""
|
||||
- $LRMD -s 2>/dev/null
|
||||
- rc=$?
|
||||
- if [ $rc -eq 3 ]; then
|
||||
- lrmd_started=1
|
||||
- $LRMD &
|
||||
- sleep 1
|
||||
- $LRMD -s 2>/dev/null
|
||||
- else
|
||||
- return $rc
|
||||
- fi
|
||||
-}
|
||||
-add_resource() {
|
||||
- $LRMADMIN -A $OCF_RESOURCE_INSTANCE \
|
||||
- ocf \
|
||||
- `basename $agent` \
|
||||
- $(basename `dirname $agent`) \
|
||||
- $lrm_ra_args > /dev/null
|
||||
-}
|
||||
-del_resource() {
|
||||
- $LRMADMIN -D $OCF_RESOURCE_INSTANCE
|
||||
-}
|
||||
-parse_lrmadmin_output() {
|
||||
- awk '
|
||||
-BEGIN{ rc=1; }
|
||||
-/Waiting for lrmd to callback.../ { n=1; next; }
|
||||
-n==1 && /----------------operation--------------/ { n++; next; }
|
||||
-n==2 && /return code:/ { rc=$0; sub("return code: *","",rc); next }
|
||||
-n==2 && /---------------------------------------/ {
|
||||
- n++;
|
||||
- next;
|
||||
-}
|
||||
-END{
|
||||
- if( n!=3 ) exit 1;
|
||||
- else exit rc;
|
||||
-}
|
||||
-'
|
||||
-}
|
||||
-exec_resource() {
|
||||
- op="$1"
|
||||
- args="$2"
|
||||
- $LRMADMIN -E $OCF_RESOURCE_INSTANCE \
|
||||
- $op $lrmd_timeout $lrmd_interval \
|
||||
- $lrmd_target_rc \
|
||||
- $args | parse_lrmadmin_output
|
||||
-}
|
||||
-
|
||||
-if [ "$use_lrmd" = 1 ]; then
|
||||
- echo "Using lrmd/lrmadmin for all tests"
|
||||
- start_lrmd || {
|
||||
- echo "could not start lrmd" >&2
|
||||
- exit 1
|
||||
- }
|
||||
- trap '
|
||||
- [ "$lrmd_started" = 1 ] && $LRMD -k
|
||||
- ' EXIT
|
||||
- add_resource || {
|
||||
- echo "failed to add resource to lrmd" >&2
|
||||
- exit 1
|
||||
- }
|
||||
-fi
|
||||
-
|
||||
-lrm_test_command() {
|
||||
- action="$1"
|
||||
- msg="$2"
|
||||
- debug "$msg"
|
||||
- exec_resource $action "$lrm_ra_args"
|
||||
-}
|
||||
-
|
||||
test_permissions() {
|
||||
action=meta-data
|
||||
debug ${1:-"Testing permissions with uid nobody"}
|
||||
@@ -233,10 +156,6 @@ test_command() {
|
||||
action=$1; shift
|
||||
export __OCF_ACTION=$action
|
||||
msg=${1:-"Testing: $action"}
|
||||
- if [ "$use_lrmd" = 1 ]; then
|
||||
- lrm_test_command $action "$msg"
|
||||
- return $?
|
||||
- fi
|
||||
#echo Running: "export $ra_args; $agent $action 2>&1 > /dev/null"
|
||||
if [ $verbose -eq 0 ]; then
|
||||
command_output=`$agent $action 2>&1`
|
@ -0,0 +1,75 @@
|
||||
From 0063164d72bbaca68f12a2f0a7dbae9ccb41fa39 Mon Sep 17 00:00:00 2001
|
||||
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
|
||||
Date: Tue, 26 Jul 2022 09:08:26 +0200
|
||||
Subject: [PATCH] ethmonitor/ovsmonitor/pgsql: remove ignored attrd_updater
|
||||
"-q" parameter
|
||||
|
||||
attrd_updater in 2.1.3 no longer ignores the -q parameter, which makes
|
||||
these agents break. It never did anything in attrd_updater, and is
|
||||
probably left-over from copy/paste crm_attribute code that got changed
|
||||
to attrd_updater.
|
||||
---
|
||||
heartbeat/ethmonitor | 2 +-
|
||||
heartbeat/ovsmonitor | 2 +-
|
||||
heartbeat/pgsql | 8 ++++----
|
||||
3 files changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/ethmonitor b/heartbeat/ethmonitor
|
||||
index ba8574131..451738a0b 100755
|
||||
--- a/heartbeat/ethmonitor
|
||||
+++ b/heartbeat/ethmonitor
|
||||
@@ -464,7 +464,7 @@ END
|
||||
|
||||
set_cib_value() {
|
||||
local score=`expr $1 \* $OCF_RESKEY_multiplier`
|
||||
- attrd_updater -n $ATTRNAME -v $score -q
|
||||
+ attrd_updater -n $ATTRNAME -v $score
|
||||
local rc=$?
|
||||
case $rc in
|
||||
0) ocf_log debug "attrd_updater: Updated $ATTRNAME = $score" ;;
|
||||
diff --git a/heartbeat/ovsmonitor b/heartbeat/ovsmonitor
|
||||
index 872ce86eb..6765da4b9 100755
|
||||
--- a/heartbeat/ovsmonitor
|
||||
+++ b/heartbeat/ovsmonitor
|
||||
@@ -355,7 +355,7 @@ END
|
||||
|
||||
set_cib_value() {
|
||||
local score=`expr $1 \* $OCF_RESKEY_multiplier`
|
||||
- attrd_updater -n $ATTRNAME -v $score -q
|
||||
+ attrd_updater -n $ATTRNAME -v $score
|
||||
local rc=$?
|
||||
case $rc in
|
||||
0) ocf_log debug "attrd_updater: Updated $ATTRNAME = $score" ;;
|
||||
diff --git a/heartbeat/pgsql b/heartbeat/pgsql
|
||||
index 94aceb324..e93d66855 100755
|
||||
--- a/heartbeat/pgsql
|
||||
+++ b/heartbeat/pgsql
|
||||
@@ -808,7 +808,7 @@ pgsql_real_stop() {
|
||||
local stop_escalate
|
||||
|
||||
if ocf_is_true ${OCF_RESKEY_check_wal_receiver}; then
|
||||
- attrd_updater -n "$PGSQL_WAL_RECEIVER_STATUS_ATTR" -D -q
|
||||
+ attrd_updater -n "$PGSQL_WAL_RECEIVER_STATUS_ATTR" -D
|
||||
fi
|
||||
|
||||
if ! pgsql_status
|
||||
@@ -937,16 +937,16 @@ pgsql_wal_receiver_status() {
|
||||
receiver_parent_pids=`ps -ef | tr -s " " | grep "[w]al\s*receiver" | cut -d " " -f 3`
|
||||
|
||||
if echo "$receiver_parent_pids" | grep -q -w "$PID" ; then
|
||||
- attrd_updater -n "$PGSQL_WAL_RECEIVER_STATUS_ATTR" -v "normal" -q
|
||||
+ attrd_updater -n "$PGSQL_WAL_RECEIVER_STATUS_ATTR" -v "normal"
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ $pgsql_real_monitor_status -eq "$OCF_RUNNING_MASTER" ]; then
|
||||
- attrd_updater -n "$PGSQL_WAL_RECEIVER_STATUS_ATTR" -v "normal (master)" -q
|
||||
+ attrd_updater -n "$PGSQL_WAL_RECEIVER_STATUS_ATTR" -v "normal (master)"
|
||||
return 0
|
||||
fi
|
||||
|
||||
- attrd_updater -n "$PGSQL_WAL_RECEIVER_STATUS_ATTR" -v "ERROR" -q
|
||||
+ attrd_updater -n "$PGSQL_WAL_RECEIVER_STATUS_ATTR" -v "ERROR"
|
||||
ocf_log warn "wal receiver process is not running"
|
||||
return 1
|
||||
}
|
@ -33,6 +33,9 @@
|
||||
%global pyroute2 pyroute2
|
||||
%global pyroute2_version 0.4.13
|
||||
%global pyroute2_dir %{bundled_lib_dir}/gcp/%{pyroute2}
|
||||
# python-httplib2 bundle
|
||||
%global httplib2 httplib2
|
||||
%global httplib2_version 0.20.4
|
||||
## alibaba cloud
|
||||
# python-colorama bundle
|
||||
%global colorama colorama
|
||||
@ -66,7 +69,7 @@
|
||||
Name: resource-agents
|
||||
Summary: Open Source HA Reusable Cluster Resource Scripts
|
||||
Version: 4.9.0
|
||||
Release: 15%{?rcver:%{rcver}}%{?numcomm:.%{numcomm}}%{?alphatag:.%{alphatag}}%{?dirty:.%{dirty}}%{?dist}
|
||||
Release: 29%{?rcver:%{rcver}}%{?numcomm:.%{numcomm}}%{?alphatag:.%{alphatag}}%{?dirty:.%{dirty}}%{?dist}
|
||||
License: GPLv2+ and LGPLv2+
|
||||
URL: https://github.com/ClusterLabs/resource-agents
|
||||
%if 0%{?fedora} || 0%{?centos_version} || 0%{?rhel}
|
||||
@ -77,12 +80,14 @@ Group: Productivity/Clustering/HA
|
||||
Source0: %{upstream_prefix}-%{upstream_version}.tar.gz
|
||||
Source1: %{googlecloudsdk}-%{googlecloudsdk_version}-linux-x86_64.tar.gz
|
||||
Source2: %{pyroute2}-%{pyroute2_version}.tar.gz
|
||||
Source3: %{colorama}-%{colorama_version}.tar.gz
|
||||
Source4: %{pycryptodome}-%{pycryptodome_version}.tar.gz
|
||||
Source5: %{aliyunsdkcore}-%{aliyunsdkcore_version}.tar.gz
|
||||
Source6: %{aliyunsdkecs}-%{aliyunsdkecs_version}.tar.gz
|
||||
Source7: %{aliyunsdkvpc}-%{aliyunsdkvpc_version}.tar.gz
|
||||
Source8: %{aliyuncli}-%{aliyuncli_version}.tar.gz
|
||||
Source3: pyparsing-2.4.7-py2.py3-none-any.whl
|
||||
Source4: %{httplib2}-%{httplib2_version}.tar.gz
|
||||
Source5: %{colorama}-%{colorama_version}.tar.gz
|
||||
Source6: %{pycryptodome}-%{pycryptodome_version}.tar.gz
|
||||
Source7: %{aliyunsdkcore}-%{aliyunsdkcore_version}.tar.gz
|
||||
Source8: %{aliyunsdkecs}-%{aliyunsdkecs_version}.tar.gz
|
||||
Source9: %{aliyunsdkvpc}-%{aliyunsdkvpc_version}.tar.gz
|
||||
Source10: %{aliyuncli}-%{aliyuncli_version}.tar.gz
|
||||
Patch0: nova-compute-wait-NovaEvacuate.patch
|
||||
Patch1: bz1872754-pgsqlms-new-ra.patch
|
||||
Patch2: bz1995178-storage-mon-fix-typo.patch
|
||||
@ -97,7 +102,24 @@ Patch10: bz2012057-Route-return-OCF_NOT_RUNNING-missing-route.patch
|
||||
Patch11: bz2029706-1-db2-crm_attribute-use-forever.patch
|
||||
Patch12: bz2029706-2-db2-fixes.patch
|
||||
Patch13: bz1992661-mysql-use-ssl-mode.patch
|
||||
Patch14: bz1654862-IPsrcaddr-dhcp-warning.patch
|
||||
Patch14: bz2064342-1-IPsrcaddr-dhcp-warning.patch
|
||||
Patch15: bz2064342-2-IPsrcaddr-error-message-route-not-found.patch
|
||||
Patch16: bz2064342-3-IPsrcaddr-fix-indentation.patch
|
||||
Patch17: bz2064342-4-IPsrcaddr-fixes.patch
|
||||
Patch18: bz1908146-bz1908147-bz1908148-bz1949114-update-openstack-agents.patch
|
||||
Patch19: bz2072043-LVM-activate-fix-fence-issue.patch
|
||||
Patch20: bz2049414-Filesystem-1-fix-uuid-label-device-whitespace.patch
|
||||
Patch21: bz2049414-Filesystem-2-improve-uuid-label-device-logic.patch
|
||||
Patch22: bz2086889-lvmlockd-fail-when-use_lvmlockd-not-set.patch
|
||||
Patch23: bz2093214-aws-vpc-move-ip-add-interface-label-support.patch
|
||||
Patch24: bz1908148-openstack-info-fix-bashism.patch
|
||||
Patch25: bz1908146-bz1908147-bz1949114-openstack-agents-fixes.patch
|
||||
Patch26: bz1908146-bz1908147-bz1908148-bz1949114-openstack-agents-warn-when-openstackcli-slow.patch
|
||||
Patch27: bz2103370-ocf-tester-1-update.patch
|
||||
Patch28: bz2103370-ocf-tester-2-remove-deprecated-lrmd-lrmadmin-code.patch
|
||||
Patch29: bz1908146-bz1908147-bz1908148-bz1949114-openstack-agents-set-domain-parameters-default.patch
|
||||
Patch30: bz2090370-CTDB-move-process-to-root-cgroup-if-rt-enabled.patch
|
||||
Patch31: bz2116941-ethmonitor-ovsmonitor-pgsql-fix-attrd_updater-q.patch
|
||||
|
||||
# bundle patches
|
||||
Patch1000: 7-gcp-bundled.patch
|
||||
@ -121,6 +143,10 @@ BuildRequires: libxslt glib2-devel
|
||||
BuildRequires: systemd
|
||||
BuildRequires: which
|
||||
|
||||
%ifarch x86_64
|
||||
BuildRequires: python3-pip
|
||||
%endif
|
||||
|
||||
%if 0%{?fedora} || 0%{?centos_version} || 0%{?rhel}
|
||||
#BuildRequires: cluster-glue-libs-devel
|
||||
BuildRequires: docbook-style-xsl docbook-dtds
|
||||
@ -244,6 +270,8 @@ Provides: bundled(python-websocket) = 0.47.0
|
||||
Provides: bundled(python-yaml) = 3.12
|
||||
# python-pyroute2 bundle
|
||||
Provides: bundled(%{pyroute2}) = %{pyroute2_version}
|
||||
# python-httplib2 bundle
|
||||
Provides: bundled(%{httplib2}) = %{httplib2_version}
|
||||
|
||||
%description gcp
|
||||
The Google Cloud Platform resource agents allows Google Cloud
|
||||
@ -286,6 +314,23 @@ exit 1
|
||||
%patch12 -p1
|
||||
%patch13 -p1
|
||||
%patch14 -p1
|
||||
%patch15 -p1
|
||||
%patch16 -p1
|
||||
%patch17 -p1
|
||||
%patch18 -p1
|
||||
%patch19 -p1
|
||||
%patch20 -p1
|
||||
%patch21 -p1
|
||||
%patch22 -p1
|
||||
%patch23 -p1
|
||||
%patch24 -p1
|
||||
%patch25 -p1
|
||||
%patch26 -p1
|
||||
%patch27 -p1
|
||||
%patch28 -p1
|
||||
%patch29 -p1
|
||||
%patch30 -p1
|
||||
%patch31 -p1
|
||||
|
||||
chmod 755 heartbeat/nova-compute-wait
|
||||
chmod 755 heartbeat/NovaEvacuate
|
||||
@ -299,7 +344,7 @@ mkdir -p %{bundled_lib_dir}/aliyun
|
||||
%ifarch x86_64
|
||||
tar -xzf %SOURCE1 -C %{bundled_lib_dir}/gcp
|
||||
# gcp*: append bundled-directory to search path, gcloud-ra
|
||||
%patch1000 -p1 -F2
|
||||
%patch1000 -p1
|
||||
# replace python-rsa with python-cryptography
|
||||
%patch1001 -p1
|
||||
# gcloud support info
|
||||
@ -377,7 +422,7 @@ cp %{pyroute2_dir}/LICENSE.Apache.v2 %{pyroute2}_LICENSE.Apache.v2
|
||||
cp %{pyroute2_dir}/LICENSE.GPL.v2 %{pyroute2}_LICENSE.GPL.v2
|
||||
|
||||
# python-colorama bundle
|
||||
tar -xzf %SOURCE3 -C %{bundled_lib_dir}/aliyun
|
||||
tar -xzf %SOURCE5 -C %{bundled_lib_dir}/aliyun
|
||||
mv %{bundled_lib_dir}/aliyun/%{colorama}-%{colorama_version} %{colorama_dir}
|
||||
cp %{colorama_dir}/LICENSE.txt %{colorama}_LICENSE.txt
|
||||
cp %{colorama_dir}/README.rst %{colorama}_README.rst
|
||||
@ -388,28 +433,28 @@ rm -rf *.egg-info
|
||||
popd
|
||||
|
||||
# python-pycryptodome bundle
|
||||
tar -xzf %SOURCE4 -C %{bundled_lib_dir}/aliyun
|
||||
tar -xzf %SOURCE6 -C %{bundled_lib_dir}/aliyun
|
||||
mv %{bundled_lib_dir}/aliyun/%{pycryptodome}-%{pycryptodome_version} %{pycryptodome_dir}
|
||||
cp %{pycryptodome_dir}/README.rst %{pycryptodome}_README.rst
|
||||
cp %{pycryptodome_dir}/LICENSE.rst %{pycryptodome}_LICENSE.rst
|
||||
|
||||
# python-aliyun-sdk-core bundle
|
||||
tar -xzf %SOURCE5 -C %{bundled_lib_dir}/aliyun
|
||||
tar -xzf %SOURCE7 -C %{bundled_lib_dir}/aliyun
|
||||
mv %{bundled_lib_dir}/aliyun/%{aliyunsdkcore}-%{aliyunsdkcore_version} %{aliyunsdkcore_dir}
|
||||
cp %{aliyunsdkcore_dir}/README.rst %{aliyunsdkcore}_README.rst
|
||||
|
||||
# python-aliyun-sdk-ecs bundle
|
||||
tar -xzf %SOURCE6 -C %{bundled_lib_dir}/aliyun
|
||||
tar -xzf %SOURCE8 -C %{bundled_lib_dir}/aliyun
|
||||
mv %{bundled_lib_dir}/aliyun/%{aliyunsdkecs}-%{aliyunsdkecs_version} %{aliyunsdkecs_dir}
|
||||
cp %{aliyunsdkecs_dir}/README.rst %{aliyunsdkecs}_README.rst
|
||||
|
||||
# python-aliyun-sdk-vpc bundle
|
||||
tar -xzf %SOURCE7 -C %{bundled_lib_dir}/aliyun
|
||||
tar -xzf %SOURCE9 -C %{bundled_lib_dir}/aliyun
|
||||
mv %{bundled_lib_dir}/aliyun/%{aliyunsdkvpc}-%{aliyunsdkvpc_version} %{aliyunsdkvpc_dir}
|
||||
cp %{aliyunsdkvpc_dir}/README.rst %{aliyunsdkvpc}_README.rst
|
||||
|
||||
# aliyuncli bundle
|
||||
tar -xzf %SOURCE8 -C %{bundled_lib_dir}/aliyun
|
||||
tar -xzf %SOURCE10 -C %{bundled_lib_dir}/aliyun
|
||||
mv %{bundled_lib_dir}/aliyun/%{aliyuncli}-%{aliyuncli_version} %{aliyuncli_dir}
|
||||
cp %{aliyuncli_dir}/README.rst %{aliyuncli}_README.rst
|
||||
cp %{aliyuncli_dir}/LICENSE %{aliyuncli}_LICENSE
|
||||
@ -531,6 +576,10 @@ pushd %{pyroute2_dir}
|
||||
%{__python3} setup.py install -O1 --skip-build --root %{buildroot} --install-lib /usr/lib/%{name}/%{bundled_lib_dir}/gcp
|
||||
popd
|
||||
|
||||
# python-httplib2 bundle
|
||||
%{__python3} -m pip install --user --no-index --find-links %{_sourcedir} pyparsing
|
||||
%{__python3} -m pip install --target %{buildroot}/usr/lib/%{name}/%{bundled_lib_dir}/gcp --no-index --find-links %{_sourcedir} %{httplib2}
|
||||
|
||||
# python-colorama bundle
|
||||
pushd %{colorama_dir}
|
||||
%{__python3} setup.py install -O1 --skip-build --root %{buildroot} --install-lib /usr/lib/%{name}/%{bundled_lib_dir}/aliyun
|
||||
@ -626,6 +675,7 @@ rm -rf %{buildroot}
|
||||
%exclude %{_datadir}/%{name}/ocft/runocft
|
||||
%exclude %{_datadir}/%{name}/ocft/runocft.prereq
|
||||
|
||||
%{_sbindir}/ocf-tester
|
||||
%{_sbindir}/ocft
|
||||
|
||||
%{_includedir}/heartbeat
|
||||
@ -637,6 +687,7 @@ rm -rf %{buildroot}
|
||||
%endif
|
||||
|
||||
%{_mandir}/man7/*.7*
|
||||
%{_mandir}/man8/ocf-tester.8*
|
||||
|
||||
###
|
||||
# Supported, but in another sub package
|
||||
@ -708,10 +759,6 @@ rm -rf %{buildroot}
|
||||
%exclude %{_usr}/lib/ocf/resource.d/heartbeat/mpathpersist
|
||||
%exclude %{_usr}/lib/ocf/resource.d/heartbeat/mysql-proxy
|
||||
%exclude %{_usr}/lib/ocf/resource.d/heartbeat/nvmet-*
|
||||
%exclude %{_usr}/lib/ocf/resource.d/heartbeat/openstack-cinder-volume
|
||||
%exclude %{_usr}/lib/ocf/resource.d/heartbeat/openstack-floating-ip
|
||||
%exclude %{_usr}/lib/ocf/resource.d/heartbeat/openstack-info
|
||||
%exclude %{_usr}/lib/ocf/resource.d/heartbeat/openstack-virtual-ip
|
||||
%exclude %{_usr}/lib/ocf/resource.d/heartbeat/ovsmonitor
|
||||
%exclude %{_usr}/lib/ocf/resource.d/heartbeat/pgagent
|
||||
%exclude %{_usr}/lib/ocf/resource.d/heartbeat/pingd
|
||||
@ -776,10 +823,6 @@ rm -rf %{buildroot}
|
||||
%exclude %{_mandir}/man7/ocf_heartbeat_mpathpersist.7.gz
|
||||
%exclude %{_mandir}/man7/ocf_heartbeat_mysql-proxy.7.gz
|
||||
%exclude %{_mandir}/man7/ocf_heartbeat_nvmet-*.7.gz
|
||||
%exclude %{_mandir}/man7/ocf_heartbeat_openstack-cinder-volume.7.gz
|
||||
%exclude %{_mandir}/man7/ocf_heartbeat_openstack-floating-ip.7.gz
|
||||
%exclude %{_mandir}/man7/ocf_heartbeat_openstack-info.7.gz
|
||||
%exclude %{_mandir}/man7/ocf_heartbeat_openstack-virtual-ip.7.gz
|
||||
%exclude %{_mandir}/man7/ocf_heartbeat_ovsmonitor.7.gz
|
||||
%exclude %{_mandir}/man7/ocf_heartbeat_pgagent.7.gz
|
||||
%exclude %{_mandir}/man7/ocf_heartbeat_pingd.7.gz
|
||||
@ -800,9 +843,6 @@ rm -rf %{buildroot}
|
||||
###
|
||||
# Other excluded files.
|
||||
###
|
||||
# This tool has to be updated for the new pacemaker lrmd.
|
||||
%exclude %{_sbindir}/ocf-tester
|
||||
%exclude %{_mandir}/man8/ocf-tester.8*
|
||||
# ldirectord is not supported
|
||||
%exclude /etc/ha.d/resource.d/ldirectord
|
||||
%exclude /etc/init.d/ldirectord
|
||||
@ -866,16 +906,66 @@ ccs_update_schema > /dev/null 2>&1 ||:
|
||||
%{_usr}/lib/ocf/lib/heartbeat/OCF_*.pm
|
||||
|
||||
%changelog
|
||||
* Wed Aug 10 2022 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.9.0-29
|
||||
- ethmonitor/pgsql: remove attrd_updater "-q" parameter to solve issue
|
||||
with Pacemaker 2.1.3+ not ignoring it
|
||||
|
||||
Resolves: rhbz#2116941
|
||||
|
||||
* Thu Aug 4 2022 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.9.0-28
|
||||
- CTDB: move process to root cgroup if realtime scheduling is enabled
|
||||
|
||||
Resolves: rhbz#2090370
|
||||
|
||||
* Thu Jul 14 2022 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.9.0-27
|
||||
- ocf-tester: add testing tool
|
||||
|
||||
Resolves: rhbz#2103370
|
||||
|
||||
* Thu Jul 14 2022 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.9.0-26
|
||||
- openstack-cinder-volume/openstack-floating-ip/openstack-info/
|
||||
openstack-virtual-ip: new resource agents
|
||||
|
||||
Resolves: rhbz#1908146, rhbz#1908147, rhbz#1908148, rhbz#1949114
|
||||
|
||||
* Thu Jun 16 2022 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.9.0-22
|
||||
- gcp-vpc-move-route/gcp-vpc-move-vip: upgrade bundled
|
||||
python-httplib2 to fix SSL issue
|
||||
|
||||
Resolves: rhbz#2097462
|
||||
|
||||
* Thu Jun 9 2022 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.9.0-21
|
||||
- aws-vpc-move-ip: add interface label support
|
||||
|
||||
Resolves: rhbz#2093214
|
||||
|
||||
* Wed Jun 8 2022 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.9.0-20
|
||||
- lvmlockd: fail when use_lvmlockd has not been set
|
||||
|
||||
Resolves: rhbz#2086889
|
||||
|
||||
* Thu Apr 21 2022 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.9.0-19
|
||||
- Filesystem: fix UUID/label device support when there's whitespace
|
||||
between parameter and UUID/label
|
||||
|
||||
Resolves: rhbz#2049414
|
||||
|
||||
* Thu Apr 7 2022 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.9.0-18
|
||||
- LVM-activate: use correct return code to fence failed node
|
||||
|
||||
Resolves: rhbz#2072043
|
||||
|
||||
* Thu Mar 3 2022 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.9.0-16
|
||||
- IPsrcaddr: add warning about possible issues when used with DHCP,
|
||||
and add error message when matching route not found
|
||||
|
||||
Resolves: rhbz#2064342
|
||||
|
||||
* Thu Feb 24 2022 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.9.0-15
|
||||
- db2: use -l forever to fix crm_attribute issue
|
||||
|
||||
Resolves: rhbz#2029706
|
||||
|
||||
* Tue Feb 15 2022 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.9.0-14
|
||||
- IPsrcaddr: add warning about possible issues when used with DHCP
|
||||
|
||||
Resolves: rhbz#1654862
|
||||
|
||||
* Thu Jan 20 2022 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.9.0-13
|
||||
- mysql: add support for local SSL connection
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user