The following table gives an overview of currently supported NBMP descriptors as well as the mapping to internal nagare media engine Kubernetes resources.
🟢 Supported or support is currently implemented
🟠 Partially Supported (see comment)
🔴 Not supported
Supported | NBMP Descriptor | Mapping | Comment |
---|---|---|---|
🟢 | scheme: |
- | |
🟢 | uri: URI |
constant | |
🟢 | general: &general |
- | |
🟢 | id: string |
Workflow.metadata.name Task .metadata.name |
|
🟢 | name: string |
Workflow.spec.humanReadable.name Task .spec.humanReadable.name |
|
🟢 | description: string |
Workflow.spec.humanReadable.description Task .spec.humanReadable.description |
|
🔴 | rank: number |
- | only applicable to function(s) (groups) |
🟢 | nbmp-brand: URI |
constant | |
🟢 | published-time: time |
Workflow.metadata.creationTimestamp Task .metadata.creationTimestamp |
|
🟢 | priority: number |
Function.spec.template.spec.template.spec.priorityClassName .spec.template.spec.template.spec.priority Task .spec.templatePatches.spec.template.spec.priorityClassName .spec.templatePatches.spec.template.spec.priority TaskTemplate .spec.templatePatches.spec.template.spec.priorityClassName .spec.templatePatches.spec.template.spec.priority |
only supported for tasks (processing.function-restrictions[*].general.priority) There should be a mapping of priority -> priorityClassName in the nagare media engine configuration |
🔴 | location: string |
??? | |
🔴 | task-group: |
no group support for now | |
🔴 | - group-id: string |
||
🔴 | task-id: |
||
🔴 | - string |
||
🔴 | group-type: | |
||
🔴 | |distance |
||
🔴 | |sync |
||
🔴 | |virtual |
||
🔴 | group-mode: | |
||
🔴 | |synchronous |
||
🔴 | |asynchronous |
||
🔴 | net-zero: bool |
||
🟢 | input-ports: |
- | logical input ports |
🟢 | - port-name: string |
Task.spec.inputs[].portBindings[].id |
|
🟢 | bind: |
- | |
🟢 | stream-id: string |
Task.spec.inputs[].id |
mapping to correct input for tasks |
🔴 | name: string |
now optional | |
🔴 | keywords: |
||
🔴 | - string |
||
🟢 | output-ports: |
- | logical output ports |
🟢 | - port-name: string |
Task.spec.outputs[].portBindings[].id |
|
🟢 | bind: |
- | |
🟢 | stream-id: string |
Task.spec.outputs[].id |
mapping to correct output for tasks |
🔴 | name: string |
now optional | |
🔴 | keywords: |
||
🔴 | - string |
||
🔴 | is-group: bool |
||
🔴 | nonessential: bool |
||
🟢 | state: | |
- | |
🟢 | |instantiated |
Workflow.status.phase == Initializing Task .status.phase == Initializing || JobPending |
|
🟠 | |idle |
Workflow.status.phase == Succeeded || AwaitingCompletion Task .status.phase == Succeeded |
|
🟢 | |running |
Workflow.status.phase == Running || AwaitingCompletion Task .status.phase == Running |
|
🟢 | |in-error |
Workflow.status.phase == Failed Task .status.phase == Failed |
|
🟠 | |destroyed |
Workflow.metadata.deletionTimestamp != nil Task .metadata.deletionTimestamp != nil |
|
🔴 | repository: |
||
🔴 | mode: | |
||
🔴 | |strict |
||
🔴 | |preferred |
||
🔴 | |available |
||
🔴 | location: |
||
🔴 | - url: URI |
||
🔴 | name: string |
||
🔴 | description: string |
||
🟢 | input: &input |
- | |
🟢 | media-parameters: &media-parameters |
- | |
🟢 | stream-id: string |
Task.spec.inputs[].id |
|
🟢 | name: string |
Task.spec.inputs[].humanReadable.name |
|
🟢 | keywords: |
- | |
🟢 | - string1=string2 |
Task.spec.inputs[].labels[string1] = string2 |
|
🟢 | - string |
Task.spec.inputs[].labels[string] = "" |
|
🟢 | mime-type: string |
Task.spec.inputs[].metadata.mimeType |
|
🟢 | video-format: |
- | |
🟢 | - ¶meter |
- | |
🟢 | name: string |
Task.spec.inputs[].metadata.streams[].properties[].name |
|
🔴 | id: number |
||
🔴 | discription: string |
||
🟢 | datatype: | |
- | |
🔴 | |boolean |
||
🔴 | |integer |
||
🔴 | |number |
||
🟢 | |string |
- | |
🔴 | |array |
||
🔴 | conditions: |
||
🔴 | - number |
||
🔴 | exclusions: |
||
🔴 | - number |
||
🟠 | values: |
- | |
🔴 | - name: string |
||
🔴 | id: number |
||
🔴 | restrictions: | |
||
🔴 | |bool |
||
🔴 | |min-value: number |
||
🔴 | max-value: number |
||
🔴 | increment: number |
||
🟠 | |- string |
Task.spec.inputs[].metadata.streams[].properties[].value |
only support one value |
🔴 | schema: |
||
🔴 | <string>: object |
||
🟢 | audio-format: |
- | |
🟢 | - *parameter |
- | |
🟢 | image-format: |
- | |
🟢 | - *parameter |
- | |
🟢 | codec-type: string |
Task.spec.inputs[].metadata.codecType |
|
🔴 | protocol: string |
||
🟢 | mode: | |
Task.spec.inputs[].direction |
|
🟢 | |push |
- | |
🟢 | |pull |
- | |
🔴 | throughput: number |
||
🔴 | buffersize: number |
||
🔴 | availability-duration: number |
||
🔴 | timeout: number |
||
🟢 | caching-server-url: URI |
Task.spec.inputs[].url |
|
🔴 | completion-timeout: number |
||
🟢 | metadata-parameters: &metadata-parameters |
- | |
🟢 | stream-id: string |
Task.spec.inputs[].id |
|
🟢 | name: string |
Task.spec.inputs[].humanReadable.name |
|
🟢 | keywords: |
- | |
🟢 | - string1=string2 |
Task.spec.inputs[].labels[string1] = string2 |
|
🟢 | - string |
Task.spec.inputs[].labels[string] = "" |
|
🟢 | mime-type: string |
Task.spec.inputs[].metadata.mimeType |
|
🟢 | codec-type: string |
Task.spec.inputs[].metadata.codecType |
|
🔴 | protocol: string |
||
🟢 | mode: | |
Task.spec.inputs[].direction |
|
🟢 | |push |
- | |
🟢 | |pull |
- | |
🔴 | max-size: number |
||
🔴 | min-interval: number |
||
🔴 | availability-duration: number |
||
🔴 | timeout: number |
||
🟢 | caching-server-url: URI |
Task.spec.inputs[].url |
|
🔴 | scheme-uri: URI |
||
🔴 | completion-timeout: number |
||
🟢 | output: &output |
- | |
🟢 | media-parameters: *media-parameters |
- | |
🟢 | metadata-parameters: *metadata-parameters |
- | |
🟢 | processing: &processing |
- | |
🟢 | keywords: |
- | |
🟢 | - string1=string2 |
Task.spec.functionSelector.matchExpressions.key = string1 .spec.functionSelector.matchExpressions.operator = In .spec.functionSelector.matchExpressions.values = [string2] |
|
🟢 | - string |
Task.spec.functionSelector.matchExpressions.key = string .spec.functionSelector.matchExpressions.operator = Exists |
|
🔴 | image: |
||
🔴 | - is-dynamic: bool |
||
🔴 | url: URI |
||
🔴 | static-image-info: |
||
🔴 | os: string |
||
🔴 | version: string |
||
🔴 | architecture: string |
||
🔴 | environment: string |
||
🔴 | patch-url: string |
||
🔴 | patch-script: |
||
🔴 | <string>: object |
||
🔴 | dynamic-image-info: |
||
🔴 | scheme: URI |
||
🔴 | information: |
||
🔴 | <string>: object |
||
🟢 | start-time: Time |
Workflow.status.startTime Task .status.startTime |
|
🟢 | connection-map: |
- | |
🟢 | - connection-id: string |
dynamic value | |
🟢 | from: &connection-mapping-port |
- | |
🟢 | id: string |
Task.status.functionRef.name |
|
🟢 | instance: string |
Task.metadata.name |
|
🟢 | port-name: string |
TODO | |
🔴 | input-restrictions: *input |
||
🔴 | output-restrictions: *output |
||
🟢 | to: *connection-mapping-port |
TODO | |
🔴 | flowcontrol: *flow-control-requirement |
||
🔴 | co-located: bool |
||
🔴 | breakable: bool |
||
🔴 | other-parameters: |
||
🔴 | - *parameter |
||
🟢 | function-restrictions: |
- | |
🟢 | - instance: string |
Task.metadata.name |
|
🟢 | general: *general |
- | |
🔴 | processing: *processing |
||
🟠 | requirements: *requirements |
- | |
🟢 | configuration: |
- | |
🟢 | - *parameter |
Task.spec.config TaskTemplate .spec.config Function .spec.defaultConfig |
|
🔴 | client-assistant: *client-assistant |
||
🟢 | failover: *failover |
- | |
🔴 | monitoring: *monitoring |
||
🔴 | reporting: *reporting |
||
🔴 | notification: *notification |
||
🔴 | step: *step |
||
🔴 | security: *security |
||
🔴 | blacklist: |
||
🔴 | - | |
||
🔴 | |requirement |
||
🔴 | |client-assistant |
||
🔴 | |fail-over |
||
🔴 | |monitoring |
||
🔴 | |reporting |
||
🔴 | |notification |
||
🔴 | |security |
||
🟠 | requirements: &requirements |
- | |
🔴 | flowcontrol: &flow-control-requirement |
||
🔴 | typical-delay: number |
||
🔴 | min-delay: number |
||
🔴 | max-delay: number |
||
🔴 | min-throughput: number |
||
🔴 | max-throughput: number |
||
🔴 | averaging-window: number |
||
🟠 | hardware: |
TODO | |
🟠 | vcpu: number |
TODO | |
🟠 | vgpu: number |
TODO | |
🟠 | ram: number |
TODO | |
🟠 | disk: number |
TODO | |
🟠 | placement: string (^[A-Z]{2}$)|(^[A-Z]{2}-.*) |
TODO | |
🔴 | security: |
||
🔴 | tls: bool |
||
🔴 | ipsec: bool |
||
🔴 | cenc: bool |
||
🔴 | workflow-task: |
||
🔴 | function-fusible: bool |
||
🔴 | function-enhancable: bool |
||
🟠 | execution-mode: | |
TODO | |
🟠 | |streaming |
TODO | |
🟠 | |step |
TODO | |
🟠 | |hybrid |
TODO | |
🔴 | proximity: |
||
🔴 | other-task-id: string |
||
🔴 | distance: number |
||
🔴 | proximity-equation: |
||
🔴 | distance-parameters: |
||
🔴 | - &variable |
||
🔴 | name: string |
||
🔴 | definition: string |
||
🔴 | unit: string |
||
🔴 | var-type: | |
||
🔴 | |string |
||
🔴 | |integer |
||
🔴 | |float |
||
🔴 | |boolean |
||
🔴 | |number |
||
🔴 | value: string |
||
🔴 | min: number |
||
🔴 | max: number |
||
🔴 | url: URI |
||
🔴 | children: *variable |
||
🔴 | distance-equation: string |
||
🔴 | split-efficiency: |
||
🔴 | split-norm: | |
||
🔴 | |pnorm |
||
🔴 | |custom |
||
🔴 | split-equation: string |
||
🔴 | split-result: number |
||
🔴 | resource-estimators: |
||
🔴 | default-values: |
||
🔴 | - name: string |
||
🔴 | value: string |
||
🔴 | computational-estimator: string |
||
🔴 | memory-estimator: string |
||
🔴 | bandwidth-estimator: string |
||
🔴 | step: &step |
This is underspecified in old spec. Probably speaks of splitting processing into multiple subtasks based on time/space. | |
🔴 | step-mode: | |
||
🔴 | |stream |
||
🔴 | |stateful |
||
🔴 | |stateless |
||
🔴 | variable-duration: bool |
||
🔴 | segment-duration: number |
||
🔴 | segment-location: bool |
||
🔴 | segment-sequence: bool |
||
🔴 | segment-metadata-supported-formats: |
||
🔴 | - | |
||
🔴 | |nbmp-location-bytestream-2022 |
||
🔴 | |nbmp-sequence-bytestream-2022 |
||
🔴 | |nbmp-location-json-2022 |
||
🔴 | |nbmp-sequence-json-2022 |
||
🔴 | operating-units: number |
||
🔴 | temporal-overlap: number |
||
🔴 | number-of-dimensions: number |
||
🔴 | higher-dimension-segment-divisors: |
||
🔴 | - number |
||
🔴 | higher-dimensions-descriptions: |
||
🔴 | - | |
||
🔴 | |width |
||
🔴 | |height |
||
🔴 | |RGB |
||
🔴 | |depth |
||
🔴 | |YUV |
||
🔴 | |V-PCC |
||
🔴 | higher-dimensions-segment-order: |
||
🔴 | - number |
||
🔴 | higher-dimension-overlap: |
||
🔴 | - number |
||
🔴 | higher-dimension-operation-units: |
||
🔴 | - number |
||
🔴 | client-assistant: &client-assistant |
||
🔴 | client-assistance-flag: bool |
||
🔴 | measurement-collection-list: |
||
🔴 | <string>: object |
||
🔴 | source-assistance-information: |
||
🔴 | <string>: object |
||
🟢 | failover: &failover |
- | |
🟢 | failover-mode: | |
TODO | |
🟠 | |restart-immediately |
TODO | Ignore for now. Kubernetes has exponential back-off. |
🟠 | |restart-with-delay |
TODO | Ignore for now. Kubernetes has exponential back-off. |
🟢 | |continue-with-last-good-state |
TODO | |
🔴 | |execute-backup-deployment |
||
🟢 | |exit |
TODO | |
🟠 | failover-delay: number |
- | Ignore for now. Kubernetes has exponential back-off. |
🔴 | backup-deployment-url: URI |
||
🔴 | persistence-url: URI |
TODO | |
🔴 | persistence-interval: number |
TODO | |
🔴 | monitoring: &monitoring |
||
🔴 | event: |
||
🟢 | - &event |
TODO | Support only in reports. |
🟢 | name: string |
TODO | Human readable name. |
🟢 | definition: string |
TODO | Human readable description. |
🟢 | url: URI |
TODO | Identifier as used in CloudEvents. |
🔴 | variable: |
||
🔴 | - *variable |
||
🔴 | system-events: |
||
🔴 | - <string>: object |
||
🔴 | system-variables: |
||
🔴 | - <string>: object |
||
🔴 | assertion: |
||
🔴 | min-priority: number |
||
🔴 | min-priority-action: | |
||
🔴 | |rebuild |
||
🔴 | |restart |
||
🔴 | |wait |
||
🔴 | support-verification: bool |
||
🔴 | verification-acknowledgement: string |
||
🔴 | certificate: string |
||
🔴 | assertion: |
||
🔴 | - name: string |
||
🔴 | value-predicate: |
||
🔴 | evaluation-condition: | |
||
🔴 | |quality |
||
🔴 | |computational |
||
🔴 | |input |
||
🔴 | |output |
||
🔴 | check-value: |
||
🔴 | <string>: object |
||
🔴 | aggregation: | |
||
🔴 | |sum |
||
🔴 | |min |
||
🔴 | |max |
||
🔴 | |avg |
||
🔴 | offset: string |
||
🔴 | priority: number |
||
🔴 | action: | |
||
🔴 | |rebuild |
||
🔴 | |restart |
||
🔴 | |wait |
||
🔴 | action-parameters: |
||
🔴 | - string |
||
🟢 | reporting: &reporting |
TODO | Only support in task layer. |
🟢 | event: |
TODO | |
🟢 | - *event |
TODO | List of events to report specific to this task. |
🔴 | variable: |
||
🔴 | - *variable |
||
🟠 | system-events: |
TODO | List of generic nagare events to report. |
🟠 | - <string>: object |
TODO | Also in the *event format! All system events should be reported |
🔴 | system-variables: |
||
🔴 | - <string>: object |
||
🟢 | report-type: string |
constant | Value should be something with nagare. |
🟠 | reporting-interval: number |
- | Ignore as the report should be event based. |
🟠 | report-start-time: Time |
- | Ignore as the report should be event based. |
🟢 | url: URI |
- | This should point to the local task helper. |
🟢 | delivery-method: | |
- | |
🟢 | |HTTP POST |
- | |
🔴 | notification: ¬ification |
||
🔴 | event: |
||
🔴 | - *event |
||
🔴 | variable: |
||
🔴 | - *variable |
||
🔴 | system-events: |
||
🔴 | - <string>: object |
||
🔴 | system-variables: |
||
🔴 | - <string>: object |
||
🔴 | notification-time: Time |
||
🔴 | severity-level: string |
||
🔴 | notification-type: |
||
🔴 | - | |
||
🔴 | |congestion |
||
🔴 | |application |
||
🔴 | |system |
||
🔴 | urls: |
||
🔴 | - URI |
||
🔴 | notification-interval: number |
||
🟢 | acknowledge: |
- | |
🟢 | status: | |
- | |
🟢 | |fulfilled |
- | |
🟢 | |failed |
- | |
🟢 | |not-supported |
- | |
🟢 | |partially-fulfilled |
- | |
🟢 | unsupported: |
- | |
🟢 | - string |
- | |
🟢 | failed: |
- | |
🟢 | - string |
- | |
🟢 | partial: |
- | |
🟢 | - string |
- | |
🔴 | security: &security |
||
🔴 | name: string |
||
🔴 | scope: | |
||
🔴 | |data |
||
🔴 | |function |
||
🔴 | |task |
||
🔴 | authentication-method: string |
||
🔴 | authority-url: URI |
||
🔴 | certificate: string |
||
🔴 | auth-token: string |
||
🔴 | client-grants: string |
||
🔴 | auth-token-expires: Time |
||
🔴 | auth-token-renew: string |
||
🔴 | auth-token-rotation: bool |
||
🔴 | scale: |
||
🔴 | id: string |
||
🔴 | description: string |
||
🔴 | scaling-type: | |
||
🔴 | |MPE |
||
🔴 | |split-merge |
||
🔴 | scaling-factor: number |
||
🔴 | status: | |
||
🔴 | |capabilities |
||
🔴 | |consider |
||
🔴 | |request |
||
🔴 | |passed |
||
🔴 | |failed |
||
🔴 | target-id: string |
||
🔴 | schedule: |
||
🔴 | id: string |
||
🔴 | description: string |
||
🔴 | schedule-type: | |
||
🔴 | |duration |
||
🔴 | |segment |
||
🔴 | schedule-table: |
||
🔴 | - task-id: string |
||
🔴 | start-time: string |
||
🔴 | duration: number |
||
🔴 | timescale: number |
||
🔴 | number-of-segments: |
||
🔴 | - number |
||
🔴 | loop: bool |
||
🔴 | status: | |
||
🔴 | |capabilities |
||
🔴 | |consider |
||
🔴 | |request |
||
🔴 | |passed |
||
🔴 | |failed |