Versions Compared

Key

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

CNAME: CNAME records can be used to alias one name to another. CNAME stands for Canonical Name.

...

  • Plugins loading in editors & packing as part of ECAR.

  • Generation of pre-signed URL used by Editors

  • ECAR files will be having absolute paths (Need discussion on how to solve)

  • Data stored in the DB’s

    streamingUrl

    • downloadUrl

    • variants

    ----------------

    • previewUrl

    • appIcon

    • posterImage

    • artifactUrl

    • toc_url

    • thumbnail

    • assetMap

...

Don’t store the absolute paths in the DB’s. Always store the path with CNAME as prefix.

example:

https://CNAMEstore.diksha.gov.in/ntp-content-production/content/assets/do_31329674183946240014126/a-boy-animation-1.mp4

Configure the service with CNAME value as shown below

CNAME_properties: [“downloadUrl“, “appIcon”, “posterImage”]

CNAME: https://ntpproductionall.blob

cname:[
{
"type": "blob",
"cname": "https://store.diksha.gov.in",
"default": "https://ntpproductionall.blob.core.windows.net/ ",
"properties": [
"downloadUrl",
"artifactUrl",
"streamingUrl",
"posterImage",
"previewUrl"
]
},
{
"type": "cdn",
"cname": "https://cdn.diksha.gov.in",
"default": "https://cdn-ntpproduction.core.windows.net/ "
}
]

cname: Value to be used to replace

default: Value that has to be replaced with CNAME

properties: Service will be looking for these properties while writing. Any aboslute path sending for these properties will get updaetd with CNAME value

Only while creation(POST API calls), we will be replacing the properties on the request body(CNAME_properties) with CNAME & store in the DB.

The list of CNAME_properties can be configured by any adopters as per their schema properties.

Challenges:

...

  • We can handle only CNAME as part of this scope. Any domain name changes requires data migration as the DB stores the full path with CNAME+Domain.
    Note: This can be generalised by handling the CNAME+Domain on service side while sending the responses by storing only relative paths in the DB.

  • ECAR is packaged with CNAME values. So any domain change required data migration by republishing the ECAR’s(Content republish).

  • StreamingUrl will required the data migration as it is specific to CSP providers. This may requires regeneration of all streaming URL’s with new CSP provider.

JOB Files to be addressed:
asset-enrichment -> org.sunbird.job.assetenricment.helpers.ImageEnrichmentHelper -> enrichImage method -> optimizeImage method

asset-enrichment -> org.sunbird.job.assetenricment.helpers.OptimizerHelper -> replaceArtifactUrl method

asset-enrichment -> org.sunbird.job.assetenricment.helpers.VideoEnrichmentHelper ??

publish-pipeline -> content-publish -> org.sunbird.job.content.publish.helpers.ExtractableMimeTypeHelper -> getCloudStoreURL, updatePreviewUrl, getObjectWithEcar methods

publish-pipeline -> content-publish -> org.sunbird.job.content.publish.helpers.ContentPublisher -> updatePreviewUrl, getObjectWithEcar methods

publish-pipeline -> content-publish -> org.sunbird.job.content.publish.helpers.CollectionPublisher -> getObjectWithEcar method