Show Service Chain instances list and details
Change-Id: I04724770c3eb1dc67abfa1449ff15bf3d1b9d3b4 Closes-Bug: #1566006
This commit is contained in:
parent
5ade0d2013
commit
f0bedbde6b
|
@ -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]
|
||||
|
||||
|
||||
|
|
|
@ -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 = ["<div>"]
|
||||
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(
|
||||
"<span class='glyphicon glyphicon-arrow-right' "
|
||||
"style='margin: auto 10px'></span>")
|
||||
scnode = "<img src='" + img_src + service_type + ".png'>"
|
||||
sc.append(scnode)
|
||||
sc.append("</div>")
|
||||
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 = "<a href='%s'>%s</a>" % (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 = "<a href='%s'>%s</a>" % (u, ptg.name)
|
||||
setattr(scinstance, 'provider_ptg', mark_safe(atag))
|
||||
|
@ -228,10 +267,12 @@ def update_sc_instance_attributes(request, scinstance):
|
|||
atag = "<a href='%s'>%s</a>" % (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 = "<a href='%s'>%s</a>" % (u, sc.name)
|
||||
scs = client.get_servicechain_spec(request, scspec[0])
|
||||
url = reverse(scspec_url, kwargs={'scspec_id': scs.id})
|
||||
atag = "<a href='%s'>%s</a>" % (url, scs.name)
|
||||
setattr(scinstance, 'servicechain_spec', mark_safe(atag))
|
||||
scni = update_scn_instance_attributes(request, scs)
|
||||
setattr(scinstance, 'servicechain', scni.chain)
|
||||
return scinstance
|
||||
|
||||
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{% load i18n sizeformat parse_date %}
|
||||
{% load url from future %}
|
||||
|
||||
<div class="info row detail">
|
||||
<div class="info detail">
|
||||
<hr class="header_rule">
|
||||
<dl>
|
||||
<dl class="dl-horizontal">
|
||||
<dt>{% trans "Name" %}</dt>
|
||||
<dd>{{ scinstance.name|default:_("-") }}</dd>
|
||||
|
||||
|
@ -14,17 +14,25 @@
|
|||
<dd>{{ scinstance.id }} </dd>
|
||||
|
||||
<dt>{% trans "Provider PTG" %}</dt>
|
||||
<dd>{{ scinstance.provider_ptg }} </dd>
|
||||
<dd>{{ scinstance.provider_ptg_id }} </dd>
|
||||
|
||||
<dt>{% trans "Consumer PTG" %}</dt>
|
||||
<dd>{{ scinstance.consumer_ptg }} </dd>
|
||||
<!--<dt>{% trans "Consumer PTG" %}</dt>
|
||||
<dd>{{ scinstance.consumer_ptg_id }} </dd>-->
|
||||
|
||||
<dt>{% trans "Management PTG" %}</dt>
|
||||
<dd>{{ scinstance.management_ptg_id }} </dd>
|
||||
|
||||
<dt>{% trans "Service Chain Spec" %}</dt>
|
||||
<dd>{{ scinstance.servicechain_spec}} </dd>
|
||||
<dd>{{ scinstance.servicechain_specs}} </dd>
|
||||
|
||||
<dt>{% trans "Classifier" %}</dt>
|
||||
<dd>{{ scinstance.classifier}} </dd>
|
||||
|
||||
<dd>{{ scinstance.classifier_id}} </dd>
|
||||
|
||||
<dt>{% trans "Config parameter values" %}</dt>
|
||||
<dd>{{ scinstance.config_param_values}} </dd>
|
||||
|
||||
<dt>{% trans "Project ID" %}</dt>
|
||||
<dd>{{ scinstance.tenant_id}} </dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
|
|
Loading…
Reference in New Issue