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