summaryrefslogtreecommitdiffstats
path: root/datarouter-prov/src/main/resources/misc/provcmd
blob: e3654eb9567fc9d6998285487e90c1298d3acd77 (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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
#!/bin/bash
# ============LICENSE_START=======================================================
# org.onap.dmaap
# ================================================================================
# Copyright © 2018 AT&T Intellectual Property. All rights reserved.
# ================================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ============LICENSE_END=========================================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.

urlencode() {
    local data
    if [[ $# != 1 ]]; then
        echo "Usage: $0 string-to-urlencode"
        return 1
    fi
    data="$(curl -s -o /dev/null -w %url_effective --get --data-urlencode "$1" "")"
    if [[ $? != 3 ]]; then
        echo "Unexpected error" 1>&2
        return 2
    fi
    echo "${data##/?}"
    return 0
}
export urlencode

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