Merge "Fix run.sh bug for dynamic interfaces"
authorCarlos Goncalves <carlos.goncalves@neclab.eu>
Wed, 7 Jun 2017 09:23:49 +0000 (09:23 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Wed, 7 Jun 2017 09:23:49 +0000 (09:23 +0000)
devstack/README.rst [new file with mode: 0644]
devstack/plugin.sh [new file with mode: 0644]
devstack/settings [new file with mode: 0644]
tests/consumer.py
tests/identity_auth.py
tests/inspector.py
tests/monitor.py
tests/run.sh

diff --git a/devstack/README.rst b/devstack/README.rst
new file mode 100644 (file)
index 0000000..cd836f1
--- /dev/null
@@ -0,0 +1,27 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) 2017 OPNFV.
+
+====================================
+Enabling OPNFV Doctor using DevStack
+====================================
+
+This directory contains the files necessary to run OpenStack with enabled
+OPNFV Doctor in DevStack.
+
+To configure DevStack to enable OPNFV Doctor edit
+``${DEVSTACK_DIR}/local.conf`` file and add::
+
+    enable_plugin aodh http://git.openstack.org/openstack/aodh
+    enable_plugin panko https://git.openstack.org/openstack/panko
+    enable_plugin ceilometer https://git.openstack.org/openstack/ceilometer
+    enable_plugin osprofiler https://git.openstack.org/openstack/osprofiler
+    enable_plugin doctor https://git.opnfv.org/doctor
+
+to the ``[[local|localrc]]`` section.
+
+.. note:: The order of enabling plugins matters.
+
+Run DevStack as normal::
+
+    $ ./stack.sh
diff --git a/devstack/plugin.sh b/devstack/plugin.sh
new file mode 100644 (file)
index 0000000..a7f6a63
--- /dev/null
@@ -0,0 +1,92 @@
+#!/usr/bin/env bash
+
+##############################################################################
+# Copyright (c) 2017 ZTE Corporation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+# Defaults
+# --------
+
+CONF_FILES=(
+    $CINDER_CONF
+    $HEAT_CONF
+    $KEYSTONE_CONF
+    $NOVA_CONF
+    $NEUTRON_CONF
+    $GLANCE_API_CONF
+    $GLANCE_REGISTRY_CONF
+# Supported by osprofiler but not used in doctor at the moment
+#    $TROVE_CONF
+#    $TROVE_CONDUCTOR_CONF
+#    $TROVE_GUESTAGENT_CONF
+#    $TROVE_TASKMANAGER_CONF
+#    $SENLIN_CONF
+#    $MAGNUM_CONF
+#    $ZUN_CONF
+)
+
+function install_doctor {
+    # no-op
+    :
+}
+
+function configure_doctor {
+    for conf in ${CONF_FILES[@]}; do
+        if [ -f $conf ]
+        then
+            iniset $conf profiler enabled true
+            iniset $conf profiler trace_sqlalchemy true
+            iniset $conf profiler hmac_keys $(iniget $conf profiler hmac_keys),${DOCTOR_HMAC_KEYS:=doctor}
+            iniset $conf profiler connection_string ${OSPROFILER_CONNECTION_STRING:=redis://127.0.0.1:6379}
+        fi
+    done
+}
+
+function init_doctor {
+    # no-op
+    :
+}
+
+# check for service enabled
+if is_service_enabled doctor; then
+
+    if [[ "$1" == "stack" && "$2" == "pre-install" ]]; then
+        # Set up system services
+        echo_summary "Configuring system services Doctor"
+        # install_package cowsay
+
+    elif [[ "$1" == "stack" && "$2" == "install" ]]; then
+        # Perform installation of service source
+        echo_summary "Installing Doctor"
+        install_doctor
+
+    elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
+        # Configure after the other layer 1 and 2 services have been configured
+        echo_summary "Configuring Doctor"
+        configure_doctor
+
+    elif [[ "$1" == "stack" && "$2" == "extra" ]]; then
+        # Initialize and start the doctor service
+        echo_summary "Initializing Doctor"
+        init_doctor
+    fi
+
+    if [[ "$1" == "unstack" ]]; then
+        # Shut down doctor services
+        # no-op
+        :
+    fi
+
+    if [[ "$1" == "clean" ]]; then
+        # Remove state and transient data
+        # Remember clean.sh first calls unstack.sh
+        # no-op
+        :
+    fi
+fi
+
diff --git a/devstack/settings b/devstack/settings
new file mode 100644 (file)
index 0000000..83e02e3
--- /dev/null
@@ -0,0 +1,3 @@
+# setting file for doctor
+
+enable_service doctor
index 3c012b4..042cf20 100644 (file)
@@ -12,7 +12,6 @@ from flask import Flask
 from flask import request
 import json
 import logger as doctor_log
-import os
 import time
 
 LOG = doctor_log.Logger('doctor_consumer').getLogger()
index a40c41c..ffecc68 100644 (file)
@@ -17,9 +17,11 @@ def get_identity_auth():
     auth_url = os.environ['OS_AUTH_URL']
     username = os.environ['OS_USERNAME']
     password = os.environ['OS_PASSWORD']
-    user_domain_name = os.environ.get('OS_USER_DOMAIN_NAME')
+    user_domain_name = os.environ.get('OS_USER_DOMAIN_NAME') or 'default'
+    user_domain_id = os.environ.get('OS_USER_DOMAIN_ID') or 'default'
     project_name = os.environ.get('OS_PROJECT_NAME') or os.environ.get('OS_TENANT_NAME')
-    project_domain_name = os.environ.get('OS_PROJECT_DOMAIN_NAME')
+    project_domain_name = os.environ.get('OS_PROJECT_DOMAIN_NAME') or 'default'
+    project_domain_id = os.environ.get('OS_PROJECT_DOMAIN_ID') or 'default'
 
     loader = loading.get_plugin_loader('password')
     return loader.load_from_options(
@@ -27,9 +29,11 @@ def get_identity_auth():
         username=username,
         password=password,
         user_domain_name=user_domain_name,
+        user_domain_id=user_domain_id,
         project_name=project_name,
         tenant_name=project_name,
-        project_domain_name=project_domain_name)
+        project_domain_name=project_domain_name,
+        project_domain_id=project_domain_id)
 
 
 def get_session(auth=None):
index ba00f40..d11da29 100644 (file)
@@ -13,7 +13,6 @@ from flask import Flask
 from flask import request
 import json
 import logger as doctor_log
-import os
 import threading
 import time
 
index 8e8aa7a..7450c53 100644 (file)
@@ -11,12 +11,11 @@ import argparse
 from datetime import datetime
 import json
 import logger as doctor_log
-import os
 import requests
 import socket
-import sys
 import time
 
+from keystoneauth1 import session
 from congressclient.v1 import client
 
 import identity_auth
@@ -48,8 +47,8 @@ class DoctorMonitorSample(object):
             self.inspector_url = 'http://127.0.0.1:12345/events'
         elif self.inspector_type == 'congress':
             auth=identity_auth.get_identity_auth()
-            sess=session.Session(auth=auth)
-            congress = client.Client(session=sess, service_type='policy')
+            self.session=session.Session(auth=auth)
+            congress = client.Client(session=self.session, service_type='policy')
             ds = congress.list_datasources()['results']
             doctor_ds = next((item for item in ds if item['driver'] == 'doctor'),
                              None)
index 34a5287..fda1e75 100755 (executable)
@@ -30,6 +30,7 @@ DOCTOR_PW=doctor
 DOCTOR_PROJECT=doctor
 DOCTOR_ROLE=_member_
 PROFILER_TYPE=${PROFILER_TYPE:-none}
+PYTHON_ENABLE=${PYTHON_ENABLE:-false}
 
 TOP_DIR=$(cd $(dirname "$0") && pwd)
 
@@ -479,6 +480,13 @@ cleanup() {
 
 # Main process
 
+if $PYTHON_ENABLE; then
+    cd $TOP_DIR
+    echo "executing tox..."
+    tox
+    exit $?
+fi
+
 echo "Note: doctor/tests/run.sh has been executed."
 git log --oneline -1 || true   # ignore even you don't have git installed