From f0bedbde6b08a3a4fb87905f2e4ae5fe419ffe0c Mon Sep 17 00:00:00 2001 From: ank Date: Sat, 16 Apr 2016 16:58:40 +0530 Subject: [PATCH] Show Service Chain instances list and details Change-Id: I04724770c3eb1dc67abfa1449ff15bf3d1b9d3b4 Closes-Bug: #1566006 --- gbpui/client.py | 2 - gbpui/column_filters.py | 59 ++++++++++++++++--- gbpui/panels/network_services/tables.py | 11 ++-- gbpui/panels/network_services/tabs.py | 3 +- .../network_services/_scinstance_details.html | 24 +++++--- 5 files changed, 73 insertions(+), 26 deletions(-) diff --git a/gbpui/client.py b/gbpui/client.py index 1dfe5f9..239f351 100644 --- a/gbpui/client.py +++ b/gbpui/client.py @@ -566,8 +566,6 @@ def servicechaininstance_list(request, tenant_id, **kwargs): sc_instances = gbpclient(request).list_servicechain_instances( tenant_id=tenant_id, shared=False, **kwargs).get( 'servicechain_instances') - sc_instances.extend(gbpclient(request).list_servicechain_instances( - shared=True, **kwargs).get('servicechain_instances')) return [ServiceChainInstance(item) for item in sc_instances] diff --git a/gbpui/column_filters.py b/gbpui/column_filters.py index bba5b70..1135cd2 100644 --- a/gbpui/column_filters.py +++ b/gbpui/column_filters.py @@ -204,21 +204,60 @@ def update_sc_node_attributes(request, scnode): return scnode +def update_scn_instance_attributes(request, scspec): + static_url = getattr(settings, 'STATIC_URL', "/static/") + img_path = static_url + "dashboard/img/" + provider = "default" + nodes = scspec.nodes + nodes = [client.get_servicechain_node(request, item) for item in nodes] + sc = ["
"] + ds_path = "/opt/stack/horizon/static/dashboard/img/" + if os.path.exists(ds_path): + local_img_path = ds_path + else: + local_img_path = "/usr/share/openstack-dashboard/" \ + + "openstack_dashboard/static/dashboard/img/" + if os.path.exists(local_img_path): + providers = os.listdir(local_img_path) + for p in providers: + if p in scspec.description: + provider = p + break + + img_src = img_path + provider + "/" + for n in nodes: + service_profile_id = n.service_profile_id + try: + service_profile = client.get_service_profile(request, + service_profile_id) + service_type = service_profile.service_type + except Exception: + pass + sc.append( + "") + scnode = "" + sc.append(scnode) + sc.append("
") + setattr(scspec, 'chain', mark_safe("".join(sc))) + return scspec + + def update_sc_instance_attributes(request, scinstance): ptg_url = "horizon:project:policytargets:policy_targetdetails" clsurl = "horizon:project:application_policy:policyclassifierdetails" scspec_url = "horizon:project:network_services:sc_spec_details" - consumer_ptg = scinstance.consumer_ptg - provider_ptg = scinstance.provider_ptg - scspec = scinstance.servicechain_spec - classifier = scinstance.classifier - if consumer_ptg is not None: + consumer_ptg = scinstance.consumer_ptg_id + provider_ptg = scinstance.provider_ptg_id + scspec = scinstance.servicechain_specs + classifier = scinstance.classifier_id + if consumer_ptg is not None and consumer_ptg != "N/A": ptg = client.policy_target_get(request, consumer_ptg) u = reverse(ptg_url, kwargs={'policy_target_id': ptg.id}) atag = "%s" % (u, ptg.name) setattr(scinstance, 'consumer_ptg', mark_safe(atag)) if provider_ptg is not None: - ptg = client.policy_target_get(request, consumer_ptg) + ptg = client.policy_target_get(request, provider_ptg) u = reverse(ptg_url, kwargs={'policy_target_id': ptg.id}) atag = "%s" % (u, ptg.name) setattr(scinstance, 'provider_ptg', mark_safe(atag)) @@ -228,10 +267,12 @@ def update_sc_instance_attributes(request, scinstance): atag = "%s" % (u, cls.name) setattr(scinstance, 'classifier', mark_safe(atag)) if scspec is not None: - sc = client.get_servicechain_spec(request, scspec) - u = reverse(scspec_url, kwargs={'scspec_id': sc.id}) - atag = "%s" % (u, sc.name) + scs = client.get_servicechain_spec(request, scspec[0]) + url = reverse(scspec_url, kwargs={'scspec_id': scs.id}) + atag = "%s" % (url, scs.name) setattr(scinstance, 'servicechain_spec', mark_safe(atag)) + scni = update_scn_instance_attributes(request, scs) + setattr(scinstance, 'servicechain', scni.chain) return scinstance diff --git a/gbpui/panels/network_services/tables.py b/gbpui/panels/network_services/tables.py index e17e043..36327b3 100644 --- a/gbpui/panels/network_services/tables.py +++ b/gbpui/panels/network_services/tables.py @@ -136,9 +136,11 @@ class ServiceChainInstanceTable(tables.DataTable): description = tables.Column("description", verbose_name=_("Description")) provider_ptg = tables.Column( - "provider_ptg", verbose_name=_("Provider PTG")) - consumer_ptg = tables.Column( - "consumer_ptg", verbose_name=_("Consumer PTG")) + "provider_ptg", verbose_name=_("Provider")) + servicechain = tables.Column( + "servicechain", verbose_name=_("Service Chain")) + # consumer_ptg = tables.Column( + # "consumer_ptg", verbose_name=_("Consumer")) servicechain_spec = tables.Column( "servicechain_spec", verbose_name=_("Service Chain Spec")) classifier = tables.Column("classifier", verbose_name=_("Classifier")) @@ -146,9 +148,6 @@ class ServiceChainInstanceTable(tables.DataTable): class Meta(object): name = "service_chain_instance_table" verbose_name = _("Service Chain Instance") - table_actions = (CreateServiceChainInstanceLink,) - row_actions = ( - EditServiceChainInstanceLink, DeleteServiceChainInstanceLink,) class CreateServiceProfileLink(tables.LinkAction): diff --git a/gbpui/panels/network_services/tabs.py b/gbpui/panels/network_services/tabs.py index cb6b946..a4c0b0e 100644 --- a/gbpui/panels/network_services/tabs.py +++ b/gbpui/panels/network_services/tabs.py @@ -98,7 +98,8 @@ class ServiceProfileTab(tabs.TableTab): class ServiceChainTabs(tabs.TabGroup): slug = "service_chain_spec_tabs" - tabs = (ServiceChainSpecTab, ServiceChainNodeTab, ServiceProfileTab,) + tabs = (ServiceChainSpecTab, ServiceChainNodeTab, ServiceProfileTab, + ServiceChainInstanceTab) sticky = True diff --git a/gbpui/panels/network_services/templates/network_services/_scinstance_details.html b/gbpui/panels/network_services/templates/network_services/_scinstance_details.html index a2f2e24..1988b69 100644 --- a/gbpui/panels/network_services/templates/network_services/_scinstance_details.html +++ b/gbpui/panels/network_services/templates/network_services/_scinstance_details.html @@ -1,9 +1,9 @@ {% load i18n sizeformat parse_date %} {% load url from future %} -
+

-
+
{% trans "Name" %}
{{ scinstance.name|default:_("-") }}
@@ -14,17 +14,25 @@
{{ scinstance.id }}
{% trans "Provider PTG" %}
-
{{ scinstance.provider_ptg }}
+
{{ scinstance.provider_ptg_id }}
-
{% trans "Consumer PTG" %}
-
{{ scinstance.consumer_ptg }}
+ + +
{% trans "Management PTG" %}
+
{{ scinstance.management_ptg_id }}
{% trans "Service Chain Spec" %}
-
{{ scinstance.servicechain_spec}}
+
{{ scinstance.servicechain_specs}}
{% trans "Classifier" %}
-
{{ scinstance.classifier}}
- +
{{ scinstance.classifier_id}}
+ +
{% trans "Config parameter values" %}
+
{{ scinstance.config_param_values}}
+ +
{% trans "Project ID" %}
+
{{ scinstance.tenant_id}}