aboutsummaryrefslogtreecommitdiffstats
path: root/controlloop/common/feature-controlloop-management/src/main/feature/bin/create-cl-amsterdam
blob: b26c04c76da0cbdaa14b90a92d3b954b25f8fd22 (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
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
#! /bin/bash

###
# ============LICENSE_START=======================================================
# ONAP
# ================================================================================
# Copyright (C) 2017-2019 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=========================================================
###

# Interactive script to generate and install in a pdp-d control loops demo rules
# for a standalone PDP-D usage

source "${POLICY_HOME}"/etc/build.info

echo "Control Loop CLI Generator for R1 Amsterdam Release"
echo "---------------------------------------------------"
echo

GROUP_ID="org.onap.policy.rules.amsterdam"
ARTIFACT_ID="amsterdam"
VERSION="${version:-1.3.4}"
PACKAGE="org.onap.policy.rules.amsterdam"
CONTROL_LOOP_NAME="ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e"
POLICY_SCOPE="amsterdam"
POLICY_NAME="vcpe"
POLICY_VERSION="v0.0.1"
CONTROL_LOOP_YAML="controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e%0D%0A++trigger_policy%3A+unique-policy-id-1-restart%0D%0A++timeout%3A+3600%0D%0A++abatement%3A+true%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-restart%0D%0A++++name%3A+Restart+the+VM%0D%0A++++description%3A%0D%0A++++actor%3A+APPC%0D%0A++++recipe%3A+Restart%0D%0A++++target%3A%0D%0A++++++type%3A+VM%0D%0A++++retry%3A+3%0D%0A++++timeout%3A+1200%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard"
DMAAP_SERVERS="vm1.mr.simpledemo.openecomp.org"
DCAE_TOPIC="unauthenticated.DCAE_CL_OUTPUT"
DCAE_SERVERS="vm1.mr.simpledemo.openecomp.org"

read -e -i "${GROUP_ID}" -p "Target Rules Group Id> " GROUP_ID
read -e -i "${ARTIFACT_ID}" -p "Target Rules Artifact Id> " ARTIFACT_ID
read -e -i "${VERSION}" -p "Target Rules Version> " VERSION
read -e -i "${PACKAGE}" -p "Target Rules Java Package> " PACKAGE

read -e -i "${CONTROL_LOOP_NAME}" -p "Template Control Loop Name> " CONTROL_LOOP_NAME
read -e -i "${POLICY_SCOPE}" -p "Template Policy Scope> " POLICY_SCOPE
read -e -i "${POLICY_NAME}" -p "Template Policy Name> " POLICY_NAME
read -e -i "${POLICY_VERSION}" -p "Template Policy Version> " POLICY_VERSION

read -e -i "${CONTROL_LOOP_YAML}" -p "Control Loop Yaml> " CONTROL_LOOP_YAML

read -e -i "${DCAE_SERVERS}" -p "Configuration DCAE DMaaP Servers> " DCAE_SERVERS
read -e -i "${DMAAP_SERVERS}" -p "Configuration Open DMaaP Servers> " DMAAP_SERVERS
read -e -i "${DCAE_TOPIC}" -p "Template DCAE Topic> " DCAE_TOPIC

echo
echo

if [ -z "${GROUP_ID}" ]; then echo "Aborting: Rules Maven Group Id not provided"; exit 1; fi
if [ -z "${ARTIFACT_ID}" ]; then echo "Aborting: Rules Maven Coordinates Artifact Id not provided"; exit 1; fi
if [ -z "${VERSION}" ]; then echo "Aborting: Rules Maven Coordinates Version not provided"; exit 1; fi
if [ -z "${PACKAGE}" ]; then echo "Aborting: Rules Package not provided"; exit 1; fi
if [ -z "${CONTROL_LOOP_NAME}" ]; then echo "Aborting: Template Control Loop Name not provided"; exit 1; fi
if [ -z "${POLICY_SCOPE}" ]; then echo "Aborting: Template Policy Scope not provided"; exit 1; fi
if [ -z "${POLICY_NAME}" ]; then echo "Aborting: Template Policy Name not provided"; exit 1; fi
if [ -z "${POLICY_VERSION}" ]; then echo "Aborting: Template Policy Version not provided"; exit 1; fi
if [ -z "${CONTROL_LOOP_YAML}" ]; then echo "Aborting: Control Loop Yaml not provided"; exit 1; fi

if [ -z "${DCAE_TOPIC}" ]; then echo "Aborting: Configuration DCAE DMaaP Topic not provided"; exit 1; fi
if [ -z "${DMAAP_SERVERS}" ]; then echo "Aborting: Configuration Open DMaaP Servers not provided"; exit 1; fi
if [ -z "${DCAE_SERVERS}" ]; then echo "Aborting: Configuration DCAE DMaaP Servers not provided"; exit 1; fi

DEPENDENCIES_VERSION="${version}"

read -e -i "${DEPENDENCIES_VERSION}" -p  "Control Loop Jar Dependencies Version (ie: 1.1.1-SNAPSHOT, or 1.1.1) > " DEPENDENCIES_VERSION
if [ -z "${DEPENDENCIES_VERSION}" ]; then echo "Aborting: Control Loop Jar Dependencies Version not provided"; exit 1; fi

echo "---------------------------------------------------------------------------------------"
echo "Please review the Control Loop Rules, Template, and Configuration Parameters:"
echo
echo "The generated rules jar will be installed in a local Maven Repository"
echo
echo "Rules Maven Artifact Generation: Group Id: ${GROUP_ID}"
echo "Rules Maven Artifact Generation: Artifact Id: ${ARTIFACT_ID}"
echo "Rules Maven Artifact Generation: Version: ${VERSION}"
echo "Rules Maven Artifact Generation: Java Package: ${PACKAGE}"
echo "Rules Maven Artifact Generation: pom: Java Libraries Dependencies Version: ${DEPENDENCIES_VERSION}"
echo
echo "Template Drools DRL Expansion: Control Loop Control Name: ${CONTROL_LOOP_NAME}"
echo "Template Drools DRL Expansion: Control Loop Policy Scope: ${POLICY_SCOPE}"
echo "Template Drools DRL Expansion: Control Loop Policy Name: ${POLICY_NAME}"
echo "Template Drools DRL Expansion: Control Loop Policy Version: ${POLICY_VERSION}"
echo "Template Drools DRL Expansion: Control Loop Yaml: ${CONTROL_LOOP_YAML}"
echo
echo "Configuration Policy Controller: Rules: Group Id: ${GROUP_ID}"
echo "Configuration Policy Controller: Rules: Artifact Id: ${ARTIFACT_ID}"
echo "Configuration Policy Controller: Rules: Version: ${VERSION}"
echo
echo "Configuration Policy Controller: DCAE DMaaP Topic: ${DCAE_TOPIC}"
echo "Configuration Policy Controller: DCAE DMaaP Servers: ${DCAE_SERVERS}"
echo
echo "Configuration Policy Controller: Open DMaaP Servers: ${DMAAP_SERVERS}"
echo "---------------------------------------------------------------------------------------"
echo

HAPPY="Y"
read -e -i "${HAPPY}" -p  "Are the previous parameters correct (Y/N)? " HAPPY
if [[ ${HAPPY} != "Y" ]]; then
	exit 1
fi

echo
DIR_TMP="/tmp"
echo "The Control Loop Rules Maven Project Source Rules will be installed at ${DIR_TMP}"
read -e -i "${DIR_TMP}" -p  "Do you want to change the Rules Source Project install directory? " DIR_TMP

if [ ! -w "${DIR_TMP}" ]; then
	echo "Aborting.  ${DIR_TMP} is not writable"
	exit 1
fi

ARCHETYPE_GROUP_ID="org.onap.policy.drools-applications.controlloop.templates"
ARCHETYPE_ARTIFACT_ID="archetype-cl-amsterdam"
ARCHETYPE_VERSION="${VERSION}"

if [ -d "${DIR_TMP}/${ARTIFACT_ID}/" ]; then
	if [ "$(ls -A "${DIR_TMP}/${ARTIFACT_ID}"/)" ]; then
    		echo "${DIR_TMP} already contains a ${ARTIFACT_ID}/ directory, saving it to ${DIR_TMP}/${ARTIFACT_ID}.arch.bak/"
    		if [ -d "${DIR_TMP}/${ARTIFACT_ID}.arch.bak"/ ]; then
    			( 
    				echo "${DIR_TMP}/${ARTIFACT_ID}.arch.bak/ also exists, deleting it .."
    				cd "${DIR_TMP}"/
    				rm -fr "${ARTIFACT_ID}.arch.bak"
    			)
    		fi
		/bin/mv --force "${DIR_TMP}/${ARTIFACT_ID}/" "${DIR_TMP}/${ARTIFACT_ID}.arch.bak"
		if [ "${?}" -ne 0 ]; then
			echo
			echo
		    echo "Aborting: ${DIR_TMP}/${ARTIFACT_ID}/ cannot be moved"
		    exit 1
		fi
	else
    		( cd "${DIR_TMP}/" ; rmdir "${DIR_TMP}/${ARTIFACT_ID}/" )
	fi
fi

CREATEARTIFACT="Y"
read -e -i "${CREATEARTIFACT}" -p  "Create Maven Artifact (Y/N)? " CREATEARTIFACT
if [[ ${CREATEARTIFACT} != "Y" ]]; then
	exit 1
fi

(
cd "${DIR_TMP}"

mvn archetype:generate \
    -B \
    -DarchetypeCatalog=local \
    -DarchetypeGroupId="${ARCHETYPE_GROUP_ID}" \
    -DarchetypeArtifactId="${ARCHETYPE_ARTIFACT_ID}" \
    -DarchetypeVersion="${ARCHETYPE_VERSION}" \
    -Dpackage="${PACKAGE}" \
    -DgroupId="${GROUP_ID}" \
    -DartifactId="${ARTIFACT_ID}" \
    -Dversion="${VERSION}" \
    -DclosedLoopControlName="${CONTROL_LOOP_NAME}" \
    -DcontrolLoopYaml="${CONTROL_LOOP_YAML}" \
    -DpolicyScope="${POLICY_SCOPE}" \
    -DpolicyName="${POLICY_NAME}" \
    -DpolicyVersion="${POLICY_VERSION}" \
    -DdmaapServers="${DMAAP_SERVERS}" \
    -DdcaeTopic="${DCAE_TOPIC}" \
    -DdcaeServers="${DCAE_SERVERS}" \
    -DdependenciesVersion="${DEPENDENCIES_VERSION}"
    
if [ "${?}" -ne 0 ]; then
	echo
	echo
	echo "Aborting: ${ARTIFACT_ID} has not been successfully generated"
	exit 1
fi

echo 

cd "${DIR_TMP}/${ARTIFACT_ID}"/

mv src/main/config/* .

echo
echo "Control Loop Rules from templates have been successfully created under ${DIR_TMP}/${ARTIFACT_ID}/"
echo "You have to option to further tweak this project or deploy it as is to the local maven repository."
echo "If you decide to customize the source rules project, please enter 'N' below,"
echo "and when finished type 'mvn install' at ${DIR_TMP}/${ARTIFACT_ID}/ to install the Control Loop."

INSTALLREPO="Y"
read -e -i "${INSTALLREPO}" -p  "Do you want to deploy ${ARTIFACT_ID} rules into maven repository (Y/N)? " INSTALLREPO
if [[ ${INSTALLREPO} != "Y" ]]; then
	exit 1
fi

echo
echo "installing the rules ${ARTIFACT_ID} maven artifact .."

mvn install

if [ "${?}" -ne 0 ]; then
	echo
	echo
	echo "Aborting: ${ARTIFACT_ID} deployable jar cannot be installed"
	echo "Fix the source rules project issues, and issue 'mvn install'"
	echo "at ${DIR_TMP}/${ARTIFACT_ID}/ when done to install it."
	exit 1
fi


echo
echo "${ARTIFACT_ID} has been successfully installed in user's (${USER}) local repository"
echo "Find configuration files at ${DIR_TMP}/${ARTIFACT_ID}/"
echo
echo "To deploy this Control Loop into the PDP-D, follow one of these methods: "
echo "1. copy ${DIR_TMP}/${ARTIFACT_ID}/${ARTIFACT_ID}-controller.properties under '${POLICY_HOME}/config'"
echo "   and restart the pdp-d (policy stop; policy start)"
echo "2. cd ${DIR_TMP}/${ARTIFACT_ID}/; rest-add-controller ${ARTIFACT_ID}"
echo
)