removing proxy sample
[oom.git] / kubernetes / config / docker / init / src / config / dcaegen2 / heat / entrypoint.sh
1 #/bin/bash
2 set -x
3
4 function configure_dns_designate() {
5     # Check whether the SIMPLEDEMO_ONAP_ORG_ZONE_ID exists
6     EXISTING_ZONES=`openstack zone list -f=yaml -c=name | awk ' { print$3 } '`
7     if [[ $EXISTING_ZONES =~ (^|[[:space:]])$SIMPLEDEMO_ONAP_ORG_ZONE_NAME($|[[:space:]]) ]]
8     then
9         echo "Zone $SIMPLEDEMO_ONAP_ORG_ZONE_NAME already exist, retrieving it's ID."
10         SIMPLEDEMO_ONAP_ORG_ZONE_ID=`openstack zone list -f=yaml --name=simpledemo.onap.org. -c=id | awk ' { print $3 } '`
11         echo "Zone $SIMPLEDEMO_ONAP_ORG_ZONE_NAME id is: $SIMPLEDEMO_ONAP_ORG_ZONE_ID"
12     else
13         echo "Zone $SIMPLEDEMO_ONAP_ORG_ZONE_NAME doens't exist, creating ..."
14         SIMPLEDEMO_ONAP_ORG_ZONE_ID=`openstack zone create --email=oom@onap.org --description="DNS zone bridging DCAE and OOM" --type=PRIMARY $SIMPLEDEMO_ONAP_ORG_ZONE_NAME -f=yaml -c id | awk '{ print $2} '`
15
16         echo "Create recordSet for $SIMPLEDEMO_ONAP_ORG_ZONE_NAME"
17         openstack recordset create --type=A --ttl=10 --records=$NODE_IP $SIMPLEDEMO_ONAP_ORG_ZONE_ID vm1.aai
18         openstack recordset create --type=A --ttl=10 --records=$NODE_IP $SIMPLEDEMO_ONAP_ORG_ZONE_ID vm1.sdc
19         openstack recordset create --type=A --ttl=10 --records=$NODE_IP $SIMPLEDEMO_ONAP_ORG_ZONE_ID vm1.mr
20         openstack recordset create --type=A --ttl=10 --records=$NODE_IP $SIMPLEDEMO_ONAP_ORG_ZONE_ID vm1.policy
21         openstack recordset create --type=A --ttl=10 --records=$NODE_IP $SIMPLEDEMO_ONAP_ORG_ZONE_ID vm1.openo
22
23         echo "Create CNAMEs for $SIMPLEDEMO_ONAP_ORG_ZONE_NAME"
24         # AAI
25         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.aai.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID c1.vm1.aai.$RANDOM_STRING.simpledemo.onap.org.
26         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.aai.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID c2.vm1.aai.$RANDOM_STRING.simpledemo.onap.org.
27         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.aai.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID c3.vm1.aai.$RANDOM_STRING.simpledemo.onap.org.
28         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.aai.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID aai.api.$RANDOM_STRING.simpledemo.onap.org.
29         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.aai.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID aai.ui.$RANDOM_STRING.simpledemo.onap.org.
30         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.aai.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID aai.searchservice.$RANDOM_STRING.simpledemo.onap.org.
31
32         # SDC
33         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.sdc.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID c1.vm1.sdc.$RANDOM_STRING.simpledemo.onap.org.
34         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.sdc.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID c2.vm1.sdc.$RANDOM_STRING.simpledemo.onap.org.
35         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.sdc.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID c3.vm1.sdc.$RANDOM_STRING.simpledemo.onap.org.
36         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.sdc.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID c4.vm1.sdc.$RANDOM_STRING.simpledemo.onap.org.
37
38         # Policy
39         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.policy.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID c1.vm1.policy.$RANDOM_STRING.simpledemo.onap.org.
40         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.policy.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID c2.vm1.policy.$RANDOM_STRING.simpledemo.onap.org.
41         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.policy.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID c3.vm1.policy.$RANDOM_STRING.simpledemo.onap.org.
42         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.policy.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID c4.vm1.policy.$RANDOM_STRING.simpledemo.onap.org.
43         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.policy.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID c5.vm1.policy.$RANDOM_STRING.simpledemo.onap.org.
44         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.policy.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID c6.vm1.policy.$RANDOM_STRING.simpledemo.onap.org.
45         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.policy.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID c7.vm1.policy.$RANDOM_STRING.simpledemo.onap.org.
46         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.policy.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID c8.vm1.policy.$RANDOM_STRING.simpledemo.onap.org.
47         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.policy.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID policy.api.$RANDOM_STRING.simpledemo.onap.org.
48
49         # MR
50         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.mr.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID ueb.api.$RANDOM_STRING.simpledemo.onap.org.
51
52         # Open-O
53         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.openo.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID msb.api.$RANDOM_STRING.simpledemo.onap.org.
54         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.openo.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID mvim.api.$RANDOM_STRING.simpledemo.onap.org.
55         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.openo.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID vnfsdk.api.$RANDOM_STRING.simpledemo.onap.org.
56         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.openo.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID vfc.api.$RANDOM_STRING.simpledemo.onap.org.
57         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.openo.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID uui.api.$RANDOM_STRING.simpledemo.onap.org.
58         openstack recordset create --type=CNAME --ttl=86400 --records=vm1.openo.$RANDOM_STRING.simpledemo.onap.org. $SIMPLEDEMO_ONAP_ORG_ZONE_ID esr.api.$RANDOM_STRING.simpledemo.onap.org.
59     fi
60 }
61
62 function monitor_nginx_node_ip() {
63     echo "Monitor DCAE nginx host ip..."
64     while true
65     do
66         # Get the Kubernetes Node IP hosting the DCAE NGINX pod
67         NODE_IP=`kubectl get services dcaegen2 -o jsonpath='{.status.loadBalancer.ingress[0].ip}'`
68
69         # Lookup the IP for the first DNS record entry
70         # Assumption is made all entried are sharing the same IP, hence if the first one is different
71         # We update the whole table
72         CURRENT_NODE_IP=`openstack recordset list $SIMPLEDEMO_ONAP_ORG_ZONE_ID -c records --type=A -f yaml | head -n 1 | awk ' { print $3 } '`
73
74         if [ "$NODE_IP" != "$CURRENT_NODE_IP" ]; then
75             refresh_dns_records
76         fi
77
78         # refresh every 10 seconds
79         sleep 10
80     done
81 }
82
83 function refresh_dns_records() {
84     echo "DCAE nginx host ip has changed, update DNS records..."
85     # Get the Kubernetes Node IP hosting the DCAE NGINX pod
86     NODE_IP=`kubectl get services dcaegen2 -o jsonpath='{.status.loadBalancer.ingress[0].ip}'`
87
88     # Update all the simpledemo record
89     SIMPLEDEMO_ONAP_ORG_RECORD_TYPE_A_IDS=`openstack recordset list $SIMPLEDEMO_ONAP_ORG_ZONE_ID --type=A -c=id -f=yaml | awk ' { print $3 } '`
90     for record_id in $SIMPLEDEMO_ONAP_ORG_RECORD_TYPE_A_IDS
91     do
92         openstack recordset set --records=$NODE_IP $SIMPLEDEMO_ONAP_ORG_ZONE_ID $record_id
93     done
94 }
95
96 #############################################################################################################
97 #                                           Script starts here                                              #
98 #############################################################################################################
99
100 # Retrieve the namespace
101 if [ "$#" -ne 1 ]; then
102         echo "Usage: $(basename $0) <namespace>"
103         exit 1
104 fi
105 NAMESPACE=$1
106
107 # K8S variable
108 MR_ZONE="$NAMESPACE-message-router"
109
110 # Heat variable
111 STACK_NAME="dcae"
112
113 # DNS variables
114 SIMPLEDEMO_ONAP_ORG_ZONE_NAME="simpledemo.onap.org."
115 SIMPLEDEMO_ONAP_ORG_ZONE_ID=""
116 RANDOM_STRING=""
117
118 # Install required packages to interfact with OpenStack CLIs
119 apt update -y
120 apt -y install python-pip
121 pip install python-openstackclient
122 pip install python-heatclient
123 pip install python-designateclient
124
125 # Instal kubectl commands
126 apt -y install curl
127 curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
128 chmod +x ./kubectl
129 mv ./kubectl /usr/local/bin/kubectl
130
131 # Get the Kubernetes Node IP hosting the DCAE NGINX pod
132 NODE_IP=`kubectl get services dcaegen2 -o jsonpath='{.status.loadBalancer.ingress[0].ip}'`
133
134 # Source OpenStack parameters to deploy DCAE
135 if [ "DCAE_OS_API_VERSION_HERE" = "v2.0" ]
136 then
137     source /opt/heat/DCAE-openrc-v2.sh
138 else
139     source /opt/heat/DCAE-openrc-v3.sh
140 fi
141
142 # Create stasck if doens't exist
143 EXISTING_STACKS=`openstack stack list -c 'Stack Name' -f yaml | awk '{ print $4}'`
144 if ! [[ $EXISTING_STACKS =~ (^|[[:space:]])$STACK_NAME($|[[:space:]]) ]]
145 then
146     # create the DCAE stack
147     openstack stack create -t /opt/heat/onap_dcae.yaml -e /opt/heat/onap_dcae.env $STACK_NAME
148
149     # wait 10 seconds to let the stack start, so the ips have been assigned.
150     sleep 10
151
152     # get the DCAE Boostrap VM ip, to configure Robot with it, for Healthcheck
153     DCAE_CONTROLLER_IP=`openstack stack output show $STACK_NAME dcae_floating_ip -c output_value -f yaml | awk '{ print $2}'`
154     sed -i -e "s/DCAE_CONTROLLER_IP_HERE/$DCAE_CONTROLLER_IP/g" /opt/robot/vm_properties.py;
155
156     # Retrieve current deployment random string
157     RANDOM_STRING=`openstack stack output show $STACK_NAME random_string -c output_value -f yaml | awk '{ print $2}'`
158     SIMPLEDEMO_ONAP_ORG_ZONE_NAME="$RANDOM_STRING.$SIMPLEDEMO_ONAP_ORG_ZONE_NAME"
159 fi
160
161 # Source OpenStack parameters for DNS Designate
162 if [ "DNSAAS_API_VERSION_HERE" = "v2.0" ]
163 then
164     source /opt/heat/DNS-openrc-v2.sh
165 else
166     source /opt/heat/DNS-openrc-v3.sh
167 fi
168
169 configure_dns_designate
170
171 monitor_nginx_node_ip