Merged iteration3 branch to master. Fixed pep8.
This commit is contained in:
commit
cf928abf09
@ -61,20 +61,6 @@ def datacenters_deploy(request, datacenter_id):
|
||||
return windcclient(request).sessions.deploy(datacenter_id, session_id)
|
||||
|
||||
|
||||
def datacenters_get_status(request, datacenter_id):
|
||||
sessions = windcclient(request).sessions.list(datacenter_id)
|
||||
for session in sessions:
|
||||
if session.state == 'deployed':
|
||||
windcclient(request).sessions.delete(datacenter_id, session.id)
|
||||
sessions = windcclient(request).sessions.list(datacenter_id)
|
||||
if sessions:
|
||||
session = sessions[0]
|
||||
else:
|
||||
session = windcclient(request).sessions.configure(datacenter_id)
|
||||
|
||||
return session.state
|
||||
|
||||
|
||||
def services_create(request, datacenter, parameters):
|
||||
session_id = windcclient(request).sessions.list(datacenter)[0].id
|
||||
if parameters['service_type'] == 'Active Directory':
|
||||
@ -106,8 +92,12 @@ def services_list(request, datacenter_id):
|
||||
return services
|
||||
|
||||
|
||||
def services_get(request, datacenter, service_id):
|
||||
return windcclient(request).services.get(datacenter, service_id)
|
||||
def services_get(request, datacenter_id, service_id):
|
||||
services = services_list(request, datacenter_id)
|
||||
|
||||
for service in services:
|
||||
if service.id is service_id:
|
||||
return service
|
||||
|
||||
|
||||
def services_delete(request, datacenter_id, service_id):
|
||||
|
@ -133,38 +133,40 @@ class UpdateDCRow(tables.Row):
|
||||
ajax = True
|
||||
|
||||
def get_data(self, request, datacenter_id):
|
||||
datacenter = api.windc.datacenters_get(request, datacenter_id)
|
||||
datacenter.status = api.windc.datacenters_get_status(request,
|
||||
datacenter_id)
|
||||
return datacenter
|
||||
return api.windc.datacenters_get(request, datacenter_id)
|
||||
|
||||
|
||||
class UpdateServiceRow(tables.Row):
|
||||
ajax = True
|
||||
|
||||
def get_data(self, request, service_id):
|
||||
link = request.__dict__['META']['HTTP_REFERER']
|
||||
datacenter_id = re.search('windc/(\S+)', link).group(0)[6:-1]
|
||||
|
||||
return api.windc.services_get(request, datacenter_id, service_id)
|
||||
|
||||
|
||||
STATUS_DISPLAY_CHOICES = (
|
||||
('deploying', 'Deploy in progress'),
|
||||
('open', 'Ready to deploy')
|
||||
('draft', 'Ready to deploy'),
|
||||
('pending', 'Wait for configuration'),
|
||||
('inprogress', 'Deploy in progress'),
|
||||
('finished', 'Active')
|
||||
)
|
||||
|
||||
|
||||
def get_datacenter_status(datacenter):
|
||||
return datacenter.status
|
||||
|
||||
|
||||
class WinDCTable(tables.DataTable):
|
||||
|
||||
STATUS_CHOICES = (
|
||||
(None, True),
|
||||
('Ready to deploy', False),
|
||||
('deploying', True),
|
||||
('deployed', True),
|
||||
('ready', True),
|
||||
('error', False),
|
||||
('Ready to deploy', True),
|
||||
('Active', True)
|
||||
)
|
||||
|
||||
name = tables.Column('name',
|
||||
link=('horizon:project:windc:services'),
|
||||
verbose_name=_('Name'))
|
||||
|
||||
status = tables.Column(get_datacenter_status, verbose_name=_('Status'),
|
||||
status = tables.Column('status', verbose_name=_('Status'),
|
||||
status=True,
|
||||
status_choices=STATUS_CHOICES,
|
||||
display_choices=STATUS_DISPLAY_CHOICES)
|
||||
@ -173,7 +175,34 @@ class WinDCTable(tables.DataTable):
|
||||
name = 'windc'
|
||||
verbose_name = _('Windows Data Centers')
|
||||
row_class = UpdateDCRow
|
||||
status_columns = ['status']
|
||||
table_actions = (CreateDataCenter,)
|
||||
row_actions = (ShowDataCenterServices, DeleteDataCenter,
|
||||
DeployDataCenter)
|
||||
|
||||
|
||||
class WinServicesTable(tables.DataTable):
|
||||
|
||||
STATUS_CHOICES = (
|
||||
(None, True),
|
||||
('Ready to deploy', True),
|
||||
('Active', True)
|
||||
)
|
||||
|
||||
name = tables.Column('name', verbose_name=_('Name'),
|
||||
link=('horizon:project:windc:service_details'),)
|
||||
|
||||
_type = tables.Column('service_type', verbose_name=_('Type'))
|
||||
|
||||
status = tables.Column('status', verbose_name=_('Status'),
|
||||
status=True,
|
||||
status_choices=STATUS_CHOICES,
|
||||
display_choices=STATUS_DISPLAY_CHOICES)
|
||||
|
||||
class Meta:
|
||||
name = 'services'
|
||||
verbose_name = _('Services')
|
||||
row_class = UpdateServiceRow
|
||||
status_columns = ['status']
|
||||
row_actions = (ShowDataCenterServices, DeleteDataCenter,
|
||||
DeployDataCenter)
|
||||
|
@ -66,6 +66,10 @@ class Wizard(ModalFormMixin, SessionWizardView, generic.FormView):
|
||||
parameters['configuration'] = 'standalone'
|
||||
parameters['name'] = str(form_list[1].data.get('1-dc_name',
|
||||
'noname'))
|
||||
|
||||
# Fix Me in orchestrator
|
||||
parameters['domain'] = parameters['name']
|
||||
|
||||
parameters['adminPassword'] = \
|
||||
str(form_list[1].data.get('1-adm_password', ''))
|
||||
dc_count = int(form_list[1].data.get('1-dc_count', 1))
|
||||
@ -87,11 +91,10 @@ class Wizard(ModalFormMixin, SessionWizardView, generic.FormView):
|
||||
dc_pass = form_list[1].data.get('1-domain_user_password', '')
|
||||
parameters['name'] = str(form_list[1].data.get('1-iis_name',
|
||||
'noname'))
|
||||
|
||||
parameters['credentials'] = {'username': 'Administrator',
|
||||
'password': password}
|
||||
parameters['domain'] = {'name': str(domain),
|
||||
'username': str(dc_user),
|
||||
'password': str(dc_pass)}
|
||||
parameters['domain'] = str(domain)
|
||||
parameters['location'] = 'west-dc'
|
||||
|
||||
parameters['units'] = []
|
||||
@ -153,7 +156,6 @@ class WinServices(tables.DataTableView):
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(WinServices, self).get_context_data(**kwargs)
|
||||
data = self.get_data()
|
||||
context['dc_name'] = self.dc_name
|
||||
return context
|
||||
|
||||
@ -167,7 +169,7 @@ class WinServices(tables.DataTableView):
|
||||
services = []
|
||||
exceptions.handle(self.request,
|
||||
_('Unable to retrieve list of services for '
|
||||
'data center "%s".') % dc_id)
|
||||
'data center "%s".') % self.dc_name)
|
||||
return services
|
||||
|
||||
|
||||
|
@ -9,10 +9,10 @@ paste.filter_factory = portas.api.middleware.context:ContextMiddleware.factory
|
||||
|
||||
[filter:authtoken]
|
||||
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
|
||||
auth_host = 172.18.79.73
|
||||
auth_host = localhost
|
||||
auth_port = 35357
|
||||
auth_protocol = http
|
||||
admin_tenant_name = admin
|
||||
admin_user = admin
|
||||
admin_password = swordfish
|
||||
signing_dir = /tmp/keystone-signing-portas
|
||||
admin_password = password
|
||||
signing_dir = /tmp/keystone-signing-portas
|
||||
|
@ -28,6 +28,6 @@ reports_queue = task-reports
|
||||
host = localhost
|
||||
port = 5672
|
||||
use_ssl = false
|
||||
userid = guest
|
||||
password = guest
|
||||
virtual_host = /
|
||||
userid = keero
|
||||
password = keero
|
||||
virtual_host = keero
|
||||
|
@ -1,12 +1,16 @@
|
||||
from portas.db.models import Session
|
||||
from portas.db.models import Session, Environment, Status
|
||||
from portas.db.session import get_session
|
||||
|
||||
|
||||
def get_draft(session_id):
|
||||
def get_draft(environment_id=None, session_id=None):
|
||||
unit = get_session()
|
||||
session = unit.query(Session).get(session_id)
|
||||
|
||||
return session.description
|
||||
#TODO: When session is deployed should be returned env.description
|
||||
if session_id:
|
||||
session = unit.query(Session).get(session_id)
|
||||
return session.description
|
||||
else:
|
||||
environment = unit.query(Environment).get(environment_id)
|
||||
return environment.description
|
||||
|
||||
|
||||
def save_draft(session_id, draft):
|
||||
@ -14,4 +18,71 @@ def save_draft(session_id, draft):
|
||||
session = unit.query(Session).get(session_id)
|
||||
|
||||
session.description = draft
|
||||
session.save(unit)
|
||||
session.save(unit)
|
||||
|
||||
|
||||
def get_env_status(environment_id, session_id):
|
||||
status = 'draft'
|
||||
|
||||
unit = get_session()
|
||||
|
||||
if not session_id:
|
||||
session = unit.query(Session).filter(
|
||||
Session.environment_id == environment_id and Session.state.in_(['open', 'deploying'])).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()
|
||||
|
||||
if session_state == 'deployed':
|
||||
status = 'finished'
|
||||
|
||||
if session_state == 'deploying' and reports_count > 1:
|
||||
status = 'pending'
|
||||
|
||||
draft = get_draft(environment_id, session_id)
|
||||
|
||||
if not 'services' in draft:
|
||||
return 'pending'
|
||||
|
||||
def get_statuses(type):
|
||||
if type in draft['services']:
|
||||
return [get_service_status(environment_id, session_id, service) for service in
|
||||
draft['services'][type]]
|
||||
else:
|
||||
return []
|
||||
|
||||
is_inprogress = filter(lambda item: item == 'inprogress',
|
||||
get_statuses('activeDirectories') + get_statuses('webServers'))
|
||||
|
||||
if session_state == 'deploying' and is_inprogress > 1:
|
||||
status = 'inprogress'
|
||||
|
||||
return status
|
||||
|
||||
|
||||
def get_service_status(environment_id, session_id, service):
|
||||
status = 'draft'
|
||||
|
||||
unit = get_session()
|
||||
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()
|
||||
|
||||
if session_state == 'deployed':
|
||||
status = 'finished'
|
||||
|
||||
if session_state == 'deploying' and reports_count == 0:
|
||||
status = 'pending'
|
||||
|
||||
if session_state == 'deploying' and reports_count > 0:
|
||||
status = 'inprogress'
|
||||
|
||||
return status
|
||||
|
@ -1,5 +1,5 @@
|
||||
from portas import utils
|
||||
from portas.api.v1 import save_draft, get_draft
|
||||
from portas.api.v1 import save_draft, get_draft, get_service_status
|
||||
from portas.common import uuidutils
|
||||
from portas.openstack.common import wsgi, timeutils
|
||||
from portas.openstack.common import log as logging
|
||||
@ -8,32 +8,32 @@ log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Controller(object):
|
||||
@utils.verify_session
|
||||
def index(self, request, environment_id):
|
||||
draft = get_draft(request.context.session)
|
||||
log.debug(_('ActiveDirectory:Index <EnvId: {0}>'.format(environment_id)))
|
||||
|
||||
if not draft.has_key('services'):
|
||||
return dict()
|
||||
draft = prepare_draft(get_draft(environment_id, request.context.session))
|
||||
|
||||
if not draft['services'].has_key('activeDirectories'):
|
||||
return dict()
|
||||
for dc in draft['services']['activeDirectories']:
|
||||
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):
|
||||
draft = get_draft(request.context.session)
|
||||
log.debug(_('ActiveDirectory:Create <EnvId: {0}, Body: {1}>'.format(environment_id, body)))
|
||||
|
||||
draft = get_draft(session_id=request.context.session)
|
||||
|
||||
active_directory = body.copy()
|
||||
active_directory['id'] = uuidutils.generate_uuid()
|
||||
active_directory['created'] = timeutils.utcnow
|
||||
active_directory['updated'] = timeutils.utcnow
|
||||
active_directory['created'] = str(timeutils.utcnow())
|
||||
active_directory['updated'] = str(timeutils.utcnow())
|
||||
|
||||
unit_count = 0
|
||||
for unit in active_directory['units']:
|
||||
unit_count += 1
|
||||
unit['id'] = uuidutils.generate_uuid()
|
||||
unit['name'] = 'dc{0}'.format(unit_count)
|
||||
unit['name'] = 'dc{0}{1}'.format(unit_count, active_directory['id'][:4])
|
||||
|
||||
draft = prepare_draft(draft)
|
||||
draft['services']['activeDirectories'].append(active_directory)
|
||||
@ -42,6 +42,8 @@ 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)))
|
||||
|
||||
draft = get_draft(request.context.session)
|
||||
draft['services']['activeDirectories'] = [service for service in draft['services']['activeDirectories'] if
|
||||
service['id'] != active_directory_id]
|
||||
|
@ -1,4 +1,5 @@
|
||||
from webob import exc
|
||||
from portas.api.v1 import get_env_status
|
||||
from portas.db.session import get_session
|
||||
from portas.db.models import Environment
|
||||
from portas.openstack.common import wsgi
|
||||
@ -10,17 +11,23 @@ log = logging.getLogger(__name__)
|
||||
|
||||
class Controller(object):
|
||||
def index(self, request):
|
||||
log.debug(_("Display list of environments"))
|
||||
log.debug(_('Environments:List'))
|
||||
|
||||
#Only environments from same tenant as users should be shown
|
||||
filters = {'tenant_id': request.context.tenant}
|
||||
|
||||
session = get_session()
|
||||
environments = session.query(Environment).filter_by(**filters)
|
||||
environments = [env.to_dict() for env in environments]
|
||||
|
||||
return {"environments": [env.to_dict() for env in environments]}
|
||||
for env in environments:
|
||||
env['status'] = get_env_status(env['id'], request.context.session)
|
||||
|
||||
return {"environments": environments}
|
||||
|
||||
def create(self, request, body):
|
||||
log.debug(_('Environments:Create <Body {0}>'.format(body)))
|
||||
|
||||
#tagging environment by tenant_id for later checks
|
||||
params = body.copy()
|
||||
params['tenant_id'] = request.context.tenant
|
||||
@ -39,6 +46,8 @@ class Controller(object):
|
||||
return environment.to_dict()
|
||||
|
||||
def show(self, request, environment_id):
|
||||
log.debug(_('Environments:Show <Id: {0}>'.format(environment_id)))
|
||||
|
||||
session = get_session()
|
||||
environment = session.query(Environment).get(environment_id)
|
||||
|
||||
@ -46,9 +55,14 @@ class Controller(object):
|
||||
log.info('User is not authorized to access this tenant resources.')
|
||||
raise exc.HTTPUnauthorized
|
||||
|
||||
return environment.to_dict()
|
||||
env = environment.to_dict()
|
||||
env['status'] = get_env_status(environment_id, request.context.session)
|
||||
|
||||
return env
|
||||
|
||||
def update(self, request, 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)
|
||||
|
||||
@ -62,6 +76,8 @@ class Controller(object):
|
||||
return environment.to_dict()
|
||||
|
||||
def delete(self, request, environment_id):
|
||||
log.debug(_('Environments:Delete <Id: {0}>'.format(environment_id)))
|
||||
|
||||
session = get_session()
|
||||
environment = session.query(Environment).get(environment_id)
|
||||
|
||||
|
@ -24,6 +24,8 @@ class Controller(object):
|
||||
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}
|
||||
|
||||
unit = get_session()
|
||||
@ -33,13 +35,16 @@ class Controller(object):
|
||||
session.environment.tenant_id == request.context.tenant]}
|
||||
|
||||
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'}
|
||||
|
||||
session = Session()
|
||||
session.update(params)
|
||||
|
||||
unit = get_session()
|
||||
if unit.query(Session).filter_by(**{'environment_id': environment_id, 'state': 'open'}).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
|
||||
|
||||
@ -53,6 +58,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)))
|
||||
|
||||
unit = get_session()
|
||||
session = unit.query(Session).get(session_id)
|
||||
|
||||
@ -63,6 +70,8 @@ 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)))
|
||||
|
||||
unit = get_session()
|
||||
session = unit.query(Session).get(session_id)
|
||||
|
||||
@ -76,12 +85,16 @@ 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)))
|
||||
|
||||
unit = get_session()
|
||||
statuses = unit.query(Status).filter_by(session_id=session_id)
|
||||
|
||||
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)))
|
||||
|
||||
unit = get_session()
|
||||
session = unit.query(Session).get(session_id)
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
from portas import utils
|
||||
from portas.api.v1 import save_draft, get_draft
|
||||
from portas.api.v1 import save_draft, get_draft, get_service_status
|
||||
from portas.common import uuidutils
|
||||
from portas.openstack.common import wsgi, timeutils
|
||||
from portas.openstack.common import log as logging
|
||||
@ -8,32 +8,32 @@ log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Controller(object):
|
||||
@utils.verify_session
|
||||
def index(self, request, environment_id):
|
||||
draft = get_draft(request.context.session)
|
||||
log.debug(_('WebServer:List <EnvId: {0}>'.format(environment_id)))
|
||||
|
||||
if not draft.has_key('services'):
|
||||
return dict()
|
||||
draft = prepare_draft(get_draft(environment_id, request.context.session))
|
||||
|
||||
if not draft['services'].has_key('webServers'):
|
||||
return dict()
|
||||
for dc in draft['services']['webServers']:
|
||||
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):
|
||||
draft = get_draft(request.context.session)
|
||||
log.debug(_('WebServer:Create <EnvId: {0}, Body: {1}>'.format(environment_id, body)))
|
||||
|
||||
draft = get_draft(session_id=request.context.session)
|
||||
|
||||
webServer = body.copy()
|
||||
webServer['id'] = uuidutils.generate_uuid()
|
||||
webServer['created'] = timeutils.utcnow
|
||||
webServer['updated'] = timeutils.utcnow
|
||||
webServer['created'] = str(timeutils.utcnow())
|
||||
webServer['updated'] = str(timeutils.utcnow())
|
||||
|
||||
unit_count = 0
|
||||
for unit in webServer['units']:
|
||||
unit_count += 1
|
||||
unit['id'] = uuidutils.generate_uuid()
|
||||
unit['name'] = 'iis{0}'.format(unit_count)
|
||||
unit['name'] = 'iis{0}{1}'.format(unit_count, webServer['id'][:3])
|
||||
|
||||
draft = prepare_draft(draft)
|
||||
draft['services']['webServers'].append(webServer)
|
||||
@ -43,7 +43,9 @@ class Controller(object):
|
||||
|
||||
@utils.verify_session
|
||||
def delete(self, request, environment_id, web_server_id):
|
||||
draft = get_draft(request.context.session)
|
||||
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]
|
||||
save_draft(request.context.session, draft)
|
||||
|
@ -35,7 +35,7 @@ class TaskResultHandlerService(service.Service):
|
||||
def bind(exchange, queue):
|
||||
if not exchange:
|
||||
ch.exchange_declare(exchange, 'direct', durable=True, auto_delete=False)
|
||||
ch.queue_declare(queue)
|
||||
ch.queue_declare(queue, durable=True, auto_delete=False)
|
||||
if not exchange:
|
||||
ch.queue_bind(queue, exchange, queue)
|
||||
|
||||
@ -43,7 +43,7 @@ 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)
|
||||
ch.basic_consume(conf.reports_exchange, callback=handle_report, no_ack=True)
|
||||
while ch.callbacks:
|
||||
ch.wait()
|
||||
|
||||
@ -51,8 +51,12 @@ class TaskResultHandlerService(service.Service):
|
||||
def handle_report(msg):
|
||||
log.debug(_('Got report message from orchestration engine:\n{0}'.format(msg.body)))
|
||||
|
||||
params = anyjson.deserialize(msg.body)
|
||||
params['entity_id'] = params['id']
|
||||
del params['id']
|
||||
|
||||
status = Status()
|
||||
status.update(anyjson.deserialize(msg.body))
|
||||
status.update(params)
|
||||
|
||||
session = get_session()
|
||||
#connect with session
|
||||
@ -63,8 +67,6 @@ def handle_report(msg):
|
||||
with session.begin():
|
||||
session.add(status)
|
||||
|
||||
msg.channel.basic_ack(msg.delivery_tag)
|
||||
|
||||
|
||||
def handle_result(msg):
|
||||
log.debug(_('Got result message from orchestration engine:\n{0}'.format(msg.body)))
|
||||
|
@ -0,0 +1,17 @@
|
||||
from sqlalchemy.schema import MetaData, Table, Column
|
||||
from sqlalchemy.types import String
|
||||
|
||||
meta = MetaData()
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
meta.bind = migrate_engine
|
||||
status = Table('status', meta, autoload=True)
|
||||
entity_id = Column('entity_id', String(32), nullable=True)
|
||||
entity_id.create(status)
|
||||
|
||||
|
||||
def downgrade(migrate_engine):
|
||||
meta.bind = migrate_engine
|
||||
status = Table('status', meta, autoload=True)
|
||||
status.c.entity_id.drop()
|
@ -132,7 +132,8 @@ class Session(BASE, ModelBase):
|
||||
class Status(BASE, ModelBase):
|
||||
__tablename__ = 'status'
|
||||
|
||||
id = Column(String(32), primary_key=True)
|
||||
id = Column(String(32), primary_key=True, default=uuidutils.generate_uuid)
|
||||
entity_id = Column(String(32), nullable=False)
|
||||
entity = Column(String(10), nullable=False)
|
||||
environment_id = Column(String(32), ForeignKey('environment.id'))
|
||||
session_id = Column(String(32), ForeignKey('session.id'))
|
||||
|
@ -33,4 +33,4 @@ class Client(http.HTTPClient):
|
||||
self.environments = environments.EnvironmentManager(self)
|
||||
self.sessions = sessions.SessionManager(self)
|
||||
self.activeDirectories = services.ActiveDirectoryManager(self)
|
||||
self.webServers = services.WebServerManager(self)
|
||||
self.webServers = services.WebServerManager(self)
|
||||
|
@ -34,10 +34,11 @@ class EnvironmentManager(base.Manager):
|
||||
return self._create('environments', {'name': name})
|
||||
|
||||
def update(self, environment_id, name):
|
||||
return self._update('environments/{id}'.format(id=environment_id), {'name': name})
|
||||
return self._update('environments/{id}'.format(id=environment_id),
|
||||
{'name': name})
|
||||
|
||||
def delete(self, environment_id):
|
||||
return self._delete('environments/{id}'.format(id=environment_id))
|
||||
|
||||
def get(self, environment_id):
|
||||
return self._get("environments/{id}".format(id=environment_id))
|
||||
return self._get("environments/{id}".format(id=environment_id))
|
||||
|
@ -27,22 +27,32 @@ class ActiveDirectory(base.Resource):
|
||||
class ActiveDirectoryManager(base.Manager):
|
||||
resource_class = ActiveDirectory
|
||||
|
||||
def list(self, environment_id, session_id):
|
||||
headers = {'X-Configuration-Session': session_id}
|
||||
return self._list('environments/{id}/activeDirectories'.format(id=environment_id), 'activeDirectories',
|
||||
def list(self, environment_id, session_id=None):
|
||||
if session_id:
|
||||
headers = {'X-Configuration-Session': session_id}
|
||||
else:
|
||||
headers = {}
|
||||
|
||||
return self._list('environments/{id}/activeDirectories'.
|
||||
format(id=environment_id),
|
||||
'activeDirectories',
|
||||
headers=headers)
|
||||
|
||||
def create(self, environment_id, session_id, active_directory):
|
||||
headers = {'X-Configuration-Session': session_id}
|
||||
|
||||
return self._create('environments/{id}/activeDirectories'.format(id=environment_id), active_directory,
|
||||
return self._create('environments/{id}/activeDirectories'.
|
||||
format(id=environment_id),
|
||||
active_directory,
|
||||
headers=headers)
|
||||
|
||||
def delete(self, environment_id, session_id, active_directory_id):
|
||||
def delete(self, environment_id, session_id, service_id):
|
||||
headers = {'X-Configuration-Session': session_id}
|
||||
path = 'environments/{id}/activeDirectories/{active_directory_id}'
|
||||
|
||||
return self._delete('environments/{id}/activeDirectories/{active_directory_id}'
|
||||
.format(id=environment_id, active_directory_id=active_directory_id), headers=headers)
|
||||
return self._delete(patch.format(id=environment_id,
|
||||
active_directory_id=service_id),
|
||||
headers=headers)
|
||||
|
||||
|
||||
class WebServer(base.Resource):
|
||||
@ -56,19 +66,29 @@ class WebServer(base.Resource):
|
||||
class WebServerManager(base.Manager):
|
||||
resource_class = WebServer
|
||||
|
||||
def list(self, environment_id, session_id):
|
||||
headers = {'X-Configuration-Session': session_id}
|
||||
return self._list('environments/{id}/webServers'.format(id=environment_id), 'webServers',
|
||||
def list(self, environment_id, session_id=None):
|
||||
if session_id:
|
||||
headers = {'X-Configuration-Session': session_id}
|
||||
else:
|
||||
headers = {}
|
||||
|
||||
return self._list('environments/{id}/webServers'.
|
||||
format(id=environment_id),
|
||||
'webServers',
|
||||
headers=headers)
|
||||
|
||||
def create(self, environment_id, session_id, web_server):
|
||||
headers = {'X-Configuration-Session': session_id}
|
||||
|
||||
return self._create('environments/{id}/webServers'.format(id=environment_id), web_server,
|
||||
return self._create('environments/{id}/webServers'.
|
||||
format(id=environment_id),
|
||||
web_server,
|
||||
headers=headers)
|
||||
|
||||
def delete(self, environment_id, session_id, web_server_id):
|
||||
def delete(self, environment_id, session_id, service_id):
|
||||
headers = {'X-Configuration-Session': session_id}
|
||||
|
||||
return self._delete('environments/{id}/webServers/{web_server_id}'
|
||||
.format(id=environment_id, web_server_id=web_server_id), headers=headers)
|
||||
.format(id=environment_id,
|
||||
web_server_id=service_id),
|
||||
headers=headers)
|
||||
|
@ -37,26 +37,32 @@ class SessionManager(base.Manager):
|
||||
resource_class = Session
|
||||
|
||||
def list(self, environment_id):
|
||||
return self._list('environments/{id}/sessions'.format(id=environment_id), 'sessions')
|
||||
return self._list('environments/{id}/sessions'.
|
||||
format(id=environment_id), 'sessions')
|
||||
|
||||
def get(self, environment_id, session_id):
|
||||
return self._get('environments/{id}/sessions/{session_id}'.format(id=environment_id, session_id=session_id))
|
||||
return self._get('environments/{id}/sessions/{session_id}'.
|
||||
format(id=environment_id, session_id=session_id))
|
||||
|
||||
def configure(self, environment_id):
|
||||
return self._create('environments/{id}/configure'.format(id=environment_id), None)
|
||||
return self._create('environments/{id}/configure'.
|
||||
format(id=environment_id), None)
|
||||
|
||||
def deploy(self, environment_id, session_id):
|
||||
path = 'environments/{id}/sessions/{session_id}/deploy'
|
||||
self.api.json_request('POST',
|
||||
'environments/{id}/sessions/{session_id}/deploy'.format(id=environment_id,
|
||||
session_id=session_id))
|
||||
path.format(id=environment_id,
|
||||
session_id=session_id))
|
||||
|
||||
def reports(self, environment_id, session_id):
|
||||
path = 'environments/{id}/sessions/{session_id}/reports'
|
||||
resp, body = self.api.json_request('GET',
|
||||
'environments/{id}/sessions/{session_id}/reports'.
|
||||
format(id=environment_id, session_id=session_id))
|
||||
path.format(id=environment_id,
|
||||
session_id=session_id))
|
||||
|
||||
data = body['reports']
|
||||
return [Status(self, res, loaded=True) for res in data if res]
|
||||
|
||||
def delete(self, environment_id, session_id):
|
||||
return self._delete("environments/{id}/sessions/{session_id}".format(id=environment_id, session_id=session_id))
|
||||
return self._delete("environments/{id}/sessions/{session_id}".
|
||||
format(id=environment_id, session_id=session_id))
|
||||
|
Loading…
x
Reference in New Issue
Block a user