717a16e94e52ee00a44fe8364758df64fd44aa67
[demo.git] / boot / oof_vm_init.sh
1 #!/bin/bash
2
3 CERT=/opt/optf-has/aai_cert.cer
4 KEY=/opt/optf-has/aai_key.key
5 BUNDLE=/opt/optf-has/aai_bundle.pem
6
7 NEXUS_USERNAME=$(cat /opt/config/nexus_username.txt)
8 NEXUS_PASSWD=$(cat /opt/config/nexus_password.txt)
9 NEXUS_DOCKER_REPO=$(cat /opt/config/nexus_docker_repo.txt)
10 DOCKER_IMAGE_VERSION=$(cat /opt/config/docker_version.txt)
11
12 cd /opt/optf-has
13 git pull
14
15 COND_CONF=/opt/optf-has/conductor.conf
16 LOG_CONF=/opt/optf-has/log.conf
17
18 #!!! THE FOLLOWING LINE IS A PLACEHOLDER !!!
19 AAI_cert=/usr/local/bin/aai_cert.cer
20
21 IMAGE_NAME="$NEXUS_DOCKER_REPO/onap/optf-has"
22
23 # MUSIC parameters
24 CASS_IMG=${NEXUS_DOCKER_REPO}/onap/music/cassandra_music:latest
25 MUSIC_IMG=${NEXUS_DOCKER_REPO}/onap/music/music:latest
26 TOMCAT_IMG=library/tomcat:8.5
27 ZK_IMG=library/zookeeper:3.4
28 WORK_DIR=/opt/optf-has
29 CASS_USERNAME=cassandra1
30 CASS_PASSWORD=cassandra1
31
32 # pull images from repo
33 docker login -u $NEXUS_USERNAME -p $NEXUS_PASSWD $NEXUS_DOCKER_REPO
34 docker pull $NEXUS_DOCKER_REPO/onap/optf-osdf:$DOCKER_IMAGE_VERSION
35 docker pull ${ZK_IMG}
36 docker pull ${TOMCAT_IMG}
37 docker pull ${CASS_IMG}
38 docker pull ${MUSIC_IMG}
39 docker pull $NEXUS_DOCKER_REPO/onap/optf-has:$DOCKER_IMAGE_VERSION
40
41
42 #run optf-osdf
43
44 OSDF_IMAGE_NAME="$NEXUS_DOCKER_REPO/onap/optf-osdf"
45 OSDF_CONFIG=/opt/optf-osdf/config/osdf_config.yaml
46
47 mkdir -p /opt/optf-osdf/config
48
49 cat > $OSDF_CONFIG<<NEWFILE
50
51 # Credentials for SO
52 soUsername: ""   # SO username for call back.
53 soPassword: ""   # SO password for call back.
54
55 # Credentials for Conductor
56 conductorUrl: https://localhost:8091/v1/plans/
57 conductorUsername: admin1
58 conductorPassword: plan.15
59 conductorPingWaitTime: 60  # seconds to wait before calling the conductor retry URL
60 conductorMaxRetries: 30  # if we don't get something in 30 minutes, give up
61
62 # Policy Platform -- requires ClientAuth, Authorization, and Environment
63 policyPlatformUrl: http://policy.api.simpledemo.onap.org:8081/pdp/api/getConfig # Policy Dev platform URL
64 policyPlatformEnv: TEST  # Environment for policy platform
65 policyPlatformUsername: testpdp   # Policy platform username.
66 policyPlatformPassword: alpha123   # Policy platform password.
67 policyClientUsername: python   # For use with ClientAuth
68 policyClientPassword: test   # For use with ClientAuth
69
70 # Credentials for DMaaP
71 messageReaderHosts: NA
72 messageReaderTopic: NA
73 messageReaderAafUserId: NA
74 messageReaderAafPassword: NA
75
76 # Credentials for SDC
77 sdcUrl: NA
78 sdcUsername: NA
79 sdcPassword: NA
80 sdcONAPInstanceID: NA
81
82 # Credentials for the OOF placement service - Generic
83 osdfPlacementUsername: test
84 osdfPlacementPassword: testpwd
85
86 # Credentials for the OOF placement service - SO
87 osdfPlacementSOUsername: so_test
88 osdfPlacementSOPassword: so_testpwd
89
90 # Credentials for the OOF CM scheduling service - Generic
91 osdfCMSchedulerUsername: test1
92 osdfCMSchedulerPassword: testpwd1
93
94 NEWFILE
95
96 docker run -d --name osdf -v $OSDF_CONFIG:/optf/config/osdf_config.yaml -p 8698:8699 ${OSDF_IMAGE_NAME}:latest
97
98 # install MUSIC
99 # create directory for music properties and logs
100 mkdir -p /opt/optf-has/music/properties
101 mkdir -p /opt/optf-has/music/logs
102
103 # add music.properties file
104 cat > /opt/optf-has/music/properties/music.properties<<NEWFILE
105 my.id=0
106 all.ids=0
107 my.public.ip=localhost
108 all.public.ips=localhost
109
110 #######################################
111
112 # Optional current values are defaults
113
114 #######################################
115 zookeeper.host=music-zk
116 cassandra.host=music-db
117 #music.ip=localhost
118 #debug=true
119 #music.rest.ip=localhost
120 #lock.lease.period=6000
121 cassandra.user=cassandra1
122 cassandra.password=cassandra1
123
124 # AAF Endpoint if using AAF
125 aaf.endpoint.url=https://aaf.api.simpledemo.onap.org
126 NEWFILE
127
128 # Create Volume for mapping war file and tomcat
129 docker volume create music-vol
130
131 # Create a network for all the containers to run in.
132 docker network create music-net
133
134 # Start Cassandra
135 docker run -d --rm --name music-db --network music-net -p "7000:7000" -p "7001:7001" -p "7199:7199" -p "9042:9042" -p "9160:9160" -e CASSUSER=${CASS_USERNAME} -e CASSPASS=${CASS_PASSWORD} ${CASS_IMG}
136
137 # Start Music war
138 docker run -d --rm --name music-war -v music-vol:/app ${MUSIC_IMG}
139
140 # Start Zookeeper
141 docker run -d --rm --name music-zk --network music-net -p "2181:2181" -p "2888:2888" -p "3888:3888" ${ZK_IMG}
142
143 # Delay for Cassandra
144 sleep 20;
145
146 # Start Up tomcat - Needs to have properties,logs dir and war file volume mapped.
147 docker run -d --rm --name music-tomcat --network music-net -p "8080:8080" -v music-vol:/usr/local/tomcat/webapps -v ${WORK_DIR}/music/properties:/opt/app/music/etc:ro -v ${WORK_DIR}/music/logs:/opt/app/music/logs ${TOMCAT_IMG}
148
149 # Connect tomcat to host bridge network so that its port can be seen.
150 docker network connect bridge music-tomcat;
151 sleep 6;
152 echo "Running onboarding curl command"
153 curl -X POST \
154   http://localhost:8080/MUSIC/rest/v2/admin/onboardAppWithMusic \
155   -H 'Cache-Control: no-cache' \
156   -H 'Content-Type: application/json' \
157   -H 'Postman-Token: 7d2839f4-b032-487a-8998-4d1b27a932d7' \
158   -d '{
159 "appname": "conductor",
160 "userId" : "conductor",
161 "isAAF"  : false,
162 "password" : "c0nduct0r"
163 }
164 '
165 echo "Onboarding curl complete"
166
167 # Get MUSIC url
168 MUSIC_URL=$(docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress}}' music-tomcat)
169 #MUSIC_URL=localhost
170
171 # Set A&AI and MUSIC url inside OOF-HAS conductor.conf
172 sed -i "138 s%.*%server_url = https://aai.api.simpledemo.onap.org:8443/aai%" $COND_CONF
173 sed -i "141 s%.*%server_url_version = v13%" $COND_CONF
174 sed -i "250 s%.*%server_url = http://$MUSIC_URL:8080/MUSIC/rest/v2%" $COND_CONF
175 sed -i "277 s%.*%replication_factor = 1%" $COND_CONF
176
177 # Set A&AI authentication file locations inside OOF-HAS conductor.conf
178 sed -i "153 s%.*%certificate_authority_bundle_file = $AAI_cert%" $COND_CONF
179
180
181 echo "Values to data component"
182 echo $CERT
183 echo $KEY
184 echo $BUNDLE
185
186 # run optf-has
187 docker run -d --name controller -v $COND_CONF:/usr/local/bin/conductor.conf -v $LOG_CONF:/usr/local/bin/log.conf ${IMAGE_NAME}:latest python /usr/local/bin/conductor-controller --config-file=/usr/local/bin/conductor.conf
188
189 docker run -d --name api -p "8091:8091" -v $COND_CONF:/usr/local/bin/conductor.conf -v $LOG_CONF:/usr/local/bin/log.conf ${IMAGE_NAME}:latest python /usr/local/bin/conductor-api --port=8091 -- --config-file=/usr/local/bin/conductor.conf
190
191 docker run -d --name solver -v $COND_CONF:/usr/local/bin/conductor.conf -v $LOG_CONF:/usr/local/bin/log.conf ${IMAGE_NAME}:latest python /usr/local/bin/conductor-solver --config-file=/usr/local/bin/conductor.conf
192
193 docker run -d --name reservation -v $COND_CONF:/usr/local/bin/conductor.conf -v $LOG_CONF:/usr/local/bin/log.conf ${IMAGE_NAME}:latest python /usr/local/bin/conductor-reservation --config-file=/usr/local/bin/conductor.conf
194
195 docker run -d --name data -v $COND_CONF:/usr/local/bin/conductor.conf -v $LOG_CONF:/usr/local/bin/log.conf -v $CERT:/usr/local/bin/aai_cert.cer -v $KEY:/usr/local/bin/aai_key.key -v $BUNDLE:/usr/local/bin/bundle.pem ${IMAGE_NAME}:latest python /usr/local/bin/conductor-data --config-file=/usr/local/bin/conductor.conf
196
197 sleep 10
198
199 echo "Inserting healthcheck plan"
200
201 curl -X POST \
202   http://localhost:8080/MUSIC/rest/v2/keyspaces/conductor/tables/plans/rows/ \
203   -H 'Cache-Control: no-cache' \
204   -H 'Content-Type: application/json' \
205   -H 'Postman-Token: 502781e8-d588-475d-b181-c2e26625ac95' \
206   -H 'X-minorVersion: 3' \
207   -H 'X-patchVersion: 0' \
208   -H 'ns: conductor' \
209   -H 'password: c0nduct0r' \
210   -H 'userId: conductor' \
211   -d '{
212     "consistencyInfo": {
213         "type": "eventual"
214     },
215     "values": {
216         "id" : "healthcheck",
217         "created": 1479482603641,
218         "message": "",
219         "name": "foo",
220         "recommend_max": 1,
221         "solution": "{\"healthcheck\": \" healthcheck\"}",
222         "status": "solved",
223         "template": "{\"healthcheck\": \"healthcheck\"}",
224         "timeout": 3600,
225         "translation": "{\"healthcheck\": \" healthcheck\"}",
226         "updated": 1484324150629
227     }
228 }
229 '
230
231 echo "Healthcheck plan inserted"