Skip to main content

Module for cli_client (command line interface client) utility for the Intel® Infrastructure Processing Unit (Intel® IPU).

Project description

[!IMPORTANT] This project is under development. All source code and features on the main branch are for the purpose of testing or evaluation and not production ready.

MFD CLI Client

Module for cli_client (command line interface client) utility for the Intel® Infrastructure Processing Unit (Intel® IPU). It implements the mfd-base-tool abstract class. The command line interface (CLI) is a client application that connects to and communicates with the Intel® IPU Control Plane.

Usage

import logging

from mfd_connect import RPyCConnection
from mfd_cli_client import CliClient
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

# Prepare CLI Client
cp_host_mng_ip = '10.10.10.10'
rpyc_connection_cp = RPyCConnection(ip=cp_host_mng_ip)
cli_client = CliClient(connection=rpyc_connection_cp, absolute_path_to_binary_dir='/home/root')

# Get switch stats
get_switch_stats_result = cli_client.get_switch_stats(switch_id=1)
logger.info(f'CLI Client switch stats result: {get_switch_stats_result}')

# Find VFs
vf_amount = 1
find_vf_vsi_result = cli_client.find_vf_vsi(vf_amount=vf_amount)
logger.info(f'Find VSI per VF result: {find_vf_vsi_result}')

# List VSI list entries
vsi_list = cli_client.get_mac_and_vsi_list()
logger.info(f"VSI list entries: {vsi_list}")

Exceptions raised by cli_client module

  • CliClientException

  • CliClientNotAvailable

Implemented Methods

execute_cli_client_command(self, command: str, *, timeout: int = 120, expected_return_codes: Iterable = frozenset({0})) -> str - Execute any command passed through command parameter with command line interface client tool.

get_switch_stats(self, switch_id: int = 1) -> SwitchStats - Get command line interface client switch stats.

get_vsi_statistics(self, vsi_id: int = 1) -> VSIStats - Get command line interface client vsi stats.

prepare_vm_vsi(self, vf_amount: Union[int, str] = 1) -> None - For vf_amount VFs, create a VM node and map each VF to a VM node (vf0:vm1, vf1:vm2 ...).

add_psm_vm_node(self, vm_id: Union[int, str] = 1) -> None - Creates a VM node in the PSM tree with vm_id.

add_group_vf2vm(self, psm_vf2vm: Dict[int, List[int]]) -> None: - From a Dict containing VMs each with a list of VFs, create full vf2vm topology in PSM.

add_vf_to_vm_node(self, vf_id: Union[int, str] = 0, vm_id: Union[int, str] = 1) -> None - Attaches a VF to a VM node in the PSM tree.

find_vf_vsi(self, vf_amount: int = 1) -> Dict - Find VSI per VF.

get_mac_and_vsi_list(self) -> List[VsiListEntry] - Get MAC and VSI list.

get_tc_priorities_switch(self, switch_id: int = 1) -> TrafficClassCounters - Get Traffic Class priorities from switch stats.

apply_up_tc_changes(self, config_file_path: Union[Path,str]) -> None - Apply the up2tc file configuration changes.

apply_tuprl_changes(self, config_file_path: Union[Path, str]) -> None: - Apply the tuprl file configuration changes.

apply_vmrl_changes(self, config_file_path: Union[Path, str]) -> None: - Apply the vmrl file configuration changes.

apply_grl_changes(self, config_file_path: Union[Path, str]) -> None: - Apply the grl file configuration changes.

apply_fxprl_changes(self, config_file_path: Union[Path, str]) -> None: - Apply the fxprl file configuration changes.

apply_mrl_changes(self, config_file_path: Union[Path, str]) -> None: - Apply the mrl file configuration changes.

configure_up_up_translation(self, vsi_id: int = 0, different_value: bool = False) -> None - Configure UP-UP translation from the CLI tool such that each NUP value maps to same VUP value.

get_vsi_config_list(self) -> List[VsiConfigListEntry] - Get list containing all data in the VSI table.

send_link_change_event_all_pf(self, link_status: str, link_speed: str = "200000Mbps") -> None: - Send link change event to set link status and speed for all pfs send_link_change_event_per_pf(self, link_status: str, link_speed: str = "200000Mbps", pf_num: int = 0, vport_id: Optional[int] = None) -> None: - Send link change event to set link status and speed for a particular pf and vport

create_mirror_profile(self, profile_id: int, vsi_id: int) -> None: - Create mirror profile to mirror packets to the specified vsi

add_psm_vm_rl(self, vm_id: Union[int, str] = 1, limit: int = 10000, burst: int = 2048) -> None - Create mirror profile to mirror packets to the specified vsi

read_qos_vm_info(self) -> Dict[int, Dict[int, List[int]]] - Query VF2VM mapping and return a dict of host keys, with values of dict of vm keys with list of vsi indexes. Or nothing if they dont exist.

Implemented structures

@dataclass
class FlowStats:
    """Structure for single direction statistics."""
    traffic_class_counters: List[int]
    packet: int
    discards: int
@dataclass
class SwitchStats:
    """Structure for both directions statistics."""
    egress: FlowStats
    ingress: FlowStats
    unicast_packet: int
    multicast_packet: int
    broadcast_packet: int
@dataclass
class VSIFlowStats:
    """Structure for VSI statistics."""

    packet: int
    unicast_packet: int
    multicast_packet: int
    broadcast_packet: int
    discards_packet: int
    errors_packet: int
    unknown_packet: int | None = None
@dataclass
class VSIStats:
    """Structure for both directions VSI statistics."""

    ingress: VSIFlowStats
    egress: VSIFlowStats
@dataclass
class TrafficClassCounters:
    """Structure for both directions Traffic Classes Counter."""
    tx: List[int]
    rx: List[int]
@dataclass
class VsiListEntry:
    """Structure for an entry in VSI list containing VSI ID and MAC address."""

    vsi_id: int
    mac: MACAddress
@dataclass
class VsiConfigListEntry:
    """Structure for an entry in VSI Config list containing all fields."""

    fn_id: int
    host_id: int
    is_vf: bool
    vsi_id: int
    vport_id: int
    is_created: bool
    is_enabled: bool
    mac: MACAddress
class LinkStatus(IntEnum):
    """Link Status enum represents link state."""

    DOWN = 0
    UP = 1

OS supported:

  • Linux

Issue reporting

If you encounter any bugs or have suggestions for improvements, you're welcome to contribute directly or open an issue here.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mfd_cli_client-1.12.0-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

File details

Details for the file mfd_cli_client-1.12.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mfd_cli_client-1.12.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ebc1aa776242671403d7af4ea1cfb1892b6209e2dc42f4c47e8b70403f894231
MD5 aac2a716696c026f550f5763558435d7
BLAKE2b-256 d6a5927df732f75397ca011f90fb91af92675156aad0ac231efcd89aeea6d0a4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page