[docs]@register_command@dataclassclassC_LOGON:""" You log on to the chassis by setting the value of this command to the correct password for the chassis. All other commands will fail if the session has not been logged on. """code:typing.ClassVar[int]=1pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classSetDataAttr(RequestBodyStruct):password:str=field(XmpStr())"""string, containing the password value."""
[docs]defset(self,password:str)->Token[None]:"""Set the password for creating a tester management session and logging on to the tester. :param password: password for creating a tester management session and logging on to the tester. :type password: str """returnToken(self._connection,build_set_request(self,password=password))
[docs]@register_command@dataclassclassC_OWNER:""" Identify the owner of the management session. The name can be any short quoted string up to eight characters long. This name will be used when reserving ports prior to updating their configuration. There is no authentication of the users, and the chassis does not have any actual user accounts. Multiple concurrent connections may use the same owner name, but only one connection can have any particular resource reserved at any given time. Until an owner is specified the chassis configuration can only be read. Once specified, the session can reserve ports for that owner, and will inherit any existing reservations for that owner retained at the chassis. Maximum 32 ASCII characters. """code:typing.ClassVar[int]=2pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):username:str=field(XmpStr())"""string, containing the name of the owner of this session."""
[docs]classSetDataAttr(RequestBodyStruct):username:str=field(XmpStr())"""string, containing the name of the owner of this session."""
[docs]defget(self)->Token[GetDataAttr]:"""Get the username of this chassis management session. :return: The username of this chassis management session. :rtype: C_OWNER.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]defset(self,username:str)->Token[None]:"""Set the username of this chassis management session. :param username: the username of this chassis management session. :type username: str """returnToken(self._connection,build_set_request(self,username=username))
[docs]@register_command@dataclassclassC_KEEPALIVE:""" You can request this value from the chassis, simply to let it (as well as and any routers and proxies between you) know that the connection is still valid. """code:typing.ClassVar[int]=3pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):tick_count:int=field(XmpInt())"""integer, an increasing number from the chassis."""
[docs]defget(self)->Token[GetDataAttr]:"""Get the tick count value. :return: an increasing number from the chassis. :rtype: C_KEEPALIVE.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_TIMEOUT:""" The maximum number of idle seconds allowed before the connection is timed out by the tester. """code:typing.ClassVar[int]=4pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):second_count:int=field(XmpInt())"""integer, the maximum idle interval, default is 130 seconds."""
[docs]classSetDataAttr(RequestBodyStruct):second_count:int=field(XmpInt())"""integer, the maximum idle interval, default is 130 seconds."""
[docs]defget(self)->Token[GetDataAttr]:"""Get the timeout value. :return: the maximum idle interval, default is 130 seconds. :rtype: C_TIMEOUT.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]defset(self,second_count:int)->Token[None]:"""Set the timeout value. :param second_count: the maximum idle interval, default is 130 seconds. :type second_count: int """returnToken(self._connection,build_set_request(self,second_count=second_count))
[docs]@register_command@dataclassclassC_RESERVATION:""" You set this command to reserve, release, or relinquish the chassis itself. The chassis must be reserved before any of the chassis-level parameters can be changed. The owner of the session must already have been specified. Reservation will fail if any modules or ports are reserved for other users. NOTICE: Before reserve Tester need to reserve all the ports on it, otherwise ``<STATUS_NOTVALID>`` """code:typing.ClassVar[int]=5pushed:typing.ClassVar[bool]=True_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):operation:ReservedStatus=field(XmpByte())"""coded byte, containing the operation to perform. The reservation parameters are asymmetric with respect to set/get. When set, it contains the operation to perform. When get, it contains the status. """
[docs]classSetDataAttr(RequestBodyStruct):operation:ReservedAction=field(XmpByte())"""coded byte, containing the operation to perform. The reservation parameters are asymmetric with respect to set/get. When set, it contains the operation to perform. When get, it contains the status. """
[docs]defget(self)->Token[GetDataAttr]:"""Get the chassis reservation status. :return: the status of chassis reservation. :rtype: C_RESERVATION.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]defset(self,operation:ReservedAction)->Token[None]:"""Set the chassis reservation operation to be performed. :param operation: reservation operation to be performed. :type operation: ReservedAction """returnToken(self._connection,build_set_request(self,operation=operation))
set_release=functools.partialmethod(set,ReservedAction.RELEASE)"""Release the ownership of the tester. """set_reserve=functools.partialmethod(set,ReservedAction.RESERVE)"""Reserve the tester. """set_relinquish=functools.partialmethod(set,ReservedAction.RELINQUISH)"""Release the ownership of the tester from another user. """
[docs]@register_command@dataclassclassC_RESERVEDBY:""" Identify the user who has the chassis reserved. The empty string if the chassis is not currently reserved. """code:typing.ClassVar[int]=6pushed:typing.ClassVar[bool]=True_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):username:str=field(XmpStr())"""string, containing the name of the current owner of the chassis."""
[docs]defget(self)->Token[GetDataAttr]:"""Get the username of the current owner of the tester. :return: the username of the current owner of the tester. :rtype: C_RESERVEDBY.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_LOGOFF:""" Terminates the current scripting session. Courtesy only, the chassis will also handle disconnection at the TCP/IP level """code:typing.ClassVar[int]=7pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]defset(self)->Token[None]:"""Log off from the tester and close the management session. """returnToken(self._connection,build_set_request(self))
[docs]@register_command@dataclassclassC_DOWN:""" Shuts down the chassis, and either restarts it in a clean state or leaves it powered off. """code:typing.ClassVar[int]=8pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classSetDataAttr(RequestBodyStruct):magic:int=field(XmpInt())"""integer, must be the special value -1480937026."""operation:ChassisShutdownAction=field(XmpByte())"""coded byte, what to do after shutting chassis down."""
[docs]defset(self,operation:ChassisShutdownAction)->Token[None]:"""Shuts down the chassis, and either restarts it in a clean state or leaves it powered off. :param operation: what to do after shutting chassis down. :type operation: ChassisShutdownAction """returnToken(self._connection,build_set_request(self,magic=-1480937026,operation=operation))
set_restart=functools.partialmethod(set,ChassisShutdownAction.RESTART)"""Shuts down the tester and then restarts it. """set_poweroff=functools.partialmethod(set,ChassisShutdownAction.POWER_OFF)"""Shuts down the tester and leaves it powered off. """
[docs]@register_command@dataclassclassC_CAPABILITIES:""" A series of integer values specifying various internal limits (aka. capabilities) of the chassis. """code:typing.ClassVar[int]=9pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):version:int=field(XmpInt())"""integer, chassis software build number."""max_name_len:int=field(XmpInt())"""integer, max ASCII characters in chassis name."""max_comment_len:int=field(XmpInt())"""integer, max ASCII characters in chassis comment."""max_password_len:int=field(XmpInt())"""integer, max ASCII characters in chassis password."""max_ext_rate:int=field(XmpInt())"""integer, maximum rate for external traffic."""max_session_count:int=field(XmpInt())"""integer, max number of management and scripting sessions."""max_chain_depth:int=field(XmpInt())"""integer, max chain index."""max_module_count:int=field(XmpInt())"""integer, maximum number of L23 modules."""max_protocol_count:int=field(XmpInt())"""integer, max protocol segments in a packet."""can_stream_based_arp:int=field(XmpInt())"""integer, does server support stream-based ARP/NDP?"""can_sync_traffic_start:int=field(XmpInt())"""integer, does server support synchronous traffic start?"""can_read_log_files:int=field(XmpInt())"""integer, can clients read debug log files from server?"""can_par_module_upgrade:int=field(XmpInt())"""integer, can server handle parallel module upgrades?"""can_upgrade_timekeeper:int=field(XmpInt())"""integer, is server capable of upgrading the TimeKeeper application?"""can_custom_defaults:int=field(XmpInt())"""integer, can server handle custom default values for XMP parameters?"""can_latency_f2f:int=field(XmpInt())"""integer, can server handle first-to-first latency mode?"""max_owner_name_length:int=field(XmpInt())"""integer, max number of ASCII characters in C_OWNER name"""can_read_temperatures:int=field(XmpInt())"""integer, can the server read out chassis and/or CPU temperatures? (C_TEMPERATURE ?)"""
[docs]defget(self)->Token[GetDataAttr]:"""Get the internal limits (capabilities) of the tester. :return: A series of integer values specifying various internal limits - chassis software build number - max ASCII characters in chassis name - max ASCII characters in chassis comment - max ASCII characters in chassis password - maximum rate for external traffic - max number of management and scripting sessions - max chain index - maximum number of L23 modules - max protocol segments in a packet - does server support stream-based ARP/NDP? - does server support synchronous traffic start? - can clients read debug log files from server? - can server handle parallel module upgrades? - is server capable of upgrading the TimeKeeper application? - can server handle custom default values for XMP parameters? - can server handle first-to-first latency mode? - max number of ASCII characters in ``C_OWNER`` name - can the server read out chassis and/or CPU temperatures? :rtype: C_CAPABILITIES.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_MODEL:""" Gets the specific model of this Xena chassis. """code:typing.ClassVar[int]=10pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):model:str=field(XmpStr())"""string, the Xena model designation for the chassis."""
[docs]defget(self)->Token[GetDataAttr]:"""Get the model of this Xena tester. :return: the model of the Xena tester :rtype: C_MODEL.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_SERIALNO:""" Gets the unique serial number of this particular Xena chassis. """code:typing.ClassVar[int]=11pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):serial_number:int=field(XmpInt())"""integer, the serial number of this chassis."""
[docs]defget(self)->Token[GetDataAttr]:"""Get the serial number of this Xena tester. :return: the serial number of the Xena tester :rtype: C_SERIALNO.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_VERSIONNO:""" Gets the major version numbers for the chassis firmware and the Xena PCI driver installed on the chassis. """code:typing.ClassVar[int]=12pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):chassis_major_version:int=field(XmpInt())"""integer, the chassis firmware major version number."""pci_driver_version:int=field(XmpInt())"""integer, the cXena PCI driver version."""
[docs]defget(self)->Token[GetDataAttr]:"""Gets the major version numbers for the tester firmware and the Xena PCI driver installed on the chassis. :return: the firmware major version number of the tester and the PCI driver version :rtype: C_VERSIONNO.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_PORTCOUNTS:""" Gets the number of ports in each module slot of the chassis, and indirectly the number of slots and modules. .. note:: CFP modules return the number 8 which is the maximum number of 10G ports, but the actual number of ports can be configured dynamically using the M_CFPCONFIGEXT` command. """code:typing.ClassVar[int]=13pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):port_counts:typing.List[int]=field(XmpSequence(types_chunk=[XmpByte()]))"""list of bytes, the number of ports, typically 2 or 6, or 0 for an empty slot."""
[docs]defget(self)->Token[GetDataAttr]:"""Get the number of ports in each module slot of the tester, and indirectly the number of slots and modules. :return: the number of ports of each module slot of the tester, 0 for an empty slot. :rtype: C_PORTCOUNTS.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_PORTERRORS:""" Gets the number of errors detected across all streams on each port of each test module of the chassis. The counts are ordered in sequence with those of the module in the lowest numbered chassis slot first. Empty slots are skipped so that a chassis with a 6-port and a 2-port test module will return eight counts regardless of which slots they are in. .. note:: CFP modules return eight error counts since they can be configured as up to eight 10G ports. When in 100G and 40G mode only the first one or two counts are significant. .. note:: FCS errors are included, which leads to double-counting for streams detecting lost packets using the test payload mechanism. """code:typing.ClassVar[int]=16pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):error_count:typing.List[int]=field(XmpSequence(types_chunk=[XmpLong()]))"""list of long integers, the total number of errors across all streams, and including FCS errors."""
[docs]defget(self)->Token[GetDataAttr]:"""Gets the number of errors detected across all streams on each port of each test module of the chassis. The counts are ordered in sequence with those of the module in the lowest numbered chassis slot first. Empty slots are skipped so that a chassis with a 6-port and a 2-port test module will return eight counts regardless of which slots they are in. :return: the total number of errors across all streams, and including FCS errors. :rtype: C_PORTERRORS.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_REMOTEPORTCOUNTS:""" Gets the number of ports of each remote module. A remote module is a relative to the xenaserver, for example, xenal47server. The first integer in the returned list is always 0 because it represents the xenaserver, which is not a remote module. """code:typing.ClassVar[int]=17pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):port_counts:typing.List[int]=field(XmpSequence(types_chunk=[XmpByte()]))"""list of bytes, the number of ports, typically 2 or 6, or 0 for an empty slot."""
[docs]defget(self)->Token[GetDataAttr]:"""Gets the number of ports of each remote module. A remote module is a relative to the xenaserver, for example, xenal47server. The first integer in the returned list is always 0 because it represents the xenaserver, which is not a remote module. :return: the number of ports of each module slot of the tester, 0 for an empty slot. :rtype: C_REMOTEPORTCOUNTS.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_BUILDSTRING:""" Identify the hostname of the PC that builds the xenaserver. It uniquely identifies the build of a xenaserver. """code:typing.ClassVar[int]=19pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):build_string:str=field(XmpStr())"""string, identify the hostname of the PC that builds the xenaserver"""
[docs]defget(self)->Token[GetDataAttr]:"""Get the build string of the xenaserver. :return: build string that identifies the hostname of the PC that builds the xenaserver :rtype: C_BUILDSTRING.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_NAME:""" The name of the chassis, as it appears at various places in the user interface. The name is also used to distinguish the various chassis contained within a testbed and in files containing the configuration for an entire test case. """code:typing.ClassVar[int]=20pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):chassis_name:str=field(XmpStr())"""string, containing the name of the chassis."""
[docs]classSetDataAttr(RequestBodyStruct):chassis_name:str=field(XmpStr())"""string, containing the name of the chassis."""
[docs]defget(self)->Token[GetDataAttr]:"""Get the name of the tester :return: the name of the tester :rtype: C_NAME.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]defset(self,chassis_name:str)->Token[None]:"""Set the name of the tester :param chassis_name: the name of the tester :type chassis_name: str """returnToken(self._connection,build_set_request(self,chassis_name=chassis_name))
[docs]@register_command@dataclassclassC_COMMENT:""" The description of the chassis. """code:typing.ClassVar[int]=21pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):comment:str=field(XmpStr())"""string, containing the description of the chassis."""
[docs]classSetDataAttr(RequestBodyStruct):comment:str=field(XmpStr())"""string, containing the description of the chassis."""
[docs]defget(self)->Token[GetDataAttr]:"""Get the description of the tester. :return: the description of the tester :rtype: C_COMMENT.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]defset(self,comment:str)->Token[None]:"""Set the description of the tester. :param comment: the description of the tester :type comment: str """returnToken(self._connection,build_set_request(self,comment=comment))
[docs]@register_command@dataclassclassC_PASSWORD:""" The password of the chassis, which must be provided when logging on to the chassis. """code:typing.ClassVar[int]=22pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):password:str=field(XmpStr())"""string, containing the password for the chassis."""
[docs]classSetDataAttr(RequestBodyStruct):password:str=field(XmpStr())"""string, containing the password for the chassis."""
[docs]defget(self)->Token[GetDataAttr]:"""Get the password of the tester. :return: the password of the tester :rtype: C_PASSWORD.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]defset(self,password:str)->Token[None]:"""Set the password of the tester. :param password: the password of the tester :type password: str """returnToken(self._connection,build_set_request(self,password=password))
[docs]@register_command@dataclassclassC_VERSIONSTR:""" Returns xenaserver version number in the new format, e.g. "467.0.0+1.0" Obsoletes C_VERSIONNO and C_VERSIONNO_MINOR """code:typing.ClassVar[int]=23pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):version_str:str=field(XmpStr())"""string, xenaserver version number in the new format."""
[docs]defget(self)->Token[GetDataAttr]:"""Returns xenaserver version number in the new format. :return: xenaserver version number in the new format :rtype: C_VERSIONSTR.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_IPADDRESS:""" The network configuration parameters of the chassis management port. """code:typing.ClassVar[int]=24pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):ipv4_address:ipaddress.IPv4Address=field(XmpIPv4Address())"""address, the static IP address of the chassis."""subnet_mask:ipaddress.IPv4Address=field(XmpIPv4Address())"""address, the subnet mask of the local network segment."""gateway:ipaddress.IPv4Address=field(XmpIPv4Address())"""address, the gateway of the local network segment."""
[docs]classSetDataAttr(RequestBodyStruct):ipv4_address:ipaddress.IPv4Address=field(XmpIPv4Address())"""address, the static IP address of the chassis."""subnet_mask:ipaddress.IPv4Address=field(XmpIPv4Address())"""address, the subnet mask of the local network segment."""gateway:ipaddress.IPv4Address=field(XmpIPv4Address())"""address, the gateway of the local network segment."""
[docs]defget(self)->Token[GetDataAttr]:"""Get the IP configuration information of the tester. :return: - the static IP address of the chassis - the subnet mask of the local network segment - the gateway of the local network segment :rtype: C_IPADDRESS.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]defset(self,ipv4_address:ipaddress.IPv4Address,subnet_mask:ipaddress.IPv4Address,gateway:ipaddress.IPv4Address)->Token[None]:"""the IP configuration information of the tester. :param ipv4_address: the static IP address of the chassis :type ipv4_address: ipaddress.IPv4Address :param subnet_mask: the subnet mask of the local network segment :type subnet_mask: ipaddress.IPv4Address :param gateway: the gateway of the local network segment :type gateway: ipaddress.IPv4Address """returnToken(self._connection,build_set_request(self,ipv4_address=ipv4_address,subnet_mask=subnet_mask,gateway=gateway))
[docs]@register_command@dataclassclassC_DHCP:""" Controls whether the chassis will use DHCP to get the management IP address. """code:typing.ClassVar[int]=25pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):on_off:OnOff=field(XmpByte())"""coded byte, whether DHCP is enabled or disabled."""
[docs]classSetDataAttr(RequestBodyStruct):on_off:OnOff=field(XmpByte())"""coded byte, whether DHCP is enabled or disabled."""
[docs]defget(self)->Token[GetDataAttr]:"""Get whether DHCP is enabled for getting management IP. :return: whether DHCP is enabled. :rtype: C_DHCP.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]defset(self,on_off:OnOff)->Token[None]:"""Set DHCP for getting management IP. :param on_off: whether DHCP is enabled or disabled. :type on_off: OnOff """returnToken(self._connection,build_set_request(self,on_off=on_off))
set_off=functools.partialmethod(set,OnOff.OFF)"""Disable DHCP for for getting management IP. """set_on=functools.partialmethod(set,OnOff.ON)"""Enable on to DHCP for for getting management IP. """
[docs]@register_command@dataclassclassC_MACADDRESS:""" Get the MAC address for the chassis management port. """code:typing.ClassVar[int]=26pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):mac_address:Hex=field(XmpMacAddress())"""six hex bytes, indicating the MAC address"""
[docs]defget(self)->Token[GetDataAttr]:"""Get the MAC address for the chassis management port. :return: the MAC address for the chassis management port :rtype: C_MACADDRESS.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_HOSTNAME:""" Get or set the chassis hostname used when DHCP is enabled. """code:typing.ClassVar[int]=27pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):hostname:str=field(XmpStr())"""string, hostname for chassis (default value "xena-")"""
[docs]classSetDataAttr(RequestBodyStruct):hostname:str=field(XmpStr())"""string, hostname for chassis (default value "xena-")"""
[docs]defget(self)->Token[GetDataAttr]:"""Get the chassis hostname used when DHCP is enabled. :return: the chassis hostname :rtype: C_HOSTNAME.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]defset(self,hostname:str)->Token[None]:"""Set the chassis hostname. :param hostname: the chassis hostname :type hostname: str """returnToken(self._connection,build_set_request(self,hostname=hostname))
[docs]@register_command@dataclassclassC_FLASH:""" Make all the test port LEDs flash on and off with a 1-second interval. This is helpful if you have multiple chassis mounted side by side and you need to identify a specific one. NOTICE: Require Tester to be reserved before change value. """code:typing.ClassVar[int]=28pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):on_off:OnOff=field(XmpByte())"""coded byte, determines whether to blink all test port LEDs."""
[docs]classSetDataAttr(RequestBodyStruct):on_off:OnOff=field(XmpByte())"""coded byte, determines whether to blink all test port LEDs."""
[docs]defget(self)->Token[GetDataAttr]:"""Get the status of test port LEDs. :return: the blinking status of test port LEDs :rtype: C_FLASH.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]defset(self,on_off:OnOff)->Token[None]:"""Set test ports LEDs blinking status. :param on_off: determines whether to blink all test port LEDs. :type on_off: OnOff """returnToken(self._connection,build_set_request(self,on_off=on_off))
set_off=functools.partialmethod(set,OnOff.OFF)"""Disable flashing test port LEDs. """set_on=functools.partialmethod(set,OnOff.ON)"""Enable flashing test port LEDs. """
[docs]@register_command@dataclassclassC_DEBUGLOGS:""" Allows to dump all the logs of a chassis. """code:typing.ClassVar[int]=30pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):message_length:int=field(XmpInt())"""integer, length of the message."""data:Hex=field(XmpHex())"""list of hex bytes, all the logs of a chassis"""
[docs]defget(self)->Token[GetDataAttr]:"""Get chassis logs. :return: length of the message and all the logs of the chassis :rtype: C_DEBUGLOGS.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_TEMPERATURE:""" Get chassis temperature readings, if supported. Unit is millidegree Celsius. """code:typing.ClassVar[int]=31pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):mb1_temperature:int=field(XmpInt())"""integer, the temperature of motherboard 1. Unit is millidegree Celsius."""mb2_temperature:int=field(XmpInt())"""integer, the temperature of motherboard 2. Unit is millidegree Celsius."""cpu_temperature:int=field(XmpInt())"""integer, the temperature of CPU. Unit is millidegree Celsius."""
[docs]defget(self)->Token[GetDataAttr]:"""Get chassis temperature readings. :return: - the temperature of motherboard 1 (millidegree Celsius) - the temperature of motherboard 2 (millidegree Celsius) - the temperature of CPU (millidegree Celsius) :rtype: C_TEMPERATURE.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_RESTPORT:""" The TCP port used by the REST API server. """code:typing.ClassVar[int]=32pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):tcp_port:int=field(XmpInt())"""integer, containing the TCP port number (default 57911)"""
[docs]classSetDataAttr(RequestBodyStruct):tcp_port:int=field(XmpInt())"""integer, containing the TCP port number (default 57911)"""
[docs]defget(self)->Token[GetDataAttr]:"""Get the TCP port number used by the REST API server. :return: the TCP port number used by the REST API server :rtype: xt.XmpInt """returnToken(self._connection,build_get_request(self))
[docs]defset(self,tcp_port:int)->Token[None]:"""Set the TCP port number used by the REST API server. :param tcp_port: the TCP port number (default 57911) :type tcp_port: int """returnToken(self._connection,build_set_request(self,tcp_port=tcp_port))
[docs]@register_command@dataclassclassC_RESTENABLE:""" Controls whether the chassis will run REST API server or not. The command takes affect only after chassis reset. To start/stop REST API server use ``C_RESTCONTROL`` command. """code:typing.ClassVar[int]=33pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):on_off:OnOff=field(XmpByte())"""coded byte, determines whether REST API server should be enabled or disabled."""
[docs]classSetDataAttr(RequestBodyStruct):on_off:OnOff=field(XmpByte())"""coded byte, determines whether REST API server should be enabled or disabled."""
[docs]defget(self)->Token[GetDataAttr]:"""Get the On/Off status of the REST API server. :return: the status of the REST API server, whether it is enabled. :rtype: xt.XmpByte """returnToken(self._connection,build_get_request(self))
[docs]defset(self,on_off:OnOff)->Token[None]:"""Set the On/Off status of the REST API server. :param on_off: determines whether REST API server should be enabled or disabled :type on_off: OnOff """returnToken(self._connection,build_set_request(self,on_off=on_off))
set_off=functools.partialmethod(set,OnOff.OFF)"""Disable the REST API server. """set_on=functools.partialmethod(set,OnOff.ON)"""Enable the REST API server. """
[docs]@register_command@dataclassclassC_RESTCONTROL:""" Controls REST API server. This command should be used with extra care as it can affect other users using the server. """code:typing.ClassVar[int]=34pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classSetDataAttr(RequestBodyStruct):operation:RESTControlAction=field(XmpByte())"""coded byte, what to do with the REST API server."""
[docs]defset(self,operation:RESTControlAction)->Token[None]:"""Controlling the REST API server. :param operation: what to do with the REST API server :type operation: RESTControlAction """returnToken(self._connection,build_set_request(self,operation=operation))
[docs]@register_command@dataclassclassC_RESTSTATUS:""" Gets the REST API server operation status - whether it is active (running) or not. To get the admin status (whether the server is enabled or disabled) use ``C_RESTCONTROL`` command. """code:typing.ClassVar[int]=35pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):status:ServiceStatus=field(XmpByte())"""coded byte, determines the REST API server running status."""
[docs]defget(self)->Token[GetDataAttr]:"""Get the operation status of th REST API server. :return: the operation status of th REST API server :rtype: C_RESTSTATUS.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_WATCHDOG:""" If the chassis stalls for a long time, when the timer expires the chassis will be rebooted automatically. """code:typing.ClassVar[int]=36pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):timer_value:int=field(XmpInt())"""integer, the timer value that reboots the chassis. Unit = second."""
[docs]classSetDataAttr(RequestBodyStruct):timer_value:int=field(XmpInt())"""integer, the timer value that reboots the chassis. Unit = second."""
[docs]defget(self)->Token[GetDataAttr]:"""Get the time value that reboots the chassis if it stalls for a long time. :return: the timer value that reboots the chassis. Unit = second. :rtype: C_WATCHDOG.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]defset(self,timer_value:int)->Token[None]:"""Set the time value that reboots the chassis if it stalls for a long time. :param timer_value: the timer value that reboots the chassis :type timer_value: int """returnToken(self._connection,build_set_request(self,timer_value=timer_value))
[docs]@register_command@dataclassclassC_INDICES:""" Gets the session indices for all current sessions on the chassis. """code:typing.ClassVar[int]=40pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):session_ids:typing.List[int]=field(XmpSequence(types_chunk=[XmpInt()]))"""list of integers, the session indices for all current sessions on the chassis."""
[docs]defget(self)->Token[GetDataAttr]:"""Gets the session indices for all current sessions on the chassis. :return: the session indices for all current sessions on the chassis :rtype: C_INDICES.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_STATSESSION:""" Gets information and statistics for a particular session on the chassis. """code:typing.ClassVar[int]=41pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'_session_xindex:int
[docs]classGetDataAttr(ResponseBodyStruct):session_type:ChassisSessionType=field(XmpInt())"""coded integer, which kind of session."""ipv4_address:ipaddress.IPv4Address=field(XmpIPv4Address())"""address, client IP address."""owner:str=field(XmpStr())"""string, the name of the session owner."""operation_count:int=field(XmpLong())"""long integer, number of operations done during the session."""requested_byte_count:int=field(XmpLong())"""long integer, number of bytes received by the chassis."""responded_byte_count:int=field(XmpLong())"""long integer, number of bytes sent by the chassis."""
[docs]defget(self)->Token[GetDataAttr]:"""Gets information and statistics for a particular session on the chassis. :return: - type of session - client IP address - the name of the session owner - number of operations done during the session - number of bytes received by the chassis - number of bytes sent by the chassis :rtype: C_STATSESSION.GetDataAttr """returnToken(self._connection,build_get_request(self,indices=[self._session_xindex]))
[docs]@register_command@dataclassclassC_HEALTH:""" Gets the chassis system health information. """code:typing.ClassVar[int]=47pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'_sub_indices:typing.List[int]
[docs]classGetDataAttr(ResponseBodyStruct):info:str=field(XmpStr())"""Chassis health information json string"""
[docs]defget(self)->Token[GetDataAttr]:"""Gets the Chassis health information. :return: Chassis health information json string :rtype: C_HEALTH.GetDataAttr """returnToken(self._connection,build_get_request(self,indices=self._sub_indices))
[docs]@register_command@dataclassclassC_TKLICFILE:""" Get Xena TimeKeeper license file content. """code:typing.ClassVar[int]=49pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]@register_command@dataclassclassC_TKLICSTATE:""" Get the state of the Xena TimeKeeper license file content. """code:typing.ClassVar[int]=50pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]defget(self)->Token[GetDataAttr]:"""Get the state of the Xena TimeKeeper license file content. :return: - timekeeper license state - license type - license errors :rtype: C_TKLICSTATE.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_FILESTART:""" Initiates upload of a file to the chassis. This command should be followed by a sequence og ``C_FILEDATA`` parameters to provide the file content, and finally a ``C_FILEFINISH`` to commit the new file to the chassis. """code:typing.ClassVar[int]=51pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classSetDataAttr(RequestBodyStruct):file_type:Hex=field(XmpHex(size=4))"""four hex bytes, little-endian integer, the file type, should be 1."""size:Hex=field(XmpHex(size=4))"""four hex bytes, little-endian integer, the number of bytes in the file."""time:Hex=field(XmpHex(size=4))"""four hex bytes, little-endian integer, the Linux date+time of the file."""mode:Hex=field(XmpHex(size=4))"""four hex bytes, little-endian integer, the Linux permissions of the file."""checksum:Hex=field(XmpHex(size=4))"""four hex bytes, little-endian integer, the checksum of the file."""name:str=field(XmpStr())"""string, the name and location of the file, as a full path."""
[docs]defset(self,file_type:Hex,size:Hex,time:Hex,mode:Hex,checksum:Hex,name:str)->Token[None]:"""Initiates upload of a file to the chassis. :param file_type: the file type, should be 1 :type file_type: str :param size: the number of bytes in the file :type size: str :param time: he Linux date+time of the file :type time: str :param mode: the Linux permissions of the file :type mode: str :param checksum: the checksum of the file :type checksum: str :param name: the name and location of the file, as a full path :type name: str """returnToken(self._connection,build_set_request(self,file_type=file_type,size=size,time=time,mode=mode,checksum=checksum,name=name))
[docs]@register_command@dataclassclassC_FILEDATA:""" Uploads a fragment of a file to the chassis. """code:typing.ClassVar[int]=52pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classSetDataAttr(RequestBodyStruct):offset:int=field(XmpInt())"""integer, the position within the file."""data_bytes:Hex=field(XmpHex())"""list of hex bytes, the data content of a section of the file."""
[docs]defset(self,offset:int,data_bytes:Hex)->Token[None]:"""Uploads a fragment of a file to the chassis. :param offset: the position within the file :type offset: int :param data_bytes: the data content of a section of the file :type data_bytes: str """returnToken(self._connection,build_set_request(self,offset=offset,data_bytes=data_bytes))
[docs]@register_command@dataclassclassC_FILEFINISH:""" Completes upload of a file to the chassis. After validation it will replace any existing file with the same name. """code:typing.ClassVar[int]=53pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classSetDataAttr(RequestBodyStruct):magic:int=field(XmpInt())"""integer, must be the special value -1480937026."""
[docs]defset(self)->Token[None]:"""Completes upload of a file to the chassis. After validation it will replace any existing file with the same name. """returnToken(self._connection,build_set_request(self,magic=-1480937026))
[docs]@register_command@dataclassclassC_TRAFFIC:""" Starts or stops the traffic on a number of ports on the chassis simultaneously. The ports are identified by pairs of integers (module port). """code:typing.ClassVar[int]=55pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classSetDataAttr(RequestBodyStruct):on_off:OnOff=field(XmpByte())"""coded byte, determines whether to start or stop traffic generation."""module_ports:typing.List[int]=field(XmpSequence(types_chunk=[XmpInt()]))"""list of integers, specifies ports on modules, which should stop or start generating traffic."""
[docs]defset(self,on_off:OnOff,module_ports:typing.List[int])->Token[None]:"""Starts or stops the traffic on a number of ports on the chassis simultaneously. :param on_off: determines whether to start or stop traffic generation :type on_off: OnOff :param module_ports: specifies ports on modules, which should stop or start generating traffic :type module_ports: typing.List[int] """returnToken(self._connection,build_set_request(self,on_off=on_off,module_ports=module_ports))
set_off=functools.partialmethod(set,OnOff.OFF)"""Stop the traffic on a number of ports on the chassis simultaneously. """set_on=functools.partialmethod(set,OnOff.ON)"""Start the traffic on a number of ports on the chassis simultaneously. """
[docs]@register_command@dataclassclassC_VERSIONNO_MINOR:""" Gets the minor version number for the chassis firmware. The full version of the chassis firmware is thus where the number is obtained with the ``C_VERSIONNO`` command and the number is obtained with the ``C_VERSIONNO_MINOR`` command. """code:typing.ClassVar[int]=56pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):chassis_minor_version:int=field(XmpInt())"""integer, the chassis firmware minor version number."""reserved_1:int=field(XmpInt())"""integer, reserved."""reserved_2:int=field(XmpInt())"""integer, reserved."""
[docs]defget(self)->Token[GetDataAttr]:"""Get the minor version number for the chassis firmware. :return: - the minor version number for the chassis firmware - reserved, 0 - reserved, 0 :rtype: C_VERSIONNO_MINOR.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_MULTIUSER:""" Enable or disable the ability to control one resource from several different TCP connections. """code:typing.ClassVar[int]=62pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):on_off:OnOff=field(XmpByte())"""coded byte, enable or disable the ability to control one resource from several different TCP connections"""
[docs]classSetDataAttr(RequestBodyStruct):on_off:OnOff=field(XmpByte())"""coded byte, enable or disable the ability to control one resource from several different TCP connections"""
[docs]defget(self)->Token[GetDataAttr]:"""Get the status of the ability to control one resource from several different TCP connections. :return: the status of the ability to control one resource from several different TCP connections :rtype: C_MULTIUSER.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]defset(self,on_off:OnOff)->Token[None]:"""Enable or disable the ability to control one resource from several different TCP connections. :param on_off: enable or disable the ability to control one resource from several different TCP connections :type on_off: OnOff """returnToken(self._connection,build_set_request(self,on_off=on_off))
set_off=functools.partialmethod(set,OnOff.OFF)"""Disable the ability to control one resource from several different TCP. """set_on=functools.partialmethod(set,OnOff.ON)"""Enable the ability to control one resource from several different TCP. """
[docs]@register_command@dataclassclassC_SCRIPT:""" To load and save CLI commands e.g. port configuration, through the binary XMP session. """code:typing.ClassVar[int]=64pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classSetDataAttr(RequestBodyStruct):command_string:str=field(XmpStr())"""string, text CLI command"""
[docs]defset(self,command_string:str)->Token[None]:"""Set the CLI commands through a binary XMP session. :param command_string: text CLI command :type command_string: str """returnToken(self._connection,build_set_request(self,command_string=command_string))
[docs]@register_command@dataclassclassC_TKSTATUS:""" Report TimeKeeper version and status. """code:typing.ClassVar[int]=65pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):status_string:str=field(XmpStr())"""string. Version, TimeKeeper license expiration, and TimeKeeper status. The string is formatted as shown in the example below. Each line is separated by. """
[docs]defget(self)->Token[GetDataAttr]:"""Get the version and status of TimeKeeper :return: Version, TimeKeeper license expiration, and TimeKeeper status. The string is formatted as shown in the example below. The format is shown below. TimeKeeper Status TimeKeeper version 8.0.3 License expires in 33 days (including grace period) TimeKeeper is not running :rtype: C_TKSTATUS.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_TKSVCSTATE:""" Get and control TimeKeeper service state. """code:typing.ClassVar[int]=66pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):state:TimeKeeperServiceStatus=field(XmpByte())"""coded byte, TimeKeeper service state"""
[docs]classSetDataAttr(RequestBodyStruct):state:TimeKeeperServiceAction=field(XmpByte())"""coded byte, TimeKeeper service state"""
[docs]defget(self)->Token[GetDataAttr]:"""Get TimeKeeper service state :return: TimeKeeper service state :rtype: C_TKSVCSTATE.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]defset(self,state:TimeKeeperServiceAction)->Token[None]:"""Control TimeKeeper service state :param state: TimeKeeper service state :type state: TimeKeeperServiceAction """returnToken(self._connection,build_set_request(self,state=state))
set_stop=functools.partialmethod(set,TimeKeeperServiceAction.STOP)"""Stop the TimerKeeper service. """set_start=functools.partialmethod(set,TimeKeeperServiceAction.START)"""Start the TimerKeeper service. """set_restart=functools.partialmethod(set,TimeKeeperServiceAction.RESTART)"""Restart the TimerKeeper service. """
[docs]@register_command@dataclassclassC_TIME:""" Get local chassis time in seconds. """code:typing.ClassVar[int]=69pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):local_time:int=field(XmpLong())"""long integer, local chassis time in seconds"""
[docs]defget(self)->Token[GetDataAttr]:"""Get local chassis time in seconds. :return: local chassis time in seconds :rtype: C_TIME.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_TRAFFICSYNC:""" Works just as the ``C_TRAFFIC`` command described above with an additional option to specify a point in time where traffic should be started. This can be used to start traffic simultaneously on multiple chassis. The ports are identified by pairs of integers (module port). .. note:: This requires that the chassis in question all use the TimeKeeper option to keep their CPU clocks synchronized. """code:typing.ClassVar[int]=70pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):on_off:OnOff=field(XmpByte())"""coded byte, status traffic generation."""timestamp:int=field(XmpLong())"""long integer, the time where traffic should be started, expressed as the number of seconds since January 1 2010, 00"""module_ports:typing.List[int]=field(XmpSequence(types_chunk=[XmpInt()]))"""list of integers, specifies ports on modules, which should stop or start traffic generation."""
[docs]classSetDataAttr(RequestBodyStruct):on_off:OnOff=field(XmpByte())"""coded byte, determines whether to start or stop traffic generation."""timestamp:int=field(XmpLong())"""long integer, the time where traffic should be started, expressed as the number of seconds since January 1 2010, 00"""module_ports:typing.List[int]=field(XmpSequence(types_chunk=[XmpInt()]))"""list of integers, specifies ports on modules, which should stop or start traffic generation."""
[docs]defget(self)->Token[GetDataAttr]:"""Get the status of traffic generation. :return: - status traffic generation - the time where traffic should be started, expressed as the number of seconds since January 1 2010, 00 - ports on modules, which should stop or start traffic generation :rtype: C_TRAFFICSYNC.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]defset(self,on_off:OnOff,timestamp:int,module_ports:typing.List[int])->Token[None]:"""Set the status of traffic generation. :param on_off: determines whether to start or stop traffic generation :type on_off: OnOff :param timestamp: the time where traffic should be started, expressed as the number of seconds since January 1 2010, 00 :type timestamp: int :param module_ports: specifies ports on modules, which should stop or start traffic generation. :type module_ports: typing.List[int] """returnToken(self._connection,build_set_request(self,on_off=on_off,timestamp=timestamp,module_ports=module_ports))
set_off=functools.partialmethod(set,OnOff.OFF)"""Stop traffic generation on the given ports simultaneously on different chassis. """set_on=functools.partialmethod(set,OnOff.ON)"""Start traffic generation on the given ports simultaneously on different chassis. """
[docs]@register_command@dataclassclassC_TKSTATUSEXT:""" Report TimeKeeper version and status (extended version). """code:typing.ClassVar[int]=71pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):status_string:str=field(XmpStr())"""string, extended status in JSON format. The string is formatted as shown in the example below. .. code-block::json { "FormatVersion": 1, "ApplicationVersion": 452.0, "TimeKeeperStatus": { "systemtimingstatus": "Waiting for good time source", "syncsource": "NTP", "sourcestate": "NTP server 10.0.0.110", "sourceaccuracy": " No updates yet", "versioninfo": "8.0.3", "timesincestart": "0 day(s) 0 hours 1 minutes", "timesinceboot": "0 day(s) 0 hours 2 minutes", "updatetime": 1637916837 } } """
[docs]defget(self)->Token[GetDataAttr]:"""Get the TimeKeeper version and status. :return: extended status in JSON format. The string is formatted as shown in the example below. .. code-block::json { "FormatVersion": 1, "ApplicationVersion": 452.0, "TimeKeeperStatus": { "systemtimingstatus": "Waiting for good time source", "syncsource": "NTP", "sourcestate": "NTP server 10.0.0.110", "versioninfo": "8.0.3", "timesincestart": "0 day(s) 0 hours 1 minutes", "timesinceboot": "0 day(s) 0 hours 2 minutes", "updatetime": 1637916837 } } :rtype: C_TKSTATUSEXT.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_MODEL_NAME:""" Get the Xena chassis model name. """code:typing.ClassVar[int]=457pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):name:ChassisModelName=field(XmpInt())"""ChassisModelName, the model of the Xena tester"""
[docs]defget(self)->Token[GetDataAttr]:"""Get the Xena chassis model name. :return: the model name of the Xena tester :rtype: C_MODEL_NAME.GetDataAttr """returnToken(self._connection,build_get_request(self))
[docs]@register_command@dataclassclassC_MODEL_NUMBER:""" Get the Xena chassis model number. """code:typing.ClassVar[int]=458pushed:typing.ClassVar[bool]=False_connection:'interfaces.IConnection'
[docs]classGetDataAttr(ResponseBodyStruct):number:ChassisModelNumber=field(XmpInt())"""ChassisModelNumber, the model of the Xena tester"""
[docs]defget(self)->Token[GetDataAttr]:"""Get the Xena chassis model number. :return: the model number of the Xena tester :rtype: C_MODEL_NUMBER.GetDataAttr """returnToken(self._connection,build_get_request(self))