Use devstack for service broker use separate paste and db

1.Add the devstack support for new cfapi
2.service broker use separate paste file
3.service broker use separate db

Closes-Bug: #1500777
Closes-Bug: #1500827
Change-Id: I2842828fe14878e6ff5ac194473f2ffa619370df
partial-implement: bp separate-service-broker-from-murano
This commit is contained in:
zhurong 2016-04-19 12:20:08 -04:00
parent 9d97f58fdf
commit 3d8d5a0b0e
6 changed files with 86 additions and 22 deletions

View File

@ -219,6 +219,20 @@ function set_packages_service_backend() {
fi
}
# configure_murano_cfapi() - Set config files
function configure_murano_cfapi {
# Generate Murano configuration file and configure common parameters.
oslo-config-generator --namespace keystonemiddleware.auth_token \
--namespace murano.cfapi \
--namespace oslo.db \
> $MURANO_CFAPI_CONF_FILE
cp $MURANO_DIR/etc/murano/murano-cfapi-paste.ini $MURANO_CONF_DIR
configure_service_broker
}
# install_murano_apps() - Install Murano apps from repository murano-apps, if required
function install_murano_apps() {
if [[ -z $MURANO_APPS ]]; then
@ -256,11 +270,29 @@ function install_murano_apps() {
# configure_service_broker() - set service broker specific options to config
function configure_service_broker {
#Add needed options to murano.conf
iniset $MURANO_CONF_FILE cfapi tenant "$MURANO_CFAPI_DEFAULT_TENANT"
iniset $MURANO_CONF_FILE cfapi bind_host "$MURANO_SERVICE_HOST"
iniset $MURANO_CONF_FILE cfapi bind_port "$MURANO_CFAPI_SERVICE_PORT"
iniset $MURANO_CONF_FILE cfapi auth_url "http://${KEYSTONE_AUTH_HOST}:5000"
iniset $MURANO_CFAPI_CONF_FILE DEFAULT debug $MURANO_DEBUG
iniset $MURANO_CFAPI_CONF_FILE DEFAULT use_syslog $SYSLOG
#Add needed options to murano-cfapi.conf
iniset $MURANO_CFAPI_CONF_FILE cfapi tenant "$MURANO_CFAPI_DEFAULT_TENANT"
iniset $MURANO_CFAPI_CONF_FILE cfapi bind_host "$MURANO_SERVICE_HOST"
iniset $MURANO_CFAPI_CONF_FILE cfapi bind_port "$MURANO_CFAPI_SERVICE_PORT"
iniset $MURANO_CFAPI_CONF_FILE cfapi auth_url "http://${KEYSTONE_AUTH_HOST}:5000"
# configure the database.
iniset $MURANO_CFAPI_CONF_FILE database connection `database_connection_url murano_cfapi`
# Setup keystone_authtoken section
iniset $MURANO_CFAPI_CONF_FILE keystone_authtoken auth_uri "http://${KEYSTONE_AUTH_HOST}:5000"
iniset $MURANO_CFAPI_CONF_FILE keystone_authtoken auth_host $KEYSTONE_AUTH_HOST
iniset $MURANO_CFAPI_CONF_FILE keystone_authtoken auth_port $KEYSTONE_AUTH_PORT
iniset $MURANO_CFAPI_CONF_FILE keystone_authtoken auth_protocol $KEYSTONE_AUTH_PROTOCOL
iniset $MURANO_CFAPI_CONF_FILE keystone_authtoken cafile $KEYSTONE_SSL_CA
iniset $MURANO_CFAPI_CONF_FILE keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME
iniset $MURANO_CFAPI_CONF_FILE keystone_authtoken admin_user $MURANO_ADMIN_USER
iniset $MURANO_CFAPI_CONF_FILE keystone_authtoken admin_password $SERVICE_PASSWORD
}
function prepare_core_library() {
@ -281,6 +313,15 @@ function init_murano() {
$MURANO_BIN_DIR/murano-db-manage --config-file $MURANO_CONF_FILE upgrade
}
# init_murano_cfapi() - Initialize databases, etc.
function init_murano_cfapi() {
# (re)create Murano database
recreate_database murano_cfapi utf8
$MURANO_BIN_DIR/murano-cfapi-db-manage --config-file $MURANO_CFAPI_CONF_FILE upgrade
}
function setup_core_library() {
prepare_core_library
@ -341,7 +382,7 @@ function stop_murano() {
# start_service_broker() - start murano CF service broker
function start_service_broker() {
screen_it murano-cfapi "cd $MURANO_DIR && $MURANO_BIN_DIR/murano-cfapi --config-file $MURANO_CONF_DIR/murano.conf"
screen_it murano-cfapi "cd $MURANO_DIR && $MURANO_BIN_DIR/murano-cfapi --config-file $MURANO_CONF_DIR/murano-cfapi.conf"
}
@ -518,7 +559,7 @@ if is_service_enabled murano; then
configure_murano_dashboard
fi
if is_service_enabled murano-cfapi; then
configure_service_broker
configure_murano_cfapi
fi
elif [[ "$1" == "stack" && "$2" == "extra" ]]; then
echo_summary "Initializing Murano"
@ -531,6 +572,7 @@ if is_service_enabled murano; then
restart_glare_service
fi
if is_service_enabled murano-cfapi; then
init_murano_cfapi
start_service_broker
fi
setup_core_library

View File

@ -15,6 +15,7 @@ GITDIR["python-muranoclient"]=$DEST/python-muranoclient
MURANO_DIR=$DEST/murano
MURANO_CONF_DIR=${MURANO_CONF_DIR:-/etc/murano}
MURANO_CONF_FILE=${MURANO_CONF_DIR}/murano.conf
MURANO_CFAPI_CONF_FILE=${MURANO_CONF_DIR}/murano-cfapi.conf
MURANO_POLICY_FILE=${MURANO_CONF_DIR}/policy.json
MURANO_DEBUG=${MURANO_DEBUG:-True}
MURANO_ENABLE_MODEL_POLICY_ENFORCEMENT=${MURANO_ENABLE_MODEL_POLICY_ENFORCEMENT:-False}

View File

@ -1,6 +1,3 @@
[pipeline:cloudfoundry]
pipeline = cors request_id ssl ext_context authtoken context cloudfoundryapi
[pipeline:murano]
pipeline = cors request_id ssl versionnegotiation faultwrap authtoken context rootapp
@ -23,9 +20,6 @@ paste.app_factory = murano.api.versions:create_resource
[app:apiv1app]
paste.app_factory = murano.api.v1.router:API.factory
[app:cloudfoundryapi]
paste.app_factory = murano.cfapi.router:API.factory
[filter:versionnegotiation]
paste.filter_factory = murano.api.middleware.version_negotiation:VersionNegotiationFilter.factory

View File

@ -26,6 +26,7 @@ from murano.common import auth_utils # noqa
from murano.common import wsgi
from murano.db.services import cf_connections as db_cf
import muranoclient.client as muranoclient
from muranoclient.common import exceptions
from muranoclient.glance import client as glare_client
@ -116,16 +117,37 @@ class Controller(object):
token = req.headers['X-Auth-Token']
m_cli = _get_muranoclient(token, req)
try:
environment_id = db_cf.get_environment_for_space(space_guid)
except AttributeError:
def _set_new_environment_for_space(space_guid, log_msg):
body = {'name': 'my_{uuid}'.format(uuid=uuid.uuid4().hex)}
env = m_cli.environments.create(body)
environment_id = env.id
db_cf.set_environment_for_space(space_guid, environment_id)
LOG.info(_LI("Cloud Foundry {space_id} mapped to {environment_id}")
.format(space_id=space_guid,
environment_id=environment_id))
db_cf.set_environment_for_space(space_guid, env.id)
LOG.info(log_msg.format(space_id=space_guid,
environment_id=env.id))
return env.id
try:
environment_id = db_cf.get_environment_for_space(space_guid)
# NOTE: Check that environment which was previously linked with
# CF space still exist, reset a new environment for space.
try:
env = m_cli.environments.get(environment_id)
except exceptions.HTTPNotFound:
msg = (_LI("Can not find environment_id {environment_id}, "
"will create a new one."
).format(environment_id=environment_id))
LOG.info(msg)
env = {}
if not env:
log_msg = (_LI("Cloud Foundry {space_id} remapped to "
"{environment_id}"))
environment_id = _set_new_environment_for_space(
space_guid, log_msg)
except AttributeError:
log_msg = (_LI("Cloud Foundry {space_id} mapped to "
"{environment_id}"))
environment_id = _set_new_environment_for_space(
space_guid, log_msg)
package = m_cli.packages.get(service_id)
LOG.debug('Adding service {name}'.format(name=package.name))

View File

@ -13,7 +13,7 @@
from oslo_db import exception
import sqlalchemy
from murano.db import models
from murano.db import cfapi_models as models
from murano.db import session as db_session

View File

@ -0,0 +1,5 @@
---
features:
- Separate murano service broker from murano. Create separate db
and paste.ini for service broker. And move service broker api
to the top level.