Allow max_tx_rate config on Horizon
There was no field in the Horizon interface dialogs to specify the max-tx-rate. This commit adds the max_tx_rate field to the Add, Modify and Details dialogs. Test plan PASS Add interface with max_tx_rate set to 100 PASS Add interface with max_tx_rate set to 0 PASS Add interface with max_tx_rate set to empty PASS Modify interface with max_tx_rate previously set to 100, changing it to 200 PASS Modify interface with max_tx_rate previously set to 100, changing it to 0 PASS Modify interface with max_tx_rate previously set to 100, changing it to empty PASS Modify interface with max_tx_rate previously set to 0, changing it to 100 PASS Modify interface with max_tx_rate previously set to 0, changing it to empty PASS View details of interface with max_tx_rate set to 0 PASS View details of interface with max_tx_rate set to 100 PASS View details of interface with max_tx_rate set to empty Closes-Bug: #2000635 Signed-off-by: Lucas Ratusznei Fonseca <lucas.ratuszneifonseca@windriver.com> Change-Id: I16ce1dbd2dbf12367ed6a4428216ad37b4c31f14
This commit is contained in:
parent
559f04a695
commit
5e81ff8710
|
@ -10,7 +10,7 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2021 Wind River Systems, Inc.
|
# Copyright (c) 2013-2023 Wind River Systems, Inc.
|
||||||
#
|
#
|
||||||
|
|
||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
|
@ -242,7 +242,7 @@ class Port(base.APIResourceWrapper):
|
||||||
'psvendor', 'psdevice', 'numa_node', 'mac', 'mtu', 'speed',
|
'psvendor', 'psdevice', 'numa_node', 'mac', 'mtu', 'speed',
|
||||||
'link_mode', 'capabilities', 'host_uuid', 'interface_uuid',
|
'link_mode', 'capabilities', 'host_uuid', 'interface_uuid',
|
||||||
'bootp', 'autoneg', 'type', 'sriov_numvfs', 'sriov_totalvfs',
|
'bootp', 'autoneg', 'type', 'sriov_numvfs', 'sriov_totalvfs',
|
||||||
'sriov_vfs_pci_address', 'sriov_vf_driver',
|
'sriov_vfs_pci_address', 'sriov_vf_driver', 'max_tx_rate',
|
||||||
'driver', 'dpdksupport', 'neighbours']
|
'driver', 'dpdksupport', 'neighbours']
|
||||||
|
|
||||||
def __init__(self, apiresource):
|
def __init__(self, apiresource):
|
||||||
|
@ -1961,7 +1961,7 @@ class Interface(base.APIResourceWrapper):
|
||||||
'aemode', 'txhashpolicy', 'primary_reselect', 'vlan_id',
|
'aemode', 'txhashpolicy', 'primary_reselect', 'vlan_id',
|
||||||
'uses', 'used_by', 'ihost_uuid',
|
'uses', 'used_by', 'ihost_uuid',
|
||||||
'ipv4_mode', 'ipv6_mode', 'ipv4_pool', 'ipv6_pool',
|
'ipv4_mode', 'ipv6_mode', 'ipv4_pool', 'ipv6_pool',
|
||||||
'sriov_numvfs', 'sriov_vf_driver']
|
'sriov_numvfs', 'sriov_vf_driver', 'max_tx_rate']
|
||||||
|
|
||||||
def __init__(self, apiresource):
|
def __init__(self, apiresource):
|
||||||
super(Interface, self).__init__(apiresource)
|
super(Interface, self).__init__(apiresource)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2021 Wind River Systems, Inc.
|
# Copyright (c) 2013-2023 Wind River Systems, Inc.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
#
|
#
|
||||||
|
@ -379,6 +379,23 @@ class AddInterface(forms.SelfHandlingForm):
|
||||||
'data-switch-on': 'ipv6_mode',
|
'data-switch-on': 'ipv6_mode',
|
||||||
'data-ipv6_mode-pool': 'IPv6 Address Pool'}))
|
'data-ipv6_mode-pool': 'IPv6 Address Pool'}))
|
||||||
|
|
||||||
|
max_tx_rate = forms.IntegerField(
|
||||||
|
label=_("Max Tx Rate"),
|
||||||
|
initial=0,
|
||||||
|
min_value=0,
|
||||||
|
required=False,
|
||||||
|
help_text=_('Allowed maximum transmit bandwidth, in Mbps, for the '
|
||||||
|
'specified VF. Setting this parameter to 0 disables '
|
||||||
|
'rate limiting.'),
|
||||||
|
error_messages={'invalid': _('Max Tx Rate must be '
|
||||||
|
'equal or greater than 0.')},
|
||||||
|
widget=forms.TextInput(
|
||||||
|
attrs={
|
||||||
|
'class': 'switched',
|
||||||
|
'data-switch-on': 'interface_type',
|
||||||
|
'data-slug': 'max_tx_rate',
|
||||||
|
'data-interface_type-vf': 'Max Tx Rate'}))
|
||||||
|
|
||||||
failure_url = 'horizon:admin:inventory:detail'
|
failure_url = 'horizon:admin:inventory:detail'
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
@ -602,6 +619,13 @@ class AddInterface(forms.SelfHandlingForm):
|
||||||
del data['sriov_numvfs']
|
del data['sriov_numvfs']
|
||||||
del data['sriov_vf_driver']
|
del data['sriov_vf_driver']
|
||||||
|
|
||||||
|
if data['iftype'] == 'vf':
|
||||||
|
if not data['max_tx_rate']:
|
||||||
|
data['max_tx_rate'] = 0
|
||||||
|
data['max_tx_rate'] = str(data['max_tx_rate'])
|
||||||
|
else:
|
||||||
|
del data['max_tx_rate']
|
||||||
|
|
||||||
del data['datanetworks']
|
del data['datanetworks']
|
||||||
del data['networks']
|
del data['networks']
|
||||||
interface = sysinv.host_interface_create(request, **data)
|
interface = sysinv.host_interface_create(request, **data)
|
||||||
|
@ -917,6 +941,13 @@ class UpdateInterface(AddInterface):
|
||||||
if 'sriov_vf_driver' in data:
|
if 'sriov_vf_driver' in data:
|
||||||
data['sriov_vf_driver'] = str(data['sriov_vf_driver'])
|
data['sriov_vf_driver'] = str(data['sriov_vf_driver'])
|
||||||
|
|
||||||
|
if data['iftype'] == 'vf':
|
||||||
|
if not data['max_tx_rate']:
|
||||||
|
data['max_tx_rate'] = 0
|
||||||
|
data['max_tx_rate'] = str(data['max_tx_rate'])
|
||||||
|
else:
|
||||||
|
del data['max_tx_rate']
|
||||||
|
|
||||||
# Explicitly set iftype when user selects pci-pt or pci-sriov
|
# Explicitly set iftype when user selects pci-pt or pci-sriov
|
||||||
ifclass = \
|
ifclass = \
|
||||||
flatten(list(nt) for nt in self.fields['ifclass'].choices)
|
flatten(list(nt) for nt in self.fields['ifclass'].choices)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2021 Wind River Systems, Inc.
|
# Copyright (c) 2013-2023 Wind River Systems, Inc.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
#
|
#
|
||||||
|
@ -229,6 +229,7 @@ class UpdateView(forms.ModalFormView):
|
||||||
'sriov_numvfs': interface.sriov_numvfs,
|
'sriov_numvfs': interface.sriov_numvfs,
|
||||||
'sriov_vf_driver': interface.sriov_vf_driver,
|
'sriov_vf_driver': interface.sriov_vf_driver,
|
||||||
'imtu': interface.imtu,
|
'imtu': interface.imtu,
|
||||||
|
'max_tx_rate': interface.max_tx_rate,
|
||||||
'ipv4_mode': getattr(interface, 'ipv4_mode', 'disabled'),
|
'ipv4_mode': getattr(interface, 'ipv4_mode', 'disabled'),
|
||||||
'ipv4_pool': getattr(interface, 'ipv4_pool', None),
|
'ipv4_pool': getattr(interface, 'ipv4_pool', None),
|
||||||
'ipv6_mode': getattr(interface, 'ipv6_mode', 'disabled'),
|
'ipv6_mode': getattr(interface, 'ipv6_mode', 'disabled'),
|
||||||
|
|
|
@ -36,5 +36,7 @@
|
||||||
<dd>{{ interface.sriov_numvfs|default:_("None") }}</dd>
|
<dd>{{ interface.sriov_numvfs|default:_("None") }}</dd>
|
||||||
<dt>{% trans "Virtual Function Driver" %}</dt>
|
<dt>{% trans "Virtual Function Driver" %}</dt>
|
||||||
<dd>{{ interface.sriov_vf_driver|default:_("None") }}</dd>
|
<dd>{{ interface.sriov_vf_driver|default:_("None") }}</dd>
|
||||||
|
<dt>{% trans "Max Tx Rate" %}</dt>
|
||||||
|
<dd>{{ interface.max_tx_rate|default:_("None") }}</dd>
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue