Fixed all pep8.
This commit is contained in:
parent
c138799465
commit
bb3e62bb4d
@ -1,3 +1,3 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
from conductor import app
|
||||
from conductor import app
|
||||
|
@ -41,12 +41,14 @@ def task_received(task, message_id):
|
||||
def loop(callback):
|
||||
for workflow in workflows:
|
||||
workflow.execute()
|
||||
if not command_dispatcher.execute_pending(lambda: schedule(loop, callback)):
|
||||
func = lambda: schedule(loop, callback)
|
||||
if not command_dispatcher.execute_pending(func):
|
||||
callback()
|
||||
|
||||
def shutdown():
|
||||
command_dispatcher.close()
|
||||
rmqclient.send('task-results', json.dumps(task), message_id=message_id)
|
||||
rmqclient.send('task-results', json.dumps(task),
|
||||
message_id=message_id)
|
||||
print 'Finished at', datetime.datetime.now()
|
||||
|
||||
loop(shutdown)
|
||||
@ -61,4 +63,3 @@ def start():
|
||||
|
||||
rmqclient.start(start)
|
||||
tornado.ioloop.IOLoop.instance().start()
|
||||
|
||||
|
@ -36,4 +36,3 @@ xml_code_engine.XmlCodeEngine.register_function(
|
||||
|
||||
xml_code_engine.XmlCodeEngine.register_function(
|
||||
prepare_user_data, "prepare_user_data")
|
||||
|
||||
|
@ -59,7 +59,6 @@ class HeatExecutor(CommandBase):
|
||||
self._stack
|
||||
])
|
||||
|
||||
|
||||
callbacks = []
|
||||
for t in self._pending_list:
|
||||
if t['callback']:
|
||||
|
@ -32,7 +32,6 @@ class CommandDispatcher(command.CommandBase):
|
||||
|
||||
return result > 0
|
||||
|
||||
|
||||
def has_pending_commands(self):
|
||||
result = False
|
||||
for command in self._command_map.values():
|
||||
|
@ -63,4 +63,3 @@ class WindowsAgentExecutor(CommandBase):
|
||||
|
||||
def close(self):
|
||||
self._rmqclient.unsubscribe('-execution-results')
|
||||
|
||||
|
@ -48,4 +48,4 @@ class Context(object):
|
||||
return str(self._data)
|
||||
if self._parent:
|
||||
return str(self._parent)
|
||||
return str({})
|
||||
return str({})
|
||||
|
@ -38,6 +38,7 @@ def merge_dicts(dict1, dict2, max_levels=0):
|
||||
result[key] = value
|
||||
return result
|
||||
|
||||
|
||||
def find(f, seq):
|
||||
"""Return first item in sequence where f(item) == True."""
|
||||
index = 0
|
||||
|
@ -54,7 +54,8 @@ class RabbitMqClient(object):
|
||||
del self._subscriptions[queue]
|
||||
|
||||
def start(self, callback=None):
|
||||
if IOLoop is None: raise ImportError("Tornado not installed")
|
||||
if IOLoop is None:
|
||||
raise ImportError("Tornado not installed")
|
||||
self._started_callback = callback
|
||||
ioloop = IOLoop.instance()
|
||||
self.timeout_id = ioloop.add_timeout(time.time() + 0.1,
|
||||
@ -67,6 +68,3 @@ class RabbitMqClient(object):
|
||||
callback=lambda frame: self._channel.basic_publish(
|
||||
exchange=exchange, routing_key=queue,
|
||||
body=data, properties=properties))
|
||||
|
||||
|
||||
|
||||
|
@ -18,12 +18,9 @@ class Reporter(object):
|
||||
self._rmqclient.send(
|
||||
queue='task-reports', data=msg, message_id=self._task_id)
|
||||
|
||||
|
||||
def _report_func(context, id, entity, text, **kwargs):
|
||||
reporter = context['/reporter']
|
||||
return reporter._report_func(id, entity, text, **kwargs)
|
||||
|
||||
xml_code_engine.XmlCodeEngine.register_function(_report_func, "report")
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -3,11 +3,13 @@ import xml_code_engine
|
||||
|
||||
def send_command(engine, context, body, template, host, mappings=None,
|
||||
result=None, **kwargs):
|
||||
if not mappings: mappings = {}
|
||||
if not mappings:
|
||||
mappings = {}
|
||||
command_dispatcher = context['/commandDispatcher']
|
||||
|
||||
def callback(result_value):
|
||||
print "Received result for %s: %s. Body is %s" % (template, result_value, body)
|
||||
msg = "Received result for %s: %s. Body is %s"
|
||||
print msg % (template, result_value, body)
|
||||
if result is not None:
|
||||
context[result] = result_value['Result']
|
||||
|
||||
@ -22,4 +24,4 @@ def send_command(engine, context, body, template, host, mappings=None,
|
||||
callback=callback)
|
||||
|
||||
|
||||
xml_code_engine.XmlCodeEngine.register_function(send_command, "send-command")
|
||||
xml_code_engine.XmlCodeEngine.register_function(send_command, "send-command")
|
||||
|
@ -5,6 +5,7 @@ import re
|
||||
import xml_code_engine
|
||||
import function_context
|
||||
|
||||
|
||||
class Workflow(object):
|
||||
def __init__(self, filename, data, command_dispatcher, config, reporter):
|
||||
self._data = data
|
||||
@ -84,7 +85,6 @@ class Workflow(object):
|
||||
else:
|
||||
return position + suffix.split('.')
|
||||
|
||||
|
||||
@staticmethod
|
||||
def _select_func(context, path='', source=None, **kwargs):
|
||||
|
||||
@ -102,7 +102,6 @@ class Workflow(object):
|
||||
context['/dataSource'],
|
||||
Workflow._correct_position(path, context))
|
||||
|
||||
|
||||
@staticmethod
|
||||
def _set_func(path, context, body, engine, target=None, **kwargs):
|
||||
body_data = engine.evaluate_content(body, context)
|
||||
|
@ -61,7 +61,8 @@ class XmlCodeEngine(object):
|
||||
return_value = result
|
||||
if len(result) == 0:
|
||||
return_value = ''.join(parts)
|
||||
if do_strip: return_value = return_value.strip()
|
||||
if do_strip:
|
||||
return_value = return_value.strip()
|
||||
elif len(result) == 1:
|
||||
return_value = result[0]
|
||||
|
||||
|
@ -75,7 +75,7 @@ class ContextMiddleware(BaseContextMiddleware):
|
||||
'auth_tok': req.headers.get('X-Auth-Token', deprecated_token),
|
||||
'service_catalog': service_catalog,
|
||||
'session': req.headers.get('X-Configuration-Session')
|
||||
}
|
||||
}
|
||||
req.context = portas.context.RequestContext(**kwargs)
|
||||
else:
|
||||
raise webob.exc.HTTPUnauthorized()
|
||||
@ -84,4 +84,4 @@ class ContextMiddleware(BaseContextMiddleware):
|
||||
def factory(cls, global_conf, **local_conf):
|
||||
def filter(app):
|
||||
return cls(app)
|
||||
return filter
|
||||
return filter
|
||||
|
@ -27,15 +27,19 @@ def get_env_status(environment_id, session_id):
|
||||
unit = get_session()
|
||||
|
||||
if not session_id:
|
||||
session = unit.query(Session).filter(
|
||||
Session.environment_id == environment_id and Session.state.in_(['open', 'deploying'])).first()
|
||||
variants = ['open', 'deploying']
|
||||
session = unit.query(Session).filter(Session.environment_id ==
|
||||
environment_id and
|
||||
Session.state.in_(variants)
|
||||
).first()
|
||||
if session:
|
||||
session_id = session.id
|
||||
else:
|
||||
return status
|
||||
|
||||
session_state = unit.query(Session).get(session_id).state
|
||||
reports_count = unit.query(Status).filter_by(environment_id=environment_id, session_id=session_id).count()
|
||||
reports_count = unit.query(Status).filter_by(environment_id=environment_id,
|
||||
session_id=session_id).count()
|
||||
|
||||
if session_state == 'deployed':
|
||||
status = 'finished'
|
||||
@ -50,13 +54,16 @@ def get_env_status(environment_id, session_id):
|
||||
|
||||
def get_statuses(type):
|
||||
if type in draft['services']:
|
||||
return [get_service_status(environment_id, session_id, service) for service in
|
||||
draft['services'][type]]
|
||||
services = draft['services'][type]
|
||||
return [get_service_status(environment_id,
|
||||
session_id,
|
||||
service) for service in services]
|
||||
else:
|
||||
return []
|
||||
|
||||
is_inprogress = filter(lambda item: item == 'inprogress',
|
||||
get_statuses('activeDirectories') + get_statuses('webServers'))
|
||||
get_statuses('activeDirectories') +
|
||||
get_statuses('webServers'))
|
||||
|
||||
if session_state == 'deploying' and is_inprogress > 1:
|
||||
status = 'inprogress'
|
||||
@ -71,10 +78,11 @@ def get_service_status(environment_id, session_id, service):
|
||||
session_state = unit.query(Session).get(session_id).state
|
||||
|
||||
entities = [u['id'] for u in service['units']]
|
||||
reports_count = unit.query(Status).filter(Status.environment_id == environment_id
|
||||
and Status.session_id == session_id
|
||||
and Status.entity_id.in_(entities)) \
|
||||
.count()
|
||||
reports_count = unit.query(Status).filter(
|
||||
Status.environment_id == environment_id
|
||||
and Status.session_id == session_id
|
||||
and Status.entity_id.in_(entities)
|
||||
).count()
|
||||
|
||||
if session_state == 'deployed':
|
||||
status = 'finished'
|
||||
|
@ -9,18 +9,23 @@ log = logging.getLogger(__name__)
|
||||
|
||||
class Controller(object):
|
||||
def index(self, request, environment_id):
|
||||
log.debug(_('ActiveDirectory:Index <EnvId: {0}>'.format(environment_id)))
|
||||
log.debug(_('ActiveDirectory:Index <EnvId: {0}>'.
|
||||
format(environment_id)))
|
||||
|
||||
draft = prepare_draft(get_draft(environment_id, request.context.session))
|
||||
draft = prepare_draft(get_draft(environment_id,
|
||||
request.context.session))
|
||||
|
||||
for dc in draft['services']['activeDirectories']:
|
||||
dc['status'] = get_service_status(environment_id, request.context.session, dc)
|
||||
dc['status'] = get_service_status(environment_id,
|
||||
request.context.session,
|
||||
dc)
|
||||
|
||||
return {'activeDirectories': draft['services']['activeDirectories']}
|
||||
|
||||
@utils.verify_session
|
||||
def create(self, request, environment_id, body):
|
||||
log.debug(_('ActiveDirectory:Create <EnvId: {0}, Body: {1}>'.format(environment_id, body)))
|
||||
log.debug(_('ActiveDirectory:Create <EnvId: {0}, Body: {1}>'.
|
||||
format(environment_id, body)))
|
||||
|
||||
draft = get_draft(session_id=request.context.session)
|
||||
|
||||
@ -33,7 +38,8 @@ class Controller(object):
|
||||
for unit in active_directory['units']:
|
||||
unit_count += 1
|
||||
unit['id'] = uuidutils.generate_uuid()
|
||||
unit['name'] = 'dc{0}{1}'.format(unit_count, active_directory['id'][:4])
|
||||
unit['name'] = 'dc{0}{1}'.format(unit_count,
|
||||
active_directory['id'][:4])
|
||||
|
||||
draft = prepare_draft(draft)
|
||||
draft['services']['activeDirectories'].append(active_directory)
|
||||
@ -42,23 +48,25 @@ class Controller(object):
|
||||
return active_directory
|
||||
|
||||
def delete(self, request, environment_id, active_directory_id):
|
||||
log.debug(_('ActiveDirectory:Delete <EnvId: {0}, Id: {1}>'.format(environment_id, active_directory_id)))
|
||||
log.debug(_('ActiveDirectory:Delete <EnvId: {0}, Id: {1}>'.
|
||||
format(environment_id, active_directory_id)))
|
||||
|
||||
draft = get_draft(request.context.session)
|
||||
draft['services']['activeDirectories'] = [service for service in draft['services']['activeDirectories'] if
|
||||
service['id'] != active_directory_id]
|
||||
items = [service for service in draft['services']['activeDirectories']
|
||||
if service['id'] != active_directory_id]
|
||||
draft['services']['activeDirectories'] = items
|
||||
save_draft(request.context.session, draft)
|
||||
|
||||
|
||||
def prepare_draft(draft):
|
||||
if not draft.has_key('services'):
|
||||
if not 'services' in draft:
|
||||
draft['services'] = {}
|
||||
|
||||
if not draft['services'].has_key('activeDirectories'):
|
||||
if not 'activeDirectories' in draft['services']:
|
||||
draft['services']['activeDirectories'] = []
|
||||
|
||||
return draft
|
||||
|
||||
|
||||
def create_resource():
|
||||
return wsgi.Resource(Controller())
|
||||
return wsgi.Resource(Controller())
|
||||
|
@ -61,7 +61,8 @@ class Controller(object):
|
||||
return env
|
||||
|
||||
def update(self, request, environment_id, body):
|
||||
log.debug(_('Environments:Update <Id: {0}, Body: {1}>'.format(environment_id, body)))
|
||||
log.debug(_('Environments:Update <Id: {0}, Body: {1}>'.
|
||||
format(environment_id, body)))
|
||||
|
||||
session = get_session()
|
||||
environment = session.query(Environment).get(environment_id)
|
||||
@ -88,4 +89,4 @@ class Controller(object):
|
||||
|
||||
|
||||
def create_resource():
|
||||
return wsgi.Resource(Controller())
|
||||
return wsgi.Resource(Controller())
|
||||
|
@ -16,7 +16,8 @@
|
||||
# under the License.
|
||||
import routes
|
||||
from portas.openstack.common import wsgi
|
||||
from portas.api.v1 import environments, sessions, active_directories, webservers
|
||||
from portas.api.v1 import (environments, sessions,
|
||||
active_directories, webservers)
|
||||
|
||||
|
||||
class API(wsgi.Router):
|
||||
@ -64,11 +65,13 @@ class API(wsgi.Router):
|
||||
controller=sessions_resource,
|
||||
action='delete',
|
||||
conditions={'method': ['DELETE']})
|
||||
mapper.connect('/environments/{environment_id}/sessions/{session_id}/reports',
|
||||
mapper.connect('/environments/{environment_id}/sessions/'
|
||||
'{session_id}/reports',
|
||||
controller=sessions_resource,
|
||||
action='reports',
|
||||
conditions={'method': ['GET']})
|
||||
mapper.connect('/environments/{environment_id}/sessions/{session_id}/deploy',
|
||||
mapper.connect('/environments/{environment_id}/sessions/'
|
||||
'{session_id}/deploy',
|
||||
controller=sessions_resource,
|
||||
action='deploy',
|
||||
conditions={'method': ['POST']})
|
||||
@ -82,7 +85,8 @@ class API(wsgi.Router):
|
||||
controller=activeDirectories_resource,
|
||||
action='create',
|
||||
conditions={'method': ['POST']})
|
||||
mapper.connect('/environments/{environment_id}/activeDirectories/{active_directory_id}',
|
||||
mapper.connect('/environments/{environment_id}/activeDirectories/'
|
||||
'{active_directory_id}',
|
||||
controller=activeDirectories_resource,
|
||||
action='delete',
|
||||
conditions={'method': ['DELETE']})
|
||||
@ -96,8 +100,9 @@ class API(wsgi.Router):
|
||||
controller=webServers_resource,
|
||||
action='create',
|
||||
conditions={'method': ['POST']})
|
||||
mapper.connect('/environments/{environment_id}/webServers/{web_server_id}',
|
||||
mapper.connect('/environments/{environment_id}/webServers/'
|
||||
'{web_server_id}',
|
||||
controller=webServers_resource,
|
||||
action='delete',
|
||||
conditions={'method': ['DELETE']})
|
||||
super(API, self).__init__(mapper)
|
||||
super(API, self).__init__(mapper)
|
||||
|
@ -17,34 +17,44 @@ log = logging.getLogger(__name__)
|
||||
class Controller(object):
|
||||
def __init__(self):
|
||||
self.write_lock = Semaphore(1)
|
||||
connection = amqp.Connection('{0}:{1}'.format(rabbitmq.host, rabbitmq.port), virtual_host=rabbitmq.virtual_host,
|
||||
userid=rabbitmq.userid, password=rabbitmq.password,
|
||||
connection = amqp.Connection('{0}:{1}'.
|
||||
format(rabbitmq.host, rabbitmq.port),
|
||||
virtual_host=rabbitmq.virtual_host,
|
||||
userid=rabbitmq.userid,
|
||||
password=rabbitmq.password,
|
||||
ssl=rabbitmq.use_ssl, insist=True)
|
||||
self.ch = connection.channel()
|
||||
self.ch.exchange_declare('tasks', 'direct', durable=True, auto_delete=False)
|
||||
self.ch.exchange_declare('tasks', 'direct', durable=True,
|
||||
auto_delete=False)
|
||||
|
||||
def index(self, request, environment_id):
|
||||
log.debug(_('Session:List <EnvId: {0}>'.format(environment_id)))
|
||||
|
||||
filters = {'environment_id': environment_id, 'user_id': request.context.user}
|
||||
filters = {'environment_id': environment_id,
|
||||
'user_id': request.context.user}
|
||||
|
||||
unit = get_session()
|
||||
configuration_sessions = unit.query(Session).filter_by(**filters)
|
||||
|
||||
return {"sessions": [session.to_dict() for session in configuration_sessions if
|
||||
session.environment.tenant_id == request.context.tenant]}
|
||||
sessions = [session.to_dict() for session in configuration_sessions if
|
||||
session.environment.tenant_id == request.context.tenant]
|
||||
return {"sessions": sessions}
|
||||
|
||||
def configure(self, request, environment_id):
|
||||
log.debug(_('Session:Configure <EnvId: {0}>'.format(environment_id)))
|
||||
|
||||
params = {'environment_id': environment_id, 'user_id': request.context.user, 'state': 'open'}
|
||||
params = {'environment_id': environment_id,
|
||||
'user_id': request.context.user,
|
||||
'state': 'open'}
|
||||
|
||||
session = Session()
|
||||
session.update(params)
|
||||
|
||||
unit = get_session()
|
||||
if unit.query(Session).filter(Session.environment_id == environment_id and Session.state.in_(
|
||||
['open', 'deploing'])).first():
|
||||
if unit.query(Session).filter(Session.environment_id == environment_id
|
||||
and
|
||||
Session.state.in_(['open', 'deploing'])
|
||||
).first():
|
||||
log.info('There is already open session for this environment')
|
||||
raise exc.HTTPConflict
|
||||
|
||||
@ -58,7 +68,8 @@ class Controller(object):
|
||||
return session.to_dict()
|
||||
|
||||
def show(self, request, environment_id, session_id):
|
||||
log.debug(_('Session:Show <EnvId: {0}, SessionId: {1}>'.format(environment_id, session_id)))
|
||||
log.debug(_('Session:Show <EnvId: {0}, SessionId: {1}>'.
|
||||
format(environment_id, session_id)))
|
||||
|
||||
unit = get_session()
|
||||
session = unit.query(Session).get(session_id)
|
||||
@ -70,14 +81,16 @@ class Controller(object):
|
||||
return session.to_dict()
|
||||
|
||||
def delete(self, request, environment_id, session_id):
|
||||
log.debug(_('Session:Delete <EnvId: {0}, SessionId: {1}>'.format(environment_id, session_id)))
|
||||
log.debug(_('Session:Delete <EnvId: {0}, SessionId: {1}>'.
|
||||
format(environment_id, session_id)))
|
||||
|
||||
unit = get_session()
|
||||
session = unit.query(Session).get(session_id)
|
||||
|
||||
comment = 'Session object in \'deploying\' state could not be deleted'
|
||||
if session.state == 'deploying':
|
||||
log.info('Session is in \'deploying\' state. Could not be deleted.')
|
||||
raise exc.HTTPForbidden(comment='Session object in \'deploying\' state could not be deleted')
|
||||
log.info(comment)
|
||||
raise exc.HTTPForbidden(comment=comment)
|
||||
|
||||
with unit.begin():
|
||||
unit.delete(session)
|
||||
@ -85,7 +98,8 @@ class Controller(object):
|
||||
return None
|
||||
|
||||
def reports(self, request, environment_id, session_id):
|
||||
log.debug(_('Session:Reports <EnvId: {0}, SessionId: {1}>'.format(environment_id, session_id)))
|
||||
log.debug(_('Session:Reports <EnvId: {0}, SessionId: {1}>'.
|
||||
format(environment_id, session_id)))
|
||||
|
||||
unit = get_session()
|
||||
statuses = unit.query(Status).filter_by(session_id=session_id)
|
||||
@ -93,20 +107,25 @@ class Controller(object):
|
||||
return {'reports': [status.to_dict() for status in statuses]}
|
||||
|
||||
def deploy(self, request, environment_id, session_id):
|
||||
log.debug(_('Session:Deploy <EnvId: {0}, SessionId: {1}>'.format(environment_id, session_id)))
|
||||
log.debug(_('Session:Deploy <EnvId: {0}, SessionId: {1}>'.
|
||||
format(environment_id, session_id)))
|
||||
|
||||
unit = get_session()
|
||||
session = unit.query(Session).get(session_id)
|
||||
|
||||
msg = _('Could not deploy session. Session is already '
|
||||
'deployed or in deployment state')
|
||||
if session.state != 'open':
|
||||
log.warn(_('Could not deploy session. Session is already deployed or in deployment state'))
|
||||
log.warn(msg)
|
||||
|
||||
session.state = 'deploying'
|
||||
session.save(unit)
|
||||
|
||||
with self.write_lock:
|
||||
self.ch.basic_publish(Message(body=anyjson.serialize(session.description)), 'tasks', 'tasks')
|
||||
self.ch.basic_publish(Message(body=anyjson.
|
||||
serialize(session.description)),
|
||||
'tasks', 'tasks')
|
||||
|
||||
|
||||
def create_resource():
|
||||
return wsgi.Resource(Controller())
|
||||
return wsgi.Resource(Controller())
|
||||
|
@ -11,16 +11,19 @@ class Controller(object):
|
||||
def index(self, request, environment_id):
|
||||
log.debug(_('WebServer:List <EnvId: {0}>'.format(environment_id)))
|
||||
|
||||
draft = prepare_draft(get_draft(environment_id, request.context.session))
|
||||
draft = prepare_draft(get_draft(environment_id,
|
||||
request.context.session))
|
||||
|
||||
for dc in draft['services']['webServers']:
|
||||
dc['status'] = get_service_status(environment_id, request.context.session, dc)
|
||||
dc['status'] = get_service_status(environment_id,
|
||||
request.context.session, dc)
|
||||
|
||||
return {'webServers': draft['services']['webServers']}
|
||||
|
||||
@utils.verify_session
|
||||
def create(self, request, environment_id, body):
|
||||
log.debug(_('WebServer:Create <EnvId: {0}, Body: {1}>'.format(environment_id, body)))
|
||||
log.debug(_('WebServer:Create <EnvId: {0}, Body: {1}>'.
|
||||
format(environment_id, body)))
|
||||
|
||||
draft = get_draft(session_id=request.context.session)
|
||||
|
||||
@ -43,23 +46,26 @@ class Controller(object):
|
||||
|
||||
@utils.verify_session
|
||||
def delete(self, request, environment_id, web_server_id):
|
||||
log.debug(_('WebServer:Delete <EnvId: {0}, Id: {1}>'.format(environment_id, web_server_id)))
|
||||
log.debug(_('WebServer:Delete <EnvId: {0}, Id: {1}>'.
|
||||
format(environment_id, web_server_id)))
|
||||
|
||||
draft = get_draft(session_id=request.context.session)
|
||||
draft['services']['webServers'] = [service for service in draft['services']['webServers'] if
|
||||
service['id'] != web_server_id]
|
||||
|
||||
elements = [service for service in draft['services']['webServers'] if
|
||||
service['id'] != web_server_id]
|
||||
draft['services']['webServers'] = elements
|
||||
save_draft(request.context.session, draft)
|
||||
|
||||
|
||||
def prepare_draft(draft):
|
||||
if not draft.has_key('services'):
|
||||
if not 'services' in draft:
|
||||
draft['services'] = {}
|
||||
|
||||
if not draft['services'].has_key('webServers'):
|
||||
if not 'webServers' in draft['services']:
|
||||
draft['services']['webServers'] = []
|
||||
|
||||
return draft
|
||||
|
||||
|
||||
def create_resource():
|
||||
return wsgi.Resource(Controller())
|
||||
return wsgi.Resource(Controller())
|
||||
|
@ -82,6 +82,7 @@ def parse_args(args=None, usage=None, default_config_files=None):
|
||||
usage=usage,
|
||||
default_config_files=default_config_files)
|
||||
|
||||
|
||||
def setup_logging():
|
||||
"""
|
||||
Sets up the logging options for a log with supplied name
|
||||
|
@ -45,6 +45,7 @@ class PortasException(Exception):
|
||||
|
||||
super(PortasException, self).__init__(message)
|
||||
|
||||
|
||||
class SchemaLoadError(PortasException):
|
||||
message = _("Unable to load schema: %(reason)s")
|
||||
|
||||
@ -52,5 +53,3 @@ class SchemaLoadError(PortasException):
|
||||
class InvalidObject(PortasException):
|
||||
message = _("Provided object does not match schema "
|
||||
"'%(schema)s': %(reason)s")
|
||||
|
||||
|
||||
|
@ -27,14 +27,18 @@ class TaskResultHandlerService(service.Service):
|
||||
super(TaskResultHandlerService, self).stop()
|
||||
|
||||
def _handle_results(self):
|
||||
connection = amqp.Connection('{0}:{1}'.format(rabbitmq.host, rabbitmq.port), virtual_host=rabbitmq.virtual_host,
|
||||
userid=rabbitmq.userid, password=rabbitmq.password,
|
||||
connection = amqp.Connection('{0}:{1}'.
|
||||
format(rabbitmq.host, rabbitmq.port),
|
||||
virtual_host=rabbitmq.virtual_host,
|
||||
userid=rabbitmq.userid,
|
||||
password=rabbitmq.password,
|
||||
ssl=rabbitmq.use_ssl, insist=True)
|
||||
ch = connection.channel()
|
||||
|
||||
def bind(exchange, queue):
|
||||
if not exchange:
|
||||
ch.exchange_declare(exchange, 'direct', durable=True, auto_delete=False)
|
||||
ch.exchange_declare(exchange, 'direct', durable=True,
|
||||
auto_delete=False)
|
||||
ch.queue_declare(queue, durable=True, auto_delete=False)
|
||||
if not exchange:
|
||||
ch.queue_bind(queue, exchange, queue)
|
||||
@ -43,13 +47,15 @@ class TaskResultHandlerService(service.Service):
|
||||
bind(conf.reports_exchange, conf.reports_queue)
|
||||
|
||||
ch.basic_consume(conf.results_exchange, callback=handle_result)
|
||||
ch.basic_consume(conf.reports_exchange, callback=handle_report, no_ack=True)
|
||||
ch.basic_consume(conf.reports_exchange, callback=handle_report,
|
||||
no_ack=True)
|
||||
while ch.callbacks:
|
||||
ch.wait()
|
||||
|
||||
|
||||
def handle_report(msg):
|
||||
log.debug(_('Got report message from orchestration engine:\n{0}'.format(msg.body)))
|
||||
log.debug(_('Got report message from orchestration engine:\n{0}'.
|
||||
format(msg.body)))
|
||||
|
||||
params = anyjson.deserialize(msg.body)
|
||||
params['entity_id'] = params['id']
|
||||
@ -61,7 +67,8 @@ def handle_report(msg):
|
||||
session = get_session()
|
||||
#connect with session
|
||||
conf_session = session.query(Session).filter_by(
|
||||
**{'environment_id': status.environment_id, 'state': 'deploying'}).first()
|
||||
**{'environment_id': status.environment_id,
|
||||
'state': 'deploying'}).first()
|
||||
status.session_id = conf_session.id
|
||||
|
||||
with session.begin():
|
||||
@ -69,7 +76,8 @@ def handle_report(msg):
|
||||
|
||||
|
||||
def handle_result(msg):
|
||||
log.debug(_('Got result message from orchestration engine:\n{0}'.format(msg.body)))
|
||||
log.debug(_('Got result message from orchestration engine:\n{0}'.
|
||||
format(msg.body)))
|
||||
|
||||
environment_result = anyjson.deserialize(msg.body)
|
||||
|
||||
|
@ -2,4 +2,4 @@ import uuid
|
||||
|
||||
|
||||
def generate_uuid():
|
||||
return str(uuid.uuid4()).replace('-', '')
|
||||
return str(uuid.uuid4()).replace('-', '')
|
||||
|
@ -24,7 +24,9 @@ class RequestContext(object):
|
||||
accesses the system, as well as additional request information.
|
||||
"""
|
||||
|
||||
def __init__(self, auth_tok=None, user=None, tenant=None, roles=None, service_catalog=None, session=None):
|
||||
def __init__(self, auth_tok=None, user=None, tenant=None,
|
||||
roles=None, service_catalog=None, session=None):
|
||||
|
||||
self.auth_tok = auth_tok
|
||||
self.user = user
|
||||
self.tenant = tenant
|
||||
@ -55,4 +57,4 @@ class RequestContext(object):
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, values):
|
||||
return cls(**values)
|
||||
return cls(**values)
|
||||
|
@ -9,4 +9,4 @@ sql_connection_opt = cfg.StrOpt('sql_connection',
|
||||
'Default: %(default)s')
|
||||
|
||||
CONF = cfg.CONF
|
||||
CONF.register_opt(sql_connection_opt)
|
||||
CONF.register_opt(sql_connection_opt)
|
||||
|
@ -11,7 +11,7 @@ Table('environment', meta,
|
||||
Column('updated', DateTime(), nullable=False),
|
||||
Column('tenant_id', String(32), nullable=False),
|
||||
Column('description', Text(), nullable=False),
|
||||
)
|
||||
)
|
||||
|
||||
Table('service', meta,
|
||||
Column('id', String(32), primary_key=True),
|
||||
@ -21,7 +21,7 @@ Table('service', meta,
|
||||
Column('created', DateTime, nullable=False),
|
||||
Column('updated', DateTime, nullable=False),
|
||||
Column('description', Text(), nullable=False),
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
|
@ -5,12 +5,13 @@ meta = MetaData()
|
||||
|
||||
session = Table('session', meta,
|
||||
Column('id', String(32), primary_key=True),
|
||||
Column('environment_id', String(32), ForeignKey('environment.id')),
|
||||
Column('environment_id', String(32),
|
||||
ForeignKey('environment.id')),
|
||||
Column('created', DateTime, nullable=False),
|
||||
Column('updated', DateTime, nullable=False),
|
||||
Column('user_id', String(32), nullable=False),
|
||||
Column('state', Text(), nullable=False),
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
|
@ -8,10 +8,11 @@ status = Table('status', meta,
|
||||
Column('created', DateTime, nullable=False),
|
||||
Column('updated', DateTime, nullable=False),
|
||||
Column('entity', String(10), nullable=False),
|
||||
Column('environment_id', String(32), ForeignKey('environment.id')),
|
||||
Column('environment_id', String(32),
|
||||
ForeignKey('environment.id')),
|
||||
Column('session_id', String(32), ForeignKey('session.id')),
|
||||
Column('text', Text(), nullable=False),
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
|
@ -5,14 +5,15 @@ from sqlalchemy.types import String, Text, DateTime
|
||||
meta = MetaData()
|
||||
|
||||
service = Table('service', meta,
|
||||
Column('id', String(32), primary_key=True),
|
||||
Column('name', String(255), nullable=False),
|
||||
Column('type', String(40), nullable=False),
|
||||
Column('environment_id', String(32), ForeignKey('environment.id')),
|
||||
Column('created', DateTime, nullable=False),
|
||||
Column('updated', DateTime, nullable=False),
|
||||
Column('description', Text(), nullable=False),
|
||||
)
|
||||
Column('id', String(32), primary_key=True),
|
||||
Column('name', String(255), nullable=False),
|
||||
Column('type', String(40), nullable=False),
|
||||
Column('environment_id', String(32),
|
||||
ForeignKey('environment.id')),
|
||||
Column('created', DateTime, nullable=False),
|
||||
Column('updated', DateTime, nullable=False),
|
||||
Column('description', Text(), nullable=False),
|
||||
)
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
|
@ -83,7 +83,8 @@ class ModelBase(object):
|
||||
|
||||
def to_dict(self):
|
||||
dictionary = self.__dict__.copy()
|
||||
return {k: v for k, v in dictionary.iteritems() if k != '_sa_instance_state'}
|
||||
return {k: v for k, v in dictionary.iteritems()
|
||||
if k != '_sa_instance_state'}
|
||||
|
||||
|
||||
class JsonBlob(TypeDecorator):
|
||||
|
@ -11,8 +11,8 @@ def verify_session(func):
|
||||
@functools.wraps(func)
|
||||
def __inner(self, request, *args, **kwargs):
|
||||
if hasattr(request, 'context') and request.context.session:
|
||||
uw = get_session()
|
||||
configuration_session = uw.query(Session).get(request.context.session)
|
||||
uw = get_session().query(Session)
|
||||
configuration_session = uw.get(request.context.session)
|
||||
|
||||
if configuration_session.state != 'open':
|
||||
log.info('Session is already deployed')
|
||||
@ -22,5 +22,3 @@ def verify_session(func):
|
||||
raise exc.HTTPUnauthorized
|
||||
return func(self, request, *args, **kwargs)
|
||||
return __inner
|
||||
|
||||
|
||||
|
@ -15,6 +15,6 @@
|
||||
# under the License.
|
||||
|
||||
|
||||
from portas.openstack.common import version as common_version
|
||||
from portasclient.openstack.common import version as common_version
|
||||
|
||||
version_info = common_version.VersionInfo('python-portasclient')
|
||||
|
@ -1,19 +1,29 @@
|
||||
import os
|
||||
import unittest
|
||||
import logging
|
||||
from mock import MagicMock
|
||||
from mock import patch
|
||||
|
||||
from portasclient.client import Client as CommonClient
|
||||
from portasclient.v1 import Client
|
||||
import portasclient.v1.environments as environments
|
||||
import portasclient.v1.services as services
|
||||
import portasclient.v1.sessions as sessions
|
||||
|
||||
import portasclient.shell as shell
|
||||
import portasclient.common.http as http
|
||||
|
||||
|
||||
LOG = logging.getLogger('Unit tests')
|
||||
|
||||
|
||||
def my_mock(*a, **b):
|
||||
return [a, b]
|
||||
|
||||
|
||||
api = MagicMock(json_request=my_mock)
|
||||
|
||||
|
||||
class SanityUnitTests(unittest.TestCase):
|
||||
|
||||
def test_create_client_instance(self):
|
||||
@ -25,145 +35,121 @@ class SanityUnitTests(unittest.TestCase):
|
||||
assert test_client.sessions is not None
|
||||
assert test_client.activeDirectories is not None
|
||||
assert test_client.webServers is not None
|
||||
|
||||
def test_common_client(self):
|
||||
endpoint = 'http://localhost:8001'
|
||||
test_client = CommonClient('1', endpoint=endpoint, token='1', timeout=10)
|
||||
|
||||
assert test_client.environments is not None
|
||||
assert test_client.sessions is not None
|
||||
assert test_client.activeDirectories is not None
|
||||
assert test_client.webServers is not None
|
||||
|
||||
def test_env_manager_list(self):
|
||||
|
||||
manager = environments.EnvironmentManager(api)
|
||||
|
||||
result = manager.list()
|
||||
|
||||
assert result == []
|
||||
|
||||
def test_env_manager_create(self):
|
||||
|
||||
manager = environments.EnvironmentManager(api)
|
||||
|
||||
result = manager.create('test')
|
||||
|
||||
assert result.headers == {}
|
||||
assert result.body == {'name': 'test'}
|
||||
|
||||
def test_env_manager_delete(self):
|
||||
|
||||
manager = environments.EnvironmentManager(api)
|
||||
|
||||
result = manager.delete('test')
|
||||
|
||||
assert result is None
|
||||
|
||||
def test_env_manager_update(self):
|
||||
|
||||
manager = environments.EnvironmentManager(api)
|
||||
|
||||
result = manager.update('1', 'test')
|
||||
|
||||
assert result.body == {'name': 'test'}
|
||||
|
||||
def test_env_manager_get(self):
|
||||
|
||||
manager = environments.EnvironmentManager(api)
|
||||
|
||||
result = manager.get('test')
|
||||
## WTF?
|
||||
assert result.manager is not None
|
||||
|
||||
def test_env(self):
|
||||
environment = environments.Environment(api, api)
|
||||
assert environment.data() is not None
|
||||
|
||||
def test_ad_manager_list(self):
|
||||
|
||||
manager = services.ActiveDirectoryManager(api)
|
||||
|
||||
result = manager.list('datacenter1')
|
||||
|
||||
assert result == []
|
||||
result = manager.list('datacenter1', '1')
|
||||
assert result == []
|
||||
|
||||
def test_ad_manager_create(self):
|
||||
|
||||
manager = services.ActiveDirectoryManager(api)
|
||||
|
||||
result = manager.create('datacenter1', 'session1', 'test')
|
||||
|
||||
assert result.headers == {'X-Configuration-Session': 'session1'}
|
||||
assert result.body == 'test'
|
||||
|
||||
#@unittest.skip("https://mirantis.jira.com/browse/KEERO-218")
|
||||
def test_ad_manager_delete(self):
|
||||
|
||||
manager = services.ActiveDirectoryManager(api)
|
||||
|
||||
result = manager.delete('datacenter1', 'session1', 'test')
|
||||
|
||||
assert result is None
|
||||
|
||||
def test_iis_manager_list(self):
|
||||
|
||||
manager = services.WebServerManager(api)
|
||||
|
||||
result = manager.list('datacenter1')
|
||||
|
||||
assert result == []
|
||||
result = manager.list('datacenter1', '1')
|
||||
assert result == []
|
||||
|
||||
def test_iis_manager_create(self):
|
||||
|
||||
manager = services.WebServerManager(api)
|
||||
|
||||
result = manager.create('datacenter1', 'session1', 'test')
|
||||
|
||||
assert result.headers == {'X-Configuration-Session': 'session1'}
|
||||
assert result.body == 'test'
|
||||
|
||||
#@unittest.skip("https://mirantis.jira.com/browse/KEERO-218")
|
||||
def test_iis_manager_delete(self):
|
||||
|
||||
manager = services.WebServerManager(api)
|
||||
|
||||
result = manager.delete('datacenter1', 'session1', 'test')
|
||||
|
||||
assert result is None
|
||||
|
||||
def test_service_ad(self):
|
||||
service_ad = services.ActiveDirectory(api, api)
|
||||
assert service_ad.data() is not None
|
||||
|
||||
def test_service_iis(self):
|
||||
service_iis = services.ActiveDirectory(api, api)
|
||||
assert service_iis.data() is not None
|
||||
|
||||
def test_session_manager_list(self):
|
||||
|
||||
manager = sessions.SessionManager(api)
|
||||
|
||||
result = manager.list('datacenter1')
|
||||
|
||||
assert result == []
|
||||
|
||||
def test_session_manager_delete(self):
|
||||
|
||||
manager = sessions.SessionManager(api)
|
||||
|
||||
result = manager.delete('datacenter1', 'session1')
|
||||
|
||||
assert result is None
|
||||
|
||||
def test_session_manager_get(self):
|
||||
|
||||
manager = sessions.SessionManager(api)
|
||||
|
||||
result = manager.get('datacenter1', 'session1')
|
||||
# WTF?
|
||||
assert result.manager is not None
|
||||
|
||||
def test_session_manager_configure(self):
|
||||
|
||||
manager = sessions.SessionManager(api)
|
||||
|
||||
result = manager.configure('datacenter1')
|
||||
|
||||
assert result.headers == {}
|
||||
|
||||
def test_session_manager_deploy(self):
|
||||
|
||||
manager = sessions.SessionManager(api)
|
||||
|
||||
result = manager.deploy('datacenter1', '1')
|
||||
|
||||
assert result is None
|
||||
|
||||
#@unittest.skip("https://mirantis.jira.com/browse/KEERO-219")
|
||||
def test_session_manager_reports(self):
|
||||
|
||||
manager = sessions.SessionManager(api)
|
||||
|
||||
result = manager.reports('datacenter1', '1')
|
||||
|
||||
assert result == []
|
Loading…
x
Reference in New Issue
Block a user