Data Dictionary
A data dictionary models the how a specific resource can be resolved.
A resource is a variable/parameter in the context of the service. It can be anything, but it should not be confused with SDC or Openstack resources.
A data dictionary can have multiple sources to handle resolution in different ways.
The main goal of data dictionary is to define re-usable entity that could be shared.
Creation of data dictionaries is a standalone activity, separated from the blueprint design.
As part of modelling a data dictionary entry, the following generic information should be provided:
Property |
Description |
Scope |
---|---|---|
updated-by |
The creator |
Mandatory |
tags |
Information related |
Mandatory |
sources |
List of resource source instance (see Node type) |
Mandatory |
property |
Defines type and description, as nested JSON |
Mandatory |
name |
Data dictionary name |
Mandatory |
Bellow are properties that all the resource source can have
The modeling does allow for data translation between external capability and CDS for both input and output key mapping.
Property |
Description |
Scope |
---|---|---|
input-key-mapping |
map of resources required to perform the request/query. The left hand-side is what is used within the query/request, the right hand side refer to a data dictionary instance. |
Optional |
output-key-mapping |
name of the resource to be resolved mapped to the value resolved by the request/query. |
Optional |
key-dependencies |
list of data dictionary instances to be resolved prior the resolution of this specific resource.
during run time execution the key dependencies are recursively sorted and resolved
in batch processing using the acyclic graph algorithm
|
Optional |
Example:
vf-module-model-customization-uuid
and vf-module-label
are two data dictionaries.
A SQL table, VF_MODULE_MODEL, exist to correlate them.
Here is how input-key-mapping, output-key-mapping and key-dependencies can be used:
vf-module-label data dictionary |
---|
{
"name" : "vf-module-label",
"tags" : "vf-module-label",
"updated-by" : "adetalhouet",
"property" : {
"description" : "vf-module-label",
"type" : "string"
},
"sources" : {
"primary-db" : {
"type" : "source-primary-db",
"properties" : {
"type" : "SQL",
"query" : "select sdnctl.VF_MODULE_MODEL.vf_module_label as vf_module_label from sdnctl.VF_MODULE_MODEL where sdnctl.VF_MODULE_MODEL.customization_uuid=:customizationid",
"input-key-mapping" : {
"customizationid" : "vf-module-model-customization-uuid"
},
"output-key-mapping" : {
"vf-module-label" : "vf_module_label"
},
"key-dependencies" : [ "vf-module-model-customization-uuid" ]
}
}
}
}
|