tdl-xoa-driver 1.0.0b1__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.0b1.dist-info/LICENSE +202 -0
  2. tdl_xoa_driver-1.0.0b1.dist-info/METADATA +177 -0
  3. tdl_xoa_driver-1.0.0b1.dist-info/RECORD +325 -0
  4. tdl_xoa_driver-1.0.0b1.dist-info/WHEEL +5 -0
  5. tdl_xoa_driver-1.0.0b1.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,146 @@
1
+ from xoa_driver.internals.core import interfaces as itf
2
+ from xoa_driver.internals.commands import (
3
+ P4_ETH_TX_COUNTERS,
4
+ P4_ETH_RX_COUNTERS,
5
+ P4_PORT_TX_COUNTERS,
6
+ P4_PORT_RX_COUNTERS,
7
+ P4_PORT_COUNTERS,
8
+ P4_IPV4_RX_COUNTERS,
9
+ P4_IPV4_TX_COUNTERS,
10
+ P4_IPV4_COUNTERS,
11
+ P4_IPV6_RX_COUNTERS,
12
+ P4_IPV6_TX_COUNTERS,
13
+ P4_IPV6_COUNTERS,
14
+ P4_ARP_RX_COUNTERS,
15
+ P4_ARP_TX_COUNTERS,
16
+ P4_ARP_COUNTERS,
17
+ P4_NDP_RX_COUNTERS,
18
+ P4_NDP_TX_COUNTERS,
19
+ P4_NDP_COUNTERS,
20
+ P4_ICMP_RX_COUNTERS,
21
+ P4_ICMP_TX_COUNTERS,
22
+ P4_ICMP_COUNTERS,
23
+ P4_TCP_RX_COUNTERS,
24
+ P4_TCP_TX_COUNTERS,
25
+ P4_TCP_COUNTERS,
26
+ P4_UDP_RX_COUNTERS,
27
+ P4_UDP_TX_COUNTERS,
28
+ P4_UDP_COUNTERS,
29
+ P4_CLEAR_COUNTERS,
30
+ P4_ETH_COUNTERS,
31
+ )
32
+
33
+
34
+ class PCountersIPv4:
35
+ """IPV4 statistics"""
36
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
37
+ self.rx = P4_IPV4_RX_COUNTERS(conn, module_id, port_id)
38
+ """Representation of P4_IPV4_RX_COUNTERS"""
39
+ self.tx = P4_IPV4_TX_COUNTERS(conn, module_id, port_id)
40
+ """Representation of P4_IPV4_TX_COUNTERS"""
41
+ self.total = P4_IPV4_COUNTERS(conn, module_id, port_id)
42
+ """Representation of P4_IPV4_COUNTERS"""
43
+
44
+
45
+ class PCountersIPv6:
46
+ """IPV6 statistics"""
47
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
48
+ self.rx = P4_IPV6_RX_COUNTERS(conn, module_id, port_id)
49
+ """Representation of P4_IPV6_RX_COUNTERS"""
50
+ self.tx = P4_IPV6_TX_COUNTERS(conn, module_id, port_id)
51
+ """Representation of P4_IPV6_TX_COUNTERS"""
52
+ self.total = P4_IPV6_COUNTERS(conn, module_id, port_id)
53
+ """Representation of P4_IPV6_COUNTERS"""
54
+
55
+
56
+ class PCountersICMP:
57
+ """ICMP statistics"""
58
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
59
+ self.rx = P4_ICMP_RX_COUNTERS(conn, module_id, port_id)
60
+ """Representation of P4_ICMP_RX_COUNTERS"""
61
+ self.tx = P4_ICMP_TX_COUNTERS(conn, module_id, port_id)
62
+ """Representation of P4_ICMP_TX_COUNTERS"""
63
+ self.total = P4_ICMP_COUNTERS(conn, module_id, port_id)
64
+ """Representation of P4_ICMP_COUNTERS"""
65
+
66
+
67
+ class PCountersTCP:
68
+ """ICMP statistics"""
69
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
70
+ self.rx = P4_TCP_RX_COUNTERS(conn, module_id, port_id)
71
+ """Representation of P4_TCP_RX_COUNTERS"""
72
+ self.tx = P4_TCP_TX_COUNTERS(conn, module_id, port_id)
73
+ """Representation of P4_TCP_TX_COUNTERS"""
74
+ self.total = P4_TCP_COUNTERS(conn, module_id, port_id)
75
+ """Representation of P4_TCP_COUNTERS"""
76
+
77
+
78
+ class PCountersUDP:
79
+ """ICMP statistics"""
80
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
81
+ self.rx = P4_UDP_RX_COUNTERS(conn, module_id, port_id)
82
+ """Representation of P4_UDP_RX_COUNTERS"""
83
+ self.tx = P4_UDP_TX_COUNTERS(conn, module_id, port_id)
84
+ """Representation of P4_UDP_TX_COUNTERS"""
85
+ self.total = P4_UDP_COUNTERS(conn, module_id, port_id)
86
+ """Representation of P4_UDP_COUNTERS"""
87
+
88
+
89
+ class PCountersETH:
90
+ """ICMP statistics"""
91
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
92
+ self.rx = P4_ETH_RX_COUNTERS(conn, module_id, port_id)
93
+ """Representation of P4_ETH_RX_COUNTERS"""
94
+ self.tx = P4_ETH_TX_COUNTERS(conn, module_id, port_id)
95
+ """Representation of P4_ETH_TX_COUNTERS"""
96
+ self.total = P4_ETH_COUNTERS(conn, module_id, port_id)
97
+ """Representation of P4_ETH_COUNTERS"""
98
+
99
+
100
+ class PCountersARP:
101
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
102
+ self.rx = P4_ARP_RX_COUNTERS(conn, module_id, port_id)
103
+ """Representation of P4_ARP_RX_COUNTERS"""
104
+ self.tx = P4_ARP_TX_COUNTERS(conn, module_id, port_id)
105
+ """Representation of P4_ARP_TX_COUNTERS"""
106
+ self.total = P4_ARP_COUNTERS(conn, module_id, port_id)
107
+ """Representation of P4_ARP_COUNTERS"""
108
+
109
+
110
+ class PCountersNDP:
111
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
112
+ self.rx = P4_NDP_RX_COUNTERS(conn, module_id, port_id)
113
+ """Representation of P4_NDP_RX_COUNTERS"""
114
+ self.tx = P4_NDP_TX_COUNTERS(conn, module_id, port_id)
115
+ """Representation of P4_NDP_TX_COUNTERS"""
116
+ self.total = P4_NDP_COUNTERS(conn, module_id, port_id)
117
+ """Representation of P4_NDP_COUNTERS"""
118
+
119
+
120
+ class PCounters:
121
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
122
+ self.clear = P4_CLEAR_COUNTERS(conn, module_id, port_id)
123
+ """Representation of P4_CLEAR_COUNTERS"""
124
+ self.total_tx = P4_PORT_TX_COUNTERS(conn, module_id, port_id)
125
+ """Representation of P4_PORT_TX_COUNTERS"""
126
+ self.total_rx = P4_PORT_RX_COUNTERS(conn, module_id, port_id)
127
+ """Representation of P4_PORT_RX_COUNTERS"""
128
+ self.total = P4_PORT_COUNTERS(conn, module_id, port_id)
129
+ """Representation of P4_PORT_COUNTERS"""
130
+
131
+ self.ipv4 = PCountersIPv4(conn, module_id, port_id)
132
+ """L47 port IPv4 counters."""
133
+ self.ipv6 = PCountersIPv6(conn, module_id, port_id)
134
+ """L47 port IPv6 counters."""
135
+ self.icmp = PCountersICMP(conn, module_id, port_id)
136
+ """L47 port ICMP counters."""
137
+ self.tcp = PCountersTCP(conn, module_id, port_id)
138
+ """L47 port TCP counters."""
139
+ self.udp = PCountersUDP(conn, module_id, port_id)
140
+ """L47 port UDP counters."""
141
+ self.eth = PCountersETH(conn, module_id, port_id)
142
+ """L47 port Ethernet counters."""
143
+ self.arp = PCountersARP(conn, module_id, port_id)
144
+ """L47 port ARP counters."""
145
+ self.ndp = PCountersNDP(conn, module_id, port_id)
146
+ """L47 port NDP counters."""
@@ -0,0 +1,137 @@
1
+ import functools
2
+ from typing import TYPE_CHECKING
3
+ from typing_extensions import Self
4
+
5
+ from xoa_driver.internals.commands import (
6
+ P4_TRAFFIC,
7
+ P4_STATE,
8
+ P4_CAPABILITIES,
9
+ P4_STATE_STATUS,
10
+ P4_VLAN_OFFLOAD,
11
+ P4_ARP_CONFIG,
12
+ P4_NDP_CONFIG,
13
+ P4_CAPTURE,
14
+ P4_CAPTURE_GET_FIRST,
15
+ P4_CAPTURE_GET_NEXT,
16
+ P4_TX_PACKET_SIZE,
17
+ P4_RX_PACKET_SIZE,
18
+ P4_TX_MTU,
19
+ P4_RX_MTU,
20
+ P4_CLEAR,
21
+ P4_SPEEDSELECTION,
22
+ P4_MAX_PACKET_RATE,
23
+ P4_PCI_INFO,
24
+ P4_FW_VER,
25
+ P4_DEV_NAME,
26
+ P4_PORT_TYPE,
27
+ P4_LICENSE_INFO,
28
+ P4_APTITUDES,
29
+ )
30
+ if TYPE_CHECKING:
31
+ from xoa_driver.internals.core import interfaces as itf
32
+
33
+ from xoa_driver.internals.hli_v2.ports import base_port
34
+ from xoa_driver.internals.state_storage import ports_state
35
+ from xoa_driver.internals.utils import attributes as utils
36
+ from xoa_driver.internals.utils.indices import index_manager as im
37
+ from xoa_driver.internals.hli_v2.indices.connection_group.cg import ConnectionGroupIdx
38
+
39
+ from .counters import PCounters
40
+ from .packet_engine import PacketEngine
41
+
42
+
43
+ class PCapture:
44
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
45
+ self.start = P4_CAPTURE(conn, module_id, port_id)
46
+ self.get_first_frame = P4_CAPTURE_GET_FIRST(conn, module_id, port_id)
47
+ self.get_next_frame = P4_CAPTURE_GET_NEXT(conn, module_id, port_id)
48
+
49
+
50
+ class PortL47(base_port.BasePort["ports_state.PortL47LocalState"]):
51
+ """L47 Port"""
52
+
53
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
54
+ super().__init__(conn, module_id, port_id)
55
+
56
+ self._local_states = ports_state.PortL47LocalState()
57
+
58
+ self.traffic = P4_TRAFFIC(self._conn, module_id, port_id)
59
+ """Representation of P4_TRAFFIC"""
60
+ self.clear = P4_CLEAR(self._conn, module_id, port_id)
61
+ """Representation of P4_CLEAR"""
62
+ self.state = P4_STATE(self._conn, module_id, port_id)
63
+ """Representation of P4_STATE"""
64
+ self.type = P4_PORT_TYPE(self._conn, module_id, port_id)
65
+ """Representation of P4_PORT_TYPE"""
66
+ self.aptitudes = P4_APTITUDES(self._conn, module_id, port_id)
67
+ """Representation of P4_APTITUDES"""
68
+ self.last_state_status = P4_STATE_STATUS(self._conn, module_id, port_id)
69
+ """Representation of P4_STATE_STATUS"""
70
+
71
+ self.nic_name = P4_DEV_NAME(self._conn, module_id, port_id)
72
+ """Representation of P4_DEV_NAME"""
73
+ self.nic_firmware_version = P4_FW_VER(self._conn, module_id, port_id)
74
+ """Representation of P4_FW_VER"""
75
+ self.vlan_offload = P4_VLAN_OFFLOAD(self._conn, module_id, port_id)
76
+ """Representation of P4_VLAN_OFFLOAD"""
77
+
78
+ self.max_packet_rate = P4_MAX_PACKET_RATE(self._conn, module_id, port_id)
79
+ """Representation of P4_MAX_PACKET_RATE"""
80
+ self.capabilities = P4_CAPABILITIES(self._conn, module_id, port_id)
81
+ """Representation of P4_CAPABILITIES"""
82
+ self.speed_selection = P4_SPEEDSELECTION(self._conn, module_id, port_id)
83
+ """Representation of P4_SPEEDSELECTION"""
84
+
85
+ # region Not sure if this commands must be at this level
86
+ self.tx_packet_size = P4_TX_PACKET_SIZE(self._conn, module_id, port_id)
87
+ """Representation of P4_TX_PACKET_SIZE"""
88
+ self.rx_packet_size = P4_RX_PACKET_SIZE(self._conn, module_id, port_id)
89
+ """Representation of P4_RX_PACKET_SIZE"""
90
+ self.tx_mtu = P4_TX_MTU(self._conn, module_id, port_id)
91
+ """Representation of P4_TX_MTU"""
92
+ self.rx_mtu = P4_RX_MTU(self._conn, module_id, port_id)
93
+ """Representation of P4_RX_MTU"""
94
+ # endregion
95
+
96
+ self.pci_info = P4_PCI_INFO(self._conn, module_id, port_id)
97
+ """Representation of P4_PCI_INFO"""
98
+ self.license_info = P4_LICENSE_INFO(self._conn, module_id, port_id)
99
+ """Representation of P4_LICENSE_INFO"""
100
+
101
+ self.arp_config = P4_ARP_CONFIG(self._conn, module_id, port_id)
102
+ """Representation of P4_ARP_CONFIG"""
103
+ self.ndp_config = P4_NDP_CONFIG(self._conn, module_id, port_id)
104
+ """Representation of P4_NDP_CONFIG"""
105
+
106
+ self.capture = PCapture(self._conn, module_id, port_id)
107
+ """L47 packet capture"""
108
+ self.counters = PCounters(self._conn, module_id, port_id)
109
+ """L47 counters"""
110
+ self.packet_engine = PacketEngine(self._conn, module_id, port_id)
111
+ """L47 packet engine"""
112
+
113
+ self.connection_groups: "im.IndexManager[ConnectionGroupIdx]" = im.IndexManager(
114
+ self._conn,
115
+ ConnectionGroupIdx,
116
+ module_id,
117
+ port_id
118
+ )
119
+ """L47 connection group index manager."""
120
+
121
+ @property
122
+ def info(self) -> ports_state.PortL47LocalState:
123
+ return self._local_states
124
+
125
+ async def _setup(self) -> Self:
126
+ await self._local_states.initiate(self)
127
+ self._local_states.register_subscriptions(self)
128
+ return self
129
+
130
+ on_capabilities_change = functools.partialmethod(utils.on_event, P4_CAPABILITIES)
131
+ """Register a callback to the event that the L47 port's capabilities change."""
132
+ on_speed_selection_change = functools.partialmethod(utils.on_event, P4_SPEEDSELECTION)
133
+ """Register a callback to the event that the L47 port's speed mode changes."""
134
+ on_state_change = functools.partialmethod(utils.on_event, P4_STATE)
135
+ """Register a callback to the event that the L47 port's state changes."""
136
+ on_license_info_change = functools.partialmethod(utils.on_event, P4_LICENSE_INFO)
137
+ """Register a callback to the event that the L47 port's license information changes."""
@@ -0,0 +1,20 @@
1
+ from xoa_driver.internals.core import interfaces as itf
2
+ from xoa_driver.internals.commands import (
3
+ P4E_ASSIGN,
4
+ P4E_AVAILABLE,
5
+ P4E_ALLOCATE,
6
+ P4E_ALLOCATION_INFO,
7
+ )
8
+
9
+
10
+ class PacketEngine:
11
+ """L47 port's packet engine."""
12
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
13
+ self.assign = P4E_ASSIGN(conn, module_id, port_id)
14
+ """Representation of P4E_ASSIGN"""
15
+ self.available = P4E_AVAILABLE(conn, module_id, port_id)
16
+ """Representation of P4E_AVAILABLE"""
17
+ self.allocate = P4E_ALLOCATE(conn, module_id, port_id)
18
+ """Representation of P4E_ALLOCATE"""
19
+ self.allocation_info = P4E_ALLOCATION_INFO(conn, module_id, port_id)
20
+ """Representation of P4E_ALLOCATION_INFO"""
@@ -0,0 +1,11 @@
1
+ from functools import partial
2
+ from xoa_driver.internals.utils.rev_tool import RegisterModule
3
+
4
+ VALKYRIE_MODULES = {}
5
+ CHIMERA_MODULES = {}
6
+ VULCAN_MODULES = {}
7
+
8
+
9
+ register_valkyrie_module = partial(RegisterModule, modules_store=VALKYRIE_MODULES)
10
+ register_chimera_module = partial(RegisterModule, modules_store=CHIMERA_MODULES)
11
+ register_vulcan_module = partial(RegisterModule, modules_store=VULCAN_MODULES)
File without changes
@@ -0,0 +1,207 @@
1
+ from __future__ import annotations
2
+ from typing import (
3
+ TypeVar,
4
+ Awaitable,
5
+ Generic,
6
+ Callable,
7
+ Generator,
8
+ Any
9
+ )
10
+ from abc import (
11
+ ABC,
12
+ abstractmethod,
13
+ )
14
+ import functools
15
+ from xoa_driver.internals.commands import enums
16
+ from xoa_driver.internals.commands import (
17
+ C_RESERVATION,
18
+ C_DOWN,
19
+ C_PASSWORD,
20
+ C_TIME,
21
+ C_CAPABILITIES,
22
+ C_DEBUGLOGS,
23
+ C_NAME,
24
+ C_MODEL,
25
+ C_COMMENT,
26
+ C_VERSIONNO,
27
+ C_SERIALNO,
28
+ C_RESERVEDBY,
29
+ )
30
+ from xoa_driver.internals.core.funcs import establish_connection
31
+ from xoa_driver.internals.core.transporter.handler import TransportationHandler
32
+ from xoa_driver.internals.core.transporter.logger import CustomLogger
33
+
34
+ from xoa_driver.internals.utils import session
35
+ from xoa_driver.internals.state_storage import testers_state
36
+
37
+
38
+ T = TypeVar('T', bound="BaseTester")
39
+ TesterStateStorage = TypeVar('TesterStateStorage', bound="testers_state.TesterLocalState")
40
+
41
+
42
+ # min version = rel v83.2 eq fw v446.5
43
+ class BaseTester(ABC, Generic[TesterStateStorage]):
44
+ """
45
+ Basic Tester class of APIv2.
46
+
47
+ :param host: tester's address/hostname
48
+ :type host: str
49
+ :param username: username of the user
50
+ :type username: str
51
+ :param password: login password of the tester, defaults to "xena"
52
+ :type password: str, optional
53
+ :param port: the port number for connection establishment, default to 22606
54
+ :type port: int, optional
55
+ :param enable_logging: `True` if debug log output from the tester is needed, and `False` otherwise
56
+ :type enable_logging: bool
57
+ :param custom_logger: `None` allow to specify logger with custom configurations
58
+ :type enable_logging: CustomLogger | None
59
+ :param session_timeout: `130` Session timeout in seconds
60
+ :type session_timeout: int
61
+ """
62
+
63
+ def __init__(self, host: str, username: str, password: str = "xena", port: int = 22606, *, enable_logging: bool = False, custom_logger: CustomLogger | None = None, session_timeout: int = 130) -> None:
64
+ self.__host = host
65
+ self.__port = port
66
+ self._conn = TransportationHandler(
67
+ enable_logging=enable_logging,
68
+ custom_logger=custom_logger
69
+ )
70
+ self.session = session.TesterSession(
71
+ self._conn,
72
+ username,
73
+ password=password,
74
+ timeout_seconds=session_timeout,
75
+ keepalive=True,
76
+ )
77
+ """
78
+ Current management session
79
+ """
80
+
81
+ self.name = C_NAME(self._conn)
82
+ """
83
+ Tester's name.
84
+ Representation of C_NAME
85
+ """
86
+
87
+ self.comment = C_COMMENT(self._conn)
88
+ """Description of the tester.
89
+ Representation of C_COMMENT
90
+ """
91
+
92
+ self.model = C_MODEL(self._conn)
93
+ """Tester's model.
94
+ Representation of C_MODEL
95
+ """
96
+
97
+ self.version_no = C_VERSIONNO(self._conn)
98
+ """Tester's version number.
99
+ Representation of C_VERSIONNO
100
+ """
101
+
102
+ self.serial_no = C_SERIALNO(self._conn)
103
+ """Tester's serial number.
104
+ Representation of C_SERIALNO
105
+ """
106
+
107
+ self.reservation = C_RESERVATION(self._conn)
108
+ """Tester's reservation operation.
109
+ Representation of C_RESERVATION
110
+ """
111
+
112
+ self.reserved_by = C_RESERVEDBY(self._conn)
113
+ """Tester's reservation status.
114
+ Representation of C_RESERVEDBY
115
+ """
116
+
117
+ self.down = C_DOWN(self._conn)
118
+ """Shut down the tester.
119
+ Representation of C_DOWN
120
+ """
121
+
122
+ self.password = C_PASSWORD(self._conn)
123
+ """Tester's password.
124
+ Representation of C_PASSWORD
125
+ """
126
+
127
+ self.time = C_TIME(self._conn)
128
+ """Tester's time in seconds.
129
+ Representation of C_TIME
130
+ """
131
+
132
+ self.capabilities = C_CAPABILITIES(self._conn)
133
+ """Tester's capabilities.
134
+ Representation of C_CAPABILITIES
135
+ """
136
+
137
+ self.debug_log = C_DEBUGLOGS(self._conn)
138
+ """Tester's debug log.
139
+ Representation of C_DEBUGLOGS
140
+ """
141
+
142
+ async def __aenter__(self: Awaitable[T]) -> T:
143
+ return await self
144
+
145
+ async def __aexit__(self, type, value, traceback) -> None:
146
+ await self.session.logoff()
147
+
148
+ def __await__(self: T) -> Generator[Any, None, T]:
149
+ if self.session.is_online:
150
+ async def skip():
151
+ return self
152
+ return skip().__await__()
153
+ return self._setup().__await__()
154
+
155
+ async def _setup(self: T) -> T:
156
+ await establish_connection(self._conn, self.__host, self.__port)
157
+ await self.session.logon()
158
+ return self
159
+
160
+ def __is_reservation(self, reserved_status: enums.ReservedStatus) -> bool:
161
+ return self.info.reservation == reserved_status
162
+
163
+ is_released = functools.partialmethod(__is_reservation, enums.ReservedStatus.RELEASED)
164
+ """Validate if the tester is released.
165
+ """
166
+
167
+ is_reserved_by_me = functools.partialmethod(__is_reservation, enums.ReservedStatus.RESERVED_BY_YOU)
168
+ """Validate if the tester is reserved by my connection.
169
+ """
170
+
171
+ @property
172
+ @abstractmethod
173
+ def info(self) -> TesterStateStorage:
174
+ """
175
+ Tester's local information.
176
+ """
177
+ raise NotImplementedError()
178
+
179
+ # region Events
180
+
181
+ # We are not supporting Subscription on Connection made, coz Connection is happens at Awaiting of instance
182
+ # but subscription only registered after instance is already created, means already connected,
183
+ # means On_connected event will never b called, it's can be twiked, but then Creating process of tester instance
184
+ # will be less intuitive, and in one case subscription will work while in another not.
185
+
186
+ def on_disconnected(self, callback: "Callable") -> None:
187
+ """
188
+ Register a callback which will be called at the time when connection will be closed.
189
+ """
190
+
191
+ self._conn.on_disconnected(callback)
192
+
193
+ def on_reservation_change(self, callback: "Callable") -> None:
194
+ """
195
+ Register an callback function to C_RESERVATION event.
196
+ """
197
+
198
+ self._conn.subscribe(C_RESERVATION, callback)
199
+
200
+ def on_reserved_by_change(self, callback: "Callable") -> None:
201
+ """
202
+ Register an callback function to C_RESERVEDBY event.
203
+ """
204
+
205
+ self._conn.subscribe(C_RESERVEDBY, callback)
206
+
207
+ # endregion
@@ -0,0 +1,16 @@
1
+ from xoa_driver.internals.core import interfaces as itf
2
+ from xoa_driver.internals.commands import (
3
+ C_HEALTH,
4
+ )
5
+
6
+
7
+ class Health:
8
+ """File uploading functions of the Valkyrie tester."""
9
+
10
+ def __init__(self, conn: "itf.IConnection") -> None:
11
+ self.all = C_HEALTH(conn, [])
12
+ """All chassis health information"""
13
+ self.info = C_HEALTH(conn, [0])
14
+ """Chassis identification information"""
15
+ self.uptime = C_HEALTH(conn, [1])
16
+ """Chassis system uptime"""
@@ -0,0 +1,34 @@
1
+ from xoa_driver.internals.core import interfaces as itf
2
+ from xoa_driver.internals.commands import (
3
+ C_RESTPORT,
4
+ C_RESTENABLE,
5
+ C_RESTSTATUS,
6
+ C_RESTCONTROL,
7
+ )
8
+
9
+
10
+ class RestApiServer:
11
+ """
12
+ Rest API server for the Valkyrie tester
13
+ """
14
+
15
+ def __init__(self, conn: "itf.IConnection") -> None:
16
+ self.port = C_RESTPORT(conn)
17
+ """TCP port for the REST server.
18
+ Representation of C_RESTPORT
19
+ """
20
+
21
+ self.enable = C_RESTENABLE(conn)
22
+ """Enable the REST server.
23
+ Representation of C_RESTENABLE
24
+ """
25
+
26
+ self.status = C_RESTSTATUS(conn)
27
+ """Status of the REST server.
28
+ Representation of C_RESTSTATUS
29
+ """
30
+
31
+ self.control = C_RESTCONTROL(conn)
32
+ """Control the REST server.
33
+ Representation of C_RESTCONTROL
34
+ """
@@ -0,0 +1,50 @@
1
+ from xoa_driver.internals.core import interfaces as itf
2
+ from xoa_driver.internals.commands import (
3
+ C_TKLICFILE,
4
+ C_TKLICSTATE,
5
+ C_TKSTATUS,
6
+ C_TKSTATUSEXT,
7
+ C_TKSVCSTATE,
8
+ C_TKGPSSTATE,
9
+ C_TKCONFIG,
10
+ )
11
+
12
+
13
+ class TimeKeeper:
14
+ """TimeKeeper of Valkyrie."""
15
+
16
+ def __init__(self, conn: "itf.IConnection") -> None:
17
+ self.license_file = C_TKLICFILE(conn)
18
+ """TimeKeeper license file content.
19
+ Representation of C_TKLICFILE
20
+ """
21
+
22
+ self.license_state = C_TKLICSTATE(conn)
23
+ """State of TimeKeeper license file content.
24
+ Representation of C_TKLICSTATE
25
+ """
26
+
27
+ self.status = C_TKSTATUS(conn)
28
+ """Version and status of TimeKeeper.
29
+ Representation of C_TKSTATUS
30
+ """
31
+
32
+ self.status_extended = C_TKSTATUSEXT(conn)
33
+ """Version and status of TimeKeeper (extended).
34
+ Representation of C_TKSTATUSEXT
35
+ """
36
+
37
+ self.svc_state = C_TKSVCSTATE(conn)
38
+ """TimeKeeper service state.
39
+ Representation of C_TKSVCSTATE
40
+ """
41
+
42
+ self.gps_state = C_TKGPSSTATE(conn)
43
+ """TimeKeeper GPS state.
44
+ Representation of C_TKGPSSTATE
45
+ """
46
+
47
+ self.config_file = C_TKCONFIG(conn)
48
+ """TimeKeeper configuration file content.
49
+ Representation of C_TKCONFIG
50
+ """
@@ -0,0 +1,26 @@
1
+ from xoa_driver.internals.core import interfaces as itf
2
+ from xoa_driver.internals.commands import (
3
+ C_FILESTART,
4
+ C_FILEDATA,
5
+ C_FILEFINISH
6
+ )
7
+
8
+
9
+ class UploadFile:
10
+ """File uploading functions of the Valkyrie tester."""
11
+
12
+ def __init__(self, conn: "itf.IConnection") -> None:
13
+ self.start = C_FILESTART(conn)
14
+ """Start uploading file.
15
+ Representation of C_FILESTART
16
+ """
17
+
18
+ self.data = C_FILEDATA(conn)
19
+ """Uploading a file fragment.
20
+ Representation of C_FILEDATA
21
+ """
22
+
23
+ self.finish = C_FILEFINISH(conn)
24
+ """Finish uploading file.
25
+ Representation of C_FILEFINISH
26
+ """