Fixed all pep8.

This commit is contained in:
Timur Nurlygayanov 2013-03-26 06:35:35 +07:00
parent c138799465
commit bb3e62bb4d
34 changed files with 203 additions and 163 deletions

View File

@ -1,3 +1,3 @@
#!/usr/bin/env python
from conductor import app
from conductor import app

View File

@ -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()

View File

@ -36,4 +36,3 @@ xml_code_engine.XmlCodeEngine.register_function(
xml_code_engine.XmlCodeEngine.register_function(
prepare_user_data, "prepare_user_data")

View File

@ -59,7 +59,6 @@ class HeatExecutor(CommandBase):
self._stack
])
callbacks = []
for t in self._pending_list:
if t['callback']:

View File

@ -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():

View File

@ -63,4 +63,3 @@ class WindowsAgentExecutor(CommandBase):
def close(self):
self._rmqclient.unsubscribe('-execution-results')

View File

@ -48,4 +48,4 @@ class Context(object):
return str(self._data)
if self._parent:
return str(self._parent)
return str({})
return str({})

View File

@ -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

View File

@ -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))

View File

@ -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")

View File

@ -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")

View File

@ -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)

View File

@ -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]

View File

@ -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

View File

@ -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'

View File

@ -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())

View File

@ -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())

View File

@ -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)

View File

@ -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())

View File

@ -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())

View File

@ -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

View File

@ -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")

View File

@ -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)

View File

@ -2,4 +2,4 @@ import uuid
def generate_uuid():
return str(uuid.uuid4()).replace('-', '')
return str(uuid.uuid4()).replace('-', '')

View File

@ -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)

View File

@ -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)

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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

View File

@ -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')

View File

@ -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 == []