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.
Files changed (325) hide show
  1. tdl_xoa_driver-1.0.0.dist-info/LICENSE +202 -0
  2. tdl_xoa_driver-1.0.0.dist-info/METADATA +177 -0
  3. tdl_xoa_driver-1.0.0.dist-info/RECORD +325 -0
  4. tdl_xoa_driver-1.0.0.dist-info/WHEEL +5 -0
  5. tdl_xoa_driver-1.0.0.dist-info/top_level.txt +1 -0
  6. xoa_driver/__init__.py +2 -0
  7. xoa_driver/enums.py +399 -0
  8. xoa_driver/exceptions.py +77 -0
  9. xoa_driver/functions/__init__.py +0 -0
  10. xoa_driver/functions/anlt.py +744 -0
  11. xoa_driver/functions/anlt_ll_debug.py +429 -0
  12. xoa_driver/functions/cli.py +581 -0
  13. xoa_driver/functions/exceptions.py +72 -0
  14. xoa_driver/functions/headers.py +608 -0
  15. xoa_driver/functions/mgmt.py +515 -0
  16. xoa_driver/functions/tools.py +256 -0
  17. xoa_driver/hlfuncs.py +18 -0
  18. xoa_driver/internals/__init__.py +0 -0
  19. xoa_driver/internals/commands/__init__.py +31 -0
  20. xoa_driver/internals/commands/c_commands.py +2041 -0
  21. xoa_driver/internals/commands/enums.py +3289 -0
  22. xoa_driver/internals/commands/m4_commands.py +700 -0
  23. xoa_driver/internals/commands/m4e_commands.py +107 -0
  24. xoa_driver/internals/commands/m_commands.py +1875 -0
  25. xoa_driver/internals/commands/p4_commands.py +2221 -0
  26. xoa_driver/internals/commands/p4e_commands.py +160 -0
  27. xoa_driver/internals/commands/p4g_commands.py +7253 -0
  28. xoa_driver/internals/commands/p_commands.py +6000 -0
  29. xoa_driver/internals/commands/pc_commands.py +335 -0
  30. xoa_driver/internals/commands/pd_commands.py +355 -0
  31. xoa_driver/internals/commands/pe_commands.py +1018 -0
  32. xoa_driver/internals/commands/pec_commands.py +265 -0
  33. xoa_driver/internals/commands/ped_commands.py +1034 -0
  34. xoa_driver/internals/commands/pef_commands.py +2216 -0
  35. xoa_driver/internals/commands/pf_commands.py +379 -0
  36. xoa_driver/internals/commands/pl1_commands.py +1588 -0
  37. xoa_driver/internals/commands/pl_commands.py +178 -0
  38. xoa_driver/internals/commands/pm_commands.py +256 -0
  39. xoa_driver/internals/commands/pp_commands.py +2341 -0
  40. xoa_driver/internals/commands/pr_commands.py +812 -0
  41. xoa_driver/internals/commands/ps_commands.py +2311 -0
  42. xoa_driver/internals/commands/pt_commands.py +370 -0
  43. xoa_driver/internals/commands/px_commands.py +303 -0
  44. xoa_driver/internals/commands/subtypes.py +86 -0
  45. xoa_driver/internals/core/__init__.py +0 -0
  46. xoa_driver/internals/core/builders.py +39 -0
  47. xoa_driver/internals/core/exceptions.py +69 -0
  48. xoa_driver/internals/core/funcs.py +81 -0
  49. xoa_driver/internals/core/funcs.pyi +1072 -0
  50. xoa_driver/internals/core/interfaces.py +47 -0
  51. xoa_driver/internals/core/token.py +44 -0
  52. xoa_driver/internals/core/transporter/__init__.py +0 -0
  53. xoa_driver/internals/core/transporter/_processor.py +83 -0
  54. xoa_driver/internals/core/transporter/_publisher.py +101 -0
  55. xoa_driver/internals/core/transporter/_request_id_counter.py +28 -0
  56. xoa_driver/internals/core/transporter/_stream.py +99 -0
  57. xoa_driver/internals/core/transporter/_typings.py +43 -0
  58. xoa_driver/internals/core/transporter/exceptions.py +44 -0
  59. xoa_driver/internals/core/transporter/handler.py +127 -0
  60. xoa_driver/internals/core/transporter/logger/__init__.py +10 -0
  61. xoa_driver/internals/core/transporter/logger/__logger.py +94 -0
  62. xoa_driver/internals/core/transporter/logger/__state_off.py +32 -0
  63. xoa_driver/internals/core/transporter/logger/__state_on_default.py +70 -0
  64. xoa_driver/internals/core/transporter/logger/__state_on_loguru.py +51 -0
  65. xoa_driver/internals/core/transporter/logger/__state_on_user.py +48 -0
  66. xoa_driver/internals/core/transporter/protocol/__init__.py +0 -0
  67. xoa_driver/internals/core/transporter/protocol/_constants.py +77 -0
  68. xoa_driver/internals/core/transporter/protocol/_utils.py +59 -0
  69. xoa_driver/internals/core/transporter/protocol/exceptions.py +271 -0
  70. xoa_driver/internals/core/transporter/protocol/payload/__init__.py +70 -0
  71. xoa_driver/internals/core/transporter/protocol/payload/base_struct.py +283 -0
  72. xoa_driver/internals/core/transporter/protocol/payload/descriptor.py +119 -0
  73. xoa_driver/internals/core/transporter/protocol/payload/exceptions.py +20 -0
  74. xoa_driver/internals/core/transporter/protocol/payload/field.py +296 -0
  75. xoa_driver/internals/core/transporter/protocol/payload/types.py +173 -0
  76. xoa_driver/internals/core/transporter/protocol/payload/utils.py +53 -0
  77. xoa_driver/internals/core/transporter/protocol/struct_header.py +123 -0
  78. xoa_driver/internals/core/transporter/protocol/struct_request.py +65 -0
  79. xoa_driver/internals/core/transporter/protocol/struct_response.py +89 -0
  80. xoa_driver/internals/core/transporter/registry.py +43 -0
  81. xoa_driver/internals/exceptions/__init__.py +9 -0
  82. xoa_driver/internals/exceptions/modules.py +13 -0
  83. xoa_driver/internals/exceptions/testers.py +21 -0
  84. xoa_driver/internals/hli_v1/__init__.py +0 -0
  85. xoa_driver/internals/hli_v1/indices/__init__.py +0 -0
  86. xoa_driver/internals/hli_v1/indices/base_index.py +39 -0
  87. xoa_driver/internals/hli_v1/indices/connection_group/__init__.py +0 -0
  88. xoa_driver/internals/hli_v1/indices/connection_group/cg.py +186 -0
  89. xoa_driver/internals/hli_v1/indices/connection_group/histogram.py +78 -0
  90. xoa_driver/internals/hli_v1/indices/connection_group/l2.py +94 -0
  91. xoa_driver/internals/hli_v1/indices/connection_group/l3.py +130 -0
  92. xoa_driver/internals/hli_v1/indices/connection_group/raw.py +200 -0
  93. xoa_driver/internals/hli_v1/indices/connection_group/replay.py +109 -0
  94. xoa_driver/internals/hli_v1/indices/connection_group/tcp.py +314 -0
  95. xoa_driver/internals/hli_v1/indices/connection_group/tls.py +198 -0
  96. xoa_driver/internals/hli_v1/indices/connection_group/udp.py +133 -0
  97. xoa_driver/internals/hli_v1/indices/connection_group/user_state.py +28 -0
  98. xoa_driver/internals/hli_v1/indices/filter/__init__.py +0 -0
  99. xoa_driver/internals/hli_v1/indices/filter/base_filter.py +65 -0
  100. xoa_driver/internals/hli_v1/indices/filter/genuine_filter.py +20 -0
  101. xoa_driver/internals/hli_v1/indices/length_term.py +49 -0
  102. xoa_driver/internals/hli_v1/indices/macsecscs/__init__.py +0 -0
  103. xoa_driver/internals/hli_v1/indices/macsecscs/base_macsecsc.py +224 -0
  104. xoa_driver/internals/hli_v1/indices/macsecscs/genuine_macsecsc.py +72 -0
  105. xoa_driver/internals/hli_v1/indices/match_term.py +64 -0
  106. xoa_driver/internals/hli_v1/indices/port_dataset.py +72 -0
  107. xoa_driver/internals/hli_v1/indices/streams/__init__.py +0 -0
  108. xoa_driver/internals/hli_v1/indices/streams/base_stream.py +405 -0
  109. xoa_driver/internals/hli_v1/indices/streams/genuine_stream.py +64 -0
  110. xoa_driver/internals/hli_v1/modules/__init__.py +0 -0
  111. xoa_driver/internals/hli_v1/modules/__interfaces.py +21 -0
  112. xoa_driver/internals/hli_v1/modules/base_module.py +138 -0
  113. xoa_driver/internals/hli_v1/modules/module_chimera.py +366 -0
  114. xoa_driver/internals/hli_v1/modules/module_l23ve.py +73 -0
  115. xoa_driver/internals/hli_v1/modules/module_l47.py +397 -0
  116. xoa_driver/internals/hli_v1/modules/module_l47ve.py +9 -0
  117. xoa_driver/internals/hli_v1/modules/modules_l23/__init__.py +0 -0
  118. xoa_driver/internals/hli_v1/modules/modules_l23/family_combi.py +83 -0
  119. xoa_driver/internals/hli_v1/modules/modules_l23/family_d.py +75 -0
  120. xoa_driver/internals/hli_v1/modules/modules_l23/family_e.py +85 -0
  121. xoa_driver/internals/hli_v1/modules/modules_l23/family_f.py +145 -0
  122. xoa_driver/internals/hli_v1/modules/modules_l23/family_g.py +84 -0
  123. xoa_driver/internals/hli_v1/modules/modules_l23/family_h.py +40 -0
  124. xoa_driver/internals/hli_v1/modules/modules_l23/family_i.py +25 -0
  125. xoa_driver/internals/hli_v1/modules/modules_l23/family_j.py +25 -0
  126. xoa_driver/internals/hli_v1/modules/modules_l23/family_k.py +39 -0
  127. xoa_driver/internals/hli_v1/modules/modules_l23/family_l.py +55 -0
  128. xoa_driver/internals/hli_v1/modules/modules_l23/family_l1.py +800 -0
  129. xoa_driver/internals/hli_v1/modules/modules_l23/family_m.py +25 -0
  130. xoa_driver/internals/hli_v1/modules/modules_l23/family_n.py +40 -0
  131. xoa_driver/internals/hli_v1/modules/modules_l23/module_l23_base.py +383 -0
  132. xoa_driver/internals/hli_v1/ports/__init__.py +0 -0
  133. xoa_driver/internals/hli_v1/ports/base_port.py +125 -0
  134. xoa_driver/internals/hli_v1/ports/port_l23/__init__.py +0 -0
  135. xoa_driver/internals/hli_v1/ports/port_l23/bases/__init__.py +0 -0
  136. xoa_driver/internals/hli_v1/ports/port_l23/bases/port_capture.py +70 -0
  137. xoa_driver/internals/hli_v1/ports/port_l23/bases/port_l23.py +527 -0
  138. xoa_driver/internals/hli_v1/ports/port_l23/bases/port_l23_genuine.py +229 -0
  139. xoa_driver/internals/hli_v1/ports/port_l23/bases/port_reception_statistics.py +231 -0
  140. xoa_driver/internals/hli_v1/ports/port_l23/bases/port_transceiver.py +117 -0
  141. xoa_driver/internals/hli_v1/ports/port_l23/bases/port_transmission_statistics.py +131 -0
  142. xoa_driver/internals/hli_v1/ports/port_l23/chimera/__init__.py +0 -0
  143. xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/__init__.py +0 -0
  144. xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/_utils.py +15 -0
  145. xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/general.py +396 -0
  146. xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/shadow.py +104 -0
  147. xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/working.py +36 -0
  148. xoa_driver/internals/hli_v1/ports/port_l23/chimera/pe_custom_distribution.py +125 -0
  149. xoa_driver/internals/hli_v1/ports/port_l23/chimera/pe_distribution.py +174 -0
  150. xoa_driver/internals/hli_v1/ports/port_l23/chimera/port_chimera.py +119 -0
  151. xoa_driver/internals/hli_v1/ports/port_l23/chimera/port_emulation.py +244 -0
  152. xoa_driver/internals/hli_v1/ports/port_l23/chimera/reception_statistics.py +24 -0
  153. xoa_driver/internals/hli_v1/ports/port_l23/chimera/transmission_statistics.py +24 -0
  154. xoa_driver/internals/hli_v1/ports/port_l23/family_combi.py +37 -0
  155. xoa_driver/internals/hli_v1/ports/port_l23/family_d.py +51 -0
  156. xoa_driver/internals/hli_v1/ports/port_l23/family_e.py +107 -0
  157. xoa_driver/internals/hli_v1/ports/port_l23/family_f.py +151 -0
  158. xoa_driver/internals/hli_v1/ports/port_l23/family_g.py +77 -0
  159. xoa_driver/internals/hli_v1/ports/port_l23/family_h.py +67 -0
  160. xoa_driver/internals/hli_v1/ports/port_l23/family_i.py +84 -0
  161. xoa_driver/internals/hli_v1/ports/port_l23/family_j.py +68 -0
  162. xoa_driver/internals/hli_v1/ports/port_l23/family_k.py +73 -0
  163. xoa_driver/internals/hli_v1/ports/port_l23/family_l.py +82 -0
  164. xoa_driver/internals/hli_v1/ports/port_l23/family_l1.py +166 -0
  165. xoa_driver/internals/hli_v1/ports/port_l23/family_m.py +29 -0
  166. xoa_driver/internals/hli_v1/ports/port_l23/fault_jkl.py +24 -0
  167. xoa_driver/internals/hli_v1/ports/port_l23/freya_l1.py +722 -0
  168. xoa_driver/internals/hli_v1/ports/port_l23/pcs_pma_ghijkl.py +369 -0
  169. xoa_driver/internals/hli_v1/ports/port_l23/pcs_pma_ijkl_chimera.py +60 -0
  170. xoa_driver/internals/hli_v1/ports/port_l23/pcs_pma_l.py +78 -0
  171. xoa_driver/internals/hli_v1/ports/port_l23/port_l23ve.py +101 -0
  172. xoa_driver/internals/hli_v1/ports/port_l47/__init__.py +0 -0
  173. xoa_driver/internals/hli_v1/ports/port_l47/counters.py +174 -0
  174. xoa_driver/internals/hli_v1/ports/port_l47/main.py +228 -0
  175. xoa_driver/internals/hli_v1/ports/port_l47/packet_engine.py +31 -0
  176. xoa_driver/internals/hli_v1/revisions.py +11 -0
  177. xoa_driver/internals/hli_v1/testers/__init__.py +0 -0
  178. xoa_driver/internals/hli_v1/testers/_base_tester.py +259 -0
  179. xoa_driver/internals/hli_v1/testers/genuine/__init__.py +0 -0
  180. xoa_driver/internals/hli_v1/testers/genuine/l_23/__init__.py +0 -0
  181. xoa_driver/internals/hli_v1/testers/genuine/l_23/health.py +16 -0
  182. xoa_driver/internals/hli_v1/testers/genuine/l_23/rest_api.py +38 -0
  183. xoa_driver/internals/hli_v1/testers/genuine/l_23/time_keeper.py +57 -0
  184. xoa_driver/internals/hli_v1/testers/genuine/l_23/upload_file.py +29 -0
  185. xoa_driver/internals/hli_v1/testers/genuine/management_interface.py +42 -0
  186. xoa_driver/internals/hli_v1/testers/l23_tester.py +196 -0
  187. xoa_driver/internals/hli_v1/testers/l23ve_tester.py +114 -0
  188. xoa_driver/internals/hli_v1/testers/l47_tester.py +106 -0
  189. xoa_driver/internals/hli_v1/testers/l47ve_tester.py +54 -0
  190. xoa_driver/internals/hli_v2/__init__.py +0 -0
  191. xoa_driver/internals/hli_v2/indices/__init__.py +0 -0
  192. xoa_driver/internals/hli_v2/indices/base_index.py +39 -0
  193. xoa_driver/internals/hli_v2/indices/connection_group/__init__.py +0 -0
  194. xoa_driver/internals/hli_v2/indices/connection_group/cg.py +115 -0
  195. xoa_driver/internals/hli_v2/indices/connection_group/histogram.py +59 -0
  196. xoa_driver/internals/hli_v2/indices/connection_group/l2.py +71 -0
  197. xoa_driver/internals/hli_v2/indices/connection_group/l3.py +96 -0
  198. xoa_driver/internals/hli_v2/indices/connection_group/raw.py +148 -0
  199. xoa_driver/internals/hli_v2/indices/connection_group/replay.py +89 -0
  200. xoa_driver/internals/hli_v2/indices/connection_group/tcp.py +261 -0
  201. xoa_driver/internals/hli_v2/indices/connection_group/tls.py +166 -0
  202. xoa_driver/internals/hli_v2/indices/connection_group/udp.py +112 -0
  203. xoa_driver/internals/hli_v2/indices/connection_group/user_state.py +25 -0
  204. xoa_driver/internals/hli_v2/indices/filter/__init__.py +0 -0
  205. xoa_driver/internals/hli_v2/indices/filter/base_filter.py +50 -0
  206. xoa_driver/internals/hli_v2/indices/filter/genuine_filter.py +17 -0
  207. xoa_driver/internals/hli_v2/indices/length_term.py +44 -0
  208. xoa_driver/internals/hli_v2/indices/match_term.py +49 -0
  209. xoa_driver/internals/hli_v2/indices/port_dataset.py +53 -0
  210. xoa_driver/internals/hli_v2/indices/streams/__init__.py +0 -0
  211. xoa_driver/internals/hli_v2/indices/streams/base_stream.py +234 -0
  212. xoa_driver/internals/hli_v2/indices/streams/genuine_stream.py +32 -0
  213. xoa_driver/internals/hli_v2/modules/__init__.py +0 -0
  214. xoa_driver/internals/hli_v2/modules/__interfaces.py +21 -0
  215. xoa_driver/internals/hli_v2/modules/base_module.py +125 -0
  216. xoa_driver/internals/hli_v2/modules/module_chimera.py +358 -0
  217. xoa_driver/internals/hli_v2/modules/module_l23ve.py +58 -0
  218. xoa_driver/internals/hli_v2/modules/module_l47.py +230 -0
  219. xoa_driver/internals/hli_v2/modules/module_l47ve.py +8 -0
  220. xoa_driver/internals/hli_v2/modules/modules_l23/__init__.py +0 -0
  221. xoa_driver/internals/hli_v2/modules/modules_l23/family_combi.py +73 -0
  222. xoa_driver/internals/hli_v2/modules/modules_l23/family_d.py +75 -0
  223. xoa_driver/internals/hli_v2/modules/modules_l23/family_e.py +85 -0
  224. xoa_driver/internals/hli_v2/modules/modules_l23/family_f.py +144 -0
  225. xoa_driver/internals/hli_v2/modules/modules_l23/family_g.py +84 -0
  226. xoa_driver/internals/hli_v2/modules/modules_l23/family_h.py +40 -0
  227. xoa_driver/internals/hli_v2/modules/modules_l23/family_i.py +25 -0
  228. xoa_driver/internals/hli_v2/modules/modules_l23/family_j.py +25 -0
  229. xoa_driver/internals/hli_v2/modules/modules_l23/family_k.py +39 -0
  230. xoa_driver/internals/hli_v2/modules/modules_l23/family_l.py +55 -0
  231. xoa_driver/internals/hli_v2/modules/modules_l23/family_l1.py +797 -0
  232. xoa_driver/internals/hli_v2/modules/modules_l23/family_m.py +25 -0
  233. xoa_driver/internals/hli_v2/modules/modules_l23/family_n.py +40 -0
  234. xoa_driver/internals/hli_v2/modules/modules_l23/module_l23_base.py +339 -0
  235. xoa_driver/internals/hli_v2/ports/__init__.py +0 -0
  236. xoa_driver/internals/hli_v2/ports/base_port.py +105 -0
  237. xoa_driver/internals/hli_v2/ports/port_l23/__init__.py +0 -0
  238. xoa_driver/internals/hli_v2/ports/port_l23/bases/__init__.py +0 -0
  239. xoa_driver/internals/hli_v2/ports/port_l23/bases/port_capture.py +64 -0
  240. xoa_driver/internals/hli_v2/ports/port_l23/bases/port_l23.py +441 -0
  241. xoa_driver/internals/hli_v2/ports/port_l23/bases/port_l23_genuine.py +172 -0
  242. xoa_driver/internals/hli_v2/ports/port_l23/bases/port_reception_statistics.py +156 -0
  243. xoa_driver/internals/hli_v2/ports/port_l23/bases/port_transceiver.py +117 -0
  244. xoa_driver/internals/hli_v2/ports/port_l23/bases/port_transmission_statistics.py +59 -0
  245. xoa_driver/internals/hli_v2/ports/port_l23/chimera/__init__.py +0 -0
  246. xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/__init__.py +0 -0
  247. xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/_utils.py +15 -0
  248. xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/general.py +340 -0
  249. xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/shadow.py +99 -0
  250. xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/working.py +36 -0
  251. xoa_driver/internals/hli_v2/ports/port_l23/chimera/pe_custom_distribution.py +116 -0
  252. xoa_driver/internals/hli_v2/ports/port_l23/chimera/pe_distribution.py +102 -0
  253. xoa_driver/internals/hli_v2/ports/port_l23/chimera/port_chimera.py +113 -0
  254. xoa_driver/internals/hli_v2/ports/port_l23/chimera/port_emulation.py +420 -0
  255. xoa_driver/internals/hli_v2/ports/port_l23/chimera/reception_statistics.py +22 -0
  256. xoa_driver/internals/hli_v2/ports/port_l23/chimera/transmission_statistics.py +22 -0
  257. xoa_driver/internals/hli_v2/ports/port_l23/family_combi.py +36 -0
  258. xoa_driver/internals/hli_v2/ports/port_l23/family_d.py +49 -0
  259. xoa_driver/internals/hli_v2/ports/port_l23/family_e.py +96 -0
  260. xoa_driver/internals/hli_v2/ports/port_l23/family_f.py +144 -0
  261. xoa_driver/internals/hli_v2/ports/port_l23/family_g.py +77 -0
  262. xoa_driver/internals/hli_v2/ports/port_l23/family_h.py +60 -0
  263. xoa_driver/internals/hli_v2/ports/port_l23/family_i.py +66 -0
  264. xoa_driver/internals/hli_v2/ports/port_l23/family_j.py +53 -0
  265. xoa_driver/internals/hli_v2/ports/port_l23/family_k.py +58 -0
  266. xoa_driver/internals/hli_v2/ports/port_l23/family_l.py +67 -0
  267. xoa_driver/internals/hli_v2/ports/port_l23/family_l1.py +149 -0
  268. xoa_driver/internals/hli_v2/ports/port_l23/family_m.py +28 -0
  269. xoa_driver/internals/hli_v2/ports/port_l23/fault_jkl.py +22 -0
  270. xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_ghijkl.py +342 -0
  271. xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_ijkl_chimera.py +50 -0
  272. xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_l.py +65 -0
  273. xoa_driver/internals/hli_v2/ports/port_l23/port_l23ve.py +81 -0
  274. xoa_driver/internals/hli_v2/ports/port_l47/__init__.py +0 -0
  275. xoa_driver/internals/hli_v2/ports/port_l47/counters.py +146 -0
  276. xoa_driver/internals/hli_v2/ports/port_l47/main.py +137 -0
  277. xoa_driver/internals/hli_v2/ports/port_l47/packet_engine.py +20 -0
  278. xoa_driver/internals/hli_v2/revisions.py +11 -0
  279. xoa_driver/internals/hli_v2/testers/__init__.py +0 -0
  280. xoa_driver/internals/hli_v2/testers/_base_tester.py +207 -0
  281. xoa_driver/internals/hli_v2/testers/genuine/__init__.py +0 -0
  282. xoa_driver/internals/hli_v2/testers/genuine/l_23/__init__.py +0 -0
  283. xoa_driver/internals/hli_v2/testers/genuine/l_23/health.py +16 -0
  284. xoa_driver/internals/hli_v2/testers/genuine/l_23/rest_api.py +34 -0
  285. xoa_driver/internals/hli_v2/testers/genuine/l_23/time_keeper.py +50 -0
  286. xoa_driver/internals/hli_v2/testers/genuine/l_23/upload_file.py +26 -0
  287. xoa_driver/internals/hli_v2/testers/genuine/management_interface.py +38 -0
  288. xoa_driver/internals/hli_v2/testers/l23_tester.py +159 -0
  289. xoa_driver/internals/hli_v2/testers/l23ve_tester.py +98 -0
  290. xoa_driver/internals/hli_v2/testers/l47_tester.py +95 -0
  291. xoa_driver/internals/hli_v2/testers/l47ve_tester.py +50 -0
  292. xoa_driver/internals/state_storage/__init__.py +0 -0
  293. xoa_driver/internals/state_storage/_speed_detector.py +121 -0
  294. xoa_driver/internals/state_storage/modules_state.py +128 -0
  295. xoa_driver/internals/state_storage/ports_state.py +154 -0
  296. xoa_driver/internals/state_storage/testers_state.py +104 -0
  297. xoa_driver/internals/utils/__init__.py +0 -0
  298. xoa_driver/internals/utils/attributes.py +33 -0
  299. xoa_driver/internals/utils/cap_id.py +63 -0
  300. xoa_driver/internals/utils/con_traffic_light.py +88 -0
  301. xoa_driver/internals/utils/indices/__init__.py +0 -0
  302. xoa_driver/internals/utils/indices/_interfaces.py +26 -0
  303. xoa_driver/internals/utils/indices/header_modifier_manager.py +56 -0
  304. xoa_driver/internals/utils/indices/index_manager.py +95 -0
  305. xoa_driver/internals/utils/indices/observer.py +17 -0
  306. xoa_driver/internals/utils/kind.py +19 -0
  307. xoa_driver/internals/utils/managers/__init__.py +0 -0
  308. xoa_driver/internals/utils/managers/abc.py +44 -0
  309. xoa_driver/internals/utils/managers/exceptions.py +22 -0
  310. xoa_driver/internals/utils/managers/modules_manager.py +118 -0
  311. xoa_driver/internals/utils/managers/ports_manager.py +116 -0
  312. xoa_driver/internals/utils/rev_tool.py +21 -0
  313. xoa_driver/internals/utils/session.py +117 -0
  314. xoa_driver/internals/warn.py +32 -0
  315. xoa_driver/lli.py +15 -0
  316. xoa_driver/misc.py +57 -0
  317. xoa_driver/modules.py +448 -0
  318. xoa_driver/ports.py +332 -0
  319. xoa_driver/testers.py +37 -0
  320. xoa_driver/utils.py +12 -0
  321. xoa_driver/v2/__init__.py +11 -0
  322. xoa_driver/v2/misc.py +77 -0
  323. xoa_driver/v2/modules.py +308 -0
  324. xoa_driver/v2/ports.py +232 -0
  325. xoa_driver/v2/testers.py +24 -0
@@ -0,0 +1,358 @@
1
+ import asyncio
2
+ import functools
3
+ import typing
4
+ from typing_extensions import Self
5
+ from xoa_driver.internals.commands import (
6
+ M_STATUS,
7
+ M_UPGRADE,
8
+ M_UPGRADEPROGRESS,
9
+ M_CFPTYPE,
10
+ M_COMMENT,
11
+ M_CAPABILITIES,
12
+ M_CLOCKPPB,
13
+ M_TXCLOCKSOURCE_NEW,
14
+ M_TXCLOCKSTATUS_NEW,
15
+ M_EMULBYPASS,
16
+ M_LATENCYMODE,
17
+ M_REVISION,
18
+ M_MEDIA,
19
+ M_MEDIASUPPORT,
20
+ M_TIMESYNC,
21
+ M_CLOCKSYNCSTATUS,
22
+ M_NAME,
23
+ M_CFPCONFIGEXT,
24
+ M_UPGRADEPAR,
25
+ M_VERSIONSTR,
26
+ )
27
+
28
+ from xoa_driver.internals.hli_v2 import revisions
29
+ from xoa_driver.internals.utils.managers import ports_manager as pm
30
+ from xoa_driver.internals.utils import attributes as utils
31
+ from xoa_driver.internals.state_storage import modules_state
32
+ from xoa_driver.v2 import ports
33
+ from xoa_driver.internals.hli_v2.modules.modules_l23.module_l23_base import MediaModule, CfpModule
34
+ from . import base_module as bm
35
+
36
+ if typing.TYPE_CHECKING:
37
+ from xoa_driver.internals.core import interfaces as itf
38
+ from . import __interfaces as m_itf
39
+
40
+
41
+ class ChTXClock:
42
+ """
43
+ Advanced timing feature (Chimera).
44
+ """
45
+
46
+ def __init__(self, conn: "itf.IConnection", module_id: int) -> None:
47
+ self.source = M_TXCLOCKSOURCE_NEW(conn, module_id)
48
+ """
49
+ The source that drives the TX clock rate of the ports on the test module.
50
+ Representation of M_TXCLOCKSOURCE_NEW
51
+ """
52
+ self.status = M_TXCLOCKSTATUS_NEW(conn, module_id)
53
+ """
54
+ TX clock status of the test module.
55
+ Representation of M_TXCLOCKSTATUS_NEW
56
+ """
57
+
58
+
59
+ class ChCFP:
60
+ """
61
+ CFP test module (Chimera).
62
+ """
63
+
64
+ def __init__(self, conn: "itf.IConnection", module: 'ModuleChimera') -> None:
65
+ self.type = M_CFPTYPE(conn, module.module_id)
66
+ """
67
+ The transceiver's CFP type currently inserted.
68
+ Representation of M_CFPTYPE
69
+ """
70
+ self.config = CfpModule(conn, module)
71
+ """
72
+ The CFP configuration of the test module.
73
+ Representation of CfpModule
74
+ """
75
+
76
+
77
+ class ChUpgrade:
78
+ """
79
+ Upgrade test module (Chimera).
80
+ """
81
+
82
+ def __init__(self, conn: "itf.IConnection", module_id: int) -> None:
83
+ self.start = M_UPGRADE(conn, module_id)
84
+ """
85
+ Start the upgrade progress of the test module.
86
+ Representation of M_UPGRADE
87
+ """
88
+ self.progress = M_UPGRADEPROGRESS(conn, module_id)
89
+ """
90
+ Upgrade progress status of the test module.
91
+ Representation of M_UPGRADEPROGRESS
92
+ """
93
+ self.start_parallel = M_UPGRADEPAR(conn, module_id)
94
+ """
95
+ Start the parallel upgrade progress of the test module.
96
+
97
+ :type: M_UPGRADEPAR
98
+ """
99
+
100
+
101
+ class ChTiming:
102
+ """Test module timing and clock configuration"""
103
+
104
+ def __init__(self, conn: "itf.IConnection", module_id: int) -> None:
105
+
106
+ self.source = M_TIMESYNC(conn, module_id)
107
+ """Timing source of the test module.
108
+
109
+ :type: M_TIMESYNC
110
+ """
111
+
112
+ self.clock_local_adjust = M_CLOCKPPB(conn, module_id)
113
+ """Time adjustment controlling of the local clock of the test module, which drives the TX rate of the test ports.
114
+
115
+ :type: M_CLOCKPPB
116
+ """
117
+
118
+ self.clock_sync_status = M_CLOCKSYNCSTATUS(conn, module_id)
119
+ """Test module's clock sync status.
120
+
121
+ :type: M_CLOCKSYNCSTATUS
122
+ """
123
+
124
+
125
+ class ChAdvancedTiming:
126
+ """Advanced Timing config and control"""
127
+
128
+ def __init__(self, conn: "itf.IConnection", module_id: int) -> None:
129
+ self.clock = ChTXClock(conn, module_id)
130
+ """Advanced timing clock config and status
131
+ """
132
+
133
+
134
+ class ModuleChimera(bm.BaseModule["modules_state.ModuleLocalState"]):
135
+ """
136
+ Representation of a Chimera module on physical tester.
137
+ """
138
+
139
+ def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
140
+ super().__init__(conn, init_data)
141
+
142
+ self._local_states = modules_state.ModuleLocalState()
143
+
144
+ self.tx_clock = ChTXClock(conn, self.module_id)
145
+ """
146
+ TX clock config (Chimera).
147
+
148
+ :type: ChTXClock
149
+ """
150
+
151
+ self.timing = ChTiming(conn, self.module_id)
152
+ """
153
+ Timing config (Chimera).
154
+
155
+ :type: ChTiming
156
+ """
157
+
158
+ self.cfp = ChCFP(conn, self)
159
+ """
160
+ CFP test module (Chimera).
161
+
162
+ :type: ChCFP
163
+ """
164
+
165
+ self.upgrade = ChUpgrade(conn, self.module_id)
166
+ """
167
+ Upgrade test module (Chimera).
168
+
169
+ :type: ChUpgrade
170
+ """
171
+
172
+ self.capabilities = M_CAPABILITIES(conn, self.module_id)
173
+ """
174
+ Test module's capabilities.
175
+
176
+ :type: M_CAPABILITIES
177
+ """
178
+
179
+ self.comment = M_COMMENT(conn, self.module_id)
180
+ """
181
+ Test module's description.
182
+
183
+ :type: M_COMMENT
184
+ """
185
+
186
+ self.status = M_STATUS(conn, self.module_id)
187
+ """
188
+ Test module's status.
189
+
190
+ :type: M_STATUS
191
+ """
192
+
193
+ self.clock_ppb = M_CLOCKPPB(conn, self.module_id)
194
+ """
195
+ Test module's local clock adjustment.
196
+
197
+ :type: M_CLOCKPPB
198
+ """
199
+
200
+ self.emulator_bypass_mode = M_EMULBYPASS(conn, self.module_id)
201
+ """
202
+ Bypass mode of the Chimera module.
203
+
204
+ :type: M_EMULBYPASS
205
+ """
206
+
207
+ self.latency_mode = M_LATENCYMODE(conn, self.module_id)
208
+ """
209
+ Latency mode of the Chimera module.
210
+
211
+ :type: M_LATENCYMODE
212
+ """
213
+
214
+ self.revision = M_REVISION(conn, self.module_id)
215
+ """Test module's model P/N name.
216
+
217
+ :type: M_REVISION
218
+ """
219
+
220
+ self.version_str = M_VERSIONSTR(conn, self.module_id)
221
+ """Module version number in the new format
222
+
223
+ :type: M_VERSIONSTR
224
+ """
225
+
226
+ self.media = MediaModule(conn, self)
227
+ """Test module's media type.
228
+
229
+ :type: MediaModule
230
+ """
231
+
232
+ self.available_speeds = M_MEDIASUPPORT(conn, self.module_id)
233
+ """Test module's available speeds.
234
+
235
+ :type: M_MEDIASUPPORT
236
+ """
237
+
238
+ self.name = M_NAME(conn, self.module_id)
239
+ """Test module's name.
240
+
241
+ :type: M_NAME
242
+ """
243
+
244
+ self.ports: pm.PortsManager["ports.PortChimera"] = pm.PortsManager(
245
+ conn=conn,
246
+ ports_type=ports.PortChimera,
247
+ module_id=self.module_id,
248
+ ports_count=self.ports_count
249
+ )
250
+ """
251
+ Port index manager of the Chimera module.
252
+ """
253
+
254
+ @property
255
+ def info(self) -> modules_state.ModuleLocalState:
256
+ return self._local_states
257
+
258
+ async def _setup(self) -> Self:
259
+ await asyncio.gather(
260
+ self._local_states.initiate(self),
261
+ self.ports.fill()
262
+ )
263
+ self._local_states.register_subscriptions(self)
264
+ return self
265
+
266
+ on_cfp_type_change = functools.partialmethod(utils.on_event, M_CFPTYPE)
267
+ """
268
+ Register a callback function to the event that the module's CFP type changes.
269
+ """
270
+
271
+ on_cfp_config_change = functools.partialmethod(utils.on_event, M_CFPCONFIGEXT)
272
+ """
273
+ Register a callback function to the event that the module's CFP configuration changes.
274
+ """
275
+
276
+ on_status_change = functools.partialmethod(utils.on_event, M_STATUS)
277
+ """
278
+ Register a callback function to the event that the module's model changes.
279
+ """
280
+
281
+ on_latency_mode_change = functools.partialmethod(utils.on_event, M_LATENCYMODE)
282
+ """
283
+ Register a callback function to the event that the module's latency mode changes.
284
+ """
285
+
286
+ on_media_change = functools.partialmethod(utils.on_event, M_MEDIA)
287
+ """
288
+ Register a callback to the event that the module's media and available speeds change.
289
+ """
290
+
291
+ on_media_support_change = functools.partialmethod(utils.on_event, M_MEDIASUPPORT)
292
+ """
293
+ Register a callback to the event that the module's supported media changes.
294
+ """
295
+
296
+ on_timing_source_change = functools.partialmethod(utils.on_event, M_TIMESYNC)
297
+ """
298
+ Register a callback to the event that the module's timesync mode changes.
299
+ """
300
+
301
+ on_timing_clock_local_adjust_change = functools.partialmethod(utils.on_event, M_CLOCKPPB)
302
+ """
303
+ Register a callback to the event that the module's clock adjustment ppb changes.
304
+ """
305
+
306
+ on_adv_timing_clock_tx_status_change = functools.partialmethod(utils.on_event, M_TXCLOCKSTATUS_NEW)
307
+ """Register a callback to the event that the module's TX clock status changes."""
308
+
309
+ on_adv_timing_clock_tx_source_change = functools.partialmethod(utils.on_event, M_TXCLOCKSOURCE_NEW)
310
+ """Register a callback to the event that the module's clock that drives the port TX rates changes."""
311
+
312
+
313
+ @typing.final
314
+ @revisions.register_chimera_module(rev="Chimera-100G-5S-2P")
315
+ class MChi100G5S2P(ModuleChimera):
316
+ """Chimera module Chi-100G-5S-2P"""
317
+
318
+ def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
319
+ super().__init__(conn, init_data)
320
+ self.ports: pm.PortsManager[ports.PChi100G5S2P] = pm.PortsManager(
321
+ conn=conn,
322
+ ports_type=ports.PChi100G5S2P,
323
+ module_id=self.module_id,
324
+ ports_count=self.ports_count
325
+ )
326
+ """Port index manager of Chi-100G-5S-2P"""
327
+
328
+
329
+ @typing.final
330
+ @revisions.register_chimera_module(rev="Chimera-100G-5S-2P[b]")
331
+ class MChi100G5S2P_b(ModuleChimera):
332
+ """Chimera module Chi-100G-5S-2P[b]"""
333
+
334
+ def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
335
+ super().__init__(conn, init_data)
336
+ self.ports: pm.PortsManager[ports.PChi100G5S2P_b] = pm.PortsManager(
337
+ conn=conn,
338
+ ports_type=ports.PChi100G5S2P_b,
339
+ module_id=self.module_id,
340
+ ports_count=self.ports_count
341
+ )
342
+ """Port index manager of Chi-100G-5S-2P[b]"""
343
+
344
+
345
+ @typing.final
346
+ @revisions.register_chimera_module(rev="Chimera-40G-2S-2P")
347
+ class MChi40G2S2P(ModuleChimera):
348
+ """Chimera module Chi-40G-2S-2P"""
349
+
350
+ def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
351
+ super().__init__(conn, init_data)
352
+ self.ports: pm.PortsManager[ports.PChi40G2S2P] = pm.PortsManager(
353
+ conn=conn,
354
+ ports_type=ports.PChi40G2S2P,
355
+ module_id=self.module_id,
356
+ ports_count=self.ports_count
357
+ )
358
+ """Port index manager of Chi-40G-2S-2P"""
@@ -0,0 +1,58 @@
1
+ import asyncio
2
+ import typing
3
+ from typing_extensions import Self
4
+ from xoa_driver.internals.commands import (
5
+ M_COMMENT,
6
+ M_CAPABILITIES,
7
+ M_MULTIUSER
8
+ )
9
+ from xoa_driver.v2 import ports
10
+ from xoa_driver.internals.utils.managers import ports_manager as pm
11
+ from xoa_driver.internals.state_storage import modules_state
12
+ from . import base_module as bm
13
+ if typing.TYPE_CHECKING:
14
+ from xoa_driver.internals.core import interfaces as itf
15
+ from . import __interfaces as m_itf
16
+
17
+
18
+ class ModuleL23VE(bm.BaseModule["modules_state.ModuleLocalState"]):
19
+ """
20
+ Representation of a L23 test module on virtual tester.
21
+ """
22
+ def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
23
+ super().__init__(conn, init_data)
24
+
25
+ self._local_states = modules_state.ModuleLocalState()
26
+
27
+ self.comment = M_COMMENT(conn, self.module_id)
28
+ """Test module's description.
29
+ Representation of M_COMMENT
30
+ """
31
+ self.capabilities = M_CAPABILITIES(conn, self.module_id)
32
+ """Test module's capabilities.
33
+ Representation of M_CAPABILITIES
34
+ """
35
+ self.multiuser = M_MULTIUSER(conn, self.module_id)
36
+ """If multiple users are allowed to control the same test module.
37
+ Representation of M_MULTIUSER
38
+ """
39
+
40
+ self.ports: pm.PortsManager[ports.PortL23VE] = pm.PortsManager(
41
+ conn=conn,
42
+ ports_type=ports.PortL23VE,
43
+ module_id=self.module_id,
44
+ ports_count=self.ports_count
45
+ )
46
+ """L23 VE Port index manager of this test module."""
47
+
48
+ @property
49
+ def info(self) -> modules_state.ModuleLocalState:
50
+ return self._local_states
51
+
52
+ async def _setup(self) -> Self:
53
+ await asyncio.gather(
54
+ self._local_states.initiate(self),
55
+ self.ports.fill()
56
+ )
57
+ self._local_states.register_subscriptions(self)
58
+ return self
@@ -0,0 +1,230 @@
1
+ import asyncio
2
+ import functools
3
+ import typing
4
+ from typing_extensions import Self
5
+ from xoa_driver.internals.commands import (
6
+ M_LICENSE_DEMO_INFO,
7
+ M_LICENSE_MAINTENANCE_INFO,
8
+ M_LICENSE_CWB_DETECTED,
9
+ M_LICENSE_UPDATE,
10
+ M_LICENSE_UPDATE_STATUS,
11
+ M_LICENSE_LIST_BSON,
12
+ M_LICENSE_ONLINE,
13
+ # M4_INT, #TODO: need to implement
14
+ # M4_STRING, #TODO: need to implement
15
+ # M4_HEX, #TODO: need to implement
16
+ M4_SYSTEMID,
17
+ M4_VERSIONNO,
18
+ M4_SYSTEM_STATUS,
19
+ M4_COMPATIBLE_CLIENT_VERSION,
20
+ M4_TIME,
21
+ M4_SYSTEM_TIME,
22
+ M4_MEM_INFO,
23
+ M4_CAPTURE_SIZE,
24
+ M4_LICENSE_INFO,
25
+ M4_REPLAY_PARSE_START,
26
+ M4_REPLAY_PARSE_STOP,
27
+ M4_REPLAY_PARSE_STATE,
28
+ M4_REPLAY_PARSER_PARAMS,
29
+ M4_REPLAY_FILE_LIST_BSON,
30
+ M4_REPLAY_FILE_LIST,
31
+ M4_CAPTURE_FILE_LIST_BSON,
32
+ M4_CAPTURE_FILE_LIST,
33
+ # M4_REPLAY_FILE_INFO_BSON, #TODO: need to implement
34
+ M4_REPLAY_FILE_DELETE,
35
+ M4_CAPTURE_FILE_DELETE,
36
+ M4E_MODE,
37
+ M4E_RESERVE,
38
+ M4_TLS_CIPHER_SUITES,
39
+ )
40
+ from xoa_driver.internals.hli_v2 import revisions
41
+ from xoa_driver.internals.utils import attributes as utils
42
+ from xoa_driver.internals.utils.managers import ports_manager as pm
43
+ from xoa_driver.internals.state_storage import modules_state
44
+ from xoa_driver.v2 import ports
45
+ from . import base_module as bm
46
+ if typing.TYPE_CHECKING:
47
+ from xoa_driver.internals.core import interfaces as itf
48
+ from . import __interfaces as m_itf
49
+
50
+
51
+ class License:
52
+ """License management for Vulcan"""
53
+ def __init__(self, conn: "itf.IConnection", module_id: int) -> None:
54
+ self.demo_info = M_LICENSE_DEMO_INFO(conn, module_id)
55
+ """Representation of M_LICENSE_DEMO_INFO
56
+ """
57
+ self.management_info = M_LICENSE_MAINTENANCE_INFO(conn, module_id)
58
+ """Representation of M_LICENSE_MAINTENANCE_INFO
59
+ """
60
+ self.clock_windback = M_LICENSE_CWB_DETECTED(conn, module_id)
61
+ """Representation of M_LICENSE_CWB_DETECTED
62
+ """
63
+ self.update = M_LICENSE_UPDATE(conn, module_id)
64
+ """Representation of M_LICENSE_UPDATE
65
+ """
66
+ self.update_status = M_LICENSE_UPDATE_STATUS(conn, module_id)
67
+ """Representation of M_LICENSE_UPDATE_STATUS
68
+ """
69
+ self.list_bson = M_LICENSE_LIST_BSON(conn, module_id)
70
+ """Representation of M_LICENSE_LIST_BSON
71
+ """
72
+ self.online_mode = M_LICENSE_ONLINE(conn, module_id)
73
+ """Representation of M_LICENSE_ONLINE
74
+ """
75
+
76
+
77
+ class CaptureParse:
78
+ """Parse a captured pcap file"""
79
+ def __init__(self, conn: "itf.IConnection", module_id: int) -> None:
80
+ self.start = M4_REPLAY_PARSE_START(conn, module_id)
81
+ """Representation of M4_REPLAY_PARSE_START
82
+ """
83
+ self.stop = M4_REPLAY_PARSE_STOP(conn, module_id)
84
+ """Representation of M4_REPLAY_PARSE_STOP
85
+ """
86
+ self.state = M4_REPLAY_PARSE_STATE(conn, module_id)
87
+ """Representation of M4_REPLAY_PARSE_STATE
88
+ """
89
+ self.parser_params = M4_REPLAY_PARSER_PARAMS(conn, module_id)
90
+ """Representation of M4_REPLAY_PARSER_PARAMS
91
+ """
92
+
93
+
94
+ class ReplayFile:
95
+ """The pcap files to replay"""
96
+ def __init__(self, conn: "itf.IConnection", module_id: int) -> None:
97
+ self.list_bson = M4_REPLAY_FILE_LIST_BSON(conn, module_id)
98
+ """Representation of M4_REPLAY_FILE_LIST_BSON
99
+ """
100
+ self.list = M4_REPLAY_FILE_LIST(conn, module_id)
101
+ """Representation of M4_REPLAY_FILE_LIST
102
+ """
103
+ # self.info_bson = M4_REPLAY_FILE_INFO_BSON(conn, module_id) # TODO: need to implement
104
+ self.delete = M4_REPLAY_FILE_DELETE(conn, module_id)
105
+ """Representation of M4_REPLAY_FILE_DELETE
106
+ """
107
+
108
+
109
+ class Replay:
110
+ """PCAP replay"""
111
+ def __init__(self, conn: "itf.IConnection", module_id: int) -> None:
112
+ self.file = ReplayFile(conn, module_id)
113
+ """The pcap file to replay."""
114
+
115
+
116
+ class Capture:
117
+ """Captured pcap file"""
118
+ def __init__(self, conn: "itf.IConnection", module_id: int) -> None:
119
+ self.size = M4_CAPTURE_SIZE(conn, module_id)
120
+ """Representation of M4_CAPTURE_SIZE
121
+ """
122
+ self.file_list_bson = M4_CAPTURE_FILE_LIST_BSON(conn, module_id)
123
+ """Representation of M4_CAPTURE_FILE_LIST_BSON
124
+ """
125
+ self.file_list = M4_CAPTURE_FILE_LIST(conn, module_id)
126
+ """Representation of M4_CAPTURE_FILE_LIST
127
+ """
128
+ self.file_delete = M4_CAPTURE_FILE_DELETE(conn, module_id)
129
+ """Representation of M4_CAPTURE_FILE_DELETE
130
+ """
131
+ self.parse = CaptureParse(conn, module_id)
132
+ """Parse a captured pcap file."""
133
+
134
+
135
+ class PacketEngine:
136
+ """Packet engine"""
137
+ def __init__(self, conn: "itf.IConnection", module_id: int) -> None:
138
+ self.license_info = M4_LICENSE_INFO(conn, module_id)
139
+ """Representation of M4_LICENSE_INFO
140
+ """
141
+ self.reserve = M4E_RESERVE(conn, module_id)
142
+ """Representation of M4E_RESERVE
143
+ """
144
+ self.mode = M4E_MODE(conn, module_id)
145
+ """Representation of M4E_MODE
146
+ """
147
+
148
+
149
+ class ModuleSystem:
150
+ """L47 module info"""
151
+ def __init__(self, conn: "itf.IConnection", module_id: int) -> None:
152
+ self.id = M4_SYSTEMID(conn, module_id)
153
+ """Representation of M4_SYSTEMID
154
+ """
155
+ self.status = M4_SYSTEM_STATUS(conn, module_id)
156
+ """Representation of M4_SYSTEM_STATUS
157
+ """
158
+ self.time = M4_SYSTEM_TIME(conn, module_id)
159
+ """Representation of M4_SYSTEM_TIME
160
+ """
161
+
162
+
163
+ @revisions.register_vulcan_module(rev="Xena L47 Module")
164
+ class ModuleL47(bm.BaseModule["modules_state.ModuleLocalState"]):
165
+ """
166
+ Representation of a L47 test module on a physical tester.
167
+ """
168
+ def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
169
+ super().__init__(conn, init_data)
170
+
171
+ self._local_states = modules_state.ModuleLocalState()
172
+
173
+ self.version_number = M4_VERSIONNO(conn, self.module_id)
174
+ """Representation of M4_VERSIONNO
175
+ """
176
+ self.compatible_client_version = M4_COMPATIBLE_CLIENT_VERSION(conn, self.module_id)
177
+ """Representation of M4_COMPATIBLE_CLIENT_VERSION
178
+ """
179
+ self.time = M4_TIME(conn, self.module_id)
180
+ """Representation of M4_TIME
181
+ """
182
+ self.tls_cipher = M4_TLS_CIPHER_SUITES(conn, self.module_id)
183
+ """Representation of M4_TLS_CIPHER_SUITES
184
+ """
185
+ self.memory_info = M4_MEM_INFO(conn, self.module_id) # Not sure if suppose to be here, maybe under ModuleSystem
186
+ """Representation of M4_MEM_INFO
187
+ """
188
+
189
+ self.module_system = ModuleSystem(conn, self.module_id)
190
+ """L47 module info."""
191
+ self.license = License(conn, self.module_id)
192
+ """L47 license management."""
193
+ self.replay = Replay(conn, self.module_id)
194
+ """L47 pcap replay."""
195
+ self.capture = Capture(conn, self.module_id)
196
+ """L47 capture to pcap files."""
197
+ self.packet_engine = PacketEngine(conn, self.module_id)
198
+ """L47 packet engine."""
199
+
200
+ self.ports: pm.PortsManager[ports.PortL47] = pm.PortsManager(
201
+ conn=conn,
202
+ ports_type=ports.PortL47,
203
+ module_id=self.module_id,
204
+ ports_count=self.ports_count
205
+ )
206
+ """L47 Port index manager of this test module."""
207
+
208
+ @property
209
+ def info(self) -> modules_state.ModuleLocalState:
210
+ return self._local_states
211
+
212
+ async def _setup(self) -> Self:
213
+ await asyncio.gather(
214
+ self._local_states.initiate(self),
215
+ self.ports.fill()
216
+ )
217
+ self._local_states.register_subscriptions(self)
218
+ return self
219
+
220
+ on_license_demo_info_change = functools.partialmethod(utils.on_event, M_LICENSE_DEMO_INFO)
221
+ """Register a callback to the event that the module's demo license info changes."""
222
+
223
+ on_license_maintenance_info_change = functools.partialmethod(utils.on_event, M_LICENSE_MAINTENANCE_INFO)
224
+ """Register a callback to the event that the module's maintenance license info changes."""
225
+
226
+ on_replay_parse_state_change = functools.partialmethod(utils.on_event, M4_REPLAY_PARSE_STATE)
227
+ """Register a callback to the event that the module's parsing state of a captured pcap file changes."""
228
+
229
+ on_license_info_change = functools.partialmethod(utils.on_event, M4_LICENSE_INFO)
230
+ """Register a callback to the event that the module's L47 license info changes."""
@@ -0,0 +1,8 @@
1
+ from . import module_l47 as l47m
2
+
3
+
4
+ class ModuleL47VE(l47m.ModuleL47):
5
+ """
6
+ Representation of a L47 test module on a virtual tester.
7
+ """
8
+ ...