CLI Reference#

The deployer CLI contains a set of useful tools for deploying and maintaining our infrastructure.

deployer#

deployer Usage: deployer [OPTIONS] COMMAND [ARGS]... ╭─ Options ─────────────────────────────────────────────────────╮ --install-completionInstall completion for the      current shell.                  --show-completionShow completion for the current shell, to copy it or customize  the installation.               --helpShow this message and exit.     ╰───────────────────────────────────────────────────────────────╯ ╭─ Continuous Deployment ───────────────────────────────────────╮ deploy-dashboards      Deploy Grafana dashboards to a       cluster's Grafana instance. This is  done via Grafana's REST API,         authorized by using a previously     generated Grafana service account's  access token.                        deploy-support         Deploy support components to a       cluster                              deploy                 Deploy one or more hubs in a given   cluster                              run-hub-health-check   Run a health check on a given hub on a given cluster. Optionally check    scaling of dask workers if the hub   is a daskhub.                        plan-health-check      Analyze added or modified files from a GitHub Pull Request and decide     which clusters and/or hubs require   health checks to be performed.       plan-upgrade           Analyze added or modified files and  labels from a GitHub Pull Request    and decide which clusters and/or     hubs require helm upgrades to be     performed for their *hub helm charts or the support helm chart.           validate               Validate configuration files such as helm chart values and cluster.yaml   files.                               ╰───────────────────────────────────────────────────────────────╯ ╭─ Development ─────────────────────────────────────────────────╮ use-cluster-credentialsPop a new shell or execute a command after authenticating to the given    cluster using the deployer's         credentials                          decrypt-age            Decrypts information sent to 2i2c by community representatives using age according to instructions in 2i2c  documentation.                       generate               Generate various types of assets. It currently supports generating files  related to billing, new dedicated    clusters, helm upgrade strategies    and resource allocation.             config                 Get refined information from the     config folder.                       cilogon-client         Manage cilogon clients for hubs'     authentication.                      exec                   Execute a shell in various parts of  the infra. It can be used for poking around, or debugging issues.         debug                  Debug issues by accessing different  components and their logs            grafana                Manages Grafana related workflows.   transform              Programmatically transform datasets, such as cost tables for billing      purposes.                            update                 Update existing resources, such as   clusters or configurations.          ╰───────────────────────────────────────────────────────────────╯

deploy-dashboards#

deploy-dashboards Usage: deployer deploy-dashboards [OPTIONS] CLUSTER_NAME Deploy Grafana dashboards to a cluster's Grafana instance. This is done via Grafana's REST API, authorized by using a           previously generated Grafana service account's access token.    The official JupyterHub dashboards are maintained in https://github.com/jupyterhub/grafana-dashboards along with a  python scriptto deploy them to Grafana via a REST API. The cost monitoring dashboards are maintained in  https://github.com/2i2c-org/jupyterhub-cost-monitoring and  currently available on AWS clusters only. The Grafonnet library needs to be cloned separately, even  though jupyterhub/grafana-dashboards includes this as a  submodule, because the library also needs to be accessed by  2i2c-org/jupyterhub-cost-monitoring too. ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of cluster to operate on    [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --dashboard-typeTEXT(Optional) Choose        'default' or 'cost'      dashboards to deploy.    Deploys both types if    None.                    --dashboard-dir-defaultTEXT(Optional) ./deploy.py   script accepts manual    override for where       JupyterHub default       dashboards are defined.  Path is relative to      jupyterhub-grafana-dash… script. Warning: you     should manually delete   dashboards deployed this way, since they are not  cleaned up in the CI/CD. [default: dashboards]    --dashboard-dir-costTEXT(Optional) ./deploy.py   script accepts manual    override where cloud     cost dashboards are      defined. Path is         relative to              jupyterhub-grafana-dash… script. Warning: you     should manually delete   dashboards deployed this way, since they are not  cleaned up in the CI/CD. [default:                ../jupyterhub-cost-moni… --helpShow this message and    exit.                    ╰───────────────────────────────────────────────────────────────╯

deploy-support#

deploy-support Usage: deployer deploy-support [OPTIONS] CLUSTER_NAME Deploy support components to a cluster                          ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of cluster to operate on    [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --cert-manager-versionTEXTVersion of cert-manager   to install                [default: v1.20.2]        --debugWhen present, the --debug flag will be passed to    the helm upgrade command. --dry-runWhen present, the         --dry-run flag will be    passed to the helm  upgrade command.          --skip-crdsWhen present, the         --skip-crds flag will     cause the deployer to     skip external CRD         deployments.              --helpShow this message and     exit.                     ╰───────────────────────────────────────────────────────────────╯

deploy#

deploy Usage: deployer deploy [OPTIONS] CLUSTER_NAME [HUB_NAME] Deploy one or more hubs in a given cluster                      ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXT      Name of cluster to operate on                         [required]                 hub_name    [HUB_NAME]Name of hub to operate     deploy. Omit to deploy all hubs on the cluster        ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --debugWhen present, the --debug flag will   be passed to the helm upgrade command.                              --dry-runWhen present, the --dry-run flag will be passed to the helm upgrade command.                              --skip-refreshWhen present, the helm charts and     schemas will not be updated.          --helpShow this message and exit.           ╰───────────────────────────────────────────────────────────────╯

run-hub-health-check#

run-hub-health-check Usage: deployer run-hub-health-check [OPTIONS] CLUSTER_NAME                                      HUB_NAME Run a health check on a given hub on a given cluster.           Optionally check scaling of dask workers if the hub is a        daskhub.                                                        ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of cluster to operate on    [required]                       *hub_name    TEXTName of hub to operate on        [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --check-dask-sca…--no-check-dask-…Check that dask   workers can be    scaled            [default:         no-check-dask-sc… --helpShow this message and exit.         ╰───────────────────────────────────────────────────────────────╯

plan-health-check#

plan-health-check Usage: deployer plan-health-check [OPTIONS] CHANGED_FILEPATHS Analyze added or modified files from a GitHub Pull Request and  decide which clusters and/or hubs require health checks to be   performed.                                                      ╭─ Arguments ───────────────────────────────────────────────────╮ *changed_filepathsTEXTComma delimited list of     files that have changed     [required]                  ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

plan-upgrade#

plan-upgrade Usage: deployer plan-upgrade [OPTIONS] CHANGED_FILEPATHS                              [PR_LABELS] Analyze added or modified files and labels from a GitHub Pull   Request and decide which clusters and/or hubs require helm      upgrades to be performed for their *hub helm charts or the      support helm chart.                                             ╭─ Arguments ───────────────────────────────────────────────────╮ *changed_filepathsTEXT       Comma delimited list of files that have   changed              [required]           pr_labels        [PR_LABELS]JSON formatted list  of PR labels, where  'deployer:skip-depl… 'deployer:skip-depl… 'deployer:deploy-su… and                  'deployer:deploy-hu… are respected.       [default: []]        ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

use-cluster-credentials#

use-cluster-credentials Usage: deployer use-cluster-credentials [OPTIONS] CLUSTER_NAME                                         [COMMANDLINE] Pop a new shell or execute a command after authenticating to    the given cluster using the deployer's credentials              ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXT         Name of cluster to      operate on              [required]              commandline [COMMANDLINE]Optional shell command  line to run after       authenticating to this  cluster                 ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

decrypt-age#

decrypt-age Usage: deployer decrypt-age [OPTIONS] Decrypts information sent to 2i2c by community representatives  using age according to instructions in 2i2c documentation.      ╭─ Options ─────────────────────────────────────────────────────╮ --encrypted-file-pathTEXTPath to age-encrypted file sent by user. Leave empty  to read from stdin.        --helpShow this message and      exit.                      ╰───────────────────────────────────────────────────────────────╯

validate#

validate Usage: deployer validate [OPTIONS] COMMAND [ARGS]... Validate configuration files such as helm chart values and      cluster.yaml files.                                             ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯ ╭─ Commands ────────────────────────────────────────────────────╮ support-configValidates the provided non-encrypted helm     chart values files for the support chart of a specific cluster.                             cluster-configValidates cluster.yaml configuration against  a JSONSchema.                                 all-hub-configValidates the provided non-encrypted helm     chart values files and the authenticator      configuration for each hub of a specific      cluster.                                      ╰───────────────────────────────────────────────────────────────╯

support-config#

support-config Usage: deployer validate support-config [OPTIONS] CLUSTER_NAME Validates the provided non-encrypted helm chart values files    for the support chart of a specific cluster.                    ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of cluster to operate on    [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --debug--no-debugEnable verbose       output               [default: no-debug]  --skip-refresh--no-skip-refreshSkip the helm dep    update               [default:            no-skip-refresh]     --helpShow this message    and exit.            ╰───────────────────────────────────────────────────────────────╯

cluster-config#

cluster-config Usage: deployer validate cluster-config [OPTIONS] CLUSTER_NAME Validates cluster.yaml configuration against a JSONSchema.      ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of cluster to operate on    [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

all-hub-config#

all-hub-config Usage: deployer validate all-hub-config [OPTIONS] CLUSTER_NAME                                         [HUB_NAME] Validates the provided non-encrypted helm chart values files    and the authenticator configuration for each hub of a specific  cluster.                                                        ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXT      Name of cluster to operate on                         [required]                 hub_name    [HUB_NAME]Name of hub to operate on  ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --skip-refresh--no-skip-refreshSkip the helm dep    update               [default:            no-skip-refresh]     --debug--no-debugEnable verbose       output               [default: no-debug]  --helpShow this message    and exit.            ╰───────────────────────────────────────────────────────────────╯

generate#

generate Usage: deployer generate [OPTIONS] COMMAND [ARGS]... Generate various types of assets. It currently supports         generating files related to billing, new dedicated clusters,    helm upgrade strategies and resource allocation.                ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯ ╭─ Commands ────────────────────────────────────────────────────╮ cost-table             Generate table with cloud costs for  all GCP projects we pass costs       through for.                         cryptnono-secret-configUpdate the secret blocklist for      cryptnono                            replicas               Scale up user placeholders to        reserve capacity via N user          placeholders                         dedicated-cluster      Generate the initial files needed    for a new cluster on GCP or AWS.     hub-asset              Generate various hub assets to make  deploying a new hub easier           resource-allocation    Generate the choices for a resource  allocation strategy of an instance   type and additional helper           information                          ╰───────────────────────────────────────────────────────────────╯

cost-table#

cost-table Usage: deployer generate cost-table [OPTIONS] Generate table with cloud costs for all GCP projects we pass    costs through for.                                              ╭─ Options ─────────────────────────────────────────────────────╮ --start-month[%Y-%m]Starting month    (as YYYY-MM) to   produce cost data for. Defaults to  3 invoicing       months ago.       [default:         2026-02-01        15:16:15.019047]  --end-month[%Y-%m]Ending month (as  YYYY-MM) to       produce cost data for. Defaults to  previous          invoicing month   [default:         2026-04-30        15:16:15.019149]  --output[terminal|google-Where to output   sheet]the cost table to [default:         terminal]         --google-sheet-u…TEXT             Write to given    Google Sheet URL. Used when         --output is       google-sheet.     billing-spreadsh… should have       Editor rights on  this spreadsheet. [default:         https://docs.goo… --helpShow this message and exit.         ╰───────────────────────────────────────────────────────────────╯

cryptnono-secret-config#

cryptnono-secret-config Usage: deployer generate cryptnono-secret-config             [OPTIONS] Update the secret blocklist for cryptnono                       ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

replicas#

replicas Usage: deployer generate replicas [OPTIONS] [CLUSTER_NAME]                                   HUB_NAME REPLICAS Scale up user placeholders to reserve capacity via N user       placeholders                                                    ╭─ Arguments ───────────────────────────────────────────────────╮ cluster_name[CLUSTER_NAME]Name of cluster for    which to reserve       capacity               [default: 2i2c]        *hub_name    TEXT          Name of hub to operate on                     [required]             *replicas    INTEGER       [required] ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

dedicated-cluster#

dedicated-cluster Usage: deployer generate dedicated-cluster [OPTIONS] COMMAND                                            [ARGS]... Generate the initial files needed for a new cluster on GCP or   AWS.                                                            ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯ ╭─ Commands ────────────────────────────────────────────────────╮ awsAutomatically generate the files required to setup a new cluster on AWS if they don't exist. Use --force to force existing configuration files to be overwritten by this   command.                                                 gcpAutomatically generates the initial files, required to   setup a new cluster on GCP if they don't exist. Use      --force to force existing configuration files to be      overwritten by this command.                             ╰───────────────────────────────────────────────────────────────╯
aws#
aws Usage: deployer generate dedicated-cluster aws             [OPTIONS] Automatically generate the files required to setup a new        cluster on AWS if they don't exist. Use --force to force        existing configuration files to be overwritten by this command. ╭─ Options ─────────────────────────────────────────────────────╮ *--cluster-na…TEXT   [required] *--cluster-re…TEXT   [required] *--account-idINTEGER[required] *--paid-by-us--no-paid-by…[required] --hubsTEXT   [default:       staging,prod]   --forceWhether or not  to force the    override of the files that      already exist   --helpShow this       message and     exit.           ╰───────────────────────────────────────────────────────────────╯
gcp#
gcp Usage: deployer generate dedicated-cluster gcp             [OPTIONS] Automatically generates the initial files, required to setup a  new cluster on GCP if they don't exist. Use --force to force    existing configuration files to be overwritten by this command. ╭─ Options ─────────────────────────────────────────────────────╮ *--cluster-nameTEXT[required] *--cluster-reg…TEXT[required] *--project-idTEXT[required] --dask-nodes--no-dask-nodes[default:       no-dask-nodes]  --forceWhether or not  to force the    override of the files that      already exist   --helpShow this       message and     exit.           ╰───────────────────────────────────────────────────────────────╯

hub-asset#

hub-asset Usage: deployer generate hub-asset [OPTIONS] COMMAND [ARGS]... Generate various hub assets to make deploying a new hub easier  ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯ ╭─ Commands ────────────────────────────────────────────────────╮ cluster-entry           Outputs the relevant cluster.yaml   hub entry that the engineer can     then manually copy-paste into the   relevant cluster.yaml file.         common-values-file      Outputs the relevant                common.values.yaml hub file         contents that the engineer can then manually copy-paste into the        relevant values.yaml file.          main-values-file        Outputs the relevant                hub.values.yaml hub file contents   that the engineer can then manually copy-paste into the relevant        values.yaml file.                   binderhub-ui-values-fileOutputs the relevant                common.values.yaml hub file         contents that the engineer can then manually copy-paste into the        relevant values.yaml file.          ╰───────────────────────────────────────────────────────────────╯
cluster-entry#
cluster-entry Usage: deployer generate hub-asset cluster-entry             [OPTIONS] Outputs the relevant cluster.yaml hub entry that the engineer   can then manually copy-paste into the relevant cluster.yaml     file.                                                           ╭─ Options ─────────────────────────────────────────────────────╮ *--cluster-nameTEXT[required] *--hub-nameTEXT[required] --helpShow this message and exit.    ╰───────────────────────────────────────────────────────────────╯
common-values-file#
common-values-file Usage: deployer generate hub-asset common-values-file             [OPTIONS] Outputs the relevant common.values.yaml hub file contents that  the engineer can then manually copy-paste into the relevant     values.yaml file.                                               ╭─ Options ─────────────────────────────────────────────────────╮ *--providerTEXT[required] *--cluster-nameTEXT[required] *--authenticatorTEXT[required] *--logo-urlTEXT[required] *--urlTEXT[required] *--server-ipTEXT[required] *--funded-by-nameTEXT[required] *--funded-by-urlTEXT[required] --admin-usersTEXT --helpShow this message and exit.  ╰───────────────────────────────────────────────────────────────╯
main-values-file#
main-values-file Usage: deployer generate hub-asset main-values-file             [OPTIONS] Outputs the relevant hub.values.yaml hub file contents that the engineer can then manually copy-paste into the relevant         values.yaml file.                                               ╭─ Options ─────────────────────────────────────────────────────╮ *--providerTEXT[required] *--cluster-nameTEXT[required] *--hub-nameTEXT[required] --helpShow this message and exit.    ╰───────────────────────────────────────────────────────────────╯
binderhub-ui-values-file#
binderhub-ui-values-file Usage: deployer generate hub-asset binderhub-ui-values-file             [OPTIONS] Outputs the relevant common.values.yaml hub file contents that  the engineer can then manually copy-paste into the relevant     values.yaml file.                                               ╭─ Options ─────────────────────────────────────────────────────╮ *--cluster-nameTEXT[required] *--providerTEXT[required] *--jupyterhub-domainTEXT[required] *--binderhub-domainTEXT[required] --authenticatorTEXT[default: none] --banner-messageTEXT --about-messageTEXT --logo-urlTEXT --urlTEXT --funded-by-nameTEXT --funded-by-urlTEXT --helpShow this message and     exit.                     ╰───────────────────────────────────────────────────────────────╯

resource-allocation#

resource-allocation Usage: deployer generate resource-allocation [OPTIONS] COMMAND                                              [ARGS]... Generate the choices for a resource allocation strategy of an   instance type and additional helper information                 ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯ ╭─ Commands ────────────────────────────────────────────────────╮ daemonset-requests Updates daemonset_requests.yaml with an  individual cluster's DaemonSets'         requests summarized.                     choices            Generate a custom number of resource     allocation choices for a certain         instance type, depending on a certain    chosen strategy.                         instance-capacitiesUpdates instance_capacities.yaml with an individual cluster's running instance    types' total and allocatable capacity.   node-info-update   Generates a new entry holding info about the capacity of a node of a certain      instance type or updates an existing one that is then used to update a json file  called node-capacity-info.json. This     file is then used for generating the     resource choices.                        ╰───────────────────────────────────────────────────────────────╯
daemonset-requests#
daemonset-requests Usage: deployer generate resource-allocation daemonset-requests            [OPTIONS] CLUSTER_NAME Updates daemonset_requests.yaml with an individual cluster's    DaemonSets' requests summarized.                                Only DaemonSet's with running pods are considered, and GPU  relatedDaemonSets (with "nvidia" in the name) are also  ignored. To run this command for all clusters, xargs can be used like  this: deployer config get-clusters | xargs -I {} deployer generate  resource-allocation daemonset-requests {} ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of cluster to operate on    [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯
choices#
choices Usage: deployer generate resource-allocation choices             [OPTIONS] INSTANCE_SPECIFICATION... Generate a custom number of resource allocation choices for a   certain instance type, depending on a certain chosen strategy.  ╭─ Arguments ───────────────────────────────────────────────────╮ *instance_specif…INSTANCE_SPECIFIInstance type    CATION...       and number of    choices to       generate         Resource         Allocation       options for.     Specify as       instance_type:c… [required]       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --strategy[proportional-Strategy to use memory-strategfor generating  y]resource        allocation      choices choices [default:       proportional-m… --default--no-defaultSet a default   option          [default:       no-default]     --helpShow this       message and     exit.           ╰───────────────────────────────────────────────────────────────╯
instance-capacities#
instance-capacities Usage: deployer generate resource-allocation  instance-capacities             [OPTIONS] CLUSTER_NAME Updates instance_capacities.yaml with an individual cluster's   running instance types' total and allocatable capacity.         To run this command for all clusters, xargs can be used like  this: deployer config get-clusters | xargs -I {} deployer generate  resource-allocation instance-capacities {} ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of cluster to operate on    [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯
node-info-update#
node-info-update Usage: deployer generate resource-allocation node-info-update             [OPTIONS] INSTANCE_TYPE Generates a new entry holding info about the capacity of a node of a certain instance type or updates an existing one that is   then used to update a json file called node-capacity-info.json. This file is then used for generating the resource choices.     ╭─ Arguments ───────────────────────────────────────────────────╮ *instance_typeTEXTInstance type to generate       Resource Allocation options for [required]                      ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

config#

config Usage: deployer config [OPTIONS] COMMAND [ARGS]... Get refined information from the config folder.                 ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯ ╭─ Commands ────────────────────────────────────────────────────╮ get-clustersPrints all cluster names sorted alphabetically, optionally filtered by the 'provider' field in  the cluster.yaml file.                          ╰───────────────────────────────────────────────────────────────╯

get-clusters#

get-clusters Usage: deployer config get-clusters [OPTIONS] Prints all cluster names sorted alphabetically, optionally      filtered by the 'provider' field in the cluster.yaml file.      ╭─ Options ─────────────────────────────────────────────────────╮ --providerTEXT(Optional) Filter results to clusters with this provider specified.         --helpShow this message and exit.           ╰───────────────────────────────────────────────────────────────╯

cilogon-client#

cilogon-client Usage: deployer cilogon-client [OPTIONS] COMMAND [ARGS]... Manage cilogon clients for hubs' authentication.                ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯ ╭─ Commands ────────────────────────────────────────────────────╮ create Create a CILogon client for a hub.                   update Update the CILogon client of a hub.                  get    Retrieve details about an existing CILogon client.   get-allRetrieve details about all existing 2i2c CILogon     clients.                                             delete Delete an existing CILogon client. This deletes both the CILogon client application, and the client       credentials from the configuration file.             cleanupIdentify duplicated CILogon clients and which ID is  being actively used in config, and optionally delete unused duplicates.                                   ╰───────────────────────────────────────────────────────────────╯

create#

create Usage: deployer cilogon-client create [OPTIONS] CLUSTER_NAME                                       HUB_NAME HUB_DOMAIN Create a CILogon client for a hub.                              ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of cluster to operate on    [required]                       *hub_name    TEXTName of the hub for which we'll  create a CILogon client          [required]                       *hub_domain  TEXTThe hub domain, as specified in  cluster.yaml (ex:                staging.2i2c.cloud)              [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

update#

update Usage: deployer cilogon-client update [OPTIONS] CLUSTER_NAME                                       HUB_NAME Update the CILogon client of a hub.                             ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of cluster to operate on    [required]                       *hub_name    TEXTName of the hub for which we'll  update a CILogon client          [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --hub-domainTEXTThe hub domain, as specified in  cluster.yaml (ex:                staging.2i2c.cloud)              --client-idTEXTThe CILogon client id            --callback-urlsTEXTThe list of callback_urls        separated by a comma. Example:   https://{hub_domain}/hub/oauth_… https://auth.cloud/broker/cilog… --helpShow this message and exit.      ╰───────────────────────────────────────────────────────────────╯

get#

get Usage: deployer cilogon-client get [OPTIONS] CLUSTER_NAME                                    HUB_NAME Retrieve details about an existing CILogon client.              ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of cluster to operate on    [required]                       *hub_name    TEXTName of the hub for which we'll  retrieve the CILogon client      details                          [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --client-idTEXTThe CILogon client id                --helpShow this message and exit.          ╰───────────────────────────────────────────────────────────────╯

get-all#

get-all Usage: deployer cilogon-client get-all [OPTIONS] Retrieve details about all existing 2i2c CILogon clients.       ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

delete#

delete Usage: deployer cilogon-client delete [OPTIONS] CLUSTER_NAME                                       HUB_NAME Delete an existing CILogon client. This deletes both the        CILogon client application, and the client credentials from the configuration file.                                             ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of cluster to operate       [required]                       *hub_name    TEXTName of the hub for which we'll  delete the CILogon client        details                          [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --client-idTEXT(Optional) Id of the CILogon client  to delete of the form                cilogon:/client_id/<id>. If the id   is not passed, it will be retrieved  from the configuration file          --helpShow this message and exit.          ╰───────────────────────────────────────────────────────────────╯

cleanup#

cleanup Usage: deployer cilogon-client cleanup [OPTIONS] Identify duplicated CILogon clients and which ID is being       actively used in config, and optionally delete unused           duplicates.                                                     Args:delete (bool, optional): Delete unused duplicate CILogon  apps. Defaults to False. ╭─ Options ─────────────────────────────────────────────────────╮ --delete--no-deleteProceed with deleting duplicated CILogon apps                     [default: no-delete]             --helpShow this message and exit.      ╰───────────────────────────────────────────────────────────────╯

exec#

exec Usage: deployer exec [OPTIONS] COMMAND [ARGS]... Execute a shell in various parts of the infra. It can be used   for poking around, or debugging issues.                         ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯ ╭─ Commands ────────────────────────────────────────────────────╮ get-quota-usage          Determine usage of storage quotas  on a hub                           root-homes               Pop an interactive shell with the  entire nfs file system of the      given cluster mounted on           /root-homes Optionally mount an    additional NFS or EBS volume if    required (useful when migrating    data to a new NFS server).         homes                    Pop an interactive shell with the  home directories of the given hub  mounted on /home                   hub                      Pop an interactive shell in the    hub pod                            home-nfs-server          Pop an interactive shell in the    jupyterhub-home-nfs pod, under     enforce-xfs-quota                  copy-homedir-into-anotherStart a pod with the home          directories of the given hub       mounted on /home and run a         container as the jupyter user      (uuid 1000) in this pod. Use this  container to run commands to copy  the source home directory          <source_dir>, into the home        directory of the destination       directory <dest_dir>, under a      directory located at               /home/<dest_dir>/<source_dir>-hom… Delete the pod when the copying is done or if any exception is        raised.                            promql                   Execute a PromQL query against a   cluster's prometheus instance      prom-openmetrics-dump    Dump a prometheus metric from a    cluster in openmetrics format      aws                      Helper methods for commandline     access to AWS.                     az                       Helper methods for commandline     access to Azure.                   cost-monitoring          Interact with a hub's              jupyterhub-cost-monitoring         service.                           ╰───────────────────────────────────────────────────────────────╯

get-quota-usage#

get-quota-usage Usage: deployer exec get-quota-usage [OPTIONS] CLUSTER_NAME                                      HUB_NAME Determine usage of storage quotas on a hub                      ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of cluster to operate on    [required]                       *hub_name    TEXTName of hub to operate on        [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --jsonOutput JSON rather than pretty table          --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

root-homes#

root-homes Usage: deployer exec root-homes [OPTIONS] CLUSTER_NAME HUB_NAME Pop an interactive shell with the entire nfs file system of the given cluster mounted on /root-homes Optionally mount an        additional NFS or EBS volume if required (useful when migrating data to a new NFS server).                                      ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of cluster to operate on    [required]                       *hub_name    TEXTName of hub to operate on        [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --persistDo not automatically    delete the pod after    completing. Useful for  long-running processes. --additional-nfs-serverTEXTIP address of an        additional NFS server   to mount                --additional-nfs-base-p…TEXTPath of the additional  NFS share to mount      --additional-nfs-mount-…TEXTMount point for the     additional NFS share    --additional-volume-idTEXTID of volume to mount   (e.g.                   vol-1234567890abcdef0). Only EBS volumes are    supported for now.      --additional-volume-mou…TEXTMount point for the     volume                  [default:               /additional-volume]     --helpShow this message and   exit.                   ╰───────────────────────────────────────────────────────────────╯

homes#

homes Usage: deployer exec homes [OPTIONS] CLUSTER_NAME HUB_NAME Pop an interactive shell with the home directories of the given hub mounted on /home                                            ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of cluster to operate on    [required]                       *hub_name    TEXTName of hub to operate on        [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

hub#

hub Usage: deployer exec hub [OPTIONS] CLUSTER_NAME HUB_NAME Pop an interactive shell in the hub pod                         ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of cluster to operate on    [required]                       *hub_name    TEXTName of hub to operate on        [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

home-nfs-server#

home-nfs-server Usage: deployer exec home-nfs-server [OPTIONS] CLUSTER_NAME                                      HUB_NAME Pop an interactive shell in the jupyterhub-home-nfs pod, under  enforce-xfs-quota                                               ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of cluster to operate on    [required]                       *hub_name    TEXTName of hub to operate on        [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

copy-homedir-into-another#

copy-homedir-into-another Usage: deployer exec copy-homedir-into-another             [OPTIONS] CLUSTER_NAME HUB_NAME Start a pod with the home directories of the given hub mounted  on /home and run a container as the jupyter user (uuid 1000) in this pod. Use this container to run commands to copy the source home directory <source_dir>, into the home directory of the     destination directory <dest_dir>, under a directory located at  /home/<dest_dir>/<source_dir>-homedir. Delete the pod when the  copying is done or if any exception is raised.                  ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of cluster to operate on    [required]                       *hub_name    TEXTName of hub to operate on        [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --source-homedirTEXTName of source homedir     that we are transferring.  This is usually the        escaped username, eg.      user-402i2c-2eorg.If none  is provided, the command   will just list all of the  homedirs available on the  hub.                       --destination-homedirTEXTName of destination        homedir where we will be   copying over the files.    This is usually the        escaped username, eg.      user-402i2c-2eorg. If none is provided, the command   will just list all of the  homedirs available on the  hub.                       --helpShow this message and      exit.                      ╰───────────────────────────────────────────────────────────────╯

promql#

promql Usage: deployer exec promql [OPTIONS] QUERY CLUSTER_NAME Execute a PromQL query against a cluster's prometheus instance  ╭─ Arguments ───────────────────────────────────────────────────╮ *query       TEXTPromQL query to execute          [required]                       *cluster_nameTEXTName of the Cluster to Query     [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --jsonOutput JSON rather than pretty table          --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

prom-openmetrics-dump#

prom-openmetrics-dump Usage: deployer exec prom-openmetrics-dump [OPTIONS]  METRIC_NAME                                            OUTPUT_PATH                                            [CLUSTER_NAME] Dump a prometheus metric from a cluster in openmetrics format   ╭─ Arguments ───────────────────────────────────────────────────╮ *metric_name TEXT          Prometheus metric to   execute                [required]             *output_path TEXT          Path to output gzip    compressed openmetrics file to                [required]             cluster_name[CLUSTER_NAME][default: Cluster to   dump metrics from]     ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ *--keep-labelTEXT[required] --helpShow this message and exit.      ╰───────────────────────────────────────────────────────────────╯

aws#

aws Usage: deployer exec aws [OPTIONS] COMMAND [ARGS]... Helper methods for commandline access to AWS.                   ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯ ╭─ Commands ────────────────────────────────────────────────────╮ shell    Exec into a shell with appropriate AWS credentials (including MFA)                                    sso-shellExec into a shell with appropriate AWS credentials for an account under SSO                           offboard  onboard   ╰───────────────────────────────────────────────────────────────╯
shell#
shell Usage: deployer exec aws shell [OPTIONS] PROFILE  [MFA_DEVICE_ID]                                [AUTH_TOKEN] Exec into a shell with appropriate AWS credentials (including   MFA)                                                            ╭─ Arguments ───────────────────────────────────────────────────╮ *profile      TEXT           Name of AWS profile  to operate on        [required]           mfa_device_id[MFA_DEVICE_ID]Full ARN of MFA      Device the code is   from (leave empty if not using MFA)       auth_token   [AUTH_TOKEN]6 digit 2 factor     authentication code  from the MFA device  (leave empty if not  using MFA)           ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯
sso-shell#
sso-shell Usage: deployer exec aws sso-shell [OPTIONS] PROFILE                                    [ACCOUNT_NAME] [ROLE] [CMD] Exec into a shell with appropriate AWS credentials for an       account under SSO                                               ╭─ Arguments ───────────────────────────────────────────────────╮ *profile     TEXT          Name of AWS SSO        profile to login into  [required]             account_name[ACCOUNT_NAME]The name of the        account under SSO that you want to login into role        [ROLE]What role to assume    cmd         [CMD]Command to execute     inside the shell       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯
offboard#
offboard Usage: deployer exec aws offboard [OPTIONS] USERNAME PROFILE                                   [MFA_DEVICE_ID] [AUTH_TOKEN] ╭─ Arguments ───────────────────────────────────────────────────╮ *username     TEXT           Username to offboard from AWS             [required]           *profile      TEXT           Name of AWS profile  to operate on        [required]           mfa_device_id[MFA_DEVICE_ID]Full ARN of MFA      Device the code is   from (leave empty if not using MFA)       auth_token   [AUTH_TOKEN]6 digit 2 factor     authentication code  from the MFA device  (leave empty if not  using MFA)           ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯
onboard#
onboard Usage: deployer exec aws onboard [OPTIONS] NEW_USERNAME                                  EXISTING_USERNAME PROFILE                                  [MFA_DEVICE_ID] [AUTH_TOKEN] ╭─ Arguments ───────────────────────────────────────────────────╮ *new_username    TEXT           Username to       onboard to AWS    account           [required]        *existing_userna…TEXT           Username of an    existing user to  copy group        memberships and   policies from     [required]        *profile         TEXT           Name of AWS       profile to        operate on        [required]        mfa_device_id   [MFA_DEVICE_ID]Full ARN of MFA   Device the code   is from (leave    empty if not      using MFA)        auth_token      [AUTH_TOKEN]6 digit 2 factor  authentication    code from the MFA device (leave     empty if not      using MFA)        ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

az#

az Usage: deployer exec az [OPTIONS] COMMAND [ARGS]... Helper methods for commandline access to Azure.                 ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯ ╭─ Commands ────────────────────────────────────────────────────╮ with-storage-ruleExecute a command within the context of a  network storage rule for Azure             ╰───────────────────────────────────────────────────────────────╯
with-storage-rule#
with-storage-rule Usage: deployer exec az with-storage-rule [OPTIONS]  ACCOUNT_NAME                                           IP_ADDRESS Execute a command within the context of a network storage rule  for Azure                                                       ╭─ Arguments ───────────────────────────────────────────────────╮ *account_nameTEXTStorage account name             [required]                       *ip_address  TEXTIPv4 address/CIDR range          [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

cost-monitoring#

cost-monitoring Usage: deployer exec cost-monitoring [OPTIONS] COMMAND  [ARGS]... Interact with a hub's jupyterhub-cost-monitoring service.       ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯ ╭─ Commands ────────────────────────────────────────────────────╮ query           Query jupyterhub-cost-monitoring-service    for cost data.                              list-active-tagsGet a list of active cost allocation tags.  ╰───────────────────────────────────────────────────────────────╯
query#
query Usage: deployer exec cost-monitoring query [OPTIONS]  CLUSTER_NAME                                            SUBPATH Query jupyterhub-cost-monitoring-service for cost data.         ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXT[required] *subpath     TEXT[required] ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --verbose--no-verbose[default: verbose] --helpShow this message and exit.    ╰───────────────────────────────────────────────────────────────╯
list-active-tags#
list-active-tags Usage: deployer exec cost-monitoring list-active-tags             [OPTIONS] CLUSTER_NAME [MFA_DEVICE_ID] [AUTH_TOKEN] Get a list of active cost allocation tags.                      ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_name TEXT           Name of cluster/AWS  profile.             [required]           mfa_device_id[MFA_DEVICE_ID]Full ARN of MFA      Device the code is   from (leave empty if not using MFA)       auth_token   [AUTH_TOKEN]6 digit 2 factor     authentication code  from the MFA device  (leave empty if not  using MFA)           ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

debug#

debug Usage: deployer debug [OPTIONS] COMMAND [ARGS]... Debug issues by accessing different components and their logs   ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯ ╭─ Commands ────────────────────────────────────────────────────╮ component-logs    Display logs from a particular component  on a hub on a cluster                     user-logs         Display logs from the notebook pod of a   given user                                start-docker-proxyProxy a docker daemon from a remote       cluster to local port 23760.              dashboard         Open the provider dashboard for a cluster in the webbrowser                         access-hub        Open the provider dashboard for a cluster in the webbrowser                         ╰───────────────────────────────────────────────────────────────╯

component-logs#

component-logs Usage: deployer debug component-logs [OPTIONS] CLUSTER_NAME                                      HUB_NAME                                      COMPONENT:{hub|proxy|dask-                                      gateway-api|dask-gateway-                                      controller|dask-gateway-                                      traefik} Display logs from a particular component on a hub on a cluster  ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXT             Name of cluster to  operate on          [required]          *hub_name    TEXT             Name of hub to      operate on          [required]          *component   COMPONENT:{hub|prComponent to        oxy|dask-gateway-display logs of     api|dask-gateway-[required]          controller|dask-g ateway-traefik}   ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --follow--no-followLive update new logs as they show up                      [default: follow]            --previous--no-previousIf component pod has         restarted, show logs from    just before the restart      [default: no-previous]       --helpShow this message and exit.  ╰───────────────────────────────────────────────────────────────╯

user-logs#

user-logs Usage: deployer debug user-logs [OPTIONS] CLUSTER_NAME HUB_NAME                                 USERNAME Display logs from the notebook pod of a given user              ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of cluster to operate on    [required]                       *hub_name    TEXTName of hub to operate on        [required]                       *username    TEXTName of the JupyterHub user to   get logs for                     [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --follow--no-followLive update new logs as they show up                      [default: follow]            --previous--no-previousIf user pod has restarted,   show logs from just before   the restart                  [default: no-previous]       --helpShow this message and exit.  ╰───────────────────────────────────────────────────────────────╯

start-docker-proxy#

start-docker-proxy Usage: deployer debug start-docker-proxy [OPTIONS]                                          [DOCKER_DAEMON_CLUSTER ] Proxy a docker daemon from a remote cluster to local port       23760.                                                          ╭─ Arguments ───────────────────────────────────────────────────╮ docker_daemon_cl…[DOCKER_DAEMON_CLName of cluster   USTER]where the docker  daemon lives      [default: 2i2c]   ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

dashboard#

dashboard Usage: deployer debug dashboard [OPTIONS] [CLUSTER_NAME] Open the provider dashboard for a cluster in the webbrowser     ╭─ Arguments ───────────────────────────────────────────────────╮ cluster_name[CLUSTER_NAME]Name of cluster for which to load dashboard         [default: 2i2c]           ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

access-hub#

access-hub Usage: deployer debug access-hub [OPTIONS] [CLUSTER_NAME]                                  HUB_NAME Open the provider dashboard for a cluster in the webbrowser     ╭─ Arguments ───────────────────────────────────────────────────╮ cluster_name[CLUSTER_NAME]Name of cluster for    which to load          dashboard              [default: 2i2c]        *hub_name    TEXT          Name of hub to operate on                     [required]             ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

grafana#

grafana Usage: deployer grafana [OPTIONS] COMMAND [ARGS]... Manages Grafana related workflows.                              ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯ ╭─ Commands ────────────────────────────────────────────────────╮ new-token Generate an API token for the cluster's Grafana   deployer service account and store it encrypted   inside a enc-grafana-token.secret.yaml file.      central-dsSub-command to manage the 2i2c central Grafana's  data sources.                                     ╰───────────────────────────────────────────────────────────────╯

new-token#

new-token Usage: deployer grafana new-token [OPTIONS] CLUSTER_NAME Generate an API token for the cluster's Grafana deployer service account and store it encrypted inside a                 enc-grafana-token.secret.yaml file.                             ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of cluster for who's        Grafana deployment to generate a new deployer token               [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯

central-ds#

central-ds Usage: deployer grafana central-ds [OPTIONS] COMMAND [ARGS]... Sub-command to manage the 2i2c central Grafana's data sources.  ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯ ╭─ Commands ────────────────────────────────────────────────────╮ get-rm-candidates Get the list of datasources that are      registered in central grafana but are NOT in the list of clusters in the            infrastructure repository. You might      consider removing these datasources, as   they might refer to decommissioned        clusters.                                 get-add-candidatesGet the clusters that are in the          infrastructure repository but are NOT     registered in central grafana as          datasources. You might consider adding    these datasources, as they might link to  new clusters that haven't been updated.   add               Add a new cluster as a datasource to the  central Grafana.                          remove            Remove a datasource that maps to a        cluster, from the central Grafana. In the unlikely case, the datasource has a       different name than the cluster's name,   pass it through the optional              datasource-name flag.                     ╰───────────────────────────────────────────────────────────────╯
get-rm-candidates#
get-rm-candidates Usage: deployer grafana central-ds get-rm-candidates             [OPTIONS] Get the list of datasources that are registered in central      grafana but are NOT in the list of clusters in the              infrastructure repository. You might consider removing these    datasources, as they might refer to decommissioned clusters.    ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯
get-add-candidates#
get-add-candidates Usage: deployer grafana central-ds get-add-candidates             [OPTIONS] Get the clusters that are in the infrastructure repository but  are NOT registered in central grafana as datasources. You might consider adding these datasources, as they might link to new    clusters that haven't been updated.                             ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯
add#
add Usage: deployer grafana central-ds add [OPTIONS] CLUSTER_NAME Add a new cluster as a datasource to the central Grafana.       ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of cluster to add as a      datasource to the central 2i2c   grafana.                         [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --datasource-nameTEXT(Optional) The name of the     datasource. Defaults to        cluster_name.                  --helpShow this message and exit.    ╰───────────────────────────────────────────────────────────────╯
remove#
remove Usage: deployer grafana central-ds remove [OPTIONS]  CLUSTER_NAME Remove a datasource that maps to a cluster, from the central    Grafana. In the unlikely case, the datasource has a different   name than the cluster's name, pass it through the optional      datasource-name flag.                                           ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTThe name of cluster who's        prometheus instance we're        removing from the datasources in the central 2i2c grafana.        [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --datasource-nameTEXTThe name of the datasource     we're removing. This is        usually the same with the name of cluster.                    --helpShow this message and exit.    ╰───────────────────────────────────────────────────────────────╯

transform#

transform Usage: deployer transform [OPTIONS] COMMAND [ARGS]... Programmatically transform datasets, such as cost tables for    billing purposes.                                               ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯ ╭─ Commands ────────────────────────────────────────────────────╮ cost-tableTransform the cost table from a cloud provider    when completing billing cycles                    ╰───────────────────────────────────────────────────────────────╯

cost-table#

cost-table Usage: deployer transform cost-table [OPTIONS] COMMAND  [ARGS]... Transform the cost table from a cloud provider when completing  billing cycles                                                  ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯ ╭─ Commands ────────────────────────────────────────────────────╮ awsIngests a CSV cost table generated via the AWS UI and    performs a transformation.                               gcpIngests a CSV cost table generated via the GCP UI and    performs a transformation.                               ╰───────────────────────────────────────────────────────────────╯
aws#
aws Usage: deployer transform cost-table aws [OPTIONS] INPUT_PATH Ingests a CSV cost table generated via the AWS UI and performs  a transformation.                                               We assume the input CSV has a column for each linked account  and rows for:  • the linked account ID and name  • a monthly total for each month selected  • a linked account total across the month range We aim to have an output CSV file with columns:  • linked account name  • start-month  • ...  • end-month  • linked account total ╭─ Arguments ───────────────────────────────────────────────────╮ *input_pathPATHThe file path to the cost table    downloaded from the AWS UI         [required]                         ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --output-pathPATH(Optional) The path to write the   output CSV to. If None, one will   be constructed.                    --helpShow this message and exit.        ╰───────────────────────────────────────────────────────────────╯
gcp#
gcp Usage: deployer transform cost-table gcp [OPTIONS] INPUT_PATH Ingests a CSV cost table generated via the GCP UI and performs  a transformation.                                               We assume the input CSV file has the following columns (and are subject tochanges by GCP):  • Project name  • Subtotal ($)  • Month * (*) The Month column will be missing if the report is generated for a single month. We aim to have an output CSV file with columns:  • Project name  • start-month  • ...  • end-month  • Total where:  • start-month...end-month are unique values from the Month  column in theinput file or from the name of the input file  if the Month column is missing.  • Project name are unique entries from the input file  • The Total column is the sum across all month columns for  each project ╭─ Arguments ───────────────────────────────────────────────────╮ *input_pathPATHThe file path to the cost table    downloaded from the GCP UI         [required]                         ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --output-pathPATH(Optional) The path to write the   output CSV to. If None, one will   be constructed.                    --helpShow this message and exit.        ╰───────────────────────────────────────────────────────────────╯

update#

update Usage: deployer update [OPTIONS] COMMAND [ARGS]... Update existing resources, such as clusters or configurations.  ╭─ Options ─────────────────────────────────────────────────────╮ --helpShow this message and exit.                   ╰───────────────────────────────────────────────────────────────╯ ╭─ Commands ────────────────────────────────────────────────────╮ eksctlUpdate the eksctl config file for an existing cluster based on the template file                            ╰───────────────────────────────────────────────────────────────╯

eksctl#

eksctl Usage: deployer update eksctl [OPTIONS] CLUSTER_NAME Update the eksctl config file for an existing cluster based on  the template file                                               ╭─ Arguments ───────────────────────────────────────────────────╮ *cluster_nameTEXTName of the cluster to update    its eksctl config                [required]                       ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ --gpu-hubsTEXT --helpShow this message and exit.           ╰───────────────────────────────────────────────────────────────╯