- # Expose OSM services
- # Expose Grafana
- juju config grafana-k8s juju-external-hostname=grafana.${API_SERVER}.xip.io
- juju expose grafana-k8s
- wait_for_port grafana-k8s 0
-
- # Expose NBI
- juju config nbi-k8s juju-external-hostname=nbi.${API_SERVER}.xip.io
- juju expose nbi-k8s
- wait_for_port nbi-k8s 1
-
- # Expose NG UI
- juju config ng-ui juju-external-hostname=ui.${API_SERVER}.xip.io
- juju expose ng-ui
- wait_for_port ng-ui 2
-
- # Expose Prometheus
- juju config prometheus-k8s juju-external-hostname=prometheus.${API_SERVER}.xip.io
- juju expose prometheus-k8s
- wait_for_port prometheus-k8s 3
-
- # Expose UI
- juju config ui-k8s juju-external-hostname=osm.${API_SERVER}.xip.io
- juju expose ui-k8s
- wait_for_port ui-k8s 4
-
- # Apply annotations
- sg ${KUBEGRP} -c "${KUBECTL} annotate ingresses.networking nginx.ingress.kubernetes.io/backend-protocol=HTTPS -n osm -l juju-app=nbi-k8s"
- sg ${KUBEGRP} -c "${KUBECTL} annotate ingresses.networking nginx.ingress.kubernetes.io/proxy-body-size=0 -n osm -l juju-app=nbi-k8s"
- sg ${KUBEGRP} -c "${KUBECTL} annotate ingresses.networking nginx.ingress.kubernetes.io/proxy-body-size=0 -n osm -l juju-app=ng-ui"
- sg ${KUBEGRP} -c "${KUBECTL} annotate ingresses.networking nginx.ingress.kubernetes.io/proxy-body-size=0 -n osm -l juju-app=ui-k8s"
+ configure_vca_integrator
+ expose_osm_services
+ echo "Waiting for deployment to finish..."
+ check_osm_deployed_before_config
+ config_grafana_and_prometheus
+ check_osm_deployed_after_config
+ echo "OSM with charms deployed"
+}
+
+function configure_vca_integrator(){
+ if [ ! -v INSTALL_NOLXD ]; then
+ juju config vca \
+ k8s-cloud=microk8s \
+ lxd-cloud=lxd-cloud:lxd-cloud \
+ controllers="`cat ~/.local/share/juju/controllers.yaml`" \
+ accounts="`cat ~/.local/share/juju/accounts.yaml`" \
+ public-key="`cat ~/.local/share/juju/ssh/juju_id_rsa.pub`"
+ else
+ juju config vca \
+ k8s-cloud=microk8s \
+ controllers="`cat ~/.local/share/juju/controllers.yaml`" \
+ accounts="`cat ~/.local/share/juju/accounts.yaml`" \
+ public-key="`cat ~/.local/share/juju/ssh/juju_id_rsa.pub`"
+ fi
+}
+
+function expose_osm_services(){
+ juju config -m $MODEL_NAME nbi external-hostname=nbi.${API_SERVER}.nip.io
+ juju config -m $MODEL_NAME ng-ui external-hostname=ui.${API_SERVER}.nip.io
+ juju config -m $MODEL_NAME grafana web_external_url=https://grafana.${API_SERVER}.nip.io
+}
+
+function config_grafana_and_prometheus() {
+ echo "Setting Grafana and Prometheus configuration"
+ grafana_leader=`juju status -m $MODEL_NAME grafana | grep "*" | cut -d "*" -f 1`
+ grafana_admin_password=`juju run-action -m $MODEL_NAME $grafana_leader get-admin-password --wait | grep "admin-password" | cut -d ":" -f 2`
+ juju config -m $MODEL_NAME mon grafana-password="$grafana_admin_password"
+ juju config -m $MODEL_NAME mon grafana-user=admin
+ juju config -m $MODEL_NAME mon grafana-url=http://grafana:3000
+ prometheus_url="http://prometheus:9090"
+ juju config -m $MODEL_NAME mon prometheus-url=$prometheus_url
+ juju config -m $MODEL_NAME nbi prometheus-url=$prometheus_url
+ mon_leader=`juju status -m $MODEL_NAME mon | grep "*" | cut -d "*" -f 1`
+ juju run-action --m $MODEL_NAME $mon_leader create-datasource name=osm_prometheus url=$prometheus_url --wait
+}
+
+function check_osm_deployed_before_config() {
+ TIME_TO_WAIT=600
+ start_time="$(date -u +%s)"
+ total_active_services=13
+ [ -n "$INSTALL_PLA" ] && total_active_services=$((total_active_services + 1))
+ previous_count=0
+ while true
+ do
+ juju_status=$(juju status --format json -m $MODEL_NAME)
+ active_service_count=$(echo $juju_status | jq '.applications[]."application-status".current'| grep active | wc -l)
+ echo "$active_service_count / $total_active_services services active"
+ if [ $active_service_count -eq $total_active_services ]; then
+ mon_is_blocked=$(echo $juju_status | jq '.applications["mon"].units[]."workload-status".current' | grep blocked | wc -l)
+ nbi_is_blocked=$(echo $juju_status | jq '.applications["nbi"].units[]."workload-status".current' | grep blocked | wc -l)
+ if [ $mon_is_blocked -a $nbi_is_blocked ]; then
+ echo "MON and NBI are blocked"
+ break
+ fi
+ fi
+ if [ $active_service_count -ne $previous_count ]; then
+ previous_count=$active_service_count
+ start_time="$(date -u +%s)"
+ fi
+ now="$(date -u +%s)"
+ if [[ $(( now - start_time )) -gt $TIME_TO_WAIT ]];then
+ echo "Timed out waiting for OSM services to become ready"
+ FATAL_TRACK deploy_osm "Timed out waiting for services to become ready"
+ fi
+ sleep 10
+ done