[DMAAP-48] Initial code import
[dmaap/datarouter.git] / datarouter-prov / src / main / resources / misc / provcmd
1 #!/bin/bash
2 #
3 #                        AT&T - PROPRIETARY
4 #          THIS FILE CONTAINS PROPRIETARY INFORMATION OF
5 #        AT&T AND IS NOT TO BE DISCLOSED OR USED EXCEPT IN
6 #             ACCORDANCE WITH APPLICABLE AGREEMENTS.
7 #
8 #          Copyright (c) 2013 AT&T Knowledge Ventures
9 #              Unpublished and Not for Publication
10 #                     All Rights Reserved
11 #
12 #  provcmd -- A script to interact with a provisioning server to manage the provisioning parameters.
13 #     Set $VERBOSE to a non-empty string to see the curl commands as they are executed.
14 #
15 #  $Id: provcmd,v 1.6 2014/03/31 13:23:33 eby Exp $
16 #
17
18 PATH=/opt/app/datartr/bin:/bin:/usr/bin:$PATH
19 PROVCMD="$0"
20 export PATH PROVSRVR PROVCMD NOPROXY
21
22 if [ ! -x /usr/bin/curl ]
23 then
24         echo provcmd: curl is required for this tool.
25         exit 1
26 fi
27 optloop=
28 while [ -z "$optloop" ]
29 do
30         if [ "$1" == '-s' ]
31         then
32                 shift
33                 PROVSRVR="$1"
34                 shift
35         elif [ "$1" == '-v' ]
36         then
37                 shift
38                 VERBOSE=x
39         elif [ "$1" == '-N' ]
40         then
41                 shift
42                 NOPROXY='?noproxy=1'
43         else
44                 optloop=1
45         fi
46 done
47 if [ -z "$PROVSRVR" ]
48 then
49         echo "provcmd: you need to specify the server, either via the -s option"
50         echo "         or by setting and exporting PROVSRVR"
51         exit 1
52 fi
53
54 CMD="$1"
55 shift
56 if [ "$CMD" == 'delete' ]
57 then
58         if [ $# -gt 0 ]
59         then
60                 for i
61                 do
62                         [ -n "$VERBOSE" ] && echo curl -4 -k -X DELETE "https://$PROVSRVR/internal/api/$1$NOPROXY"
63                         curl -4 -k -X DELETE "https://$PROVSRVR/internal/api/$1$NOPROXY"
64                 done
65                 exit 0
66         fi
67 elif [ "$CMD" == 'create' ]
68 then
69         if [ $# -eq 2 ]
70         then
71                 # create (with POST), then set the value
72                 [ -n "$VERBOSE" ] && echo curl -4 -k -X POST --data '' "https://$PROVSRVR/internal/api/$1$NOPROXY"
73                 curl -4 -k -X POST --data '' "https://$PROVSRVR/internal/api/$1$NOPROXY"
74                 $PROVCMD set "$1" "$2"
75                 exit 0
76         fi
77 elif [ "$CMD" == 'get' ]
78 then
79         if [ $# -eq 1 ]
80         then
81                 # get
82                 [ -n "$VERBOSE" ] && echo curl -4 -k "https://$PROVSRVR/internal/api/$1$NOPROXY"
83                 curl -4 -k "https://$PROVSRVR/internal/api/$1$NOPROXY" 2>/dev/null | tr '|' '\012' | sort
84                 exit 0
85         fi
86 elif [ "$CMD" == 'set' ]
87 then
88         if [ $# -ge 2 ]
89         then
90                 p="$1"
91                 shift
92                 v=""
93                 for i; do [ -n "$v" ] && v="$v|"; v="$v$i"; done
94                 # set (with PUT)
95                 ue=`urlencode "$v"`
96                 NOPROXY=`echo $NOPROXY | tr '?' '&'`
97                 [ -n "$VERBOSE" ] && echo curl -4 -k -X PUT "https://$PROVSRVR/internal/api/$p?val=$ue$NOPROXY"
98                 curl -4 -k -X PUT "https://$PROVSRVR/internal/api/$p?val=$ue$NOPROXY"
99                 exit 0
100         fi
101 elif [ "$CMD" == 'append' ]
102 then
103         if [ $# -ge 2 ]
104         then
105                 p="$1"
106                 shift
107                 tmp=`curl -4 -k "https://$PROVSRVR/internal/api/$p$NOPROXY" 2>/dev/null`
108                 $PROVCMD set "$p" "$tmp" "$@"
109                 exit 0
110         fi
111 elif [ "$CMD" == 'remove' ]
112 then
113         if [ $# -eq 2 ]
114         then
115                 p="$1"
116                 rm="$2"
117                 $PROVCMD get "$p" | grep -v "^$rm\$" > /tmp/pc$$
118                 IFS=$'\r\n'
119                 $PROVCMD set "$p" `cat /tmp/pc$$`
120                 rm /tmp/pc$$
121                 exit 0
122         fi
123 fi
124
125 # Some error somewhere - display usage
126 cat <<'EOF'
127 usage: provcmd [ -s server ] delete name1 [ name2 ... ]
128        provcmd [ -s server ] get name
129        provcmd [ -s server ] create name value
130        provcmd [ -s server ] set name value1 [ value2 ... ]
131        provcmd [ -s server ] append name value1 [ value2 ... ]
132        provcmd [ -s server ] remove name value
133
134 delete - remove the parameters named name1, name2 ...
135 get    - displays the parameters' value
136 create - creates a new parameter
137 set    - sets the value of an existing parameter
138 append - appends the value to a list-based parameter
139 remove - removes a value from a list based parameter
140
141 server - the provisioning server FQDN (feeds-drtr.web.att.com for production)
142
143 Standard Parameters Names:
144 ------------------------------
145 ACTIVE_POD
146 DELIVERY_INIT_RETRY_INTERVAL
147 DELIVERY_MAX_AGE
148 DELIVERY_MAX_RETRY_INTERVAL
149 DELIVERY_RETRY_RATIO
150 LOGROLL_INTERVAL
151 NODES
152 PROV_ACTIVE_NAME
153 PROV_AUTH_ADDRESSES
154 PROV_AUTH_SUBJECTS
155 PROV_DOMAIN
156 PROV_MAXFEED_COUNT
157 PROV_MAXSUB_COUNT
158 PROV_NAME
159 PROV_REQUIRE_CERT
160 PROV_REQUIRE_SECURE
161 STANDBY_POD
162 EOF
163 exit 1