UCS Manifest#

The full manifest of the UCS microservice is below:

type: msapplication
specVersion: 2.5.0
name: ucf.svc.ia-animation-graph-microservice
displayName: "Animation Graph Microservice"
chart: "https://helm.ngc.nvidia.com/nvidia/ace/charts/ia-animation-graph-microservice-1.1.0.tgz"
description: "Animation Graph Microservice"
version: "1.1.0"
category:
  functional: ""
  industry: ""
tags: []
keywords: []
eula: ""
nSpectId: NSPECT-RDWK-7253

publish: false

egress-endpoints:
  - name: redis
    description: Redis message broker
    protocol: TCP
    mandatory: False
    scheme: asyncio
    data-flow: out
  - name: otlp
    description:  OpenTelemetry protocol (OTLP) compliant server
    protocol: TCP
    mandatory: False
    scheme: asyncio
    data-flow: out

ingress-endpoints:
  - name: anim-server
    description: "Animation data gRPC server"
    protocol: TCP
    scheme: grpc
    mandatory: True
    data-flow: in-out
    service: ia-animation-graph-microservice
    port: 51000
  - name: http-api
    description: "HTTP API"
    protocol: TCP
    scheme: http
    mandatory: True
    data-flow: in
    service: ia-animation-graph-microservice
    port: 8020

params:

  kit:
  #> description: Omniverse Kit related parameters.
  #> type: object
    settings: ""
    #> description: Additional Kit settings passed at startup (e.g. '--/app/my/setting=42 --/app/my/other/setting=true').
    #> type: string
    printSettings: false
    #> description: Print Kit settings on startup.
    #> type: boolean
  httpServer:
  #> description: HTTP API server configuration
  #> type: object
    port: 8020
    #> description: The port where the http API server is served.
    #> type: integer
  deployment:
  #> description: Kubernetes deployment related parameters.
  #> type: object
    memoryRequest: "1Gi"
    #> description: Resource memory request for container.
    #> type: string
    memoryLimit: "4Gi"
    #> description: Resource memory limit for container.
    #> type: string
    gpuDisableAlloc: false
    #> description: When set to true, the GPU allocation is switched from hardcoded to dynamic.
    #> type: boolean
    gpuAllocLimit: 1
    #> description: Controls how many replicas run on a single GPU.
    #> type: integer
    persistentVolumeSize: 5000Mi
    #> description: The size of the volume required to store the USD scene and all its dependencies.
    #> type: string
    storageClassName: mdx-local-path
    #> description: The storage class for the persistent volume claims.
    #> type: string
    storageAccessMode: ReadWriteOnce
    #> description: The access mode for the persistent volume claims.
    #> type: string
  resourceDownload:
  #> description: Parameters for the resource download init container to specify how and where the USD resources are downloaded.
  #> type: object
    remoteResourcePath: ""
    #> description: The remote resource path with the USD scene assets. Will be provided as "REMOTE_RESOURCE_PATH" env variable to the resource download init container. E.g. for NGC resources looks like "<NGC_ORG>/<NGC_TEAM>/<NGC_RESOURCE_NAME>:<NGC_RESOURCE_VERSION>".
    #> type: string
    secretName: ""
    #> description: Name of the secret, that will be mounted into the resource download init container to provide credentials. E.g. for NGC the "NGC_CLI_API_KEY".
    #> type: string
    image: ""
    #> description: Name of the image for the resource download init container. E.g. "nvcr.io/nvidia/ace/ngc-resource-downloader:1.2.0"
    #> type: string
  animationServer:
  #> description: GRPC server for pulling and pushing animation data
  #> type: object
    port: 51000
    #> description: The port where the animation data server is served.
    #> type: integer
    maxStreamCapacity: 3
    #> description: The max number of parallel streams, that are supported for each instance of the microservice.
    #> type: integer
  scene:
  #> description: USD scene asset configuration
  #> type: object
    filename: "Avatar_Scene.usda"
    #> description: The name of the USD asset (e.g. `Avatar_Scene.usda`). This can be a .usda or a .usd file.
    #> type: string

  debug:
  #> description: Debug configuration
  #> type: object
    logEnabled: true
    #> description: Enable debug logs.
    #> type: boolean
    logEachReceivedAnimationDataMessage: false
    #> description: Log each animation data message that is received on the grpc stream.
    #> type: boolean
    logEachSentAnimationDataMessage: false
    #> description: Log each animation data message that is sent on the grpc stream.
    #> type: boolean
    logEachRedisAnimationGraphEvent: false
    #> description: Log each finish notification that is sent to a redis stream.
    #> type: boolean
    logFrameInterval: 30
    #> description: Enable debug output of each x-th frame.
    #> type: integer
  trace:
  #> description: Trace configuration
  #> type: object
    jsonExporter:
    #> description: Json exporter configuration
    #> type: object
      enabled: false
      #> description: Enable exporting traces to a file in json format.
      #> type: boolean
      filename: "_trace.json"
      #> description: Filename, where the traces are written to.
      #> type: string
    otlpExporter:
    #> description: OTLP exporter configuration
    #> type: object
      enabled: false
      #> description: Enable exporting traces to an OTLP compliant server (defined in egress).
      #> type: boolean
    captureDetail: 24
    #> description: The trace levels to capture. LOW=16, MID=8, HIGH=4, VERBOSE=2, FULL=1. The values are added together to get the final trace level. E.g. LOW + MID = 24.
    #> type: integer
  animationSource:
  #> description: GRPC animation source
  #> type: object
    bufferSize: 0.1
    #> type: number
    #> description: The buffer size of animation data input stream in seconds.
  animationOutput:
  #> description: GRPC animation output
  #> type: object
    frameRate: 30.0
    #> description: The frames per second rate at which the data is sampled and streamed.
    #> type: number
    audioSampleRate: 16000
    #> description: The number of audio samples per second that the service outputs.
    #> type: integer


tests:
  - name: dummy
    app: tests/dev/dummy.yaml
    params: tests/dev/params1.yaml
    ciTrigger: true
    timeout: 20
    duration: 8
    installPreReqs: true # Whether to install foundational services
    namespace: default # Kubernetes namespace
    gpuNodeLabels: ""
    watchAllPods: true # OR set to false and set list of pods to watch below
    watchPods: []
    testerPods: # At least one tester pod is required
      - name: animation-graph-deployment # Name of the test pod
        startSignature: "SETTINGS" # Signature to look for in the logs indicating start of tests. Regex is accepted
        endSignature: "Animation graph microservice readiness probe: OK" # Signature to look for in the logs indicating end of tests. Regex is accepted
        errorSignatures: # Signatures that indicate test failures.  Regex is accepted
          - "UCF_MS_VALIDATION_RESULT: Fail"