hcs-cli 0.1.337__tar.gz → 0.1.339__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.
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/PKG-INFO +2 -2
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/__init__.py +1 -1
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/api.py +14 -4
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/debug/start.py +31 -3
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/clear.py +4 -4
- hcs_cli-0.1.339/hcs_cli/cmds/dev/fs/helper/config.py +291 -0
- hcs_cli-0.1.337/hcs_cli/cmds/dev/fs/init.py → hcs_cli-0.1.339/hcs_cli/cmds/dev/fs/helper/init_steps.py +437 -511
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/helper/k8s_util.py +14 -0
- hcs_cli-0.1.339/hcs_cli/cmds/dev/fs/helper/mqtt_certs.py +282 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/helper/step_util.py +9 -0
- hcs_cli-0.1.339/hcs_cli/cmds/dev/fs/init.py +134 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/provided_files/akka.plan.yml +68 -36
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/onboard.py +52 -11
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/hoc/log.py +4 -4
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/api.py +1 -1
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/support/debug_util.py +14 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/pyproject.toml +1 -1
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/.gitignore +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/README.md +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/__main__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/ad/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/ad/create.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/ad/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/ad/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/ad/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/admin/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/admin/azure_infra/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/admin/azure_infra/main.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/advisor/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/advisor/advisor_utils.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/advisor/config/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/advisor/config/advisor_config.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/advisor/html_utils.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/advisor/org.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/advisor/pdf_utils.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/advisor/pool.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/advisor/recommendation_engine.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/app/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/app/create.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/app/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/app/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/app/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/app/update.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/app/use.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/auth/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/auth/admin/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/auth/admin/get_org_idp_map.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/auth/admin/network/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/auth/admin/network/add.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/auth/user/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/auth/user/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/clouddriver/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/clouddriver/provider.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/clouddriver/service.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/clouddriver/task.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/credential/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/credential/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/cs/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/cs/base.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/daas/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/daas/infra/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/daas/infra/basic.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/daas/infra/plan.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/daas/order/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/daas/order/create.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/daas/order/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/daas/order/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/daas/order/update.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/daas/tenant/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/daas/tenant/consumption.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/daas/tenant/create.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/daas/tenant/plan.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/debug/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/debug/prepare.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/debug/reset.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/emqx.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/auth.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/helper/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/helper/credential_helper.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/helper/jenkins_util.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/helper/license_info.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/helper/required_fields.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/helper/subscription_util.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/helper/util.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/profiler.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/provided_files/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/provided_files/azsim.plan.yml +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/provided_files/azure.plan.yml +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/provided_files/mqtt-secret.yaml +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/provided_files/mqtt-server-external.yaml +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/provided_files/patch-mqtt-hostname.yml +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/provided_files/patch-vernemq-ssl-depth.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/fs/tailor.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/mqtt.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/test.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/util/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/util/github_helper.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/util/log.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/dev/util/mqtt_helper.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/diagnostics/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/diagnostics/diagnose.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/edge/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/edge/connection_string.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/edge/create.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/edge/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/edge/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/edge/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/edge/use.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/edge/wait.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/entitlement/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/entitlement/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/entitlement/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/entitlement/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/hoc/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/hoc/search.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/hoc/stats.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/hoc/util/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/hoc/util/inv_cache.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/hst/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/hst/clean.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/hst/cloud/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/hst/cloud/health.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/hst/cloud/perf.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/hst/cloud/scale.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/hst/installer.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/hst/key.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/hst/outpost.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/hst/probe.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/hst/report.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/hst/test.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/ims/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/ims/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/ims/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/ims/gold_pattern/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/ims/gold_pattern/create.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/ims/gold_pattern/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/ims/gold_pattern/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/ims/gold_pattern/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/ims/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/ims/list_copies.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/ims/version/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/ims/version/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/ims/version/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/ims/version/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/inspect.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/inventory/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/inventory/assign.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/inventory/count.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/inventory/deassign.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/inventory/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/inventory/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/inventory/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/inventory/logoff.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/inventory/session.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/inventory/update.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/iss/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/iss/mqtt.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/health.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/provider/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/provider/create.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/provider/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/provider/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/provider/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/register.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/template/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/template/cancel.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/template/create.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/template/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/template/expand.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/template/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/template/health.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/template/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/template/provision.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/template/retry.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/template/update.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/template/use.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/template/wait.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/test.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/vm/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/vm/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/vm/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/vm/pair.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/vm/pairing_info.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/vm/power.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/vm/put.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/lcm/vm/wait.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/login.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/logout.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/org/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/org/datacenter/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/org/datacenter/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/org/datacenter/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/org/details/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/org/ff.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/org/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/org/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/org/location.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/org/use.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/pki/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/pki/ca.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/pki/cert/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/pki/cert/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/pki/cert/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/pki/sign.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/pki/test.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/plan/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/plan/apply.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/plan/clear.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/plan/destroy.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/plan/graph.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/plan/input.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/plan/output.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/plan/resolve.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/plan/use.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/pool/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/pool/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/pool/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/pool/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/pool/update.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/pool/use.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/profile/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/profile/init.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/provider/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/provider/create.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/provider/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/provider/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/provider/golden_images.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/provider/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/provider/use.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/provider/vsphere_dcs.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/query.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/scm/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/scm/health.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/scm/operator.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/scm/plan.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/scm/recommend.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/scm/template.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/site/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/site/create.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/site/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/site/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/site/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/site/set-edge.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/site/use.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/synt/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/synt/outpost/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/synt/outpost/create.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/synt/outpost/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/synt/outpost/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/synt/outpost/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/synt/outpost/update.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/synt/probe/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/synt/probe/create.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/synt/probe/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/synt/probe/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/synt/probe/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/synt/probe/run.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/synt/probe/update.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/synt/report/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/synt/report/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/synt/report/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/synt/report/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/task.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/template/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/template/create.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/template/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/template/expand.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/template/fix.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/template/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/template/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/template/list_usage.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/template/update.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/template/usage.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/template/use.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/template/wait.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/test.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/uag/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/uag/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/uag/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/uag/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/upgrade.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vm/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vm/actions.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vm/delete.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vm/get.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vm/list.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vm/log.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vm/pairing_info.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vm/put.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vm/use.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vm/wait.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vmhub/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vmhub/info.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vmhub/otp/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vmhub/otp/redeem.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vmhub/otp/request.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vmm/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vmm/restart_vms.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vmm/rootca_edge_migration_stats.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vmm/rootca_edge_rotate_certs.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vmm/rootca_migrate.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vmm/rootca_migrate_edge.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/vmm/rootca_template_migration_stats.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/workflows/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/cmds/workflows/mqtt-endpoints.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/config/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/config/hcs-deployments.yaml +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/main.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/akka.blueprint.yml +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/app/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/app/manual.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/edge/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/edge/akka.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/edge/vsphere.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/hoc/lcm-capcalc.json.template +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/hoc/no-spare.json.template +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/inventory/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/inventory/assign.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/inventory/deassign.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/iss/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/akka.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/azure-dummy.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/azure-real.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/edge-proxy.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/zero-dedicated.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/zero-delay-1m-per-vm.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/zero-fail-delete-template.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/zero-fail-destroy-onthread.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/zero-fail-destroy.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/zero-fail-prepare-onthread.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/zero-fail-prepare.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/zero-fail-vm-onthread.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/zero-fail-vm.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/zero-floating.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/zero-legacy.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/zero-manual.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/zero-multisession.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/zero-nanw.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/zero-new-5k-delay.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/zero-new-5k.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/zero-new-snapshot.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/zero-reuse-vm-id.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/zero-with-max-id-offset.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/lcm/zero.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/provider/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/provider/ad-stes-vsphere.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/provider/akka.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/provider/azure.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/provider/edgeproxy.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/provider/vsphere.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/scm/starter.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/core/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/core/p01-dummy-success.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/core/p02-dummy-fail.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/core/p03-dummy-exception.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/core/p04-dummy-success-repeat.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/core/p05-dummy-fail-repeat.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/core/p06-dummy-exception-repeat.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/core/p07-dummy-delay.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/core/p08-dummy-property.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/ext/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/ext/p20-connect-success.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/ext/p21-connect-fail.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/ext/p30-ssl-success.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/ext/p31-ssl-fail.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/ext/p40-http-success.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/ext/p41-http-fail.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/ext/p42-http-status-code.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/ext1/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/ext1/p10-ping-success.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/ext1/p11-ping-fail.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/synt/ext1/p12-ping-success-repeat.json +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/payload/template/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/_prepare.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/ad.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/av_entitlement.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/av_fs.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/cert.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/edge.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/entitlement.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/gold_pattern.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/identity_provider.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/image.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/import_av_app.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/manual_app.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/pool_group.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/pool_template.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/provider.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/runtime/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/runtime/password.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/runtime/wait_for.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/site.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/provider/hcs/uag.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/admin/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/admin/ad.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/admin/azure_infra.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/admin/edge.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/admin/helper.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/admin/provider.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/admin/template.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/admin/uag.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/admin/vm.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/app_management/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/app_management/manual_app.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/auth/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/auth/admin.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/av/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/av/app.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/av/avimport.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/av/entitlements.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/av/fileshare.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/clouddriver/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/clouddriver/provider.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/clouddriver/service.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/credential/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/credential/credential.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/credential/nls.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/cs/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/cs/base.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/csp.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/diagnostics/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/diagnostics/edge.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/edge.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/edgehub/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/edgehub/edgecontroller.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/edgehub/edgetwin.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/graphql.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/hoc/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/hoc/diagnostic.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/hoc/es.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/ims/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/ims/gold_pattern.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/ims/helper.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/ims/image_copies.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/ims/images.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/ims/version.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/inventory/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/inventory/session.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/inventory/vm.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/iss/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/iss/mqtt.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/lcm/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/lcm/health.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/lcm/provider.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/lcm/template.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/lcm/vm.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/org_service/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/org_service/datacenter.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/org_service/details.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/org_service/orglocationmapping.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/pki/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/pki/certificate.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/pool.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/portal/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/portal/entitlement.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/portal/pool.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/portal/site.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/scm/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/scm/base.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/scm/operator.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/scm/plan.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/site.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/synt/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/synt/outpost.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/synt/probe.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/synt/report.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/task.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/template.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/tsctl/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/tsctl/base.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/tsctl/task.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/uag.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/vm.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/vmhub/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/vmhub/credentials.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/vmhub/mqtt.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/vmm/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/vmm/dct.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/service/vmm/hoc_event.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/support/__init__.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/support/constant.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/support/exec_util.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/support/inspect_util.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/support/param_util.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/support/patch_util.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/support/plan_util.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/support/predefined_payload.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/support/profile.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/support/scm/html_util.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/support/scm/plan-editor.html.template +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/support/scm/plan_editor.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/support/template_util.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/support/test_utils.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/support/test_utils2.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/hcs_cli/support/use_util.py +0 -0
- {hcs_cli-0.1.337 → hcs_cli-0.1.339}/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.
|
|
3
|
+
Version: 0.1.339
|
|
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.
|
|
17
|
+
Requires-Dist: hcs-core>=0.1.339
|
|
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,5 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import sys
|
|
3
|
+
from typing import Optional
|
|
3
4
|
|
|
4
5
|
import click
|
|
5
6
|
from hcs_core.ctxp import CtxpException, profile
|
|
@@ -70,6 +71,18 @@ def _handle_data_input(data_arg, json_arg):
|
|
|
70
71
|
return raw_data, json_data
|
|
71
72
|
|
|
72
73
|
|
|
74
|
+
def _build_headers(header: list, content_type: Optional[str]) -> Optional[dict]:
|
|
75
|
+
headers: dict[str, str] = {}
|
|
76
|
+
for h in header:
|
|
77
|
+
name, sep, value = h.partition(":")
|
|
78
|
+
if not sep:
|
|
79
|
+
raise click.UsageError(f"Invalid header format (expected 'Header-Name: value'): {h!r}")
|
|
80
|
+
headers[name.strip()] = value.strip()
|
|
81
|
+
if content_type:
|
|
82
|
+
headers["Content-Type"] = content_type
|
|
83
|
+
return headers or None
|
|
84
|
+
|
|
85
|
+
|
|
73
86
|
@click.command()
|
|
74
87
|
@click.option("--put", is_flag=True, default=False, help="Perform HTTP PUT.")
|
|
75
88
|
@click.option("--post", "-p", is_flag=True, default=False, help="Perform HTTP POST.")
|
|
@@ -149,10 +162,7 @@ def api(
|
|
|
149
162
|
else:
|
|
150
163
|
handler = hcs_api
|
|
151
164
|
|
|
152
|
-
|
|
153
|
-
headers = {h.split(":")[0].strip(): h.split(":")[1].strip() for h in header}
|
|
154
|
-
else:
|
|
155
|
-
headers = None
|
|
165
|
+
headers = _build_headers(header, content_type)
|
|
156
166
|
|
|
157
167
|
# print( f"{method} {api_path} text={raw_data} json={json_data}" )
|
|
158
168
|
|
|
@@ -96,9 +96,37 @@ def _push_jar_to_pod(service: str, pod_id: str):
|
|
|
96
96
|
jar_files = _get_jar_files_with_keyword("target/", service)
|
|
97
97
|
print("Jar file fetched: ", jar_files)
|
|
98
98
|
jar_file = jar_files[0]
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
99
|
+
jar_path = f"target/{jar_file}"
|
|
100
|
+
|
|
101
|
+
# Get file size for progress bar
|
|
102
|
+
file_size = os.path.getsize(jar_path)
|
|
103
|
+
file_size_mb = file_size / (1024 * 1024)
|
|
104
|
+
|
|
105
|
+
print(f"Start pushing {jar_file} ({file_size_mb:.1f} MB) to k8s pod {pod_id}")
|
|
106
|
+
|
|
107
|
+
# Start kubectl exec process
|
|
108
|
+
kubectl_cmd = f"kubectl exec -i {pod_id} -c app -- sh -c 'cat > /app.jar'"
|
|
109
|
+
process = subprocess.Popen(kubectl_cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
|
|
110
|
+
|
|
111
|
+
# Stream file with progress bar
|
|
112
|
+
chunk_size = 1024 * 1024 # 1MB chunks
|
|
113
|
+
with open(jar_path, "rb") as f:
|
|
114
|
+
with click.progressbar(length=file_size, label="Uploading", show_eta=True, show_percent=True) as bar:
|
|
115
|
+
while True:
|
|
116
|
+
chunk = f.read(chunk_size)
|
|
117
|
+
if not chunk:
|
|
118
|
+
break
|
|
119
|
+
process.stdin.write(chunk)
|
|
120
|
+
bar.update(len(chunk))
|
|
121
|
+
|
|
122
|
+
# Close stdin and wait for completion
|
|
123
|
+
process.stdin.close()
|
|
124
|
+
process.wait()
|
|
125
|
+
|
|
126
|
+
if process.returncode != 0:
|
|
127
|
+
stderr = process.stderr.read().decode("utf-8")
|
|
128
|
+
raise Exception(f"Failed to push jar: {stderr}")
|
|
129
|
+
|
|
102
130
|
print("Push success, starting app.jar")
|
|
103
131
|
|
|
104
132
|
|
|
@@ -7,7 +7,7 @@ import click
|
|
|
7
7
|
|
|
8
8
|
import hcs_cli.cmds.dev.util.log as log
|
|
9
9
|
from hcs_cli.cmds.dev.fs.helper.util import validate_fs_kubeconfig, validate_fs_profile
|
|
10
|
-
from hcs_cli.cmds.dev.fs.
|
|
10
|
+
from hcs_cli.cmds.dev.fs.helper.init_steps import resolve_bundled_file_path
|
|
11
11
|
from hcs_cli.support.exec_util import run_cli
|
|
12
12
|
from hcs_core.ctxp import profile
|
|
13
13
|
|
|
@@ -34,9 +34,9 @@ def clear(only_default: bool, **kwargs):
|
|
|
34
34
|
_delete_all()
|
|
35
35
|
|
|
36
36
|
os.environ["ORG_ID"] = profile.current().csp.orgId
|
|
37
|
-
akka_plan_path =
|
|
38
|
-
azure_plan_path =
|
|
39
|
-
azsim_plan_path =
|
|
37
|
+
akka_plan_path = resolve_bundled_file_path("provided_files/akka.plan.yml")
|
|
38
|
+
azure_plan_path = resolve_bundled_file_path("provided_files/azure.plan.yml")
|
|
39
|
+
azsim_plan_path = resolve_bundled_file_path("provided_files/azsim.plan.yml")
|
|
40
40
|
run_cli("hcs plan destroy -f " + akka_plan_path, raise_on_error=False)
|
|
41
41
|
run_cli("hcs plan destroy -f " + azure_plan_path, raise_on_error=False)
|
|
42
42
|
run_cli("hcs plan destroy -f " + azsim_plan_path, raise_on_error=False)
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Feature stack .env config: resolve, generate, and load.
|
|
3
|
+
|
|
4
|
+
Handles three sources:
|
|
5
|
+
1. Local .env in cwd
|
|
6
|
+
2. Generate from nightly-tests repo (includes ORG_ID)
|
|
7
|
+
3. User-specified file path
|
|
8
|
+
|
|
9
|
+
Public API:
|
|
10
|
+
- resolve(env_source, env_file, org_source_key, org_source_value) — CLI/programmatic
|
|
11
|
+
- resolve_interactive(org_source_key, org_source_value) — interactive prompt
|
|
12
|
+
- FS_CUSTOMER_ORG_ID — default org for nightly mode
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
import os
|
|
16
|
+
import re
|
|
17
|
+
from collections import OrderedDict, defaultdict
|
|
18
|
+
from pathlib import Path
|
|
19
|
+
from typing import Optional
|
|
20
|
+
|
|
21
|
+
from dotenv import load_dotenv
|
|
22
|
+
from InquirerPy import inquirer
|
|
23
|
+
from InquirerPy.base import Choice
|
|
24
|
+
from prompt_toolkit import prompt
|
|
25
|
+
from prompt_toolkit.completion import PathCompleter
|
|
26
|
+
|
|
27
|
+
import hcs_cli.cmds.dev.util.github_helper as github_helper
|
|
28
|
+
from hcs_cli.cmds.dev.util import log
|
|
29
|
+
from hcs_cli.cmds.dev.util.log import fail
|
|
30
|
+
|
|
31
|
+
FS_CUSTOMER_ORG_ID = "517419ab-9bf6-4dde-95ca-1916c6600a40"
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def resolve(env_source: Optional[str], env_file: Optional[str], org_source_key: str, org_source_value: str):
|
|
35
|
+
"""Resolve and load .env from CLI params. Falls back to interactive if neither specified."""
|
|
36
|
+
if env_file:
|
|
37
|
+
os.environ.pop(org_source_key, None)
|
|
38
|
+
env_path = _from_user_path(env_file)
|
|
39
|
+
elif env_source == "nightly":
|
|
40
|
+
os.environ[org_source_key] = org_source_value
|
|
41
|
+
customer_org = _resolve_customer_org()
|
|
42
|
+
env_path = _from_nightly_repo(customer_org)
|
|
43
|
+
elif env_source == "local":
|
|
44
|
+
os.environ.pop(org_source_key, None)
|
|
45
|
+
env_path = _from_local()
|
|
46
|
+
else:
|
|
47
|
+
env_path = resolve_interactive(org_source_key, org_source_value)
|
|
48
|
+
|
|
49
|
+
_load_env_file(env_path)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def resolve_interactive(org_source_key: str, org_source_value: str) -> str:
|
|
53
|
+
"""Interactive prompt for env source. Returns resolved path (does NOT load)."""
|
|
54
|
+
has_local_env = os.path.isfile(".env")
|
|
55
|
+
choices = []
|
|
56
|
+
if has_local_env:
|
|
57
|
+
choices.append(Choice(value="local", enabled=True, name="Load local .env file"))
|
|
58
|
+
|
|
59
|
+
choices += [
|
|
60
|
+
Choice(value="nightly", enabled=True, name="Auto configure from nightly test"),
|
|
61
|
+
Choice(value="user_specified", enabled=True, name="User provided env file"),
|
|
62
|
+
]
|
|
63
|
+
|
|
64
|
+
env_choice = inquirer.select(
|
|
65
|
+
message="Choose how to load your .env file:",
|
|
66
|
+
choices=choices,
|
|
67
|
+
instruction="(Use SPACE to toggle, ENTER to confirm)",
|
|
68
|
+
).execute()
|
|
69
|
+
|
|
70
|
+
if env_choice == "nightly":
|
|
71
|
+
os.environ[org_source_key] = org_source_value
|
|
72
|
+
customer_org = _resolve_customer_org()
|
|
73
|
+
return _from_nightly_repo(customer_org)
|
|
74
|
+
elif env_choice == "user_specified":
|
|
75
|
+
os.environ.pop(org_source_key, None)
|
|
76
|
+
completer = PathCompleter(expanduser=True)
|
|
77
|
+
env_path_input = prompt("Enter the full path to your .env file: ", completer=completer, default="~/")
|
|
78
|
+
return _from_user_path(env_path_input)
|
|
79
|
+
else:
|
|
80
|
+
os.environ.pop(org_source_key, None)
|
|
81
|
+
return _from_local()
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
# --- helpers ---
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def _resolve_customer_org() -> str:
|
|
88
|
+
"""Return customer org ID: from env if set, otherwise prompt with default."""
|
|
89
|
+
org = os.getenv("ORG_ID")
|
|
90
|
+
if org:
|
|
91
|
+
log.info(f"Target customer ORG_ID={org}")
|
|
92
|
+
return org
|
|
93
|
+
org = prompt("Enter target ORG_ID: ", default=FS_CUSTOMER_ORG_ID).strip()
|
|
94
|
+
os.environ["ORG_ID"] = org
|
|
95
|
+
log.info(f"Target customer ORG_ID={org}")
|
|
96
|
+
return org
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
# --- source resolvers ---
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def _from_nightly_repo(customer_org: str) -> str:
|
|
103
|
+
output_env_file = ".env"
|
|
104
|
+
|
|
105
|
+
github_helper.check_ssh_access()
|
|
106
|
+
with github_helper.repo("git@github.com:euc-eng/horizonv2-sg.nightly-tests.git") as repo:
|
|
107
|
+
config_data = repo.get("src/test/resources/com/vmware/integration/sg/payloads/onboard/configuration.txt", format="json")
|
|
108
|
+
config_props = repo.get("src/test/resources/config.properties")
|
|
109
|
+
|
|
110
|
+
_write_env_file(config_data, config_props, output_env_file)
|
|
111
|
+
with open(output_env_file, "a") as f:
|
|
112
|
+
f.write(f"\nORG_ID={customer_org}\n")
|
|
113
|
+
_organize_env_file(output_env_file)
|
|
114
|
+
|
|
115
|
+
log.good(f".env file created at: {Path(output_env_file).resolve()}")
|
|
116
|
+
return str(Path(output_env_file).resolve())
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def _from_local() -> str:
|
|
120
|
+
return os.path.abspath(".env")
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def _from_user_path(path: str) -> str:
|
|
124
|
+
return str(Path(path).expanduser().resolve())
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
# --- loader ---
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def _load_env_file(env_path: str):
|
|
131
|
+
env_path = os.path.expanduser(str(env_path))
|
|
132
|
+
if not _is_valid_env_file(env_path):
|
|
133
|
+
fail(f"Could not find .env file at {env_path}. Please ensure it follows the template format.")
|
|
134
|
+
load_dotenv(env_path, override=True)
|
|
135
|
+
log.good(f"Loaded environment file from {os.path.abspath(env_path)}")
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
def _is_valid_env_file(path):
|
|
139
|
+
if not os.path.isfile(path):
|
|
140
|
+
return False
|
|
141
|
+
if not os.path.basename(path).startswith(".env"):
|
|
142
|
+
return False
|
|
143
|
+
try:
|
|
144
|
+
with open(path, "r") as f:
|
|
145
|
+
for line in f:
|
|
146
|
+
if line.strip() == "" or line.strip().startswith("#"):
|
|
147
|
+
continue
|
|
148
|
+
if "=" not in line:
|
|
149
|
+
return False
|
|
150
|
+
return True
|
|
151
|
+
except Exception:
|
|
152
|
+
return False
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
# --- env file generation helpers ---
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
def _write_env_file(data, props, env_file):
|
|
159
|
+
ignore_keys = {
|
|
160
|
+
"aksUserIdentity",
|
|
161
|
+
"adServerEndpoint",
|
|
162
|
+
"signingCaName",
|
|
163
|
+
"caHostName",
|
|
164
|
+
"siteName",
|
|
165
|
+
"domainUser",
|
|
166
|
+
"domainPassword",
|
|
167
|
+
"virtualNetwork",
|
|
168
|
+
}
|
|
169
|
+
ad_username = data.get("domainUser")
|
|
170
|
+
ad_password = data.get("domainPassword")
|
|
171
|
+
|
|
172
|
+
with open(env_file, "w") as f:
|
|
173
|
+
for key, value in data.items():
|
|
174
|
+
if key not in ignore_keys:
|
|
175
|
+
f.write(f"{_to_env_key(key)}={value}\n")
|
|
176
|
+
config_block = f"""HCS_CLIENT_ID={props["csp.service.app.client_id"]}
|
|
177
|
+
HCS_CLIENT_SECRET={props["csp.service.app.client_secret"]}
|
|
178
|
+
IDP_TENANT_DOMAIN=test-sanity-domain
|
|
179
|
+
UAG_FQDN=myuag.fqdn
|
|
180
|
+
DESKTOP_SUBNET_CIDR=10.76.0.0/16
|
|
181
|
+
DMZ_SUBNET_CIDR=10.77.0.0/24
|
|
182
|
+
MANAGEMENT_SUBNET_CIDR=10.77.3.0/24
|
|
183
|
+
TENANT_SUBNET=desktop-76
|
|
184
|
+
TENANT_SUBNET_CIDR=10.76.0.0/16
|
|
185
|
+
DESKTOP_RESOURCE_GROUP=horizonv2-sg-dev
|
|
186
|
+
INFRA_RESOURCE_GROUP=horizonv2-sg-dev
|
|
187
|
+
DESKTOP_VNET=horizonv2-sg-dev-vnet
|
|
188
|
+
INFRA_VNET=horizonv2-sg-dev-vnet
|
|
189
|
+
PRIMARY_BIND_USER_NAME={ad_username}
|
|
190
|
+
PRIMARY_BIND_PASSWORD={ad_password}
|
|
191
|
+
AUXILIARY_BIND_USER_NAME={ad_username}
|
|
192
|
+
AUXILIARY_BIND_PASSWORD={ad_password}
|
|
193
|
+
PRIMARY_JOIN_USER_NAME={ad_username}
|
|
194
|
+
PRIMARY_JOIN_PASSWORD={ad_password}
|
|
195
|
+
AUXILIARY_JOIN_USER_NAME={ad_username}
|
|
196
|
+
AUXILIARY_JOIN_PASSWORD={ad_password}
|
|
197
|
+
ENTITLEMENT_USER_1={ad_username}
|
|
198
|
+
ENTITLEMENT_USER_2={ad_username}-2
|
|
199
|
+
IMAGE_USER_NAME={ad_username}
|
|
200
|
+
IMAGE_PASSWORD={ad_password}
|
|
201
|
+
VM_USER_NAME={ad_username}
|
|
202
|
+
VM_PASSWORD={ad_password}
|
|
203
|
+
DEPLOYMENT_ID=az-1
|
|
204
|
+
"""
|
|
205
|
+
f.write(config_block)
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
def _to_env_key(key):
|
|
209
|
+
ACRONYMS = {"BIOS", "CIDR"}
|
|
210
|
+
key_snake = re.sub(r"(?<!^)(?=[A-Z])", "_", key).upper()
|
|
211
|
+
for acronym in ACRONYMS:
|
|
212
|
+
key_snake = re.sub(r"_".join(acronym), acronym, key_snake)
|
|
213
|
+
return key_snake
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
def _organize_env_file(env_file):
|
|
217
|
+
group_rules = OrderedDict(
|
|
218
|
+
[
|
|
219
|
+
("Credentials (Optional):", ["HCS_CLIENT_ID", "HCS_CLIENT_SECRET"]),
|
|
220
|
+
("Identity Provider (IDP) Configuration", ["IDP_USER_NAME", "IDP_PASSWORD", "IDP_TENANT_DOMAIN"]),
|
|
221
|
+
(
|
|
222
|
+
"AD Configuration",
|
|
223
|
+
[
|
|
224
|
+
"DNS_DOMAIN_NAME",
|
|
225
|
+
"NET_BIOS_NAME",
|
|
226
|
+
"PRIMARY_JOIN_USER_NAME",
|
|
227
|
+
"PRIMARY_JOIN_PASSWORD",
|
|
228
|
+
"AUXILIARY_JOIN_USER_NAME",
|
|
229
|
+
"AUXILIARY_JOIN_PASSWORD",
|
|
230
|
+
"PRIMARY_BIND_USER_NAME",
|
|
231
|
+
"PRIMARY_BIND_PASSWORD",
|
|
232
|
+
"AUXILIARY_BIND_USER_NAME",
|
|
233
|
+
"AUXILIARY_BIND_PASSWORD",
|
|
234
|
+
],
|
|
235
|
+
),
|
|
236
|
+
(
|
|
237
|
+
"Primary Provider Configuration",
|
|
238
|
+
["PROVIDER_LABEL", "SUBSCRIPTION_ID", "DIRECTORY_ID", "APPLICATION_ID", "APPLICATION_KEY", "REGION"],
|
|
239
|
+
),
|
|
240
|
+
("Resource and Network Configuration", ["DESKTOP_RESOURCE_GROUP", "INFRA_RESOURCE_GROUP", "DESKTOP_VNET", "INFRA_VNET"]),
|
|
241
|
+
(
|
|
242
|
+
"Subnet",
|
|
243
|
+
[
|
|
244
|
+
"DMZ_SUBNET",
|
|
245
|
+
"DMZ_SUBNET_CIDR",
|
|
246
|
+
"DESKTOP_SUBNET",
|
|
247
|
+
"DESKTOP_SUBNET_CIDR",
|
|
248
|
+
"MANAGEMENT_SUBNET",
|
|
249
|
+
"MANAGEMENT_SUBNET_CIDR",
|
|
250
|
+
"TENANT_SUBNET",
|
|
251
|
+
"TENANT_SUBNET_CIDR",
|
|
252
|
+
],
|
|
253
|
+
),
|
|
254
|
+
("Resource Credentials", ["IMAGE_USER_NAME", "IMAGE_PASSWORD", "VM_USER_NAME", "VM_PASSWORD"]),
|
|
255
|
+
("UAG", ["UAG_FQDN"]),
|
|
256
|
+
("Entitlement", ["ENTITLEMENT_USER_1", "ENTITLEMENT_USER_2"]),
|
|
257
|
+
("Deployment ID", ["DEPLOYMENT_ID"]),
|
|
258
|
+
("Org", ["ORG_ID"]),
|
|
259
|
+
]
|
|
260
|
+
)
|
|
261
|
+
|
|
262
|
+
with open(env_file, "r") as f:
|
|
263
|
+
lines = f.readlines()
|
|
264
|
+
|
|
265
|
+
env_dict = {line.split("=", 1)[0].strip(): line.split("=", 1)[1].strip() for line in lines if "=" in line and not line.startswith("#")}
|
|
266
|
+
|
|
267
|
+
grouped_env = defaultdict(list)
|
|
268
|
+
ungrouped = []
|
|
269
|
+
|
|
270
|
+
for key, value in env_dict.items():
|
|
271
|
+
found = False
|
|
272
|
+
for group, keys in group_rules.items():
|
|
273
|
+
if key in keys:
|
|
274
|
+
grouped_env[group].append(f"{key}={value}")
|
|
275
|
+
found = True
|
|
276
|
+
break
|
|
277
|
+
if not found:
|
|
278
|
+
ungrouped.append(f"{key}={value}")
|
|
279
|
+
|
|
280
|
+
organized_lines = []
|
|
281
|
+
for group, items in grouped_env.items():
|
|
282
|
+
organized_lines.append(f"# {group}")
|
|
283
|
+
organized_lines.extend(items)
|
|
284
|
+
organized_lines.append("")
|
|
285
|
+
|
|
286
|
+
if ungrouped:
|
|
287
|
+
organized_lines.append("# Other Variables")
|
|
288
|
+
organized_lines.extend(ungrouped)
|
|
289
|
+
|
|
290
|
+
with open(env_file, "w") as f:
|
|
291
|
+
f.write("\n".join(organized_lines))
|