From 2c4f8a48a438e57899f055242541b92211742b44 Mon Sep 17 00:00:00 2001 From: John Kung Date: Thu, 24 Jan 2019 09:49:31 -0500 Subject: [PATCH] Create DataNetworks modelling in System Configuration Introduce stx-gui updates to enable DataNetwork modelling of the physical data network in sysinv. This is part of the Story to "Move neutron provider network modelling to system configuration". This is an initial update to enable Interfaces, Data Networks and Data Network Topology panels. Pending Stein spec support for network-segment-range-mangement, the following GUI features are not currently supported: Segmentation Ranges Tenant Networks The following GUI panels are updated: Host Inventory - Interfaces Data Networks ( /admin/datanets; previously /admin/providernets) Data Network Topology Tests Performed: Data Network create, modify for network_type flat, vlan. vxlan excluded in this GUI commit. Data Network delete, modify Data Network Topology - basic navigation to panel Interface Profile create and apply Sanity Story: 2004455 Task: 28325 Depends-On: https://review.openstack.org/#/c/631701/ Change-Id: I46db5b5d47a9920f21db0521a8f5fbe4213b8af3 Signed-off-by: John Kung --- starlingx-dashboard/centos/build_srpm.data | 2 +- .../starlingx_dashboard/api/sysinv.py | 67 +++++++- .../{providernets => datanets}/__init__.py | 0 .../datanets}/__init__.py | 0 .../admin/datanets/datanets/forms.py | 147 ++++++++++++++++ .../datanets}/ranges/__init__.py | 0 .../datanets}/ranges/forms.py | 10 +- .../datanets}/ranges/tables.py | 16 +- .../datanets}/ranges/tabs.py | 4 +- .../datanets}/ranges/urls.py | 4 +- .../datanets}/ranges/views.py | 24 +-- .../datanets}/tables.py | 98 +++++------ .../datanets}/urls.py | 10 +- .../datanets}/views.py | 83 ++++----- .../admin/{providernets => datanets}/panel.py | 10 +- .../admin/{providernets => datanets}/tabs.py | 31 ++-- .../datanets/datanets}/_add_range.html | 2 +- .../templates/datanets/datanets}/_create.html | 6 +- .../datanets/datanets}/_detail_overview.html | 4 +- .../templates/datanets/datanets}/_update.html | 6 +- .../datanets/datanets}/add_range.html | 2 +- .../templates/datanets/datanets}/create.html | 6 +- .../templates/datanets/datanets}/detail.html | 4 +- .../datanets/datanets}/ranges/_create.html | 2 +- .../datanets}/ranges/_detail_overview.html | 2 +- .../datanets/datanets}/ranges/_update.html | 2 +- .../datanets/datanets}/ranges/_vxlan.html | 0 .../datanets/datanets}/ranges/create.html | 2 +- .../datanets/datanets}/ranges/detail.html | 0 .../datanets/datanets}/ranges/update.html | 6 +- .../templates/datanets/datanets}/update.html | 6 +- .../templates/datanets}/tabs.html | 4 +- .../admin/{providernets => datanets}/urls.py | 10 +- .../admin/{providernets => datanets}/views.py | 8 +- .../dashboards/admin/host_topology/panel.py | 4 +- .../dashboards/admin/host_topology/tables.py | 4 +- .../dashboards/admin/host_topology/tabs.py | 18 +- .../templates/host_topology/_svg_element.html | 4 +- .../host_topology/detail/providernet.html | 2 +- .../host_topology/detail/tabbed_detail.html | 2 +- .../templates/host_topology/index.html | 2 +- .../dashboards/admin/host_topology/views.py | 23 +-- .../admin/inventory/interfaces/forms.py | 103 ++++++------ .../admin/inventory/interfaces/tables.py | 4 +- .../admin/inventory/interfaces/views.py | 16 +- .../_interfaceprofiles_interfaceconfig.html | 2 +- .../inventory/interfaces/_createprofile.html | 2 +- .../interfaces/_detail_overview.html | 4 +- .../admin/providernets/providernets/forms.py | 157 ------------------ .../_2036_starlingx_admin_providernets.py | 4 +- .../static/js/horizon.hosttopology.js | 4 +- 51 files changed, 463 insertions(+), 470 deletions(-) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets => datanets}/__init__.py (100%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/providernets => datanets/datanets}/__init__.py (100%) create mode 100755 starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/forms.py rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/providernets => datanets/datanets}/ranges/__init__.py (100%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/providernets => datanets/datanets}/ranges/forms.py (97%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/providernets => datanets/datanets}/ranges/tables.py (89%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/providernets => datanets/datanets}/ranges/tabs.py (90%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/providernets => datanets/datanets}/ranges/urls.py (86%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/providernets => datanets/datanets}/ranges/views.py (88%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/providernets => datanets/datanets}/tables.py (54%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/providernets => datanets/datanets}/urls.py (81%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/providernets => datanets/datanets}/views.py (60%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets => datanets}/panel.py (81%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets => datanets}/tabs.py (51%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/templates/providernets/providernets => datanets/templates/datanets/datanets}/_add_range.html (89%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/templates/providernets/providernets => datanets/templates/datanets/datanets}/_create.html (77%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/templates/providernets/providernets => datanets/templates/datanets/datanets}/_detail_overview.html (86%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/templates/providernets/providernets => datanets/templates/datanets/datanets}/_update.html (76%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/templates/providernets/providernets => datanets/templates/datanets/datanets}/add_range.html (81%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/templates/providernets/providernets => datanets/templates/datanets/datanets}/create.html (54%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/templates/providernets/providernets => datanets/templates/datanets/datanets}/detail.html (64%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/templates/providernets/providernets => datanets/templates/datanets/datanets}/ranges/_create.html (89%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/templates/providernets/providernets => datanets/templates/datanets/datanets}/ranges/_detail_overview.html (88%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/templates/providernets/providernets => datanets/templates/datanets/datanets}/ranges/_update.html (86%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/templates/providernets/providernets => datanets/templates/datanets/datanets}/ranges/_vxlan.html (100%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/templates/providernets/providernets => datanets/templates/datanets/datanets}/ranges/create.html (80%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/templates/providernets/providernets => datanets/templates/datanets/datanets}/ranges/detail.html (100%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/templates/providernets/providernets => datanets/templates/datanets/datanets}/ranges/update.html (51%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/templates/providernets/providernets => datanets/templates/datanets/datanets}/update.html (54%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets/templates/providernets => datanets/templates/datanets}/tabs.html (59%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets => datanets}/urls.py (50%) rename starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/{providernets => datanets}/views.py (56%) delete mode 100755 starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/forms.py diff --git a/starlingx-dashboard/centos/build_srpm.data b/starlingx-dashboard/centos/build_srpm.data index 38f9ad7e..f94364dd 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=24 +TIS_PATCH_VER=25 diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/api/sysinv.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/api/sysinv.py index 10b11ebe..a868aa5f 100644 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/api/sysinv.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/api/sysinv.py @@ -1935,7 +1935,7 @@ class Interface(base.APIResourceWrapper): _attrs = ['id', 'uuid', 'ifname', 'ifclass', 'iftype', 'imtu', 'imac', 'networktype', 'networks', 'aemode', 'txhashpolicy', 'vlan_id', - 'uses', 'used_by', 'ihost_uuid', 'providernetworks', + 'uses', 'used_by', 'ihost_uuid', 'datanetworks', 'ipv4_mode', 'ipv6_mode', 'ipv4_pool', 'ipv6_pool', 'sriov_numvfs'] @@ -1944,6 +1944,10 @@ class Interface(base.APIResourceWrapper): if not self.ifname: self.ifname = '(' + str(self.uuid)[-8:] + ')' + @property + def datanetworks_csv(self): + return ",".join(self.datanetworks) + def host_interface_list(request, host_id): interfaces = cgtsclient(request).iinterface.list(host_id) @@ -2578,3 +2582,64 @@ def is_system_k8s_aio(request): def is_host_with_storage(request, host_id): host = host_get(request, host_id) return 'storage' in host.subfunctions or is_system_k8s_aio(request) + + +class DataNetwork(base.APIResourceWrapper): + """...""" + + _attrs = ['id', 'uuid', 'network_type', 'name', 'mtu', 'description', + 'multicast_group', 'port_num', 'ttl', 'mode'] + + def __init__(self, apiresource): + super(DataNetwork, self).__init__(apiresource) + + +DATANETWORK_TYPE_FLAT = "flat" +DATANETWORK_TYPE_VLAN = "vlan" +DATANETWORK_TYPE_VXLAN = "vxlan" + +data_network_type_choices_list = [ + (DATANETWORK_TYPE_FLAT, DATANETWORK_TYPE_FLAT), + (DATANETWORK_TYPE_VLAN, DATANETWORK_TYPE_VLAN), + (DATANETWORK_TYPE_VXLAN, DATANETWORK_TYPE_VXLAN), +] + + +def data_network_type_choices(): + return data_network_type_choices_list + + +def data_network_create(request, **kwargs): + LOG.info("data_network_create(): kwargs=%s", kwargs) + datanet = cgtsclient(request).datanetwork.create(**kwargs) + return DataNetwork(datanet) + + +def data_network_list(request): + datanets = cgtsclient(request).datanetwork.list() + return [DataNetwork(n) for n in datanets] + + +def data_network_get(request, datanet_id): + datanet = cgtsclient(request).datanetwork.get(datanet_id) + if not datanet: + raise ValueError('No match found for datanet_id "%s".' % datanet_id) + return DataNetwork(datanet) + + +def data_network_modify(request, datanet_id, **kwargs): + LOG.info("data_network_modify(): datanet_id,=%s, kwargs=%s", + datanet_id, kwargs) + patch = [] + for key, value in kwargs.items(): + patch.append(dict(path='/' + key, value=value, op='replace')) + + datanet = cgtsclient(request).datanetwork.update(datanet_id, patch) + if not datanet: + raise ValueError('No match found for datanet_id "%s".' % datanet_id) + return DataNetwork(datanet) + + +def data_network_delete(request, datanet_id): + LOG.info("data_network_delete(): datanet_id=%s", datanet_id) + return cgtsclient(request).datanetwork.delete(datanet_id) diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/__init__.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/__init__.py similarity index 100% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/__init__.py rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/__init__.py diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/__init__.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/__init__.py similarity index 100% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/__init__.py rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/__init__.py 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 new file mode 100755 index 00000000..47c77189 --- /dev/null +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/forms.py @@ -0,0 +1,147 @@ +# Copyright 2012 NEC Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# Copyright (c) 2013-2019 Wind River Systems, Inc. +# + + +import logging + +from django.core.urlresolvers import reverse # noqa +from django.utils.translation import ugettext_lazy as _ # noqa + +from cgtsclient import exc as sysinv_exceptions + +from horizon import exceptions +from horizon import forms +from horizon import messages + +from starlingx_dashboard import api as stx_api + +LOG = logging.getLogger(__name__) + + +class CreateDataNetwork(forms.SelfHandlingForm): + name = forms.CharField(max_length=255, + label=_("Name"), + required=True) + 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, + initial=1500, + min_value=576, + max_value=9216, + help_text=( + _("Specifies the maximum MTU value of any associated tenant " + "network. Worker node data interface MTU values must be large " + "enough to support the tenant MTU plus any additional provider " + "encapsulation headers. For example, VXLAN provider MTU of " + "1500 requires a minimum data interface MTU of 1574 bytes (1600 " + "bytes is recommended."))) + + @classmethod + def _instantiate(cls, request, *args, **kwargs): + return cls(request, *args, **kwargs) + + def __init__(self, request, *args, **kwargs): + super(CreateDataNetwork, self).__init__(request, *args, **kwargs) + + datanet_type_choices = [('', _("Select a network type"))] + datanet_choices_list = stx_api.sysinv.data_network_type_choices() + for datanet_choices_tuple in datanet_choices_list: + datanet_type_choices.append(datanet_choices_tuple) + + self.fields['network_type'].choices = datanet_type_choices + + def clean(self): + cleaned_data = super(CreateDataNetwork, self).clean() + if len(cleaned_data['name'].lstrip()) == 0: + raise forms.ValidationError('invalid data network name') + + return cleaned_data + + def handle(self, request, data): + try: + params = {'name': data['name'], + 'network_type': data['network_type'], + 'description': data['description'], + 'mtu': data['mtu']} + + network = stx_api.sysinv.data_network_create(request, + **params) + msg = (_('Data network %s was successfully created.') % + data['name']) + LOG.info(msg) + messages.success(request, msg) + return network + except sysinv_exceptions.CgtsclientException as e: + redirect = reverse('horizon:admin:datanets:index') + exceptions.handle(request, str(e), redirect=redirect) + except Exception: + redirect = reverse('horizon:admin:datanets:index') + msg = _('Failed to create data network %s') % data['name'] + exceptions.handle(request, msg, redirect=redirect) + + +class UpdateDataNetwork(forms.SelfHandlingForm): + name = forms.CharField(label=_("Name"), required=False, + widget=forms.TextInput( + attrs={'readonly': 'readonly'})) + network_type = forms.CharField(label=_("Type"), required=False, + widget=forms.TextInput( + attrs={'readonly': 'readonly'})) + id = forms.CharField(widget=forms.HiddenInput) + + # Mutable fields + description = forms.CharField(label=_("Description"), required=False) + mtu = forms.IntegerField(label=_("MTU"), + required=True, + initial=1500, + min_value=576, + max_value=9216, + help_text=(_("Specifies the minimum interface " + "MTU required to support this " + "data network "))) + + failure_url = 'horizon:admin:datanets:index' + + def handle(self, request, data): + try: + if not data['description']: + data['description'] = '_' + params = {'description': data['description'], + 'mtu': data['mtu']} + + providernet = 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 + except sysinv_exceptions.CgtsclientException as e: + msg = _('Failed to update data network %s') % data['name'] + LOG.info(msg) + redirect = reverse(self.failure_url) + exceptions.handle(request, str(e), redirect=redirect) + except Exception: + msg = _('Failed to update data network %s') % data['name'] + LOG.info(msg) + redirect = reverse(self.failure_url) + exceptions.handle(request, msg, redirect=redirect) diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/ranges/__init__.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/ranges/__init__.py similarity index 100% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/ranges/__init__.py rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/ranges/__init__.py diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/ranges/forms.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/ranges/forms.py similarity index 97% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/ranges/forms.py rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/ranges/forms.py index 20bb226d..d8147bf1 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/ranges/forms.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/ranges/forms.py @@ -12,7 +12,7 @@ # License for the specific language governing permissions and limitations # under the License. # -# Copyright (c) 2013-2018 Wind River Systems, Inc. +# Copyright (c) 2013-2019 Wind River Systems, Inc. # @@ -146,7 +146,7 @@ class CreateProviderNetworkRange(forms.SelfHandlingForm): return providernet_range except neutron_exceptions.NeutronClientException as e: LOG.info(str(e)) - redirect = reverse('horizon:admin:providernets:providernets:' + redirect = reverse('horizon:admin:datanets:datanets:' 'detail', args=(data['providernet_id'],)) exceptions.handle(request, str(e), redirect=redirect) @@ -155,7 +155,7 @@ class CreateProviderNetworkRange(forms.SelfHandlingForm): ' network range for network %s') \ % data['providernet_id'] LOG.info(msg) - redirect = reverse('horizon:admin:providernets:providernets:' + redirect = reverse('horizon:admin:datanets:datanets:' 'detail', args=(data['providernet_id'],)) exceptions.handle(request, msg, redirect=redirect) @@ -170,7 +170,7 @@ class CreateProviderNetworkRange(forms.SelfHandlingForm): class UpdateProviderNetworkRange(forms.SelfHandlingForm): - failure_url = 'horizon:admin:providernets:providernets:detail' + failure_url = 'horizon:admin:datanets:datanets:detail' providernet_id = forms.CharField(widget=forms.HiddenInput()) providernet_range_id = forms.CharField(widget=forms.HiddenInput()) name = forms.CharField(max_length=255, @@ -237,7 +237,7 @@ class UpdateProviderNetworkRange(forms.SelfHandlingForm): return providernet_range except neutron_exceptions.NeutronClientException as e: LOG.info(str(e)) - redirect = reverse('horizon:admin:providernets:providernets:' + redirect = reverse('horizon:admin:datanets:datanets:' 'detail', args=(data['providernet_id'],)) exceptions.handle(request, str(e), redirect=redirect) diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/ranges/tables.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/ranges/tables.py similarity index 89% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/ranges/tables.py rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/ranges/tables.py index 716c5d10..449b1c7e 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/ranges/tables.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/ranges/tables.py @@ -12,7 +12,7 @@ # License for the specific language governing permissions and limitations # under the License. # -# Copyright (c) 2013-2018 Wind River Systems, Inc. +# Copyright (c) 2013-2019 Wind River Systems, Inc. # @@ -52,7 +52,7 @@ class DeleteProviderNetworkRange(tables.DeleteAction): def get_redirect_url(self): providernet_id = self.table.kwargs['providernet_id'] - return reverse('horizon:admin:providernets:providernets:detail', + return reverse('horizon:admin:datanets:datanets:detail', args=(providernet_id,)) def delete(self, request, obj_id): @@ -72,7 +72,7 @@ class DeleteProviderNetworkRange(tables.DeleteAction): class CreateProviderNetworkRange(tables.LinkAction): name = "create" verbose_name = _("Create Range") - url = "horizon:admin:providernets:providernets:createrange" + url = "horizon:admin:datanets:datanets:createrange" classes = ("ajax-modal", "btn-create") def get_link_url(self, datum=None): @@ -80,16 +80,14 @@ class CreateProviderNetworkRange(tables.LinkAction): return reverse(self.url, args=(providernet_id,)) def allowed(self, request, datum=None): - providernet = self.table.kwargs.get('providernet') - if providernet: - return (providernet.type not in ('flat')) - return True + # TODO(datanetworks): depends on spec network-segment-range-management + return False class EditProviderNetworkRange(tables.LinkAction): name = "update" verbose_name = _("Edit Range") - url = "horizon:admin:providernets:providernets:editrange" + url = "horizon:admin:datanets:datanets:editrange" classes = ("ajax-modal", "btn-edit") def get_link_url(self, providernet_range): @@ -113,7 +111,7 @@ class ProviderNetworkRangeTable(tables.DataTable): tenant = tables.Column("tenant_name", verbose_name=_("Project")) shared = tables.Column("shared", verbose_name=_("Shared"), filters=(filters.yesno, filters.capfirst)) - url = "horizon:admin:providernets:providernets:ranges:detail" + url = "horizon:admin:datanets:datanets:ranges:detail" name = tables.Column("name", verbose_name=_("Name"), link=url) minimum = tables.Column("minimum", verbose_name=_("Minimum")) maximum = tables.Column("maximum", verbose_name=_("Maximum")) diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/ranges/tabs.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/ranges/tabs.py similarity index 90% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/ranges/tabs.py rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/ranges/tabs.py index 7b32947e..ee12a416 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/ranges/tabs.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/ranges/tabs.py @@ -12,7 +12,7 @@ # License for the specific language governing permissions and limitations # under the License. # -# Copyright (c) 2013-2018 Wind River Systems, Inc. +# Copyright (c) 2013-2019 Wind River Systems, Inc. # from django.utils.translation import ugettext_lazy as _ # noqa @@ -23,7 +23,7 @@ from horizon import tabs class OverviewTab(tabs.Tab): name = _("Overview") slug = "overview" - template_name = "admin/providernets/providernets/ranges/" \ + template_name = "admin/datanets/datanets/ranges/" \ "_detail_overview.html" def get_context_data(self, request): diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/ranges/urls.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/ranges/urls.py similarity index 86% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/ranges/urls.py rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/ranges/urls.py index cffc7117..7f82cba4 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/ranges/urls.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/ranges/urls.py @@ -12,13 +12,13 @@ # License for the specific language governing permissions and limitations # under the License. # -# Copyright (c) 2013-2018 Wind River Systems, Inc. +# Copyright (c) 2013-2019 Wind River Systems, Inc. # from django.conf.urls import url # noqa -from starlingx_dashboard.dashboards.admin.providernets.providernets.ranges \ +from starlingx_dashboard.dashboards.admin.datanets.datanets.ranges \ import views RANGES = r'^(?P[^/]+)/%s$' diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/ranges/views.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/ranges/views.py similarity index 88% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/ranges/views.py rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/ranges/views.py index 6bba83ba..687dd59f 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/ranges/views.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/ranges/views.py @@ -12,7 +12,7 @@ # License for the specific language governing permissions and limitations # under the License. # -# Copyright (c) 2013-2018 Wind River Systems, Inc. +# Copyright (c) 2013-2019 Wind River Systems, Inc. # @@ -25,17 +25,17 @@ from horizon import tabs from horizon.utils import memoized from starlingx_dashboard import api as stx_api -from starlingx_dashboard.dashboards.admin.providernets.providernets.ranges \ +from starlingx_dashboard.dashboards.admin.datanets.datanets.ranges \ import forms as range_forms -from starlingx_dashboard.dashboards.admin.providernets.providernets.ranges \ +from starlingx_dashboard.dashboards.admin.datanets.datanets.ranges \ import tabs as range_tabs class CreateView(forms.ModalFormView): form_class = range_forms.CreateProviderNetworkRange - template_name = 'admin/providernets/providernets/ranges/create.html' - success_url = 'horizon:admin:providernets:providernets:detail' - failure_url = 'horizon:admin:providernets:providernets:detail' + template_name = 'admin/datanets/datanets/ranges/create.html' + success_url = 'horizon:admin:datanets:datanets:detail' + failure_url = 'horizon:admin:datanets:datanets:detail' def get_success_url(self): return reverse(self.success_url, @@ -73,7 +73,7 @@ class CreateView(forms.ModalFormView): class DetailView(tabs.TabView): tab_group_class = range_tabs.ProviderNetworkRangeDetailTabs - template_name = 'admin/providernets/providernets/ranges/detail.html' + template_name = 'admin/datanets/datanets/ranges/detail.html' page_title = '{{ providernet_range.name }}' def _get_object(self): @@ -85,7 +85,7 @@ class DetailView(tabs.TabView): self.request, providernet_range_id) except Exception: redirect = \ - reverse("horizon:admin:providernets:providernets:detail", + reverse("horizon:admin:datanets:datanets:detail", args=( self.kwargs['providernet_id'],)) msg = _('Unable to retrieve provider network range details') @@ -99,7 +99,7 @@ class DetailView(tabs.TabView): pnet_name = self.get_providernet_name(providernet_range.providernet_id) breadcrumb = [ (pnet_name, - reverse('horizon:admin:providernets:providernets:detail', + reverse('horizon:admin:datanets:datanets:detail', args=(providernet_range.providernet_id,))), (_("Segmentation Ranges"), None) ] @@ -128,9 +128,9 @@ class DetailView(tabs.TabView): class UpdateView(forms.ModalFormView): form_class = range_forms.UpdateProviderNetworkRange - template_name = 'admin/providernets/providernets/ranges/update.html' + template_name = 'admin/datanets/datanets/ranges/update.html' context_object_name = 'providernet_range' - success_url = 'horizon:admin:providernets:providernets:detail' + success_url = 'horizon:admin:datanets:datanets:detail' def get_success_url(self): value = reverse(self.success_url, @@ -145,7 +145,7 @@ class UpdateView(forms.ModalFormView): self.request, providernet_range_id) except Exception: redirect = \ - reverse("horizon:admin:providernets:providernets:detail", + reverse("horizon:admin:datanets:datanets:detail", args=(self.kwargs['providernet_id'],)) msg = _('Unable to retrieve provider network range details') exceptions.handle(self.request, msg, redirect=redirect) diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/tables.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/tables.py similarity index 54% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/tables.py rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/tables.py index 1c646483..e024e746 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/tables.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/tables.py @@ -12,12 +12,11 @@ # License for the specific language governing permissions and limitations # under the License. # -# Copyright (c) 2013-2018 Wind River Systems, Inc. +# Copyright (c) 2013-2019 Wind River Systems, Inc. # import logging -from operator import itemgetter # noqa from django.core.urlresolvers import reverse # noqa from django.utils.translation import ugettext_lazy as _ # noqa @@ -26,120 +25,103 @@ from django.utils.translation import ungettext_lazy from horizon import exceptions from horizon import tables -from neutronclient.common import exceptions as neutron_exceptions +from cgtsclient import exc as sysinv_exceptions from starlingx_dashboard import api as stx_api LOG = logging.getLogger(__name__) -class DeleteProviderNetwork(tables.DeleteAction): +class DeleteDataNetwork(tables.DeleteAction): @staticmethod def action_present(count): return ungettext_lazy( - "Delete Provider Network", - "Delete Provider Networks", + "Delete Data Network", + "Delete Data Networks", count ) @staticmethod def action_past(count): return ungettext_lazy( - "Deleted Provider Network", - "Deleted Provider Networks", + "Deleted Data Network", + "Deleted Data Networks", count ) def delete(self, request, obj_id): try: - stx_api.neutron.provider_network_delete(request, obj_id) - except neutron_exceptions.NeutronClientException as e: + stx_api.sysinv.data_network_delete(request, obj_id) + except sysinv_exceptions.CgtsclientException as e: LOG.info(str(e)) - redirect = reverse('horizon:admin:providernets:index') + redirect = reverse('horizon:admin:datanets:index') exceptions.handle(request, str(e), redirect=redirect) except Exception: - msg = _('Failed to delete provider network %s') % obj_id + msg = _('Failed to delete data network %s') % obj_id LOG.info(msg) - redirect = reverse('horizon:admin:providernets:index') + redirect = reverse('horizon:admin:datanets:index') exceptions.handle(request, msg, redirect=redirect) -class CreateProviderNetwork(tables.LinkAction): +class CreateDataNetwork(tables.LinkAction): name = "create" - verbose_name = _("Create Provider Network") - url = "horizon:admin:providernets:providernets:create" + verbose_name = _("Create Data Network") + url = "horizon:admin:datanets:datanets:create" classes = ("ajax-modal", "btn-create") -class EditProviderNetwork(tables.LinkAction): +class EditDataNetwork(tables.LinkAction): name = "update" - verbose_name = _("Edit Provider Network") - url = "horizon:admin:providernets:providernets:update" + verbose_name = _("Edit Data Network") + url = "horizon:admin:datanets:datanets:update" classes = ("ajax-modal", "btn-edit") -class AddProviderNetworkRange(tables.LinkAction): +class AddDataNetworkRange(tables.LinkAction): name = "addrange" verbose_name = _("Create Segmentation Range") - url = "horizon:admin:providernets:providernets:addrange" + url = "horizon:admin:datanets:datanets:addrange" classes = ("ajax-modal", "btn-edit") def allowed(self, request, providernet): if providernet: - return providernet.type not in ('flat') - return super(AddProviderNetworkRange, self).allowed(request, - providernet) + return providernet.network_type not in ('flat') + return super(AddDataNetworkRange, self).allowed(request, + providernet) -class ProviderNetworksFilterAction(tables.FilterAction): - def filter(self, table, providernets, filter_string): +class DataNetworksFilterAction(tables.FilterAction): + def filter(self, table, datanets, filter_string): """Naive case-insensitive search.""" q = filter_string.lower() - return [providernet for providernet in providernets + return [providernet for providernet in datanets if q in providernet.name.lower()] def _format_providernet_ranges(data): - ranges = data['ranges'] - if not ranges: - return '-' - return ", ".join(["{}-{}".format(r['minimum'], r['maximum']) - if r['minimum'] != r['maximum'] - else "{}".format(r['minimum']) - for r in sorted(ranges, key=itemgetter('minimum'))]) + # TODO(datanetworks): update ranges based upon Stein spec + return '-' -PROVIDERNET_STATUS_CHOICES = ( - ('active', True), - ('down', False), - ('error', False), - ('unmanaged', True) -) - - -class ProviderNetworksTable(tables.DataTable): +class DataNetworksTable(tables.DataTable): name = tables.Column("name", verbose_name=_("Network Name"), - link='horizon:admin:providernets:providernets:detail') - status = tables.Column("status", - verbose_name=_("Status"), - status=True, - status_choices=PROVIDERNET_STATUS_CHOICES) - type = tables.Column("type", verbose_name=_("Type")) + link='horizon:admin:datanets:datanets:detail') + type = tables.Column("network_type", verbose_name=_("Type")) mtu = tables.Column("mtu", verbose_name=_("MTU")) ranges = tables.Column(transform=_format_providernet_ranges, verbose_name=_("Segmentation Ranges")) - vlan_transparent = tables.Column("vlan_transparent", - verbose_name=_("VLAN Transparent")) + + def get_object_id(self, datum): + return str(datum.uuid) class Meta(object): name = "provider_networks" - verbose_name = _("Provider Networks") - status_columns = ["status"] - table_actions = (CreateProviderNetwork, DeleteProviderNetwork, - ProviderNetworksFilterAction) - row_actions = (EditProviderNetwork, - DeleteProviderNetwork, - AddProviderNetworkRange) + verbose_name = _("Data Networks") + table_actions = (CreateDataNetwork, DeleteDataNetwork, + DataNetworksFilterAction) + row_actions = (EditDataNetwork, + DeleteDataNetwork, + AddDataNetworkRange) def _get_link_url(datum): diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/urls.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/urls.py similarity index 81% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/urls.py rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/urls.py index 81ebffe0..897e8786 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/urls.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/urls.py @@ -12,22 +12,22 @@ # License for the specific language governing permissions and limitations # under the License. # -# Copyright (c) 2013-2015 Wind River Systems, Inc. +# Copyright (c) 2013-2019 Wind River Systems, Inc. # from django.conf.urls import include # noqa from django.conf.urls import url # noqa -from starlingx_dashboard.dashboards.admin.providernets.providernets.ranges \ +from starlingx_dashboard.dashboards.admin.datanets.datanets.ranges \ import urls as range_urls -from starlingx_dashboard.dashboards.admin.providernets.providernets.ranges \ +from starlingx_dashboard.dashboards.admin.datanets.datanets.ranges \ import views as range_views -from starlingx_dashboard.dashboards.admin.providernets.providernets import \ +from starlingx_dashboard.dashboards.admin.datanets.datanets import \ views PROVIDERNETS = r'^(?P[^/]+)/%s$' -VIEW_MOD = 'starlingx_dashboard.dashboards.admin.providernets.providernets.' \ +VIEW_MOD = 'starlingx_dashboard.dashboards.admin.datanets.datanets.' \ 'views' urlpatterns = [ diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/views.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/views.py similarity index 60% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/views.py rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/views.py index fa222bbd..97038c78 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/views.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/datanets/views.py @@ -12,7 +12,7 @@ # License for the specific language governing permissions and limitations # under the License. # -# Copyright (c) 2013-2014 Wind River Systems, Inc. +# Copyright (c) 2013-2019 Wind River Systems, Inc. # @@ -30,30 +30,30 @@ from horizon import tables from openstack_dashboard import api from starlingx_dashboard import api as stx_api -from starlingx_dashboard.dashboards.admin.providernets.providernets import \ - forms as providernet_forms -from starlingx_dashboard.dashboards.admin.providernets.providernets.ranges \ +from starlingx_dashboard.dashboards.admin.datanets.datanets import \ + forms as datanet_forms +from starlingx_dashboard.dashboards.admin.datanets.datanets.ranges \ import tables as range_tables -from starlingx_dashboard.dashboards.admin.providernets.providernets.ranges \ +from starlingx_dashboard.dashboards.admin.datanets.datanets.ranges \ import views as range_views -from starlingx_dashboard.dashboards.admin.providernets.providernets import \ +from starlingx_dashboard.dashboards.admin.datanets.datanets import \ tables as providernet_tables LOG = logging.getLogger(__name__) class CreateView(forms.ModalFormView): - form_class = providernet_forms.CreateProviderNetwork - template_name = 'admin/providernets/providernets/create.html' - success_url = reverse_lazy('horizon:admin:providernets:index') + form_class = datanet_forms.CreateDataNetwork + template_name = 'admin/datanets/datanets/create.html' + success_url = reverse_lazy('horizon:admin:datanets:index') class DetailView(tables.MultiTableView): table_classes = (range_tables.ProviderNetworkRangeTable, providernet_tables.ProviderNetworkTenantNetworkTable) - template_name = 'admin/providernets/providernets/detail.html' - failure_url = reverse_lazy('horizon:admin:providernets:index') - page_title = '{{ "Provider Network Detail: "|add:providernet.name }}' + template_name = 'admin/datanets/datanets/detail.html' + failure_url = reverse_lazy('horizon:admin:datanets:index') + page_title = '{{ "Data Network Detail: "|add:providernet.name }}' def _get_tenant_list(self): if not hasattr(self, "_tenants"): @@ -69,10 +69,8 @@ class DetailView(tables.MultiTableView): def get_tenant_networks_data(self): try: - providernet_id = self.kwargs['providernet_id'] - # self.table.kwargs['providernet'] = self._get_data() - networks = stx_api.neutron.provider_network_list_tenant_networks( - self.request, providernet_id=providernet_id) + # TODO(datanetworks): get tenant networks when in upstream neutron + networks = [] except Exception: networks = [] msg = _('Tenant network list can not be retrieved.') @@ -81,10 +79,8 @@ class DetailView(tables.MultiTableView): def get_provider_network_ranges_data(self): try: - providernet_id = self.kwargs['providernet_id'] - # self.table.kwargs['providernet'] = self._get_data() - ranges = stx_api.neutron.provider_network_range_list( - self.request, providernet_id=providernet_id) + # TODO(datanetworks) force ranges to [] + ranges = [] except Exception: ranges = [] msg = _('Segmentation id range list can not be retrieved.') @@ -101,9 +97,8 @@ class DetailView(tables.MultiTableView): if not hasattr(self, "_providernet"): try: providernet_id = self.kwargs['providernet_id'] - providernet = stx_api.neutron.provider_network_get( + providernet = stx_api.sysinv.data_network_get( self.request, providernet_id) - providernet.set_id_as_name_if_empty(length=0) except Exception: redirect = self.failure_url exceptions.handle(self.request, @@ -115,20 +110,8 @@ class DetailView(tables.MultiTableView): def _get_nova_data(self): if not hasattr(self, "_providernet_nova"): - try: - providernet_id = self.kwargs['providernet_id'] - providernet_nova = stx_api.nova.provider_network_get( - self.request, providernet_id) - except Exception as ex: - # redirect = self.failure_url - # exceptions.handle(self.request, - # _('Unable to retrieve details for ' - # 'provider network "%s".') % providernet_id, - # redirect=redirect) - LOG.error(ex) - providernet_nova = None - - self._providernet_nova = providernet_nova + # TODO(datanetworks): depends on upstream support + self._providernet_nova = None return self._providernet_nova def get_context_data(self, **kwargs): @@ -139,9 +122,9 @@ class DetailView(tables.MultiTableView): class UpdateView(forms.ModalFormView): - form_class = providernet_forms.UpdateProviderNetwork - template_name = 'admin/providernets/providernets/update.html' - success_url = reverse_lazy('horizon:admin:providernets:index') + form_class = datanet_forms.UpdateDataNetwork + template_name = 'admin/datanets/datanets/update.html' + success_url = reverse_lazy('horizon:admin:datanets:index') def get_context_data(self, **kwargs): context = super(UpdateView, self).get_context_data(**kwargs) @@ -152,28 +135,28 @@ class UpdateView(forms.ModalFormView): if not hasattr(self, "_object"): providernet_id = self.kwargs['providernet_id'] try: - self._object = stx_api.neutron.provider_network_get( + self._object = stx_api.sysinv.data_network_get( self.request, providernet_id) except Exception: redirect = self.success_url - msg = _('Unable to retrieve provider network details.') + msg = _('Unable to retrieve data network details.') exceptions.handle(self.request, msg, redirect=redirect) return self._object def get_initial(self): providernet = self._get_object() - return {'id': providernet['id'], - 'name': providernet['name'], - 'description': providernet['description'], - 'type': providernet['type'], - 'mtu': providernet['mtu'], - 'vlan_transparent': providernet['vlan_transparent']} + return {'id': providernet.id, + 'name': providernet.name, + 'network_type': providernet.network_type, + 'mtu': providernet.mtu, + 'description': providernet.description, + } class CreateRangeView(range_views.CreateView): - template_name = 'admin/providernets/providernets/add_range.html' - success_url = 'horizon:admin:providernets:index' - failure_url = 'horizon:admin:providernets:index' + template_name = 'admin/datanets/datanets/add_range.html' + success_url = 'horizon:admin:datanets:index' + failure_url = 'horizon:admin:datanets:index' def get_success_url(self): return reverse(self.success_url) diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/panel.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/panel.py similarity index 81% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/panel.py rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/panel.py index 5eccc564..8f1fb65c 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/panel.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/panel.py @@ -11,9 +11,9 @@ from openstack_dashboard.api import base from openstack_dashboard.dashboards.admin import dashboard -class Providernets(horizon.Panel): - name = _("Provider Networks") - slug = 'providernets' +class Datanets(horizon.Panel): + name = _("Data Networks") + slug = 'datanets' permissions = ('openstack.services.platform', 'openstack.services.network') def allowed(self, context): @@ -22,7 +22,7 @@ class Providernets(horizon.Panel): if not base.is_service_enabled(context['request'], 'platform'): return False else: - return super(Providernets, self).allowed(context) + return super(Datanets, self).allowed(context) def nav(self, context): if context['request'].user.services_region == 'SystemController': @@ -33,4 +33,4 @@ class Providernets(horizon.Panel): return True -dashboard.Admin.register(Providernets) +dashboard.Admin.register(Datanets) diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/tabs.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/tabs.py similarity index 51% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/tabs.py rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/tabs.py index 771a1644..43e012e7 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/tabs.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/tabs.py @@ -1,47 +1,42 @@ # -# Copyright (c) 2013-2016 Wind River Systems, Inc. +# Copyright (c) 2013-2019 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # - -import logging - from django.utils.translation import ugettext_lazy as _ # noqa from horizon import exceptions from horizon import tabs from starlingx_dashboard.api import base as stx_base -from starlingx_dashboard.api import neutron as stx_neutron -from starlingx_dashboard.dashboards.admin.providernets.providernets import \ - tables as providernets_tables - -LOG = logging.getLogger(__name__) +from starlingx_dashboard.api import sysinv as stx_sysinv +from starlingx_dashboard.dashboards.admin.datanets.datanets import \ + tables as datanets_tables -class ProviderNetworkTab(tabs.TableTab): - table_classes = (providernets_tables.ProviderNetworksTable,) - name = _("Provider Networks") +class DataNetworkTab(tabs.TableTab): + table_classes = (datanets_tables.DataNetworksTable,) + name = _("Data Networks") slug = "provider_networks" template_name = ("horizon/common/_detail_table.html") def get_provider_networks_data(self): try: - providernets = \ - stx_neutron.provider_network_list(self.tab_group.request) + datanets = \ + stx_sysinv.data_network_list(self.tab_group.request) except Exception: - providernets = [] + datanets = [] msg = _('Unable to get provider network list.') exceptions.check_message(["Connection", "refused"], msg) raise - return providernets + return datanets def allowed(self, request): return stx_base.is_stx_region(request) class NetworkTabs(tabs.TabGroup): - slug = "providernets" - tabs = (ProviderNetworkTab,) + slug = "datanets" + tabs = (DataNetworkTab,) sticky = True diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/_add_range.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/_add_range.html similarity index 89% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/_add_range.html rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/_add_range.html index 9979769d..68235709 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/_add_range.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/_add_range.html @@ -2,7 +2,7 @@ {% load i18n %} {% block form_id %}add_provider_network_range_form{% endblock %} -{% block form_action %}{% url 'horizon:admin:providernets:providernets:addrange' providernet_id %} +{% block form_action %}{% url 'horizon:admin:datanets:datanets:addrange' providernet_id %} {% endblock %} {% block modal-header %}{% trans "Create Segmentation Range" %}{% endblock %} diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/_create.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/_create.html similarity index 77% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/_create.html rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/_create.html index 85ef9cb3..aa2b42ab 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/_create.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/_create.html @@ -2,10 +2,10 @@ {% load i18n %} {% block form_id %}create_provider_network_form{% endblock %} -{% block form_action %}{% url 'horizon:admin:providernets:providernets:create' %} +{% block form_action %}{% url 'horizon:admin:datanets:datanets:create' %} {% endblock %} -{% block modal-header %}{% trans "Create Provider Network" %}{% endblock %} +{% block modal-header %}{% trans "Create Data Network" %}{% endblock %} {% block modal-body %}
@@ -21,5 +21,5 @@ {% block modal-footer %} {% trans "Cancel" %} - + {% endblock %} diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/_detail_overview.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/_detail_overview.html similarity index 86% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/_detail_overview.html rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/_detail_overview.html index afb9c19f..39922e07 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/_detail_overview.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/_detail_overview.html @@ -1,6 +1,6 @@ {% load i18n sizeformat %} -

{% trans "Provider Network Overview" %}

+

{% trans "Data Network Overview" %}

@@ -14,8 +14,6 @@
{{ providernet.mtu|default:_("-") }}
{% trans "Description" %}
{{ providernet.description|default:_("None") }}
-
{% trans "VLAN Transparent" %}
-
{{ providernet.vlan_transparent|yesno|capfirst }}
{% 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/providernets/templates/providernets/providernets/_update.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/_update.html similarity index 76% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/_update.html rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/_update.html index a8845268..152e3281 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/_update.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/_update.html @@ -2,9 +2,9 @@ {% load i18n %} {% block form_id %}update_provider_network_form{% endblock %} -{% block form_action %}{% url 'horizon:admin:providernets:providernets:update' providernet_id %}{% endblock %} +{% block form_action %}{% url 'horizon:admin:datanets:datanets:update' providernet_id %}{% endblock %} -{% block modal-header %}{% trans "Edit Provider Network" %}{% endblock %} +{% block modal-header %}{% trans "Edit Data Network" %}{% endblock %} {% block modal-body %}
@@ -19,7 +19,7 @@

{% trans "Description:" %}

-

{% trans "You may update the editable properties of your provider network here." %}

+

{% trans "You may update the editable properties of your data network here." %}

{% endblock %} diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/add_range.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/add_range.html similarity index 81% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/add_range.html rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/add_range.html index 6c7dca86..4e58c322 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/add_range.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/add_range.html @@ -7,5 +7,5 @@ {% endblock page_header %} {% block main %} - {% include "admin/providernets/providernets/_add_range.html" %} + {% include "admin/datanets/datanets/_add_range.html" %} {% endblock %} diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/create.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/create.html similarity index 54% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/create.html rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/create.html index 0dd55776..e0ebe0af 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/create.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/create.html @@ -1,11 +1,11 @@ {% extends 'base.html' %} {% load i18n %} -{% block title %}{% trans "Create Provider Network" %}{% endblock %} +{% block title %}{% trans "Create Data Network" %}{% endblock %} {% block page_header %} - {% include "horizon/common/_page_header.html" with title=_("Create Provider Network") %} + {% include "horizon/common/_page_header.html" with title=_("Create Data Network") %} {% endblock page_header %} {% block main %} - {% include "admin/providernets/providernets/_create.html" %} + {% include "admin/datanets/datanets/_create.html" %} {% endblock %} diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/detail.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/detail.html similarity index 64% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/detail.html rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/detail.html index f932ea77..183f68b9 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/detail.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/detail.html @@ -1,9 +1,9 @@ {% extends 'base.html' %} {% load i18n breadcrumb_nav %} -{% block title %}{% trans "Provider Network Detail"%}{% endblock %} +{% block title %}{% trans "Data Network Detail"%}{% endblock %} {% block main %} - {% include "admin/providernets/providernets/_detail_overview.html" %} + {% include "admin/datanets/datanets/_detail_overview.html" %}
{{ provider_network_ranges_table.render }} diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/ranges/_create.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/ranges/_create.html similarity index 89% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/ranges/_create.html rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/ranges/_create.html index bc5b7c36..874bf021 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/ranges/_create.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/ranges/_create.html @@ -2,7 +2,7 @@ {% load i18n %} {% block form_id %}create_provider_network_range_form{% endblock %} -{% block form_action %}{% url 'horizon:admin:providernets:providernets:createrange' providernet_id %} +{% block form_action %}{% url 'horizon:admin:datanets:datanets:createrange' providernet_id %} {% endblock %} {% block modal-header %}{% trans "Create Segmentation Range" %}{% endblock %} diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/ranges/_detail_overview.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/ranges/_detail_overview.html similarity index 88% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/ranges/_detail_overview.html rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/ranges/_detail_overview.html index 910cc19f..a72326cf 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/ranges/_detail_overview.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/ranges/_detail_overview.html @@ -18,7 +18,7 @@
{{ providernet_range.maximum|default:_("None") }}
{% if providernet_range.vxlan %}
{% trans "Provider Attributes" %}
-
{% include "admin/providernets/providernets/ranges/_vxlan.html" with vxlan=providernet_range.vxlan %}
+
{% include "admin/datanets/datanets/ranges/_vxlan.html" with vxlan=providernet_range.vxlan %}
{% endif %}
diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/ranges/_update.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/ranges/_update.html similarity index 86% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/ranges/_update.html rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/ranges/_update.html index 9c5833b5..7c6d62a3 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/ranges/_update.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/ranges/_update.html @@ -2,7 +2,7 @@ {% load i18n %} {% block form_id %}update_provider_network_range_form{% endblock %} -{% block form_action %}{% url 'horizon:admin:providernets:providernets:editrange' providernet_id providernet_range_id %}{% endblock %} +{% block form_action %}{% url 'horizon:admin:datanets:datanets:editrange' providernet_id providernet_range_id %}{% endblock %} {% block modal-header %}{% trans "Edit Segmentation Range" %}{% endblock %} diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/ranges/_vxlan.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/ranges/_vxlan.html similarity index 100% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/ranges/_vxlan.html rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/ranges/_vxlan.html diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/ranges/create.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/ranges/create.html similarity index 80% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/ranges/create.html rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/ranges/create.html index a5e52173..5c00d9de 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/ranges/create.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/ranges/create.html @@ -7,5 +7,5 @@ {% endblock page_header %} {% block main %} - {% include "admin/providernets/providernets/ranges/_create.html" %} + {% include "admin/datanets/datanets/ranges/_create.html" %} {% endblock %} diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/ranges/detail.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/ranges/detail.html similarity index 100% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/ranges/detail.html rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/ranges/detail.html diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/ranges/update.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/ranges/update.html similarity index 51% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/ranges/update.html rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/ranges/update.html index 152f3f04..d2805c35 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/ranges/update.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/ranges/update.html @@ -1,11 +1,11 @@ {% extends 'base.html' %} {% load i18n %} -{% block title %}{% trans "Update Provider Network Range" %}{% endblock %} +{% block title %}{% trans "Update Data Network Range" %}{% endblock %} {% block page_header %} - {% include "horizon/common/_page_header.html" with title=_("Update Provider Network Range") %} + {% include "horizon/common/_page_header.html" with title=_("Update Data Network Range") %} {% endblock page_header %} {% block main %} - {% include 'admin/providernets/providernets/ranges/_update.html' %} + {% include 'admin/datanets/datanets/ranges/_update.html' %} {% endblock %} diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/update.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/update.html similarity index 54% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/update.html rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/update.html index 605e3d85..68e4ceff 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/providernets/update.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/datanets/update.html @@ -1,11 +1,11 @@ {% extends 'base.html' %} {% load i18n %} -{% block title %}{% trans "Update Provider Network" %}{% endblock %} +{% block title %}{% trans "Update Data Network" %}{% endblock %} {% block page_header %} - {% include "horizon/common/_page_header.html" with title=_("Update Provider Network") %} + {% include "horizon/common/_page_header.html" with title=_("Update Data Network") %} {% endblock page_header %} {% block main %} - {% include 'admin/providernets/providernets/_update.html' %} + {% include 'admin/datanets/datanets/_update.html' %} {% endblock %} diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/tabs.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/tabs.html similarity index 59% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/tabs.html rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/tabs.html index c8fd1bd0..104c6d26 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/templates/providernets/tabs.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/templates/datanets/tabs.html @@ -1,9 +1,9 @@ {% extends 'base.html' %} {% load i18n %} -{% block title %}{% trans "Provider Networks" %}{% endblock %} +{% block title %}{% trans "Data Networks" %}{% endblock %} {% block page_header %} - {% include "horizon/common/_page_header.html" with title=_("Provider Networks")%} + {% include "horizon/common/_page_header.html" with title=_("Data Networks")%} {% endblock page_header %} {% block main %} diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/urls.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/urls.py similarity index 50% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/urls.py rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/urls.py index bd8a5fe7..a96959bb 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/urls.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/urls.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2013-2016 Wind River Systems, Inc. +# Copyright (c) 2013-2019 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # @@ -7,15 +7,15 @@ from django.conf.urls import include from django.conf.urls import url -from starlingx_dashboard.dashboards.admin.providernets.providernets \ +from starlingx_dashboard.dashboards.admin.datanets.datanets \ import urls as providernet_urls -from starlingx_dashboard.dashboards.admin.providernets import views +from starlingx_dashboard.dashboards.admin.datanets import views NETWORKS = r'^(?P[^/]+)/%s$' urlpatterns = [ url(r'^$', views.IndexViewTabbed.as_view(), name='index'), - url(r'^providernets/', - include(providernet_urls, namespace='providernets')) + url(r'^datanets/', + include(providernet_urls, namespace='datanets')) ] diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/views.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/views.py similarity index 56% rename from starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/views.py rename to starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/views.py index 62d53212..24912d9e 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/views.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/datanets/views.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 # @@ -8,11 +8,11 @@ from django.utils.translation import ugettext_lazy as _ from horizon import tabs -from starlingx_dashboard.dashboards.admin.providernets \ +from starlingx_dashboard.dashboards.admin.datanets \ import tabs as project_tabs class IndexViewTabbed(tabs.TabbedTableView): tab_group_class = project_tabs.NetworkTabs - template_name = 'admin/providernets/tabs.html' - page_title = _("Provider Networks") + template_name = 'admin/datanets/tabs.html' + page_title = _("Data Networks") diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/panel.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/panel.py index 42deb42c..45f933c2 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/panel.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/panel.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2016-2018 Wind River Systems, Inc. +# Copyright (c) 2016-2019 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # @@ -14,7 +14,7 @@ from openstack_dashboard.dashboards.admin import dashboard class HostTopology(horizon.Panel): - name = _("Provider Network Topology") + name = _("Data Network Topology") slug = 'host_topology' permissions = ('openstack.services.platform', 'openstack.services.network') diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/tables.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/tables.py index a7df089a..5ea93676 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/tables.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/tables.py @@ -11,10 +11,10 @@ import logging from django.utils.translation import pgettext_lazy from django.utils.translation import ugettext_lazy as _ +from starlingx_dashboard.dashboards.admin.datanets.datanets.ranges \ + import tables as sr_tables from starlingx_dashboard.dashboards.admin.inventory.interfaces import \ tables as if_tables -from starlingx_dashboard.dashboards.admin.providernets.providernets.ranges \ - import tables as sr_tables LOG = logging.getLogger(__name__) 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 0ed3723a..54dbb065 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 @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2018 Wind River Systems, Inc. +# Copyright (c) 2016-2019 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # @@ -15,12 +15,12 @@ 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 \ tables as tables from starlingx_dashboard.dashboards.admin.inventory import \ tabs as i_tabs -from starlingx_dashboard.dashboards.admin.providernets.providernets import \ - tables as pn_tables LOG = logging.getLogger(__name__) @@ -66,7 +66,7 @@ class OverviewTab(tabs.TableTab): table_classes = (tables.ProviderNetworkRangeTable, pn_tables.ProviderNetworkTenantNetworkTable) template_name = 'admin/host_topology/detail/providernet.html' - name = "Provider Network Detail" + name = "Data Network Detail" slug = 'providernet_details_overview' failure_url = reverse_lazy('horizon:admin:host_topology:index') @@ -83,14 +83,8 @@ class OverviewTab(tabs.TableTab): return self._tenants def get_tenant_networks_data(self): - try: - providernet_id = self.tab_group.kwargs['providernet_id'] - networks = stx_api.neutron.provider_network_list_tenant_networks( - self.request, providernet_id=providernet_id) - except Exception: - networks = [] - msg = _('Tenant network list can not be retrieved.') - exceptions.handle(self.request, msg) + # TODO(datanetworks): need to refactor for Stein + networks = [] return networks def get_provider_network_ranges_data(self): diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/templates/host_topology/_svg_element.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/templates/host_topology/_svg_element.html index 82976391..c59ca8d4 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/templates/host_topology/_svg_element.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/host_topology/templates/host_topology/_svg_element.html @@ -156,8 +156,8 @@ svg#topology_canvas g.loading .host .icon_bg {
-

Provider Networks

- +

Data Networks

+
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 index a432f190..488e3593 100755 --- 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 @@ -1,7 +1,7 @@ {% load i18n sizeformat %}
- {% include "admin/providernets/providernets/_detail_overview.html" %} + {% include "admin/datanets/datanets/_detail_overview.html" %}
{{ provider_network_ranges_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 aa055465..6fa70867 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: {{providernet.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 2536c4be..b088a8a9 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 @@ -1,6 +1,6 @@ {% extends 'base.html' %} {% load i18n %} -{% block title %}{% trans "Provider Network Topology" %}{% endblock %} +{% block title %}{% trans "Data Network Topology" %}{% endblock %} {% block main %} 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 0a1b20d2..8ba4d323 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 @@ -1,5 +1,5 @@ # -# Copyright (c) 2016-2018 Wind River Systems, Inc. +# Copyright (c) 2016-2019 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # @@ -73,9 +73,8 @@ class ProvidernetDetailView(tabs.TabbedTableView): if not hasattr(self, "_providernet"): try: providernet_id = self.kwargs['providernet_id'] - providernet = stx_api.neutron.provider_network_get( + providernet = stx_api.sysinv.data_network_get( self.request, providernet_id) - providernet.set_id_as_name_if_empty(length=0) alarms = stx_api.fm.alarm_list(self.request) # Filter out unrelated alarms @@ -98,18 +97,8 @@ class ProvidernetDetailView(tabs.TabbedTableView): def get_nova_data(self): if not hasattr(self, "_providernet_nova"): - try: - providernet_id = self.kwargs['providernet_id'] - providernet_nova = stx_api.nova.provider_network_get( - self.request, providernet_id) - except Exception: - redirect = self.failure_url - exceptions.handle(self.request, - _('Unable to retrieve details for ' - 'provider network "%s".') % providernet_id, - redirect=redirect) - - self._providernet_nova = providernet_nova + # TODO(datanetworks): depends on upstream support + self._providernet_nova = None return self._providernet_nova def get_tabs(self, request, *args, **kwargs): @@ -122,7 +111,7 @@ class ProvidernetDetailView(tabs.TabbedTableView): class HostTopologyView(views.HorizonTemplateView): template_name = 'admin/host_topology/index.html' - page_title = _("Provider Network Topology") + page_title = _("Data Network Topology") def _has_permission(self, policy): has_permission = True @@ -220,7 +209,7 @@ class JSONView(View): def _get_pnets(self, request): pnets = [] try: - pnets = stx_api.neutron.provider_network_list(request) + pnets = stx_api.sysinv.data_network_list(request) except Exception as ex: exceptions.handle(ex) data = [p.to_dict() for p in pnets] diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/interfaces/forms.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/interfaces/forms.py index 2a2942ba..a275447d 100644 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/interfaces/forms.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/interfaces/forms.py @@ -23,7 +23,6 @@ from horizon import exceptions from horizon import forms from horizon import messages -from starlingx_dashboard.api import neutron from starlingx_dashboard.api import sysinv LOG = logging.getLogger(__name__) @@ -280,37 +279,37 @@ class AddInterface(forms.SelfHandlingForm): 'data-switch-on': 'ifclass', 'data-ifclass-platform': 'Platform Network(s)'})) - providernetworks_data = MultipleChoiceField( - label=_("Provider Network(s)"), + datanetworks_data = MultipleChoiceField( + label=_("Data Network(s)"), required=False, widget=CheckboxSelectMultiple( attrs={ 'class': 'switched', 'data-switch-on': 'ifclass', 'data-ifclass-data': ''}, - empty_value=_("No provider networks available " + empty_value=_("No data networks available " "for this interface class."))) - providernetworks_pci = MultipleChoiceField( - label=_("Provider Network(s)"), + datanetworks_pci = MultipleChoiceField( + label=_("Data Network(s)"), required=False, widget=CheckboxSelectMultiple( attrs={ 'class': 'switched', 'data-switch-on': 'ifclass', 'data-ifclass-pci-passthrough': ''}, - empty_value=_("No provider networks available " + empty_value=_("No data networks available " "for this interface class."))) - providernetworks_sriov = MultipleChoiceField( - label=_("Provider Network(s)"), + datanetworks_sriov = MultipleChoiceField( + label=_("Data Network(s)"), required=False, widget=CheckboxSelectMultiple( attrs={ 'class': 'switched', 'data-switch-on': 'ifclass', 'data-ifclass-pci-sriov': ''}, - empty_value=_("No provider networks available " + empty_value=_("No data networks available " "for this interface class."))) imtu = forms.IntegerField( @@ -383,9 +382,9 @@ class AddInterface(forms.SelfHandlingForm): current_interface = sysinv.host_interface_get( self.request, this_interface_id) else: - self.fields['providernetworks_sriov'].widget = \ + self.fields['datanetworks_sriov'].widget = \ forms.widgets.HiddenInput() - self.fields['providernetworks_pci'].widget = \ + self.fields['datanetworks_pci'].widget = \ forms.widgets.HiddenInput() host_uuid = kwargs['initial']['ihost_uuid'] @@ -400,38 +399,38 @@ class AddInterface(forms.SelfHandlingForm): network_choices = _get_network_choices(networks) self.fields['networks'].choices = network_choices - # Populate Provider Network Choices by querying Neutron + # Populate Data Network Choices by querying SysInv self.extras = {} interfaces = sysinv.host_interface_list(self.request, host_uuid) - used_providernets = [] + used_datanets = [] for i in interfaces: if i.ifclass == 'data' and \ - i.providernetworks and \ + i.datanetworks_csv and \ i.uuid != this_interface_id: - used_providernets = used_providernets + \ - i.providernetworks.split(",") + used_datanets = used_datanets + \ + i.datanetworks_csv.split(",") - providernet_choices = [] - providernet_filtered = [] + datanet_choices = [] + datanet_filtered = [] if getattr(self.request.user, 'services_region', None) == 'RegionOne' \ and getattr(settings, 'DC_MODE', False): nt_choices = self.fields['ifclass'].choices self.fields['ifclass'].choices = [i for i in nt_choices if i[0] != 'data'] else: - providernets = neutron.provider_network_list(self.request) - for provider in providernets: - label = "{} (mtu={})".format(provider.name, provider.mtu) - providernet = (str(provider.name), label) - providernet_choices.append(providernet) - if provider.name not in used_providernets: - providernet_filtered.append(providernet) + datanets = sysinv.data_network_list(self.request) + for dn in datanets: + label = "{} (mtu={})".format(dn.name, dn.mtu) + datanet = (str(dn.name), label) + datanet_choices.append(datanet) + if dn.name not in used_datanets: + datanet_filtered.append(datanet) - self.fields['providernetworks_data'].choices = providernet_filtered + self.fields['datanetworks_data'].choices = datanet_filtered if (type(self) is UpdateInterface): - self.fields['providernetworks_pci'].choices = providernet_choices - self.fields['providernetworks_sriov'].choices = providernet_choices + self.fields['datanetworks_pci'].choices = datanet_choices + self.fields['datanetworks_sriov'].choices = datanet_choices if current_interface: # update operation @@ -493,35 +492,35 @@ class AddInterface(forms.SelfHandlingForm): cleaned_data.pop('ipv6_pool', None) if ifclass == 'data': - providernetworks = [_f for _f in cleaned_data.get( - 'providernetworks_data', []) if _f] + datanetworks = [_f for _f in cleaned_data.get( + 'datanetworks_data', []) if _f] elif ifclass == 'pci-passthrough': - providernetworks = [_f for _f in cleaned_data.get( - 'providernetworks_pci', []) if _f] + datanetworks = [_f for _f in cleaned_data.get( + 'datanetworks_pci', []) if _f] elif ifclass == 'pci-sriov': - providernetworks = [_f for _f in cleaned_data.get( - 'providernetworks_sriov', []) if _f] + datanetworks = [_f for _f in cleaned_data.get( + 'datanetworks_sriov', []) if _f] else: - providernetworks = [] + datanetworks = [] - # providernetwork selection is required for 'data', 'pci-passthrough' + # datanetwork selection is required for 'data', 'pci-passthrough' # and 'pci-sriov'. It is NOT required for any other interface class - if not providernetworks: + if not datanetworks: # Note that 1 of 3 different controls may be used to select - # provider network, make sure to set the error on the appropriate + # data network, make sure to set the error on the appropriate # control if ifclass in ['data', 'pci-passthrough', 'pci-sriov']: raise forms.ValidationError(_( - "You must specify a Provider Network")) + "You must specify a Data Network")) - cleaned_data['providernetworks'] = ",".join(providernetworks) - if 'providernetworks_data' in cleaned_data: - del cleaned_data['providernetworks_data'] - if 'providernetworks_pci' in cleaned_data: - del cleaned_data['providernetworks_pci'] - if 'providernetworks_sriov' in cleaned_data: - del cleaned_data['providernetworks_sriov'] + cleaned_data['datanetworks'] = ",".join(datanetworks) + if 'datanetworks_data' in cleaned_data: + del cleaned_data['datanetworks_data'] + if 'datanetworks_pci' in cleaned_data: + del cleaned_data['datanetworks_pci'] + if 'datanetworks_sriov' in cleaned_data: + del cleaned_data['datanetworks_sriov'] return cleaned_data @@ -538,8 +537,8 @@ class AddInterface(forms.SelfHandlingForm): data['uses'] = uses del data['ports'] - if not data['providernetworks']: - del data['providernetworks'] + if not data['datanetworks']: + del data['datanetworks'] if not data['vlan_id'] or data['iftype'] != 'vlan': del data['vlan_id'] @@ -813,10 +812,10 @@ class UpdateInterface(AddInterface): break if current_interface.ifclass == 'data': - data['providernetworks'] = 'none' + data['datanetworks'] = 'none' - if not data['providernetworks']: - del data['providernetworks'] + if not data['datanetworks']: + del data['datanetworks'] if 'sriov_numvfs' in data: data['sriov_numvfs'] = str(data['sriov_numvfs']) diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/interfaces/tables.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/interfaces/tables.py index 1983abde..58c00ef8 100644 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/interfaces/tables.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/interfaces/tables.py @@ -194,8 +194,8 @@ class InterfacesTable(tables.DataTable): platform_networks = tables.Column(get_platform_networks, verbose_name=_('Platform Network(s)')) - providernetworks = tables.Column('providernetworks', - verbose_name=_('Provider Network(s)')) + datanetworks_csv = tables.Column('datanetworks_csv', + verbose_name=_('Data Network(s)')) attributes = tables.Column(get_attributes, verbose_name=_('Attributes')) diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/interfaces/views.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/interfaces/views.py index 31207af8..29509a63 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/interfaces/views.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/interfaces/views.py @@ -260,10 +260,10 @@ class UpdateView(forms.ModalFormView): def get_initial(self): interface = self._get_object() - providernetworks = [] - if interface.providernetworks: - for pn in interface.providernetworks.split(","): - providernetworks.append(str(pn)) + datanetworks_csv = [] + if interface.datanetworks_csv: + for pn in interface.datanetworks_csv.split(","): + datanetworks_csv.append(str(pn)) try: host = stx_api.sysinv.host_get(self.request, interface.host_id) except Exception: @@ -290,10 +290,10 @@ class UpdateView(forms.ModalFormView): # 'uses': interface.uses, 'ifclass': interface.ifclass, 'networktype': interface.networktype, - 'providernetworks_data': providernetworks, - 'providernetworks_data-external': providernetworks, - 'providernetworks_pci': providernetworks, - 'providernetworks_sriov': providernetworks, + 'datanetworks_csv_data': datanetworks_csv, + 'datanetworks_csv_data-external': datanetworks_csv, + 'datanetworks_csv_pci': datanetworks_csv, + 'datanetworks_csv_sriov': datanetworks_csv, 'sriov_numvfs': interface.sriov_numvfs, 'imtu': interface.imtu, 'ipv4_mode': getattr(interface, 'ipv4_mode', 'disabled'), diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/templates/inventory/_interfaceprofiles_interfaceconfig.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/templates/inventory/_interfaceprofiles_interfaceconfig.html index b4feab60..a27f3424 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/templates/inventory/_interfaceprofiles_interfaceconfig.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/templates/inventory/_interfaceprofiles_interfaceconfig.html @@ -2,7 +2,7 @@
  • {{ interfaces.ifname }} {{": "}} {{ interfaces.ifclass }} {% if interfaces.ifclass == 'data' %} - {{"("}} {{ interfaces.providernetworks }} {{")"}} + {{"("}} {{ interfaces.datanetworks_csv }} {{")"}} {% endif %} {{ " | " }} {{ interfaces.iftype }} {% if interfaces.iftype != 'ae' and interfaces.iftype != 'vlan' %} diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/templates/inventory/interfaces/_createprofile.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/templates/inventory/interfaces/_createprofile.html index 4fc000a2..559988f3 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/templates/inventory/interfaces/_createprofile.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/templates/inventory/interfaces/_createprofile.html @@ -29,7 +29,7 @@
  • {{ interfaces.ifname }} {{": "}} {{ interfaces.ifclass }} {% if interfaces.ifclass == 'data' %} - {{"("}} {{ interfaces.providernetworks }} {{")"}} + {{"("}} {{ interfaces.datanetworks_csv }} {{")"}} {% endif %} {{ " | " }} {{ interfaces.iftype }} {% if interfaces.iftype != 'ae' and interfaces.iftype != 'vlan' %} diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/templates/inventory/interfaces/_detail_overview.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/templates/inventory/interfaces/_detail_overview.html index 5ba23cf3..5fdf690a 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/templates/inventory/interfaces/_detail_overview.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/templates/inventory/interfaces/_detail_overview.html @@ -19,8 +19,8 @@
    {% trans "Interface Class" %}
    {{ interface.ifclass|default:_("None") }}
    {% if interface.ifclass == "data" %} -
    {% trans "Provider Networks" %}
    -
    {{ interface.providernetworks|default:_("None") }}
    +
    {% trans "Data Networks" %}
    +
    {{ interface.datanetworks_csv|default:_("None") }}
    {% trans "IPv4 Mode" %}
    {{ interface.ipv4_mode|default:_("Disabled") }}
    {% if interface.ipv4_mode == "pool" %} diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/forms.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/forms.py deleted file mode 100755 index 86d97aac..00000000 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/providernets/providernets/forms.py +++ /dev/null @@ -1,157 +0,0 @@ -# Copyright 2012 NEC Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. -# -# Copyright (c) 2013-2018 Wind River Systems, Inc. -# - - -import logging - -from django.core.urlresolvers import reverse # noqa -from django.utils.translation import ugettext_lazy as _ # noqa - -from neutronclient.common import exceptions as neutron_exceptions - -from horizon import exceptions -from horizon import forms -from horizon import messages - -from starlingx_dashboard import api as stx_api - -LOG = logging.getLogger(__name__) - - -class CreateProviderNetwork(forms.SelfHandlingForm): - name = forms.CharField(max_length=255, - label=_("Name"), - required=True) - description = forms.CharField(max_length=255, - label=_("Description"), - required=False) - type = forms.ChoiceField(label=_("Type"), - required=True) - mtu = forms.IntegerField(label=_("MTU"), - required=True, - initial=1500, - min_value=576, - max_value=9216, - help_text=( - _("Specifies the maximum MTU value of any associated tenant " - "network. Worker node data interface MTU values must be large " - "enough to support the tenant MTU plus any additional provider " - "encapsulation headers. For example, VXLAN provider MTU of " - "1500 requires a minimum data interface MTU of 1574 bytes (1600 " - "bytes is recommended."))) - vlan_transparent = forms.BooleanField( - label=_("VLAN Transparent"), - initial=False, required=False, - help_text=_("Allow tenant networks to be created that require " - "VLAN tagged packets to be transparently passed through " - "the provider network.")) - - @classmethod - def _instantiate(cls, request, *args, **kwargs): - return cls(request, *args, **kwargs) - - def __init__(self, request, *args, **kwargs): - super(CreateProviderNetwork, self).__init__(request, *args, **kwargs) - - providernet_type_choices = [('', _("Select a network type"))] - providernet_types = stx_api.neutron.provider_network_type_list(request) - for providernet_type in providernet_types: - providernet_type_choices.append((providernet_type.type, - providernet_type.type)) - self.fields['type'].choices = providernet_type_choices - - def clean(self): - cleaned_data = super(CreateProviderNetwork, self).clean() - if len(cleaned_data['name'].lstrip()) == 0: - raise forms.ValidationError('invalid provider name') - - return cleaned_data - - def handle(self, request, data): - try: - params = {'name': data['name'], - 'type': data['type'], - 'description': data['description'], - 'mtu': data['mtu'], - 'vlan_transparent': data['vlan_transparent']} - - network = stx_api.neutron.provider_network_create(request, - **params) - msg = (_('Provider network %s was successfully created.') % - data['name']) - LOG.debug(msg) - messages.success(request, msg) - return network - except neutron_exceptions.NeutronClientException as e: - redirect = reverse('horizon:admin:providernets:index') - exceptions.handle(request, str(e), redirect=redirect) - except Exception: - redirect = reverse('horizon:admin:providernets:index') - msg = _('Failed to create provider network %s') % data['name'] - exceptions.handle(request, msg, redirect=redirect) - - -class UpdateProviderNetwork(forms.SelfHandlingForm): - name = forms.CharField(label=_("Name"), required=False, - widget=forms.TextInput( - attrs={'readonly': 'readonly'})) - type = forms.CharField(label=_("Type"), required=False, - widget=forms.TextInput( - attrs={'readonly': 'readonly'})) - id = forms.CharField(widget=forms.HiddenInput) - # Mutable fields - description = forms.CharField(label=_("Description"), required=False) - mtu = forms.IntegerField(label=_("MTU"), - required=True, - initial=1500, - min_value=576, - max_value=9216, - help_text=(_("Specifies the minimum interface" - " MTU required to support this" - " provider network"))) - vlan_transparent = forms.BooleanField( - label=_("VLAN Transparent"), - initial=False, required=False, - help_text=_("Allow tenant networks to be created that require " - "VLAN tagged packets to be transparently passed through " - "the provider network. " - "Changes will not impact existing networks.")) - failure_url = 'horizon:admin:providernets:index' - - def handle(self, request, data): - try: - params = {'description': data['description'], - 'mtu': data['mtu'], - 'vlan_transparent': data['vlan_transparent']} - - providernet = stx_api.neutron.provider_network_modify( - request, data['id'], **params) - msg = (_('Provider network %s was successfully updated.') % - data['name']) - LOG.debug(msg) - messages.success(request, msg) - return providernet - except neutron_exceptions.NeutronClientException as e: - msg = _('Failed to update provider network %s') % data['name'] - LOG.info(msg) - redirect = reverse(self.failure_url) - exceptions.handle(request, str(e), redirect=redirect) - except Exception: - msg = _('Failed to update provider network %s') % data['name'] - LOG.info(msg) - redirect = reverse(self.failure_url) - exceptions.handle(request, msg, redirect=redirect) diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/enabled/_2036_starlingx_admin_providernets.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/enabled/_2036_starlingx_admin_providernets.py index 1d85e89e..4c1dc8ab 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/enabled/_2036_starlingx_admin_providernets.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/enabled/_2036_starlingx_admin_providernets.py @@ -1,5 +1,5 @@ # The slug of the panel to be added to HORIZON_CONFIG. Required. -PANEL = 'providernets' +PANEL = 'datanets' # The slug of the dashboard the PANEL associated with. Required. PANEL_DASHBOARD = 'admin' # The slug of the panel group the PANEL is associated with. @@ -7,4 +7,4 @@ PANEL_GROUP = 'platform' # Python panel class of the PANEL to be added. ADD_PANEL = ('starlingx_dashboard.dashboards.admin.' - 'providernets.panel.Providernets') + 'datanets.panel.Datanets') 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 e0db777f..f7adc0fa 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 @@ -186,8 +186,8 @@ horizon.host_topology = { // 'expand' a single IF connected to many pnets into multiple 'connections' $.each(host.interfaces, function(index, interface) { var if_connections = [] - if (interface.providernetworks) { - $.each(interface.providernetworks.split(','), function(index, providernet_name) { + if (interface.datanetworks_csv) { + $.each(interface.datanetworks_csv.split(','), function(index, providernet_name) { var connection = {} // Attach the interface to the connection connection.interface = interface;