hcs-cli 0.1.330__tar.gz → 0.1.332__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 (509) hide show
  1. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/PKG-INFO +2 -2
  2. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/__init__.py +1 -1
  3. hcs_cli-0.1.332/hcs_cli/cmds/hoc/log.py +327 -0
  4. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/hoc/search.py +11 -97
  5. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/task.py +9 -4
  6. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vm/log.py +5 -4
  7. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/hoc/es.py +7 -3
  8. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/task.py +5 -3
  9. hcs_cli-0.1.332/hcs_cli/support/exec_util.py +241 -0
  10. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/pyproject.toml +1 -1
  11. hcs_cli-0.1.330/hcs_cli/cmds/hoc/connect.py +0 -24
  12. hcs_cli-0.1.330/hcs_cli/cmds/hoc/oncall.py +0 -24
  13. hcs_cli-0.1.330/hcs_cli/cmds/hoc/org.py +0 -24
  14. hcs_cli-0.1.330/hcs_cli/cmds/hoc/template.py +0 -24
  15. hcs_cli-0.1.330/hcs_cli/cmds/hoc/vm.py +0 -27
  16. hcs_cli-0.1.330/hcs_cli/support/exec_util.py +0 -104
  17. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/.gitignore +0 -0
  18. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/README.md +0 -0
  19. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/__main__.py +0 -0
  20. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/__init__.py +0 -0
  21. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/ad/__init__.py +0 -0
  22. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/ad/create.py +0 -0
  23. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/ad/delete.py +0 -0
  24. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/ad/get.py +0 -0
  25. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/ad/list.py +0 -0
  26. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/admin/__init__.py +0 -0
  27. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/admin/azure_infra/__init__.py +0 -0
  28. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/admin/azure_infra/main.py +0 -0
  29. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/advisor/__init__.py +0 -0
  30. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/advisor/advisor_utils.py +0 -0
  31. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/advisor/config/__init__.py +0 -0
  32. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/advisor/config/advisor_config.py +0 -0
  33. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/advisor/html_utils.py +0 -0
  34. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/advisor/org.py +0 -0
  35. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/advisor/pdf_utils.py +0 -0
  36. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/advisor/pool.py +0 -0
  37. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/advisor/recommendation_engine.py +0 -0
  38. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/api.py +0 -0
  39. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/app/__init__.py +0 -0
  40. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/app/create.py +0 -0
  41. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/app/delete.py +0 -0
  42. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/app/get.py +0 -0
  43. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/app/list.py +0 -0
  44. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/app/update.py +0 -0
  45. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/app/use.py +0 -0
  46. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/auth/__init__.py +0 -0
  47. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/auth/admin/__init__.py +0 -0
  48. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/auth/admin/get_org_idp_map.py +0 -0
  49. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/auth/admin/network/__init__.py +0 -0
  50. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/auth/admin/network/add.py +0 -0
  51. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/auth/user/__init__.py +0 -0
  52. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/auth/user/list.py +0 -0
  53. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/clouddriver/__init__.py +0 -0
  54. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/clouddriver/provider.py +0 -0
  55. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/clouddriver/service.py +0 -0
  56. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/clouddriver/task.py +0 -0
  57. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/credential/__init__.py +0 -0
  58. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/credential/get.py +0 -0
  59. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/cs/__init__.py +0 -0
  60. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/cs/base.py +0 -0
  61. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/daas/__init__.py +0 -0
  62. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/daas/infra/__init__.py +0 -0
  63. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/daas/infra/basic.py +0 -0
  64. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/daas/infra/plan.py +0 -0
  65. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/daas/order/__init__.py +0 -0
  66. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/daas/order/create.py +0 -0
  67. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/daas/order/delete.py +0 -0
  68. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/daas/order/list.py +0 -0
  69. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/daas/order/update.py +0 -0
  70. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/daas/tenant/__init__.py +0 -0
  71. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/daas/tenant/consumption.py +0 -0
  72. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/daas/tenant/create.py +0 -0
  73. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/daas/tenant/plan.py +0 -0
  74. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/debug/__init__.py +0 -0
  75. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/debug/prepare.py +0 -0
  76. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/debug/reset.py +0 -0
  77. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/debug/start.py +0 -0
  78. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/__init__.py +0 -0
  79. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/emqx.py +0 -0
  80. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/__init__.py +0 -0
  81. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/auth.py +0 -0
  82. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/clear.py +0 -0
  83. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/helper/__init__.py +0 -0
  84. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/helper/credential_helper.py +0 -0
  85. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/helper/jenkins_util.py +0 -0
  86. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/helper/k8s_util.py +0 -0
  87. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/helper/license_info.py +0 -0
  88. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/helper/required_fields.py +0 -0
  89. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/helper/step_util.py +0 -0
  90. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/helper/subscription_util.py +0 -0
  91. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/helper/util.py +0 -0
  92. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/init.py +0 -0
  93. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/profiler.py +0 -0
  94. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/provided_files/__init__.py +0 -0
  95. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/provided_files/akka.plan.yml +0 -0
  96. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/provided_files/azsim.plan.yml +0 -0
  97. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/provided_files/azure.plan.yml +0 -0
  98. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/provided_files/mqtt-secret.yaml +0 -0
  99. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/provided_files/mqtt-server-external.yaml +0 -0
  100. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/provided_files/patch-mqtt-hostname.yml +0 -0
  101. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/provided_files/patch-vernemq-ssl-depth.json +0 -0
  102. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/fs/tailor.py +0 -0
  103. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/mqtt.py +0 -0
  104. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/onboard.py +0 -0
  105. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/test.py +0 -0
  106. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/util/__init__.py +0 -0
  107. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/util/github_helper.py +0 -0
  108. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/util/log.py +0 -0
  109. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/dev/util/mqtt_helper.py +0 -0
  110. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/diagnostics/__init__.py +0 -0
  111. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/diagnostics/diagnose.py +0 -0
  112. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/edge/__init__.py +0 -0
  113. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/edge/connection_string.py +0 -0
  114. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/edge/create.py +0 -0
  115. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/edge/delete.py +0 -0
  116. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/edge/get.py +0 -0
  117. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/edge/list.py +0 -0
  118. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/edge/use.py +0 -0
  119. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/edge/wait.py +0 -0
  120. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/entitlement/__init__.py +0 -0
  121. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/entitlement/delete.py +0 -0
  122. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/entitlement/get.py +0 -0
  123. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/entitlement/list.py +0 -0
  124. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/hoc/__init__.py +0 -0
  125. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/hoc/stats.py +0 -0
  126. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/hoc/util/__init__.py +0 -0
  127. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/hoc/util/inv_cache.py +0 -0
  128. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/hst/__init__.py +0 -0
  129. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/hst/clean.py +0 -0
  130. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/hst/cloud/__init__.py +0 -0
  131. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/hst/cloud/health.py +0 -0
  132. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/hst/cloud/perf.py +0 -0
  133. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/hst/cloud/scale.py +0 -0
  134. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/hst/installer.py +0 -0
  135. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/hst/key.py +0 -0
  136. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/hst/outpost.py +0 -0
  137. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/hst/probe.py +0 -0
  138. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/hst/report.py +0 -0
  139. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/hst/test.py +0 -0
  140. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/ims/__init__.py +0 -0
  141. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/ims/delete.py +0 -0
  142. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/ims/get.py +0 -0
  143. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/ims/gold_pattern/__init__.py +0 -0
  144. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/ims/gold_pattern/create.py +0 -0
  145. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/ims/gold_pattern/delete.py +0 -0
  146. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/ims/gold_pattern/get.py +0 -0
  147. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/ims/gold_pattern/list.py +0 -0
  148. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/ims/list.py +0 -0
  149. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/ims/list_copies.py +0 -0
  150. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/ims/version/__init__.py +0 -0
  151. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/ims/version/delete.py +0 -0
  152. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/ims/version/get.py +0 -0
  153. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/ims/version/list.py +0 -0
  154. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/inspect.py +0 -0
  155. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/inventory/__init__.py +0 -0
  156. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/inventory/assign.py +0 -0
  157. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/inventory/count.py +0 -0
  158. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/inventory/deassign.py +0 -0
  159. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/inventory/delete.py +0 -0
  160. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/inventory/get.py +0 -0
  161. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/inventory/list.py +0 -0
  162. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/inventory/logoff.py +0 -0
  163. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/inventory/session.py +0 -0
  164. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/inventory/update.py +0 -0
  165. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/iss/__init__.py +0 -0
  166. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/iss/mqtt.py +0 -0
  167. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/__init__.py +0 -0
  168. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/health.py +0 -0
  169. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/provider/__init__.py +0 -0
  170. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/provider/create.py +0 -0
  171. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/provider/delete.py +0 -0
  172. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/provider/get.py +0 -0
  173. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/provider/list.py +0 -0
  174. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/register.py +0 -0
  175. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/template/__init__.py +0 -0
  176. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/template/cancel.py +0 -0
  177. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/template/create.py +0 -0
  178. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/template/delete.py +0 -0
  179. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/template/expand.py +0 -0
  180. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/template/get.py +0 -0
  181. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/template/health.py +0 -0
  182. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/template/list.py +0 -0
  183. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/template/provision.py +0 -0
  184. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/template/retry.py +0 -0
  185. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/template/update.py +0 -0
  186. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/template/use.py +0 -0
  187. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/template/wait.py +0 -0
  188. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/test.py +0 -0
  189. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/vm/__init__.py +0 -0
  190. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/vm/delete.py +0 -0
  191. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/vm/get.py +0 -0
  192. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/vm/pair.py +0 -0
  193. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/vm/pairing_info.py +0 -0
  194. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/vm/power.py +0 -0
  195. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/vm/put.py +0 -0
  196. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/lcm/vm/wait.py +0 -0
  197. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/login.py +0 -0
  198. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/logout.py +0 -0
  199. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/org/__init__.py +0 -0
  200. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/org/datacenter/__init__.py +0 -0
  201. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/org/datacenter/get.py +0 -0
  202. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/org/datacenter/list.py +0 -0
  203. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/org/details/__init__.py +0 -0
  204. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/org/ff.py +0 -0
  205. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/org/get.py +0 -0
  206. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/org/list.py +0 -0
  207. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/org/location.py +0 -0
  208. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/org/use.py +0 -0
  209. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/pki/__init__.py +0 -0
  210. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/pki/ca.py +0 -0
  211. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/pki/cert/__init__.py +0 -0
  212. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/pki/cert/delete.py +0 -0
  213. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/pki/cert/get.py +0 -0
  214. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/pki/sign.py +0 -0
  215. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/pki/test.py +0 -0
  216. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/plan/__init__.py +0 -0
  217. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/plan/apply.py +0 -0
  218. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/plan/clear.py +0 -0
  219. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/plan/destroy.py +0 -0
  220. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/plan/graph.py +0 -0
  221. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/plan/input.py +0 -0
  222. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/plan/output.py +0 -0
  223. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/plan/resolve.py +0 -0
  224. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/plan/use.py +0 -0
  225. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/pool/__init__.py +0 -0
  226. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/pool/delete.py +0 -0
  227. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/pool/get.py +0 -0
  228. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/pool/list.py +0 -0
  229. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/pool/update.py +0 -0
  230. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/pool/use.py +0 -0
  231. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/profile/__init__.py +0 -0
  232. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/profile/init.py +0 -0
  233. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/provider/__init__.py +0 -0
  234. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/provider/create.py +0 -0
  235. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/provider/delete.py +0 -0
  236. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/provider/get.py +0 -0
  237. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/provider/golden_images.py +0 -0
  238. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/provider/list.py +0 -0
  239. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/provider/use.py +0 -0
  240. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/provider/vsphere_dcs.py +0 -0
  241. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/query.py +0 -0
  242. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/scm/__init__.py +0 -0
  243. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/scm/health.py +0 -0
  244. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/scm/operator.py +0 -0
  245. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/scm/plan.py +0 -0
  246. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/scm/recommend.py +0 -0
  247. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/scm/template.py +0 -0
  248. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/site/__init__.py +0 -0
  249. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/site/create.py +0 -0
  250. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/site/delete.py +0 -0
  251. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/site/get.py +0 -0
  252. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/site/list.py +0 -0
  253. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/site/set-edge.py +0 -0
  254. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/site/use.py +0 -0
  255. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/synt/__init__.py +0 -0
  256. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/synt/outpost/__init__.py +0 -0
  257. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/synt/outpost/create.py +0 -0
  258. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/synt/outpost/delete.py +0 -0
  259. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/synt/outpost/get.py +0 -0
  260. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/synt/outpost/list.py +0 -0
  261. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/synt/outpost/update.py +0 -0
  262. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/synt/probe/__init__.py +0 -0
  263. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/synt/probe/create.py +0 -0
  264. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/synt/probe/delete.py +0 -0
  265. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/synt/probe/get.py +0 -0
  266. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/synt/probe/list.py +0 -0
  267. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/synt/probe/run.py +0 -0
  268. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/synt/probe/update.py +0 -0
  269. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/synt/report/__init__.py +0 -0
  270. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/synt/report/delete.py +0 -0
  271. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/synt/report/get.py +0 -0
  272. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/synt/report/list.py +0 -0
  273. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/template/__init__.py +0 -0
  274. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/template/create.py +0 -0
  275. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/template/delete.py +0 -0
  276. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/template/expand.py +0 -0
  277. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/template/fix.py +0 -0
  278. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/template/get.py +0 -0
  279. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/template/list.py +0 -0
  280. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/template/list_usage.py +0 -0
  281. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/template/update.py +0 -0
  282. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/template/usage.py +0 -0
  283. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/template/use.py +0 -0
  284. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/template/wait.py +0 -0
  285. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/test.py +0 -0
  286. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/uag/__init__.py +0 -0
  287. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/uag/delete.py +0 -0
  288. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/uag/get.py +0 -0
  289. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/uag/list.py +0 -0
  290. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/upgrade.py +0 -0
  291. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vm/__init__.py +0 -0
  292. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vm/actions.py +0 -0
  293. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vm/delete.py +0 -0
  294. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vm/get.py +0 -0
  295. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vm/list.py +0 -0
  296. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vm/pairing_info.py +0 -0
  297. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vm/put.py +0 -0
  298. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vm/use.py +0 -0
  299. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vm/wait.py +0 -0
  300. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vmhub/__init__.py +0 -0
  301. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vmhub/info.py +0 -0
  302. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vmhub/otp/__init__.py +0 -0
  303. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vmhub/otp/redeem.py +0 -0
  304. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vmhub/otp/request.py +0 -0
  305. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vmm/__init__.py +0 -0
  306. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vmm/restart_vms.py +0 -0
  307. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vmm/rootca_edge_migration_stats.py +0 -0
  308. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vmm/rootca_edge_rotate_certs.py +0 -0
  309. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vmm/rootca_migrate.py +0 -0
  310. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vmm/rootca_migrate_edge.py +0 -0
  311. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/vmm/rootca_template_migration_stats.py +0 -0
  312. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/workflows/__init__.py +0 -0
  313. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/cmds/workflows/mqtt-endpoints.py +0 -0
  314. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/config/__init__.py +0 -0
  315. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/config/hcs-deployments.yaml +0 -0
  316. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/main.py +0 -0
  317. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/__init__.py +0 -0
  318. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/akka.blueprint.yml +0 -0
  319. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/app/__init__.py +0 -0
  320. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/app/manual.json +0 -0
  321. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/edge/__init__.py +0 -0
  322. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/edge/akka.json +0 -0
  323. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/edge/vsphere.json +0 -0
  324. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/hoc/lcm-capcalc.json.template +0 -0
  325. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/hoc/no-spare.json.template +0 -0
  326. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/inventory/__init__.py +0 -0
  327. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/inventory/assign.json +0 -0
  328. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/inventory/deassign.json +0 -0
  329. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/iss/__init__.py +0 -0
  330. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/__init__.py +0 -0
  331. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/akka.json +0 -0
  332. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/azure-dummy.json +0 -0
  333. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/azure-real.json +0 -0
  334. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/edge-proxy.json +0 -0
  335. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/zero-dedicated.json +0 -0
  336. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/zero-delay-1m-per-vm.json +0 -0
  337. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/zero-fail-delete-template.json +0 -0
  338. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/zero-fail-destroy-onthread.json +0 -0
  339. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/zero-fail-destroy.json +0 -0
  340. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/zero-fail-prepare-onthread.json +0 -0
  341. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/zero-fail-prepare.json +0 -0
  342. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/zero-fail-vm-onthread.json +0 -0
  343. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/zero-fail-vm.json +0 -0
  344. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/zero-floating.json +0 -0
  345. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/zero-legacy.json +0 -0
  346. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/zero-manual.json +0 -0
  347. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/zero-multisession.json +0 -0
  348. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/zero-nanw.json +0 -0
  349. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/zero-new-5k-delay.json +0 -0
  350. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/zero-new-5k.json +0 -0
  351. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/zero-new-snapshot.json +0 -0
  352. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/zero-reuse-vm-id.json +0 -0
  353. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/zero-with-max-id-offset.json +0 -0
  354. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/lcm/zero.json +0 -0
  355. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/provider/__init__.py +0 -0
  356. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/provider/ad-stes-vsphere.json +0 -0
  357. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/provider/akka.json +0 -0
  358. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/provider/azure.json +0 -0
  359. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/provider/edgeproxy.json +0 -0
  360. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/provider/vsphere.json +0 -0
  361. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/scm/starter.json +0 -0
  362. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/__init__.py +0 -0
  363. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/core/__init__.py +0 -0
  364. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/core/p01-dummy-success.json +0 -0
  365. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/core/p02-dummy-fail.json +0 -0
  366. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/core/p03-dummy-exception.json +0 -0
  367. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/core/p04-dummy-success-repeat.json +0 -0
  368. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/core/p05-dummy-fail-repeat.json +0 -0
  369. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/core/p06-dummy-exception-repeat.json +0 -0
  370. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/core/p07-dummy-delay.json +0 -0
  371. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/core/p08-dummy-property.json +0 -0
  372. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/ext/__init__.py +0 -0
  373. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/ext/p20-connect-success.json +0 -0
  374. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/ext/p21-connect-fail.json +0 -0
  375. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/ext/p30-ssl-success.json +0 -0
  376. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/ext/p31-ssl-fail.json +0 -0
  377. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/ext/p40-http-success.json +0 -0
  378. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/ext/p41-http-fail.json +0 -0
  379. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/ext/p42-http-status-code.json +0 -0
  380. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/ext1/__init__.py +0 -0
  381. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/ext1/p10-ping-success.json +0 -0
  382. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/ext1/p11-ping-fail.json +0 -0
  383. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/synt/ext1/p12-ping-success-repeat.json +0 -0
  384. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/payload/template/__init__.py +0 -0
  385. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/__init__.py +0 -0
  386. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/__init__.py +0 -0
  387. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/_prepare.py +0 -0
  388. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/ad.py +0 -0
  389. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/av_entitlement.py +0 -0
  390. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/av_fs.py +0 -0
  391. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/cert.py +0 -0
  392. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/edge.py +0 -0
  393. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/entitlement.py +0 -0
  394. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/gold_pattern.py +0 -0
  395. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/identity_provider.py +0 -0
  396. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/image.py +0 -0
  397. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/import_av_app.py +0 -0
  398. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/manual_app.py +0 -0
  399. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/pool_group.py +0 -0
  400. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/pool_template.py +0 -0
  401. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/provider.py +0 -0
  402. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/runtime/__init__.py +0 -0
  403. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/runtime/password.py +0 -0
  404. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/runtime/wait_for.py +0 -0
  405. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/site.py +0 -0
  406. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/provider/hcs/uag.py +0 -0
  407. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/__init__.py +0 -0
  408. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/admin/__init__.py +0 -0
  409. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/admin/ad.py +0 -0
  410. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/admin/azure_infra.py +0 -0
  411. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/admin/edge.py +0 -0
  412. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/admin/helper.py +0 -0
  413. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/admin/provider.py +0 -0
  414. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/admin/template.py +0 -0
  415. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/admin/uag.py +0 -0
  416. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/admin/vm.py +0 -0
  417. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/api.py +0 -0
  418. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/app_management/__init__.py +0 -0
  419. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/app_management/manual_app.py +0 -0
  420. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/auth/__init__.py +0 -0
  421. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/auth/admin.py +0 -0
  422. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/av/__init__.py +0 -0
  423. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/av/app.py +0 -0
  424. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/av/avimport.py +0 -0
  425. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/av/entitlements.py +0 -0
  426. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/av/fileshare.py +0 -0
  427. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/clouddriver/__init__.py +0 -0
  428. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/clouddriver/provider.py +0 -0
  429. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/clouddriver/service.py +0 -0
  430. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/credential/__init__.py +0 -0
  431. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/credential/credential.py +0 -0
  432. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/credential/nls.py +0 -0
  433. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/cs/__init__.py +0 -0
  434. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/cs/base.py +0 -0
  435. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/csp.py +0 -0
  436. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/diagnostics/__init__.py +0 -0
  437. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/diagnostics/edge.py +0 -0
  438. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/edge.py +0 -0
  439. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/edgehub/__init__.py +0 -0
  440. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/edgehub/edgecontroller.py +0 -0
  441. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/edgehub/edgetwin.py +0 -0
  442. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/graphql.py +0 -0
  443. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/hoc/__init__.py +0 -0
  444. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/hoc/diagnostic.py +0 -0
  445. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/ims/__init__.py +0 -0
  446. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/ims/gold_pattern.py +0 -0
  447. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/ims/helper.py +0 -0
  448. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/ims/image_copies.py +0 -0
  449. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/ims/images.py +0 -0
  450. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/ims/version.py +0 -0
  451. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/inventory/__init__.py +0 -0
  452. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/inventory/session.py +0 -0
  453. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/inventory/vm.py +0 -0
  454. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/iss/__init__.py +0 -0
  455. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/iss/mqtt.py +0 -0
  456. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/lcm/__init__.py +0 -0
  457. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/lcm/health.py +0 -0
  458. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/lcm/provider.py +0 -0
  459. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/lcm/template.py +0 -0
  460. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/lcm/vm.py +0 -0
  461. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/org_service/__init__.py +0 -0
  462. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/org_service/datacenter.py +0 -0
  463. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/org_service/details.py +0 -0
  464. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/org_service/orglocationmapping.py +0 -0
  465. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/pki/__init__.py +0 -0
  466. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/pki/certificate.py +0 -0
  467. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/pool.py +0 -0
  468. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/portal/__init__.py +0 -0
  469. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/portal/entitlement.py +0 -0
  470. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/portal/pool.py +0 -0
  471. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/portal/site.py +0 -0
  472. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/scm/__init__.py +0 -0
  473. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/scm/base.py +0 -0
  474. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/scm/operator.py +0 -0
  475. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/scm/plan.py +0 -0
  476. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/site.py +0 -0
  477. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/synt/__init__.py +0 -0
  478. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/synt/outpost.py +0 -0
  479. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/synt/probe.py +0 -0
  480. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/synt/report.py +0 -0
  481. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/template.py +0 -0
  482. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/tsctl/__init__.py +0 -0
  483. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/tsctl/base.py +0 -0
  484. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/tsctl/task.py +0 -0
  485. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/uag.py +0 -0
  486. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/vm.py +0 -0
  487. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/vmhub/__init__.py +0 -0
  488. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/vmhub/credentials.py +0 -0
  489. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/vmhub/mqtt.py +0 -0
  490. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/vmm/__init__.py +0 -0
  491. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/vmm/dct.py +0 -0
  492. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/service/vmm/hoc_event.py +0 -0
  493. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/support/__init__.py +0 -0
  494. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/support/constant.py +0 -0
  495. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/support/debug_util.py +0 -0
  496. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/support/inspect_util.py +0 -0
  497. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/support/param_util.py +0 -0
  498. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/support/patch_util.py +0 -0
  499. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/support/plan_util.py +0 -0
  500. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/support/predefined_payload.py +0 -0
  501. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/support/profile.py +0 -0
  502. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/support/scm/html_util.py +0 -0
  503. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/support/scm/plan-editor.html.template +0 -0
  504. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/support/scm/plan_editor.py +0 -0
  505. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/support/template_util.py +0 -0
  506. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/support/test_utils.py +0 -0
  507. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/support/test_utils2.py +0 -0
  508. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/hcs_cli/support/use_util.py +0 -0
  509. {hcs_cli-0.1.330 → hcs_cli-0.1.332}/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.330
3
+ Version: 0.1.332
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.330
17
+ Requires-Dist: hcs-core>=0.1.332
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.330"
1
+ __version__ = "0.1.332"
2
2
 
3
3
  from . import service as service # noqa: F401
@@ -0,0 +1,327 @@
1
+ """
2
+ Copyright © 2025 Omnissa, LLC.
3
+ """
4
+
5
+ import json
6
+ import re
7
+ import sys
8
+ from datetime import timezone
9
+ from typing import Optional
10
+
11
+ import click
12
+ import yumako
13
+ from hcs_core.ctxp import util
14
+ from hcs_core.sglib import cli_options as cli
15
+
16
+ from hcs_cli.service import hoc
17
+ from hcs_cli.support import predefined_payload
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
+ @click.option("--raw", is_flag=True, default=False, help="If raw, output the raw result.")
61
+ @click.argument("query", type=str, required=False)
62
+ def log(org: str, from_param: str, to: str, hdc: str, region: str, stack: str, service: str, raw: bool, query: str):
63
+ """Search Kibana Log."""
64
+
65
+ # org_id = cli.get_org_id(org)
66
+
67
+ if not hdc:
68
+ hdc = "US"
69
+ else:
70
+ hdc = hdc.upper()
71
+ index_map = {
72
+ "US": "prod110-hdc-westus2-cp102-*",
73
+ # "US": "prod110-hdc-centralus-cp102-*",
74
+ "EU": "hoc-logs-eu-prod-*",
75
+ "JP": "hoc-logs-jp-prod-*",
76
+ "AUS": "",
77
+ "IND": "",
78
+ "GER": "",
79
+ "UK": "",
80
+ "US_APM": "prod110-hdc-westus2-cp102-*",
81
+ "EU_APM": "",
82
+ "JP_APM": "",
83
+ }
84
+ es_logs_search_index = index_map[hdc]
85
+
86
+ text = predefined_payload.load("hoc/logs.jsont")
87
+ replacements = {
88
+ "from": int(yumako.time.of(from_param, tz=timezone.utc).timestamp() * 1000),
89
+ "to": int(yumako.time.of(to, tz=timezone.utc).timestamp() * 1000),
90
+ "query": query or "",
91
+ "es_logs_search_index": es_logs_search_index,
92
+ }
93
+ try:
94
+ text = yumako.template.replace(
95
+ text=text,
96
+ mapping=replacements,
97
+ raise_on_unresolved_vars=True,
98
+ raise_on_unused_vars=True,
99
+ )
100
+ except ValueError as e:
101
+ return util.error_details(e), 1
102
+
103
+ parts = text.split("///", 2)
104
+ try:
105
+ first_line = json.loads(parts[0])
106
+ except Exception as e:
107
+ print(text, file=sys.stderr)
108
+ print(e, file=sys.stderr)
109
+ return
110
+ try:
111
+ second_line = json.loads(parts[1])
112
+ except Exception as e:
113
+ print(text, file=sys.stderr)
114
+ print(e, file=sys.stderr)
115
+ return
116
+
117
+ _update_query(second_line, any_apps=service)
118
+
119
+ payload_jsonp = json.dumps(first_line) + "\n" + json.dumps(second_line) + "\n"
120
+
121
+ hdc_location_mapping = {
122
+ # "US", "EU", "JP", "AUS", "IND", "GER", "UK", "US_APM", "EU_APM", "JP_APM"
123
+ "US": "US_APM",
124
+ "EU": "EU_APM",
125
+ "JP": "JP_APM",
126
+ }
127
+
128
+ # print(payload_jsonp)
129
+ result = hoc.es.raw_query(payload_jsonp, hdc_location=hdc_location_mapping[hdc])
130
+ if raw:
131
+ return result
132
+
133
+ # format the result to pure message array
134
+ ret = []
135
+ for item in result:
136
+ message = item["message"]
137
+ parsed = _parse_message(message)
138
+ ret.append(parsed)
139
+ return ret
140
+
141
+
142
+ # Pattern 1: LCM / service-gateway style
143
+ # "...INFO [163053][mplateMonitor-119158] c.v.h.servicegateway.lcm.utils.KopLog..."
144
+ _PATTERN_LCM = re.compile(
145
+ r"(?P<timestamp>\S+)"
146
+ r"\s+\[trace_id=(?P<trace_id>[^\]]*)\]"
147
+ r"\s+\[transaction_id=(?P<transaction_id>[^\]]*)\]"
148
+ r"\s+(?P<level>\S+)"
149
+ r"\s+\[(?P<thread_id>[^\]]*)\]\[(?P<thread_name>[^\]]*)\]"
150
+ r"\s+(?P<logger>\S+)"
151
+ r"\s+-\s+"
152
+ r"(?P<body>.*)",
153
+ )
154
+
155
+ # Pattern 2: clouddriver style (single thread bracket after level)
156
+ # "...INFO [http-nio-8080-exec-6] c.v.horizon.sg.clouddriver..."
157
+ _PATTERN_CLOUDDRIVER = re.compile(
158
+ r"(?P<timestamp>\S+)"
159
+ r"\s+\[trace_id=(?P<trace_id>[^\]]*)\]"
160
+ r"\s+\[transaction_id=(?P<transaction_id>[^\]]*)\]"
161
+ r"\s+(?P<level>\S+)"
162
+ r"\s+\[(?P<thread_name>[^\]]*)\]"
163
+ r"\s+(?P<logger>\S+)"
164
+ r"\s+-\s+"
165
+ r"(?P<body>.*)",
166
+ )
167
+
168
+ # Pattern 3: task-service style (thread bracket before level)
169
+ # "...[transaction_id=...] [tsch:iss-32521] INFO c.v.h.s.t.service.TaskService..."
170
+ _PATTERN_TASK = re.compile(
171
+ r"(?P<timestamp>\S+)"
172
+ r"\s+\[trace_id=(?P<trace_id>[^\]]*)\]"
173
+ r"\s+\[transaction_id=(?P<transaction_id>[^\]]*)\]"
174
+ r"\s+\[(?P<thread_name>[^\]]*)\]"
175
+ r"\s+(?P<level>\S+)"
176
+ r"\s+(?P<logger>\S+)"
177
+ r"\s+-\s+"
178
+ r"(?P<body>.*)",
179
+ )
180
+
181
+ # Pattern 4
182
+ # "2026-04-10 00:24:26,559 [http-nio-8080-exec-10] WARN co.elastic.apm.agent.impl.transaction.TraceState - sample rate already set to 1.0, trying to set it to 1.0 through header will be ignored"
183
+ _PATTERN_ELASTIC = re.compile(
184
+ r"(?P<timestamp>\S+\s\S+)" r"\s+\[(?P<thread_name>[^\]]*)\]" r"\s+(?P<level>\S+)" r"\s+(?P<logger>\S+)" r"\s+-\s+" r"(?P<body>.*)",
185
+ )
186
+
187
+ # Pattern 5: JSON structured log (apm-server style)
188
+ # "{\"log.level\":\"info\",\"@timestamp\":\"2026-04-10T00:24:26.596Z\",\"log.logger\":\"request\",...}"
189
+ _PATTERN_JSON_LOG = re.compile(r"\s*\{.*\"@timestamp\".*\}")
190
+
191
+ # Pattern 6: Envoy/Istio access log
192
+ # "[2026-04-10T00:24:25.684Z] \"POST /ad-twin/v1/... HTTP/1.1\" 200 ..."
193
+ _PATTERN_ENVOY = re.compile(
194
+ r"\[(?P<timestamp>[^\]]+)\]"
195
+ r"\s+\"(?P<method>\S+)\s+(?P<path>\S+)\s+(?P<protocol>[^\"]+)\""
196
+ r"\s+(?P<status_code>\d+)"
197
+ r"\s+(?P<body>.*)",
198
+ )
199
+
200
+ # Pattern 7 & 8: portal/pool style (empty transaction_id bracket)
201
+ # "2026-04-10T00:27:57.372Z [trace_id=...] [] [kafka-consumer-listener-...] INFO c.v.h.p.handler..."
202
+ # "2026-04-10T00:27:57.376Z [trace_id=...] [] [http-nio-8080-exec-26] INFO c.v.h.portal.service..."
203
+ _PATTERN_PORTAL = re.compile(
204
+ r"(?P<timestamp>\S+)"
205
+ r"\s+\[trace_id=(?P<trace_id>[^\]]*)\]"
206
+ r"\s+\[(?P<transaction_id>[^\]]*)\]"
207
+ r"\s+\[(?P<thread_name>[^\]]*)\]"
208
+ r"\s+(?P<level>\S+)"
209
+ r"\s+(?P<logger>\S+)"
210
+ r"\s+-\s+"
211
+ r"(?P<body>.*)",
212
+ )
213
+
214
+ # Pattern 9: Spring Boot style (--- separator)
215
+ # "2026-04-10 00:29:34.037 INFO 8 --- [istenerId-0-C-1] c.v.h.a.f.kafka.KafkaConsumerService : Created ..."
216
+ _PATTERN_SPRING = re.compile(
217
+ r"(?P<timestamp>\S+\s\S+)"
218
+ r"\s+(?P<level>\S+)"
219
+ r"\s+\S+"
220
+ r"\s+---"
221
+ r"\s+\[(?P<thread_name>[^\]]*)\]"
222
+ r"\s+(?P<logger>\S+)"
223
+ r"\s+:\s+"
224
+ r"(?P<body>.*)",
225
+ )
226
+
227
+ _PATTERNS = [_PATTERN_LCM, _PATTERN_CLOUDDRIVER, _PATTERN_TASK, _PATTERN_ELASTIC, _PATTERN_ENVOY, _PATTERN_PORTAL, _PATTERN_SPRING]
228
+
229
+
230
+ def _parse_message(message: str) -> dict:
231
+ if _PATTERN_JSON_LOG.match(message):
232
+ try:
233
+ obj = json.loads(message)
234
+ return {
235
+ "timestamp": obj.get("@timestamp", ""),
236
+ "level": obj.get("log.level", ""),
237
+ "logger": obj.get("log.logger", ""),
238
+ "body": obj.get("message", ""),
239
+ }
240
+ except json.JSONDecodeError:
241
+ pass
242
+ for pattern in _PATTERNS:
243
+ m = pattern.match(message)
244
+ if m:
245
+ return m.groupdict()
246
+ return {"body": message}
247
+
248
+
249
+ def _update_query(query_object: dict, any_apps: Optional[str]) -> dict:
250
+ # Example query object: query string "KOP" and "V1-CUSFP0101I", time range, and kubernetes.pod_labels.app=lcm
251
+ # {
252
+ # "query": {
253
+ # "bool": {
254
+ # "must": [],
255
+ # "filter": [
256
+ # {
257
+ # "bool": {
258
+ # "filter": [
259
+ # {
260
+ # "multi_match": {
261
+ # "type": "phrase",
262
+ # "query": "KOP",
263
+ # "lenient": true
264
+ # }
265
+ # },
266
+ # {
267
+ # "multi_match": {
268
+ # "type": "phrase",
269
+ # "query": "V1-CUSFP0101I",
270
+ # "lenient": true
271
+ # }
272
+ # }
273
+ # ]
274
+ # }
275
+ # },
276
+ # {
277
+ # "range": {
278
+ # "timestamp": {
279
+ # "format": "strict_date_optional_time",
280
+ # "gte": "2026-04-09T22:42:54.486Z",
281
+ # "lte": "2026-04-09T22:47:54.486Z"
282
+ # }
283
+ # }
284
+ # },
285
+ # {
286
+ # "match_phrase": {
287
+ # "kubernetes.pod_labels.app": "lcm"
288
+ # }
289
+ # }
290
+ # ],
291
+ # "should": [],
292
+ # "must_not": []
293
+ # }
294
+ # }
295
+ # }
296
+
297
+ # example of the last match condition, if there are multiple app specified (is one of):
298
+ # {
299
+ # "bool": {
300
+ # "minimum_should_match": 1,
301
+ # "should": [
302
+ # {
303
+ # "match_phrase": {
304
+ # "kubernetes.pod_labels.app": "clouddriver"
305
+ # }
306
+ # },
307
+ # {
308
+ # "match_phrase": {
309
+ # "kubernetes.pod_labels.app": "lcm"
310
+ # }
311
+ # }
312
+ # ]
313
+ # }
314
+ # }
315
+
316
+ filter_array = query_object["query"]["bool"]["filter"]
317
+
318
+ if any_apps:
319
+ apps = [a.strip() for a in any_apps.split(",") if a.strip()]
320
+ if len(apps) == 1:
321
+ filter_array.append({"match_phrase": {"kubernetes.pod_labels.app": apps[0]}})
322
+ elif len(apps) > 1:
323
+ filter_array.append(
324
+ {"bool": {"minimum_should_match": 1, "should": [{"match_phrase": {"kubernetes.pod_labels.app": app}} for app in apps]}}
325
+ )
326
+
327
+ return query_object
@@ -36,6 +36,17 @@ def _formalize_query_string(input_str):
36
36
  return " ".join(parts).strip()
37
37
 
38
38
 
39
+ def _parse_kv_args(arg_list: list[str]) -> dict[str, str]:
40
+ result = {}
41
+ for arg in arg_list:
42
+ if "=" not in arg:
43
+ raise ValueError(f"Invalid argument: {arg}. Expected format: key=value")
44
+ key, value = arg.split("=", 1)
45
+ key = key.strip()
46
+ result[key] = value.strip()
47
+ return result
48
+
49
+
39
50
  @click.command()
40
51
  @cli.org_id
41
52
  @click.option(
@@ -167,100 +178,3 @@ def es(org: str, from_param: str, to: str, file, raw: bool, predefined: str, arg
167
178
 
168
179
  print(payload_jsonp)
169
180
  return hoc.es.raw_query(payload_jsonp)
170
-
171
-
172
- _hdcs = ["US", "EU", "JP"]
173
- _regions = [
174
- "eastus2",
175
- "westus2",
176
- "northcentralus",
177
- "northeurope",
178
- "germanywestcentral",
179
- "uksouth",
180
- "japaneast",
181
- "australiaeast",
182
- "centralindia",
183
- ]
184
-
185
-
186
- @click.command()
187
- @cli.org_id
188
- @click.option(
189
- "--from",
190
- "from_param",
191
- type=str,
192
- required=False,
193
- default="-12h",
194
- help="Sepcify the from date. E.g. '-1d', or '-1h35m', or '-1w', or '2023-12-04T00:19:22.854Z'.",
195
- )
196
- @click.option(
197
- "--to",
198
- type=str,
199
- required=False,
200
- default="now",
201
- help="Sepcify the to date. E.g. 'now', or '-1d', or '-1h35m', or '-1w', or '2023-12-04T00:19:22.854Z'.",
202
- )
203
- @click.option("--hdc", required=False, type=click.Choice(_hdcs, case_sensitive=False), help="The HDC location")
204
- @click.option("--region", required=False, type=click.Choice(_regions, case_sensitive=False), help="The HDC location")
205
- @click.argument("query", type=str, required=False)
206
- def logs(org: str, from_param: str, to: str, hdc: str, region: str, query: str):
207
- """Perform a raw ES query for HCS logs."""
208
-
209
- # org_id = cli.get_org_id(org)
210
-
211
- if not hdc:
212
- hdc = "US"
213
- else:
214
- hdc = hdc.upper()
215
- index_map = {
216
- "US": "prod110-hdc-centralus-cp102-*",
217
- "EU": "hoc-logs-eu-prod-*",
218
- "JP": "hoc-logs-jp-prod-*",
219
- }
220
- es_logs_search_index = index_map[hdc]
221
-
222
- text = predefined_payload.load("hoc/logs.jsont")
223
- replacements = {
224
- "from": int(yumako.time.of(from_param, tz=timezone.utc).timestamp() * 1000),
225
- "to": int(yumako.time.of(to, tz=timezone.utc).timestamp() * 1000),
226
- "query": query if query else "",
227
- "es_logs_search_index": es_logs_search_index,
228
- }
229
- try:
230
- text = yumako.template.replace(
231
- text=text,
232
- mapping=replacements,
233
- raise_on_unresolved_vars=True,
234
- raise_on_unused_vars=True,
235
- )
236
- except ValueError as e:
237
- return util.error_details(e), 1
238
-
239
- parts = text.split("///", 2)
240
- try:
241
- first_line = json.loads(parts[0])
242
- except Exception as e:
243
- print(text, file=sys.stderr)
244
- print(e, file=sys.stderr)
245
- return
246
- try:
247
- second_line = json.loads(parts[1])
248
- except Exception as e:
249
- print(text, file=sys.stderr)
250
- print(e, file=sys.stderr)
251
- return
252
- payload_jsonp = json.dumps(first_line) + "\n" + json.dumps(second_line) + "\n"
253
-
254
- print(payload_jsonp)
255
- return hoc.es.raw_query(payload_jsonp)
256
-
257
-
258
- def _parse_kv_args(arg_list: list[str]) -> dict[str, str]:
259
- result = {}
260
- for arg in arg_list:
261
- if "=" not in arg:
262
- raise ValueError(f"Invalid argument: {arg}. Expected format: key=value")
263
- key, value = arg.split("=", 1)
264
- key = key.strip()
265
- result[key] = value.strip()
266
- return result
@@ -495,12 +495,15 @@ def list_tasks(
495
495
  @cli.org_id
496
496
  @click.option("--namespace", "-n", type=str, required=False)
497
497
  @click.option("--group", "-g", type=str, required=False)
498
+ @click.option(
499
+ "--location", hidden=True, type=str, required=False, help="Task location, only for global scheduler. E.g. US, JP, IN, AU, DE, IE."
500
+ ) # to be removed later
498
501
  @click.argument("smart_path", type=str, required=False)
499
- def get(org: str, namespace: str, group: str, smart_path: str, **kwargs):
502
+ def get(org: str, namespace: str, group: str, location: str, smart_path: str, **kwargs):
500
503
  """Get a task. E.g. 'task get [[<namespace>/]<group>/]<key>'."""
501
504
  namespace, group, key = _parse_task_param(namespace, group, smart_path)
502
505
  org_id = cli.get_org_id(org)
503
- return task.get(org_id, namespace, group, key, **kwargs)
506
+ return task.get(org_id, namespace, group, key, location=location, **kwargs)
504
507
 
505
508
 
506
509
  @task_cmd_group.command()
@@ -551,7 +554,9 @@ def get_logs(org: str, namespace: str, group: str, smart_path: str, last: bool,
551
554
  if state and last:
552
555
  return "--state cannot be used with --last.", 1
553
556
 
554
- if org == "all" or org is None:
557
+ if last and org is None:
558
+ org_id = cli.get_org_id(org)
559
+ elif org == "all" or org is None:
555
560
  org_id = None
556
561
  else:
557
562
  org_id = cli.get_org_id(org)
@@ -568,7 +573,7 @@ def get_logs(org: str, namespace: str, group: str, smart_path: str, last: bool,
568
573
  search = state_search
569
574
 
570
575
  if last:
571
- t = task.last(org_id, namespace, group, key, **kwargs)
576
+ t = task.last(org_id, namespace, group, key)
572
577
  if t:
573
578
  return t.log
574
579
  else:
@@ -28,7 +28,7 @@ _DCT_FAILED = frozenset({"ERROR", "EXPIRED"})
28
28
  help="Whether to recreate the log if it already exists. By default, it will not recreate the log and just return the existing log.",
29
29
  )
30
30
  @click.option(
31
- "--silent", is_flag=True, default=False, help="Whether to print progress messages. By default, it will print progress messages."
31
+ "--verbose", is_flag=True, default=False, help="Whether to print progress messages. By default, it will print progress messages."
32
32
  )
33
33
  @click.option(
34
34
  "--save-as",
@@ -39,15 +39,13 @@ _DCT_FAILED = frozenset({"ERROR", "EXPIRED"})
39
39
  )
40
40
  @click.argument("vm_path", type=str, required=False)
41
41
  @cli.org_id
42
- def log(recreate: bool, silent: bool, save_path, vm_path: str, org: str, **kwargs):
42
+ def log(recreate: bool, verbose: bool, save_path, vm_path: str, org: str, **kwargs):
43
43
  """Download VM DCT log"""
44
44
  org_id = cli.get_org_id(org)
45
45
  template_id, vm_id = parse_vm_path(vm_path)
46
46
 
47
47
  is_ops = has_any_permission(["sgadm:supportw", "sgadm:supportlog", "sgadm:service", "sgadm:support"])
48
48
 
49
- verbose = not silent
50
-
51
49
  dct_info = dct_service.latest(org_id, template_id, vm_id, is_ops)
52
50
  if not dct_info:
53
51
  if verbose:
@@ -102,6 +100,9 @@ def log(recreate: bool, silent: bool, save_path, vm_path: str, org: str, **kwarg
102
100
  return f"Failed to download archive: {e}", 1
103
101
 
104
102
  dct_info["file_path"] = file_path
103
+
104
+ if verbose:
105
+ click.secho("----- DCT log downloaded -----", fg="bright_black")
105
106
  return dct_info
106
107
 
107
108
 
@@ -46,6 +46,7 @@ def query(
46
46
  to_date: Union[str, datetime] = "now",
47
47
  template_file: str = None,
48
48
  template: str = None,
49
+ hdc_location: str = None,
49
50
  **kwargs,
50
51
  ):
51
52
  if template_file:
@@ -87,8 +88,11 @@ def query(
87
88
  raise e
88
89
 
89
90
  payload_jsonp = json.dumps(payload_type) + "\n" + json.dumps(payload_query) + "\n"
90
- return raw_query(payload_jsonp)
91
+ return raw_query(payload_jsonp, hdc_location=hdc_location)
91
92
 
92
93
 
93
- def raw_query(payload_jsonp: str):
94
- return _client.post("/v1/data/query/search", text=payload_jsonp)
94
+ def raw_query(payload_jsonp: str, hdc_location: str = None):
95
+ url = "/v1/data/query/search"
96
+ if hdc_location:
97
+ url = f"/v1/data/query/search?hdcLocation={hdc_location}"
98
+ return _client.post(url, text=payload_jsonp)
@@ -312,7 +312,7 @@ def _get_v1(namespace: str, group: str, key: str) -> Optional[TaskModel]:
312
312
  return t
313
313
 
314
314
 
315
- def _get_v2(org_id: str, namespace: str, group: str, key: str) -> Optional[TaskModel]:
315
+ def _get_v2(org_id: str, namespace: str, group: str, key: str, location: str = None) -> Optional[TaskModel]:
316
316
  url = f"/v1/tasks/{key}?"
317
317
  if org_id:
318
318
  url += f"&orgId={org_id}"
@@ -320,6 +320,8 @@ def _get_v2(org_id: str, namespace: str, group: str, key: str) -> Optional[TaskM
320
320
  url += f"&namespace={namespace}"
321
321
  if group:
322
322
  url += f"&group={group}"
323
+ if location:
324
+ url += f"&location={location}"
323
325
  t = _scm_client.get(url, type=TaskModel)
324
326
  if not t:
325
327
  return
@@ -333,14 +335,14 @@ def get(org_id: str, namespace: str, group: str, key: str, **kwargs) -> Optional
333
335
  t = _get_v1(namespace, group, key)
334
336
  t.log = _lastlog(org_id, namespace, group, key)
335
337
  elif version == "v2":
336
- t = _get_v2(org_id, namespace, group, key)
338
+ t = _get_v2(org_id, namespace, group, key, location=kwargs.get("location"))
337
339
  else:
338
340
  t = _get_v1(namespace, group, key)
339
341
  if t:
340
342
  t.log = _lastlog(org_id, namespace, group, key)
341
343
  _task_temp_lru[_k] = "v1"
342
344
  else:
343
- t = _get_v2(org_id, namespace, group, key)
345
+ t = _get_v2(org_id, namespace, group, key, location=kwargs.get("location"))
344
346
  if t:
345
347
  _task_temp_lru[_k] = "v2"
346
348