Skip to content
Snippets Groups Projects
Commit cca9364c authored by Mark Beierl's avatar Mark Beierl Committed by sousaedu
Browse files

Removal of Light-UI


With the only supported UI being the NG-UI, and approval from
the TSC, the Light UI is being completely removed from the
build process and installers.

Change-Id: I9a0c099fedcac411a0e31dce4bf64895d1092a37
Signed-off-by: default avatarbeierlm <mark.beierl@canonical.com>
parent cda4fbcc
No related branches found
No related tags found
No related merge requests found
Showing
with 23 additions and 1018 deletions
# 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.
FROM ubuntu:18.04
#RUN apt-get update && apt-get install -y npm git python-pip nginx supervisor curl software-properties-common libssl-dev libmysqlclient-dev mysql-client
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y curl \
software-properties-common \
apt-transport-https \
git \
python-pip \
nginx \
supervisor \
libmariadbclient-dev \
mysql-client \
libssl-dev \
apt-utils \
&& curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - \
&& echo "deb https://deb.nodesource.com/node_10.x bionic main" | tee -a /etc/apt/sources.list.d/nodesource.list \
&& echo "deb-src https://deb.nodesource.com/node_10.x bionic main" | tee -a /etc/apt/sources.list.d/nodesource.list \
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y nodejs
RUN node -v
RUN npm -v
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
ARG REPOSITORY_BASE=http://osm-download.etsi.org/repository/osm/debian
ARG RELEASE=ReleaseNINE-daily
ARG REPOSITORY_KEY=OSM%20ETSI%20Release%20Key.gpg
ARG REPOSITORY=testing
ARG LWUI_VERSION
RUN curl ${REPOSITORY_BASE}/${RELEASE}/${REPOSITORY_KEY} | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add -
RUN add-apt-repository -y "deb ${REPOSITORY_BASE}/${RELEASE} ${REPOSITORY} LW-UI" && apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y osm-lightui${LWUI_VERSION} \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /usr/share/osm-lightui
RUN npm install -g npm@latest
RUN npm install
RUN mv node_modules ./static
RUN pip install -r requirements.txt
RUN pip install uwsgi
RUN cp /usr/share/osm-lightui/nginx-app.conf /etc/nginx/sites-available/default
RUN cp /usr/share/osm-lightui/supervisor-app.conf /etc/supervisor/conf.d/
# delete the copy of the database inside the container (if exists)
RUN rm -f db.sqlite3
ENV DJANGO_ENV=prod
ENV OSM_SERVER=nbi
# ENV OSMUI_SQL_DATABASE_URI=mysql://root:secret@mysql:3306/lwui
RUN python manage.py collectstatic --noinput
RUN chmod +x /usr/share/osm-lightui/entrypoint.sh
EXPOSE 80
HEALTHCHECK --start-period=130s --interval=10s --timeout=5s --retries=12 \
CMD curl --silent --fail localhost:80 || exit 1
CMD ["/usr/share/osm-lightui/entrypoint.sh"]
......@@ -1407,96 +1407,6 @@
],
"valueName": "current"
},
{
"cacheTimeout": null,
"colorBackground": false,
"colorValue": false,
"colors": [
"#d44a3a",
"rgba(237, 129, 40, 0.89)",
"#299c46"
],
"datasource": "prometheus - Juju generated source",
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"format": "none",
"gauge": {
"maxValue": 1,
"minValue": 0,
"show": true,
"thresholdLabels": false,
"thresholdMarkers": false
},
"gridPos": {
"h": 4,
"w": 3,
"x": 4,
"y": 14
},
"id": 79,
"interval": null,
"links": [],
"mappingType": 1,
"mappingTypes": [
{
"name": "value to text",
"value": 1
},
{
"name": "range to text",
"value": 2
}
],
"maxDataPoints": 100,
"nullPointMode": "connected",
"nullText": null,
"pluginVersion": "6.3.5",
"postfix": "",
"postfixFontSize": "50%",
"prefix": "",
"prefixFontSize": "50%",
"rangeMaps": [
{
"from": "null",
"text": "N/A",
"to": "null"
}
],
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": false,
"lineColor": "rgb(31, 120, 193)",
"show": false,
"ymax": null,
"ymin": null
},
"tableColumn": "",
"targets": [
{
"expr": "kube_deployment_status_replicas_available{deployment=\"ng-ui\"}",
"instant": true,
"refId": "A"
}
],
"thresholds": "0,1",
"timeFrom": null,
"timeShift": null,
"title": "light-ui",
"type": "singlestat",
"valueFontSize": "100%",
"valueMaps": [
{
"op": "=",
"text": "0",
"value": "null"
}
],
"valueName": "avg"
},
{
"cacheTimeout": null,
"colorBackground": false,
......
# Copyright 2020 Canonical Ltd.
#
# 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.
---
extends: default
yaml-files:
- "*.yaml"
- "*.yml"
- ".yamllint"
ignore: |
reactive/
.tox
release/
<!--
Copyright 2020 Canonical Ltd.
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. -->
# Overview
UI for Juju CAAS
## Testing
The tests of this charm are done using tox and Zaza.
### Prepare environment
The machine in which the tests are run needs access to a juju k8s controller. The easiest way to approach this is by executing the following commands:
```
sudo apt install tox -y
sudo snap install microk8s --classic
sudo snap install juju
microk8s.status --wait-ready
microk8s.enable storage dashboard dns
juju bootstrap microk8s k8s-cloud
```
If /usr/bin/python does not exist, you should probably need to do this:
```
sudo ln -s /usr/bin/python3 /usr/bin/python
```
### Build Charm
**Download dependencies:**
```
mkdir -p ~/charm/layers ~/charm/build ~/charm/interfaces
git clone --single-branch --branch master https://git.launchpad.net/canonical-osm ~/canonical-osm
cd ~/charm/layers
git clone --single-branch --branch=master https://git.launchpad.net/charm-osm-ui ui-k8s
git clone --single-branch --branch=master https://git.launchpad.net/charm-k8s-grafana grafana-k8s
git clone --single-branch --branch=master https://git.launchpad.net/charm-k8s-prometheus prometheus-k8s
git clone --single-branch --branch=master https://git.launchpad.net/charm-k8s-mariadb mariadb-k8s
git clone --single-branch --branch=master https://git.launchpad.net/charm-osm-lcm lcm-k8s
git clone --single-branch --branch=master https://git.launchpad.net/charm-osm-mon mon-k8s
git clone --single-branch --branch=master https://git.launchpad.net/charm-osm-nbi nbi-k8s
git clone --single-branch --branch=master https://git.launchpad.net/charm-osm-pol pol-k8s
git clone --single-branch --branch=master https://git.launchpad.net/charm-osm-ro ro-k8s
git clone --single-branch --branch=master https://git.launchpad.net/charm-k8s-keystone keystone-k8s
git clone --single-branch --branch=master https://git.launchpad.net/charm-k8s-kafka kafka-k8s ~/charm/interfaces
git clone --single-branch --branch=master https://git.launchpad.net/charm-k8s-zookeeper zookeeper-k8s
git clone --single-branch --branch=master https://git.launchpad.net/charm-k8s-mongodb mongodb-k8s
cd ~/charm/interfaces
mv ~/canonical-osm/charms/interfaces/* .
git clone https://git.launchpad.net/interface-mongodb mongodb
git clone https://git.launchpad.net/interface-osm-mon mon
git clone https://git.launchpad.net/interface-osm-nbi osm-nbi
git clone https://git.launchpad.net/interface-osm-ro osm-ro
```
**Charm structure:**
```
├── config.yaml
├── icon.svg
├── layer.yaml
├── metadata.yaml
├── reactive
│ ├── spec_template.yaml
│ └── ui.py
├── README.md
└── tox.ini
```
**Setup environment variables:**
```
export CHARM_LAYERS_DIR=~/charm/layers
export CHARM_BUILD_DIR=~/charm/build
export CHARM_INTERFACES_DIR=~/charm/interfaces
```
**Build:**
```
mkdir ~/charm/layers/ui-k8s/tests/build
export https_proxy=\$PROXY
charm build ~/charm/layers/ui-k8s
charm build ~/charm/layers/grafana-k8s
charm build ~/charm/layers/prometheus-k8s
charm build ~/charm/layers/mariadb-k8s
charm build ~/charm/layers/lcm-k8s
charm build ~/charm/layers/mon-k8s
charm build ~/charm/layers/nbi-k8s
charm build ~/charm/layers/pol-k8s
charm build ~/charm/layers/ro-k8s
charm build ~/charm/layers/keystone-k8s
charm build ~/charm/layers/kafka-k8s
charm build ~/charm/layers/zookeeper-k8s
charm build ~/charm/layers/mongodb-k8s
mv ~/charm/build/* ~/charm/layers/ui-k8s/tests/build/
```
# Copyright 2020 Canonical Ltd.
#
# 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.
options:
advertised-hostname:
description: Advertised hostname
type: string
default: "ui"
advertised-port:
description: UI Port
type: int
default: 80
mysql_database:
description: Mysql Database for UI
type: string
default: lwui
image:
type: string
description: OCI image
default: opensourcemano/light-ui:latest
image_username:
description: Docker repository username
type: string
default: ""
image_password:
description: Docker repository password
type: string
default: ""
This diff is collapsed.
# Copyright 2020 Canonical Ltd.
#
# 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.
includes:
- "layer:caas-base"
- "layer:status"
- "layer:leadership"
- "layer:osm-common"
- "interface:juju-relation-mysql"
- "interface:osm-nbi"
repo: https://code.launchpad.net/osm-k8s-bundle
# Copyright 2020 Canonical Ltd.
#
# 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.
name: "ui-k8s"
summary: "OSM User Interface (UI)"
maintainers:
- "SolutionsQA <solutionsqa@lists.canonical.com>"
description: |
A CAAS charm to deploy OSM's Northbound Interface (NBI).
tags:
- "application"
series:
- "kubernetes"
requires:
mysql:
interface: mysql
nbi:
interface: osm-nbi
deployment:
type: stateless
service: cluster
# Copyright 2020 Canonical Ltd.
#
# 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: 2
containers:
- name: %(name)s
imageDetails:
imagePath: %(image)s
username: %(image_username)s
password: %(image_password)s
ports:
- containerPort: %(advertised-port)s
protocol: TCP
config:
ALLOW_ANONYMOUS_LOGIN: 'yes'
OSM_SERVER: %(nbi_host)s
OSMUI_SQL_DATABASE_URI: mysql://root:%(mysql_root_password)s@%(mysql_host)s:%(mysql_port)s/%(mysql_database)s
kubernetes:
readinessProbe:
tcpSocket:
port: %(advertised-port)s
periodSeconds: 10
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 3
livenessProbe:
tcpSocket:
port: %(advertised-port)s
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 3
\ No newline at end of file
# Copyright 2020 Canonical Ltd.
#
# 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.
#
from charms.layer.caas_base import pod_spec_set
from charms.reactive import endpoint_from_flag
from charms.reactive import when, when_not, hook
from charms.reactive.flags import set_flag, clear_flag
from charmhelpers.core.hookenv import (
log,
metadata,
config,
)
from charms import layer
@hook("upgrade-charm")
@when("leadership.is_leader")
def upgrade():
clear_flag("ui-k8s.configured")
@when("config.changed")
@when("leadership.is_leader")
def restart():
clear_flag("ui-k8s.configured")
@when_not("mysql.available")
@when_not("ui-k8s.configured")
@when("leadership.is_leader")
def waiting_for_mysql():
layer.status.waiting("Waiting for mysql to be available")
@when_not("nbi.ready")
@when_not("ui-k8s.configured")
@when("leadership.is_leader")
def waiting_for_nbi():
layer.status.waiting("Waiting for nbi to be available")
@when("mysql.available", "nbi.ready")
@when_not("ui-k8s.configured")
@when("leadership.is_leader")
def configure():
layer.status.maintenance("Configuring ui container")
try:
mysql = endpoint_from_flag("mysql.available")
nbi = endpoint_from_flag("nbi.ready")
nbi_unit = nbi.nbis()[0]
nbi_host = "{}".format(nbi_unit["host"])
spec = make_pod_spec(
mysql.host(),
mysql.port(),
mysql.user(),
mysql.password(),
mysql.root_password(),
nbi_host,
)
log("set pod spec:\n{}".format(spec))
pod_spec_set(spec)
set_flag("ui-k8s.configured")
except Exception as e:
layer.status.blocked("k8s spec failed to deploy: {}".format(e))
@when("mysql.available", "nbi.ready")
@when_not("leadership.is_leader")
def non_leaders_active():
layer.status.active("ready")
@when("ui-k8s.configured")
def set_ui_active():
layer.status.active("ready")
def make_pod_spec(
mysql_host, mysql_port, mysql_user, mysql_password, mysql_root_password, nbi_host
):
"""Make pod specification for Kubernetes
Args:
mysql_name (str): UI DB name
mysql_host (str): UI DB host
mysql_port (int): UI DB port
mysql_user (str): UI DB user
mysql_password (str): UI DB password
nbi_uri (str): NBI URI
Returns:
pod_spec: Pod specification for Kubernetes
"""
with open("reactive/spec_template.yaml") as spec_file:
pod_spec_template = spec_file.read()
md = metadata()
cfg = config()
data = {
"name": md.get("name"),
"mysql_host": mysql_host,
"mysql_port": mysql_port,
"mysql_user": mysql_user,
"mysql_password": mysql_password,
"mysql_root_password": mysql_root_password,
"nbi_host": nbi_host,
}
data.update(cfg)
return pod_spec_template % data
def get_ui_port():
"""Returns UI port"""
cfg = config()
return cfg.get("advertised-port")
# Copyright 2020 Canonical Ltd.
#
# 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.
[tox]
envlist = pep8
skipsdist = True
[testenv]
setenv = VIRTUAL_ENV={envdir}
PYTHONHASHSEED=0
whitelist_externals = juju
sleep
passenv = HOME TERM CS_API_* OS_* AMULET_*
install_command =
pip install {opts} {packages}
[testenv:build]
basepython = python3
passenv=HTTP_PROXY HTTPS_PROXY NO_PROXY
setenv = CHARM_LAYERS_DIR = ../layers
CHARM_INTERFACES_DIR = ../interfaces/
whitelist_externals = git
charm
rm
mv
commands =
rm -rf release
rm -rf ../interfaces/juju-relation-mysql
rm -rf /tmp/canonical-osm
git clone https://git.launchpad.net/canonical-osm/ /tmp/canonical-osm
mv /tmp/canonical-osm/charms/interfaces/juju-relation-mysql ../interfaces/juju-relation-mysql
charm build . --build-dir /tmp
mv /tmp/ui-k8s/ release/
[testenv:lint]
basepython = python3
deps =
black
yamllint
flake8
commands =
black --check --diff . --exclude "release/|.tox/"
yamllint .
flake8 reactive/ --max-line-length=100
[testenv:pep8]
basepython = python3
deps=charm-tools
commands = charm-proof
[testenv:venv]
commands = {posargs}
##
# 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'
networks:
netOSM:
external:
name: ${OSM_NETWORK:-netosm}
#driver: overlay
#driver_opts:
# com.docker.network.driver.mtu: "1446"
services:
light-ui:
image: ${DOCKER_USER:-opensourcemano}/light-ui:${TAG:-9}
networks:
- netOSM
environment:
OSM_SERVER: nbi
#depends_on:
# - nbi
env_file:
- ./lwui.env
ports:
- "${OSM_UI_PORTS:-80:80}"
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "2"
# 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: light-ui
spec:
ports:
- nodePort: 80
port: 80
protocol: TCP
targetPort: 80
selector:
app: light-ui
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: light-ui
labels:
app: light-ui
spec:
replicas: 1
selector:
matchLabels:
app: light-ui
template:
metadata:
labels:
app: light-ui
spec:
containers:
- name: light-ui
image: opensourcemano/light-ui:9
envFrom:
- secretRef:
name: lwui-secret
ports:
- containerPort: 80
protocol: TCP
env:
- name: OSM_SERVER
value: nbi
......@@ -29,7 +29,6 @@ function usage(){
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"
......@@ -39,7 +38,7 @@ function usage(){
echo -e " --vimemu: additionally deploy the VIM emulator as a docker container"
echo -e " --elk_stack: additionally deploy an ELK docker stack for event logging"
echo -e " --pla: install the PLA module for placement support"
echo -e " -m <MODULE>: install OSM but only rebuild or pull the specified docker images (LW-UI, NG-UI, NBI, LCM, RO, MON, POL, PLA, KAFKA, MONGO, PROMETHEUS, PROMETHEUS-CADVISOR, KEYSTONE-DB, NONE)"
echo -e " -m <MODULE>: install OSM but only rebuild or pull the specified docker images (NG-UI, NBI, LCM, RO, MON, POL, PLA, KAFKA, MONGO, PROMETHEUS, PROMETHEUS-CADVISOR, KEYSTONE-DB, NONE)"
echo -e " -o <ADDON>: ONLY (un)installs one of the addons (vimemu, elk_stack, k8s_monitor)"
echo -e " -O <openrc file path/cloud name>: Install OSM to an OpenStack infrastructure. <openrc file/cloud name> is required. If a <cloud name> is used, the clouds.yaml file should be under ~/.config/openstack/ or /etc/openstack/"
echo -e " -N <openstack public network name/ID>: Public network name required to setup OSM to OpenStack"
......@@ -229,11 +228,7 @@ for module in ro lcm keystone nbi mon pol pla osmclient; do
done
EONG
if [ -n "$NGUI" ]; then
sg docker -c "docker image rm ${DOCKER_REGISTRY_URL}${DOCKER_USER}/ng-ui:${OSM_DOCKER_TAG}"
else
sg docker -c "docker image rm ${DOCKER_REGISTRY_URL}${DOCKER_USER}/light-ui:${OSM_DOCKER_TAG}"
fi
sg docker -c "docker image rm ${DOCKER_REGISTRY_URL}${DOCKER_USER}/ng-ui:${OSM_DOCKER_TAG}"
if [ -n "$KUBERNETES" ]; then
OSM_NAMESPACE_VOL="${OSM_HOST_VOL}/${OSM_STACK_NAME}"
......@@ -536,6 +531,17 @@ function docker_login() {
}
function generate_docker_images() {
cat << EOF
========================================================================================
========================================================================================
EOF
set -x
sleep 5
echo "Pulling and generating docker images"
[ -n "${DOCKER_REGISTRY_URL}" ] && docker_login
......@@ -572,18 +578,8 @@ function generate_docker_images() {
if [ -n "$PULL_IMAGES" ]; then
echo "Pulling OSM docker images"
for module in MON POL NBI KEYSTONE RO LCM NG-UI LW-UI PLA osmclient; do
for module in MON POL NBI KEYSTONE RO LCM NG-UI PLA osmclient; do
module_lower=${module,,}
if [ $module == "LW-UI" ]; then
if [ -n "$NGUI" ]; then
continue
else
module_lower="light-ui"
fi
fi
if [ $module == "NG-UI" -a ! -n "$NGUI" ]; then
continue
fi
if [ $module == "PLA" -a ! -n "$INSTALL_PLA" ]; then
continue
fi
......@@ -599,19 +595,9 @@ function generate_docker_images() {
[ -z "$_build_from" ] && _build_from="latest"
echo "OSM Docker images generated from $_build_from"
for module in MON POL NBI KEYSTONE RO LCM NG-UI LW-UI PLA; do
for module in MON POL NBI KEYSTONE RO LCM NG-UI PLA; do
if [ -z "$TO_REBUILD" ] || echo $TO_REBUILD | grep -q ${module} ; then
module_lower=${module,,}
if [ $module == "LW-UI" ]; then
if [ -n "$NGUI" ]; then
continue
else
module_lower="light-ui"
fi
fi
if [ $module == "NG-UI" -a ! -n "$NGUI" ]; then
continue
fi
if [ $module == "PLA" -a ! -n "$INSTALL_PLA" ]; then
continue
fi
......@@ -647,13 +633,7 @@ function cmp_overwrite() {
function generate_docker_compose_files() {
$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-ui.yaml
else
# Docker-compose
$WORKDIR_SUDO cp -b ${OSM_DEVOPS}/installers/docker/docker-compose-lightui.yaml $OSM_DOCKER_WORK_DIR/docker-compose-ui.yaml
fi
$WORKDIR_SUDO cp -b ${OSM_DEVOPS}/installers/docker/docker-compose-ngui.yaml $OSM_DOCKER_WORK_DIR/docker-compose-ui.yaml
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
......@@ -663,11 +643,7 @@ function generate_k8s_manifest_files() {
#Kubernetes resources
$WORKDIR_SUDO cp -bR ${OSM_DEVOPS}/installers/docker/osm_pods $OSM_DOCKER_WORK_DIR
$WORKDIR_SUDO rm -f $OSM_K8S_WORK_DIR/mongo.yaml
if [ -n "$NGUI" ]; then
$WORKDIR_SUDO rm -f $OSM_K8S_WORK_DIR/light-ui.yaml
else
$WORKDIR_SUDO rm -f $OSM_K8S_WORK_DIR/ng-ui.yaml
fi
$WORKDIR_SUDO rm -f $OSM_K8S_WORK_DIR/ng-ui.yaml
}
function generate_prometheus_grafana_files() {
......@@ -693,7 +669,6 @@ function generate_docker_env_files() {
$WORKDIR_SUDO cp $OSM_DOCKER_WORK_DIR/keystone-db.env{,~}
$WORKDIR_SUDO cp $OSM_DOCKER_WORK_DIR/keystone.env{,~}
$WORKDIR_SUDO cp $OSM_DOCKER_WORK_DIR/lcm.env{,~}
$WORKDIR_SUDO cp $OSM_DOCKER_WORK_DIR/lwui.env{,~}
$WORKDIR_SUDO cp $OSM_DOCKER_WORK_DIR/mon.env{,~}
$WORKDIR_SUDO cp $OSM_DOCKER_WORK_DIR/nbi.env{,~}
$WORKDIR_SUDO cp $OSM_DOCKER_WORK_DIR/pol.env{,~}
......@@ -825,11 +800,6 @@ function generate_docker_env_files() {
echo "OSMPOL_SQL_DATABASE_URI=mysql://root:${MYSQL_ROOT_PASSWORD}@mysql:3306/pol" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/pol.env
fi
# LW-UI
if [ ! -f $OSM_DOCKER_WORK_DIR/lwui.env ]; then
echo "OSMUI_SQL_DATABASE_URI=mysql://root:${MYSQL_ROOT_PASSWORD}@mysql:3306/lwui" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/lwui.env
fi
echo "Finished generation of docker env files"
}
......@@ -925,7 +895,6 @@ function kube_secrets(){
kubectl create secret generic ro-db-secret -n $OSM_STACK_NAME --from-env-file=$OSM_DOCKER_WORK_DIR/ro-db.env
kubectl create secret generic ro-secret -n $OSM_STACK_NAME --from-env-file=$OSM_DOCKER_WORK_DIR/ro.env
kubectl create secret generic keystone-secret -n $OSM_STACK_NAME --from-env-file=$OSM_DOCKER_WORK_DIR/keystone.env
kubectl create secret generic lwui-secret -n $OSM_STACK_NAME --from-env-file=$OSM_DOCKER_WORK_DIR/lwui.env
kubectl create secret generic pol-secret -n $OSM_STACK_NAME --from-env-file=$OSM_DOCKER_WORK_DIR/pol.env
}
......@@ -1015,22 +984,14 @@ function parse_yaml() {
}
function update_manifest_files() {
if [ -n "$NGUI" ]; then
osm_services="nbi lcm ro pol mon ng-ui keystone pla"
else
osm_services="nbi lcm ro pol mon light-ui keystone pla"
fi
osm_services="nbi lcm ro pol mon ng-ui keystone pla"
list_of_services=""
for module in $osm_services; do
module_upper="${module^^}"
if [ "$module_upper" == "LIGHT-UI" ]; then
module_upper="LW-UI"
fi
if ! echo $TO_REBUILD | grep -q $module_upper ; then
list_of_services="$list_of_services $module"
fi
done
list_of_services_to_rebuild=$(echo ${TO_REBUILD,,} |sed "s/lw-ui/light-ui/g")
if [ ! "$OSM_DOCKER_TAG" == "9" ]; then
parse_yaml $OSM_DOCKER_TAG $list_of_services
fi
......@@ -1573,7 +1534,6 @@ function dump_vars(){
echo "OSM_STACK_NAME=$OSM_STACK_NAME"
echo "PULL_IMAGES=$PULL_IMAGES"
echo "KUBERNETES=$KUBERNETES"
echo "NGUI=$NGUI"
echo "DOCKER_REGISTRY_URL=$DOCKER_REGISTRY_URL"
echo "DOCKER_PROXY_URL=$DOCKER_PROXY_URL"
echo "SHOWOPTS=$SHOWOPTS"
......@@ -1633,7 +1593,6 @@ INSTALL_NOLXD=""
INSTALL_NODOCKER=""
INSTALL_NOJUJU=""
KUBERNETES="y"
NGUI="y"
INSTALL_K8S_MONITOR=""
INSTALL_NOHOSTCLIENT=""
INSTALL_NOCACHELXDIMAGES=""
......@@ -1690,12 +1649,6 @@ while getopts ":b:r:c:n:k:u:R:D:o:O:m:N:H:S:s:w:t:U:P:A:l:L:K:d:p:T:f:F:-: hy" o
echo -e "Invalid argument for -i : ' $OPTARG'\n" >&2
usage && exit 1
;;
n)
[ "${OPTARG}" == "lwui" ] && NGUI="" && REPO_ARGS+=(-n "${OPTARG}") && continue
[ "${OPTARG}" == "ngui" ] && continue
echo -e "Invalid argument for -n : ' $OPTARG'\n" >&2
usage && exit 1
;;
k)
REPOSITORY_KEY="${OPTARG}"
REPO_ARGS+=(-k "$REPOSITORY_KEY")
......@@ -1736,7 +1689,6 @@ while getopts ":b:r:c:n:k:u:R:D:o:O:m:N:H:S:s:w:t:U:P:A:l:L:K:d:p:T:f:F:-: hy" o
OPENSTACK_PUBLIC_NET_NAME="${OPTARG}"
;;
m)
[ "${OPTARG}" == "LW-UI" ] && TO_REBUILD="$TO_REBUILD LW-UI" && continue
[ "${OPTARG}" == "NG-UI" ] && TO_REBUILD="$TO_REBUILD NG-UI" && continue
[ "${OPTARG}" == "NBI" ] && TO_REBUILD="$TO_REBUILD NBI" && continue
[ "${OPTARG}" == "LCM" ] && TO_REBUILD="$TO_REBUILD LCM" && continue
......
......@@ -33,7 +33,6 @@ function usage(){
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"
......
......@@ -1343,91 +1343,6 @@ data:
],
"valueName": "current"
},
{
"cacheTimeout": null,
"colorBackground": false,
"colorValue": false,
"colors": [
"#d44a3a",
"rgba(237, 129, 40, 0.89)",
"#299c46"
],
"datasource": "Prometheus",
"format": "none",
"gauge": {
"maxValue": 1,
"minValue": 0,
"show": true,
"thresholdLabels": false,
"thresholdMarkers": false
},
"gridPos": {
"h": 4,
"w": 3,
"x": 4,
"y": 14
},
"id": 79,
"interval": null,
"links": [],
"mappingType": 1,
"mappingTypes": [
{
"name": "value to text",
"value": 1
},
{
"name": "range to text",
"value": 2
}
],
"maxDataPoints": 100,
"nullPointMode": "connected",
"nullText": null,
"options": {},
"pluginVersion": "6.3.5",
"postfix": "",
"postfixFontSize": "50%",
"prefix": "",
"prefixFontSize": "50%",
"rangeMaps": [
{
"from": "null",
"text": "N/A",
"to": "null"
}
],
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": false,
"lineColor": "rgb(31, 120, 193)",
"show": false,
"ymax": null,
"ymin": null
},
"tableColumn": "",
"targets": [
{
"expr": "kube_deployment_status_replicas_available{deployment=\"ng-ui\"}",
"instant": true,
"refId": "A"
}
],
"thresholds": "0,1",
"timeFrom": null,
"timeShift": null,
"title": "light-ui",
"type": "singlestat",
"valueFontSize": "100%",
"valueMaps": [
{
"op": "=",
"text": "0",
"value": "null"
}
],
"valueName": "avg"
},
{
"cacheTimeout": null,
"colorBackground": false,
......
......@@ -16,10 +16,10 @@
# limitations under the License.
WAIT_TIME=340 # LCM healthcheck needs 2x(30+140) senconds
SERVICES_WITH_HEALTH="nbi ro zookeeper lcm mon light-ui pol kafka"
SERVICES_WITH_HEALTH="nbi ro zookeeper lcm mon pol kafka"
NUM_SERVICES_WITH_HEALTH=$(echo $SERVICES_WITH_HEALTH | wc -w)
WAIT_FINAL=30
OSM_DEPLOYMENT="light-ui nbi lcm ro mon pol keystone"
OSM_DEPLOYMENT="nbi lcm ro mon pol keystone"
OSM_STATEFULSET="zookeeper kafka mongo mysql prometheus"
NUM_K8S_PODS=$(echo $OSM_DEPLOYMENT $OSM_STATEFULSET | wc -w)
......
......@@ -223,7 +223,7 @@ node("${params.NODE}") {
}
parallelSteps = [:]
def list = ["RO", "openvim", "osmclient", "IM", "devops", "MON", "N2VC", "NBI", "common", "LCM", "POL", "LW-UI", "NG-UI", "PLA", "tests"]
def list = ["RO", "openvim", "osmclient", "IM", "devops", "MON", "N2VC", "NBI", "common", "LCM", "POL", "NG-UI", "PLA", "tests"]
if (upstreamComponent.length()>0) {
println("Skipping upstream fetch of "+upstreamComponent)
list.remove(upstreamComponent)
......
......@@ -35,14 +35,14 @@ dpkg -l |grep osm-devops
echo "osm-imdocs osm-im deb package:"
dpkg -l |grep osm-im
echo "python-osmclient deb package:"
dpkg -l |grep
dpkg -l |grep
echo "whereis osm:"
whereis osm
echo "which osmclient:"
which osm
#dockers deb packages
echo "dockers deb packages"
for i in kafka keystone lcm light-ui mon mongo nbi pol prometheus ro mysql zookeeper; do
for i in kafka keystone lcm mon mongo nbi pol prometheus ro mysql zookeeper; do
echo "docker osm_$i"
docker exec $(docker ps -q -f name=osm_$i -l) dpkg -l |grep osm
done
......@@ -56,8 +56,6 @@ echo "LCM"
docker exec -it $(docker ps -aqf "name=osm_lcm" -n 1) dpkg -l |egrep -i "osm|n2vc"
echo "NBI"
docker exec -it $(docker ps -aqf "name=osm_nbi" -n 1) dpkg -l |egrep -i "osm|n2vc"
echo "LW-UI"
docker exec -it $(docker ps -aqf "name=osm_light-ui" -n 1) dpkg -l |egrep -i "osm|n2vc"
echo "RO"
docker exec -it $(docker ps -aqf "name=osm_ro.1" -n 1) dpkg -l |egrep -i "osm|n2vc"
echo "OSMCLIENT"
......@@ -76,9 +74,6 @@ docker exec $(docker ps -q -f name=osm_lcm -l) git -C /app describe --tags --lon
echo "docker osm_nbi"
docker exec $(docker ps -q -f name=osm_nbi -l) git -C /app/NBI rev-parse HEAD
docker exec $(docker ps -q -f name=osm_nbi -l) git -C /app/NBI describe --tags --long --dirty
echo "docker osm_light-ui"
docker exec $(docker ps -q -f name=osm_light-ui -l) git -C /usr/share/osm-lightui rev-parse HEAD
docker exec $(docker ps -q -f name=osm_light-ui -l) git -C /usr/share/osm-lightui describe --tags --long --dirty
echo "docker osm_mon"
docker exec $(docker ps -q -f name=osm_mon -l) git -C /mon rev-parse HEAD
docker exec $(docker ps -q -f name=osm_mon -l) git -C /mon describe --tags --long --dirty
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment