tdl-xoa-driver 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tdl_xoa_driver-1.0.0.dist-info/LICENSE +202 -0
- tdl_xoa_driver-1.0.0.dist-info/METADATA +177 -0
- tdl_xoa_driver-1.0.0.dist-info/RECORD +325 -0
- tdl_xoa_driver-1.0.0.dist-info/WHEEL +5 -0
- tdl_xoa_driver-1.0.0.dist-info/top_level.txt +1 -0
- xoa_driver/__init__.py +2 -0
- xoa_driver/enums.py +399 -0
- xoa_driver/exceptions.py +77 -0
- xoa_driver/functions/__init__.py +0 -0
- xoa_driver/functions/anlt.py +744 -0
- xoa_driver/functions/anlt_ll_debug.py +429 -0
- xoa_driver/functions/cli.py +581 -0
- xoa_driver/functions/exceptions.py +72 -0
- xoa_driver/functions/headers.py +608 -0
- xoa_driver/functions/mgmt.py +515 -0
- xoa_driver/functions/tools.py +256 -0
- xoa_driver/hlfuncs.py +18 -0
- xoa_driver/internals/__init__.py +0 -0
- xoa_driver/internals/commands/__init__.py +31 -0
- xoa_driver/internals/commands/c_commands.py +2041 -0
- xoa_driver/internals/commands/enums.py +3289 -0
- xoa_driver/internals/commands/m4_commands.py +700 -0
- xoa_driver/internals/commands/m4e_commands.py +107 -0
- xoa_driver/internals/commands/m_commands.py +1875 -0
- xoa_driver/internals/commands/p4_commands.py +2221 -0
- xoa_driver/internals/commands/p4e_commands.py +160 -0
- xoa_driver/internals/commands/p4g_commands.py +7253 -0
- xoa_driver/internals/commands/p_commands.py +6000 -0
- xoa_driver/internals/commands/pc_commands.py +335 -0
- xoa_driver/internals/commands/pd_commands.py +355 -0
- xoa_driver/internals/commands/pe_commands.py +1018 -0
- xoa_driver/internals/commands/pec_commands.py +265 -0
- xoa_driver/internals/commands/ped_commands.py +1034 -0
- xoa_driver/internals/commands/pef_commands.py +2216 -0
- xoa_driver/internals/commands/pf_commands.py +379 -0
- xoa_driver/internals/commands/pl1_commands.py +1588 -0
- xoa_driver/internals/commands/pl_commands.py +178 -0
- xoa_driver/internals/commands/pm_commands.py +256 -0
- xoa_driver/internals/commands/pp_commands.py +2341 -0
- xoa_driver/internals/commands/pr_commands.py +812 -0
- xoa_driver/internals/commands/ps_commands.py +2311 -0
- xoa_driver/internals/commands/pt_commands.py +370 -0
- xoa_driver/internals/commands/px_commands.py +303 -0
- xoa_driver/internals/commands/subtypes.py +86 -0
- xoa_driver/internals/core/__init__.py +0 -0
- xoa_driver/internals/core/builders.py +39 -0
- xoa_driver/internals/core/exceptions.py +69 -0
- xoa_driver/internals/core/funcs.py +81 -0
- xoa_driver/internals/core/funcs.pyi +1072 -0
- xoa_driver/internals/core/interfaces.py +47 -0
- xoa_driver/internals/core/token.py +44 -0
- xoa_driver/internals/core/transporter/__init__.py +0 -0
- xoa_driver/internals/core/transporter/_processor.py +83 -0
- xoa_driver/internals/core/transporter/_publisher.py +101 -0
- xoa_driver/internals/core/transporter/_request_id_counter.py +28 -0
- xoa_driver/internals/core/transporter/_stream.py +99 -0
- xoa_driver/internals/core/transporter/_typings.py +43 -0
- xoa_driver/internals/core/transporter/exceptions.py +44 -0
- xoa_driver/internals/core/transporter/handler.py +127 -0
- xoa_driver/internals/core/transporter/logger/__init__.py +10 -0
- xoa_driver/internals/core/transporter/logger/__logger.py +94 -0
- xoa_driver/internals/core/transporter/logger/__state_off.py +32 -0
- xoa_driver/internals/core/transporter/logger/__state_on_default.py +70 -0
- xoa_driver/internals/core/transporter/logger/__state_on_loguru.py +51 -0
- xoa_driver/internals/core/transporter/logger/__state_on_user.py +48 -0
- xoa_driver/internals/core/transporter/protocol/__init__.py +0 -0
- xoa_driver/internals/core/transporter/protocol/_constants.py +77 -0
- xoa_driver/internals/core/transporter/protocol/_utils.py +59 -0
- xoa_driver/internals/core/transporter/protocol/exceptions.py +271 -0
- xoa_driver/internals/core/transporter/protocol/payload/__init__.py +70 -0
- xoa_driver/internals/core/transporter/protocol/payload/base_struct.py +283 -0
- xoa_driver/internals/core/transporter/protocol/payload/descriptor.py +119 -0
- xoa_driver/internals/core/transporter/protocol/payload/exceptions.py +20 -0
- xoa_driver/internals/core/transporter/protocol/payload/field.py +296 -0
- xoa_driver/internals/core/transporter/protocol/payload/types.py +173 -0
- xoa_driver/internals/core/transporter/protocol/payload/utils.py +53 -0
- xoa_driver/internals/core/transporter/protocol/struct_header.py +123 -0
- xoa_driver/internals/core/transporter/protocol/struct_request.py +65 -0
- xoa_driver/internals/core/transporter/protocol/struct_response.py +89 -0
- xoa_driver/internals/core/transporter/registry.py +43 -0
- xoa_driver/internals/exceptions/__init__.py +9 -0
- xoa_driver/internals/exceptions/modules.py +13 -0
- xoa_driver/internals/exceptions/testers.py +21 -0
- xoa_driver/internals/hli_v1/__init__.py +0 -0
- xoa_driver/internals/hli_v1/indices/__init__.py +0 -0
- xoa_driver/internals/hli_v1/indices/base_index.py +39 -0
- xoa_driver/internals/hli_v1/indices/connection_group/__init__.py +0 -0
- xoa_driver/internals/hli_v1/indices/connection_group/cg.py +186 -0
- xoa_driver/internals/hli_v1/indices/connection_group/histogram.py +78 -0
- xoa_driver/internals/hli_v1/indices/connection_group/l2.py +94 -0
- xoa_driver/internals/hli_v1/indices/connection_group/l3.py +130 -0
- xoa_driver/internals/hli_v1/indices/connection_group/raw.py +200 -0
- xoa_driver/internals/hli_v1/indices/connection_group/replay.py +109 -0
- xoa_driver/internals/hli_v1/indices/connection_group/tcp.py +314 -0
- xoa_driver/internals/hli_v1/indices/connection_group/tls.py +198 -0
- xoa_driver/internals/hli_v1/indices/connection_group/udp.py +133 -0
- xoa_driver/internals/hli_v1/indices/connection_group/user_state.py +28 -0
- xoa_driver/internals/hli_v1/indices/filter/__init__.py +0 -0
- xoa_driver/internals/hli_v1/indices/filter/base_filter.py +65 -0
- xoa_driver/internals/hli_v1/indices/filter/genuine_filter.py +20 -0
- xoa_driver/internals/hli_v1/indices/length_term.py +49 -0
- xoa_driver/internals/hli_v1/indices/macsecscs/__init__.py +0 -0
- xoa_driver/internals/hli_v1/indices/macsecscs/base_macsecsc.py +224 -0
- xoa_driver/internals/hli_v1/indices/macsecscs/genuine_macsecsc.py +72 -0
- xoa_driver/internals/hli_v1/indices/match_term.py +64 -0
- xoa_driver/internals/hli_v1/indices/port_dataset.py +72 -0
- xoa_driver/internals/hli_v1/indices/streams/__init__.py +0 -0
- xoa_driver/internals/hli_v1/indices/streams/base_stream.py +405 -0
- xoa_driver/internals/hli_v1/indices/streams/genuine_stream.py +64 -0
- xoa_driver/internals/hli_v1/modules/__init__.py +0 -0
- xoa_driver/internals/hli_v1/modules/__interfaces.py +21 -0
- xoa_driver/internals/hli_v1/modules/base_module.py +138 -0
- xoa_driver/internals/hli_v1/modules/module_chimera.py +366 -0
- xoa_driver/internals/hli_v1/modules/module_l23ve.py +73 -0
- xoa_driver/internals/hli_v1/modules/module_l47.py +397 -0
- xoa_driver/internals/hli_v1/modules/module_l47ve.py +9 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/__init__.py +0 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_combi.py +83 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_d.py +75 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_e.py +85 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_f.py +145 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_g.py +84 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_h.py +40 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_i.py +25 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_j.py +25 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_k.py +39 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_l.py +55 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_l1.py +800 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_m.py +25 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_n.py +40 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/module_l23_base.py +383 -0
- xoa_driver/internals/hli_v1/ports/__init__.py +0 -0
- xoa_driver/internals/hli_v1/ports/base_port.py +125 -0
- xoa_driver/internals/hli_v1/ports/port_l23/__init__.py +0 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/__init__.py +0 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_capture.py +70 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_l23.py +527 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_l23_genuine.py +229 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_reception_statistics.py +231 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_transceiver.py +117 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_transmission_statistics.py +131 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/__init__.py +0 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/__init__.py +0 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/_utils.py +15 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/general.py +396 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/shadow.py +104 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/working.py +36 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/pe_custom_distribution.py +125 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/pe_distribution.py +174 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/port_chimera.py +119 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/port_emulation.py +244 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/reception_statistics.py +24 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/transmission_statistics.py +24 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_combi.py +37 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_d.py +51 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_e.py +107 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_f.py +151 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_g.py +77 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_h.py +67 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_i.py +84 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_j.py +68 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_k.py +73 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_l.py +82 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_l1.py +166 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_m.py +29 -0
- xoa_driver/internals/hli_v1/ports/port_l23/fault_jkl.py +24 -0
- xoa_driver/internals/hli_v1/ports/port_l23/freya_l1.py +722 -0
- xoa_driver/internals/hli_v1/ports/port_l23/pcs_pma_ghijkl.py +369 -0
- xoa_driver/internals/hli_v1/ports/port_l23/pcs_pma_ijkl_chimera.py +60 -0
- xoa_driver/internals/hli_v1/ports/port_l23/pcs_pma_l.py +78 -0
- xoa_driver/internals/hli_v1/ports/port_l23/port_l23ve.py +101 -0
- xoa_driver/internals/hli_v1/ports/port_l47/__init__.py +0 -0
- xoa_driver/internals/hli_v1/ports/port_l47/counters.py +174 -0
- xoa_driver/internals/hli_v1/ports/port_l47/main.py +228 -0
- xoa_driver/internals/hli_v1/ports/port_l47/packet_engine.py +31 -0
- xoa_driver/internals/hli_v1/revisions.py +11 -0
- xoa_driver/internals/hli_v1/testers/__init__.py +0 -0
- xoa_driver/internals/hli_v1/testers/_base_tester.py +259 -0
- xoa_driver/internals/hli_v1/testers/genuine/__init__.py +0 -0
- xoa_driver/internals/hli_v1/testers/genuine/l_23/__init__.py +0 -0
- xoa_driver/internals/hli_v1/testers/genuine/l_23/health.py +16 -0
- xoa_driver/internals/hli_v1/testers/genuine/l_23/rest_api.py +38 -0
- xoa_driver/internals/hli_v1/testers/genuine/l_23/time_keeper.py +57 -0
- xoa_driver/internals/hli_v1/testers/genuine/l_23/upload_file.py +29 -0
- xoa_driver/internals/hli_v1/testers/genuine/management_interface.py +42 -0
- xoa_driver/internals/hli_v1/testers/l23_tester.py +196 -0
- xoa_driver/internals/hli_v1/testers/l23ve_tester.py +114 -0
- xoa_driver/internals/hli_v1/testers/l47_tester.py +106 -0
- xoa_driver/internals/hli_v1/testers/l47ve_tester.py +54 -0
- xoa_driver/internals/hli_v2/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/base_index.py +39 -0
- xoa_driver/internals/hli_v2/indices/connection_group/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/connection_group/cg.py +115 -0
- xoa_driver/internals/hli_v2/indices/connection_group/histogram.py +59 -0
- xoa_driver/internals/hli_v2/indices/connection_group/l2.py +71 -0
- xoa_driver/internals/hli_v2/indices/connection_group/l3.py +96 -0
- xoa_driver/internals/hli_v2/indices/connection_group/raw.py +148 -0
- xoa_driver/internals/hli_v2/indices/connection_group/replay.py +89 -0
- xoa_driver/internals/hli_v2/indices/connection_group/tcp.py +261 -0
- xoa_driver/internals/hli_v2/indices/connection_group/tls.py +166 -0
- xoa_driver/internals/hli_v2/indices/connection_group/udp.py +112 -0
- xoa_driver/internals/hli_v2/indices/connection_group/user_state.py +25 -0
- xoa_driver/internals/hli_v2/indices/filter/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/filter/base_filter.py +50 -0
- xoa_driver/internals/hli_v2/indices/filter/genuine_filter.py +17 -0
- xoa_driver/internals/hli_v2/indices/length_term.py +44 -0
- xoa_driver/internals/hli_v2/indices/match_term.py +49 -0
- xoa_driver/internals/hli_v2/indices/port_dataset.py +53 -0
- xoa_driver/internals/hli_v2/indices/streams/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/streams/base_stream.py +234 -0
- xoa_driver/internals/hli_v2/indices/streams/genuine_stream.py +32 -0
- xoa_driver/internals/hli_v2/modules/__init__.py +0 -0
- xoa_driver/internals/hli_v2/modules/__interfaces.py +21 -0
- xoa_driver/internals/hli_v2/modules/base_module.py +125 -0
- xoa_driver/internals/hli_v2/modules/module_chimera.py +358 -0
- xoa_driver/internals/hli_v2/modules/module_l23ve.py +58 -0
- xoa_driver/internals/hli_v2/modules/module_l47.py +230 -0
- xoa_driver/internals/hli_v2/modules/module_l47ve.py +8 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/__init__.py +0 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_combi.py +73 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_d.py +75 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_e.py +85 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_f.py +144 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_g.py +84 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_h.py +40 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_i.py +25 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_j.py +25 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_k.py +39 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_l.py +55 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_l1.py +797 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_m.py +25 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_n.py +40 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/module_l23_base.py +339 -0
- xoa_driver/internals/hli_v2/ports/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/base_port.py +105 -0
- xoa_driver/internals/hli_v2/ports/port_l23/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_capture.py +64 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_l23.py +441 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_l23_genuine.py +172 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_reception_statistics.py +156 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_transceiver.py +117 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_transmission_statistics.py +59 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/_utils.py +15 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/general.py +340 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/shadow.py +99 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/working.py +36 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/pe_custom_distribution.py +116 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/pe_distribution.py +102 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/port_chimera.py +113 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/port_emulation.py +420 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/reception_statistics.py +22 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/transmission_statistics.py +22 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_combi.py +36 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_d.py +49 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_e.py +96 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_f.py +144 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_g.py +77 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_h.py +60 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_i.py +66 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_j.py +53 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_k.py +58 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_l.py +67 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_l1.py +149 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_m.py +28 -0
- xoa_driver/internals/hli_v2/ports/port_l23/fault_jkl.py +22 -0
- xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_ghijkl.py +342 -0
- xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_ijkl_chimera.py +50 -0
- xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_l.py +65 -0
- xoa_driver/internals/hli_v2/ports/port_l23/port_l23ve.py +81 -0
- xoa_driver/internals/hli_v2/ports/port_l47/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l47/counters.py +146 -0
- xoa_driver/internals/hli_v2/ports/port_l47/main.py +137 -0
- xoa_driver/internals/hli_v2/ports/port_l47/packet_engine.py +20 -0
- xoa_driver/internals/hli_v2/revisions.py +11 -0
- xoa_driver/internals/hli_v2/testers/__init__.py +0 -0
- xoa_driver/internals/hli_v2/testers/_base_tester.py +207 -0
- xoa_driver/internals/hli_v2/testers/genuine/__init__.py +0 -0
- xoa_driver/internals/hli_v2/testers/genuine/l_23/__init__.py +0 -0
- xoa_driver/internals/hli_v2/testers/genuine/l_23/health.py +16 -0
- xoa_driver/internals/hli_v2/testers/genuine/l_23/rest_api.py +34 -0
- xoa_driver/internals/hli_v2/testers/genuine/l_23/time_keeper.py +50 -0
- xoa_driver/internals/hli_v2/testers/genuine/l_23/upload_file.py +26 -0
- xoa_driver/internals/hli_v2/testers/genuine/management_interface.py +38 -0
- xoa_driver/internals/hli_v2/testers/l23_tester.py +159 -0
- xoa_driver/internals/hli_v2/testers/l23ve_tester.py +98 -0
- xoa_driver/internals/hli_v2/testers/l47_tester.py +95 -0
- xoa_driver/internals/hli_v2/testers/l47ve_tester.py +50 -0
- xoa_driver/internals/state_storage/__init__.py +0 -0
- xoa_driver/internals/state_storage/_speed_detector.py +121 -0
- xoa_driver/internals/state_storage/modules_state.py +128 -0
- xoa_driver/internals/state_storage/ports_state.py +154 -0
- xoa_driver/internals/state_storage/testers_state.py +104 -0
- xoa_driver/internals/utils/__init__.py +0 -0
- xoa_driver/internals/utils/attributes.py +33 -0
- xoa_driver/internals/utils/cap_id.py +63 -0
- xoa_driver/internals/utils/con_traffic_light.py +88 -0
- xoa_driver/internals/utils/indices/__init__.py +0 -0
- xoa_driver/internals/utils/indices/_interfaces.py +26 -0
- xoa_driver/internals/utils/indices/header_modifier_manager.py +56 -0
- xoa_driver/internals/utils/indices/index_manager.py +95 -0
- xoa_driver/internals/utils/indices/observer.py +17 -0
- xoa_driver/internals/utils/kind.py +19 -0
- xoa_driver/internals/utils/managers/__init__.py +0 -0
- xoa_driver/internals/utils/managers/abc.py +44 -0
- xoa_driver/internals/utils/managers/exceptions.py +22 -0
- xoa_driver/internals/utils/managers/modules_manager.py +118 -0
- xoa_driver/internals/utils/managers/ports_manager.py +116 -0
- xoa_driver/internals/utils/rev_tool.py +21 -0
- xoa_driver/internals/utils/session.py +117 -0
- xoa_driver/internals/warn.py +32 -0
- xoa_driver/lli.py +15 -0
- xoa_driver/misc.py +57 -0
- xoa_driver/modules.py +448 -0
- xoa_driver/ports.py +332 -0
- xoa_driver/testers.py +37 -0
- xoa_driver/utils.py +12 -0
- xoa_driver/v2/__init__.py +11 -0
- xoa_driver/v2/misc.py +77 -0
- xoa_driver/v2/modules.py +308 -0
- xoa_driver/v2/ports.py +232 -0
- xoa_driver/v2/testers.py +24 -0
|
@@ -0,0 +1,812 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from xoa_driver.internals.core.builders import (
|
|
6
|
+
build_get_request,
|
|
7
|
+
build_set_request
|
|
8
|
+
)
|
|
9
|
+
from xoa_driver.internals.core import interfaces
|
|
10
|
+
from xoa_driver.internals.core.token import Token
|
|
11
|
+
from xoa_driver.internals.core.transporter.registry import register_command
|
|
12
|
+
from xoa_driver.internals.core.transporter.protocol.payload import (
|
|
13
|
+
field,
|
|
14
|
+
RequestBodyStruct,
|
|
15
|
+
ResponseBodyStruct,
|
|
16
|
+
XmpByte,
|
|
17
|
+
XmpInt,
|
|
18
|
+
XmpLong,
|
|
19
|
+
XmpSequence,
|
|
20
|
+
)
|
|
21
|
+
from .enums import OnOff
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@register_command
|
|
25
|
+
@dataclass
|
|
26
|
+
class PR_TPLDJITTER:
|
|
27
|
+
"""
|
|
28
|
+
Obtains statistics concerning the jitter experienced by the packets with a
|
|
29
|
+
particular test payload id received on a port. The values are the difference in
|
|
30
|
+
packet-to-packet latency, and the minimum will usually be zero.A special value
|
|
31
|
+
of -1 is returned if jitter numbers are not applicable. They are only available
|
|
32
|
+
for TID values 0..31.
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
code: typing.ClassVar[int] = 239
|
|
36
|
+
pushed: typing.ClassVar[bool] = False
|
|
37
|
+
|
|
38
|
+
_connection: 'interfaces.IConnection'
|
|
39
|
+
_module: int
|
|
40
|
+
_port: int
|
|
41
|
+
_test_payload_xindex: int
|
|
42
|
+
|
|
43
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
44
|
+
min_val: int = field(XmpLong())
|
|
45
|
+
"""long integer, nanoseconds, minimum jitter for test payload stream"""
|
|
46
|
+
avg_val: int = field(XmpLong())
|
|
47
|
+
"""long integer, nanoseconds, average jitter for test payload stream"""
|
|
48
|
+
max_val: int = field(XmpLong())
|
|
49
|
+
"""long integer, nanoseconds, maximum jitter for test payload stream"""
|
|
50
|
+
avg_last_sec: int = field(XmpLong())
|
|
51
|
+
"""long integer, nanoseconds, average jitter over last 1-second period"""
|
|
52
|
+
min_last_sec: int = field(XmpLong())
|
|
53
|
+
"""long integer, nanoseconds, minimum jitter during last 1-second period"""
|
|
54
|
+
max_last_sec: int = field(XmpLong())
|
|
55
|
+
"""long integer, nanoseconds, maximum jitter during last 1-second period"""
|
|
56
|
+
|
|
57
|
+
def get(self) -> Token[GetDataAttr]:
|
|
58
|
+
"""Get statistics concerning the jitter experienced by the packets with a particular test payload id received on a port.
|
|
59
|
+
|
|
60
|
+
:return: minimum|average|maximum jitter (nanoseconds), average|average|maximum jitter over last 1-second period (nanoseconds)
|
|
61
|
+
:rtype: PR_TPLDJITTER.GetDataAttr
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._test_payload_xindex]))
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
@register_command
|
|
68
|
+
@dataclass
|
|
69
|
+
class PR_TOTAL:
|
|
70
|
+
"""
|
|
71
|
+
Obtains statistics concerning all the packets received on a port.
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
code: typing.ClassVar[int] = 240
|
|
75
|
+
pushed: typing.ClassVar[bool] = False
|
|
76
|
+
|
|
77
|
+
_connection: 'interfaces.IConnection'
|
|
78
|
+
_module: int
|
|
79
|
+
_port: int
|
|
80
|
+
|
|
81
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
82
|
+
bit_count_last_sec: int = field(XmpLong())
|
|
83
|
+
"""long integer, number of bits received in the last second."""
|
|
84
|
+
packet_count_last_sec: int = field(XmpLong())
|
|
85
|
+
"""long integer, number of packets received in the last second."""
|
|
86
|
+
byte_count_since_cleared: int = field(XmpLong())
|
|
87
|
+
"""long integer, number of bytes received since statistics were cleared."""
|
|
88
|
+
packet_count_since_cleared: int = field(XmpLong())
|
|
89
|
+
"""long integer, number of packets received since statistics were cleared."""
|
|
90
|
+
|
|
91
|
+
def get(self) -> Token[GetDataAttr]:
|
|
92
|
+
"""Get statistics concerning all the packets received on a port.
|
|
93
|
+
|
|
94
|
+
:return:
|
|
95
|
+
number of bits received in the last second,
|
|
96
|
+
number of packets received in the last second,
|
|
97
|
+
number of bytes received since statistics were cleared,
|
|
98
|
+
and number of packets received since statistics were cleared.
|
|
99
|
+
|
|
100
|
+
:rtype: PR_TOTAL.GetDataAttr
|
|
101
|
+
"""
|
|
102
|
+
|
|
103
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
@register_command
|
|
107
|
+
@dataclass
|
|
108
|
+
class PR_NOTPLD:
|
|
109
|
+
"""
|
|
110
|
+
Obtains statistics concerning the packets without a test payload received on a
|
|
111
|
+
port.
|
|
112
|
+
"""
|
|
113
|
+
|
|
114
|
+
code: typing.ClassVar[int] = 241
|
|
115
|
+
pushed: typing.ClassVar[bool] = False
|
|
116
|
+
|
|
117
|
+
_connection: 'interfaces.IConnection'
|
|
118
|
+
_module: int
|
|
119
|
+
_port: int
|
|
120
|
+
|
|
121
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
122
|
+
bit_count_last_sec: int = field(XmpLong())
|
|
123
|
+
"""long integer, number of bits received in the last second."""
|
|
124
|
+
packet_count_last_sec: int = field(XmpLong())
|
|
125
|
+
"""long integer, number of packets received in the last second."""
|
|
126
|
+
byte_count_since_cleared: int = field(XmpLong())
|
|
127
|
+
"""long integer, number of bytes received since statistics were cleared."""
|
|
128
|
+
packet_count_since_cleared: int = field(XmpLong())
|
|
129
|
+
"""long integer, number of packets received since statistics were cleared."""
|
|
130
|
+
|
|
131
|
+
def get(self) -> Token[GetDataAttr]:
|
|
132
|
+
"""Get statistics concerning the packets without a test payload received on a port.
|
|
133
|
+
|
|
134
|
+
:return:
|
|
135
|
+
number of bits received in the last second,
|
|
136
|
+
number of packets received in the last second,
|
|
137
|
+
number of bytes received since statistics were cleared,
|
|
138
|
+
and number of packets received since statistics were cleared.
|
|
139
|
+
|
|
140
|
+
:rtype: PR_NOTPLD.GetDataAttr
|
|
141
|
+
"""
|
|
142
|
+
|
|
143
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
@register_command
|
|
147
|
+
@dataclass
|
|
148
|
+
class PR_EXTRA:
|
|
149
|
+
"""
|
|
150
|
+
Obtains statistics concerning special errors received on a port since received statistics were cleared.
|
|
151
|
+
"""
|
|
152
|
+
|
|
153
|
+
code: typing.ClassVar[int] = 242
|
|
154
|
+
pushed: typing.ClassVar[bool] = False
|
|
155
|
+
|
|
156
|
+
_connection: 'interfaces.IConnection'
|
|
157
|
+
_module: int
|
|
158
|
+
_port: int
|
|
159
|
+
|
|
160
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
161
|
+
fcs_error_count: int = field(XmpLong())
|
|
162
|
+
"""long integer, number of packets with frame checksum errors."""
|
|
163
|
+
pause_frame_count: int = field(XmpLong())
|
|
164
|
+
"""long integer, number of Ethernet pause frames."""
|
|
165
|
+
rx_arp_request_count: int = field(XmpLong())
|
|
166
|
+
"""long integer, number of ARP request packets received."""
|
|
167
|
+
rx_arp_reply_count: int = field(XmpLong())
|
|
168
|
+
"""long integer, number of ARP reply packets received."""
|
|
169
|
+
rx_ping_request_count: int = field(XmpLong())
|
|
170
|
+
"""long integer, number of PING request packets received."""
|
|
171
|
+
rx_ping_reply_count: int = field(XmpLong())
|
|
172
|
+
"""long integer, number of PING reply packets received."""
|
|
173
|
+
gap_count: int = field(XmpLong())
|
|
174
|
+
"""long integer, number of gap-monitored gaps encountered."""
|
|
175
|
+
gap_duration: int = field(XmpLong())
|
|
176
|
+
"""long integer, combined duration of gap-monitored gaps encountered, microseconds."""
|
|
177
|
+
|
|
178
|
+
def get(self) -> Token[GetDataAttr]:
|
|
179
|
+
"""Get statistics concerning special packets received on a port since statistics were cleared.
|
|
180
|
+
|
|
181
|
+
:return: number of packets with fcs error frames, pause frames, arp rxreq, arp rxrsp, ping rxreq, ping rxrsp, gap events, and gap microseconds.
|
|
182
|
+
:rtype: PR_EXTRA.GetDataAttr
|
|
183
|
+
"""
|
|
184
|
+
|
|
185
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
@register_command
|
|
189
|
+
@dataclass
|
|
190
|
+
class PR_TPLDS:
|
|
191
|
+
"""
|
|
192
|
+
Obtain the set of test payload IDs observed among the received packets since
|
|
193
|
+
receive statistics were cleared. Traffic statistics for these test payload
|
|
194
|
+
streams will have non-zero byte and packet count.
|
|
195
|
+
"""
|
|
196
|
+
|
|
197
|
+
code: typing.ClassVar[int] = 243
|
|
198
|
+
pushed: typing.ClassVar[bool] = False
|
|
199
|
+
|
|
200
|
+
_connection: 'interfaces.IConnection'
|
|
201
|
+
_module: int
|
|
202
|
+
_port: int
|
|
203
|
+
|
|
204
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
205
|
+
test_payload_identifiers: typing.List[int] = field(XmpSequence(types_chunk=[XmpInt()]))
|
|
206
|
+
"""list of integers, the identifiers of the test payload."""
|
|
207
|
+
|
|
208
|
+
def get(self) -> Token[GetDataAttr]:
|
|
209
|
+
"""Get the set of test payload IDs observed among the received packets since
|
|
210
|
+
receive statistics were cleared. Traffic statistics for these test payload
|
|
211
|
+
streams will have non-zero byte and packet count.
|
|
212
|
+
|
|
213
|
+
:return: the identifiers of the test payload
|
|
214
|
+
:rtype: PR_TPLDS.GetDataAttr
|
|
215
|
+
"""
|
|
216
|
+
|
|
217
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
@register_command
|
|
221
|
+
@dataclass
|
|
222
|
+
class PR_TPLDTRAFFIC:
|
|
223
|
+
"""
|
|
224
|
+
Obtains traffic statistics concerning the packets with a particular test payload
|
|
225
|
+
identifier received on a port.
|
|
226
|
+
"""
|
|
227
|
+
|
|
228
|
+
code: typing.ClassVar[int] = 244
|
|
229
|
+
pushed: typing.ClassVar[bool] = False
|
|
230
|
+
|
|
231
|
+
_connection: 'interfaces.IConnection'
|
|
232
|
+
_module: int
|
|
233
|
+
_port: int
|
|
234
|
+
_test_payload_xindex: int
|
|
235
|
+
|
|
236
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
237
|
+
bit_count_last_sec: int = field(XmpLong())
|
|
238
|
+
"""long integer, number of bits received in the last second."""
|
|
239
|
+
packet_count_last_sec: int = field(XmpLong())
|
|
240
|
+
"""long integer, number of packets received in the last second."""
|
|
241
|
+
byte_count_since_cleared: int = field(XmpLong())
|
|
242
|
+
"""long integer, number of bytes received since statistics were cleared."""
|
|
243
|
+
packet_count_since_cleared: int = field(XmpLong())
|
|
244
|
+
"""long integer, number of packets received since statistics were cleared."""
|
|
245
|
+
|
|
246
|
+
def get(self) -> Token[GetDataAttr]:
|
|
247
|
+
"""Get traffic statistics concerning the packets with a particular test payload
|
|
248
|
+
identifier received on a port.
|
|
249
|
+
|
|
250
|
+
:return:
|
|
251
|
+
number of bits received in the last second,
|
|
252
|
+
number of packets received in the last second,
|
|
253
|
+
number of bytes received since statistics were cleared,
|
|
254
|
+
number of packets received since statistics were cleared
|
|
255
|
+
|
|
256
|
+
:rtype: PR_TPLDTRAFFIC.GetDataAttr
|
|
257
|
+
"""
|
|
258
|
+
|
|
259
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._test_payload_xindex]))
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
@register_command
|
|
263
|
+
@dataclass
|
|
264
|
+
class PR_TPLDERRORS:
|
|
265
|
+
"""
|
|
266
|
+
Obtains statistics concerning errors in the packets with a particular test
|
|
267
|
+
payload id received on a port. The error information is derived from analyzing
|
|
268
|
+
the various fields contained in the embedded test payloads of the received
|
|
269
|
+
packets, independent of which chassis and port may have originated the packets.
|
|
270
|
+
Note that packet-lost statistics involve both a transmitting port and a
|
|
271
|
+
receiving port, and in particular knowing which port originated the packets with
|
|
272
|
+
a particular test payload identifier. This information requires knowledge of the
|
|
273
|
+
global test environment, and is not supported at the port-level.
|
|
274
|
+
"""
|
|
275
|
+
|
|
276
|
+
code: typing.ClassVar[int] = 245
|
|
277
|
+
pushed: typing.ClassVar[bool] = False
|
|
278
|
+
|
|
279
|
+
_connection: 'interfaces.IConnection'
|
|
280
|
+
_module: int
|
|
281
|
+
_port: int
|
|
282
|
+
_test_payload_xindex: int
|
|
283
|
+
|
|
284
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
285
|
+
dummy: int = field(XmpLong())
|
|
286
|
+
"""long integer, not in use."""
|
|
287
|
+
non_incre_seq_event_count: int = field(XmpLong())
|
|
288
|
+
"""long integer, number of non-incrementing-sequence-number events."""
|
|
289
|
+
swapped_seq_misorder_event_count: int = field(XmpLong())
|
|
290
|
+
"""long integer, number of swapped-sequence-number misorder events."""
|
|
291
|
+
non_incre_payload_packet_count: int = field(XmpLong())
|
|
292
|
+
"""long integer, number of packets with non-incrementing payload content."""
|
|
293
|
+
|
|
294
|
+
def get(self) -> Token[GetDataAttr]:
|
|
295
|
+
"""Get statistics concerning errors in the packets with a particular test payload id received on a port.
|
|
296
|
+
|
|
297
|
+
:return:
|
|
298
|
+
dummy value not in use,
|
|
299
|
+
number of non-incrementing-sequence-number events,
|
|
300
|
+
number of swapped-sequence-number misorder events,
|
|
301
|
+
number of packets with non-incrementing payload content
|
|
302
|
+
|
|
303
|
+
:rtype: PR_TPLDERRORS.GetDataAttr
|
|
304
|
+
"""
|
|
305
|
+
|
|
306
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._test_payload_xindex]))
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
@register_command
|
|
310
|
+
@dataclass
|
|
311
|
+
class PR_TPLDLATENCY:
|
|
312
|
+
"""
|
|
313
|
+
Obtains statistics concerning the latency experienced by the packets with a
|
|
314
|
+
particular test payload id received on a port. The values are adjusted by the
|
|
315
|
+
port-level P_LATENCYOFFSET value. A special value of -1 is returned if latency
|
|
316
|
+
numbers are not applicable. Latency is only meaningful when the clocks of the
|
|
317
|
+
transmitter and receiver are synchronized. This requires the two ports to be on
|
|
318
|
+
the same test module, and it requires knowledge of the global test environment
|
|
319
|
+
to ensure that packets are in fact routed between these ports.
|
|
320
|
+
"""
|
|
321
|
+
|
|
322
|
+
code: typing.ClassVar[int] = 246
|
|
323
|
+
pushed: typing.ClassVar[bool] = False
|
|
324
|
+
|
|
325
|
+
_connection: 'interfaces.IConnection'
|
|
326
|
+
_module: int
|
|
327
|
+
_port: int
|
|
328
|
+
_test_payload_xindex: int
|
|
329
|
+
|
|
330
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
331
|
+
min_val: int = field(XmpLong())
|
|
332
|
+
"""long integer, nanoseconds, minimum latency for test payload stream"""
|
|
333
|
+
avg_val: int = field(XmpLong())
|
|
334
|
+
"""long integer, nanoseconds, average latency for test payload stream"""
|
|
335
|
+
max_val: int = field(XmpLong())
|
|
336
|
+
"""long integer, nanoseconds, maximum latency for test payload stream"""
|
|
337
|
+
avg_last_sec: int = field(XmpLong())
|
|
338
|
+
"""long integer, nanoseconds, average latency over last 1-second period"""
|
|
339
|
+
min_last_sec: int = field(XmpLong())
|
|
340
|
+
"""long integer, nanoseconds, minimum latency during last 1-second period"""
|
|
341
|
+
max_last_sec: int = field(XmpLong())
|
|
342
|
+
"""long integer, nanoseconds, maximum latency during last 1-second period"""
|
|
343
|
+
|
|
344
|
+
def get(self) -> Token[GetDataAttr]:
|
|
345
|
+
"""Get statistics concerning the latency experienced by the packets with a particular test payload id received on a port.
|
|
346
|
+
|
|
347
|
+
:return: minimum|average|maximum latency (nanoseconds), average|average|maximum latency over last 1-second period (nanoseconds)
|
|
348
|
+
:rtype: PR_TPLDLATENCY.GetDataAttr
|
|
349
|
+
"""
|
|
350
|
+
|
|
351
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._test_payload_xindex]))
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
@register_command
|
|
355
|
+
@dataclass
|
|
356
|
+
class PR_FILTER:
|
|
357
|
+
"""
|
|
358
|
+
Obtains statistics concerning the packets satisfying the condition of a
|
|
359
|
+
particular filter for a port.
|
|
360
|
+
"""
|
|
361
|
+
|
|
362
|
+
code: typing.ClassVar[int] = 247
|
|
363
|
+
pushed: typing.ClassVar[bool] = False
|
|
364
|
+
|
|
365
|
+
_connection: 'interfaces.IConnection'
|
|
366
|
+
_module: int
|
|
367
|
+
_port: int
|
|
368
|
+
_filter_xindex: int
|
|
369
|
+
|
|
370
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
371
|
+
bit_count_last_sec: int = field(XmpLong())
|
|
372
|
+
"""long integer, number of bits received in the last second."""
|
|
373
|
+
packet_count_last_sec: int = field(XmpLong())
|
|
374
|
+
"""long integer, number of packets received in the last second."""
|
|
375
|
+
byte_count_since_cleared: int = field(XmpLong())
|
|
376
|
+
"""long integer, number of bytes received since statistics were cleared."""
|
|
377
|
+
packet_count_since_cleared: int = field(XmpLong())
|
|
378
|
+
"""long integer, number of packets received since statistics were cleared."""
|
|
379
|
+
|
|
380
|
+
def get(self) -> Token[GetDataAttr]:
|
|
381
|
+
"""Get statistics concerning the packets satisfying the condition of a particular filter for a port
|
|
382
|
+
|
|
383
|
+
:return:
|
|
384
|
+
number of bits received in the last second,
|
|
385
|
+
number of packets received in the last second,
|
|
386
|
+
number of bytes received since statistics were cleared,
|
|
387
|
+
number of packets received since statistics were cleared
|
|
388
|
+
|
|
389
|
+
:rtype: PR_FILTER.GetDataAttr
|
|
390
|
+
"""
|
|
391
|
+
|
|
392
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._filter_xindex]))
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
@register_command
|
|
396
|
+
@dataclass
|
|
397
|
+
class PR_CLEAR:
|
|
398
|
+
"""
|
|
399
|
+
Clear all the receive statistics for a port. The byte and packet counts will
|
|
400
|
+
restart at zero.
|
|
401
|
+
"""
|
|
402
|
+
|
|
403
|
+
code: typing.ClassVar[int] = 248
|
|
404
|
+
pushed: typing.ClassVar[bool] = False
|
|
405
|
+
|
|
406
|
+
_connection: 'interfaces.IConnection'
|
|
407
|
+
_module: int
|
|
408
|
+
_port: int
|
|
409
|
+
|
|
410
|
+
class SetDataAttr(RequestBodyStruct):
|
|
411
|
+
pass
|
|
412
|
+
|
|
413
|
+
def set(self) -> Token[None]:
|
|
414
|
+
"""Clear all the receive statistics for a port. The byte and packet counts will
|
|
415
|
+
restart at zero.
|
|
416
|
+
"""
|
|
417
|
+
|
|
418
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port))
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
@register_command
|
|
422
|
+
@dataclass
|
|
423
|
+
class PR_CALIBRATE:
|
|
424
|
+
"""
|
|
425
|
+
Calibrate the latency calculation for packets received on a port. The lowest
|
|
426
|
+
detected latency value (across all Test Payload IDs) will be set as the new
|
|
427
|
+
base.
|
|
428
|
+
"""
|
|
429
|
+
|
|
430
|
+
code: typing.ClassVar[int] = 249
|
|
431
|
+
pushed: typing.ClassVar[bool] = False
|
|
432
|
+
|
|
433
|
+
_connection: 'interfaces.IConnection'
|
|
434
|
+
_module: int
|
|
435
|
+
_port: int
|
|
436
|
+
|
|
437
|
+
class SetDataAttr(RequestBodyStruct):
|
|
438
|
+
pass
|
|
439
|
+
|
|
440
|
+
def set(self) -> Token[None]:
|
|
441
|
+
"""Calibrate the latency calculation for packets received on a port. The lowest
|
|
442
|
+
detected latency value (across all Test Payload IDs) will be set as the new
|
|
443
|
+
base.
|
|
444
|
+
"""
|
|
445
|
+
|
|
446
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port))
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
@register_command
|
|
450
|
+
@dataclass
|
|
451
|
+
class PR_UAT_STATUS:
|
|
452
|
+
"""
|
|
453
|
+
This command will show the current UAT (UnAvailable Time) state, which is used
|
|
454
|
+
in Valkyrie1564
|
|
455
|
+
"""
|
|
456
|
+
|
|
457
|
+
code: typing.ClassVar[int] = 252
|
|
458
|
+
pushed: typing.ClassVar[bool] = False
|
|
459
|
+
|
|
460
|
+
_connection: 'interfaces.IConnection'
|
|
461
|
+
_module: int
|
|
462
|
+
_port: int
|
|
463
|
+
|
|
464
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
465
|
+
status: OnOff = field(XmpByte())
|
|
466
|
+
"""coded byte, specifies the state of the affected stream counter."""
|
|
467
|
+
|
|
468
|
+
def get(self) -> Token[GetDataAttr]:
|
|
469
|
+
"""Get the current UAT (UnAvailable Time) state, which is used
|
|
470
|
+
in Valkyrie1564.
|
|
471
|
+
|
|
472
|
+
:return: the state of the affected stream counter
|
|
473
|
+
:rtype: PR_UAT_STATUS.GetDataAttr
|
|
474
|
+
"""
|
|
475
|
+
|
|
476
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
@register_command
|
|
480
|
+
@dataclass
|
|
481
|
+
class PR_UAT_TIME:
|
|
482
|
+
"""
|
|
483
|
+
This command will show the current number of unavailable seconds, which is used in Valkyrie1564.
|
|
484
|
+
"""
|
|
485
|
+
|
|
486
|
+
code: typing.ClassVar[int] = 256
|
|
487
|
+
pushed: typing.ClassVar[bool] = False
|
|
488
|
+
|
|
489
|
+
_connection: 'interfaces.IConnection'
|
|
490
|
+
_module: int
|
|
491
|
+
_port: int
|
|
492
|
+
|
|
493
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
494
|
+
time: int = field(XmpInt())
|
|
495
|
+
"""integer, number of unavailable seconds."""
|
|
496
|
+
|
|
497
|
+
def get(self) -> Token[GetDataAttr]:
|
|
498
|
+
"""Get the current UAT (UnAvailable Time) state, which is used
|
|
499
|
+
in Valkyrie1564.
|
|
500
|
+
|
|
501
|
+
:return: number of unavailable seconds
|
|
502
|
+
:rtype: PR_UAT_TIME.GetDataAttr
|
|
503
|
+
"""
|
|
504
|
+
|
|
505
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
@register_command
|
|
509
|
+
@dataclass
|
|
510
|
+
class PR_TOTALEXT:
|
|
511
|
+
"""
|
|
512
|
+
.. versionadded: v1.1
|
|
513
|
+
|
|
514
|
+
An extension of :class:`PR_TOTAL` that also includes a calculation of bytes received in the last second, as well as a number of port error counters.
|
|
515
|
+
PR_TOTALEXT returns list of long integers. This list may be expanded in future software releases.
|
|
516
|
+
"""
|
|
517
|
+
|
|
518
|
+
code: typing.ClassVar[int] = 257
|
|
519
|
+
pushed: typing.ClassVar[bool] = False
|
|
520
|
+
|
|
521
|
+
_connection: 'interfaces.IConnection'
|
|
522
|
+
_module: int
|
|
523
|
+
_port: int
|
|
524
|
+
|
|
525
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
526
|
+
bit_count_last_sec: int = field(XmpLong())
|
|
527
|
+
"""long integer, number of bits received in the last second."""
|
|
528
|
+
byte_count_last_sec: int = field(XmpLong())
|
|
529
|
+
"""long integer, number of bytes received in the last second."""
|
|
530
|
+
packet_count_last_sec: int = field(XmpLong())
|
|
531
|
+
"""long integer, number of packets received in the last second."""
|
|
532
|
+
byte_count_since_cleared: int = field(XmpLong())
|
|
533
|
+
"""long integer, number of bytes received since statistics were cleared."""
|
|
534
|
+
packet_count_since_cleared: int = field(XmpLong())
|
|
535
|
+
"""long integer, number of packets received since statistics were cleared."""
|
|
536
|
+
fcs_error_count: int = field(XmpLong())
|
|
537
|
+
|
|
538
|
+
oversize_count: int = field(XmpLong())
|
|
539
|
+
|
|
540
|
+
undersize_count: int = field(XmpLong())
|
|
541
|
+
|
|
542
|
+
jabber_count: int = field(XmpLong())
|
|
543
|
+
|
|
544
|
+
def get(self) -> Token[GetDataAttr]:
|
|
545
|
+
"""Get statistics concerning all the packets received on a port.
|
|
546
|
+
|
|
547
|
+
:return:
|
|
548
|
+
number of bits received in the last second,
|
|
549
|
+
number of bytes received in the last second,
|
|
550
|
+
number of packets received in the last second,
|
|
551
|
+
number of bytes received since statistics were cleared,
|
|
552
|
+
number of packets received since statistics were cleared,
|
|
553
|
+
number of packets received with fcs error frames,
|
|
554
|
+
number of oversize packets received since last clear (-1 if this counter is not supported by the tester),
|
|
555
|
+
number of undersize packets received since last clear (-1 if this counter is not supported by the tester),
|
|
556
|
+
number of jabber packets received since last clear (-1 if this counter is not supported by the tester).
|
|
557
|
+
|
|
558
|
+
:rtype: PR_TOTALEXT.GetDataAttr
|
|
559
|
+
"""
|
|
560
|
+
|
|
561
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
@register_command
|
|
565
|
+
@dataclass
|
|
566
|
+
class PR_NOTPLDEXT:
|
|
567
|
+
"""
|
|
568
|
+
.. versionadded: v1.1
|
|
569
|
+
|
|
570
|
+
An extension of :class:`PR_NOTPLD` that also includes a calculation of bytes received in the last second.
|
|
571
|
+
PR_NOTPLDEXT returns list of long integers. This list may be expanded in future software releases.
|
|
572
|
+
"""
|
|
573
|
+
|
|
574
|
+
code: typing.ClassVar[int] = 258
|
|
575
|
+
pushed: typing.ClassVar[bool] = False
|
|
576
|
+
|
|
577
|
+
_connection: 'interfaces.IConnection'
|
|
578
|
+
_module: int
|
|
579
|
+
_port: int
|
|
580
|
+
|
|
581
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
582
|
+
bit_count_last_sec: int = field(XmpLong())
|
|
583
|
+
"""long integer, number of bits received in the last second."""
|
|
584
|
+
byte_count_last_sec: int = field(XmpLong())
|
|
585
|
+
"""long integer, number of bytes received in the last second."""
|
|
586
|
+
packet_count_last_sec: int = field(XmpLong())
|
|
587
|
+
"""long integer, number of packets received in the last second."""
|
|
588
|
+
byte_count_since_cleared: int = field(XmpLong())
|
|
589
|
+
"""long integer, number of bytes received since statistics were cleared."""
|
|
590
|
+
packet_count_since_cleared: int = field(XmpLong())
|
|
591
|
+
"""long integer, number of packets received since statistics were cleared."""
|
|
592
|
+
|
|
593
|
+
def get(self) -> Token[GetDataAttr]:
|
|
594
|
+
"""Get statistics concerning the packets without a test payload received on a port.
|
|
595
|
+
|
|
596
|
+
:return:
|
|
597
|
+
number of bits received in the last second,
|
|
598
|
+
number of bytes received in the last second,
|
|
599
|
+
number of packets received in the last second,
|
|
600
|
+
number of bytes received since statistics were cleared,
|
|
601
|
+
and number of packets received since statistics were cleared.
|
|
602
|
+
|
|
603
|
+
:rtype: PR_NOTPLDEXT.GetDataAttr
|
|
604
|
+
"""
|
|
605
|
+
|
|
606
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
@register_command
|
|
610
|
+
@dataclass
|
|
611
|
+
class PR_TPLDTRAFFICEXT:
|
|
612
|
+
"""
|
|
613
|
+
.. versionadded: v1.1
|
|
614
|
+
|
|
615
|
+
An extension of :class:`PR_TPLDTRAFFIC` that also includes a calculation of bytes received in the last second.
|
|
616
|
+
PR_TPLDTRAFFICEXT returns list of long integers. This list may be expanded in future software releases.
|
|
617
|
+
"""
|
|
618
|
+
|
|
619
|
+
code: typing.ClassVar[int] = 259
|
|
620
|
+
pushed: typing.ClassVar[bool] = False
|
|
621
|
+
|
|
622
|
+
_connection: 'interfaces.IConnection'
|
|
623
|
+
_module: int
|
|
624
|
+
_port: int
|
|
625
|
+
_test_payload_xindex: int
|
|
626
|
+
|
|
627
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
628
|
+
bit_count_last_sec: int = field(XmpLong())
|
|
629
|
+
"""long integer, number of bits received in the last second."""
|
|
630
|
+
byte_count_last_sec: int = field(XmpLong())
|
|
631
|
+
"""long integer, number of bytes received in the last second."""
|
|
632
|
+
packet_count_last_sec: int = field(XmpLong())
|
|
633
|
+
"""long integer, number of packets received in the last second."""
|
|
634
|
+
byte_count_since_cleared: int = field(XmpLong())
|
|
635
|
+
"""long integer, number of bytes received since statistics were cleared."""
|
|
636
|
+
packet_count_since_cleared: int = field(XmpLong())
|
|
637
|
+
"""long integer, number of packets received since statistics were cleared."""
|
|
638
|
+
|
|
639
|
+
def get(self) -> Token[GetDataAttr]:
|
|
640
|
+
"""Get traffic statistics concerning the packets with a particular test payload
|
|
641
|
+
identifier received on a port.
|
|
642
|
+
|
|
643
|
+
:return:
|
|
644
|
+
number of bits received in the last second,
|
|
645
|
+
number of bytes received in the last second,
|
|
646
|
+
number of packets received in the last second,
|
|
647
|
+
number of bytes received since statistics were cleared,
|
|
648
|
+
number of packets received since statistics were cleared
|
|
649
|
+
|
|
650
|
+
:rtype: PR_TPLDTRAFFICEXT.GetDataAttr
|
|
651
|
+
"""
|
|
652
|
+
|
|
653
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._test_payload_xindex]))
|
|
654
|
+
|
|
655
|
+
|
|
656
|
+
@register_command
|
|
657
|
+
@dataclass
|
|
658
|
+
class PR_FILTEREXT:
|
|
659
|
+
"""
|
|
660
|
+
.. versionadded: v1.1
|
|
661
|
+
|
|
662
|
+
An extension of :class:`PR_FILTER` that also includes a calculation of bytes received in the last second.
|
|
663
|
+
PR_FILTEREXT returns list of long integers. This list may be expanded in future software releases.
|
|
664
|
+
"""
|
|
665
|
+
|
|
666
|
+
code: typing.ClassVar[int] = 260
|
|
667
|
+
pushed: typing.ClassVar[bool] = False
|
|
668
|
+
|
|
669
|
+
_connection: 'interfaces.IConnection'
|
|
670
|
+
_module: int
|
|
671
|
+
_port: int
|
|
672
|
+
_filter_xindex: int
|
|
673
|
+
|
|
674
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
675
|
+
bit_count_last_sec: int = field(XmpLong())
|
|
676
|
+
"""long integer, number of bits received in the last second."""
|
|
677
|
+
byte_count_last_sec: int = field(XmpLong())
|
|
678
|
+
"""long integer, number of bytes received in the last second."""
|
|
679
|
+
packet_count_last_sec: int = field(XmpLong())
|
|
680
|
+
"""long integer, number of packets received in the last second."""
|
|
681
|
+
byte_count_since_cleared: int = field(XmpLong())
|
|
682
|
+
"""long integer, number of bytes received since statistics were cleared."""
|
|
683
|
+
packet_count_since_cleared: int = field(XmpLong())
|
|
684
|
+
"""long integer, number of packets received since statistics were cleared."""
|
|
685
|
+
|
|
686
|
+
def get(self) -> Token[GetDataAttr]:
|
|
687
|
+
"""Get statistics concerning the packets satisfying the condition of a particular filter for a port
|
|
688
|
+
|
|
689
|
+
:return:
|
|
690
|
+
number of bits received in the last second,
|
|
691
|
+
number of bytes received in the last second,
|
|
692
|
+
number of packets received in the last second,
|
|
693
|
+
number of bytes received since statistics were cleared,
|
|
694
|
+
number of packets received since statistics were cleared
|
|
695
|
+
|
|
696
|
+
:rtype: PR_FILTEREXT.GetDataAttr
|
|
697
|
+
"""
|
|
698
|
+
|
|
699
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._filter_xindex]))
|
|
700
|
+
|
|
701
|
+
|
|
702
|
+
@register_command
|
|
703
|
+
@dataclass
|
|
704
|
+
class PR_PFCSTATS:
|
|
705
|
+
"""
|
|
706
|
+
Obtains statistics of received Priority Flow Control (PFC) packets on a port.
|
|
707
|
+
|
|
708
|
+
.. versionchanged:: 1.1
|
|
709
|
+
"""
|
|
710
|
+
|
|
711
|
+
code: typing.ClassVar[int] = 374
|
|
712
|
+
pushed: typing.ClassVar[bool] = False
|
|
713
|
+
|
|
714
|
+
_connection: 'interfaces.IConnection'
|
|
715
|
+
_module: int
|
|
716
|
+
_port: int
|
|
717
|
+
|
|
718
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
719
|
+
packet_count: int = field(XmpLong())
|
|
720
|
+
"""long integer, the total number of Priority Flow Control (PFC) packets received since statistics were cleared."""
|
|
721
|
+
quanta_pri_0: int = field(XmpLong())
|
|
722
|
+
"""the total number of valid PFC quanta received on the port for priority level 0 since statistics were cleared"""
|
|
723
|
+
quanta_pri_1: int = field(XmpLong())
|
|
724
|
+
"""the total number of valid PFC quanta received on the port for priority level 1 since statistics were cleared"""
|
|
725
|
+
quanta_pri_2: int = field(XmpLong())
|
|
726
|
+
"""the total number of valid PFC quanta received on the port for priority level 2 since statistics were cleared"""
|
|
727
|
+
quanta_pri_3: int = field(XmpLong())
|
|
728
|
+
"""the total number of valid PFC quanta received on the port for priority level 3 since statistics were cleared"""
|
|
729
|
+
quanta_pri_4: int = field(XmpLong())
|
|
730
|
+
"""the total number of valid PFC quanta received on the port for priority level 4 since statistics were cleared"""
|
|
731
|
+
quanta_pri_5: int = field(XmpLong())
|
|
732
|
+
"""the total number of valid PFC quanta received on the port for priority level 5 since statistics were cleared"""
|
|
733
|
+
quanta_pri_6: int = field(XmpLong())
|
|
734
|
+
"""the total number of valid PFC quanta received on the port for priority level 6 since statistics were cleared"""
|
|
735
|
+
quanta_pri_7: int = field(XmpLong())
|
|
736
|
+
"""the total number of valid PFC quanta received on the port for priority level 7 since statistics were cleared"""
|
|
737
|
+
|
|
738
|
+
def get(self) -> Token[GetDataAttr]:
|
|
739
|
+
"""Get the statistics of received Priority Flow Control (PFC) packets on a port.
|
|
740
|
+
|
|
741
|
+
:return: the total number of Priority Flow Control (PFC) packets received since statistics were cleared
|
|
742
|
+
:rtype: PR_PFCSTATS.GetDataAttr
|
|
743
|
+
"""
|
|
744
|
+
|
|
745
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
746
|
+
|
|
747
|
+
|
|
748
|
+
@register_command
|
|
749
|
+
@dataclass
|
|
750
|
+
class PR_FLOWTOTAL:
|
|
751
|
+
"""
|
|
752
|
+
Obtains statistics concerning all the packets received from a flow between this
|
|
753
|
+
receive port and its partner TX port.
|
|
754
|
+
"""
|
|
755
|
+
|
|
756
|
+
code: typing.ClassVar[int] = 1741
|
|
757
|
+
pushed: typing.ClassVar[bool] = False
|
|
758
|
+
|
|
759
|
+
_connection: 'interfaces.IConnection'
|
|
760
|
+
_module: int
|
|
761
|
+
_port: int
|
|
762
|
+
_flow_xindex: int
|
|
763
|
+
|
|
764
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
765
|
+
l2_bps: int = field(XmpLong())
|
|
766
|
+
"""long integer, number of bits received at layer 2 in the last second for the flow."""
|
|
767
|
+
pps: int = field(XmpLong())
|
|
768
|
+
"""long integer, number of packets received in the last second for the flow."""
|
|
769
|
+
byte_count: int = field(XmpLong())
|
|
770
|
+
"""long integer, number of bytes received since statistics were cleared for the flow."""
|
|
771
|
+
packet_count: int = field(XmpLong())
|
|
772
|
+
"""long integer, number of packets received since statistics were cleared for the flow."""
|
|
773
|
+
|
|
774
|
+
def get(self) -> Token[GetDataAttr]:
|
|
775
|
+
"""(Chimera only) Get statistics concerning all the packets received from a flow between this receive port and its partner TX port.
|
|
776
|
+
|
|
777
|
+
:return:
|
|
778
|
+
number of bits received at layer 2 in the last second for the flow,
|
|
779
|
+
number of packets received in the last second for the flow,
|
|
780
|
+
number of bytes received since statistics were cleared for the flow,
|
|
781
|
+
number of packets received since statistics were cleared for the flow
|
|
782
|
+
|
|
783
|
+
:rtype: PR_FLOWTOTAL.GetDataAttr
|
|
784
|
+
"""
|
|
785
|
+
|
|
786
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._flow_xindex]))
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
@register_command
|
|
790
|
+
@dataclass
|
|
791
|
+
class PR_FLOWCLEAR:
|
|
792
|
+
"""
|
|
793
|
+
Clear all the receive statistics on a particular flow for a Chimera port. The
|
|
794
|
+
byte and packet counts will restart at zero.
|
|
795
|
+
"""
|
|
796
|
+
|
|
797
|
+
code: typing.ClassVar[int] = 1743
|
|
798
|
+
pushed: typing.ClassVar[bool] = False
|
|
799
|
+
|
|
800
|
+
_connection: 'interfaces.IConnection'
|
|
801
|
+
_module: int
|
|
802
|
+
_port: int
|
|
803
|
+
_flow_xindex: int
|
|
804
|
+
|
|
805
|
+
class SetDataAttr(RequestBodyStruct):
|
|
806
|
+
pass
|
|
807
|
+
|
|
808
|
+
def set(self) -> Token[None]:
|
|
809
|
+
"""(Chimera only) Clear all the receive statistics on a particular flow for a Chimera port. The byte and packet counts will restart at zero.
|
|
810
|
+
"""
|
|
811
|
+
|
|
812
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._flow_xindex]))
|