Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -31,21 +31,22 @@ class LinuxVirtualization(BaseFeatureVirtualization):

def _raise_error_if_not_supported_type(self) -> None:
"""
Raise error in case current interface is not PF/BTS.
Raise error in case current interface is not PF/BTS/VPORT.

:raises VirtualizationWrongInterfaceException: if method is called on non PF/BTS interface
:raises VirtualizationWrongInterfaceException: if method is called on non PF/BTS/VPORT interface
"""
current_type = self._interface().interface_type
if current_type not in (InterfaceType.PF, InterfaceType.BTS):
if current_type not in (InterfaceType.PF, InterfaceType.BTS, InterfaceType.VPORT):
raise VirtualizationWrongInterfaceException(
f"Current interface type is {current_type} but should be InterfaceType.PF or InterfaceType.BTS"
f"Current interface type is {current_type} but should be "
f"InterfaceType.PF, InterfaceType.BTS or InterfaceType.VPORT"
)
Comment thread
KTokarze marked this conversation as resolved.
Resolved
Comment thread
KTokarze marked this conversation as resolved.
Resolved

def _get_vfs_details(self) -> List[VFDetail]:
"""
Get VF details of PF interface.
Get VF details of PF/BTS/VPORT interface.

:raises VirtualizationWrongInterfaceException: if method is called on non PF interface
:raises VirtualizationWrongInterfaceException: if method is called on non PF/BTS/VPORT interface
:raises: VirtualizationFeatureException: in case of command failure (rc != 0)
:return: List of VFDetail objects
"""
Expand Down Expand Up @@ -80,7 +81,7 @@ def _get_max_vfs_by_name(self) -> int:
"""
Get maximal number of VFs per interface based on name.

:raises VirtualizationWrongInterfaceException if method is called on non PF interface
:raises VirtualizationWrongInterfaceException if method is called on non PF/BTS/VPORT interface
:raises: VirtualizationFeatureException in case of error
:return: number of VFs
"""
Expand All @@ -94,7 +95,7 @@ def _get_max_vfs_by_pci_address(self) -> int:
"""
Get maximal number of VFs per interface based on PCI Address.

:raises VirtualizationWrongInterfaceException if method is called on non PF interface
:raises VirtualizationWrongInterfaceException if method is called on non PF/BTS/VPORT interface
:raises: VirtualizationFeatureException in case of error
:return: number of VFs
"""
Expand All @@ -108,7 +109,7 @@ def _get_current_vfs_by_name(self) -> int:
"""
Get number of current VFs per interface based on name.

:raises VirtualizationWrongInterfaceException if method is called on non PF interface
:raises VirtualizationWrongInterfaceException if method is called on non PF/BTS/VPORT interface
:raises: VirtualizationFeatureException in case of error
:return: number of VFs
"""
Expand All @@ -122,7 +123,7 @@ def _get_current_vfs_by_pci_address(self) -> int:
"""
Get number of current VFs per interface based on PCI Address.

:raises VirtualizationWrongInterfaceException if method is called on non PF interface
:raises VirtualizationWrongInterfaceException if method is called on non PF/BTS/VPORT interface
:raises: VirtualizationFeatureException in case of error
:return: number of VFs
"""
Expand Down Expand Up @@ -201,7 +202,7 @@ def set_max_tx_rate(self, vf_id: int, value: int) -> None:

:param: vf_id: VF (virtual function) ID
:param value: max_tx_rate value (Mbits)
:raises VirtualizationWrongInterfaceException if method is called on non PF interface
:raises VirtualizationWrongInterfaceException if method is called on non PF/BTS/VPORT interface
:raises VirtualizationFeatureException if command execution fails
"""
self._raise_error_if_not_supported_type()
Expand All @@ -216,7 +217,7 @@ def set_min_tx_rate(self, vf_id: int, value: int) -> None:

:param vf_id: VF (virtual function) ID
:param value: min_tx_rate value (Mbits)
:raises VirtualizationWrongInterfaceException if method is called on non PF interface
:raises VirtualizationWrongInterfaceException if method is called on non PF/BTS/VPORT interface
:raises VirtualizationFeatureException if command execution fails
"""
self._raise_error_if_not_supported_type()
Expand All @@ -230,7 +231,7 @@ def set_trust(self, vf_id: int, state: State) -> None:

:param vf_id: Virtual Function ID
:param state: State to be set: Enabled or Disabled (On/Off)
:raises VirtualizationWrongInterfaceException if method is called on non PF interface
:raises VirtualizationWrongInterfaceException if method is called on non PF/BTS/VPORT interface
:raises: VirtualizationFeatureException in case of command error
"""
self._raise_error_if_not_supported_type()
Expand All @@ -246,7 +247,7 @@ def set_spoofchk(self, vf_id: int, state: State) -> None:
Turning off spoofchk allows the VF to change its MAC address.
:param vf_id: Virtual Function ID
:param state: State to be set: Enabled or Disabled (On/Off)
:raises VirtualizationWrongInterfaceException if method is called on non PF interface
:raises VirtualizationWrongInterfaceException if method is called on non PF/BTS/VPORT interface
:raises: VirtualizationFeatureException in case of error
"""
self._raise_error_if_not_supported_type()
Expand All @@ -260,7 +261,7 @@ def get_trust(self, vf_id: int) -> State:
Get trust setting per VF.

:param vf_id: Virtual Function ID
:raises VirtualizationWrongInterfaceException if method is called on non PF interface
:raises VirtualizationWrongInterfaceException if method is called on non PF/BTS/VPORT interface
:return: State of trust setting
"""
for vf in self._get_vfs_details():
Expand All @@ -272,7 +273,7 @@ def get_spoofchk(self, vf_id: int) -> State:
Get spoofhck setting per VF.

:param vf_id: Virtual Function ID
:raises VirtualizationWrongInterfaceException if method is called on non PF interface
:raises VirtualizationWrongInterfaceException if method is called on non PF/BTS/VPORT interface
:return: State of spoofhck setting
"""
for vf in self._get_vfs_details():
Expand All @@ -284,7 +285,7 @@ def get_mac_address(self, vf_id: int) -> MACAddress:
Get mac_address per VF.

:param vf_id: Virtual Function ID
:raises VirtualizationWrongInterfaceException: if method is called on non PF interface
:raises VirtualizationWrongInterfaceException: if method is called on non PF/BTS/VPORT interface
:return: Mac Address of VF
"""
for vf in self._get_vfs_details():
Expand All @@ -296,7 +297,7 @@ def get_link_state(self, vf_id: int) -> LinkState:
Get link-state per VF.

:param vf_id: Virtual Function ID
:raises VirtualizationWrongInterfaceException: if method is called on non PF interface
:raises VirtualizationWrongInterfaceException: if method is called on non PF/BTS/VPORT interface
:return: Link State setting of VF
"""
for vf in self._get_vfs_details():
Expand All @@ -310,7 +311,7 @@ def set_vlan_for_vf(self, vf_id: int, vlan_id: int, proto: VlanProto = None) ->
:param vf_id: Virtual Function ID
:param vlan_id: VLAN to set the VF to
:param proto: Specify 802.1ad or 802.1Q type of VLAN
:raises VirtualizationWrongInterfaceException if method is called on non PF interface
:raises VirtualizationWrongInterfaceException if method is called on non PF/BTS/VPORT interface
:raises: VirtualizationFeatureException in case of error
"""
self._raise_error_if_not_supported_type()
Expand All @@ -324,7 +325,7 @@ def set_link_for_vf(self, vf_id: int, link_state: LinkState) -> None:

:param vf_id: Virtual Function ID
:param link_state: requested link state (one of auto, enabled, disabled)
:raises VirtualizationWrongInterfaceException if method is called on non PF interface
:raises VirtualizationWrongInterfaceException if method is called on non PF/BTS/VPORT interface
:raises: VirtualizationFeatureException in case of error
"""
self._raise_error_if_not_supported_type()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,10 @@ def test__raise_error_if_not_pf_passes_bts(self, interface):
interface._interface_info.interface_type = InterfaceType.BTS
assert interface.virtualization._raise_error_if_not_supported_type() is None

def test__raise_error_if_not_pf_passes_vport(self, interface):
interface._interface_info.interface_type = InterfaceType.VPORT
assert interface.virtualization._raise_error_if_not_supported_type() is None
Comment thread
KTokarze marked this conversation as resolved.
Resolved
Comment thread
KTokarze marked this conversation as resolved.
Resolved
Comment thread
KTokarze marked this conversation as resolved.
Resolved

def test_set_link_for_vf_pass(self, interface, mocker):
interface._interface_info.name = "foo"
vf_id = 2
Expand Down
Loading