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
13 # http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
23 # Interactive script to generate a closed loop demo rules artifact
24 # for testing purposes of standalone PDP-D
26 echo "Closed Loop Demo Creator for standalone PDP-D"
27 echo "----------------------------------------------"
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"
40 APPCSERVERS="vm1.mr.simpledemo.openecomp.org"
43 NOTIFICATIONTOPIC="POLICY-CL-MGT"
44 NOTIFICATIONSERVERS="vm1.mr.simpledemo.openecomp.org"
46 NOTIFICATIONAPISECRET=
47 DCAETOPIC="DCAE-CL-EVENT"
48 DCAESERVERS="vm1.mr.simpledemo.openecomp.org"
51 AAIURL="http://localhost:7676/aai/test"
54 AAINAMEDQUERYUUID=d925ed73-8231-4d02-9545-db4e101fffff
56 MSOURL="http://localhost:7677/mso/test"
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
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
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
124 if [[ "$VERSION" == *-SNAPSHOT ]]; then
125 DEPENDENCIES_VERSION="1.1.0-SNAPSHOT"
127 DEPENDENCIES_VERSION="${VERSION}"
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
133 echo "---------------------------------------------------------------------------------------"
134 echo "Please review the entered Closed Loop Maven Coordinates and Policy Template Parameters:"
136 echo "Installation in Local Maven Repository"
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}"
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}"
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}"
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}"
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}"
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}"
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}"
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}"
181 echo "Closed Loop Model/PDP-D dependent version(s): ${DEPENDENCIES_VERSION}"
182 echo "---------------------------------------------------------------------------------------"
186 read -e -i "${HAPPY}" -p "Are the previous parameters correct (Y/N)? " HAPPY
187 if [[ ${HAPPY} != "Y" ]]; then
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
196 if [ ! -w "${DIR_TMP}" ]; then
197 echo "Aborting. ${DIR_TMP} is not writable"
201 ARCHETYPE_GROUP_ID="org.openecomp.policy.drools-applications"
202 ARCHETYPE_ARTIFACT_ID="archetype-closedloop-demo-rules"
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
209 echo "${DIR_TMP}/${ARTIFACTID}.arch.bak/ also exists, deleting it .."
211 rm -fr "${ARTIFACTID}.arch.bak"
214 /bin/mv --force "${DIR_TMP}/${ARTIFACTID}/" "${DIR_TMP}/${ARTIFACTID}.arch.bak"
215 if [ "${?}" -ne 0 ]; then
218 echo "Aborting: ${DIR_TMP}/${ARTIFACTID}/ cannot be moved"
222 ( cd "${DIR_TMP}/" ; rmdir "${DIR_TMP}/${ARTIFACTID}/" )
227 read -e -i "${CREATEARTIFACT}" -p "Create Maven Artifact (Y/N)? " CREATEARTIFACT
228 if [[ ${CREATEARTIFACT} != "Y" ]]; then
235 "$M2_HOME"/bin/mvn archetype:generate \
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}" \
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}"
272 if [ "${?}" -ne 0 ]; then
275 echo "Aborting: ${ARTIFACTID} has not been successfully generated"
281 cd "${DIR_TMP}/${ARTIFACTID}"/
283 /bin/mv src/main/config/* .
285 /bin/sed -i -e "/apiKey=NULL$/d" *-controller.properties
286 /bin/sed -i -e "/apiSecret=NULL$/d" *-controller.properties
288 /bin/sed -i -e "/apiKey.*:.*\"NULL\",/d" *-controller.rest.json
289 /bin/sed -i -e "/apiSecret.*:.*\"NULL\",/d" *-controller.rest.json
291 echo "Closed Loop Rules from templates have been successfully created under ${DIR_TMP}/${ARTIFACTID}/"
294 read -e -i "${INSTALLREPO}" -p "Do you want to deploy ${ARTIFACTID} rules into maven repository (Y/N)? " INSTALLREPO
295 if [[ ${INSTALLREPO} != "Y" ]]; then
300 echo "generating deployable ${ARTIFACTID} maven artifact .."
302 "$M2_HOME"/bin/mvn install
304 if [ "${?}" -ne 0 ]; then
307 echo "Aborting: ${ARTIFACTID} deployable jar cannot be generated"
313 echo "${ARTIFACTID} has been successfully installed in user's (${USER}) local repository"
314 echo "Find configuration files at ${DIR_TMP}/${ARTIFACTID}/"