NGUI. Default installation is with light-ui.
-n ngui will install OSM with NGUI.
Resolved merge conflict.
Added NG-UI to ci_stage_3.
Change-Id: I5fc9d036427d078ac52f5cc5e43f7a02d509b482
Signed-off-by: vijaynag <vijaynag.bs@tataelxsi.co.in>
--- /dev/null
+##
+# Copyright 2019 ETSI
+#
+# 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.
+##
+
+########################################################################
+
+version: '3'
+volumes:
+ ro:
+ ro_db:
+ mongo_db:
+ mon_db:
+ pol_db:
+ osm_packages:
+ prom_db:
+networks:
+ netOSM:
+ external:
+ name: ${OSM_NETWORK:-netosm}
+ #driver: overlay
+ #driver_opts:
+ # com.docker.network.driver.mtu: "1446"
+services:
+ zookeeper:
+ image: wurstmeister/zookeeper:${ZOOKEEPER_TAG:-latest}
+# ports:
+# - "2181:2181"
+ networks:
+ - netOSM
+ healthcheck:
+ test: echo stat | nc localhost 2181
+ interval: 10s
+ timeout: 10s
+ retries: 3
+ logging:
+ driver: "json-file"
+ options:
+ max-size: "100m"
+ max-file: "2"
+ kafka:
+ image: wurstmeister/kafka:${KAFKA_TAG:-latest}
+ ports:
+ - "9092"
+ networks:
+ - netOSM
+ environment:
+ KAFKA_ADVERTISED_HOST_NAME: kafka
+ KAFKA_ADVERTISED_PORT: 9092
+ KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
+ KAFKA_LOG_RETENTION_HOURS: 24
+ volumes:
+ - /var/run/docker.sock:/var/run/docker.sock
+ healthcheck:
+ test: zookeeper-shell.sh zookeeper:2181 ls /brokers/ids 2>&1 | grep "Node does not exist" && exit 1 || exit 0
+ interval: 20s
+ timeout: 10s
+ retries: 5
+ logging:
+ driver: "json-file"
+ options:
+ max-size: "100m"
+ max-file: "2"
+ #depends_on:
+ # - zookeeper
+ mongo:
+ image: mongo
+# ports:
+# - "27017:27017"
+ networks:
+ - netOSM
+ volumes:
+ - mongo_db:/data/db
+ prometheus:
+ image: prom/prometheus:${PROMETHEUS_TAG:-latest}
+ hostname: prometheus
+ ports:
+ - "${OSM_PROM_PORTS:-9091:9090}"
+ volumes:
+ - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
+ - prom_db:/prometheus
+ networks:
+ - netOSM
+ logging:
+ driver: "json-file"
+ options:
+ max-size: "100m"
+ max-file: "2"
+ prometheus-cadvisor:
+ image: google/cadvisor:${PROMETHEUS_CADVISOR_TAG:-latest}
+ ports:
+ - "${OSM_PROM_CADVISOR_PORTS:-8080:8080}"
+ volumes:
+ - /:/rootfs:ro
+ - /var/run:/var/run:ro
+ - /sys:/sys:ro
+ - /var/lib/docker/:/var/lib/docker:ro
+ - /dev/disk/:/dev/disk:ro
+ networks:
+ - netOSM
+ keystone:
+ image: ${DOCKER_USER:-opensourcemano}/keystone:${TAG:-7}
+ networks:
+ - netOSM
+ environment:
+ DB_HOST: mysql
+ env_file:
+ - ./keystone.env
+ ports:
+ - "${OSM_KEYSTONE_PORTS:-5000:5000}"
+ logging:
+ driver: "json-file"
+ options:
+ max-size: "100m"
+ max-file: "2"
+ nbi:
+ image: ${DOCKER_USER:-opensourcemano}/nbi:${TAG:-7}
+ networks:
+ - netOSM
+ volumes:
+ - osm_packages:/app/storage
+ environment:
+ OSMNBI_DATABASE_HOST: mongo
+ OSMNBI_MESSAGE_HOST: kafka
+ env_file:
+ - ./nbi.env
+ ports:
+ - "${OSM_NBI_PORTS:-9999:9999}"
+ logging:
+ driver: "json-file"
+ options:
+ max-size: "100m"
+ max-file: "2"
+ #depends_on:
+ # - kafka
+ # - mongo
+ lcm:
+ image: ${DOCKER_USER:-opensourcemano}/lcm:${TAG:-7}
+ networks:
+ - netOSM
+ volumes:
+ - osm_packages:/app/storage
+ environment:
+ OSMLCM_RO_HOST: ro
+ OSMLCM_DATABASE_HOST: mongo
+ OSMLCM_MESSAGE_HOST: kafka
+ env_file:
+ - ./lcm.env
+ logging:
+ driver: "json-file"
+ options:
+ max-size: "100m"
+ max-file: "2"
+ #depends_on:
+ # - kafka
+ # - mongo
+ # - ro
+ mysql:
+ image: mysql:5
+ networks:
+ netOSM:
+ aliases:
+ - ro-db
+ volumes:
+ - ro_db:/var/lib/mysql
+ env_file:
+ - ./ro-db.env
+ logging:
+ driver: "json-file"
+ options:
+ max-size: "100m"
+ max-file: "2"
+# ports:
+# - "3306:3306"
+ ro:
+ image: ${DOCKER_USER:-opensourcemano}/ro:${TAG:-7}
+ networks:
+ - netOSM
+ environment:
+ RO_DB_HOST: mysql
+ env_file:
+ - ./ro.env
+ #depends_on:
+ # - mysql
+ volumes:
+ - ro:/var/log/osm
+ ports:
+ - "${OSM_RO_PORTS:-9090:9090}"
+ logging:
+ driver: "json-file"
+ options:
+ max-size: "100m"
+ max-file: "2"
+ mon:
+ image: ${DOCKER_USER:-opensourcemano}/mon:${TAG:-7}
+ networks:
+ - netOSM
+ volumes:
+ - mon_db:/app/database
+ environment:
+ OSMMON_MESSAGE_HOST: kafka
+ OSMMON_MESSAGE_PORT: 9092
+ env_file:
+ - ./mon.env
+ ports:
+ - "${OSM_MON_PORTS:-8662:8662}"
+ #depends_on:
+ # - kafka
+ logging:
+ driver: "json-file"
+ options:
+ max-file: 5
+ max-size: 10m
+ pol:
+ image: ${DOCKER_USER:-opensourcemano}/pol:${TAG:-7}
+ networks:
+ - netOSM
+ volumes:
+ - pol_db:/app/database
+ environment:
+ OSMPOL_MESSAGE_HOST: kafka
+ OSMPOL_MESSAGE_PORT: 9092
+ env_file:
+ - ./pol.env
+ #depends_on:
+ # - kafka
+ # - mon
+ logging:
+ driver: "json-file"
+ options:
+ max-file: 5
+ max-size: 10m
+ ng-ui:
+ image: ${DOCKER_USER:-opensourcemano}/ng-ui:${TAG:-7}
+ networks:
+ - netOSM
+ #depends_on:
+ # - nbi
+ ports:
+ - "${OSM_UI_PORTS:-80:80}"
+ logging:
+ driver: "json-file"
+ options:
+ max-size: "100m"
+ max-file: "2"
+ grafana:
+ image: grafana/grafana
+ volumes:
+ - ./files/dashboards-osm.yml:/etc/grafana/provisioning/dashboards/dashboards-osm.yml
+ - ./files/osm-sample-dashboard.json:/etc/grafana/provisioning/dashboards/osm-sample-dashboard.json
+ - ./files/osm-system-dashboard.json:/etc/grafana/provisioning/dashboards/osm-system-dashboard.json
+ - ./files/datasource-prometheus.yml:/etc/grafana/provisioning/datasources/datasource-prometheus.yml
+ hostname: grafana
+ ports:
+ - "${OSM_GRAFANA_PORTS:-3000:3000}"
+ networks:
+ - netOSM
+ logging:
+ driver: "json-file"
+ options:
+ max-size: "100m"
+ max-file: "2"
+
--- /dev/null
+# Copyright 2019 TATA ELXSI
+#
+# 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
+# Author: Vijay Nag B S (vijaynag.bs@tataelxsi.co.in)
+
+apiVersion: v1
+kind: Service
+metadata:
+ name: ng-ui
+spec:
+ ports:
+ - nodePort: 80
+ port: 80
+ protocol: TCP
+ targetPort: 80
+ selector:
+ app: ng-ui
+ type: NodePort
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: ng-ui
+ labels:
+ app: ng-ui
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: ng-ui
+ template:
+ metadata:
+ labels:
+ app: ng-ui
+ spec:
+ containers:
+ - name: ng-ui
+ image: opensourcemano/ng-ui:7
+ ports:
+ - containerPort: 80
+ protocol: TCP
echo -e " -b tags/v1.1.0 (a specific tag)"
echo -e " ..."
echo -e " -c <orchestrator> deploy osm services using container <orchestrator>. Valid values are <k8s> or <swarm>. If -c is not used then osm will be deployed using default orchestrator. When used with --uninstall, osm services deployed by the orchestrator will be uninstalled"
+ echo -e " -n <ui> install OSM with Next Gen UI. Valid values are <lwui> or <ngui>. If -n is not specified osm will be installed with light-ui. When used with uninstall, osm along with the UI specified will be uninstalled"
echo -e " -s <stack name> or <namespace> user defined stack name when installed using swarm or namespace when installed using k8s, default is osm"
echo -e " -H <VCA host> use specific juju host controller IP"
echo -e " -S <VCA secret> use VCA/juju secret key"
newgrp docker << EONG
docker image rm ${DOCKER_USER}/ro:${OSM_DOCKER_TAG}
docker image rm ${DOCKER_USER}/lcm:${OSM_DOCKER_TAG}
- docker image rm ${DOCKER_USER}/light-ui:${OSM_DOCKER_TAG}
docker image rm ${DOCKER_USER}/keystone:${OSM_DOCKER_TAG}
docker image rm ${DOCKER_USER}/nbi:${OSM_DOCKER_TAG}
docker image rm ${DOCKER_USER}/mon:${OSM_DOCKER_TAG}
docker image rm ${DOCKER_USER}/pla:${OSM_DOCKER_TAG}
docker image rm ${DOCKER_USER}/osmclient:${OSM_DOCKER_TAG}
EONG
+ if [ -n "$NGUI" ]; then
+ newgrp docker << EONG
+ docker image rm ${DOCKER_USER}/ng-ui:${OSM_DOCKER_TAG}
+EONG
+ else
+ newgrp docker << EONG
+ docker image rm ${DOCKER_USER}/light-ui:${OSM_DOCKER_TAG}
+EONG
+ fi
if [ -n "$KUBERNETES" ]; then
OSM_NAMESPACE_VOL="${OSM_HOST_VOL}/${OSM_STACK_NAME}"
sg docker -c "docker build ${LWTEMPDIR}/LCM -f ${LWTEMPDIR}/LCM/Dockerfile.local -t ${DOCKER_USER}/lcm --no-cache" || FATAL "cannot build LCM docker image"
fi
- if [ -n "$PULL_IMAGES" ]; then
- sg docker -c "docker pull ${DOCKER_USER}/light-ui:${OSM_DOCKER_TAG}" || FATAL "cannot pull light-ui docker image"
- elif [ -z "$TO_REBUILD" ] || echo $TO_REBUILD | grep -q LW-UI ; then
- git -C ${LWTEMPDIR} clone https://osm.etsi.org/gerrit/osm/LW-UI
- git -C ${LWTEMPDIR}/LW-UI checkout ${COMMIT_ID}
- sg docker -c "docker build ${LWTEMPDIR}/LW-UI -f ${LWTEMPDIR}/LW-UI/docker/Dockerfile -t ${DOCKER_USER}/light-ui --no-cache" || FATAL "cannot build LW-UI docker image"
- fi
+ if [ -n "$NGUI" ]; then
+ if [ -n "$PULL_IMAGES" ]; then
+ sg docker -c "docker pull ${DOCKER_USER}/ng-ui:${OSM_DOCKER_TAG}" || FATAL "cannot pull ng-ui docker image"
+ elif [ -z "$TO_REBUILD" ] || echo $TO_REBUILD | grep -q NG-UI ; then
+ git -C ${LWTEMPDIR} clone https://osm.etsi.org/gerrit/osm/NG-UI
+ git -C ${LWTEMPDIR}/NG-UI checkout ${COMMIT_ID}
+ sg docker -c "docker build ${LWTEMPDIR}/NG-UI -f ${LWTEMPDIR}/NG-UI/docker/Dockerfile -t ${DOCKER_USER}/ng-ui --no-cache" || FATAL "cannot build NG-UI docker image"
+ fi
+ else
+ if [ -n "$PULL_IMAGES" ]; then
+ sg docker -c "docker pull ${DOCKER_USER}/light-ui:${OSM_DOCKER_TAG}" || FATAL "cannot pull light-ui docker image"
+ elif [ -z "$TO_REBUILD" ] || echo $TO_REBUILD | grep -q LW-UI ; then
+ git -C ${LWTEMPDIR} clone https://osm.etsi.org/gerrit/osm/LW-UI
+ git -C ${LWTEMPDIR}/LW-UI checkout ${COMMIT_ID}
+ sg docker -c "docker build ${LWTEMPDIR}/LW-UI -f ${LWTEMPDIR}/LW-UI/docker/Dockerfile -t ${DOCKER_USER}/light-ui --no-cache" || FATAL "cannot build LW-UI docker image"
+ fi
+ fi
if [ -n "$PULL_IMAGES" ]; then
sg docker -c "docker pull ${DOCKER_USER}/osmclient:${OSM_DOCKER_TAG}" || FATAL "cannot pull osmclient docker image"
if [ -z "$TO_REBUILD" ] || echo $TO_REBUILD | grep -q PROMETHEUS ; then
sg docker -c "docker pull google/cadvisor:${PROMETHEUS_CADVISOR_TAG}" || FATAL "cannot get prometheus cadvisor docker image"
- fi
+ fi
echo "Finished generation of docker images"
}
if [ -n "$KUBERNETES" ]; then
#Kubernetes resources
$WORKDIR_SUDO cp -bR ${OSM_DEVOPS}/installers/docker/osm_pods $OSM_DOCKER_WORK_DIR
+ [ -n "$NGUI" ] && $WORKDIR_SUDO cp -b ${OSM_DEVOPS}/installers/docker/osm_pods/ng-ui.yaml $OSM_K8S_WORK_DIR/ng-ui.yaml && $WORKDIR_SUDO rm $OSM_K8S_WORK_DIR/light-ui.yaml
else
- # Docker-compose
- $WORKDIR_SUDO cp -b ${OSM_DEVOPS}/installers/docker/docker-compose.yaml $OSM_DOCKER_WORK_DIR/docker-compose.yaml
+ if [ -n "$NGUI" ]; then
+ # For NG-UI
+ $WORKDIR_SUDO cp -b ${OSM_DEVOPS}/installers/docker/docker-compose-ngui.yaml $OSM_DOCKER_WORK_DIR/docker-compose.yaml
+ else
+ # Docker-compose
+ $WORKDIR_SUDO cp -b ${OSM_DEVOPS}/installers/docker/docker-compose.yaml $OSM_DOCKER_WORK_DIR/docker-compose.yaml
+ fi
if [ -n "$INSTALL_PLA" ]; then
$WORKDIR_SUDO cp -b ${OSM_DEVOPS}/installers/docker/osm_pla/docker-compose.yaml $OSM_DOCKER_WORK_DIR/osm_pla/docker-compose.yaml
fi
}
function parse_yaml() {
- osm_services="nbi lcm ro pol mon light-ui keystone"
+ osm_services="nbi lcm ro pol mon light-ui ng-ui keystone"
TAG=$1
for osm in $osm_services; do
- $WORKDIR_SUDO sed -i "s/opensourcemano\/$osm:.*/opensourcemano\/$osm:$TAG/g" $OSM_K8S_WORK_DIR/$osm.yaml
+ $WORKDIR_SUDO sed -i "s/opensourcemano\/$osm:.*/$DOCKER_USER\/$osm:$TAG/g" $OSM_K8S_WORK_DIR/$osm.yaml
done
}
echo "OSM_STACK_NAME=$OSM_STACK_NAME"
echo "PULL_IMAGES=$PULL_IMAGES"
echo "KUBERNETES=$KUBERNETES"
+ echo "NGUI=$NGUI"
echo "SHOWOPTS=$SHOWOPTS"
echo "Install from specific refspec (-b): $COMMIT_ID"
}
INSTALL_NODOCKER=""
INSTALL_NOJUJU=""
KUBERNETES=""
+NGUI=""
INSTALL_K8S_MONITOR=""
INSTALL_NOHOSTCLIENT=""
SESSION_ID=`date +%s`
K8S_MANIFEST_DIR="/etc/kubernetes/manifests"
RE_CHECK='^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
-while getopts ":b:r:c:k:u:R:D:o:m:H:S:s:w:t:U:P:A:l:L:K:-: hy" o; do
+while getopts ":b:r:c:n:k:u:R:D:o:m:H:S:s:w:t:U:P:A:l:L:K:-: hy" o; do
case "${o}" in
b)
COMMIT_ID=${OPTARG}
echo -e "Invalid argument for -i : ' $OPTARG'\n" >&2
usage && exit 1
;;
+ n)
+ [ "${OPTARG}" == "lwui" ] && continue
+ [ "${OPTARG}" == "ngui" ] && NGUI="y" && continue
+ echo -e "Invalid argument for -n : ' $OPTARG'\n" >&2
+ usage && exit 1
+ ;;
k)
REPOSITORY_KEY="${OPTARG}"
REPO_ARGS+=(-k "$REPOSITORY_KEY")
echo -e " -b v2.0 (v2.0 branch)"
echo -e " -b tags/v1.1.0 (a specific tag)"
echo -e " ..."
+ echo -e " -n <ui> install OSM with Next Gen UI. Valid values are <lwui> or <ngui>. If -n is not specified osm will be installed with light-ui. When used with uninstall, osm along with the UI specified will be uninstalled"
echo -e " -s <stack name> user defined stack name, default is osm"
echo -e " -H <VCA host> use specific juju host controller IP"
echo -e " -S <VCA secret> use VCA/juju secret key"
fi
}
-while getopts ":b:r:c:k:u:R:l:L:K:p:D:o:m:H:S:s:w:t:U:P:A:-: hy" o; do
+while getopts ":b:r:c:n:k:u:R:l:L:K:p:D:o:m:H:S:s:w:t:U:P:A:-: hy" o; do
case "${o}" in
r)
REPOSITORY="${OPTARG}"
// grab all stable upstream builds based on the
dir("${RELEASE}") {
- def list = ["RO", "openvim", "osmclient", "IM", "devops", "MON", "N2VC", "NBI", "common", "LCM", "POL", "LW-UI"]
+ def list = ["RO", "openvim", "osmclient", "IM", "devops", "MON", "N2VC", "NBI", "common", "LCM", "POL", "LW-UI","NG-UI"]
for (component in list) {
step ([$class: 'CopyArtifact',
projectName: "${component}${upstream_main_job}/${GERRIT_BRANCH}"])