[POLICY-22] Reorganizing drools-apps
[policy/drools-applications.git] / controlloop / common / packages / basex / src / files / bin / create-closed-loop-demo.sh
1 #! /bin/bash
2
3 ###
4 # ============LICENSE_START=======================================================
5 # PDP-D APPS Base Package
6 # ================================================================================
7 # Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
8 # ================================================================================
9 # Licensed under the Apache License, Version 2.0 (the "License");
10 # you may not use this file except in compliance with the License.
11 # You may obtain a copy of the License at
12
13 #      http://www.apache.org/licenses/LICENSE-2.0
14
15 # Unless required by applicable law or agreed to in writing, software
16 # distributed under the License is distributed on an "AS IS" BASIS,
17 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 # See the License for the specific language governing permissions and
19 # limitations under the License.
20 # ============LICENSE_END=========================================================
21 ###
22
23 # Interactive script to generate a closed loop demo rules artifact
24 # for testing purposes of standalone PDP-D
25
26 echo "Closed Loop Demo Creator for standalone PDP-D"
27 echo "----------------------------------------------"
28 echo
29
30 GROUPID="org.openecomp.policy.demo.rules"
31 ARTIFACTID="closed-loop-demo-rules"
32 VERSION="1.1.0-SNAPSHOT"
33 PACKAGE="org.openecomp.policy.demo.rules"
34 CLOSEDLOOPCONTROLNAME="CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8"
35 POLICYSCOPE="service=test;resource=FRWL;type=configuration"
36 POLICYNAME="FirewallDemo"
37 POLICYVERSION="v0.0.1"
38 ACTOR="APPC"
39 APPCTOPIC="APPC-CL"
40 APPCSERVERS="vm1.mr.simpledemo.openecomp.org"
41 APPCAPIKEY=
42 APPCAPISECRET=
43 NOTIFICATIONTOPIC="POLICY-CL-MGT"
44 NOTIFICATIONSERVERS="vm1.mr.simpledemo.openecomp.org"
45 NOTIFICATIONAPIKEY=
46 NOTIFICATIONAPISECRET=
47 DCAETOPIC="DCAE-CL-EVENT"
48 DCAESERVERS="vm1.mr.simpledemo.openecomp.org"
49 DCAEAPIKEY=
50 DCAEAPISECRET=
51 AAIURL="http://localhost:7676/aai/test"
52 AAIUSERNAME="policy"
53 AAIPASSWORD="policy"
54 AAINAMEDQUERYUUID=d925ed73-8231-4d02-9545-db4e101fffff
55 AAIPATTERNMATCH=1
56 MSOURL="http://localhost:7677/mso/test"
57 MSOUSERNAME="policy"
58 MSOPASSWORD="policy"
59
60 read -e -i "${GROUPID}" -p "Closed Loop Rules Maven Group Id> " GROUP_ID
61 read -e -i "${ARTIFACTID}" -p "Closed Loop Rules Maven Coordinates Artifact Id> " ARTIFACTID
62 read -e -i "${VERSION}" -p "Closed Loop Rules Maven Coordinates Version> " VERSION
63 read -e -i "${PACKAGE}" -p "Closed Loop Rules Package> " PACKAGE
64 read -e -i "${CLOSEDLOOPCONTROLNAME}" -p "Closed Loop Template Control Name> " CLOSEDLOOPCONTROLNAME
65 read -e -i "${POLICYSCOPE}" -p "Closed Loop Policy Scope> " POLICYSCOPE
66 read -e -i "${POLICYNAME}" -p "Closed Loop Policy Name> " POLICYNAME
67 read -e -i "${POLICYVERSION}" -p "Closed Loop Policy Version> " POLICYVERSION
68 read -e -i "${ACTOR}" -p "Closed Loop Actor ('APPC' or 'MSO')> " ACTOR
69 read -e -i "${APPCTOPIC}" -p "Closed Loop APP-C Recipe Topic> " APPCTOPIC
70 read -e -i "${APPCSERVERS}" -p "Closed Loop APP-C UEB Servers for ${APPCTOPIC} topic> " APPCSERVERS
71 read -e -i "${APPCAPIKEY}" -p "Closed Loop APP-C UEB API Key for ${APPCTOPIC} topic> " APPCAPIKEY
72 read -e -i "${APPCAPISECRET}" -p "Closed Loop APP-C UEB API Secret for ${APPCTOPIC} topic> " APPCAPISECRET
73 read -e -i "${NOTIFICATIONTOPIC}" -p "Closed Loop Ruby Notification Topic> " NOTIFICATIONTOPIC
74 read -e -i "${NOTIFICATIONSERVERS}" -p "Closed Loop Ruby UEB Servers for ${NOTIFICATIONTOPIC} topic> " NOTIFICATIONSERVERS
75 read -e -i "${NOTIFICATIONAPIKEY}" -p "Closed Loop Ruby UEB API Key ${NOTIFICATIONTOPIC} topic> " NOTIFICATIONAPIKEY
76 read -e -i "${NOTIFICATIONAPISECRET}" -p "Closed Loop Ruby UEB API Secret ${NOTIFICATIONTOPIC} topic> " NOTIFICATIONAPISECRET
77 read -e -i "${DCAETOPIC}" -p "Closed Loop DCAE Topic> " DCAETOPIC
78 read -e -i "${DCAESERVERS}" -p "Closed Loop DCAE UEB Servers> " DCAESERVERS
79 read -e -i "${DCAEAPIKEY}" -p "Closed Loop DCAE UEB API Key for ${DCAETOPIC} topic> " DCAEAPIKEY
80 read -e -i "${DCAEAPISECRET}" -p "Closed Loop DCAE UEB API Secret for ${DCAETOPIC} topic> " DCAEAPISECRET
81 read -e -i "${AAIURL}" -p "Closed Loop AAI URL> " AAIURL
82 read -e -i "${AAIUSERNAME}" -p "Closed Loop AAI Username> " AAIUSERNAME
83 read -e -i "${AAIPASSWORD}" -p "Closed Loop AAI Password> " AAIPASSWORD
84 read -e -i "${AAINAMEDQUERYUUID}" -p "Closed Loop AAI Named Query UUID> " AAINAMEDQUERYUUID
85 read -e -i "${AAIPATTERNMATCH}" -p "Closed Loop AAI Pattern Match (1 for vFW, otherwise vDNS)> " AAIPATTERNMATCH
86 read -e -i "${MSOURL}" -p "Closed Loop MSO URL> " MSOURL
87 read -e -i "${MSOUSERNAME}" -p "Closed Loop MSO Username> " MSOUSERNAME
88 read -e -i "${MSOPASSWORD}" -p "Closed Loop MSO Password> " MSOPASSWORD
89
90 echo
91 echo
92
93 if [ -z "${GROUPID}" ]; then echo "Aborting: Closed Loop Rules Maven Group Id not provided"; exit 1; fi
94 if [ -z "${ARTIFACTID}" ]; then echo "Aborting: Closed Loop Rules Maven Coordinates Artifact Id not provided"; exit 1; fi
95 if [ -z "${VERSION}" ]; then echo "Aborting: Closed Loop Rules Maven Coordinates Version not provided"; exit 1; fi
96 if [ -z "${PACKAGE}" ]; then echo "Aborting: Closed Loop Rules Package not provided"; exit 1; fi
97 if [ -z "${CLOSEDLOOPCONTROLNAME}" ]; then echo "Aborting: Closed Loop Template Control Name not provided"; exit 1; fi
98 if [ -z "${POLICYSCOPE}" ]; then echo "Aborting: Closed Loop Template Policy Scope not provided"; exit 1; fi
99 if [ -z "${POLICYNAME}" ]; then echo "Aborting: Closed Loop Template Policy Name not provided"; exit 1; fi
100 if [ -z "${POLICYVERSION}" ]; then echo "Aborting: Closed Loop Template Policy Version not provided"; exit 1; fi
101 if [ -z "${ACTOR}" ]; then echo "Aborting: Closed Loop Template Actor not provided"; exit 1; fi
102 if [ -z "${APPCTOPIC}" ]; then echo "Aborting: Closed Loop Template APP-C Recipe Topic not provided"; exit 1; fi
103 if [ -z "${APPCSERVERS}" ]; then echo "Aborting: Closed Loop Template APP-C UEB Servers not provided"; exit 1; fi
104 if [ -z "${NOTIFICATIONTOPIC}" ]; then echo "Aborting: Closed Loop Template Ruby Notification Topic not provided"; exit 1; fi
105 if [ -z "${NOTIFICATIONSERVERS}" ]; then echo "Aborting: Closed Loop Template Ruby UEB Servers not provided"; exit 1; fi
106 if [ -z "${DCAETOPIC}" ]; then echo "Aborting: Closed Loop Template DCAE DMAAP Topic not provided"; exit 1; fi
107 if [ -z "${DCAESERVERS}" ]; then echo "Aborting: Closed Loop Template DCAE DMAAP Servers not provided"; exit 1; fi
108 if [ -z "${AAIURL}" ]; then echo "Aborting: Closed Loop Template AAI URL not provided"; exit 1; fi
109 if [ -z "${AAIUSERNAME}" ]; then echo "Aborting: Closed Loop Template AAI Username not provided"; exit 1; fi
110 if [ -z "${AAIPASSWORD}" ]; then echo "Aborting: Closed Loop Template AAI Password not provided"; exit 1; fi
111 if [ -z "${AAINAMEDQUERYUUID}" ]; then echo "Aborting: Closed Loop Template AAI Named Query UUID not provided"; exit 1; fi
112 if [ -z "${AAIPATTERNMATCH}" ]; then echo "Aborting: Closed Loop Template AAPI Pattern Match not provided"; exit 1; fi
113 if [ -z "${MSOURL}" ]; then echo "Aborting: Closed Loop Template MSO URL not provided"; exit 1; fi
114 if [ -z "${MSOUSERNAME}" ]; then echo "Aborting: Closed Loop Template MSO Username not provided"; exit 1; fi
115 if [ -z "${MSOPASSWORD}" ]; then echo "Aborting: Closed Loop Template MSO Password not provided"; exit 1; fi
116
117 if [ -z "${DCAEAPIKEY}" ]; then DCAEAPIKEY="NULL"; fi
118 if [ -z "${DCAEAPISECRET}" ]; then DCAEAPISECRET="NULL"; fi
119 if [ -z "${APPCAPIKEY}" ]; then APPCAPIKEY="NULL"; fi
120 if [ -z "${APPCAPISECRET}" ]; then APPCAPISECRET="NULL"; fi
121 if [ -z "${NOTIFICATIONAPIKEY}" ]; then NOTIFICATIONAPIKEY="NULL"; fi
122 if [ -z "${NOTIFICATIONAPISECRET}" ]; then NOTIFICATIONAPISECRET="NULL"; fi
123
124 if [[ "$VERSION" == *-SNAPSHOT ]]; then
125         DEPENDENCIES_VERSION="1.1.0-SNAPSHOT"
126 else
127         DEPENDENCIES_VERSION="${VERSION}"
128 fi
129
130 read -e -i "${DEPENDENCIES_VERSION}" -p  "Closed Loop Model/PDP-D dependent version(s) (ie: 1.0.0-SNAPSHOT, 1607.31.1-1, or [1607.31.1,)) > " DEPENDENCIES_VERSION
131 if [ -z "${DEPENDENCIES_VERSION}" ]; then echo "Aborting: Closed Loop Model/PDP-D dependencies not provided"; exit 1; fi
132
133 echo "---------------------------------------------------------------------------------------"
134 echo "Please review the entered Closed Loop Maven Coordinates and Policy Template Parameters:"
135 echo
136 echo "Installation in Local Maven Repository"
137 echo
138 echo "Closed Loop Rules Maven Artifact Generation: Group Id: ${GROUP_ID}"
139 echo "Closed Loop Rules Maven Artifact Generation: Artifact Id: ${ARTIFACTID}"
140 echo "Closed Loop Rules Maven Artifact Generation: Version: ${VERSION}"
141 echo "Closed Loop Rules Maven Artifact Generation: Package: ${PACKAGE}"
142 echo
143 echo "Closed Loop Template Drools DRL Expansion: Closed Loop Control Name: ${CLOSEDLOOPCONTROLNAME}"
144 echo "Closed Loop Template Drools DRL Expansion: Closed Loop Policy Scope: ${POLICYSCOPE}"
145 echo "Closed Loop Template Drools DRL Expansion: Closed Loop Policy Name: ${POLICYNAME}"
146 echo "Closed Loop Template Drools DRL Expansion: Closed Loop Policy Version: ${POLICYVERSION}"
147 echo "Closed Loop Template Drools DRL Expansion: Closed Loop Actor: ${ACTOR}"
148 echo "Closed Loop Template Drools DRL Expansion: Closed Loop Recipe: ${APPC}"
149 echo "Closed Loop Template Drools DRL Expansion: Closed Loop Recipe Topic: ${APPCTOPIC}"
150 echo "Closed Loop Template Drools DRL Expansion: Closed Loop Notification Topic: ${NOTIFICATIONTOPIC}"
151 echo
152 echo "Closed Loop Controller Configuration: Rules: Group Id: ${GROUP_ID}"
153 echo "Closed Loop Controller Configuration: Rules: Artifact Id: ${ARTIFACTID}"
154 echo "Closed Loop Controller Configuration: Rules: Version: ${VERSION}"
155 echo
156 echo "Closed Loop Controller Configuration: DCAE UEB Topic: ${DCAETOPIC}"
157 echo "Closed Loop Controller Configuration: DCAE UEB Servers: ${DCAESERVERS}"
158 echo "Closed Loop Controller Configuration: DCAE UEB API Key: ${DCAEAPIKEY}"
159 echo "Closed Loop Controller Configuration: DCAE UEB API Secret: ${DCAEAPISECRET}"
160 echo
161 echo "Closed Loop Controller Configuration: APP-C UEB Topic: ${APPCTOPIC}"
162 echo "Closed Loop Controller Configuration: APP-C UEB Servers: ${APPCSERVERS}"
163 echo "Closed Loop Controller Configuration: APP-C UEB API Key: ${APPCAPIKEY}"
164 echo "Closed Loop Controller Configuration: APP-C UEB API Secret: ${APPCAPISECRET}"
165 echo
166 echo "Closed Loop Controller Configuration: NOTIFICATION Topic: ${NOTIFICATIONTOPIC}"
167 echo "Closed Loop Controller Configuration: NOTIFICATION UEB Servers: ${NOTIFICATIONSERVERS}"
168 echo "Closed Loop Controller Configuration: NOTIFICATION UEB API Key: ${NOTIFICATIONAPIKEY}"
169 echo "Closed Loop Controller Configuration: NOTIFICATION UEB API Secret: ${NOTIFICATIONAPISECRET}"
170 echo
171 echo "Closed Loop Controller Configuration: AAI URL: ${AAIURL}"
172 echo "Closed Loop Controller Configuration: AAI Username: ${AAIUSERNAME}"
173 echo "Closed Loop Controller Configuration: AAI Password: ${AAIPASSWORD}"
174 echo "Closed Loop Controller Configuration: AAI Named Query UUID: ${AAINAMEDQUERYUUID}"
175 echo "Closed Loop Controller Configuration: AAI Pattern Match: ${AAIPATTERNMATCH}"
176 echo
177 echo "Closed Loop Controller Configuration: MSO URL: ${MSOURL}"
178 echo "Closed Loop Controller Configuration: MSO Username: ${MSOUSERNAME}"
179 echo "Closed Loop Controller Configuration: MSO Password: ${MSOPASSWORD}"
180 echo
181 echo "Closed Loop Model/PDP-D dependent version(s): ${DEPENDENCIES_VERSION}"
182 echo "---------------------------------------------------------------------------------------"
183 echo
184
185 HAPPY="Y"
186 read -e -i "${HAPPY}" -p  "Are the previous parameters correct (Y/N)? " HAPPY
187 if [[ ${HAPPY} != "Y" ]]; then
188         exit 1
189 fi
190
191 echo
192 DIR_TMP="/tmp"
193 echo "The Closed Loop Source Rules will be installed at ${DIR_TMP}"
194 read -e -i "${DIR_TMP}" -p  "Do you want to change the Source Rules install directory? " DIR_TMP
195
196 if [ ! -w "${DIR_TMP}" ]; then
197         echo "Aborting.  ${DIR_TMP} is not writable"
198         exit 1
199 fi
200
201 ARCHETYPE_GROUP_ID="org.openecomp.policy.drools-applications"
202 ARCHETYPE_ARTIFACT_ID="archetype-closedloop-demo-rules"
203
204 if [ -d "${DIR_TMP}/${ARTIFACTID}/" ]; then
205         if [ "$(ls -A "${DIR_TMP}/${ARTIFACTID}"/)" ]; then
206                 echo "${DIR_TMP} already contains a ${ARTIFACTID}/ directory, saving it to ${DIR_TMP}/${ARTIFACTID}.arch.bak/"
207                 if [ -d "${DIR_TMP}/${ARTIFACTID}.arch.bak"/ ]; then
208                         ( 
209                                 echo "${DIR_TMP}/${ARTIFACTID}.arch.bak/ also exists, deleting it .."
210                                 cd "${DIR_TMP}"/
211                                 rm -fr "${ARTIFACTID}.arch.bak"
212                         )
213                 fi
214                 /bin/mv --force "${DIR_TMP}/${ARTIFACTID}/" "${DIR_TMP}/${ARTIFACTID}.arch.bak"
215                 if [ "${?}" -ne 0 ]; then
216                         echo
217                         echo
218                     echo "Aborting: ${DIR_TMP}/${ARTIFACTID}/ cannot be moved"
219                     exit 1
220                 fi
221         else
222                 ( cd "${DIR_TMP}/" ; rmdir "${DIR_TMP}/${ARTIFACTID}/" )
223         fi
224 fi
225
226 CREATEARTIFACT="Y"
227 read -e -i "${CREATEARTIFACT}" -p  "Create Maven Artifact (Y/N)? " CREATEARTIFACT
228 if [[ ${CREATEARTIFACT} != "Y" ]]; then
229         exit 1
230 fi
231
232 (
233 cd "${DIR_TMP}"
234
235 "$M2_HOME"/bin/mvn archetype:generate \
236     -B \
237     -DarchetypeCatalog=local \
238     -DarchetypeGroupId="${ARCHETYPE_GROUP_ID}" \
239     -DarchetypeArtifactId="${ARCHETYPE_ARTIFACT_ID}" \
240     -DarchetypeVersion="${VERSION}" \
241     -DgroupId="${GROUP_ID}" \
242     -DartifactId="${ARTIFACTID}" \
243     -Dversion="${VERSION}" \
244     -Dpackage="${PACKAGE}" \
245     -DclosedLoopControlName="${CLOSEDLOOPCONTROLNAME}" \
246     -DpolicyScope="${POLICYSCOPE}" \
247     -DpolicyName="${POLICYNAME}" \
248     -DpolicyVersion="${POLICYVERSION}" \
249     -Dactor="${ACTOR}" \
250     -DappcTopic="${APPCTOPIC}" \
251     -DappcServers="${APPCSERVERS}" \
252     -DappcApiKey="${APPCAPIKEY}" \
253     -DappcApiSecret="${APPCAPISECRET}" \
254     -DnotificationTopic="${NOTIFICATIONTOPIC}" \
255     -DnotificationServers="${NOTIFICATIONSERVERS}" \
256     -DnotificationApiKey="${NOTIFICATIONAPIKEY}" \
257     -DnotificationApiSecret="${NOTIFICATIONAPISECRET}" \
258     -DdcaeTopic="${DCAETOPIC}" \
259     -DdcaeServers="${DCAESERVERS}" \
260     -DdcaeApiKey="${DCAEAPIKEY}" \
261     -DdcaeApiSecret="${DCAEAPISECRET}" \
262     -DaaiURL="${AAIURL}" \
263     -DaaiUsername="${AAIUSERNAME}" \
264     -DaaiPassword="${AAIPASSWORD}" \
265     -DaaiNamedQueryUUID="${AAINAMEDQUERYUUID}" \
266     -DaaiPatternMatch="${AAIPATTERNMATCH}" \
267     -DmsoURL="${MSOURL}" \
268     -DmsoUsername="${MSOUSERNAME}" \
269     -DmsoPassword="${MSOPASSWORD}" \
270     -DdependenciesVersion="${DEPENDENCIES_VERSION}"
271     
272 if [ "${?}" -ne 0 ]; then
273         echo
274         echo
275     echo "Aborting: ${ARTIFACTID} has not been successfully generated"
276     exit 1
277 fi
278
279 echo 
280
281 cd "${DIR_TMP}/${ARTIFACTID}"/
282
283 /bin/mv src/main/config/* .
284
285 /bin/sed -i -e "/apiKey=NULL$/d" *-controller.properties
286 /bin/sed -i -e "/apiSecret=NULL$/d" *-controller.properties
287
288 /bin/sed -i -e "/apiKey.*:.*\"NULL\",/d" *-controller.rest.json
289 /bin/sed -i -e "/apiSecret.*:.*\"NULL\",/d" *-controller.rest.json
290
291 echo "Closed Loop Rules from templates have been successfully created under ${DIR_TMP}/${ARTIFACTID}/"
292
293 INSTALLREPO="Y"
294 read -e -i "${INSTALLREPO}" -p  "Do you want to deploy ${ARTIFACTID} rules into maven repository (Y/N)? " INSTALLREPO
295 if [[ ${INSTALLREPO} != "Y" ]]; then
296         exit 1
297 fi
298
299 echo
300 echo "generating deployable ${ARTIFACTID} maven artifact .."
301
302 "$M2_HOME"/bin/mvn install
303
304 if [ "${?}" -ne 0 ]; then
305         echo
306         echo
307     echo "Aborting: ${ARTIFACTID} deployable jar cannot be generated"
308     exit 1
309 fi
310
311
312 echo
313 echo "${ARTIFACTID} has been successfully installed in user's (${USER}) local repository"
314 echo "Find configuration files at ${DIR_TMP}/${ARTIFACTID}/"
315 )