From 2ff6dec63b73c0af04cd160ded8fd0f722ab20eb Mon Sep 17 00:00:00 2001
From: scalingbits <scalingbits@users.noreply.github.com>
Date: Wed, 28 Jun 2017 18:01:13 +0200
Subject: [PATCH 22/27] High: aws-vpc-route53: Add agent for AWS Route 53
 (fate#322781)

This agent changes a private zone Route 53 agent to
the appropriate IP address. This agent has been
developed in collaboration of SUSE and Amazon/AWS.
---
 heartbeat/aws-vpc-route53 | 48 ++++++++++++++++++++++-------------------------
 1 file changed, 22 insertions(+), 26 deletions(-)

diff --git a/heartbeat/aws-vpc-route53 b/heartbeat/aws-vpc-route53
index a6e7218a..83de68df 100755
--- a/heartbeat/aws-vpc-route53
+++ b/heartbeat/aws-vpc-route53
@@ -90,7 +90,7 @@ Use a configuration in "crm configure edit" which looks as follows. Replace
 hostedzoneid, fullname and profile with the appropriate values:
 
 primitive res_route53 ocf:heartbeat:aws-vpc-route53 \
-        params hostedzoneid=Z22XDORCGO4P3T fullname=suse-service5.awslab.cloud.sap.corp. profile=cluster \
+        params hostedzoneid=EX4MPL3EX4MPL3 fullname=service.cloud.example.corp. profile=cluster \
         op start interval=0 timeout=180 \
         op stop interval=0 timeout=180 \
         op monitor interval=300 timeout=180 \
@@ -109,7 +109,7 @@ the Route 53 record.
 <parameter name="fullname" required="1">
 <longdesc lang="en">
 The full name of the service which will host the IP address.
-Example: suse-service5.awslab.cloud.sap.corp.
+Example: service.cloud.example.corp.
 Note: The trailing dot is important to Route53!
 </longdesc>
 <shortdesc lang="en">Full service name</shortdesc>
@@ -152,12 +152,8 @@ output has to be "text".
 END
 }
 
-debugger() {
-	ocf_log debug "DEBUG: $1"
-}
-
 ec2ip_validate() {
-	debugger "function: validate"
+	ocf_log debug "function: validate"
 
 	# Full name
 	[[ -z "$OCF_RESKEY_fullname" ]] && ocf_log error "Full name parameter not set $OCF_RESKEY_fullname!" && exit $OCF_ERR_CONFIGURED
@@ -171,12 +167,12 @@ ec2ip_validate() {
 	# TTL
 	[[ -z "$OCF_RESKEY_ttl" ]] && ocf_log error "TTL not set $OCF_RESKEY_ttl!" && exit $OCF_ERR_CONFIGURED
 
-	debugger "Testing aws command"
+	ocf_log debug "Testing aws command"
 	aws --version 2>&1
 	if [ "$?" -gt 0 ]; then
 		error "Error while executing aws command as user root! Please check if AWS CLI tools (Python flavor) are properly installed and configured." && exit $OCF_ERR_INSTALLED
 	fi
-	debugger "ok"
+	ocf_log debug "ok"
 
 	if [ -n "$OCF_RESKEY_profile" ]; then
 		AWS_PROFILE_OPT="--profile $OCF_RESKEY_profile"
@@ -189,15 +185,15 @@ ec2ip_validate() {
 
 ec2ip_monitor() {
 	ec2ip_validate
-	debugger "function: ec2ip_monitor: check Route53 record "
+	ocf_log debug "function: ec2ip_monitor: check Route53 record "
 	IPADDRESS="$(ec2metadata aws ip | grep local-ipv4 | /usr/bin/awk '{ print $2 }')"
 	ARECORD="$(aws $AWS_PROFILE_OPT route53 list-resource-record-sets --hosted-zone-id $OCF_RESKEY_hostedzoneid --query "ResourceRecordSets[?Name=='$OCF_RESKEY_fullname']" | grep RESOURCERECORDS | /usr/bin/awk '{ print $2 }' )"
-	debugger "function: ec2ip_monitor: found IP address: $ARECORD ."
+	ocf_log debug "function: ec2ip_monitor: found IP address: $ARECORD ."
 	if [ "${ARECORD}" == "${IPADDRESS}" ]; then
-		debugger "function: ec2ip_monitor:  ARECORD $ARECORD found"
+		ocf_log debug "function: ec2ip_monitor:  ARECORD $ARECORD found"
 		return $OCF_SUCCESS
 	else
-		debugger "function: ec2ip_monitor: no ARECORD found"
+		ocf_log debug "function: ec2ip_monitor: no ARECORD found"
 		return $OCF_NOT_RUNNING
 	fi
 
@@ -208,16 +204,16 @@ ec2ip_stop() {
 	ocf_log info "EC2: Bringing down Route53 agent. (Will remove ARECORD)"
 	IPADDRESS="$(ec2metadata aws ip | grep local-ipv4 | /usr/bin/awk '{ print $2 }')"
 	ARECORD="$(aws $AWS_PROFILE_OPT route53 list-resource-record-sets --hosted-zone-id $OCF_RESKEY_hostedzoneid --query "ResourceRecordSets[?Name=='$OCF_RESKEY_fullname']" | grep RESOURCERECORDS | /usr/bin/awk '{ print $2 }' )"
-	debugger "function: ec2ip_monitor: found IP address: $ARECORD ."
+	ocf_log debug "function: ec2ip_monitor: found IP address: $ARECORD ."
 	if [ ${ARECORD} != ${IPADDRESS} ]; then
-		debugger "function: ec2ip_monitor: no ARECORD found"
+		ocf_log debug "function: ec2ip_monitor: no ARECORD found"
 		return $OCF_SUCCESS
 	else
-		debugger "function: ec2ip_monitor:	ARECORD $ARECORD found"
+		ocf_log debug "function: ec2ip_monitor:	ARECORD $ARECORD found"
 		# determine IP address
 		IPADDRESS="$(ec2metadata aws ip | grep local-ipv4 | /usr/bin/awk '{ print $2 }')"
 		# Patch file
-		debugger "function ec2ip_stop: will delete IP address to ${IPADDRESS}"
+		ocf_log debug "function ec2ip_stop: will delete IP address to ${IPADDRESS}"
 		ocf_log info "EC2: Updating Route53 $OCF_RESKEY_hostedzoneid with $IPADDRESS for $OCF_RESKEY_fullname"
 		ROUTE53RECORD="/var/tmp/route53-${OCF_RESKEY_hostedzoneid}-${IPADDRESS}.json"
 		echo "{ " > ${ROUTE53RECORD}
@@ -240,18 +236,18 @@ ec2ip_stop() {
 		echo "}" >> ${ROUTE53RECORD}
 		cmd="aws --profile ${OCF_RESKEY_profile} route53 change-resource-record-sets --hosted-zone-id ${OCF_RESKEY_hostedzoneid} \
 		  --change-batch file://${ROUTE53RECORD} "
-		debugger "function ec2ip_start: executing command: $cmd"
+		ocf_log debug "function ec2ip_start: executing command: $cmd"
 		CHANGEID=$($cmd | grep CHANGEINFO |	 /usr/bin/awk -F'\t' '{ print $3 }' )
-		debugger "Change id: ${CHANGEID}"
+		ocf_log debug "Change id: ${CHANGEID}"
 		rm ${ROUTE53RECORD}
 		CHANGEID=$(echo $CHANGEID |cut -d'/' -f 3 |cut -d'"' -f 1 )
-		debugger "Change id: ${CHANGEID}"
+		ocf_log debug "Change id: ${CHANGEID}"
 		STATUS="PENDING"
 		MYSECONDS=2
 		while [ "$STATUS" = 'PENDING' ]; do
 			sleep	${MYSECONDS}
 			STATUS="$(aws --profile ${OCF_RESKEY_profile} route53 get-change --id $CHANGEID | grep CHANGEINFO |  /usr/bin/awk -F'\t' '{ print $4 }' |cut -d'"' -f 2 )"
-			debugger "Waited for ${MYSECONDS} seconds and checked execution of Route 53 update status: ${STATUS} "
+			ocf_log debug "Waited for ${MYSECONDS} seconds and checked execution of Route 53 update status: ${STATUS} "
 		done
 
 		return $OCF_SUCCESS
@@ -264,7 +260,7 @@ ec2ip_start() {
 	# determine IP address
 	IPADDRESS="$(ec2metadata aws ip | grep local-ipv4 | /usr/bin/awk '{ print $2 }')"
 	# Patch file
-	debugger "function ec2ip_start: will update IP address to ${IPADDRESS}"
+	ocf_log debug "function ec2ip_start: will update IP address to ${IPADDRESS}"
 	ocf_log info "EC2: Updating Route53 $OCF_RESKEY_hostedzoneid with $IPADDRESS for $OCF_RESKEY_fullname"
 	ROUTE53RECORD="/var/tmp/route53-${OCF_RESKEY_hostedzoneid}-${IPADDRESS}.json"
 	echo "{ " > ${ROUTE53RECORD}
@@ -287,18 +283,18 @@ ec2ip_start() {
 	echo "}" >> ${ROUTE53RECORD}
 	cmd="aws --profile ${OCF_RESKEY_profile} route53 change-resource-record-sets --hosted-zone-id ${OCF_RESKEY_hostedzoneid} \
 	  --change-batch file://${ROUTE53RECORD} "
-	debugger "function ec2ip_start: executing command: $cmd"
+	ocf_log debug "function ec2ip_start: executing command: $cmd"
 	CHANGEID=$($cmd | grep CHANGEINFO |  /usr/bin/awk -F'\t' '{ print $3 }' )
-	debugger "Change id: ${CHANGEID}"
+	ocf_log debug "Change id: ${CHANGEID}"
 	rm ${ROUTE53RECORD}
 	CHANGEID=$(echo $CHANGEID |cut -d'/' -f 3 |cut -d'"' -f 1 )
-	debugger "Change id: ${CHANGEID}"
+	ocf_log debug "Change id: ${CHANGEID}"
 	STATUS="PENDING"
 	MYSECONDS=2
 	while [ "$STATUS" = 'PENDING' ]; do
 		sleep  ${MYSECONDS}
 		STATUS="$(aws --profile ${OCF_RESKEY_profile} route53 get-change --id $CHANGEID | grep CHANGEINFO |  /usr/bin/awk -F'\t' '{ print $4 }' |cut -d'"' -f 2 )"
-		debugger "Waited for ${MYSECONDS} seconds and checked execution of Route 53 update status: ${STATUS} "
+		ocf_log debug "Waited for ${MYSECONDS} seconds and checked execution of Route 53 update status: ${STATUS} "
 	done
 
 	return $OCF_SUCCESS
-- 
2.15.1

