*.pyc
.cache
+
+#Debian packaging related files
+debian/osm-devops.install
+pool
+osm-devops-*.post*
+osm-devops_*.post*
+
+#IDEs
+.idea
+
+#local stuff files that end in ".local" or folders called "local"
+*.local
+local
+
ARCHIVE=false
CREATE_NSD=false
VENDOR='OSM'
-INTF_TYPE='VIRTIO'
+INTF_TYPE='PARAVIRT'
VCPU=2
MEMORY=4096
STORAGE=10
--vendor : Vendor name for descriptor. Default OSM
- --interface-type : Interface type [VIRTIO|SR-IOV|PCI-PASSTHROUGH|E1000]
- Default VIRTIO
+ --interface-type : Interface type [PARAVIRT|SR-IOV|PCI-PASSTHROUGH|E1000]
+ Default PARAVIRT
VM Flavour options:
CP_TYPE='VPORT'
function get_cp_type() {
case ${INTF_TYPE} in
- VIRTIO ) CP_TYPE='VPORT';;
+ PARAVIRT ) CP_TYPE='VPORT';;
SR-IOV ) CP_TYPE='VPORT';;
PCI-PASSTHROUGH ) CP_TYPE='VPORT';;
OM-MGMT ) CP_TYPE='VPORT';;
- name: eth0
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: vnf-cp0
EOF
for external_interface in external_interface_list:
if external_interface.get("virtual-interface", {}).get("type") == "OM-MGMT":
raise KeyError(
- "Wrong 'Virtual-interface type': Deprecated 'OM-MGMT' value. Please, use 'VIRTIO' instead")
+ "Wrong 'Virtual-interface type': Deprecated 'OM-MGMT' value. Please, use 'PARAVIRT' instead")
interface_list = vdu.pop("interface", ())
for interface in interface_list:
if interface.get("virtual-interface", {}).get("type") == "OM-MGMT":
raise KeyError(
- "Wrong 'Virtual-interface type': Deprecated 'OM-MGMT' value. Please, use 'VIRTIO' instead")
+ "Wrong 'Virtual-interface type': Deprecated 'OM-MGMT' value. Please, use 'PARAVIRT' instead")
if vnfd.get("mgmt-interface"):
mgmt_iface = True
if vnfd["mgmt-interface"].get("vdu-id"):
type: EXTERNAL
virtual-interface:
bandwidth: '0'
- type: VIRTIO
+ type: PARAVIRT
vpci: 0000:00:0a.0
external-connection-point-ref: eth0
- name: eth1
type: EXTERNAL
virtual-interface:
bandwidth: '0'
- type: VIRTIO
+ type: PARAVIRT
vpci: 0000:00:0b.0
external-connection-point-ref: eth1
- name: eth2
type: EXTERNAL
virtual-interface:
bandwidth: '0'
- type: VIRTIO
+ type: PARAVIRT
vpci: 0000:00:0c.0
external-connection-point-ref: eth2
- name: eth3
type: EXTERNAL
virtual-interface:
bandwidth: '0'
- type: VIRTIO
+ type: PARAVIRT
vpci: 0000:00:0d.0
external-connection-point-ref: eth3
- name: eth4
type: EXTERNAL
virtual-interface:
bandwidth: '0'
- type: VIRTIO
+ type: PARAVIRT
vpci: 0000:00:0e.0
external-connection-point-ref: eth4
guest-epa:
- name: eth0
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
bandwidth: '0'
vpci: 0000:00:0a.0
external-connection-point-ref: eth0
- name: eth0
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
bandwidth: '0'
vpci: 0000:00:0a.0
external-connection-point-ref: eth0
type: EXTERNAL
virtual-interface:
bandwidth: '0'
- type: VIRTIO
+ type: PARAVIRT
vpci: 0000:00:0a.0
external-connection-point-ref: eth0
guest-epa:
- name: vdu-eth0
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: vnf-cp0
cloud-init-file: cloud-config.txt
vnf-configuration:
- id: hackfest_basic-VM
name: hackfest_basic-VM
image: ubuntu1604
+ alternative-images:
+ - vim-type: aws
+ image: ubuntu/images/hvm-ssd/ubuntu-artful-17.10-amd64-server-20180509
count: '1'
vm-flavor:
vcpu-count: '1'
- name: vdu-eth0
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: vnf-cp0
mgmt-interface:
cp: vnf-cp0
position: '1'
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: vnf-mgmt
- name: mgmtVM-eth1
position: '2'
type: INTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
internal-connection-point-ref: mgmtVM-internal
internal-connection-point:
- id: mgmtVM-internal
position: '1'
type: INTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
internal-connection-point-ref: dataVM-internal
- name: dataVM-xe0
position: '2'
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: vnf-data
internal-connection-point:
- id: dataVM-internal
position: '1'
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: vnf-mgmt
- name: mgmtVM-eth1
position: '2'
type: INTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
internal-connection-point-ref: mgmtVM-internal
internal-connection-point:
- id: mgmtVM-internal
position: '1'
type: INTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
internal-connection-point-ref: dataVM-internal
- name: xe0
position: '2'
position: '1'
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: vnf-mgmt
- name: mgmtVM-eth1
position: '2'
type: INTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
internal-connection-point-ref: mgmtVM-internal
internal-connection-point:
- id: mgmtVM-internal
position: '1'
type: INTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
internal-connection-point-ref: dataVM-internal
- name: dataVM-xe0
position: '2'
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: vnf-data
internal-connection-point:
- id: dataVM-internal
position: '1'
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: vnf-mgmt
- name: mgmtVM-eth1
position: '2'
type: INTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
internal-connection-point-ref: mgmtVM-internal
internal-connection-point:
- id: mgmtVM-internal
position: '1'
type: INTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
internal-connection-point-ref: dataVM-internal
- name: dataVM-xe0
position: '2'
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: vnf-data
internal-connection-point:
- id: dataVM-internal
type: EXTERNAL
virtual-interface:
bandwidth: '0'
- type: VIRTIO
+ type: PARAVIRT
vpci: 0000:00:0a.0
external-connection-point-ref: eth0
- name: eth1
type: EXTERNAL
virtual-interface:
bandwidth: '0'
- type: VIRTIO
+ type: PARAVIRT
vpci: 0000:00:0b.0
external-connection-point-ref: eth1
guest-epa:
position: 0
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: ping_vnfd/cp0
- name: eth1
position: 1
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: ping_vnfd/cp1
id: iovdu_0
image: Fedora-x86_64-20-20131211.1-sda-ping.qcow2
position: 0
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: pong_vnfd/cp0
- name: eth1
position: 1
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: pong_vnfd/cp1
id: iovdu_0
image: Fedora-x86_64-20-20131211.1-sda-pong.qcow2
- name: iface10
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: mgmt0
- name: iface11
type: INTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
internal-connection-point-ref: iface11
internal-connection-point:
- name: iface11
- name: iface22
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: west
- name: iface21
type: INTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
internal-connection-point-ref: iface21
internal-connection-point:
- name: iface21
- name: iface30
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: mgmt0
- name: iface31
type: INTERNAL
internal-connection-point-ref: iface31
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
guest-epa:
cpu-pinning-policy: DEDICATED
mempage-size: "LARGE"
type: INTERNAL
internal-connection-point-ref: iface41
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
guest-epa:
cpu-pinning-policy: DEDICATED
id: e526e
- name: iface50
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: mgmt
- name: iface51
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: data
id: ref_vm21
image: ref_vm21.qcow2
- name: iface60
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: mgmt
- name: iface61
type: EXTERNAL
- name: eth0
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
bandwidth: '0'
vpci: 0000:00:0a.0
external-connection-point-ref: eth0
- name: eth0
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
external-connection-point-ref: eth0
# Specify the volume
# There can be multiple interfaces defined
- name: eth0
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
bandwidth: '0'
vpci: 0000:00:0a.0
external-connection-point-ref: eth0
- name: eth0
type: EXTERNAL
virtual-interface:
- type: VIRTIO
+ type: PARAVIRT
bandwidth: '0'
vpci: 0000:00:0a.0
external-connection-point-ref: eth0
# database
ENV OSMLCM_DATABASE_DRIVER mongo
-ENV OSMLCM_DATABASE_HOST mongo
-ENV OSMLCM_DATABASE_PORT 27017
+ENV OSMLCM_DATABASE_URI mongodb://mongo:27017
+#ENV OSMLCM_DATABASE_HOST mongo
+#ENV OSMLCM_DATABASE_PORT 27017
+
+
ENV OSMLCM_STORAGE_DRIVER local
ENV OSMLCM_STORAGE_PATH /app/storage
&& apt-get --yes install git python python-pip python3 python3-pip libmysqlclient-dev libssl-dev libffi-dev \
&& pip3 install pip==9.0.3
+RUN pip3 install 'macaroonbakery>=1.1,<2.0' 'pyRFC3339>=1.0,<2.0' \
+ 'pyyaml>=3.0,<4.0' 'theblues>=0.3.8,<1.0' 'websockets>=4.0,<5.0' \
+ 'paramiko' # PyNaCl
+
ARG REPOSITORY_BASE=http://osm-download.etsi.org/repository/osm/debian
ARG RELEASE=ReleaseFOUR-daily
ARG REPOSITORY_KEY=OSM%20ETSI%20Release%20Key.gpg
ARG REPOSITORY=testing
RUN curl ${REPOSITORY_BASE}/${RELEASE}/${REPOSITORY_KEY} | apt-key add -
-RUN add-apt-repository -y "deb ${REPOSITORY_BASE}/${RELEASE} ${REPOSITORY} MON common" && apt update
+RUN add-apt-repository -y "deb ${REPOSITORY_BASE}/${RELEASE} ${REPOSITORY} MON N2VC common" && apt update
ARG MON_VERSION
ARG COMMON_VERSION
+ARG N2VC_VERSION
-RUN apt-get --yes update && apt-get -y install python3-osm-common${COMMON_VERSION} python3-osm-mon${MON_VERSION}
+RUN apt-get --yes update && apt-get -y install python3-osm-common${COMMON_VERSION} python3-osm-mon${MON_VERSION} python3-n2vc${N2VC_VERSION}
COPY scripts/ scripts/
ENV BROKER_URI kafka:9092
-ENV MONGO_URI mongo:27017
+ENV MONGO_URI mongodb://mongo:27017
ENV DATABASE sqlite:///mon_sqlite.db
ENV OS_NOTIFIER_URI localhost:8662
ENV OS_DEFAULT_GRANULARITY 300
ENV REQUEST_TIMEOUT 10
+ENV OSMMON_LOG_LEVEL INFO
+ENV OSMMON_KAFKA_LOG_LEVEL INFO
+ENV OSMMON_VCA_HOST localhost
+ENV OSMMON_VCA_SECRET secret
+ENV OSMMON_VCA_USER admin
-EXPOSE 8662
+EXPOSE 8662 8000
CMD /bin/bash scripts/runInstall.sh
# For those usages not covered by the Apache License, Version 2.0 please
# contact: bdiaz@whitestack.com or glavado@whitestack.com
##
-/bin/bash /mon/osm_mon/plugins/vRealiseOps/vROPs_Webservice/install.sh
-python3 /usr/lib/python3/dist-packages/osm_mon/plugins/OpenStack/Aodh/notifier.py &
-python3 ./usr/lib/python3/dist-packages/osm_mon/core/message_bus/common_consumer.py
-
+osm-mon-server &
+osm-mon-evaluator &
+osm-mon-collector
ENV OSMNBI_STORAGE_PATH /app/storage
# database
ENV OSMNBI_DATABASE_DRIVER mongo
-ENV OSMNBI_DATABASE_HOST mongo
-ENV OSMNBI_DATABASE_PORT 27017
+ENV OSMNBI_DATABASE_URI mongodb://mongo:27017
+#ENV OSMNBI_DATABASE_HOST mongo
+#ENV OSMNBI_DATABASE_PORT 27017
+
# web
ENV OSMNBI_STATIC_DIR /app/osm_nbi/html_public
# logs
ENV OSMPOL_MESSAGE_PORT 9092
ENV OSMPOL_DATABASE_DRIVER mongo
-ENV OSMPOL_DATABASE_HOST mongo
-ENV OSMPOL_DATABASE_PORT 27017
+ENV OSMPOL_DATABASE_URI mongodb://mongo:27017
ENV OSMPOL_SQL_DATABASE_URI sqlite:///mon_sqlite.db
ro_db:
mongo_db:
mon_db:
+ pol_db:
osm_packages:
keystone_db:
+ prom_db:
networks:
netOSM:
external:
- "${OSM_PROM_PORTS:-9091:9090}"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
+ - prom_db:/prometheus
networks:
- netOSM
keystone-db:
image: ${DOCKER_USER:-osm}/pol:${TAG:-latest}
networks:
- netOSM
+ volumes:
+ - pol_db:/app/database
environment:
+ OSMPOL_SQL_DATABASE_URI: sqlite:///app/database/policy_module.db
BROKER_URI: kafka:9092
#depends_on:
# - kafka
output.elasticsearch:
hosts: ["elasticsearch:9200"]
-logging.level: debug
+logging.level: info
logging.to_files: true
logging.files:
path: /var/log/metricbeat
networks:
netOSM:
external:
- name: ${OSM_NETWORK:-netOSM}
+ name: ${OSM_NETWORK:-netosm}
services:
grafana:
image: grafana/grafana
"steppedLine": false,
"targets": [
{
- "expr": "cpu_utilization",
+ "expr": "osm_cpu_utilization",
"format": "time_series",
"interval": "",
"intervalFactor": 1,
"steppedLine": false,
"targets": [
{
- "expr": "average_memory_utilization",
+ "expr": "osm_average_memory_utilization",
"format": "time_series",
"interval": "",
"intervalFactor": 1,
"steppedLine": false,
"targets": [
{
- "expr": "load",
+ "expr": "osm_load",
"format": "time_series",
"interval": "",
"intervalFactor": 1,
"steppedLine": false,
"targets": [
{
- "expr": "users",
+ "expr": "osm_users",
"format": "time_series",
"interval": "",
"intervalFactor": 1,
}'
}
+function generate_secret() {
+ head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32
+}
+
function remove_volumes() {
stack=$1
volumes="mongo_db mon_db osm_packages ro_db"
function configure_VCA(){
echo -e " Configuring VCA"
- JUJU_PASSWD=`date +%s | sha256sum | base64 | head -c 32`
+ JUJU_PASSWD=$(generate_secret)
echo -e "$JUJU_PASSWD\n$JUJU_PASSWD" | lxc exec VCA -- juju change-user-password
}
function generate_docker_env_files() {
echo "Generating docker env files"
- echo "OSMLCM_VCA_HOST=${OSM_VCA_HOST}" | $WORKDIR_SUDO tee $OSM_DOCKER_WORK_DIR/lcm.env
- echo "OSMLCM_VCA_SECRET=${OSM_VCA_SECRET}" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/lcm.env
+ # LCM
+ if [ ! -f $OSM_DOCKER_WORK_DIR/lcm.env ]; then
+ echo "OSMLCM_DATABASE_COMMONKEY=${OSM_DATABASE_COMMONKEY}" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/lcm.env
+ fi
+
+ if ! grep -Fq "OSMLCM_VCA_HOST" $OSM_DOCKER_WORK_DIR/lcm.env; then
+ echo "OSMLCM_VCA_HOST=${OSM_VCA_HOST}" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/lcm.env
+ else
+ $WORKDIR_SUDO sed -i "s|OSMLCM_VCA_HOST.*|OSMLCM_VCA_HOST=$OSM_VCA_HOST|g" $OSM_DOCKER_WORK_DIR/lcm.env
+ fi
- MYSQL_ROOT_PASSWORD=`date +%s | sha256sum | base64 | head -c 32`
+ if ! grep -Fq "OSMLCM_VCA_SECRET" $OSM_DOCKER_WORK_DIR/lcm.env; then
+ echo "OSMLCM_VCA_SECRET=${OSM_VCA_SECRET}" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/lcm.env
+ else
+ $WORKDIR_SUDO sed -i "s|OSMLCM_VCA_SECRET.*|OSMLCM_VCA_SECRET=$OSM_VCA_SECRET|g" $OSM_DOCKER_WORK_DIR/lcm.env
+ fi
+
+ # RO
+ MYSQL_ROOT_PASSWORD=$(generate_secret)
if [ ! -f $OSM_DOCKER_WORK_DIR/ro-db.env ]; then
echo "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}" |$WORKDIR_SUDO tee $OSM_DOCKER_WORK_DIR/ro-db.env
fi
echo "RO_DB_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}" |$WORKDIR_SUDO tee $OSM_DOCKER_WORK_DIR/ro.env
fi
- MYSQL_ROOT_PASSWORD=`date +%s | sha256sum | base64 | head -c 32` && sleep 1
- KEYSTONE_DB_PASSWORD=`date +%s | sha256sum | base64 | head -c 32` && sleep 1
- #ADMIN_PASSWORD=`date +%s | sha256sum | base64 | head -c 32` && sleep 1
- NBI_PASSWORD=`date +%s | sha256sum | base64 | head -c 32`
+ # Keystone
+ MYSQL_ROOT_PASSWORD=$(generate_secret)
+ KEYSTONE_DB_PASSWORD=$(generate_secret)
+ NBI_PASSWORD=$(generate_secret)
if [ ! -f $OSM_DOCKER_WORK_DIR/keystone-db.env ]; then
echo "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}" |$WORKDIR_SUDO tee $OSM_DOCKER_WORK_DIR/keystone-db.env
fi
if [ ! -f $OSM_DOCKER_WORK_DIR/keystone.env ]; then
echo "ROOT_DB_PASSWORD=${MYSQL_ROOT_PASSWORD}" |$WORKDIR_SUDO tee $OSM_DOCKER_WORK_DIR/keystone.env
echo "KEYSTONE_DB_PASSWORD=${KEYSTONE_DB_PASSWORD}" |$WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/keystone.env
- #echo "ADMIN_PASSWORD=${ADMIN_PASSWORD}" |$WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/keystone.env
echo "NBI_PASSWORD=${NBI_PASSWORD}" |$WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/keystone.env
fi
+ # NBI
if [ ! -f $OSM_DOCKER_WORK_DIR/nbi.env ]; then
echo "OSMNBI_AUTHENTICATION_SERVICE_PASSWORD=${NBI_PASSWORD}" |$WORKDIR_SUDO tee $OSM_DOCKER_WORK_DIR/nbi.env
+ echo "OSMNBI_DATABASE_COMMONKEY=${OSM_DATABASE_COMMONKEY}" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/nbi.env
fi
- echo "OS_NOTIFIER_URI=http://${DEFAULT_IP}:8662" |$WORKDIR_SUDO tee $OSM_DOCKER_WORK_DIR/mon.env
- echo "OSMMON_VCA_HOST=${OSM_VCA_HOST}" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/mon.env
- echo "OSMMON_VCA_SECRET=${OSM_VCA_SECRET}" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/mon.env
+ # MON
+ if [ ! -f $OSM_DOCKER_WORK_DIR/mon.env ]; then
+ echo "OSMMON_DATABASE_COMMONKEY=${OSM_DATABASE_COMMONKEY}" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/mon.env
+ fi
+
+ if ! grep -Fq "OS_NOTIFIER_URI" $OSM_DOCKER_WORK_DIR/mon.env; then
+ echo "OS_NOTIFIER_URI=http://${DEFAULT_IP}:8662" |$WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/mon.env
+ else
+ $WORKDIR_SUDO sed -i "s|OS_NOTIFIER_URI.*|OS_NOTIFIER_URI=http://$DEFAULT_IP:8662|g" $OSM_DOCKER_WORK_DIR/mon.env
+ fi
+
+ if ! grep -Fq "OSMMON_VCA_HOST" $OSM_DOCKER_WORK_DIR/mon.env; then
+ echo "OSMMON_VCA_HOST=${OSM_VCA_HOST}" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/mon.env
+ else
+ $WORKDIR_SUDO sed -i "s|OSMMON_VCA_HOST.*|OSMMON_VCA_HOST=$OSM_VCA_HOST|g" $OSM_DOCKER_WORK_DIR/mon.env
+ fi
+
+ if ! grep -Fq "OSMMON_VCA_SECRET" $OSM_DOCKER_WORK_DIR/mon.env; then
+ echo "OSMMON_VCA_SECRET=${OSM_VCA_SECRET}" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/mon.env
+ else
+ $WORKDIR_SUDO sed -i "s|OSMMON_VCA_SECRET.*|OSMMON_VCA_SECRET=$OSM_VCA_SECRET|g" $OSM_DOCKER_WORK_DIR/mon.env
+ fi
echo "Finished generation of docker env files"
}
function deploy_elk() {
echo "Pulling docker images for ELK"
- sg docker -c "docker pull docker.elastic.co/elasticsearch/elasticsearch-oss:6.2.3" || FATAL "cannot get elasticsearch docker image"
- sg docker -c "docker pull docker.elastic.co/logstash/logstash-oss:6.2.3" || FATAL "cannot get logstash docker image"
- sg docker -c "docker pull docker.elastic.co/kibana/kibana-oss:6.2.3" || FATAL "cannot get kibana docker image"
+ sg docker -c "docker pull docker.elastic.co/elasticsearch/elasticsearch-oss:${ELASTIC_VERSION}" || FATAL "cannot get elasticsearch docker image"
+ sg docker -c "docker pull docker.elastic.co/beats/metricbeat:${ELASTIC_VERSION}" || FATAL "cannot get metricbeat docker image"
+ sg docker -c "docker pull docker.elastic.co/beats/filebeat:${ELASTIC_VERSION}" || FATAL "cannot get filebeat docker image"
+ sg docker -c "docker pull docker.elastic.co/kibana/kibana-oss:${ELASTIC_VERSION}" || FATAL "cannot get kibana docker image"
echo "Finished pulling elk docker images"
$WORKDIR_SUDO mkdir -p "$OSM_DOCKER_WORK_DIR/osm_elk"
$WORKDIR_SUDO cp -b ${OSM_DEVOPS}/installers/docker/osm_elk/* $OSM_DOCKER_WORK_DIR/osm_elk
echo "ELK is up and running. Trying to create index pattern..."
#Create index pattern
curl -f -XPOST -H "Content-Type: application/json" -H "kbn-xsrf: anything" \
- "http://127.0.0.1:5601/api/saved_objects/index-pattern/logstash-*" \
- -d"{\"attributes\":{\"title\":\"logstash-*\",\"timeFieldName\":\"@timestamp\"}}" 2>/dev/null
+ "http://127.0.0.1:5601/api/saved_objects/index-pattern/filebeat-*" \
+ -d"{\"attributes\":{\"title\":\"filebeat-*\",\"timeFieldName\":\"@timestamp\"}}" 2>/dev/null
#Make it the default index
curl -f -XPOST -H "Content-Type: application/json" -H "kbn-xsrf: anything" \
"http://127.0.0.1:5601/api/kibana/settings/defaultIndex" \
- -d"{\"value\":\"logstash-*\"}" 2>/dev/null
+ -d"{\"value\":\"filebeat-*\"}" 2>/dev/null
else
echo "Cannot connect to Kibana to create index pattern."
echo "Once Kibana is running, you can use the following instructions to create index pattern:"
echo 'curl -f -XPOST -H "Content-Type: application/json" -H "kbn-xsrf: anything" \
- "http://127.0.0.1:5601/api/saved_objects/index-pattern/logstash-*" \
- -d"{\"attributes\":{\"title\":\"logstash-*\",\"timeFieldName\":\"@timestamp\"}}"'
+ "http://127.0.0.1:5601/api/saved_objects/index-pattern/filebeat-*" \
+ -d"{\"attributes\":{\"title\":\"filebeat-*\",\"timeFieldName\":\"@timestamp\"}}"'
echo 'curl -XPOST -H "Content-Type: application/json" -H "kbn-xsrf: anything" \
"http://127.0.0.1:5601/api/kibana/settings/defaultIndex" \
- -d"{\"value\":\"logstash-*\"}"'
+ -d"{\"value\":\"filebeat-*\"}"'
fi
echo "Finished deployment of ELK stack"
return 0
[ -z "$OSM_VCA_SECRET" ] && FATAL "Cannot obtain juju secret"
fi
+ if [ -z "$OSM_DATABASE_COMMONKEY" ]; then
+ OSM_DATABASE_COMMONKEY=$(generate_secret)
+ [ -z "OSM_DATABASE_COMMONKEY" ] && FATAL "Cannot generate common db secret"
+ fi
+
track juju
[ -n "$INSTALL_NODOCKER" ] || install_docker_ce
track docker_ce
#install_docker_compose
+ [ -n "$INSTALL_NODOCKER" ] || init_docker_swarm
[ -z "$DOCKER_NOBUILD" ] && generate_docker_images
track docker_build
generate_docker_env_files
generate_config_log_folders
- [ -n "$INSTALL_NODOCKER" ] || init_docker_swarm
# remove old stack
remove_stack $OSM_STACK_NAME
create_docker_network
KAFKA_TAG=2.11-1.0.2
PROMETHEUS_TAG=v2.4.3
KEYSTONEDB_TAG=10
+OSM_DATABASE_COMMONKEY=
+ELASTIC_VERSION=6.4.2
while getopts ":hy-:b:r:k:u:R:l:p:D:o:m:H:S:s:w:t:" o; do
case "${o}" in
WAIT_TIME=180 # LCM healthcheck needs 140 senconds
SERVICES_WITH_HEALTH="nbi ro zookeeper lcm"
NUM_SERVICES_WITH_HEALTH=$(echo $SERVICES_WITH_HEALTH | wc -w)
+WAIT_FINAL=30
while getopts "w:s:n:c:" o; do
case "${o}" in
step=2
while [ $time -le "$WAIT_TIME" ]; do
if [ "$(docker ps | grep " ${STACK_NAME}_" | grep -i healthy | wc -l)" -ge "$NUM_SERVICES_WITH_HEALTH" ]; then
+ # all dockers are healthy now.
+ # final sleep is needed until more health checks are added to validate system is ready to handle requests
+ sleep $WAIT_FINAL
exit 0
fi
booleanParam(defaultValue: false, description: '', name: 'SAVE_CONTAINER_ON_FAIL'),
booleanParam(defaultValue: false, description: '', name: 'SAVE_CONTAINER_ON_PASS'),
booleanParam(defaultValue: true, description: '', name: 'SAVE_ARTIFACTS_ON_SMOKE_SUCCESS'),
- booleanParam(defaultValue: false, description: '', name: 'DO_STAGE_4'),
+ booleanParam(defaultValue: true, description: '', name: 'DO_STAGE_4'),
booleanParam(defaultValue: true, description: '', name: 'DO_BUILD'),
booleanParam(defaultValue: true, description: '', name: 'DO_INSTALL'),
booleanParam(defaultValue: true, description: '', name: 'DO_SMOKE'),
release = "-R ${params.RELEASE}"
}
+ if ( params.REPOSITORY_BASE )
+ {
+ repo_base_url = "-u ${params.REPOSITORY_BASE}"
+ }
+
sh """
export PATH=$PATH:/snap/bin
installers/full_install_osm.sh -y -s ${container_name} --test --nolxd --nodocker --nojuju --nohostports --nohostclient \
TOPDIR=$(shell readlink -f .|sed -e 's/systest.*//')
+
ifdef OS_AUTH_URL
OPTION_OS_AUTH_URL=--os-url $(OS_AUTH_URL)
endif
assert not osm.get_api().ns.delete(ns_name)
+ #wait for the ns to delete
+ try:
+ utils.wait_for_value( lambda: osm.get_api().ns.get(nsd_desc['name']), result=False, wait_time=60)
+ except:
+ pass
+
assert not osm.get_api().nsd.delete(nsd_desc['name'])
for file in vnfd_file_list:
--- /dev/null
+#!/bin/bash
+
+# OSM devops/tools - Tool that generates a report for debugging
+#
+# Copyright 2018 Telefonica
+#
+# 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.
+
+DIRNAME=$(readlink -f ${BASH_SOURCE[0]})
+DIRNAME=$(dirname $DIRNAME)
+
+#Get versions
+echo "-------------------------------"
+echo "Versions"
+echo "-------------------------------"
+echo "DIRNAME: $DIRNAME"
+echo "docker version:"
+docker version
+echo "lxd version:"
+lxd --version
+echo "juju version:"
+juju --version
+echo "osm-devops deb package:"
+dpkg -l |grep osm-devops
+echo "osm-imdocs deb package:"
+dpkg -l |grep osm-imdocs
+echo "python-osmclient deb package:"
+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 keystone-db lcm light-ui mon mongo nbi pol prometheus ro ro-db zookeeper; do
+ echo "docker osm_$i"
+ docker exec $(docker ps -q -f name=osm_$i -l) dpkg -l |grep osm
+done
+#dockers source code
+echo "dockers deb packages"
+echo "docker osm_ro"
+docker exec $(docker ps -q -f name=osm_ro -l) git -C /root/RO rev-parse HEAD
+docker exec $(docker ps -q -f name=osm_ro -l) git -C /root/RO describe --tags --long --dirty
+echo "docker osm_lcm"
+docker exec $(docker ps -q -f name=osm_lcm -l) git -C /app rev-parse HEAD
+docker exec $(docker ps -q -f name=osm_lcm -l) git -C /app describe --tags --long --dirty
+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
+echo "docker osm_pol"
+docker exec $(docker ps -q -f name=osm_pol -l) git -C /policy_module rev-parse HEAD
+docker exec $(docker ps -q -f name=osm_pol -l) git -C /policy_module describe --tags --long --dirty
+
+#Get configuration files
+echo "-------------------------------"
+echo "Configuration files"
+echo "-------------------------------"
+for i in $(find /etc/osm -type f -exec echo {} \;); do
+ [ -f "$i" ] || continue
+ echo "File $i:"
+ cat $i
+done
+
+#Get status of docker swarm
+echo "-------------------------------"
+echo "Docker swarm status"
+echo "-------------------------------"
+echo "Node ls:"
+docker node ls
+echo "Node inspect self:"
+docker node inspect self --pretty
+echo "Network inspect docker_gwbridge:"
+docker network inspect docker_gwbridge
+echo "Network inspect netOSM:"
+docker network inspect netOSM
+echo "Network inspect netosm:"
+docker network inspect netosm
+
+#Get status of dockers
+echo "-------------------------------"
+echo "Docker status"
+echo "-------------------------------"
+echo "-------------------------------"
+echo "Docker stack ls"
+echo "-------------------------------"
+docker stack ls
+echo "-------------------------------"
+echo "Docker service ls"
+echo "-------------------------------"
+docker service ls
+for i in $(docker stack ps |tail -n +2|awk '{print $1}'); do
+ echo "-------------------------------"
+ echo "Docker stack $i"
+ echo "-------------------------------"
+ docker stack ps $i
+done
+
+#Get log files
+echo
+echo "-------------------------------"
+echo "Log files"
+echo "-------------------------------"
+echo "To be added"
+
+#Get OSM general info
+echo "-------------------------------"
+echo "OSM info"
+echo "-------------------------------"
+for i in vim-list sdnc-list vnfd-list nsd-list ns-list vnf-list; do
+ echo "-------------------------------"
+ echo "OSM info: $i"
+ echo "-------------------------------"
+ osm $i
+done
+
+#Get OSM details
+echo "-------------------------------"
+echo "OSM details"
+echo "-------------------------------"
+for i in vim sdnc vnfd nsd ns; do
+ echo "-------------------------------"
+ echo "OSM details: $i"
+ echo "-------------------------------"
+ for j in $(osm $i-list|tail -n +4|awk '{print $4}'); do
+ echo "-------------------------------"
+ echo "OSM details: vim $j"
+ echo "-------------------------------"
+ osm $i-show $j
+ done
+done
+for i in vnf; do
+ echo "-------------------------------"
+ echo "OSM details: $i"
+ echo "-------------------------------"
+ for j in $(osm $i-list|tail -n +4|awk '{print $2}'); do
+ echo "-------------------------------"
+ echo "OSM details: vim $j"
+ echo "-------------------------------"
+ osm $i-show $j
+ done
+done
+