diff --git a/starlingx-dashboard/centos/build_srpm.data b/starlingx-dashboard/centos/build_srpm.data index a9a7d14a..38f9ad7e 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=23 +TIS_PATCH_VER=24 diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/api/sysinv.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/api/sysinv.py index 2245e2cd..10b11ebe 100644 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/api/sysinv.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/api/sysinv.py @@ -10,7 +10,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 __future__ import absolute_import @@ -154,6 +154,9 @@ class Memory(base.APIResourceWrapper): 'vm_hugepages_possible_2M', 'vm_hugepages_possible_1G', 'vm_hugepages_use_1G', + 'vswitch_hugepages_reqd', + 'vswitch_hugepages_size_mib', + 'vswitch_hugepages_nr', 'uuid', 'ihost_uuid', 'inode_uuid', 'minimum_platform_reserved_mib'] diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/memories/forms.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/memories/forms.py index 8b584b33..6036473c 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/memories/forms.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/memories/forms.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2013-2018 Wind River Systems, Inc. +# Copyright (c) 2013-2019 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # @@ -23,6 +23,11 @@ LOG = logging.getLogger(__name__) class UpdateMemory(forms.SelfHandlingForm): + VSWITCH_HP_SIZE_CHOICES = ( + ('2', _("2 MB")), + ('1024', _("1 GB")) + ) + host = forms.CharField(label=_("host"), required=False, widget=forms.widgets.HiddenInput) @@ -43,6 +48,19 @@ class UpdateMemory(forms.SelfHandlingForm): label=_("# of Application 1G Hugepages Node 0"), required=False) + vswitch_hugepages_reqd = forms.CharField( + label=_("# of vSwitch 1G Hugepages Node 0"), + required=False) + + vswitch_hugepages_size_mib = forms.ChoiceField( + label=_("vSwitch Hugepage Size Node 0"), + required=False, + choices=VSWITCH_HP_SIZE_CHOICES, + widget=forms.Select( + attrs={ + 'class': 'switchable', + 'data-slug': 'vswitch_hugepages_size_mib'})) + platform_memory_two = forms.CharField( label=_("Platform Memory for Node 1"), required=False) @@ -55,6 +73,19 @@ class UpdateMemory(forms.SelfHandlingForm): label=_("# of Application 1G Hugepages Node 1"), required=False) + vswitch_hugepages_reqd_two = forms.CharField( + label=_("# of vSwitch 1G Hugepages Node 1"), + required=False) + + vswitch_hugepages_size_mib_two = forms.ChoiceField( + label=_("vSwitch Hugepage Size Node 1"), + required=False, + choices=VSWITCH_HP_SIZE_CHOICES, + widget=forms.Select( + attrs={ + 'class': 'switchable', + 'data-slug': 'vswitch_hugepages_size_mib'})) + platform_memory_three = forms.CharField( label=_("Platform Memory for Node 2"), required=False) @@ -67,6 +98,19 @@ class UpdateMemory(forms.SelfHandlingForm): label=_("# of Application 1G Hugepages Node 2"), required=False) + vswitch_hugepages_reqd_three = forms.CharField( + label=_("# of vSwitch 1G Hugepages Node 2"), + required=False) + + vswitch_hugepages_size_mib_three = forms.ChoiceField( + label=_("vSwitch Hugepage Size Node 2"), + required=False, + choices=VSWITCH_HP_SIZE_CHOICES, + widget=forms.Select( + attrs={ + 'class': 'switchable', + 'data-slug': 'vswitch_hugepages_size_mib'})) + platform_memory_four = forms.CharField( label=_("Platform Memory for Node 3"), required=False) @@ -79,6 +123,19 @@ class UpdateMemory(forms.SelfHandlingForm): label=_("# of Application 1G Hugepages Node 3"), required=False) + vswitch_hugepages_reqd_four = forms.CharField( + label=_("# of vSwitch 1G Hugepages Node 3"), + required=False) + + vswitch_hugepages_size_mib_four = forms.ChoiceField( + label=_("vSwitch Hugepage Size Node 3"), + required=False, + choices=VSWITCH_HP_SIZE_CHOICES, + widget=forms.Select( + attrs={ + 'class': 'switchable', + 'data-slug': 'vswitch_hugepages_size_mib'})) + failure_url = 'horizon:admin:inventory:detail' def __init__(self, request, *args, **kwargs): @@ -90,22 +147,37 @@ class UpdateMemory(forms.SelfHandlingForm): { 'platform_memory': self.fields['platform_memory'], 'vm_hugepages_nr_2M': self.fields['vm_hugepages_nr_2M'], - 'vm_hugepages_nr_1G': self.fields['vm_hugepages_nr_1G'] + 'vm_hugepages_nr_1G': self.fields['vm_hugepages_nr_1G'], + 'vswitch_hugepages_size_mib': + self.fields['vswitch_hugepages_size_mib'], + 'vswitch_hugepages_reqd': self.fields['vswitch_hugepages_reqd'] }, { 'platform_memory': self.fields['platform_memory_two'], 'vm_hugepages_nr_2M': self.fields['vm_hugepages_nr_2M_two'], - 'vm_hugepages_nr_1G': self.fields['vm_hugepages_nr_1G_two'] + 'vm_hugepages_nr_1G': self.fields['vm_hugepages_nr_1G_two'], + 'vswitch_hugepages_size_mib': + self.fields['vswitch_hugepages_size_mib_two'], + 'vswitch_hugepages_reqd': + self.fields['vswitch_hugepages_reqd_two'] }, { 'platform_memory': self.fields['platform_memory_three'], 'vm_hugepages_nr_2M': self.fields['vm_hugepages_nr_2M_three'], - 'vm_hugepages_nr_1G': self.fields['vm_hugepages_nr_1G_three'] + 'vm_hugepages_nr_1G': self.fields['vm_hugepages_nr_1G_three'], + 'vswitch_hugepages_size_mib': + self.fields['vswitch_hugepages_size_mib_three'], + 'vswitch_hugepages_reqd': + self.fields['vswitch_hugepages_reqd_three'] }, { 'platform_memory': self.fields['platform_memory_four'], 'vm_hugepages_nr_2M': self.fields['vm_hugepages_nr_2M_four'], - 'vm_hugepages_nr_1G': self.fields['vm_hugepages_nr_1G_four'] + 'vm_hugepages_nr_1G': self.fields['vm_hugepages_nr_1G_four'], + 'vswitch_hugepages_size_mib': + self.fields['vswitch_hugepages_size_mib_four'], + 'vswitch_hugepages_reqd': + self.fields['vswitch_hugepages_reqd_four'] } ] @@ -156,6 +228,26 @@ class UpdateMemory(forms.SelfHandlingForm): if not vm_1g_supported: vm_1G_field.widget.attrs['disabled'] = 'disabled' + vswitch_hp_reqd_field = field_set['vswitch_hugepages_reqd'] + vswitch_hp_reqd_field.help_text = \ + 'Maximum vSwitch pages' + + vswitch_hp_size_mib_field = \ + field_set['vswitch_hugepages_size_mib'] + vswitch_hp_size_mib_field.help_text = \ + 'vSwitch hugepage size' + + if m.vswitch_hugepages_reqd: + vswitch_hp_reqd_field.initial = \ + str(m.vswitch_hugepages_reqd) + elif m.vswitch_hugepages_nr: + vswitch_hp_reqd_field.initial = \ + str(m.vswitch_hugepages_nr) + + if m.vswitch_hugepages_size_mib: + vswitch_hp_size_mib_field.initial = \ + str(m.vswitch_hugepages_size_mib) + break while count < 4: @@ -166,6 +258,10 @@ class UpdateMemory(forms.SelfHandlingForm): forms.widgets.HiddenInput() field_set['vm_hugepages_nr_1G'].widget = \ forms.widgets.HiddenInput() + field_set['vswitch_hugepages_reqd'].widget = \ + forms.widgets.HiddenInput() + field_set['vswitch_hugepages_size_mib'].widget = \ + forms.widgets.HiddenInput() count += 1 def clean(self): @@ -184,23 +280,31 @@ class UpdateMemory(forms.SelfHandlingForm): if data['platform_memory_two'] or \ data['vm_hugepages_nr_2M_two'] or \ - data['vm_hugepages_nr_1G_two']: + data['vm_hugepages_nr_1G_two'] or \ + data['vswitch_hugepages_size_mib_two'] or \ + data['vswitch_hugepages_reqd_two']: node.append('node1') if data['platform_memory_three'] or \ data['vm_hugepages_nr_2M_three'] or \ - data['vm_hugepages_nr_1G_three']: + data['vm_hugepages_nr_1G_three'] or \ + data['vswitch_hugepages_size_mib_three'] or \ + data['vswitch_hugepages_reqd_three']: node.append('node2') if data['platform_memory_four'] or \ data['vm_hugepages_nr_2M_four'] or \ - data['vm_hugepages_nr_1G_four']: + data['vm_hugepages_nr_1G_four'] or \ + data['vswitch_hugepages_size_mib_four'] or \ + data['vswitch_hugepages_reqd_four']: node.append('node3') # host = api.sysinv.host_get(request, host_id) pages_1G = {} pages_2M = {} plat_mem = {} + pages_vs_size = {} + pages_vs_reqd = {} # Node 0 arguments if not data['platform_memory']: @@ -218,6 +322,16 @@ class UpdateMemory(forms.SelfHandlingForm): else: pages_1G['node0'] = data['vm_hugepages_nr_1G'] + if not data['vswitch_hugepages_size_mib']: + del data['vswitch_hugepages_size_mib'] + else: + pages_vs_size['node0'] = data['vswitch_hugepages_size_mib'] + + if not data['vswitch_hugepages_reqd']: + del data['vswitch_hugepages_reqd'] + else: + pages_vs_reqd['node0'] = data['vswitch_hugepages_reqd'] + # Node 1 arguments if not data['platform_memory_two']: del data['platform_memory_two'] @@ -234,6 +348,16 @@ class UpdateMemory(forms.SelfHandlingForm): else: pages_1G['node1'] = data['vm_hugepages_nr_1G_two'] + if not data['vswitch_hugepages_size_mib_two']: + del data['vswitch_hugepages_size_mib_two'] + else: + pages_vs_size['node1'] = data['vswitch_hugepages_size_mib_two'] + + if not data['vswitch_hugepages_reqd_two']: + del data['vswitch_hugepages_reqd_two'] + else: + pages_vs_reqd['node1'] = data['vswitch_hugepages_reqd_two'] + # Node 2 arguments if not data['platform_memory_three']: del data['platform_memory_three'] @@ -250,6 +374,16 @@ class UpdateMemory(forms.SelfHandlingForm): else: pages_1G['node2'] = data['vm_hugepages_nr_1G_three'] + if not data['vswitch_hugepages_size_mib_three']: + del data['vswitch_hugepages_size_mib_three'] + else: + pages_vs_size['node2'] = data['vswitch_hugepages_size_mib_three'] + + if not data['vswitch_hugepages_reqd']: + del data['vswitch_hugepages_reqd'] + else: + pages_vs_reqd['node2'] = data['vswitch_hugepages_reqd_three'] + # Node 3 arguments if not data['platform_memory_four']: del data['platform_memory_four'] @@ -266,6 +400,16 @@ class UpdateMemory(forms.SelfHandlingForm): else: pages_1G['node3'] = data['vm_hugepages_nr_1G_four'] + if not data['vswitch_hugepages_size_mib_four']: + del data['vswitch_hugepages_size_mib_four'] + else: + pages_vs_size['node3'] = data['vswitch_hugepages_size_mib_four'] + + if not data['vswitch_hugepages_reqd_four']: + del data['vswitch_hugepages_reqd_four'] + else: + pages_vs_reqd['node3'] = data['vswitch_hugepages_reqd_four'] + try: for nd in node: node_found = False @@ -288,6 +432,11 @@ class UpdateMemory(forms.SelfHandlingForm): new_data['vm_hugepages_nr_2M_pending'] = pages_2M[nd] if nd in pages_1G: new_data['vm_hugepages_nr_1G_pending'] = pages_1G[nd] + if nd in pages_vs_size: + new_data['vswitch_hugepages_size_mib'] = \ + pages_vs_size[nd] + if nd in pages_vs_reqd: + new_data['vswitch_hugepages_reqd'] = pages_vs_reqd[nd] if new_data: stx_api.sysinv.host_memory_update(request, memory.uuid, diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/memories/tables.py b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/memories/tables.py index 8bdc396c..39e673d5 100644 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/memories/tables.py +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/memories/tables.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2013-2014 Wind River Systems, Inc. +# Copyright (c) 2013-2019 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # @@ -69,6 +69,12 @@ def get_vm_hugepages(memory): return template.loader.render_to_string(template_name, context) +def get_vs_hugepages(memory): + template_name = 'admin/inventory/memorys/_vswitchfunction_hugepages.html' + context = {"memory": memory} + return template.loader.render_to_string(template_name, context) + + class MemorysTable(tables.DataTable): processor = tables.Column('numa_node', verbose_name=_('Processor')) @@ -79,6 +85,9 @@ class MemorysTable(tables.DataTable): vm_huge = tables.Column(get_vm_hugepages, verbose_name=_('Application Pages')) + vs_huge = tables.Column(get_vs_hugepages, + verbose_name=_('vSwitch Pages')) + def get_object_id(self, datum): return str(datum.uuid) diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/templates/inventory/memorys/_createprofile.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/templates/inventory/memorys/_createprofile.html index a4e5ad5d..363f460d 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/templates/inventory/memorys/_createprofile.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/templates/inventory/memorys/_createprofile.html @@ -17,6 +17,7 @@ {% trans "Numa Node" %} {% trans "Platform Reserved" %} {% trans "Application Hugepages" %} + {% trans "vSwitch Hugepages" %} {% for node,m in host.numa_nodes %} @@ -26,6 +27,10 @@ {% trans " 2M Pages: " %} {{ m.vm_hugepages_nr_2M }} {{ "
" }} {% trans " 1G Pages: " %} {{ m.vm_hugepages_nr_1G }} {{ "
" }} + + {% trans " Size (MB): " %} {{ m.vswitch_hugepages_size_mib }} {{ "
" }} + {% trans " Pages: " %} {{ m.vswitch_hugepages_nr }} {{ "
" }} + {% endfor %} diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/templates/inventory/memorys/_vswitchfunction_hugepages.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/templates/inventory/memorys/_vswitchfunction_hugepages.html index 3345a3f8..296945cc 100755 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/templates/inventory/memorys/_vswitchfunction_hugepages.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/dashboards/admin/inventory/templates/inventory/memorys/_vswitchfunction_hugepages.html @@ -1,5 +1,9 @@ {% if memory.hugepages_configured == 'True' %} - {{ "Size: " }} {{ memory.avs_hugepages_size_mib }} {{ " MiB" }} {{ "
" }} - {{ "Total: " }} {{ memory.avs_hugepages_nr }} {{ "
" }} - {{ "Available: " }} {{ memory.avs_hugepages_avail }} {{ "
" }} + {{ "Size: " }} {{ memory.vswitch_hugepages_size_mib }} {{ " MiB" }} {{ "
" }} + {% if memory.vswitch_hugepages_reqd or memory.vswitch_hugepages_reqd == 0 %} + {{ "    Total: " }} {{ memory.vswitch_hugepages_nr }} + {{ "  Pending: "}} {{ memory.vswitch_hugepages_reqd }} {{ "
" }} + {% else %} + {{ "    Total: " }} {{ memory.vswitch_hugepages_nr }} {{ "
" }} + {% endif %} {% endif%}