hcs-cli 0.1.349__tar.gz → 0.1.352__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.349 → hcs_cli-0.1.352}/PKG-INFO +2 -2
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/__init__.py +1 -1
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/logout.py +1 -0
- hcs_cli-0.1.352/hcs_cli/cmds/user/__init__.py +5 -0
- hcs_cli-0.1.352/hcs_cli/cmds/user/auth/__init__.py +3 -0
- hcs_cli-0.1.352/hcs_cli/cmds/user/auth/details.py +11 -0
- hcs_cli-0.1.352/hcs_cli/cmds/user/auth/refresh.py +11 -0
- hcs_cli-0.1.352/hcs_cli/cmds/user/auth/status.py +11 -0
- hcs_cli-0.1.352/hcs_cli/cmds/user/auth/token.py +11 -0
- hcs_cli-0.1.352/hcs_cli/cmds/user/desktop/__init__.py +3 -0
- hcs_cli-0.1.352/hcs_cli/cmds/user/desktop/launch.py +12 -0
- hcs_cli-0.1.352/hcs_cli/cmds/user/desktop/list.py +11 -0
- hcs_cli-0.1.352/hcs_cli/cmds/user/desktop/restart.py +12 -0
- hcs_cli-0.1.352/hcs_cli/cmds/user/login.py +15 -0
- hcs_cli-0.1.352/hcs_cli/cmds/user/logout.py +11 -0
- hcs_cli-0.1.352/hcs_cli/cmds/user/session/__init__.py +3 -0
- hcs_cli-0.1.352/hcs_cli/cmds/user/session/list.py +11 -0
- hcs_cli-0.1.352/hcs_cli/cmds/user/session/logoff.py +12 -0
- hcs_cli-0.1.352/hcs_cli/service/auth/__init__.py +1 -0
- hcs_cli-0.1.352/hcs_cli/service/auth/user.py +53 -0
- hcs_cli-0.1.352/hcs_cli/service/portal/__init__.py +1 -0
- hcs_cli-0.1.352/hcs_cli/service/portal/user.py +84 -0
- hcs_cli-0.1.352/hcs_cli/support/user_auth.py +96 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/pyproject.toml +4 -1
- hcs_cli-0.1.349/hcs_cli/service/auth/__init__.py +0 -1
- hcs_cli-0.1.349/hcs_cli/service/portal/__init__.py +0 -1
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/.gitignore +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/README.md +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/__main__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/activity/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/activity/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/activity/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/ad/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/ad/create.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/ad/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/ad/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/ad/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/admin/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/admin/azure_infra/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/admin/azure_infra/main.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/api.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/app/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/app/create.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/app/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/app/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/app/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/app/update.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/app/use.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/auth/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/auth/admin/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/auth/admin/get_org_idp_map.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/auth/admin/network/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/auth/admin/network/add.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/auth/user/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/auth/user/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/clouddriver/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/clouddriver/provider.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/clouddriver/service.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/clouddriver/task.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/credential/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/credential/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/cs/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/cs/base.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/daas/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/daas/infra/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/daas/infra/basic.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/daas/infra/plan.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/daas/order/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/daas/order/create.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/daas/order/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/daas/order/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/daas/order/update.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/daas/tenant/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/daas/tenant/consumption.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/daas/tenant/create.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/daas/tenant/plan.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/debug/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/debug/prepare.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/debug/reset.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/debug/start.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/emqx.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/auth.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/clear.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/helper/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/helper/config.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/helper/credential_helper.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/helper/init_steps.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/helper/jenkins_util.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/helper/k8s_util.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/helper/license_info.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/helper/mqtt_certs.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/helper/required_fields.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/helper/step_util.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/helper/subscription_util.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/helper/util.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/init.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/profiler.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/provided_files/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/provided_files/akka.plan.yml +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/provided_files/azsim.plan.yml +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/provided_files/azure.plan.yml +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/provided_files/mqtt-secret.yaml +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/provided_files/mqtt-server-external.yaml +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/provided_files/patch-mqtt-hostname.yml +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/provided_files/patch-vernemq-ssl-depth.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/fs/tailor.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/mqtt.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/onboard.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/test.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/util/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/util/github_helper.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/util/log.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/dev/util/mqtt_helper.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/diagnostics/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/diagnostics/diagnose.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/edge/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/edge/connection_string.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/edge/create.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/edge/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/edge/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/edge/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/edge/log.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/edge/use.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/edge/wait.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/entitlement/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/entitlement/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/entitlement/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/entitlement/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/hoc/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/hoc/search.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/hoc/stats.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/hoc/util/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/hoc/util/inv_cache.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/hst/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/hst/clean.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/hst/cloud/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/hst/cloud/health.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/hst/cloud/perf.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/hst/cloud/scale.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/hst/installer.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/hst/key.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/hst/outpost.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/hst/probe.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/hst/report.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/hst/test.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/ims/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/ims/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/ims/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/ims/gold_pattern/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/ims/gold_pattern/create.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/ims/gold_pattern/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/ims/gold_pattern/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/ims/gold_pattern/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/ims/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/ims/list_copies.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/ims/version/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/ims/version/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/ims/version/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/ims/version/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/inspect.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/inventory/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/inventory/assign.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/inventory/count.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/inventory/deassign.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/inventory/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/inventory/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/inventory/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/inventory/logoff.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/inventory/session.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/inventory/update.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/iss/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/iss/mqtt.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/health.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/provider/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/provider/create.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/provider/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/provider/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/provider/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/register.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/template/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/template/cancel.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/template/create.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/template/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/template/expand.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/template/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/template/health.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/template/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/template/provision.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/template/retry.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/template/update.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/template/use.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/template/wait.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/test.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/vm/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/vm/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/vm/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/vm/pair.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/vm/pairing_info.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/vm/power.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/vm/put.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/lcm/vm/wait.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/log.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/login.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/mcp.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/org/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/org/datacenter/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/org/datacenter/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/org/datacenter/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/org/details/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/org/ff.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/org/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/org/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/org/location.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/org/use.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/pki/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/pki/ca.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/pki/cert/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/pki/cert/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/pki/cert/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/pki/sign.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/pki/test.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/plan/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/plan/apply.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/plan/clear.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/plan/destroy.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/plan/graph.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/plan/input.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/plan/output.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/plan/resolve.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/plan/use.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/pool/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/pool/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/pool/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/pool/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/pool/update.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/pool/use.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/profile/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/profile/init.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/provider/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/provider/create.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/provider/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/provider/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/provider/golden_images.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/provider/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/provider/use.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/provider/vsphere_dcs.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/query.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/scm/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/scm/health.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/scm/operator.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/scm/plan.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/scm/recommend.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/scm/template.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/site/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/site/create.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/site/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/site/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/site/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/site/set-edge.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/site/use.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/synt/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/synt/outpost/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/synt/outpost/create.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/synt/outpost/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/synt/outpost/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/synt/outpost/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/synt/outpost/update.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/synt/probe/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/synt/probe/create.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/synt/probe/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/synt/probe/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/synt/probe/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/synt/probe/run.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/synt/probe/update.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/synt/report/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/synt/report/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/synt/report/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/synt/report/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/task.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/template/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/template/create.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/template/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/template/expand.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/template/fix.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/template/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/template/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/template/list_usage.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/template/update.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/template/usage.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/template/use.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/template/wait.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/test.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/uag/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/uag/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/uag/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/uag/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/upgrade.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vm/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vm/actions.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vm/delete.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vm/get.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vm/list.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vm/log.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vm/pairing_info.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vm/put.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vm/use.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vm/wait.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vmhub/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vmhub/info.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vmhub/otp/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vmhub/otp/redeem.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vmhub/otp/request.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vmm/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vmm/restart_vms.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vmm/rootca_edge_migration_stats.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vmm/rootca_edge_rotate_certs.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vmm/rootca_migrate.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vmm/rootca_migrate_edge.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/vmm/rootca_template_migration_stats.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/workflows/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/cmds/workflows/mqtt-endpoints.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/config/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/config/hcs-deployments.yaml +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/main.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/mcp/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/mcp/resources/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/mcp/resources/ad.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/mcp/resources/edge.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/mcp/resources/entitlement.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/mcp/resources/pool.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/mcp/resources/provider.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/mcp/resources/site.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/mcp/resources/template.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/mcp/resources/uag.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/mcp/resources/vm.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/mcp/server.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/akka.blueprint.yml +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/app/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/app/manual.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/edge/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/edge/akka.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/edge/vsphere.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/hoc/lcm-capcalc.json.template +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/hoc/logs.jsont +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/hoc/no-spare.json.template +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/inventory/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/inventory/assign.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/inventory/deassign.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/iss/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/akka.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/azure-dummy.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/azure-real.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/edge-proxy.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/zero-dedicated.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/zero-delay-1m-per-vm.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/zero-fail-delete-template.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/zero-fail-destroy-onthread.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/zero-fail-destroy.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/zero-fail-prepare-onthread.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/zero-fail-prepare.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/zero-fail-vm-onthread.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/zero-fail-vm.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/zero-floating.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/zero-legacy.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/zero-manual.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/zero-multisession.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/zero-nanw.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/zero-new-5k-delay.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/zero-new-5k.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/zero-new-snapshot.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/zero-reuse-vm-id.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/zero-with-max-id-offset.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/lcm/zero.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/provider/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/provider/ad-stes-vsphere.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/provider/akka.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/provider/azure.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/provider/edgeproxy.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/provider/vsphere.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/scm/starter.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/core/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/core/p01-dummy-success.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/core/p02-dummy-fail.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/core/p03-dummy-exception.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/core/p04-dummy-success-repeat.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/core/p05-dummy-fail-repeat.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/core/p06-dummy-exception-repeat.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/core/p07-dummy-delay.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/core/p08-dummy-property.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/ext/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/ext/p20-connect-success.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/ext/p21-connect-fail.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/ext/p30-ssl-success.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/ext/p31-ssl-fail.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/ext/p40-http-success.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/ext/p41-http-fail.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/ext/p42-http-status-code.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/ext1/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/ext1/p10-ping-success.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/ext1/p11-ping-fail.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/synt/ext1/p12-ping-success-repeat.json +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/payload/template/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/_prepare.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/ad.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/av_entitlement.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/av_fs.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/cert.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/edge.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/entitlement.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/gold_pattern.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/identity_provider.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/image.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/import_av_app.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/manual_app.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/pool_group.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/pool_template.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/provider.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/runtime/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/runtime/password.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/runtime/wait_for.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/site.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/provider/hcs/uag.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/activity.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/admin/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/admin/ad.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/admin/azure_infra.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/admin/edge.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/admin/helper.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/admin/provider.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/admin/template.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/admin/uag.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/admin/vm.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/api.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/app_management/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/app_management/manual_app.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/auth/admin.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/av/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/av/app.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/av/avimport.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/av/entitlements.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/av/fileshare.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/clouddriver/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/clouddriver/provider.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/clouddriver/service.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/credential/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/credential/credential.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/credential/nls.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/cs/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/cs/base.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/csp.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/diagnostics/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/diagnostics/edge.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/edge.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/edgehub/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/edgehub/edgecontroller.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/edgehub/edgetwin.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/graphql.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/hoc/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/hoc/diagnostic.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/hoc/es.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/ims/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/ims/gold_pattern.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/ims/helper.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/ims/image_copies.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/ims/images.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/ims/version.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/inventory/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/inventory/session.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/inventory/vm.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/iss/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/iss/mqtt.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/lcm/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/lcm/health.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/lcm/provider.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/lcm/template.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/lcm/vm.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/org_service/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/org_service/datacenter.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/org_service/details.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/org_service/orglocationmapping.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/pki/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/pki/certificate.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/pool.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/portal/entitlement.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/portal/pool.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/portal/site.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/scm/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/scm/base.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/scm/operator.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/scm/plan.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/site.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/synt/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/synt/outpost.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/synt/probe.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/synt/report.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/task.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/template.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/tsctl/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/tsctl/base.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/tsctl/task.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/uag.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/vm.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/vmhub/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/vmhub/credentials.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/vmhub/mqtt.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/vmm/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/vmm/dct.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/service/vmm/hoc_event.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/__init__.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/constant.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/debug_util.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/exec_util.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/inspect_util.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/log/env.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/log/message_parser.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/log/query_builder.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/log/search.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/param_util.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/patch_util.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/plan_util.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/predefined_payload.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/profile.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/readonly.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/scm/html_util.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/scm/plan-editor.html.template +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/scm/plan_editor.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/template_util.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/test_utils.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/test_utils2.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/hcs_cli/support/use_util.py +0 -0
- {hcs_cli-0.1.349 → hcs_cli-0.1.352}/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.352
|
|
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.352
|
|
18
18
|
Requires-Dist: inquirerpy>=0.3.4
|
|
19
19
|
Requires-Dist: paho-mqtt>=2.1.0
|
|
20
20
|
Requires-Dist: reportlab>=4.0.0
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"""Generate desktop spec for authenticated HCS end user."""
|
|
2
|
+
|
|
3
|
+
import click
|
|
4
|
+
|
|
5
|
+
from hcs_cli.service import portal
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@click.command()
|
|
9
|
+
@click.argument("desktop_id", type=str, required=True)
|
|
10
|
+
def launch(desktop_id: str):
|
|
11
|
+
"""Generate dspec for DESKTOP_ID from 'hcs user desktop list'."""
|
|
12
|
+
return portal.user.launch(desktop_id)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""List desktops available to authenticated HCS end user."""
|
|
2
|
+
|
|
3
|
+
import click
|
|
4
|
+
|
|
5
|
+
from hcs_cli.service import portal
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@click.command()
|
|
9
|
+
def list():
|
|
10
|
+
"""List desktop and application entitlements for logged-in user."""
|
|
11
|
+
return portal.user.list_desktops()
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"""Restart authenticated HCS end-user desktop."""
|
|
2
|
+
|
|
3
|
+
import click
|
|
4
|
+
|
|
5
|
+
from hcs_cli.service import portal
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@click.command()
|
|
9
|
+
@click.argument("desktop_id", type=str, required=True)
|
|
10
|
+
def restart(desktop_id: str):
|
|
11
|
+
"""Restart DESKTOP_ID from 'hcs user desktop list'."""
|
|
12
|
+
return portal.user.restart(desktop_id)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"""Authenticate an HCS end user."""
|
|
2
|
+
|
|
3
|
+
import click
|
|
4
|
+
|
|
5
|
+
from hcs_cli.support import user_auth
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@click.command()
|
|
9
|
+
@click.option("--idp", "-i", required=True, help="IDP tenant domain configured in HCS Auth.")
|
|
10
|
+
@click.option("--username", "-u", required=True, help="User principal name.")
|
|
11
|
+
@click.option("--password", "-p", required=True, help="User password.")
|
|
12
|
+
def login(idp: str, username: str, password: str):
|
|
13
|
+
"""Authenticate an end user and show login status."""
|
|
14
|
+
user_auth.login(idp, username, password)
|
|
15
|
+
return user_auth.status()
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"""Log off authenticated HCS end-user session."""
|
|
2
|
+
|
|
3
|
+
import click
|
|
4
|
+
|
|
5
|
+
from hcs_cli.service import portal
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@click.command()
|
|
9
|
+
@click.argument("session_id", type=str, required=True)
|
|
10
|
+
def logoff(session_id: str):
|
|
11
|
+
"""Log off SESSION_ID."""
|
|
12
|
+
return portal.user.logoff(session_id)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from . import admin as auth, user as user
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"""HCS end-user authentication API."""
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
|
|
5
|
+
import httpx
|
|
6
|
+
|
|
7
|
+
from hcs_core.ctxp import CtxpException
|
|
8
|
+
from hcs_core.sglib.user_client import user_client
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def login(idp: str, username: str, password: str) -> dict:
|
|
12
|
+
"""Authenticate an end user through HCS Auth."""
|
|
13
|
+
try:
|
|
14
|
+
return (
|
|
15
|
+
user_client()
|
|
16
|
+
.post(
|
|
17
|
+
"/auth/v1/authorize",
|
|
18
|
+
json={"userName": username, "password": password, "idpTenantDomain": idp},
|
|
19
|
+
authenticated=False,
|
|
20
|
+
)
|
|
21
|
+
.json()
|
|
22
|
+
)
|
|
23
|
+
except httpx.HTTPStatusError as error:
|
|
24
|
+
raise CtxpException(f"HCS user login failed: HTTP {error.response.status_code}") from error
|
|
25
|
+
except httpx.RequestError as error:
|
|
26
|
+
raise CtxpException(f"HCS user login failed: {error}") from error
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def logout(
|
|
30
|
+
idp: str,
|
|
31
|
+
post_logout_uri: str,
|
|
32
|
+
refresh_token: Optional[str],
|
|
33
|
+
id_token: str,
|
|
34
|
+
) -> dict:
|
|
35
|
+
"""Log out an end user through HCS Auth."""
|
|
36
|
+
try:
|
|
37
|
+
return (
|
|
38
|
+
user_client()
|
|
39
|
+
.post(
|
|
40
|
+
"/auth/v2/client/users/logout",
|
|
41
|
+
json={
|
|
42
|
+
"idpTenantDomain": idp,
|
|
43
|
+
"postLogoutUri": post_logout_uri,
|
|
44
|
+
"refreshToken": refresh_token,
|
|
45
|
+
"idToken": id_token,
|
|
46
|
+
},
|
|
47
|
+
)
|
|
48
|
+
.json()
|
|
49
|
+
)
|
|
50
|
+
except httpx.HTTPStatusError as error:
|
|
51
|
+
raise CtxpException(f"HCS user logout failed: HTTP {error.response.status_code}") from error
|
|
52
|
+
except httpx.RequestError as error:
|
|
53
|
+
raise CtxpException(f"HCS user logout failed: {error}") from error
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from . import entitlement, pool, site, user
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"""Portal APIs for the authenticated end user."""
|
|
2
|
+
|
|
3
|
+
import httpx
|
|
4
|
+
|
|
5
|
+
from hcs_core.ctxp import CtxpException
|
|
6
|
+
from hcs_core.sglib.user_client import user_client
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def list_desktops() -> list[dict]:
|
|
10
|
+
"""Return desktop and application entitlements for the logged-in user."""
|
|
11
|
+
try:
|
|
12
|
+
result = user_client().get("/portal/v3/users/launchitems").json()
|
|
13
|
+
except httpx.HTTPStatusError as error:
|
|
14
|
+
raise CtxpException(f"Failed to list HCS user desktops: HTTP {error.response.status_code}") from error
|
|
15
|
+
except httpx.RequestError as error:
|
|
16
|
+
raise CtxpException(f"Failed to list HCS user desktops: {error}") from error
|
|
17
|
+
|
|
18
|
+
if not isinstance(result, list):
|
|
19
|
+
raise CtxpException("HCS user desktops response was not a list")
|
|
20
|
+
return result
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def list_sessions() -> list[dict]:
|
|
24
|
+
"""Return active sessions for logged-in user."""
|
|
25
|
+
try:
|
|
26
|
+
result = user_client().get("/portal/v2/users/sessions").json()
|
|
27
|
+
except httpx.HTTPStatusError as error:
|
|
28
|
+
raise CtxpException(f"Failed to list HCS user sessions: HTTP {error.response.status_code}") from error
|
|
29
|
+
except httpx.RequestError as error:
|
|
30
|
+
raise CtxpException(f"Failed to list HCS user sessions: {error}") from error
|
|
31
|
+
|
|
32
|
+
if not isinstance(result, list):
|
|
33
|
+
raise CtxpException("HCS user sessions response was not a list")
|
|
34
|
+
return result
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def launch(desktop_id: str) -> dict:
|
|
38
|
+
"""Generate a desktop spec for an entitled desktop."""
|
|
39
|
+
desktop = next((item for item in list_desktops() if item.get("id") == desktop_id), None)
|
|
40
|
+
if not desktop:
|
|
41
|
+
raise CtxpException(f"HCS user desktop not found: {desktop_id}")
|
|
42
|
+
if desktop.get("entitlementType") != "DESKTOP":
|
|
43
|
+
raise CtxpException(f"HCS user launch item is not a desktop: {desktop_id}")
|
|
44
|
+
|
|
45
|
+
body = {"entitlementId": desktop_id, "nativeClient": False}
|
|
46
|
+
vm = desktop.get("vm") or {}
|
|
47
|
+
if vm.get("templateId"):
|
|
48
|
+
body["templateId"] = vm["templateId"]
|
|
49
|
+
if vm.get("vmId"):
|
|
50
|
+
body["vmId"] = vm["vmId"]
|
|
51
|
+
|
|
52
|
+
try:
|
|
53
|
+
return user_client().post("/portal/v3/users/spec", json=body).json()
|
|
54
|
+
except httpx.HTTPStatusError as error:
|
|
55
|
+
raise CtxpException(f"Failed to launch HCS user desktop: HTTP {error.response.status_code}") from error
|
|
56
|
+
except httpx.RequestError as error:
|
|
57
|
+
raise CtxpException(f"Failed to launch HCS user desktop: {error}") from error
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def perform_action(resource_id: str, action: str) -> dict:
|
|
61
|
+
"""Request a supported action for an end-user desktop or session."""
|
|
62
|
+
body = {"id": resource_id, "actionType": action}
|
|
63
|
+
try:
|
|
64
|
+
response = user_client().post("/portal/v2/users/action", json=body)
|
|
65
|
+
return {
|
|
66
|
+
"id": resource_id,
|
|
67
|
+
"actionType": action,
|
|
68
|
+
"status": "SUCCESS" if response.status_code == 201 else "PENDING",
|
|
69
|
+
"statusUrl": response.headers.get("Location"),
|
|
70
|
+
}
|
|
71
|
+
except httpx.HTTPStatusError as error:
|
|
72
|
+
raise CtxpException(f"Failed HCS user {action.lower()}: HTTP {error.response.status_code}") from error
|
|
73
|
+
except httpx.RequestError as error:
|
|
74
|
+
raise CtxpException(f"Failed HCS user {action.lower()}: {error}") from error
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def logoff(session_id: str) -> dict:
|
|
78
|
+
"""Log off an end-user session."""
|
|
79
|
+
return perform_action(session_id, "LOGOFF")
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def restart(desktop_id: str) -> dict:
|
|
83
|
+
"""Restart an entitled end-user desktop."""
|
|
84
|
+
return perform_action(desktop_id, "RESTART")
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"""End-user authentication state and workflows."""
|
|
2
|
+
|
|
3
|
+
import time
|
|
4
|
+
|
|
5
|
+
import jwt
|
|
6
|
+
|
|
7
|
+
from hcs_core.ctxp import CtxpException, profile
|
|
8
|
+
from hcs_core.sglib.client_util import resolve_hcs_base_url
|
|
9
|
+
from hcs_core.sglib.user_client import refresh_user_tokens, user_access_token
|
|
10
|
+
|
|
11
|
+
from hcs_cli.service.auth import user as auth_service
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def auth_state() -> dict:
|
|
15
|
+
"""Return saved end-user authentication state for current profile."""
|
|
16
|
+
return profile.auth_user.get()
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def access_token() -> str:
|
|
20
|
+
"""Return valid saved end-user access token for current profile."""
|
|
21
|
+
return user_access_token()
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def token_details() -> dict:
|
|
25
|
+
"""Decode saved end-user JWT without verifying its signature."""
|
|
26
|
+
token = auth_state().get("access_token")
|
|
27
|
+
if not token:
|
|
28
|
+
raise CtxpException("HCS user is not logged in. Run 'hcs user login'.")
|
|
29
|
+
try:
|
|
30
|
+
return {
|
|
31
|
+
"header": jwt.get_unverified_header(token),
|
|
32
|
+
"payload": jwt.decode(token, options={"verify_signature": False}),
|
|
33
|
+
}
|
|
34
|
+
except jwt.PyJWTError as error:
|
|
35
|
+
raise CtxpException("Saved HCS user access token is not a valid JWT.") from error
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def status() -> dict:
|
|
39
|
+
"""Summarize current end-user authentication state."""
|
|
40
|
+
state = auth_state()
|
|
41
|
+
token = state.get("access_token")
|
|
42
|
+
if not token:
|
|
43
|
+
return {"loggedIn": False, "user": None, "orgId": None, "ttl": 0}
|
|
44
|
+
|
|
45
|
+
try:
|
|
46
|
+
payload = jwt.decode(token, options={"verify_signature": False})
|
|
47
|
+
except jwt.PyJWTError as error:
|
|
48
|
+
raise CtxpException("Saved HCS user access token is not a valid JWT.") from error
|
|
49
|
+
context = payload.get("context", {})
|
|
50
|
+
org_ids = context.get("orgIds") or []
|
|
51
|
+
expires_at = state.get("expires_at") or payload.get("exp") or 0
|
|
52
|
+
ttl = max(0, int(expires_at - time.time()))
|
|
53
|
+
return {
|
|
54
|
+
"loggedIn": ttl > 0,
|
|
55
|
+
"user": context.get("userPrincipalName") or context.get("userName"),
|
|
56
|
+
"orgId": org_ids[0] if org_ids else None,
|
|
57
|
+
"ttl": ttl,
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def login(idp: str, username: str, password: str) -> str:
|
|
62
|
+
"""Authenticate and persist end-user state for current profile."""
|
|
63
|
+
result = auth_service.login(idp, username, password)
|
|
64
|
+
token = result.get("access_token")
|
|
65
|
+
if not token:
|
|
66
|
+
raise CtxpException("HCS user login response did not contain access_token")
|
|
67
|
+
if result.get("expires_in") and not result.get("expires_at"):
|
|
68
|
+
result["expires_at"] = int(time.time() + result["expires_in"])
|
|
69
|
+
result["idpTenantDomain"] = idp
|
|
70
|
+
profile.auth_user.set(result)
|
|
71
|
+
return token
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def refresh() -> dict:
|
|
75
|
+
"""Refresh and persist end-user state for current profile."""
|
|
76
|
+
refresh_user_tokens()
|
|
77
|
+
return status()
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def logout() -> dict:
|
|
81
|
+
"""Log out and remove saved end-user state after remote success."""
|
|
82
|
+
user_access_token()
|
|
83
|
+
state = auth_state()
|
|
84
|
+
idp = state.get("idpTenantDomain")
|
|
85
|
+
id_token = state.get("id_token")
|
|
86
|
+
if not idp or not id_token:
|
|
87
|
+
raise CtxpException("Saved HCS user login lacks logout state. Run 'hcs user login' again.")
|
|
88
|
+
|
|
89
|
+
result = auth_service.logout(
|
|
90
|
+
idp,
|
|
91
|
+
resolve_hcs_base_url().rstrip("/"),
|
|
92
|
+
state.get("refresh_token"),
|
|
93
|
+
id_token,
|
|
94
|
+
)
|
|
95
|
+
profile.auth_user.delete()
|
|
96
|
+
return result
|
|
@@ -21,7 +21,7 @@ keywords = [
|
|
|
21
21
|
]
|
|
22
22
|
dynamic = ["version"]
|
|
23
23
|
dependencies = [
|
|
24
|
-
"hcs-core>=0.1.
|
|
24
|
+
"hcs-core>=0.1.352",
|
|
25
25
|
"reportlab>=4.0.0",
|
|
26
26
|
"InquirerPy>=0.3.4",
|
|
27
27
|
"paho-mqtt>=2.1.0"
|
|
@@ -80,6 +80,9 @@ exclude = [
|
|
|
80
80
|
line-length = 140
|
|
81
81
|
target-version = "py39"
|
|
82
82
|
|
|
83
|
+
[tool.ruff.lint]
|
|
84
|
+
ignore = ["F401"]
|
|
85
|
+
|
|
83
86
|
[tool.pytest.ini_options]
|
|
84
87
|
testpaths = ["tests"]
|
|
85
88
|
python_files = ["test_*.py"]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
from . import admin
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
from . import entitlement, pool, site
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|