# set -eux
-JUJU_AGENT_VERSION=2.8.6
+JUJU_AGENT_VERSION=2.8.9
K8S_CLOUD_NAME="k8s-cloud"
KUBECTL="microk8s.kubectl"
MICROK8S_VERSION=1.19
+OSMCLIENT_VERSION=9.0
IMAGES_OVERLAY_FILE=~/.osm/images-overlay.yaml
PATH=/snap/bin:${PATH}
MODEL_NAME=osm
-OSM_BUNDLE=cs:osm-54
-OSM_HA_BUNDLE=cs:osm-ha-40
+OSM_BUNDLE=cs:osm-60
+OSM_HA_BUNDLE=cs:osm-ha-45
+TAG=testing-daily
function check_arguments(){
while [ $# -gt 0 ] ; do
function install_snaps(){
if [ ! -v KUBECFG ]; then
sudo snap install microk8s --classic --channel=${MICROK8S_VERSION}/stable
+ sudo cat /var/snap/microk8s/current/args/kube-apiserver | grep advertise-address || (
+ echo "--advertise-address $DEFAULT_IP" | sudo tee -a /var/snap/microk8s/current/args/kube-apiserver
+ microk8s.stop
+ microk8s.start
+ )
sudo usermod -a -G microk8s `whoami`
mkdir -p ~/.kube
sudo chown -f -R `whoami` ~/.kube
KUBEGRP="microk8s"
sg ${KUBEGRP} -c "microk8s status --wait-ready"
KUBECONFIG=~/.osm/microk8s-config.yaml
- sg ${KUBEGRP} -c "microk8s config" > ${KUBECONFIG}
+ sg ${KUBEGRP} -c "microk8s config" | tee ${KUBECONFIG}
else
KUBECTL="kubectl"
sudo snap install kubectl --classic
juju deploy -m $MODEL_NAME $OSM_BUNDLE --overlay ~/.osm/vca-overlay.yaml $images_overlay
fi
- echo "Waiting for deployment to finish..."
- check_osm_deployed
- echo "OSM with charms deployed"
if [ ! -v KUBECFG ]; then
API_SERVER=${DEFAULT_IP}
else
hostport="$(echo ${url/$user@/} | cut -d/ -f1)"
API_SERVER="$(echo $hostport | sed -e 's,:.*,,g')"
fi
-
# Expose OSM services
- # Expose NBI
juju config -m $MODEL_NAME nbi site_url=https://nbi.${API_SERVER}.xip.io
juju config -m $MODEL_NAME ng-ui site_url=https://ui.${API_SERVER}.xip.io
+ juju config -m $MODEL_NAME grafana site_url=https://grafana.${API_SERVER}.xip.io
+ juju config -m $MODEL_NAME prometheus site_url=https://prometheus.${API_SERVER}.xip.io
- # Expose Grafana
- juju config -m $MODEL_NAME grafana-k8s juju-external-hostname=grafana.${API_SERVER}.xip.io
- juju expose -m $MODEL_NAME grafana-k8s
- wait_for_port grafana-k8s 0
-
- # Expose Prometheus
- juju config -m $MODEL_NAME prometheus-k8s juju-external-hostname=prometheus.${API_SERVER}.xip.io
- juju expose -m $MODEL_NAME prometheus-k8s
- wait_for_port prometheus-k8s 1
-
- # Apply annotations
- sg ${KUBEGRP} -c "${KUBECTL} annotate ingresses.networking nginx.ingress.kubernetes.io/proxy-body-size=0 -n osm -l juju-app=ng-ui"
+ echo "Waiting for deployment to finish..."
+ check_osm_deployed
+ echo "OSM with charms deployed"
}
function check_osm_deployed() {
sudo snap install yq
local HOME=/home/$USER
local vca_user=$(cat $HOME/.local/share/juju/accounts.yaml | yq e .controllers.$CONTROLLER_NAME.user - )
- local vca_password=$(cat $HOME/.local/share/juju/accounts.yaml | yq e .controllers.$CONTROLLER_NAME.password - )
+ local vca_secret=$(cat $HOME/.local/share/juju/accounts.yaml | yq e .controllers.$CONTROLLER_NAME.password - )
local vca_host=$(cat $HOME/.local/share/juju/controllers.yaml | yq e .controllers.$CONTROLLER_NAME.api-endpoints[0] - | cut -d ":" -f 1)
local vca_port=$(cat $HOME/.local/share/juju/controllers.yaml | yq e .controllers.$CONTROLLER_NAME.api-endpoints[0] - | cut -d ":" -f 2)
local vca_pubkey=\"$(cat $HOME/.local/share/juju/ssh/juju_id_rsa.pub)\"
# Generate a new overlay.yaml, overriding any existing one
cat << EOF > /tmp/vca-overlay.yaml
applications:
- lcm-k8s:
+ lcm:
options:
vca_user: $vca_user
- vca_password: $vca_password
+ vca_secret: $vca_secret
vca_host: $vca_host
vca_port: $vca_port
vca_pubkey: $vca_pubkey
vca_cacert: $vca_cacert
vca_cloud: $vca_cloud
vca_k8s_cloud: $K8S_CLOUD_NAME
- mon-k8s:
+ mon:
options:
vca_user: $vca_user
- vca_password: $vca_password
+ vca_secret: $vca_secret
vca_host: $vca_host
vca_cacert: $vca_cacert
EOF
}
function generate_images_overlay(){
- cat << EOF > /tmp/nbi_registry.yaml
-registrypath: ${REGISTRY_URL}opensourcemano/nbi:$TAG
-EOF
- cat << EOF > /tmp/ng_ui_registry.yaml
-registrypath: ${REGISTRY_URL}opensourcemano/ng-ui:$TAG
-EOF
- if [ ! -z "$REGISTRY_USERNAME" ] ; then
- REGISTRY_CREDENTIALS=$(cat <<EOF
+ echo "applications:" > /tmp/images-overlay.yaml
- image_username: $REGISTRY_USERNAME
- image_password: $REGISTRY_PASSWORD
+ charms_with_resources="nbi lcm mon pol ng-ui ro pla keystone"
+ for charm in $charms_with_resources; do
+ cat << EOF > /tmp/${charm}_registry.yaml
+registrypath: ${REGISTRY_URL}opensourcemano/${charm}:$TAG
EOF
- );
- echo username: $REGISTRY_USERNAME >> /tmp/nbi_registry.yaml
- echo password: $REGISTRY_PASSWORD >> /tmp/nbi_registry.yaml
- echo username: $REGISTRY_USERNAME >> /tmp/ng_ui_registry.yaml
- echo password: $REGISTRY_PASSWORD >> /tmp/ng_ui_registry.yaml
-fi
+ if [ ! -z "$REGISTRY_USERNAME" ] ; then
+ echo username: $REGISTRY_USERNAME >> /tmp/${charm}_registry.yaml
+ echo password: $REGISTRY_PASSWORD >> /tmp/${charm}_registry.yaml
+ fi
- cat << EOF > /tmp/images-overlay.yaml
-applications:
- lcm-k8s:
- options:
- image: ${REGISTRY_URL}opensourcemano/lcm:$TAG ${REGISTRY_CREDENTIALS}
- mon-k8s:
- options:
- image: ${REGISTRY_URL}opensourcemano/mon:$TAG ${REGISTRY_CREDENTIALS}
- ro-k8s:
- options:
- image: ${REGISTRY_URL}opensourcemano/ro:$TAG ${REGISTRY_CREDENTIALS}
- nbi:
- resources:
- image: /tmp/nbi_registry.yaml
- pol-k8s:
- options:
- image: ${REGISTRY_URL}opensourcemano/pol:$TAG ${REGISTRY_CREDENTIALS}
- pla:
- options:
- image: ${REGISTRY_URL}opensourcemano/pla:$TAG ${REGISTRY_CREDENTIALS}
- ng-ui:
+ cat << EOF >> /tmp/images-overlay.yaml
+ ${charm}:
resources:
- image: /tmp/ng_ui_registry.yaml
- keystone:
- options:
- image: ${REGISTRY_URL}opensourcemano/keystone:$TAG ${REGISTRY_CREDENTIALS}
+ image: /tmp/${charm}_registry.yaml
+
EOF
+ done
+
mv /tmp/images-overlay.yaml $IMAGES_OVERLAY_FILE
}
+function refresh_osmclient_snap() {
+ osmclient_snap_install_refresh refresh
+}
+
+function install_osm_client_snap() {
+ osmclient_snap_install_refresh install
+}
+
+function osmclient_snap_install_refresh() {
+ channel_preference="stable candidate beta edge"
+ for channel in $channel_preference; do
+ echo "Trying to install osmclient from channel $OSMCLIENT_VERSION/$channel"
+ sudo snap $1 osmclient --channel $OSMCLIENT_VERSION/$channel 2> /dev/null && echo osmclient snap installed && break
+ done
+}
function install_osmclient() {
- sudo snap install osmclient
- sudo snap alias osmclient.osm osm
+ snap info osmclient | grep -E ^installed: && refresh_osmclient_snap || install_osm_client_snap
}
function add_local_k8scluster() {
ubuntu1604
ssh-keygen -t rsa -N "" -f ~/.ssh/microstack
microstack.openstack keypair create --public-key ~/.ssh/microstack.pub microstack
- export OSM_HOSTNAME=`juju status --format json | jq -rc '.applications."nbi".address'`
+ export OSM_HOSTNAME=`juju status -m $MODEL_NAME --format json | jq -rc '.applications."nbi".address'`
osm vim-create --name microstack-site \
--user admin \
--password keystone \
bootstrap_k8s_lxd
deploy_charmed_osm
install_osmclient
-export OSM_HOSTNAME=$(juju config nbi site_url | sed "s/http.*\?:\/\///"):443
+export OSM_HOSTNAME=$(juju config -m $MODEL_NAME nbi site_url | sed "s/http.*\?:\/\///"):443
+sleep 10
add_local_k8scluster
if [ -v MICROSTACK ]; then