hcs-cli 0.1.340__tar.gz → 0.1.342__tar.gz

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 (510) hide show
  1. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/PKG-INFO +2 -2
  2. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/__init__.py +1 -1
  3. hcs_cli-0.1.342/hcs_cli/cmds/edge/log.py +145 -0
  4. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/hoc/stats.py +6 -6
  5. hcs_cli-0.1.342/hcs_cli/cmds/log.py +214 -0
  6. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/admin/edge.py +3 -0
  7. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/edge.py +16 -0
  8. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/support/log/message_parser.py +20 -4
  9. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/support/log/query_builder.py +11 -3
  10. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/pyproject.toml +1 -1
  11. hcs_cli-0.1.340/hcs_cli/cmds/log.py +0 -145
  12. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/.gitignore +0 -0
  13. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/README.md +0 -0
  14. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/__main__.py +0 -0
  15. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/__init__.py +0 -0
  16. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/ad/__init__.py +0 -0
  17. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/ad/create.py +0 -0
  18. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/ad/delete.py +0 -0
  19. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/ad/get.py +0 -0
  20. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/ad/list.py +0 -0
  21. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/admin/__init__.py +0 -0
  22. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/admin/azure_infra/__init__.py +0 -0
  23. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/admin/azure_infra/main.py +0 -0
  24. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/advisor/__init__.py +0 -0
  25. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/advisor/advisor_utils.py +0 -0
  26. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/advisor/config/__init__.py +0 -0
  27. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/advisor/config/advisor_config.py +0 -0
  28. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/advisor/html_utils.py +0 -0
  29. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/advisor/org.py +0 -0
  30. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/advisor/pdf_utils.py +0 -0
  31. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/advisor/pool.py +0 -0
  32. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/advisor/recommendation_engine.py +0 -0
  33. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/api.py +0 -0
  34. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/app/__init__.py +0 -0
  35. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/app/create.py +0 -0
  36. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/app/delete.py +0 -0
  37. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/app/get.py +0 -0
  38. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/app/list.py +0 -0
  39. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/app/update.py +0 -0
  40. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/app/use.py +0 -0
  41. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/auth/__init__.py +0 -0
  42. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/auth/admin/__init__.py +0 -0
  43. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/auth/admin/get_org_idp_map.py +0 -0
  44. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/auth/admin/network/__init__.py +0 -0
  45. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/auth/admin/network/add.py +0 -0
  46. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/auth/user/__init__.py +0 -0
  47. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/auth/user/list.py +0 -0
  48. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/clouddriver/__init__.py +0 -0
  49. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/clouddriver/provider.py +0 -0
  50. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/clouddriver/service.py +0 -0
  51. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/clouddriver/task.py +0 -0
  52. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/credential/__init__.py +0 -0
  53. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/credential/get.py +0 -0
  54. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/cs/__init__.py +0 -0
  55. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/cs/base.py +0 -0
  56. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/daas/__init__.py +0 -0
  57. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/daas/infra/__init__.py +0 -0
  58. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/daas/infra/basic.py +0 -0
  59. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/daas/infra/plan.py +0 -0
  60. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/daas/order/__init__.py +0 -0
  61. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/daas/order/create.py +0 -0
  62. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/daas/order/delete.py +0 -0
  63. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/daas/order/list.py +0 -0
  64. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/daas/order/update.py +0 -0
  65. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/daas/tenant/__init__.py +0 -0
  66. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/daas/tenant/consumption.py +0 -0
  67. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/daas/tenant/create.py +0 -0
  68. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/daas/tenant/plan.py +0 -0
  69. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/debug/__init__.py +0 -0
  70. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/debug/prepare.py +0 -0
  71. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/debug/reset.py +0 -0
  72. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/debug/start.py +0 -0
  73. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/__init__.py +0 -0
  74. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/emqx.py +0 -0
  75. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/__init__.py +0 -0
  76. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/auth.py +0 -0
  77. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/clear.py +0 -0
  78. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/helper/__init__.py +0 -0
  79. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/helper/config.py +0 -0
  80. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/helper/credential_helper.py +0 -0
  81. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/helper/init_steps.py +0 -0
  82. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/helper/jenkins_util.py +0 -0
  83. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/helper/k8s_util.py +0 -0
  84. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/helper/license_info.py +0 -0
  85. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/helper/mqtt_certs.py +0 -0
  86. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/helper/required_fields.py +0 -0
  87. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/helper/step_util.py +0 -0
  88. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/helper/subscription_util.py +0 -0
  89. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/helper/util.py +0 -0
  90. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/init.py +0 -0
  91. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/profiler.py +0 -0
  92. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/provided_files/__init__.py +0 -0
  93. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/provided_files/akka.plan.yml +0 -0
  94. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/provided_files/azsim.plan.yml +0 -0
  95. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/provided_files/azure.plan.yml +0 -0
  96. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/provided_files/mqtt-secret.yaml +0 -0
  97. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/provided_files/mqtt-server-external.yaml +0 -0
  98. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/provided_files/patch-mqtt-hostname.yml +0 -0
  99. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/provided_files/patch-vernemq-ssl-depth.json +0 -0
  100. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/fs/tailor.py +0 -0
  101. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/mqtt.py +0 -0
  102. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/onboard.py +0 -0
  103. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/test.py +0 -0
  104. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/util/__init__.py +0 -0
  105. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/util/github_helper.py +0 -0
  106. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/util/log.py +0 -0
  107. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/dev/util/mqtt_helper.py +0 -0
  108. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/diagnostics/__init__.py +0 -0
  109. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/diagnostics/diagnose.py +0 -0
  110. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/edge/__init__.py +0 -0
  111. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/edge/connection_string.py +0 -0
  112. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/edge/create.py +0 -0
  113. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/edge/delete.py +0 -0
  114. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/edge/get.py +0 -0
  115. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/edge/list.py +0 -0
  116. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/edge/use.py +0 -0
  117. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/edge/wait.py +0 -0
  118. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/entitlement/__init__.py +0 -0
  119. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/entitlement/delete.py +0 -0
  120. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/entitlement/get.py +0 -0
  121. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/entitlement/list.py +0 -0
  122. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/hoc/__init__.py +0 -0
  123. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/hoc/search.py +0 -0
  124. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/hoc/util/__init__.py +0 -0
  125. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/hoc/util/inv_cache.py +0 -0
  126. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/hst/__init__.py +0 -0
  127. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/hst/clean.py +0 -0
  128. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/hst/cloud/__init__.py +0 -0
  129. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/hst/cloud/health.py +0 -0
  130. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/hst/cloud/perf.py +0 -0
  131. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/hst/cloud/scale.py +0 -0
  132. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/hst/installer.py +0 -0
  133. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/hst/key.py +0 -0
  134. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/hst/outpost.py +0 -0
  135. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/hst/probe.py +0 -0
  136. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/hst/report.py +0 -0
  137. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/hst/test.py +0 -0
  138. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/ims/__init__.py +0 -0
  139. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/ims/delete.py +0 -0
  140. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/ims/get.py +0 -0
  141. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/ims/gold_pattern/__init__.py +0 -0
  142. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/ims/gold_pattern/create.py +0 -0
  143. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/ims/gold_pattern/delete.py +0 -0
  144. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/ims/gold_pattern/get.py +0 -0
  145. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/ims/gold_pattern/list.py +0 -0
  146. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/ims/list.py +0 -0
  147. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/ims/list_copies.py +0 -0
  148. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/ims/version/__init__.py +0 -0
  149. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/ims/version/delete.py +0 -0
  150. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/ims/version/get.py +0 -0
  151. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/ims/version/list.py +0 -0
  152. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/inspect.py +0 -0
  153. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/inventory/__init__.py +0 -0
  154. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/inventory/assign.py +0 -0
  155. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/inventory/count.py +0 -0
  156. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/inventory/deassign.py +0 -0
  157. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/inventory/delete.py +0 -0
  158. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/inventory/get.py +0 -0
  159. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/inventory/list.py +0 -0
  160. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/inventory/logoff.py +0 -0
  161. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/inventory/session.py +0 -0
  162. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/inventory/update.py +0 -0
  163. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/iss/__init__.py +0 -0
  164. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/iss/mqtt.py +0 -0
  165. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/__init__.py +0 -0
  166. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/health.py +0 -0
  167. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/provider/__init__.py +0 -0
  168. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/provider/create.py +0 -0
  169. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/provider/delete.py +0 -0
  170. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/provider/get.py +0 -0
  171. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/provider/list.py +0 -0
  172. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/register.py +0 -0
  173. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/template/__init__.py +0 -0
  174. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/template/cancel.py +0 -0
  175. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/template/create.py +0 -0
  176. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/template/delete.py +0 -0
  177. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/template/expand.py +0 -0
  178. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/template/get.py +0 -0
  179. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/template/health.py +0 -0
  180. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/template/list.py +0 -0
  181. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/template/provision.py +0 -0
  182. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/template/retry.py +0 -0
  183. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/template/update.py +0 -0
  184. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/template/use.py +0 -0
  185. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/template/wait.py +0 -0
  186. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/test.py +0 -0
  187. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/vm/__init__.py +0 -0
  188. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/vm/delete.py +0 -0
  189. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/vm/get.py +0 -0
  190. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/vm/pair.py +0 -0
  191. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/vm/pairing_info.py +0 -0
  192. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/vm/power.py +0 -0
  193. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/vm/put.py +0 -0
  194. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/lcm/vm/wait.py +0 -0
  195. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/login.py +0 -0
  196. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/logout.py +0 -0
  197. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/org/__init__.py +0 -0
  198. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/org/datacenter/__init__.py +0 -0
  199. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/org/datacenter/get.py +0 -0
  200. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/org/datacenter/list.py +0 -0
  201. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/org/details/__init__.py +0 -0
  202. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/org/ff.py +0 -0
  203. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/org/get.py +0 -0
  204. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/org/list.py +0 -0
  205. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/org/location.py +0 -0
  206. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/org/use.py +0 -0
  207. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/pki/__init__.py +0 -0
  208. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/pki/ca.py +0 -0
  209. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/pki/cert/__init__.py +0 -0
  210. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/pki/cert/delete.py +0 -0
  211. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/pki/cert/get.py +0 -0
  212. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/pki/sign.py +0 -0
  213. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/pki/test.py +0 -0
  214. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/plan/__init__.py +0 -0
  215. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/plan/apply.py +0 -0
  216. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/plan/clear.py +0 -0
  217. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/plan/destroy.py +0 -0
  218. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/plan/graph.py +0 -0
  219. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/plan/input.py +0 -0
  220. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/plan/output.py +0 -0
  221. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/plan/resolve.py +0 -0
  222. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/plan/use.py +0 -0
  223. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/pool/__init__.py +0 -0
  224. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/pool/delete.py +0 -0
  225. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/pool/get.py +0 -0
  226. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/pool/list.py +0 -0
  227. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/pool/update.py +0 -0
  228. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/pool/use.py +0 -0
  229. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/profile/__init__.py +0 -0
  230. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/profile/init.py +0 -0
  231. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/provider/__init__.py +0 -0
  232. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/provider/create.py +0 -0
  233. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/provider/delete.py +0 -0
  234. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/provider/get.py +0 -0
  235. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/provider/golden_images.py +0 -0
  236. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/provider/list.py +0 -0
  237. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/provider/use.py +0 -0
  238. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/provider/vsphere_dcs.py +0 -0
  239. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/query.py +0 -0
  240. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/scm/__init__.py +0 -0
  241. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/scm/health.py +0 -0
  242. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/scm/operator.py +0 -0
  243. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/scm/plan.py +0 -0
  244. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/scm/recommend.py +0 -0
  245. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/scm/template.py +0 -0
  246. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/site/__init__.py +0 -0
  247. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/site/create.py +0 -0
  248. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/site/delete.py +0 -0
  249. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/site/get.py +0 -0
  250. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/site/list.py +0 -0
  251. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/site/set-edge.py +0 -0
  252. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/site/use.py +0 -0
  253. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/synt/__init__.py +0 -0
  254. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/synt/outpost/__init__.py +0 -0
  255. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/synt/outpost/create.py +0 -0
  256. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/synt/outpost/delete.py +0 -0
  257. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/synt/outpost/get.py +0 -0
  258. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/synt/outpost/list.py +0 -0
  259. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/synt/outpost/update.py +0 -0
  260. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/synt/probe/__init__.py +0 -0
  261. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/synt/probe/create.py +0 -0
  262. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/synt/probe/delete.py +0 -0
  263. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/synt/probe/get.py +0 -0
  264. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/synt/probe/list.py +0 -0
  265. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/synt/probe/run.py +0 -0
  266. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/synt/probe/update.py +0 -0
  267. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/synt/report/__init__.py +0 -0
  268. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/synt/report/delete.py +0 -0
  269. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/synt/report/get.py +0 -0
  270. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/synt/report/list.py +0 -0
  271. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/task.py +0 -0
  272. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/template/__init__.py +0 -0
  273. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/template/create.py +0 -0
  274. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/template/delete.py +0 -0
  275. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/template/expand.py +0 -0
  276. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/template/fix.py +0 -0
  277. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/template/get.py +0 -0
  278. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/template/list.py +0 -0
  279. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/template/list_usage.py +0 -0
  280. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/template/update.py +0 -0
  281. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/template/usage.py +0 -0
  282. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/template/use.py +0 -0
  283. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/template/wait.py +0 -0
  284. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/test.py +0 -0
  285. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/uag/__init__.py +0 -0
  286. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/uag/delete.py +0 -0
  287. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/uag/get.py +0 -0
  288. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/uag/list.py +0 -0
  289. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/upgrade.py +0 -0
  290. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vm/__init__.py +0 -0
  291. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vm/actions.py +0 -0
  292. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vm/delete.py +0 -0
  293. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vm/get.py +0 -0
  294. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vm/list.py +0 -0
  295. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vm/log.py +0 -0
  296. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vm/pairing_info.py +0 -0
  297. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vm/put.py +0 -0
  298. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vm/use.py +0 -0
  299. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vm/wait.py +0 -0
  300. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vmhub/__init__.py +0 -0
  301. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vmhub/info.py +0 -0
  302. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vmhub/otp/__init__.py +0 -0
  303. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vmhub/otp/redeem.py +0 -0
  304. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vmhub/otp/request.py +0 -0
  305. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vmm/__init__.py +0 -0
  306. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vmm/restart_vms.py +0 -0
  307. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vmm/rootca_edge_migration_stats.py +0 -0
  308. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vmm/rootca_edge_rotate_certs.py +0 -0
  309. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vmm/rootca_migrate.py +0 -0
  310. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vmm/rootca_migrate_edge.py +0 -0
  311. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/vmm/rootca_template_migration_stats.py +0 -0
  312. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/workflows/__init__.py +0 -0
  313. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/cmds/workflows/mqtt-endpoints.py +0 -0
  314. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/config/__init__.py +0 -0
  315. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/config/hcs-deployments.yaml +0 -0
  316. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/main.py +0 -0
  317. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/__init__.py +0 -0
  318. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/akka.blueprint.yml +0 -0
  319. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/app/__init__.py +0 -0
  320. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/app/manual.json +0 -0
  321. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/edge/__init__.py +0 -0
  322. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/edge/akka.json +0 -0
  323. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/edge/vsphere.json +0 -0
  324. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/hoc/lcm-capcalc.json.template +0 -0
  325. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/hoc/no-spare.json.template +0 -0
  326. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/inventory/__init__.py +0 -0
  327. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/inventory/assign.json +0 -0
  328. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/inventory/deassign.json +0 -0
  329. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/iss/__init__.py +0 -0
  330. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/__init__.py +0 -0
  331. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/akka.json +0 -0
  332. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/azure-dummy.json +0 -0
  333. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/azure-real.json +0 -0
  334. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/edge-proxy.json +0 -0
  335. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/zero-dedicated.json +0 -0
  336. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/zero-delay-1m-per-vm.json +0 -0
  337. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/zero-fail-delete-template.json +0 -0
  338. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/zero-fail-destroy-onthread.json +0 -0
  339. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/zero-fail-destroy.json +0 -0
  340. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/zero-fail-prepare-onthread.json +0 -0
  341. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/zero-fail-prepare.json +0 -0
  342. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/zero-fail-vm-onthread.json +0 -0
  343. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/zero-fail-vm.json +0 -0
  344. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/zero-floating.json +0 -0
  345. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/zero-legacy.json +0 -0
  346. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/zero-manual.json +0 -0
  347. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/zero-multisession.json +0 -0
  348. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/zero-nanw.json +0 -0
  349. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/zero-new-5k-delay.json +0 -0
  350. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/zero-new-5k.json +0 -0
  351. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/zero-new-snapshot.json +0 -0
  352. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/zero-reuse-vm-id.json +0 -0
  353. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/zero-with-max-id-offset.json +0 -0
  354. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/lcm/zero.json +0 -0
  355. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/provider/__init__.py +0 -0
  356. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/provider/ad-stes-vsphere.json +0 -0
  357. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/provider/akka.json +0 -0
  358. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/provider/azure.json +0 -0
  359. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/provider/edgeproxy.json +0 -0
  360. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/provider/vsphere.json +0 -0
  361. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/scm/starter.json +0 -0
  362. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/__init__.py +0 -0
  363. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/core/__init__.py +0 -0
  364. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/core/p01-dummy-success.json +0 -0
  365. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/core/p02-dummy-fail.json +0 -0
  366. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/core/p03-dummy-exception.json +0 -0
  367. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/core/p04-dummy-success-repeat.json +0 -0
  368. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/core/p05-dummy-fail-repeat.json +0 -0
  369. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/core/p06-dummy-exception-repeat.json +0 -0
  370. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/core/p07-dummy-delay.json +0 -0
  371. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/core/p08-dummy-property.json +0 -0
  372. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/ext/__init__.py +0 -0
  373. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/ext/p20-connect-success.json +0 -0
  374. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/ext/p21-connect-fail.json +0 -0
  375. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/ext/p30-ssl-success.json +0 -0
  376. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/ext/p31-ssl-fail.json +0 -0
  377. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/ext/p40-http-success.json +0 -0
  378. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/ext/p41-http-fail.json +0 -0
  379. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/ext/p42-http-status-code.json +0 -0
  380. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/ext1/__init__.py +0 -0
  381. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/ext1/p10-ping-success.json +0 -0
  382. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/ext1/p11-ping-fail.json +0 -0
  383. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/synt/ext1/p12-ping-success-repeat.json +0 -0
  384. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/payload/template/__init__.py +0 -0
  385. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/__init__.py +0 -0
  386. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/__init__.py +0 -0
  387. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/_prepare.py +0 -0
  388. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/ad.py +0 -0
  389. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/av_entitlement.py +0 -0
  390. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/av_fs.py +0 -0
  391. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/cert.py +0 -0
  392. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/edge.py +0 -0
  393. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/entitlement.py +0 -0
  394. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/gold_pattern.py +0 -0
  395. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/identity_provider.py +0 -0
  396. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/image.py +0 -0
  397. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/import_av_app.py +0 -0
  398. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/manual_app.py +0 -0
  399. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/pool_group.py +0 -0
  400. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/pool_template.py +0 -0
  401. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/provider.py +0 -0
  402. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/runtime/__init__.py +0 -0
  403. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/runtime/password.py +0 -0
  404. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/runtime/wait_for.py +0 -0
  405. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/site.py +0 -0
  406. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/provider/hcs/uag.py +0 -0
  407. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/__init__.py +0 -0
  408. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/admin/__init__.py +0 -0
  409. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/admin/ad.py +0 -0
  410. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/admin/azure_infra.py +0 -0
  411. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/admin/helper.py +0 -0
  412. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/admin/provider.py +0 -0
  413. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/admin/template.py +0 -0
  414. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/admin/uag.py +0 -0
  415. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/admin/vm.py +0 -0
  416. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/api.py +0 -0
  417. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/app_management/__init__.py +0 -0
  418. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/app_management/manual_app.py +0 -0
  419. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/auth/__init__.py +0 -0
  420. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/auth/admin.py +0 -0
  421. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/av/__init__.py +0 -0
  422. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/av/app.py +0 -0
  423. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/av/avimport.py +0 -0
  424. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/av/entitlements.py +0 -0
  425. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/av/fileshare.py +0 -0
  426. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/clouddriver/__init__.py +0 -0
  427. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/clouddriver/provider.py +0 -0
  428. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/clouddriver/service.py +0 -0
  429. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/credential/__init__.py +0 -0
  430. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/credential/credential.py +0 -0
  431. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/credential/nls.py +0 -0
  432. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/cs/__init__.py +0 -0
  433. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/cs/base.py +0 -0
  434. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/csp.py +0 -0
  435. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/diagnostics/__init__.py +0 -0
  436. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/diagnostics/edge.py +0 -0
  437. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/edgehub/__init__.py +0 -0
  438. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/edgehub/edgecontroller.py +0 -0
  439. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/edgehub/edgetwin.py +0 -0
  440. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/graphql.py +0 -0
  441. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/hoc/__init__.py +0 -0
  442. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/hoc/diagnostic.py +0 -0
  443. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/hoc/es.py +0 -0
  444. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/ims/__init__.py +0 -0
  445. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/ims/gold_pattern.py +0 -0
  446. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/ims/helper.py +0 -0
  447. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/ims/image_copies.py +0 -0
  448. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/ims/images.py +0 -0
  449. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/ims/version.py +0 -0
  450. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/inventory/__init__.py +0 -0
  451. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/inventory/session.py +0 -0
  452. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/inventory/vm.py +0 -0
  453. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/iss/__init__.py +0 -0
  454. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/iss/mqtt.py +0 -0
  455. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/lcm/__init__.py +0 -0
  456. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/lcm/health.py +0 -0
  457. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/lcm/provider.py +0 -0
  458. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/lcm/template.py +0 -0
  459. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/lcm/vm.py +0 -0
  460. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/org_service/__init__.py +0 -0
  461. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/org_service/datacenter.py +0 -0
  462. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/org_service/details.py +0 -0
  463. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/org_service/orglocationmapping.py +0 -0
  464. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/pki/__init__.py +0 -0
  465. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/pki/certificate.py +0 -0
  466. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/pool.py +0 -0
  467. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/portal/__init__.py +0 -0
  468. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/portal/entitlement.py +0 -0
  469. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/portal/pool.py +0 -0
  470. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/portal/site.py +0 -0
  471. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/scm/__init__.py +0 -0
  472. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/scm/base.py +0 -0
  473. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/scm/operator.py +0 -0
  474. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/scm/plan.py +0 -0
  475. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/site.py +0 -0
  476. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/synt/__init__.py +0 -0
  477. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/synt/outpost.py +0 -0
  478. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/synt/probe.py +0 -0
  479. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/synt/report.py +0 -0
  480. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/task.py +0 -0
  481. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/template.py +0 -0
  482. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/tsctl/__init__.py +0 -0
  483. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/tsctl/base.py +0 -0
  484. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/tsctl/task.py +0 -0
  485. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/uag.py +0 -0
  486. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/vm.py +0 -0
  487. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/vmhub/__init__.py +0 -0
  488. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/vmhub/credentials.py +0 -0
  489. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/vmhub/mqtt.py +0 -0
  490. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/vmm/__init__.py +0 -0
  491. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/vmm/dct.py +0 -0
  492. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/service/vmm/hoc_event.py +0 -0
  493. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/support/__init__.py +0 -0
  494. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/support/constant.py +0 -0
  495. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/support/debug_util.py +0 -0
  496. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/support/exec_util.py +0 -0
  497. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/support/inspect_util.py +0 -0
  498. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/support/param_util.py +0 -0
  499. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/support/patch_util.py +0 -0
  500. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/support/plan_util.py +0 -0
  501. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/support/predefined_payload.py +0 -0
  502. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/support/profile.py +0 -0
  503. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/support/scm/html_util.py +0 -0
  504. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/support/scm/plan-editor.html.template +0 -0
  505. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/support/scm/plan_editor.py +0 -0
  506. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/support/template_util.py +0 -0
  507. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/support/test_utils.py +0 -0
  508. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/support/test_utils2.py +0 -0
  509. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/support/use_util.py +0 -0
  510. {hcs_cli-0.1.340 → hcs_cli-0.1.342}/hcs_cli/support/vm_table.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hcs-cli
3
- Version: 0.1.340
3
+ Version: 0.1.342
4
4
  Summary: Horizon Cloud Service CLI.
5
5
  Project-URL: Homepage, https://github.com/euc-eng/hcs-cli
6
6
  Project-URL: Bug Tracker, https://github.com/euc-eng/hcs-cli/issues
@@ -14,7 +14,7 @@ Classifier: License :: OSI Approved :: MIT License
14
14
  Classifier: Operating System :: OS Independent
15
15
  Classifier: Programming Language :: Python :: 3
16
16
  Requires-Python: >=3.9
17
- Requires-Dist: hcs-core>=0.1.340
17
+ Requires-Dist: hcs-core>=0.1.342
18
18
  Requires-Dist: inquirerpy>=0.3.4
19
19
  Requires-Dist: matplotlib>=3.8.0
20
20
  Requires-Dist: paho-mqtt>=2.1.0
@@ -1,3 +1,3 @@
1
- __version__ = "0.1.340"
1
+ __version__ = "0.1.342"
2
2
 
3
3
  from . import service as service # noqa: F401
@@ -0,0 +1,145 @@
1
+ """
2
+ Copyright © 2025-2026 Omnissa, LLC.
3
+ """
4
+
5
+ import json
6
+ import os
7
+ import time
8
+ from datetime import datetime, timezone
9
+
10
+ import click
11
+ import httpx
12
+ import hcs_core.sglib.cli_options as cli
13
+ from hcs_core.ctxp import recent
14
+ from hcs_core.util import duration
15
+
16
+ from hcs_cli.service import edge
17
+
18
+ # Confirmed non-terminal value seen in practice; treat anything else that
19
+ # isn't AVAILABLE/FAILED as non-terminal too, since the API may add more.
20
+ _TERMINAL = frozenset({"AVAILABLE", "FAILED"})
21
+
22
+
23
+ @click.command()
24
+ @click.option(
25
+ "--recreate",
26
+ is_flag=True,
27
+ default=False,
28
+ help="Force a new log collection even if a recent one already exists.",
29
+ )
30
+ @click.option(
31
+ "--max-age",
32
+ default="1D",
33
+ show_default=True,
34
+ help="Reuse the latest AVAILABLE log if it's newer than this (e.g. 1D, 12H). Ignored with --recreate.",
35
+ )
36
+ @click.option(
37
+ "--wait/--no-wait",
38
+ default=True,
39
+ help="Wait for log collection to finish. Collection can take 10+ minutes; --no-wait triggers/checks and returns immediately.",
40
+ )
41
+ @click.option(
42
+ "--wait-timeout",
43
+ default="20M",
44
+ show_default=True,
45
+ help="Max time to wait for log collection to complete.",
46
+ )
47
+ @click.option(
48
+ "--verbose", is_flag=True, default=False, help="Whether to print progress messages. By default, it will print progress messages."
49
+ )
50
+ @click.option(
51
+ "--save-as",
52
+ "save_path",
53
+ type=click.Path(),
54
+ default=None,
55
+ help="Path to save the edge log archive. Defaults to <org_id>_<edge_id>_edge_logs.tgz in the current directory.",
56
+ )
57
+ @click.argument("id", type=str, required=False)
58
+ @cli.org_id
59
+ def log(recreate: bool, max_age: str, wait: bool, wait_timeout: str, verbose: bool, save_path, id: str, org: str):
60
+ """Download edge log"""
61
+ org_id = cli.get_org_id(org)
62
+ id = recent.require("edge", id)
63
+
64
+ latest = edge.latest_log(id, org_id)
65
+
66
+ need_new = True
67
+ if latest and not recreate:
68
+ status = latest.get("logStatus")
69
+ if status == "AVAILABLE" and _is_fresh(latest.get("createdAt"), max_age):
70
+ need_new = False
71
+ elif status not in _TERMINAL:
72
+ need_new = False # already in flight, just wait on it below
73
+
74
+ if need_new:
75
+ if verbose:
76
+ click.secho(f"Requesting new edge log for {id}...", fg="bright_black")
77
+ info = edge.request_log(id, org_id)
78
+ if verbose:
79
+ click.secho(f"Edge log requested: {json.dumps(info)}", fg="bright_black")
80
+ latest = edge.latest_log(id, org_id)
81
+
82
+ status = latest.get("logStatus") if latest else None
83
+
84
+ if status != "AVAILABLE":
85
+ if not wait:
86
+ return latest
87
+ latest, error = _wait_for_log(id, org_id, wait_timeout, verbose)
88
+ if error:
89
+ return error, 1
90
+
91
+ uri = latest.get("readAccessUri")
92
+ if not uri:
93
+ return "No readAccessUri found on the log entry.", 1
94
+
95
+ if save_path:
96
+ file_path = os.path.abspath(os.path.expanduser(save_path))
97
+ else:
98
+ file_path = os.path.abspath(f"{org_id}_{id}_edge_logs.tgz")
99
+
100
+ if verbose:
101
+ click.secho(f"Downloading edge log from {uri} to {file_path}", fg="bright_black")
102
+ try:
103
+ with httpx.stream("GET", uri, timeout=60) as r:
104
+ r.raise_for_status()
105
+ with open(file_path, "wb") as f:
106
+ for chunk in r.iter_bytes(chunk_size=8192):
107
+ f.write(chunk)
108
+ except Exception as e:
109
+ return f"Failed to download archive: {e}", 1
110
+
111
+ latest["file_path"] = file_path
112
+
113
+ if verbose:
114
+ click.secho("----- Edge log downloaded -----", fg="bright_black")
115
+ return latest
116
+
117
+
118
+ def _is_fresh(created_at: str, max_age: str) -> bool:
119
+ if not created_at:
120
+ return False
121
+ try:
122
+ # createdAt example: "Mon Jul 20 23:51:44 UTC 2026"
123
+ dt = datetime.strptime(created_at.replace(" UTC ", " "), "%a %b %d %H:%M:%S %Y").replace(tzinfo=timezone.utc)
124
+ except ValueError:
125
+ return False
126
+ age_seconds = (datetime.now(timezone.utc) - dt).total_seconds()
127
+ return age_seconds <= duration.to_seconds(max_age)
128
+
129
+
130
+ def _wait_for_log(id: str, org_id: str, timeout: str, verbose: bool):
131
+ deadline = time.time() + duration.to_seconds(timeout)
132
+ while time.time() < deadline:
133
+ info = edge.latest_log(id, org_id)
134
+ if not info:
135
+ return None, "No edge log entry found."
136
+ status = info.get("logStatus")
137
+ if status == "AVAILABLE":
138
+ return info, None
139
+ if status == "FAILED":
140
+ msg = info.get("errorDetail") or "Unknown error"
141
+ return info, f"Edge log collection failed: {msg}"
142
+ if verbose:
143
+ click.secho(f"Edge log status: {status}, waiting...", fg="bright_black")
144
+ time.sleep(20)
145
+ return None, "Timed out waiting for edge log to be ready."
@@ -8,13 +8,13 @@ from hcs_cli.service import tsctl
8
8
 
9
9
 
10
10
  @click.command(name="stats-aggregate-connects")
11
- @click.argument("from_", type=int)
12
- @click.argument("to", type=int)
11
+ @click.argument("from_", type=str)
12
+ @click.argument("to", type=str)
13
13
  @click.option("--wait", type=bool, required=False, is_flag=True, default=False)
14
14
  @click.option("--verbose", type=bool, required=False, is_flag=True, default=False)
15
- def aggregate_connects(from_: int, to: int, wait: bool, verbose: bool):
15
+ def aggregate_connects(from_: str, to: str, wait: bool, verbose: bool):
16
16
  """
17
- Aggregate connect events between FROM_ and TO unix timestamps.
17
+ Aggregate connect events between FROM_ and TO unix timestamps in milliseconds.
18
18
  """
19
19
  payload = {"from": from_, "to": to}
20
20
  result = diagnostic.aggregateConnects(payload, verbose=verbose)
@@ -36,8 +36,8 @@ def aggregate_connects_day_before(wait: bool, verbose: bool):
36
36
  dt_1_day_ago = dt - datetime.timedelta(days=1)
37
37
 
38
38
  print(f"Aggregating connect events from {dt_2_days_ago} to {dt_1_day_ago}")
39
- from_ = int(dt_2_days_ago.timestamp())
40
- to = int(dt_1_day_ago.timestamp())
39
+ from_ = str(int(dt_2_days_ago.timestamp() * 1000))
40
+ to = str(int(dt_1_day_ago.timestamp() * 1000))
41
41
  payload = {"from": from_, "to": to}
42
42
  result = diagnostic.aggregateConnects(payload, verbose=verbose)
43
43
  click.echo(result)
@@ -0,0 +1,214 @@
1
+ """
2
+ Copyright © 2025 Omnissa, LLC.
3
+ """
4
+
5
+ import json
6
+ import sys
7
+ from datetime import timezone
8
+
9
+ import click
10
+ import yumako
11
+ from hcs_core.ctxp import util
12
+ from hcs_core.sglib import cli_options as cli
13
+
14
+ from hcs_cli.service import hoc
15
+ from hcs_cli.support import predefined_payload
16
+ from hcs_cli.support.log.message_parser import parse_message
17
+ from hcs_cli.support.log.query_builder import update_query
18
+
19
+ _hdcs = ["US", "EU", "JP", "JP2"]
20
+
21
+ _regions = [
22
+ "any", # magic flag. Search log of all regional clusters related to the selected HDC. [default]
23
+ "all", # Alias of 'any'
24
+ "eastus2",
25
+ "westus2",
26
+ "centralus",
27
+ "westcentralus",
28
+ "germanynorth",
29
+ "germanywestcentral",
30
+ "northeurope",
31
+ "uksouth",
32
+ "westeurope",
33
+ "japaneast",
34
+ "japanwest",
35
+ "australiaeast",
36
+ "aussoutheast",
37
+ "centralindia",
38
+ "southindia",
39
+ ]
40
+
41
+
42
+ # US
43
+
44
+ PROD_US_R_WESTUS2 = "prod110-r-westus2-cp102-*" # primary
45
+ PROD_US_R_EASTUS2 = "prod110-r-eastus2-cp102-*" # primary
46
+ PROD_US_R_CENTRALUS = "prod110-r-centralus-cp102-*" # standby
47
+ PROD_US_R_WESTCENTRALUS = "prod110-r-westcentralus-cp102-*" # standby
48
+
49
+ # EU
50
+
51
+ PROD_EU_R_GERMANYNORTH = "prod110-r-germanynorth-cp102-*" # primary
52
+ PROD_EU_R_GERMANYWESTCENTRAL = "prod110-r-germanywestcentral-cp102-*"
53
+ PROD_EU_R_NORTHEUROPE = "prod110-r-northeurope-cp102-*" # primary
54
+ PROD_EU_R_UKSOUTH = "prod110-r-uksouth-cp102-*" # primary
55
+ PROD_EU_R_WESTEUROPE = "prod110-r-westeurope-cp102-*"
56
+
57
+ # JP
58
+ PROD_JP_HDC_JAPANEAST = "prod110-hdc-japaneast-cp102-*" # primary
59
+ # PROD_JP_HDC_JAPANWEST = "prod110-hdc-japanwest-cp102-*" # DR. no longer in use
60
+
61
+ PROD_JP_HDC_JAPANEAST_CP103 = "prod110-hdc-japaneast-cp103-*" # JP2
62
+
63
+ PROD_JP_R_JAPANEAST = "prod110-r-japaneast-cp102-*"
64
+ PROD_JP_R_JAPANWEST = "prod110-r-japanwest-cp102-*"
65
+ PROD_AUS_R_AUSTRALIAEAST = "prod110-r-australiaeast-cp102-*"
66
+ PROD_AUS_R_AUSSOUTHEAST = "prod110-r-aussoutheast-cp102-*"
67
+ PROD_IND_R_CENTRALINDIA = "prod110-r-centralindia-cp102-*"
68
+ PROD_IND_R_SOUTHINDIA = "prod110-r-southindia-cp102-*"
69
+
70
+ HDC_INDEX_MAPPING = {
71
+ "US": "prod110-hdc-westus2-cp102-*", # primary
72
+ # "US_DR": "prod110-hdc-centralus-cp102-*",
73
+ "EU": "prod110-hdc-northeurope-cp102-*", # primary
74
+ # "EU_DR": "prod110-hdc-westeurope-cp102-*",
75
+ "JP": PROD_JP_HDC_JAPANEAST,
76
+ "JP2": PROD_JP_HDC_JAPANEAST_CP103,
77
+ }
78
+
79
+ ANY_HDC_AND_REGION = "prod110-*-*-cp102-*"
80
+
81
+
82
+ @click.command()
83
+ @click.option(
84
+ "--from",
85
+ "from_param",
86
+ type=str,
87
+ required=False,
88
+ default="-24h",
89
+ help="Sepcify the from date. E.g. '-1d', or '-1h35m', or '-1w', or '2023-12-04T00:19:22.854Z'.",
90
+ )
91
+ @click.option(
92
+ "--to",
93
+ type=str,
94
+ required=False,
95
+ default="now",
96
+ help="Sepcify the to date. E.g. 'now', or '-1d', or '-1h35m', or '-1w', or '2023-12-04T00:19:22.854Z'.",
97
+ )
98
+ @click.option("--hdc", required=False, type=click.Choice(_hdcs, case_sensitive=False), help="The HDC location.")
99
+ @click.option("--region", required=False, type=click.Choice(_regions, case_sensitive=False), help="Search log of regional cluster.")
100
+ @click.option(
101
+ "--service",
102
+ required=False,
103
+ help="Filter by kubernetes.pod_labels.app. If multiple apps, use comma to separate, e.g. --service inventory,lcm",
104
+ )
105
+ @click.option(
106
+ "--pod",
107
+ required=False,
108
+ help="Filter by kubernetes.pod_name. If multiple pods, use comma to separate, e.g. --pod clouddriver-statefulset-0,clouddriver-statefulset-1",
109
+ )
110
+ @click.option(
111
+ "--index",
112
+ required=False,
113
+ type=str,
114
+ help="Explicit ES index/index-pattern to query, overriding the --hdc-derived lookup. "
115
+ "E.g. --index 'prod110-r-japaneast-cp102-*' to search precisely for a single regional cluster.",
116
+ )
117
+ @cli.limit(default=500)
118
+ @click.option("--raw", is_flag=True, default=False, help="If raw, output the raw result.")
119
+ @click.argument("query", type=str, required=False)
120
+ def log(
121
+ from_param: str,
122
+ to: str,
123
+ hdc: str,
124
+ region: str,
125
+ service: str,
126
+ pod: str,
127
+ index: str,
128
+ limit: int,
129
+ raw: bool,
130
+ query: str,
131
+ ):
132
+ """Search Kibana Log."""
133
+
134
+ if region and index:
135
+ return util.error_details(ValueError("--region and --index must not be used together.")), 1
136
+
137
+ # ES index pick (orthogonal to profile URL). Global --hdc fills in when command omits --hdc.
138
+ if not hdc:
139
+ from hcs_core.sglib import hdc as hdc_session
140
+
141
+ hdc = hdc_session.active() or "US"
142
+ else:
143
+ hdc = hdc.upper()
144
+
145
+ if index:
146
+ es_logs_search_index = index
147
+ elif region:
148
+ if region == "any" or region == "all":
149
+ # search any HDC and region. still scoped to datasource so only limited HDC indexes are searched.
150
+ es_logs_search_index = ANY_HDC_AND_REGION
151
+ else:
152
+ # search only specific region
153
+ es_logs_search_index = f"prod110-r-{region.lower()}-cp102-*"
154
+ else:
155
+ # hdc only
156
+ es_logs_search_index = HDC_INDEX_MAPPING.get(hdc)
157
+ if not es_logs_search_index:
158
+ raise ValueError("Unknown HDC")
159
+
160
+ text = predefined_payload.load("hoc/logs.jsont")
161
+ replacements = {
162
+ "from": int(yumako.time.of(from_param, tz=timezone.utc).timestamp() * 1000),
163
+ "to": int(yumako.time.of(to, tz=timezone.utc).timestamp() * 1000),
164
+ "query": query or "*",
165
+ "es_logs_search_index": es_logs_search_index,
166
+ }
167
+ try:
168
+ text = yumako.template.replace(
169
+ text=text,
170
+ mapping=replacements,
171
+ raise_on_unresolved_vars=True,
172
+ raise_on_unused_vars=True,
173
+ )
174
+ except ValueError as e:
175
+ return util.error_details(e), 1
176
+
177
+ parts = text.split("///", 2)
178
+ try:
179
+ first_line = json.loads(parts[0])
180
+ except Exception as e:
181
+ print(text, file=sys.stderr)
182
+ print(e, file=sys.stderr)
183
+ return
184
+ try:
185
+ second_line = json.loads(parts[1])
186
+ except Exception as e:
187
+ print(text, file=sys.stderr)
188
+ print(e, file=sys.stderr)
189
+ return
190
+
191
+ second_line["size"] = limit
192
+
193
+ update_query(second_line, app_names=service, pod_names=pod)
194
+
195
+ payload_jsonp = json.dumps(first_line) + "\n" + json.dumps(second_line) + "\n"
196
+
197
+ # This will restrict to the specific data source.
198
+ hdc_location_mapping = {
199
+ "US": "US_APM",
200
+ "EU": "EU_APM",
201
+ "JP": "JP_APM",
202
+ "JP2": "JP_APM",
203
+ }
204
+
205
+ # print(payload_jsonp)
206
+ result = hoc.es.raw_query(payload_jsonp, hdc_location=hdc_location_mapping[hdc])
207
+ if raw:
208
+ return result
209
+
210
+ # format the result to pure message array
211
+ ret = []
212
+ for item in result:
213
+ ret.append(parse_message(item))
214
+ return ret
@@ -10,7 +10,10 @@ from ..edge import delete as delete
10
10
  from ..edge import get as get
11
11
  from ..edge import get_connection_string as get_connection_string
12
12
  from ..edge import items as items
13
+ from ..edge import latest_log as latest_log
13
14
  from ..edge import list as list
15
+ from ..edge import list_logs as list_logs
16
+ from ..edge import request_log as request_log
14
17
  from ..edge import safe_delete as safe_delete
15
18
  from ..edge import wait_for as wait_for
16
19
  from ..edge import wait_for_deleted as wait_for_deleted
@@ -155,3 +155,19 @@ def _wait_for_terminal_state(id, org_id, timeout):
155
155
  def get_connection_string(id: str, org_id: str):
156
156
  url = f"{base_context}/{id}/device-connection-string?org_id={org_id}"
157
157
  return _client.get(url)
158
+
159
+
160
+ def request_log(id: str, org_id: str):
161
+ url = f"{base_context}/{id}/logs?org_id={org_id}"
162
+ return _client.post(url, {})
163
+
164
+
165
+ def list_logs(id: str, org_id: str, page: int = 0, size: int = 10):
166
+ url = f"{base_context}/{id}/logs?page={page}&size={size}&sort=createdAt,desc&org_id={org_id}&edgeDeploymentId={id}"
167
+ return _client.get(url)
168
+
169
+
170
+ def latest_log(id: str, org_id: str):
171
+ content = list_logs(id, org_id, page=0, size=1).get("content") or []
172
+ return content[0] if content else None
173
+ # logStatus: ACCEPTED -> AVAILABLE (readAccessUri present) | FAILED (errorDetail present)
@@ -93,20 +93,36 @@ _PATTERN_SPRING = re.compile(
93
93
  _PATTERNS = [_PATTERN_LCM, _PATTERN_CLOUDDRIVER, _PATTERN_TASK, _PATTERN_ELASTIC, _PATTERN_ENVOY, _PATTERN_PORTAL, _PATTERN_SPRING]
94
94
 
95
95
 
96
- def parse_message(message: str) -> dict:
96
+ _PASSTHROUGH_FIELDS = {
97
+ "kubernetes.pod_labels.app": "service",
98
+ "kubernetes.pod_name": "pod",
99
+ }
100
+
101
+
102
+ def parse_message(item: dict) -> dict:
103
+ message = item["message"]
104
+
97
105
  if _PATTERN_JSON_LOG.match(message):
98
106
  try:
99
107
  obj = json.loads(message)
100
- return {
108
+ parsed = {
101
109
  "timestamp": obj.get("@timestamp", ""),
102
110
  "level": obj.get("log.level", ""),
103
111
  "logger": obj.get("log.logger", ""),
104
112
  "body": obj.get("message", ""),
105
113
  }
114
+ return _with_passthrough_fields(parsed, item)
106
115
  except json.JSONDecodeError:
107
116
  pass
108
117
  for pattern in _PATTERNS:
109
118
  m = pattern.match(message)
110
119
  if m:
111
- return m.groupdict()
112
- return {"body": message}
120
+ return _with_passthrough_fields(m.groupdict(), item)
121
+ return _with_passthrough_fields({"body": message}, item)
122
+
123
+
124
+ def _with_passthrough_fields(parsed: dict, item: dict) -> dict:
125
+ for source_key, dest_key in _PASSTHROUGH_FIELDS.items():
126
+ if source_key in item:
127
+ parsed[dest_key] = item[source_key]
128
+ return parsed
@@ -5,7 +5,7 @@ Copyright © 2025 Omnissa, LLC.
5
5
  from typing import Optional
6
6
 
7
7
 
8
- def update_query(query_object: dict, any_apps: Optional[str]) -> dict:
8
+ def update_query(query_object: dict, app_names: Optional[str], pod_names: Optional[str]) -> dict:
9
9
  # Example query object: query string "KOP" and "V1-CUSFP0101I", time range, and kubernetes.pod_labels.app=lcm
10
10
  # {
11
11
  # "query": {
@@ -74,8 +74,8 @@ def update_query(query_object: dict, any_apps: Optional[str]) -> dict:
74
74
 
75
75
  filter_array = query_object["query"]["bool"]["filter"]
76
76
 
77
- if any_apps:
78
- apps = [a.strip() for a in any_apps.split(",") if a.strip()]
77
+ if app_names:
78
+ apps = [a.strip() for a in app_names.split(",") if a.strip()]
79
79
  if len(apps) == 1:
80
80
  filter_array.append({"match_phrase": {"kubernetes.pod_labels.app": apps[0]}})
81
81
  elif len(apps) > 1:
@@ -83,4 +83,12 @@ def update_query(query_object: dict, any_apps: Optional[str]) -> dict:
83
83
  {"bool": {"minimum_should_match": 1, "should": [{"match_phrase": {"kubernetes.pod_labels.app": app}} for app in apps]}}
84
84
  )
85
85
 
86
+ if pod_names:
87
+ pods = [p.strip() for p in pod_names.split(",") if p.strip()]
88
+ if len(pods) == 1:
89
+ filter_array.append({"match_phrase": {"kubernetes.pod_name": pods[0]}})
90
+ elif len(pods) > 1:
91
+ filter_array.append(
92
+ {"bool": {"minimum_should_match": 1, "should": [{"match_phrase": {"kubernetes.pod_name": p}} for p in pods]}}
93
+ )
86
94
  return query_object
@@ -21,7 +21,7 @@ keywords = [
21
21
  ]
22
22
  dynamic = ["version"]
23
23
  dependencies = [
24
- "hcs-core>=0.1.340",
24
+ "hcs-core>=0.1.342",
25
25
  "reportlab>=4.0.0",
26
26
  "matplotlib>=3.8.0",
27
27
  "InquirerPy>=0.3.4",
@@ -1,145 +0,0 @@
1
- """
2
- Copyright © 2025 Omnissa, LLC.
3
- """
4
-
5
- import json
6
- import sys
7
- from datetime import timezone
8
-
9
- import click
10
- import yumako
11
- from hcs_core.ctxp import util
12
- from hcs_core.sglib import cli_options as cli
13
-
14
- from hcs_cli.service import hoc
15
- from hcs_cli.support import predefined_payload
16
- from hcs_cli.support.log.message_parser import parse_message
17
- from hcs_cli.support.log.query_builder import update_query
18
-
19
- _hdcs = ["US", "EU", "JP"]
20
-
21
- _regions = [
22
- "eastus2",
23
- "westus2",
24
- "northcentralus",
25
- "northeurope",
26
- "germanywestcentral",
27
- "uksouth",
28
- "japaneast",
29
- "australiaeast",
30
- "centralindia",
31
- ]
32
- _stacks = ["prod", "staging", "stress"]
33
-
34
-
35
- @click.command()
36
- @cli.org_id
37
- @click.option(
38
- "--from",
39
- "from_param",
40
- type=str,
41
- required=False,
42
- default="-24h",
43
- help="Sepcify the from date. E.g. '-1d', or '-1h35m', or '-1w', or '2023-12-04T00:19:22.854Z'.",
44
- )
45
- @click.option(
46
- "--to",
47
- type=str,
48
- required=False,
49
- default="now",
50
- help="Sepcify the to date. E.g. 'now', or '-1d', or '-1h35m', or '-1w', or '2023-12-04T00:19:22.854Z'.",
51
- )
52
- @click.option("--hdc", required=False, type=click.Choice(_hdcs, case_sensitive=False), help="The HDC location")
53
- @click.option("--region", required=False, type=click.Choice(_regions, case_sensitive=False), help="The region")
54
- @click.option("--stack", required=False, type=click.Choice(_stacks, case_sensitive=False), help="The stack")
55
- @click.option(
56
- "--service",
57
- required=False,
58
- help="Filter by kubernetes.pod_labels.app. If multiple apps, use comma to separate, e.g. --service inventory,lcm",
59
- )
60
- @cli.limit(default=500)
61
- @click.option("--raw", is_flag=True, default=False, help="If raw, output the raw result.")
62
- @click.argument("query", type=str, required=False)
63
- def log(org: str, from_param: str, to: str, hdc: str, region: str, stack: str, service: str, limit: int, raw: bool, query: str):
64
- """Search Kibana Log."""
65
-
66
- # org_id = cli.get_org_id(org)
67
-
68
- # ES index pick (orthogonal to profile URL). Global --hdc fills in when command omits --hdc.
69
- if not hdc:
70
- from hcs_core.sglib import hdc as hdc_session
71
-
72
- hdc = hdc_session.active() or "US"
73
- else:
74
- hdc = hdc.upper()
75
- index_map = {
76
- "US": "prod110-hdc-westus2-cp102-*",
77
- # "US": "prod110-hdc-centralus-cp102-*",
78
- "EU": "prod110-hdc-northeurope-cp102-*",
79
- "JP": "prod110-hdc-japaneast-cp102-*",
80
- "AUS": "",
81
- "IND": "",
82
- "GER": "",
83
- "UK": "",
84
- "US_APM": "prod110-hdc-westus2-cp102-*",
85
- "EU_APM": "prod110-hdc-northeurope-cp102-*",
86
- "JP_APM": "prod110-hdc-japaneast-cp102-*",
87
- }
88
- es_logs_search_index = index_map[hdc]
89
-
90
- text = predefined_payload.load("hoc/logs.jsont")
91
- replacements = {
92
- "from": int(yumako.time.of(from_param, tz=timezone.utc).timestamp() * 1000),
93
- "to": int(yumako.time.of(to, tz=timezone.utc).timestamp() * 1000),
94
- "query": query or "",
95
- "es_logs_search_index": es_logs_search_index,
96
- }
97
- try:
98
- text = yumako.template.replace(
99
- text=text,
100
- mapping=replacements,
101
- raise_on_unresolved_vars=True,
102
- raise_on_unused_vars=True,
103
- )
104
- except ValueError as e:
105
- return util.error_details(e), 1
106
-
107
- parts = text.split("///", 2)
108
- try:
109
- first_line = json.loads(parts[0])
110
- except Exception as e:
111
- print(text, file=sys.stderr)
112
- print(e, file=sys.stderr)
113
- return
114
- try:
115
- second_line = json.loads(parts[1])
116
- except Exception as e:
117
- print(text, file=sys.stderr)
118
- print(e, file=sys.stderr)
119
- return
120
-
121
- second_line["size"] = limit
122
-
123
- update_query(second_line, any_apps=service)
124
-
125
- payload_jsonp = json.dumps(first_line) + "\n" + json.dumps(second_line) + "\n"
126
-
127
- hdc_location_mapping = {
128
- # "US", "EU", "JP", "AUS", "IND", "GER", "UK", "US_APM", "EU_APM", "JP_APM"
129
- "US": "US_APM",
130
- "EU": "EU_APM",
131
- "JP": "JP_APM",
132
- }
133
-
134
- # print(payload_jsonp)
135
- result = hoc.es.raw_query(payload_jsonp, hdc_location=hdc_location_mapping[hdc])
136
- if raw:
137
- return result
138
-
139
- # format the result to pure message array
140
- ret = []
141
- for item in result:
142
- message = item["message"]
143
- parsed = parse_message(message)
144
- ret.append(parsed)
145
- return ret
File without changes
File without changes
File without changes