diff --git a/tabula/tabula/windc/api.py b/tabula/tabula/windc/api.py index 5c3749e..5f73b9a 100644 --- a/tabula/tabula/windc/api.py +++ b/tabula/tabula/windc/api.py @@ -112,8 +112,18 @@ def services_get(request, datacenter_id, service_id): for service in services: if service.id is service_id: + service['operation'] = get_status_message_for_service(request, service_id) return service +def get_data_center_id_for_service(request, service_id): + datacenters = datacenters_list(request) + + for dc in datacenters: + services = services_list(request, dc.id) + for service in services: + if service.id == service_id: + return dc.id + def get_service_datails(request, service_id): datacenters = datacenters_list(request) services = [] @@ -124,6 +134,20 @@ def get_service_datails(request, service_id): if service.id == service_id: return service +def get_status_message_for_service(request, service_id): + environment_id = get_data_center_id_for_service(request, service_id) + session_id = None + sessions = windcclient(request).sessions.list(datacenter_id) + + for s in sessions: + if s.state in ['open', 'deploying']: + session_id = s.id + + if session_id is None: + session_id = windcclient(request).sessions.configure(datacenter_id).id + + return reports(self, environment_id, session_id, service_id) + def services_delete(request, datacenter_id, service_id): services = services_list(request, datacenter_id) diff --git a/tabula/tabula/windc/tables.py b/tabula/tabula/windc/tables.py index 09e2b8c..dfa614c 100644 --- a/tabula/tabula/windc/tables.py +++ b/tabula/tabula/windc/tables.py @@ -200,9 +200,12 @@ class WinServicesTable(tables.DataTable): status_choices=STATUS_CHOICES, display_choices=STATUS_DISPLAY_CHOICES) + operation = tables.Column('operation', verbose_name=_('Operation'), + status=True) + class Meta: name = 'services' verbose_name = _('Services') row_class = UpdateServiceRow - status_columns = ['status'] + status_columns = ['status', 'operation'] table_actions = (CreateService,)