Refactor scaling and monitoring policies in Tacker
1. scaling and monitoring policy nodes got failed From tosca-parser 0.8.0, tosca nodes required to be validated. Unfortunately, the scaling and monitoring policies are not fully leveraged tosca-parser. This patch will fix this issue. 2. Multiple alarm actions support Closes-bug: #1682098 Change-Id: I29cb35edfe2447628fa93c64583e5cb4f7bee2f8
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
from oslo_serialization import jsonutils
|
||||
from six.moves.urllib import parse as urlparse
|
||||
from six.moves.urllib import parse
|
||||
from tacker.vnfm.monitor_drivers.token import Token
|
||||
from tacker import wsgi
|
||||
# check alarm url with db --> move to plugin
|
||||
@@ -23,14 +23,12 @@ from tacker import wsgi
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
OPTS = [
|
||||
cfg.StrOpt('username', default='tacker',
|
||||
cfg.StrOpt('username', default='admin',
|
||||
help=_('User name for alarm monitoring')),
|
||||
cfg.StrOpt('password', default='nomoresecret',
|
||||
cfg.StrOpt('password', default='devstack',
|
||||
help=_('password for alarm monitoring')),
|
||||
cfg.StrOpt('project_name', default='service',
|
||||
cfg.StrOpt('project_name', default='admin',
|
||||
help=_('project name for alarm monitoring')),
|
||||
cfg.StrOpt('url', default='http://localhost:35357/v3',
|
||||
help=_('url for alarm monitoring')),
|
||||
]
|
||||
|
||||
cfg.CONF.register_opts(OPTS, 'alarm_auth')
|
||||
@@ -49,10 +47,11 @@ class AlarmReceiver(wsgi.Middleware):
|
||||
if not self.handle_url(url):
|
||||
return
|
||||
prefix, info, params = self.handle_url(req.url)
|
||||
auth = cfg.CONF.keystone_authtoken
|
||||
token = Token(username=cfg.CONF.alarm_auth.username,
|
||||
password=cfg.CONF.alarm_auth.password,
|
||||
project_name=cfg.CONF.alarm_auth.project_name,
|
||||
auth_url=cfg.CONF.alarm_auth.url,
|
||||
auth_url=auth.auth_url + '/v3',
|
||||
user_domain_name='default',
|
||||
project_domain_name='default')
|
||||
|
||||
@@ -79,14 +78,16 @@ class AlarmReceiver(wsgi.Middleware):
|
||||
|
||||
def handle_url(self, url):
|
||||
# alarm_url = 'http://host:port/v1.0/vnfs/vnf-uuid/mon-policy-name/action-name/8ef785' # noqa
|
||||
parts = urlparse.urlparse(url)
|
||||
parts = parse.urlparse(url)
|
||||
p = parts.path.split('/')
|
||||
if len(p) != 7:
|
||||
return None
|
||||
|
||||
if any((p[0] != '', p[2] != 'vnfs')):
|
||||
return None
|
||||
qs = urlparse.parse_qs(parts.query)
|
||||
# decode action name: respawn%25log
|
||||
p[5] = parse.unquote(p[5])
|
||||
qs = parse.parse_qs(parts.query)
|
||||
params = dict((k, v[0]) for k, v in qs.items())
|
||||
prefix_url = '/%(collec)s/%(vnf_uuid)s/' % {'collec': p[2],
|
||||
'vnf_uuid': p[3]}
|
||||
|
||||
Reference in New Issue
Block a user