summaryrefslogtreecommitdiffstats
path: root/datarouter-prov/src/main/resources/misc/provcmd
blob: 63efa543114a8ca74df947300d3727ca55b89c2b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#!/bin/bash
#
#                        AT&T - PROPRIETARY
#          THIS FILE CONTAINS PROPRIETARY INFORMATION OF
#        AT&T AND IS NOT TO BE DISCLOSED OR USED EXCEPT IN
#             ACCORDANCE WITH APPLICABLE AGREEMENTS.
#
#          Copyright (c) 2013 AT&T Knowledge Ventures
#              Unpublished and Not for Publication
#                     All Rights Reserved
#
#  provcmd -- A script to interact with a provisioning server to manage the provisioning parameters.
#     Set $VERBOSE to a non-empty string to see the curl commands as they are executed.
#
#  $Id: provcmd,v 1.6 2014/03/31 13:23:33 eby Exp $
#

PATH=/opt/app/datartr/bin:/bin:/usr/bin:$PATH
PROVCMD="$0"
export PATH PROVSRVR PROVCMD NOPROXY

if [ ! -x /usr/bin/curl ]
then
	echo provcmd: curl is required for this tool.
	exit 1
fi
optloop=
while [ -z "$optloop" ]
do
	if [ "$1" == '-s' ]
	then
		shift
		PROVSRVR="$1"
		shift
	elif [ "$1" == '-v' ]
	then
		shift
		VERBOSE=x
	elif [ "$1" == '-N' ]
	then
		shift
		NOPROXY='?noproxy=1'
	else
		optloop=1
	fi
done
if [ -z "$PROVSRVR" ]
then
	echo "provcmd: you need to specify the server, either via the -s option"
	echo "         or by setting and exporting PROVSRVR"
	exit 1
fi

CMD="$1"
shift
if [ "$CMD" == 'delete' ]
then
	if [ $# -gt 0 ]
	then
		for i
		do
			[ -n "$VERBOSE" ] && echo curl -4 -k -X DELETE "https://$PROVSRVR/internal/api/$1$NOPROXY"
			curl -4 -k -X DELETE "https://$PROVSRVR/internal/api/$1$NOPROXY"
		done
		exit 0
	fi
elif [ "$CMD" == 'create' ]
then
	if [ $# -eq 2 ]
	then
		# create (with POST), then set the value
		[ -n "$VERBOSE" ] && echo curl -4 -k -X POST --data '' "https://$PROVSRVR/internal/api/$1$NOPROXY"
		curl -4 -k -X POST --data '' "https://$PROVSRVR/internal/api/$1$NOPROXY"
		$PROVCMD set "$1" "$2"
		exit 0
	fi
elif [ "$CMD" == 'get' ]
then
	if [ $# -eq 1 ]
	then
		# get
		[ -n "$VERBOSE" ] && echo curl -4 -k "https://$PROVSRVR/internal/api/$1$NOPROXY"
		curl -4 -k "https://$PROVSRVR/internal/api/$1$NOPROXY" 2>/dev/null | tr '|' '\012' | sort
		exit 0
	fi
elif [ "$CMD" == 'set' ]
then
	if [ $# -ge 2 ]
	then
		p="$1"
		shift
		v=""
		for i; do [ -n "$v" ] && v="$v|"; v="$v$i"; done
		# set (with PUT)
		ue=`urlencode "$v"`
		NOPROXY=`echo $NOPROXY | tr '?' '&'`
		[ -n "$VERBOSE" ] && echo curl -4 -k -X PUT "https://$PROVSRVR/internal/api/$p?val=$ue$NOPROXY"
		curl -4 -k -X PUT "https://$PROVSRVR/internal/api/$p?val=$ue$NOPROXY"
		exit 0
	fi
elif [ "$CMD" == 'append' ]
then
	if [ $# -ge 2 ]
	then
		p="$1"
		shift
		tmp=`curl -4 -k "https://$PROVSRVR/internal/api/$p$NOPROXY" 2>/dev/null`
		$PROVCMD set "$p" "$tmp" "$@"
		exit 0
	fi
elif [ "$CMD" == 'remove' ]
then
	if [ $# -eq 2 ]
	then
		p="$1"
		rm="$2"
		$PROVCMD get "$p" | grep -v "^$rm\$" > /tmp/pc$$
		IFS=$'\r\n'
		$PROVCMD set "$p" `cat /tmp/pc$$`
		rm /tmp/pc$$
		exit 0
	fi
fi

# Some error somewhere - display usage
cat <<'EOF'
usage: provcmd [ -s server ] delete name1 [ name2 ... ]
       provcmd [ -s server ] get name
       provcmd [ -s server ] create name value
       provcmd [ -s server ] set name value1 [ value2 ... ]
       provcmd [ -s server ] append name value1 [ value2 ... ]
       provcmd [ -s server ] remove name value

delete - remove the parameters named name1, name2 ...
get    - displays the parameters' value
create - creates a new parameter
set    - sets the value of an existing parameter
append - appends the value to a list-based parameter
remove - removes a value from a list based parameter

server - the provisioning server FQDN (feeds-drtr.web.att.com for production)

Standard Parameters Names:
------------------------------
ACTIVE_POD
DELIVERY_INIT_RETRY_INTERVAL
DELIVERY_MAX_AGE
DELIVERY_MAX_RETRY_INTERVAL
DELIVERY_RETRY_RATIO
LOGROLL_INTERVAL
NODES
PROV_ACTIVE_NAME
PROV_AUTH_ADDRESSES
PROV_AUTH_SUBJECTS
PROV_DOMAIN
PROV_MAXFEED_COUNT
PROV_MAXSUB_COUNT
PROV_NAME
PROV_REQUIRE_CERT
PROV_REQUIRE_SECURE
STANDBY_POD
EOF
exit 1