Skip to content

Latest commit

 

History

History
440 lines (437 loc) · 22.1 KB

support-matrix-and-nbmp-k8s-mapping.md

File metadata and controls

440 lines (437 loc) · 22.1 KB

Support Matrix and Mapping of NBMP descriptors

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: -
🟢     - &parameter -
🟢      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: &notification
🔴 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