Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • to download, run and test that same native application on all RDK6.1 Video Accelerators without any additional integration steps
  • to exchange your Application binary package (being the AppContainer image) with RDK operators (Liberty Global, Comcast, Sky), giving them the technical capability to try out and run the app on their test boxes without additional integration.

This video from made by ConsultRed at TechSummit2024 nicely explains bigger picture

...

  • step1 is to publish your oci, dobby, dac compliant AppContainer image to an oci container registry in the cloud. This is a standard cloud component that allows to upload container images (docker push), store them there persistently and download them (docker pull). This oci-registry is the binary exchange point to share your application binary with RDK-M and various RDK operators. 
  • step2 : register your application with appropriate metadata in RDK-M DAC cloud system setup for RDK Video Accelerators. There is microservice called ASMS (AppStore Metadata Service) that offers API that allows Application Maintainers to register their app with appropriate metadata. Once registered this will add you app to the DAC App catalog for RDK-M Video Accelerators (VA) and you will be able to discover your App in the Resident UI of all RDK6.1 Video Accelerators and as user/tester of VA you can then choose to install it on any RDK6.1 VA and once installed you can run it. In the background the RDK-M instance of the DAC cloud system will automatically fetch your oci-AppContainer image, create bundle of it for the specific Video Accelerator Hardware (SoC/OEM), encrypt (optionally) and make it available for Video Accelerator to download and store securely. 

In next sections we provide detailed howto for each step.

With Just to be clear and to avoid misunderstandings, with step2 you will make your app DAC native applciation discoverable to Video Accelerators with RDK-M RDK6.1 -Video Acceleratorsimage but just to be clear and avoid misunderstandings, this will not NOT distribute/, deploy /or make your app visible available to Appstore of the various RDK operators (Liberty Global, Comcast, Sky). For that you would need to start a discussion with each the specific operator but the fact that you uploaded you AppContainer image allow it It is intended as staging place where community can see and experience your application  step will not install it 

  • The RDK-M DAC cloud will pick 

publish steps to separate steps to ma  publish steps in there :

 as this 

There are 2 big publish There are two ways to publish a new application in ASMS:

  1. use the official ASMS REST API to publish the app (openAPI swagger REST api)
  2. using the dactest.py test tool

But before publishing the new app into ASMS, you need to publish the oci compliant container image of your DAC application into a container registry that supports the OCI standard format. In next section we explain how to do that.operator. But this DAC architecture gives you the big benefit that you can now share your Application binary as AppContainer in step1 and when it meets the DAC App  contract for binary compatibility it will be binary compatible and technically much easier/quick for the operator to run and test your app on their boxes for first time, get familiar with it. No significant technical integration work should be needed just to get the app running on the operator box. With the DAC cloud for the RDK-M Video Accelerator you as App developer get staging platform where you and others from RDK community can run, test your same application binary across the various supported RDK SoC reference devices (the VA's) and share it with RDK community.

How to publish the application oci container image to RDK-M oci container registry

...

Code Block
languagebash
# login into private RDK-M OCI container registry
aws --profile s3dacrdk ecr-public get-login-password --region us-east-1 | skopeo login --username AWS --password-stdin public.ecr.aws/a0v6o9z7

# create repo for your application, in which you can publish different versions, example below creates "cobalt" one for Youtube/cobalt application
aws --profile s3dacrdk --region us-east-1 ecr-public create-repository --repository-name cobalt

# list repos
aws --profile s3dacrdk --region us-east-1 ecr-public describe-repositories

# The actual command that uploads/publishes your local version of a oci image associated with your application to the RDK-M oci-registry 
# within repo named "cobalt" with the version tag "latest" standing for latest version
skopeo copy oci-archive:dac-image-cobalt.tar docker://public.ecr.aws/a0v6o9z7/cobalt:latest

# with following command you can download your oci image from RDK-M registry to your local host
skopeo copy docker://public.ecr.aws/a0v6o9z7/cobalt:latest oci:cobalttest

# command to double check if uploaded container is oci image type
skopeo inspect --raw docker://public.ecr.aws/a0v6o9z7/cobalt:latest
{
  "schemaVersion": 2,
  "config": {
    "mediaType": "application/vnd.oci.image.config.v1+json",
    "size": 548,
    "digest": "sha256:0bc2f756fc781b015769230b207c6b227b788023a5c3d599504407cc1619110e"
  },
[...]
}

You have to remember the OCI image URL of your application, which in this example is docker://public.ecr.aws/a0v6o9z7/cobalt:latest. Because you will have to specify it when publishing the DAC app to the ASMS (AppStore Metdata service).

...

[...]
}

You have to remember the OCI image URL of your application, which in this example is docker://public.ecr.aws/a0v6o9z7/cobalt:latest. Because you will have to specify it when publishing the DAC app to the ASMS (AppStore Metdata service).

Publish your DAC app to ASMS

 ASMS (AppStore Metadata Service) offers API that allows Application Maintainers to register their app with appropriate metadata. There are various ways to publish a new application to ASMS in DAC Cloud:

  1. use the official ASMS REST API to publish the app, is openAPI / swagger API format which we describe in next section
  2. using the dactest.py python test tool that in its turn uses the ASMS api
  3. using front-end UI that in its turn uses the ASMS api. The latter one is not available yet to App Developers

register App using ASMS REST API

You can access the swagger UI here: 

There the concept of maintainer which stands for 

You can use the POST /maintainers/{maintainerCode/apps RPC call to add an ASMS dac app. dactest.py uses "rdk" as maintainerCode. You will need to provide a POST body with the required contents.

...