UCS Microservice Builder CLI#

The UCS Microservice Builder CLI tool can be used to create and build microservices. It can be used to list and view information about available microservices and perform a few NGC repository operations.

The tool is named ucf_ms_builder_cli.

Basic Operations#

Viewing Help#

$ ucf_ms_builder_cli -h
usage: ucf_ms_builder_cli [-h] [-v] [-va]  ...

positional arguments:

    service           Perform actions on a microservice
    registry          Perform actions on registry
    component         Perform actions on components

optional arguments:
  -h, --help          show this help message and exit
  -v, --version       Print MS Builder Version
  -va, --version-all  Print all versions

Checking the Tool Version#

Pass the “-v” flag to any of the CLIs.

Service Command service#

Service command service can be used to create and build microservices and list and view information about available microservices.

$ ucf_ms_builder_cli service [-h]  ...

positional arguments:

    create    Create a microservice scaffolding
    clone     Clone an existing microservice to a new version in prod
    build     Build a microservice
    validate  Validate a microservice
    list      List microservices
    versions  List versions of a microservice
    metadata  Get service metadata from NGC
    remove    Remove microservice from repo
    info      Info about a microservice
    sync      Sync a microservice from NGC to cache

optional arguments:
  -h, --help  show this help message and exit

Create Microservice Scaffolding#

ucf_ms_builder_cli service create [-h] [-d DESCRIPTION] [-o OUTPUT_DIR] -n NAME -i
                                     {container-image,container-config,helm-chart} [-c CHART]

optional arguments:
  -h, --help            show this help message and exit
  -d DESCRIPTION, --description DESCRIPTION
                        description of microservice
  -o OUTPUT_DIR, --output_dir OUTPUT_DIR
                        output directory to place the created microservice

required arguments:
  -n NAME, --name NAME  name of the microservice
  -i {container-image,container-config,helm-chart}, --input {container-image,container-config,helm-chart}
                        Input:
                        container image
                        container builder config
                        helm chart
  -c CHART, --chart CHART
                        Chart path when using prebuilt helm chart (type=3)

e.g.

$ ucf_ms_builder_cli service create -n myservice -i container-image

Building a Microservice#

ucf_ms_builder_cli service build [-h] -d DIRECTORY [-t TARGET] [--push PUSH] [--skip-tests] [--skip-compliance] [-f] [--keep-app-specs]


options:
  -h, --help            show this help message and exit
  --push PUSH           Push service to specified NGC team if it builds successfully
  --skip-tests          Skip building of tests
  --skip-compliance     Skip compliance checks
  -f, --force-cleanup   Output directory contents will be cleaned up without user confirmation
  --keep-app-specs      Create app specs folder in user directory

required arguments:
  -d DIRECTORY, --directory DIRECTORY
                        path to microservice directory
  -t TARGET, --target TARGET
                        Target file path when using container builder config (type=2) (required by container builder)

e.g.

$ ucf_ms_builder_cli service build -d myservice/

List Available Microservices#

ucf_ms_builder_cli service list [-h] [-r REPO_NAME]

optional arguments:
  -h, --help            show this help message and exit
  -r REPO_NAME, --repo-name REPO_NAME
                        Select an repository name

e.g.

$ ucf_ms_builder_cli service list

List Available Microservice Versions#

ucf_ms_builder_cli service versions [-h] -n NAME [-r REPO_NAME]

optional arguments:
  -h, --help            show this help message and exit
  -n NAME, --name NAME  Name of the microservice
  -r REPO_NAME, --repo-name REPO_NAME
                        Select an repository name

e.g.

$ ucf_ms_builder_cli service versions -n ucf.svc.myservice

View Microservice Information#

ucf_ms_builder_cli service info [-h] [-v MS-VERSION] [--show-compliance-details] [--show-license] [--show-docs]
                                 [--show-changelog] -n NAME

optional arguments:
  -h, --help            show this help message and exit
  -v MS-VERSION, --version MS-VERSION
                        Version of the microservice to get info for
  --show-compliance-details
                        Show compliance check details for the microservice
  --show-license        Show license text for the microservice
  --show-docs           Show detailed documentation for the microservice
  --show-changelog      Show changelog for the microservice

required arguments:
  -n NAME, --name NAME  name of the ms

e.g.

$ ucf_ms_builder_cli service info -n ucf.svc.myservice -v 0.0.1

Fetching Microservice Metadata#

ucf_ms_builder_cli service validate [-h] -n NAME -v MS-VERSION -r REPO

options:
  -h, --help            show this help message and exit

required arguments:
  -n NAME, --name NAME  Name of the microservice
  -v MS-VERSION, --version MS-VERSION
                        Version of the microservice
  -r REPO, --repo REPO  Repo(Team) where specific version of the microservice exists.

e.g.

ucf_ms_builder_cli service metadata -n ucf.svc.myservice -v 0.0.1 -r dev-team

Here is an example of the output of the command for a microservice:

{
    "Org": "eevaigoeixww",
    "ServiceName": "ucf.svc.image-segmentation-client",
    "Desciption": "image-segmentation-client\n==============================\n\n## Description\nThis microservice forms the client or frontend-UI of the UCF Reference App. This client allows the user to accept any image and send it further to the Segmentation service and receive its output to be displayed on the UI.\n\n## Usage\nNA\n\n## Performance\nNA\n\n## Supported Platforms\nFor x86_64 and Nvidia dGPU\n\n## Deployment requirements\nNA\n\n## License\nLICENSE.txt has been updated for the above microservice.\n\n## Known Issues / Limitations\nNA\n\n## References\nNA",
    "CustomMetrics": [
        {
            "attributes": [
                {
                    "key": "tagged_from_version",
                    "value": "1.0.3"
                },
                {
                    "key": "ucs_validated",
                    "value": "true"
                },
                {
                    "key": "created_from",
                    "value": "UCS Tools 2.10.0-rc4"
                }
            ],
            "name": "ucs_tools"
        }
    ]
}

Synchronize a Microservice#

usage: ucf_ms_builder_cli service sync [-h] -n NAME [-v MS-VERSION] [--validated] [-r REPO]

options:
  -h, --help            show this help message and exit
  -v MS-VERSION, --version MS-VERSION
                        Version of the microservice to sync (default: latest)
  --validated           Allows the user to sync validated services only
  -r REPO, --repo REPO  Repo (team) where specific version of the microservice exists.

required arguments:
  -n NAME, --name NAME  Name of the microservice to sync

e.g.

$ ucf_ms_builder_cli service sync -n ucf.svc.myservice -v 0.0.1

Registry Command registry#

The Registry command registry can be used to perform various registry operations such as set the NGC API Key, sync all microservices from a NGC repository, cache management.

$ ucf_ms_builder_cli registry -h
usage: ucf_ms_builder_cli registry [-h]  ...

positional arguments:

    repo      Registry repository operations
    cache     Registry cache operations

optional arguments:
  -h, --help  show this help message and exit

Set NGC API Key#

ucf_ms_builder_cli registry repo set-api-key [-h] -a API_KEY

optional arguments:
  -h, --help            show this help message and exit

required arguments:
  -a API_KEY, --api-key API_KEY
                        Select a API key

e.g.

ucf_ms_builder_cli registry repo set-api-key -a XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

List Available Repositories#

ucf_ms_builder_cli registry repo list [-h]

optional arguments:
  -h, --help  show this help message and exit

e.g.

ucf_ms_builder_cli registry repo list

View Information for a Repository#

ucf_ms_builder_cli registry repo info [-h] -n REPO_NAME

optional arguments:
  -h, --help            show this help message and exit

required arguments:
  -n REPO_NAME, --repo-name REPO_NAME
                        Select an repository name

e.g.

ucf_ms_builder_cli registry repo info -n public

Synchronize All Microservices in a Repository#

ucf_ms_builder_cli registry repo sync [-h] -n REPO_NAME [-a]

optional arguments:
  -h, --help            show this help message and exit
  -a, --all             Sync all versions of a microservice

required arguments:
  -n REPO_NAME, --repo-name REPO_NAME
                        Select an repository name

e.g.

ucf_ms_builder_cli registry repo sync -n public

Clear Local Repository#

ucf_ms_builder_cli registry repo clear [-h]

optional arguments:
  -h, --help  show this help message and exit

e.g.

ucf_ms_builder_cli registry repo clear

Set the Registry Cache Path#

ucf_ms_builder_cli registry cache set [-h] -p CACHE_PATH

optional arguments:
  -h, --help            show this help message and exit

required arguments:
  -p CACHE_PATH, --cache-path CACHE_PATH
                        Select a cache path

e.g.

ucf_ms_builder_cli registry cache set -p /home/ubuntu/ucf_cache

View the Registry Cache Path#

ucf_ms_builder_cli registry cache view [-h]

optional arguments:
  -h, --help            show this help message and exit

e.g.

ucf_ms_builder_cli registry cache view

Clear the Registry Cache#

ucf_ms_builder_cli registry cache clear [-h]

optional arguments:
  -h, --help            show this help message and exit

e.g.

ucf_ms_builder_cli registry cache clear

Component Command component#

The Component command component can be used to list and view information about components available that can be used to implement a microservice.

$ ucf_ms_builder_cli component [-h]  ...

positional arguments:

    add       Recursively scan directory for components and add them to cache
    list      List available components
    info      Display info of a component

optional arguments:
  -h, --help  show this help message and exit

List Components#

ucf_ms_builder_cli component list [-h]

optional arguments:
  -h, --help  show this help message and exit

e.g.

ucf_ms_builder_cli component list

View Information for a Component#

ucf_ms_builder_cli component info [-h] -c COMPONENT_NAME

optional arguments:
  -h, --help            show this help message and exit

required arguments:
  -c COMPONENT_NAME, --component COMPONENT_NAME
                        List component info

e.g.

ucf_ms_builder_cli component info -c ucf.k8s.container

Add Custom Components#

ucf_ms_builder_cli component add [-h] -d DIR_PATH [--overwrite]

optional arguments:
  -h, --help            show this help message and exit

required arguments:
  -d DIR_PATH, --directory DIR_PATH
                        Directory path containing components
  --overwrite           Overwrite components in cache having the same type

e.g.

ucf_ms_builder_cli component add -d /home/nvidia/ucf_custom_components