diff --git a/starlingx-dashboard/centos/build_srpm.data b/starlingx-dashboard/centos/build_srpm.data index f94364dd..e077606c 100644 --- a/starlingx-dashboard/centos/build_srpm.data +++ b/starlingx-dashboard/centos/build_srpm.data @@ -1,2 +1,2 @@ SRC_DIR="starlingx-dashboard" -TIS_PATCH_VER=25 +TIS_PATCH_VER=26 diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/forms.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/forms.py index 47c77189..b1ae34f0 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/forms.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/forms.py @@ -39,8 +39,6 @@ class CreateDataNetwork(forms.SelfHandlingForm): description = forms.CharField(max_length=255, label=_("Description"), required=False) - network_type = forms.ChoiceField(label=_("Type"), - required=True) mtu = forms.IntegerField( label=_("MTU"), required=True, @@ -55,6 +53,70 @@ class CreateDataNetwork(forms.SelfHandlingForm): "1500 requires a minimum data interface MTU of 1574 bytes (1600 " "bytes is recommended."))) + network_type = forms.ChoiceField(label=_("Type"), + required=True, + widget=forms.Select( + attrs={ + 'class': 'switchable', + 'data-slug': 'dn_type'})) + + # VXLAN specific fields + mode_choices = [('dynamic', _('Multicast VXLAN')), + ('static', _('Static VXLAN'))] + mode = forms.ChoiceField(label=_("Mode"), + initial='dynamic', + required=False, + choices=mode_choices, + widget=forms.Select( + attrs={ + 'class': 'switchable switched', + 'data-switch-on': 'dn_type', + 'data-dn_type-vxlan': 'Mode', + 'data-slug': 'vxlan_mode'})) + + multicast_group_help = (_("Specify the IPv4 or IPv6 multicast address " + "for these VXLAN instances")) + multicast_group = forms.CharField( + max_length=255, + label=_("Multicast Group Address"), + initial="239.0.0.1", + required=False, + help_text=multicast_group_help, + widget=forms.TextInput( + attrs={ + 'class': 'switchable switched', + 'data-slug': 'vxlan_multicast_group', + 'data-switch-on': 'vxlan_mode', + 'data-vxlan_mode-dynamic': 'Multicast Group Address'}) + ) + + port_num_choices = [('4789', _('IANA Assigned VXLAN UDP port (4789)')), + ('4790', _('IANA Assigned VXLAN-GPE UDP port (4790)')), + ('8472', _('Legacy VXLAN UDP port (8472)'))] + port_num = forms.ChoiceField(label=_("UDP Port"), + required=True, + choices=port_num_choices, + widget=forms.Select( + attrs={ + 'class': 'switchable switched', + 'data-switch-on': 'dn_type', + 'data-dn_type-vxlan': 'UDP Port', + 'data-slug': 'port_num_slug'})) + + ttl = forms.IntegerField(label=_("TTL"), + required=False, + initial=1, + min_value=1, + max_value=255, + widget=forms.TextInput( + attrs={ + 'class': 'switchable switched', + 'data-switch-on': 'dn_type', + 'data-dn_type-vxlan': 'TTL', + 'data-slug': 'ttl_slug'}), + help_text=( + _("Specify the time-to-live value for these VXLAN instances"))) + @classmethod def _instantiate(cls, request, *args, **kwargs): return cls(request, *args, **kwargs) @@ -83,6 +145,12 @@ class CreateDataNetwork(forms.SelfHandlingForm): 'description': data['description'], 'mtu': data['mtu']} + if data['network_type'] == stx_api.sysinv.DATANETWORK_TYPE_VXLAN: + params.update({'mode': data['mode'], + 'port_num': data['port_num'], + 'ttl': data['ttl']}) + if data['mode'] == 'dynamic': + params.update({'multicast_group': data['multicast_group']}) network = stx_api.sysinv.data_network_create(request, **params) msg = (_('Data network %s was successfully created.') % @@ -128,13 +196,13 @@ class UpdateDataNetwork(forms.SelfHandlingForm): params = {'description': data['description'], 'mtu': data['mtu']} - providernet = stx_api.sysinv.data_network_modify( + datanet = stx_api.sysinv.data_network_modify( request, data['id'], **params) msg = (_('Data network %s was successfully updated.') % data['name']) LOG.info(msg) messages.success(request, msg) - return providernet + return datanet except sysinv_exceptions.CgtsclientException as e: msg = _('Failed to update data network %s') % data['name'] LOG.info(msg) diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/tables.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/tables.py index e024e746..e8ccdadf 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/tables.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/tables.py @@ -83,19 +83,18 @@ class AddDataNetworkRange(tables.LinkAction): url = "horizon:admin:datanets:datanets:addrange" classes = ("ajax-modal", "btn-edit") - def allowed(self, request, providernet): - if providernet: - return providernet.network_type not in ('flat') + def allowed(self, request, datanet): + if datanet: + return datanet.network_type not in ('flat') return super(AddDataNetworkRange, self).allowed(request, - providernet) + datanet) class DataNetworksFilterAction(tables.FilterAction): def filter(self, table, datanets, filter_string): """Naive case-insensitive search.""" q = filter_string.lower() - return [providernet for providernet in datanets - if q in providernet.name.lower()] + return [dn for dn in datanets if q in dn.name.lower()] def _format_providernet_ranges(data): @@ -115,7 +114,7 @@ class DataNetworksTable(tables.DataTable): return str(datum.uuid) class Meta(object): - name = "provider_networks" + name = "data_networks" verbose_name = _("Data Networks") table_actions = (CreateDataNetwork, DeleteDataNetwork, DataNetworksFilterAction) diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/views.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/views.py index 97038c78..602f5695 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/views.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/views.py @@ -53,7 +53,7 @@ class DetailView(tables.MultiTableView): providernet_tables.ProviderNetworkTenantNetworkTable) template_name = 'admin/datanets/datanets/detail.html' failure_url = reverse_lazy('horizon:admin:datanets:index') - page_title = '{{ "Data Network Detail: "|add:providernet.name }}' + page_title = '{{ "Data Network Detail: "|add:datanet.name }}' def _get_tenant_list(self): if not hasattr(self, "_tenants"): @@ -116,7 +116,7 @@ class DetailView(tables.MultiTableView): def get_context_data(self, **kwargs): context = super(DetailView, self).get_context_data(**kwargs) - context["providernet"] = self._get_data() + context["datanet"] = self._get_data() context["nova_providernet"] = self._get_nova_data() return context @@ -144,12 +144,12 @@ class UpdateView(forms.ModalFormView): return self._object def get_initial(self): - providernet = self._get_object() - return {'id': providernet.id, - 'name': providernet.name, - 'network_type': providernet.network_type, - 'mtu': providernet.mtu, - 'description': providernet.description, + datanet = self._get_object() + return {'id': datanet.id, + 'name': datanet.name, + 'network_type': datanet.network_type, + 'mtu': datanet.mtu, + 'description': datanet.description, } diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/tabs.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/tabs.py index 43e012e7..81c83987 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/tabs.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/tabs.py @@ -18,10 +18,10 @@ from starlingx_dashboard.dashboards.admin.datanets.datanets import \ class DataNetworkTab(tabs.TableTab): table_classes = (datanets_tables.DataNetworksTable,) name = _("Data Networks") - slug = "provider_networks" + slug = "data_networks" template_name = ("horizon/common/_detail_table.html") - def get_provider_networks_data(self): + def get_data_networks_data(self): try: datanets = \ stx_sysinv.data_network_list(self.tab_group.request) diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/_detail_overview.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/_detail_overview.html index 39922e07..85504462 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/_detail_overview.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/_detail_overview.html @@ -5,15 +5,27 @@
{% trans "Name" %}
-
{{ providernet.name|default:_("None") }}
+
{{ datanet.name|default:_("None") }}
{% trans "ID" %}
-
{{ providernet.id|default:_("None") }}
+
{{ datanet.id|default:_("None") }}
{% trans "Type" %}
-
{{ providernet.type|default:_("None") }}
+
{{ datanet.network_type|default:_("None") }}
{% trans "MTU" %}
-
{{ providernet.mtu|default:_("-") }}
+
{{ datanet.mtu|default:_("-") }}
{% trans "Description" %}
-
{{ providernet.description|default:_("None") }}
+
{{ datanet.description|default:_("None") }}
+ {% if datanet.network_type == 'vxlan' %} +
{% trans "Mode" %}
+
{{ datanet.mode }}
+
{% trans "UDP Port Number" %}
+
{{ datanet.port_num }}
+
{% trans "Time to Live" %}
+
{{ datanet.ttl }}
+ {% endif %} + {% if datanet.mode == 'dynamic' %} +
{% trans "Multicast Group Address" %}
+
{{ datanet.multicast_group|default:_("-") }}
+ {% endif %} {% if nova_providernet %}
{% trans "PCI PFs Configured" %}
{{ nova_providernet.pci_pfs_configured|default:_("0") }}
diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/detail.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/detail.html index 183f68b9..0377ffa7 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/detail.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/detail.html @@ -5,10 +5,4 @@ {% block main %} {% include "admin/datanets/datanets/_detail_overview.html" %}
-
- {{ provider_network_ranges_table.render }} -
-
- {{ tenant_networks_table.render }} -
{% endblock %} diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/urls.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/urls.py index a96959bb..36fa414a 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/urls.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/urls.py @@ -8,7 +8,7 @@ from django.conf.urls import include from django.conf.urls import url from starlingx_dashboard.dashboards.admin.datanets.datanets \ - import urls as providernet_urls + import urls as datanet_urls from starlingx_dashboard.dashboards.admin.datanets import views @@ -17,5 +17,5 @@ NETWORKS = r'^(?P[^/]+)/%s$' urlpatterns = [ url(r'^$', views.IndexViewTabbed.as_view(), name='index'), url(r'^datanets/', - include(providernet_urls, namespace='datanets')) + include(datanet_urls, namespace='datanets')) ] diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/tabs.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/tabs.py index 54dbb065..8167b3f9 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/tabs.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/tabs.py @@ -14,7 +14,6 @@ from horizon import exceptions from horizon import tabs from openstack_dashboard import api as api -from starlingx_dashboard import api as stx_api from starlingx_dashboard.dashboards.admin.datanets.datanets import \ tables as pn_tables from starlingx_dashboard.dashboards.admin.host_topology import \ @@ -47,7 +46,7 @@ class AlarmsTab(tabs.TableTab): def get_alarms_data(self): entity = self.tab_group.kwargs.get('host') if not entity: - entity = self.tab_group.kwargs.get('providernet') + entity = self.tab_group.kwargs.get('datanet') return entity.alarms @@ -65,9 +64,9 @@ class HostDetailTabs(tabs.TabGroup): class OverviewTab(tabs.TableTab): table_classes = (tables.ProviderNetworkRangeTable, pn_tables.ProviderNetworkTenantNetworkTable) - template_name = 'admin/host_topology/detail/providernet.html' + template_name = 'admin/host_topology/detail/datanet.html' name = "Data Network Detail" - slug = 'providernet_details_overview' + slug = 'datanet_details_overview' failure_url = reverse_lazy('horizon:admin:host_topology:index') def _get_tenant_list(self): @@ -88,31 +87,18 @@ class OverviewTab(tabs.TableTab): return networks def get_provider_network_ranges_data(self): - try: - providernet_id = self.tab_group.kwargs['providernet_id'] - ranges = stx_api.neutron.provider_network_range_list( - self.request, providernet_id=providernet_id) - except Exception: - ranges = [] - msg = _('Segmentation id range list can not be retrieved.') - exceptions.handle(self.request, msg) - tenant_dict = self._get_tenant_list() - for r in ranges: - r.set_id_as_name_if_empty() - # Set tenant name - tenant = tenant_dict.get(r.tenant_id, None) - r.tenant_name = getattr(tenant, 'name', None) + ranges = [] return ranges def get_context_data(self, request): context = super(OverviewTab, self).get_context_data(request) try: - context['providernet'] = self.tab_group.kwargs['providernet'] - context['nova_providernet'] = \ - self.tab_group.kwargs['nova_providernet'] + context['datanet'] = self.tab_group.kwargs['datanet'] + context['nova_datanet'] = \ + self.tab_group.kwargs['nova_datanet'] except Exception: exceptions.handle(self.request, - _('Unable to retrieve providernet details.')) + _('Unable to retrieve datanet details.')) return context diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/templates/host_topology/detail/datanet.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/templates/host_topology/detail/datanet.html new file mode 100755 index 00000000..eb02e5f0 --- /dev/null +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/templates/host_topology/detail/datanet.html @@ -0,0 +1,7 @@ +{% load i18n sizeformat %} + +
+ {% include "admin/datanets/datanets/_detail_overview.html" %} +
+
+ diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/templates/host_topology/detail/providernet.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/templates/host_topology/detail/providernet.html deleted file mode 100755 index 488e3593..00000000 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/templates/host_topology/detail/providernet.html +++ /dev/null @@ -1,13 +0,0 @@ -{% load i18n sizeformat %} - -
- {% include "admin/datanets/datanets/_detail_overview.html" %} -
-
- {{ provider_network_ranges_table.render }} -
-
- {{ tenant_networks_table.render }} -
-
- diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/templates/host_topology/detail/tabbed_detail.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/templates/host_topology/detail/tabbed_detail.html index 6fa70867..cdb540e4 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/templates/host_topology/detail/tabbed_detail.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/templates/host_topology/detail/tabbed_detail.html @@ -4,7 +4,7 @@ {% if host %}

Selected Entity: {{host.hostname}}

{% else %} -

Selected Entity: {{providernet.name}}

+

Selected Entity: {{datanet.name}}

{% endif %} {% block main %} diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/templates/host_topology/index.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/templates/host_topology/index.html index b088a8a9..e789a1d5 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/templates/host_topology/index.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/templates/host_topology/index.html @@ -20,9 +20,9 @@
-
{% blocktrans %}There are no hosts or provider networks to display.{% endblocktrans %}
+
{% blocktrans %}There are no hosts or data networks to display.{% endblocktrans %}
{% include "admin/host_topology/_svg_element.html" %} -
{% blocktrans %}Select a host or providernet to view its details. The current view can be moved by clicking and dragging.{% endblocktrans %}
+
{% blocktrans %}Select a host or datanet to view its details. The current view can be moved by clicking and dragging.{% endblocktrans %}
diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/urls.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/urls.py index 25309f5d..3577f70e 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/urls.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/urls.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2016 Wind River Systems, Inc. +# Copyright (c) 2016-2019 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # @@ -16,6 +16,6 @@ urlpatterns = [ url(r'^(?P[^/]+)/host/$', views.HostDetailView.as_view(), name='host'), - url(r'^(?P[^/]+)/providernet/$', - views.ProvidernetDetailView.as_view(), name='providernet') + url(r'^(?P[^/]+)/datanet/$', + views.DatanetDetailView.as_view(), name='datanet') ] diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/views.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/views.py index 8ba4d323..7dded8c5 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/views.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/views.py @@ -58,55 +58,56 @@ class HostDetailView(i_views.DetailView): return self._host -class ProvidernetDetailView(tabs.TabbedTableView): +class DatanetDetailView(tabs.TabbedTableView): tab_group_class = topology_tabs.ProvidernetDetailTabs template_name = 'admin/host_topology/detail/tabbed_detail.html' failure_url = reverse_lazy('horizon:admin:host_topology:index') def get_context_data(self, **kwargs): - context = super(ProvidernetDetailView, self).get_context_data(**kwargs) - context["providernet"] = self.get_data() - context["nova_providernet"] = self.get_nova_data() + context = super(DatanetDetailView, self).get_context_data(**kwargs) + context["datanet"] = self.get_data() + context["nova_datanet"] = self.get_nova_data() return context def get_data(self): - if not hasattr(self, "_providernet"): + if not hasattr(self, "_datanet"): try: - providernet_id = self.kwargs['providernet_id'] - providernet = stx_api.sysinv.data_network_get( - self.request, providernet_id) + datanet_id = self.kwargs['datanet_id'] + datanet = stx_api.sysinv.data_network_get( + self.request, datanet_id) alarms = stx_api.fm.alarm_list(self.request) # Filter out unrelated alarms - providernet.alarms = \ + datanet.alarms = \ topology_tabs.get_alarms_for_entity(alarms, - providernet.id) + \ + datanet.id) + \ topology_tabs.get_alarms_for_entity(alarms, - providernet.name) + datanet.name) # Sort alarms by severity - providernet.alarms.sort(key=lambda a: (a.severity)) + datanet.alarms.sort(key=lambda a: (a.severity)) except Exception: redirect = self.failure_url exceptions.handle(self.request, _('Unable to retrieve details for ' - 'provider network "%s".') % providernet_id, + 'provider network "%s".') % datanet_id, redirect=redirect) - self._providernet = providernet - return self._providernet + self._datanet = datanet + return self._datanet def get_nova_data(self): - if not hasattr(self, "_providernet_nova"): - # TODO(datanetworks): depends on upstream support - self._providernet_nova = None - return self._providernet_nova + if not hasattr(self, "_datanet_nova"): + # TODO(datanetworks): depends on upstream support for + # nova providernet-show + self._datanet_nova = None + return self._datanet_nova def get_tabs(self, request, *args, **kwargs): - providernet = self.get_data() - nova_providernet = self.get_nova_data() + datanet = self.get_data() + nova_datanet = self.get_nova_data() return self.tab_group_class( - request, providernet=providernet, - nova_providernet=nova_providernet, **kwargs) + request, datanet=datanet, + nova_datanet=nova_datanet, **kwargs) class HostTopologyView(views.HorizonTemplateView): @@ -131,9 +132,6 @@ class HostTopologyView(views.HorizonTemplateView): def get_context_data(self, **kwargs): context = super(HostTopologyView, self).get_context_data(**kwargs) - context['launch_instance_allowed'] = self._has_permission( - (("compute", "compute:create"),)) - context['instance_quota_exceeded'] = self._quota_exceeded('instances') return context @@ -206,18 +204,18 @@ class JSONView(View): data.append(host_data) return data - def _get_pnets(self, request): - pnets = [] + def _get_dnets(self, request): + dnets = [] try: - pnets = stx_api.sysinv.data_network_list(request) + dnets = stx_api.sysinv.data_network_list(request) except Exception as ex: exceptions.handle(ex) - data = [p.to_dict() for p in pnets] + data = [p.to_dict() for p in dnets] return data def get(self, request, *args, **kwargs): data = {'hosts': self._get_hosts(request), - 'networks': self._get_pnets(request), + 'networks': self._get_dnets(request), 'alarms': self._get_alarms(request), } json_string = json.dumps(data, ensure_ascii=False) return HttpResponse(json_string, content_type='text/json') diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/js/horizon.hosttopology.js b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/js/horizon.hosttopology.js index f7adc0fa..b47ee774 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/js/horizon.hosttopology.js +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/js/horizon.hosttopology.js @@ -109,7 +109,7 @@ horizon.host_topology = { $(this).toggle(show_entry); }); }); - // Initialize providernet list sorting behaviour + // Initialize datanet list sorting behaviour $('#network_list_search').keyup(function(){ var text = $(this).val().toLowerCase(); $('#network_list > a').each(function(){ @@ -183,23 +183,23 @@ horizon.host_topology = { }); host.connections = []; - // 'expand' a single IF connected to many pnets into multiple 'connections' + // 'expand' a single IF connected to many dnets into multiple 'connections' $.each(host.interfaces, function(index, interface) { var if_connections = [] - if (interface.datanetworks_csv) { - $.each(interface.datanetworks_csv.split(','), function(index, providernet_name) { + if (interface.datanetworks) { + $.each(interface.datanetworks, function(index, datanet_name) { var connection = {} // Attach the interface to the connection connection.interface = interface; - // Loop through networks and attach the full pnet to the connection - $.each(model.networks, function(index, providernet){ - if (providernet_name == providernet.name) { - connection.providernet = providernet; + // Loop through networks and attach the full dnet to the connection + $.each(model.networks, function(index, datanet){ + if (datanet_name == datanet.name) { + connection.datanet = datanet; } }); - connection.id = interface.ifname + "-" + providernet_name; + connection.id = interface.ifname + "-" + datanet_name; // search for and attach lldp info for the port connection.lldp_labels = []; @@ -233,7 +233,7 @@ horizon.host_topology = { var hasconns = (host.connections.length <= 0) ? false : true; main_connection = self.select_main_connection(host.connections); - host.parent_network = (hasconns) ? main_connection.providernet.id : self.model.networks[0].id; + host.parent_network = (hasconns) ? main_connection.datanet.id : self.model.networks[0].id; var height = element_properties.conn_margin*(host.connections.length - 1); host.lldp_heights = []; $.each(host.connections,function(index, connection) { @@ -303,10 +303,10 @@ horizon.host_topology = { network.hosts.push(host); } - // Add any hosts with a connection to this pnet (for use in list linking) - // And propagate the pnet's alarm status to the connection + // Add any hosts with a connection to this dnet (for use in list linking) + // And propagate the dnet's alarm status to the connection $.each(host.connections,function(index, connection) { - if (connection.providernet.name === network.name){ + if (connection.datanet.name === network.name){ network.connected_hosts.push(host); if (network.alarm_level > connection.alarm_level) connection.alarm_level = network.alarm_level; @@ -348,8 +348,8 @@ horizon.host_topology = { self.network_height = (self.network_height > element_properties.network_min_height) ? self.network_height : element_properties.network_min_height; - //console.log(model); - self.draw_topology(); + // console.log(model); // Uncomment for console debug logs + self.draw_topology(); self.$loading_template.hide(); }, load_detail:function(spin){ @@ -403,7 +403,7 @@ horizon.host_topology = { } }); }); - // Special functionality on loaded providernet detail view + // Special functionality on loaded datanet detail view this.$detail_view.find('table#provider_network_ranges tr:not(:first):not(:last)').each(function(i,d) { $.each(self.selected_entity.alarms, function(index, alarm) { $(d).removeClass('status_down') @@ -419,7 +419,7 @@ horizon.host_topology = { if (alarm.alarm_id !== self.segment_alarm_id) return false; // Unrelated alarm if (alarm.reason_text.indexOf("ranges") == -1) - return false; // Generic providernetwork alarm, for flat networks + return false; // Generic datanetwork alarm, for flat networks // Retrieve the csv (with spaces) of failed segment ranges desc = alarm.reason_text.substring(alarm.reason_text.indexOf("ranges")+7, alarm.reason_text.indexOf(" on host")); @@ -462,7 +462,7 @@ horizon.host_topology = { } entry.addClass('active'); $.each(host.connections, function(index, connection) { - connected_entry = $('#network_list a#net-'+connection.providernet.name); + connected_entry = $('#network_list a#net-'+connection.datanet.name); connected_entry.addClass('related'); connected_entry.prependTo('#network_list'); }); @@ -494,7 +494,7 @@ horizon.host_topology = { connected_entry.prependTo('#host_list'); }); - self.detail_url = $(location).attr('href')+network.id+"/providernet/" + self.detail_url = $(location).attr('href')+network.id+"/datanet/" $.each(self.model.networks, function(index, model_network) { if (model_network.name === network.name) self.selected_entity = model_network; @@ -653,7 +653,7 @@ horizon.host_topology = { .select('.network-name') .text(function(d) { return d.name; }); - // Set the alarm styles for the providernet + // Set the alarm styles for the datanet network.each(function(d) { if (d.alarm_level) { d3.select(this).select('.network-rect-hash').attr('visibility','visible'); @@ -774,7 +774,7 @@ horizon.host_topology = { port.each(function(d,i){ var index_diff = self.get_network_index(this.parentNode._portdata.parent_network) - - self.get_network_index(d.providernet.id); + self.get_network_index(d.datanet.id); this._index_diff = index_diff = (index_diff >= 0)? ++index_diff : index_diff; this._direction = (this._index_diff < 0)? 'right' : 'left'; this._index = this.parentNode._portdata[this._direction] ++; @@ -803,7 +803,7 @@ horizon.host_topology = { return this.parentNode.parentNode._portdata.port_height; }) .attr('stroke', function(d, i) { - return self.get_network_color(d.providernet.id); + return self.get_network_color(d.datanet.id); }) .attr('x1',0).attr('y1',0).attr('y2',0) .attr('x2',function(d,i) { @@ -925,7 +925,7 @@ horizon.host_topology = { var MAX_INT = 4294967295; var min_conn_length = MAX_INT; $.each(connections, function(index, connection){ - var conn_length = _self.sum_conn_length(connection.providernet, connections); + var conn_length = _self.sum_conn_length(connection.datanet, connections); if(conn_length < min_conn_length){ min_conn_length = conn_length; main_conn_index = index; @@ -933,12 +933,12 @@ horizon.host_topology = { }); return connections[main_conn_index]; }, - sum_conn_length: function(providernet, connections){ + sum_conn_length: function(datanet, connections){ var self = this; var sum_conn_length = 0; - var base_index = self.get_network_index(providernet.id); + var base_index = self.get_network_index(datanet.id); $.each(connections, function(index, connection){ - sum_conn_length += base_index - self.get_network_index(connection.providernet.id); + sum_conn_length += base_index - self.get_network_index(connection.datanet.id); }); return sum_conn_length; },