diff options
71 files changed, 5627 insertions, 3987 deletions
diff --git a/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/artifact_types.json b/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/artifact_types.json new file mode 100644 index 000000000..da498e35e --- /dev/null +++ b/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/artifact_types.json @@ -0,0 +1,16 @@ +{ + "artifact_types" : { + "artifact-mapping-resource" : { + "description" : "Resource Mapping File used along with Configuration template", + "version" : "1.0.0", + "derived_from" : "tosca.artifacts.Implementation", + "file_ext" : [ "json" ] + }, + "artifact-template-velocity" : { + "description" : " Velocity Template used for Configuration", + "version" : "1.0.0", + "derived_from" : "tosca.artifacts.Implementation", + "file_ext" : [ "vtl" ] + } + } +}
\ No newline at end of file diff --git a/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/data_types.json b/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/data_types.json new file mode 100644 index 000000000..8c304c40b --- /dev/null +++ b/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/data_types.json @@ -0,0 +1,3 @@ +{ + "data_types" : { } +}
\ No newline at end of file diff --git a/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/node_types.json b/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/node_types.json new file mode 100644 index 000000000..f94214ada --- /dev/null +++ b/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/node_types.json @@ -0,0 +1,253 @@ +{ + "node_types" : { + "component-resource-resolution" : { + "description" : "This is Resource Assignment Component API", + "version" : "1.0.0", + "attributes" : { + "assignment-params" : { + "required" : true, + "type" : "string" + } + }, + "capabilities" : { + "component-node" : { + "type" : "tosca.capabilities.Node" + } + }, + "interfaces" : { + "ResourceResolutionComponent" : { + "operations" : { + "process" : { + "inputs" : { + "resolution-key" : { + "description" : "Key for service instance related correlation.", + "required" : false, + "type" : "string" + }, + "store-result" : { + "description" : "Whether or not to store the output.", + "required" : false, + "type" : "boolean" + }, + "resource-type" : { + "description" : "Request type.", + "required" : false, + "type" : "string" + }, + "artifact-prefix-names" : { + "description" : "Template , Resource Assignment Artifact Prefix names", + "required" : true, + "type" : "list", + "entry_schema" : { + "type" : "string" + } + }, + "request-id" : { + "description" : "Request Id, Unique Id for the request.", + "required" : true, + "type" : "string" + }, + "resource-id" : { + "description" : "Resource Id.", + "required" : false, + "type" : "string" + }, + "action-name" : { + "description" : "Action Name of the process", + "required" : false, + "type" : "string" + }, + "dynamic-properties" : { + "description" : "Dynamic Json Content or DSL Json reference.", + "required" : false, + "type" : "json" + } + }, + "outputs" : { + "resource-assignment-params" : { + "required" : true, + "type" : "string" + }, + "status" : { + "required" : true, + "type" : "string" + } + } + } + } + } + }, + "derived_from" : "tosca.nodes.Component" + }, + "source-capability" : { + "description" : "This is Component Resource Source Node Type", + "version" : "1.0.0", + "properties" : { + "script-type" : { + "required" : true, + "type" : "string", + "constraints" : [ { + "valid_values" : [ "kotlin", "internal", "jython" ] + } ], + "default" : "kotlin" + }, + "script-class-reference" : { + "description" : "Capability reference name for internal and kotlin, for jython script file path", + "required" : true, + "type" : "string" + }, + "instance-dependencies" : { + "description" : "Instance dependency Names to Inject to Kotlin / Jython Script.", + "required" : false, + "type" : "list", + "entry_schema" : { + "type" : "string" + } + }, + "key-dependencies" : { + "description" : "Resource Resolution dependency dictionary names.", + "required" : true, + "type" : "list", + "entry_schema" : { + "type" : "string" + } + } + }, + "derived_from" : "tosca.nodes.ResourceSource" + }, + "source-default" : { + "description" : "This is Default Resource Source Node Type", + "version" : "1.0.0", + "properties" : { }, + "derived_from" : "tosca.nodes.ResourceSource" + }, + "source-input" : { + "description" : "This is Input Resource Source Node Type", + "version" : "1.0.0", + "properties" : { }, + "derived_from" : "tosca.nodes.ResourceSource" + }, + "source-processor-db" : { + "description" : "This is Database Resource Source Node Type", + "version" : "1.0.0", + "properties" : { + "type" : { + "required" : true, + "type" : "string", + "constraints" : [ { + "valid_values" : [ "SQL", "PLSQL" ] + } ] + }, + "endpoint-selector" : { + "required" : false, + "type" : "string" + }, + "query" : { + "required" : true, + "type" : "string" + }, + "input-key-mapping" : { + "required" : false, + "type" : "map", + "entry_schema" : { + "type" : "string" + } + }, + "output-key-mapping" : { + "required" : false, + "type" : "map", + "entry_schema" : { + "type" : "string" + } + }, + "key-dependencies" : { + "required" : true, + "type" : "list", + "entry_schema" : { + "type" : "string" + } + } + }, + "derived_from" : "tosca.nodes.ResourceSource" + }, + "source-rest" : { + "description" : "This is Rest Resource Source Node Type", + "version" : "1.0.0", + "properties" : { + "type" : { + "required" : true, + "type" : "string", + "constraints" : [ { + "valid_values" : [ "JSON" ] + } ], + "default" : "JSON" + }, + "verb" : { + "required" : true, + "type" : "string", + "constraints" : [ { + "valid_values" : [ "GET", "POST", "DELETE", "PUT" ] + } ], + "default" : "GET" + }, + "payload" : { + "required" : false, + "type" : "string", + "default" : "" + }, + "endpoint-selector" : { + "required" : false, + "type" : "string" + }, + "url-path" : { + "required" : true, + "type" : "string" + }, + "path" : { + "required" : true, + "type" : "string" + }, + "expression-type" : { + "required" : false, + "type" : "string", + "constraints" : [ { + "valid_values" : [ "JSON_PATH", "JSON_POINTER" ] + } ], + "default" : "JSON_PATH" + }, + "input-key-mapping" : { + "required" : false, + "type" : "map", + "entry_schema" : { + "type" : "string" + } + }, + "output-key-mapping" : { + "required" : false, + "type" : "map", + "entry_schema" : { + "type" : "string" + } + }, + "key-dependencies" : { + "required" : true, + "type" : "list", + "entry_schema" : { + "type" : "string" + } + } + }, + "derived_from" : "tosca.nodes.ResourceSource" + }, + "tosca.nodes.Component" : { + "description" : "This is default Component Node", + "version" : "1.0.0", + "derived_from" : "tosca.nodes.Root" + }, + "tosca.nodes.ResourceSource" : { + "description" : "TOSCA base type for Resource Sources", + "version" : "1.0.0", + "derived_from" : "tosca.nodes.Root" + } + } +}
\ No newline at end of file diff --git a/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/policy_types.json b/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/policy_types.json new file mode 100644 index 000000000..1e44cc70a --- /dev/null +++ b/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/policy_types.json @@ -0,0 +1,3 @@ +{ + "policy_types" : { } +}
\ No newline at end of file diff --git a/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/relationship_types.json b/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/relationship_types.json new file mode 100644 index 000000000..4ddd7a57c --- /dev/null +++ b/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/relationship_types.json @@ -0,0 +1,3 @@ +{ + "relationship_types" : { } +}
\ No newline at end of file diff --git a/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/resources_definition_types.json b/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/resources_definition_types.json new file mode 100644 index 000000000..18d0acb4f --- /dev/null +++ b/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/resources_definition_types.json @@ -0,0 +1,1004 @@ +{ + "aic-cloud-region" : { + "tags" : "aic-cloud-region", + "name" : "aic-cloud-region", + "property" : { + "description" : "aic-cloud-region", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input", + "properties" : { } + } + } + }, + "image_name" : { + "tags" : "image_name", + "name" : "image_name", + "property" : { + "description" : "image_name", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input" + }, + "primary-config-data" : { + "type" : "source-rest", + "properties" : { + "type" : "JSON", + "url-path" : "config/GENERIC-RESOURCE-API:services/service/$service-instance-id/service-data/vnfs/vnf/$vnf-id/vnf-data/vnf-topology/vnf-parameters-data/param/image_name", + "path" : "/param/0/value", + "input-key-mapping" : { + "service-instance-id" : "service-instance-id", + "vnf-id" : "vnf-id" + }, + "output-key-mapping" : { + "image_name" : "value" + }, + "key-dependencies" : [ "service-instance-id", "vnf-id" ] + } + } + } + }, + "key_name" : { + "tags" : "key_name", + "name" : "key_name", + "property" : { + "description" : "key_name", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input" + }, + "primary-config-data" : { + "type" : "source-rest", + "properties" : { + "type" : "JSON", + "url-path" : "config/GENERIC-RESOURCE-API:services/service/$service-instance-id/service-data/vnfs/vnf/$vnf-id/vnf-data/vnf-topology/vnf-parameters-data/param/key_name", + "path" : "/param/0/value", + "input-key-mapping" : { + "service-instance-id" : "service-instance-id", + "vnf-id" : "vnf-id" + }, + "output-key-mapping" : { + "key_name" : "value" + }, + "key-dependencies" : [ "service-instance-id", "vnf-id" ] + } + } + } + }, + "nexus_artifact_repo" : { + "tags" : "nexus_artifact_repo", + "name" : "nexus_artifact_repo", + "property" : { + "description" : "nexus_artifact_repo", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "default" : { + "type" : "source-default", + "properties" : { } + }, + "input" : { + "type" : "source-input", + "properties" : { } + } + } + }, + "nf-role" : { + "tags" : "nf-role", + "name" : "nf-role", + "property" : { + "description" : "vnf/nf-role", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "default" : { + "type" : "source-default", + "properties" : { } + }, + "processor-db" : { + "type" : "source-processor-db", + "properties" : { + "type" : "SQL", + "query" : "select sdnctl.VF_MODEL.nf_role as vf_model_role from sdnctl.VF_MODEL where sdnctl.VF_MODEL.customization_uuid=:vnfmodelcustomizationuuid", + "input-key-mapping" : { + "vnfmodelcustomizationuuid" : "vnf-model-customization-uuid" + }, + "output-key-mapping" : { + "nf-role" : "vf_model_role" + }, + "key-dependencies" : [ "vnf-model-customization-uuid" ] + } + } + } + }, + "nfc-naming-code" : { + "tags" : "nfc-naming-code", + "name" : "nfc-naming-code", + "property" : { + "description" : "nfc-naming-code", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "processor-db" : { + "type" : "source-processor-db", + "properties" : { + "type" : "SQL", + "query" : "select nfc_naming_code as nfc_naming_code from sdnctl.VFC_MODEL where customization_uuid=:vfccustomizationuuid", + "input-key-mapping" : { + "vfccustomizationuuid" : "vfccustomizationuuid" + }, + "output-key-mapping" : { + "nfc-naming-code" : "nfc_naming_code" + }, + "key-dependencies" : [ "vfccustomizationuuid" ] + } + } + } + }, + "onap_private_net_cidr" : { + "tags" : "onap_private_net_cidr", + "name" : "onap_private_net_cidr", + "property" : { + "description" : "onap_private_net_cidr", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "processor-db" : { + "type" : "source-processor-db", + "properties" : { + "type" : "SQL", + "query" : "select sdnctl.IPAM_IP_POOL.prefix as prefix from sdnctl.IPAM_IP_POOL where description = \"private\"", + "output-key-mapping" : { + "onap_private_net_cidr" : "prefix" + } + } + } + } + }, + "onap_private_net_id" : { + "tags" : "onap_private_net_id", + "name" : "onap_private_net_id", + "property" : { + "description" : "onap_private_net_id", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input" + }, + "primary-config-data" : { + "type" : "source-rest", + "properties" : { + "type" : "JSON", + "url-path" : "config/GENERIC-RESOURCE-API:services/service/$service-instance-id/service-data/vnfs/vnf/$vnf-id/vnf-data/vnf-topology/vnf-parameters-data/param/onap_private_net_id", + "path" : "/param/0/value", + "input-key-mapping" : { + "service-instance-id" : "service-instance-id", + "vnf-id" : "vnf-id" + }, + "output-key-mapping" : { + "onap_private_net_id" : "value" + }, + "key-dependencies" : [ "service-instance-id", "vnf-id" ] + } + } + } + }, + "onap_private_subnet_id" : { + "tags" : "onap_private_subnet_id", + "name" : "onap_private_subnet_id", + "property" : { + "description" : "onap_private_subnet_id", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input" + }, + "primary-config-data" : { + "type" : "source-rest", + "properties" : { + "type" : "JSON", + "url-path" : "config/GENERIC-RESOURCE-API:services/service/$service-instance-id/service-data/vnfs/vnf/$vnf-id/vnf-data/vnf-topology/vnf-parameters-data/param/onap_private_subnet_id", + "path" : "/param/0/value", + "input-key-mapping" : { + "service-instance-id" : "service-instance-id", + "vnf-id" : "vnf-id" + }, + "output-key-mapping" : { + "onap_private_subnet_id" : "value" + }, + "key-dependencies" : [ "service-instance-id", "vnf-id" ] + } + } + } + }, + "private-prefix-id" : { + "tags" : "private-prefix-id", + "name" : "private-prefix-id", + "property" : { + "description" : "private-prefix-id", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "processor-db" : { + "type" : "source-processor-db", + "properties" : { + "type" : "SQL", + "query" : "select sdnctl.IPAM_IP_POOL.prefix_id as prefix_id from sdnctl.IPAM_IP_POOL where description = \"private\"", + "output-key-mapping" : { + "private-prefix-id" : "prefix_id" + } + } + } + } + }, + "protected-prefix-id" : { + "tags" : "protected-prefix-id", + "name" : "protected-prefix-id", + "property" : { + "description" : "protected-prefix-id", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "processor-db" : { + "type" : "source-processor-db", + "properties" : { + "type" : "SQL", + "query" : "select sdnctl.IPAM_IP_POOL.prefix_id as prefix_id from sdnctl.IPAM_IP_POOL where description = \"protected\"", + "output-key-mapping" : { + "protected-prefix-id" : "prefix_id" + } + } + } + } + }, + "protected_private_net_cidr" : { + "tags" : "protected_private_net_cidr", + "name" : "protected_private_net_cidr", + "property" : { + "description" : "protected_private_net_cidr", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "processor-db" : { + "type" : "source-processor-db", + "properties" : { + "type" : "SQL", + "query" : "select sdnctl.IPAM_IP_POOL.prefix as prefix from sdnctl.IPAM_IP_POOL where description = \"protected\"", + "output-key-mapping" : { + "protected_private_net_cidr" : "prefix" + } + } + } + } + }, + "pub_key" : { + "tags" : "pub_key", + "name" : "pub_key", + "property" : { + "description" : "pub_key", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input" + }, + "primary-config-data" : { + "type" : "source-rest", + "properties" : { + "type" : "JSON", + "url-path" : "config/GENERIC-RESOURCE-API:services/service/$service-instance-id/service-data/vnfs/vnf/$vnf-id/vnf-data/vnf-topology/vnf-parameters-data/param/pub_key", + "path" : "/param/0/value", + "input-key-mapping" : { + "service-instance-id" : "service-instance-id", + "vnf-id" : "vnf-id" + }, + "output-key-mapping" : { + "pub_key" : "value" + }, + "key-dependencies" : [ "service-instance-id", "vnf-id" ] + } + } + } + }, + "public_net_id" : { + "tags" : "public_net_id", + "name" : "public_net_id", + "property" : { + "description" : "public_net_id", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "default" : { + "type" : "source-default", + "properties" : { } + }, + "input" : { + "type" : "source-input" + } + } + }, + "sec_group" : { + "tags" : "sec_group", + "name" : "sec_group", + "property" : { + "description" : "sec_group", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "default" : { + "type" : "source-default", + "properties" : { } + }, + "input" : { + "type" : "source-input", + "properties" : { } + } + } + }, + "service-instance-id" : { + "tags" : "service-instance-id, tosca.datatypes.Root, data_type", + "name" : "service-instance-id", + "property" : { + "description" : "To be provided", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input", + "properties" : { } + }, + "any-db" : { + "type" : "source-processor-db", + "properties" : { + "query" : "SELECT artifact_name FROM BLUEPRINT_RUNTIME where artifact_version=\"1.0.0\"", + "input-key-mapping" : { }, + "output-key-mapping" : { + "service-instance-id" : "artifact_name" + } + } + }, + "processor-db" : { + "type" : "source-processor-db", + "properties" : { + "query" : "SELECT artifact_name FROM BLUEPRINT_RUNTIME where artifact_version=\"1.0.0\"", + "input-key-mapping" : { }, + "output-key-mapping" : { + "service-instance-id" : "artifact_name" + } + } + }, + "capability" : { + "type" : "source-capability", + "properties" : { + "script-type" : "jython", + "script-class-reference" : "SampleRAProcessor", + "instance-dependencies" : [ ] + } + } + } + }, + "unprotected-prefix-id" : { + "tags" : "unprotected-prefix-id", + "name" : "unprotected-prefix-id", + "property" : { + "description" : "unprotected-prefix-id", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "processor-db" : { + "type" : "source-processor-db", + "properties" : { + "type" : "SQL", + "query" : "select sdnctl.IPAM_IP_POOL.prefix_id as prefix_id from sdnctl.IPAM_IP_POOL where description = \"unprotected\"", + "output-key-mapping" : { + "unprotected-prefix-id" : "prefix_id" + } + } + } + } + }, + "unprotected_private_net_cidr" : { + "tags" : "unprotected_private_net_cidr", + "name" : "unprotected_private_net_cidr", + "property" : { + "description" : "unprotected_private_net_cidr", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "processor-db" : { + "type" : "source-processor-db", + "properties" : { + "type" : "SQL", + "query" : "select sdnctl.IPAM_IP_POOL.prefix as prefix from sdnctl.IPAM_IP_POOL where description = \"unprotected\"", + "output-key-mapping" : { + "unprotected_private_net_cidr" : "prefix" + } + } + } + } + }, + "vf-module-id" : { + "tags" : "vf-module-id", + "name" : "vf-module-id", + "property" : { + "description" : "vf-module-id", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input", + "properties" : { } + } + } + }, + "vf-module-label" : { + "tags" : "vf-module-label", + "name" : "vf-module-label", + "property" : { + "description" : "vf-module-label", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "processor-db" : { + "type" : "source-processor-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" ] + } + } + } + }, + "vf-module-model-customization-uuid" : { + "tags" : "vf-module-model-customization-uuid", + "name" : "vf-module-model-customization-uuid", + "property" : { + "description" : "vf-module-model-customization-uuid", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input", + "properties" : { } + } + } + }, + "vf-module-type" : { + "tags" : "vf-module-type", + "name" : "vf-module-type", + "property" : { + "description" : "vf-module-type", + "type" : "string" + }, + "updated-by" : "adetalhouet", + "sources" : { + "processor-db" : { + "type" : "source-processor-db", + "properties" : { + "type" : "SQL", + "query" : "select sdnctl.demo.value as value from sdnctl.demo where sdnctl.demo.id=:vfmoduleid", + "input-key-mapping" : { + "vfmoduleid" : "vf-module-number" + }, + "output-key-mapping" : { + "vf-module-type" : "value" + }, + "key-dependencies" : [ "vf-module-number" ] + } + } + } + }, + "vf-naming-policy" : { + "tags" : "vf-naming-policy", + "name" : "vf-naming-policy", + "property" : { + "description" : "vf-naming-policy", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "default" : { + "type" : "source-default", + "properties" : { } + }, + "processor-db" : { + "type" : "source-processor-db", + "properties" : { + "type" : "SQL", + "query" : "select sdnctl.VF_MODEL.naming_policy as vf_naming_policy from sdnctl.VF_MODEL where sdnctl.VF_MODEL.customization_uuid=:vnf_model_customization_uuid", + "input-key-mapping" : { + "vnf_model_customization_uuid" : "vnf-model-customization-uuid" + }, + "output-key-mapping" : { + "vf-naming-policy" : "vf_naming_policy" + }, + "key-dependencies" : [ "vnf-model-customization-uuid" ] + } + } + } + }, + "vf-nf-code" : { + "tags" : "vf-nf-code", + "name" : "vf-nf-code", + "property" : { + "description" : "vf-nf-code", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "processor-db" : { + "type" : "source-processor-db", + "properties" : { + "type" : "SQL", + "query" : "select sdnctl.VF_MODEL.nf_code as vf_nf_code from sdnctl.VF_MODEL where sdnctl.VF_MODEL.customization_uuid=:customizationid", + "input-key-mapping" : { + "customizationid" : "vnf-model-customization-uuid" + }, + "output-key-mapping" : { + "vf-nf-code" : "vf_nf_code" + }, + "key-dependencies" : [ "vnf-model-customization-uuid" ] + } + } + } + }, + "vf_module_name" : { + "tags" : "vf_module_name", + "name" : "vf_module_name", + "property" : { + "description" : "vf_module_name", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input", + "properties" : { } + } + } + }, + "vfccustomizationuuid" : { + "tags" : "vfccustomizationuuid, tosca.datatypes.Root, data_type", + "name" : "vfccustomizationuuid", + "property" : { + "description" : "vfccustomizationuuid", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "processor-db" : { + "type" : "source-processor-db", + "properties" : { + "type" : "SQL", + "query" : "select sdnctl.VF_MODULE_TO_VFC_MAPPING.vfc_customization_uuid as vnf_customid from sdnctl.VF_MODULE_TO_VFC_MAPPING where vm_count = 1 and sdnctl.VF_MODULE_TO_VFC_MAPPING.vf_module_customization_uuid=:vfmodulecustomizationuuid", + "input-key-mapping" : { + "vfmodulecustomizationuuid" : "vf-module-model-customization-uuid" + }, + "output-key-mapping" : { + "vfccustomizationuuid" : "vnf_customid" + }, + "key-dependencies" : [ "vf-module-model-customization-uuid" ] + } + } + } + }, + "vfw_name_0" : { + "tags" : "vfw_name_0", + "name" : "vfw_name_0", + "property" : { + "description" : "vfw_name_0", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input", + "properties" : { } + } + } + }, + "vfw_private_ip_0" : { + "tags" : "vfw_private_ip_0", + "name" : "vfw_private_ip_0", + "property" : { + "description" : "vfw_private_ip_0", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input", + "properties" : { } + }, + "primary-config-data" : { + "type" : "source-rest", + "properties" : { + "type" : "JSON", + "url-path" : "config/GENERIC-RESOURCE-API:services/service/$service-instance-id/service-data/vnfs/vnf/$vnf-id/vnf-data/vnf-topology/vnf-parameters-data/param/vfw_private_ip_0", + "path" : "/param/0/value", + "expression-type" : "JSON_POINTER", + "input-key-mapping" : { + "service-instance-id" : "service-instance-id", + "vnf-id" : "vnf-id" + }, + "output-key-mapping" : { + "vfw_private_ip_0" : "value" + }, + "key-dependencies" : [ "service-instance-id", "vnf-id" ] + } + } + } + }, + "vfw_private_ip_1" : { + "tags" : "vfw_private_ip_1", + "name" : "vfw_private_ip_1", + "property" : { + "description" : "vfw_private_ip_1", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input", + "properties" : { } + }, + "primary-config-data" : { + "type" : "source-rest", + "properties" : { + "type" : "JSON", + "url-path" : "config/GENERIC-RESOURCE-API:services/service/$service-instance-id/service-data/vnfs/vnf/$vnf-id/vnf-data/vnf-topology/vnf-parameters-data/param/vfw_private_ip_1", + "path" : "/param/0/value", + "expression-type" : "JSON_POINTER", + "input-key-mapping" : { + "service-instance-id" : "service-instance-id", + "vnf-id" : "vnf-id" + }, + "output-key-mapping" : { + "vfw_private_ip_1" : "value" + }, + "key-dependencies" : [ "service-instance-id", "vnf-id" ] + } + } + } + }, + "vfw_private_ip_2" : { + "tags" : "vfw_private_ip_2", + "name" : "vfw_private_ip_2", + "property" : { + "description" : "vfw_private_ip_2", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input" + } + } + }, + "vm-type" : { + "tags" : "vm-type", + "name" : "vm-type", + "property" : { + "description" : "vm-type", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "processor-db" : { + "type" : "source-processor-db", + "properties" : { + "type" : "SQL", + "query" : "select VFC_MODEL.vm_type as vm_type from VFC_MODEL where customization_uuid=:vfccustomizationuuid", + "input-key-mapping" : { + "vfccustomizationuuid" : "vfccustomizationuuid" + }, + "output-key-mapping" : { + "vm-type" : "vm_type" + }, + "key-dependencies" : [ "vfccustomizationuuid" ] + } + } + } + }, + "vnf-id" : { + "tags" : "vnf-id", + "name" : "vnf-id", + "property" : { + "description" : "vnf-id", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input", + "properties" : { } + } + } + }, + "vnf-model-customization-uuid" : { + "tags" : "vnf-model-customization-uuid", + "name" : "vnf-model-customization-uuid", + "property" : { + "description" : "vnf-model-customization-uuid", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input", + "properties" : { } + } + } + }, + "vnf-name" : { + "tags" : "vnf-name, tosca.datatypes.Root, data_type", + "name" : "vnf-name", + "property" : { + "description" : "vnf-name", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "primary-config-data" : { + "type" : "source-rest", + "properties" : { + "type" : "JSON", + "url-path" : "config/GENERIC-RESOURCE-API:services/service/$service-instance-id/service-data/vnfs/vnf/$vnf-id/vnf-data/vnf-topology/vnf-parameters-data/param/vnf_name", + "path" : "/param/0/value", + "expression-type" : "JSON_POINTER", + "input-key-mapping" : { + "service-instance-id" : "service-instance-id", + "vnf-id" : "vnf-id" + }, + "output-key-mapping" : { + "vnf-name" : "value" + }, + "key-dependencies" : [ "service-instance-id", "vnf-id" ] + } + } + } + }, + "vnf_name" : { + "tags" : "vnf_name", + "name" : "vnf_name", + "property" : { + "description" : "vnf_name", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "default" : { + "type" : "source-default", + "properties" : { } + }, + "input" : { + "type" : "source-input", + "properties" : { } + }, + "primary-config-data" : { + "type" : "source-rest", + "properties" : { + "type" : "JSON", + "url-path" : "config/GENERIC-RESOURCE-API:services/service/$service-instance-id/service-data/vnfs/vnf/$vnf-id/vnf-data/vnf-topology/vnf-parameters-data/param/vnf_name", + "path" : "/param/0/value", + "input-key-mapping" : { + "service-instance-id" : "service-instance-id", + "vnf-id" : "vnf-id" + }, + "output-key-mapping" : { + "vnf_name" : "value" + }, + "key-dependencies" : [ "service-instance-id", "vnf-id" ] + } + } + } + }, + "vnfc-model-invariant-uuid" : { + "tags" : "vnfc-model-invariant-uuid", + "name" : "vnfc-model-invariant-uuid", + "property" : { + "description" : "vnfc-model-invariant-uuid for SRIOV VPE template", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "processor-db" : { + "type" : "source-processor-db", + "properties" : { + "type" : "SQL", + "query" : "select VFC_MODEL.invariant_uuid as vfc_invariant_uuid from VFC_MODEL where customization_uuid=:vfccustomizationuuid", + "input-key-mapping" : { + "vfccustomizationuuid" : "vfccustomizationuuid" + }, + "output-key-mapping" : { + "vnfc-model-invariant-uuid" : "vfc_invariant_uuid" + }, + "key-dependencies" : [ "vfccustomizationuuid" ] + } + } + } + }, + "vnfc-model-version" : { + "tags" : "vnfc-model-version", + "name" : "vnfc-model-version", + "property" : { + "description" : "vnfc-model-version for SRIOV VPE template", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "processor-db" : { + "type" : "source-processor-db", + "properties" : { + "type" : "SQL", + "query" : "select VFC_MODEL.version as vnfc_model_version from VFC_MODEL where customization_uuid=:vfccustomizationuuid", + "input-key-mapping" : { + "vfccustomizationuuid" : "vfccustomizationuuid" + }, + "output-key-mapping" : { + "vnfc-model-version" : "vnfc_model_version" + }, + "key-dependencies" : [ "vfccustomizationuuid" ] + } + } + } + }, + "vpg_name_0" : { + "tags" : "vpg_name_0", + "name" : "vpg_name_0", + "property" : { + "description" : "vpg_name_0", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input", + "properties" : { } + } + } + }, + "vpg_private_ip_0" : { + "tags" : "vpg_private_ip_0", + "name" : "vpg_private_ip_0", + "property" : { + "description" : "vpg_private_ip_0", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input", + "properties" : { } + }, + "primary-config-data" : { + "type" : "source-rest", + "properties" : { + "type" : "JSON", + "url-path" : "config/GENERIC-RESOURCE-API:services/service/$service-instance-id/service-data/vnfs/vnf/$vnf-id/vnf-data/vnf-topology/vnf-parameters-data/param/vpg_private_ip_0", + "path" : "/param/0/value", + "expression-type" : "JSON_POINTER", + "input-key-mapping" : { + "service-instance-id" : "service-instance-id", + "vnf-id" : "vnf-id" + }, + "output-key-mapping" : { + "vpg_private_ip_0" : "value" + }, + "key-dependencies" : [ "service-instance-id", "vnf-id" ] + } + } + } + }, + "vpg_private_ip_1" : { + "tags" : "vpg_private_ip_1", + "name" : "vpg_private_ip_1", + "property" : { + "description" : "vpg_private_ip_1", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input", + "properties" : { } + } + } + }, + "vsn_name_0" : { + "tags" : "vsn_name_0", + "name" : "vsn_name_0", + "property" : { + "description" : "vsn_name_0", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input", + "properties" : { } + } + } + }, + "vsn_private_ip_0" : { + "tags" : "vsn_private_ip_0", + "name" : "vsn_private_ip_0", + "property" : { + "description" : "vsn_private_ip_0", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input", + "properties" : { } + }, + "primary-config-data" : { + "type" : "source-rest", + "properties" : { + "type" : "JSON", + "url-path" : "config/GENERIC-RESOURCE-API:services/service/$service-instance-id/service-data/vnfs/vnf/$vnf-id/vnf-data/vnf-topology/vnf-parameters-data/param/vsn_private_ip_0", + "path" : "/param/0/value", + "expression-type" : "JSON_POINTER", + "input-key-mapping" : { + "service-instance-id" : "service-instance-id", + "vnf-id" : "vnf-id" + }, + "output-key-mapping" : { + "vsn_private_ip_0" : "value" + }, + "key-dependencies" : [ "service-instance-id", "vnf-id" ] + } + } + } + }, + "vsn_private_ip_1" : { + "tags" : "vsn_private_ip_1", + "name" : "vsn_private_ip_1", + "property" : { + "description" : "vsn_private_ip_1", + "type" : "string" + }, + "updated-by" : "Singal, Kapil <ks220y@att.com>", + "sources" : { + "input" : { + "type" : "source-input" + } + } + } +}
\ No newline at end of file diff --git a/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/vFW_spinup.json b/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/vFW_spinup.json index e1d9be006..a4d90adfe 100644 --- a/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/vFW_spinup.json +++ b/components/model-catalog/blueprint-model/service-blueprint/vFW/Definitions/vFW_spinup.json @@ -1,3613 +1,102 @@ { "metadata": { - "template_author": "aa0419", + "template_author": "Alexis de Talhouët", + "author-email": "adetalhouet89@gmail.com", + "user-groups": "ADMIN, OPERATION", "template_name": "vFW_spinup", "template_version": "1.0.0", - "service-type": "vFW", - "template_tags": "vFW, ONAP", - "release": "1810", - "vnf-type": "VFW" + "template_tags": "vFW" }, "topology_template": { - "inputs": { - "request-id": { - "required": true, - "type": "string" - }, - "service-instance-id": { - "required": true, - "type": "string" - }, - "scope-type": { - "required": true, - "type": "string" - }, - "action-name": { - "required": true, - "type": "string" - }, - "hostname": { - "required": true, - "type": "string" - }, - "resource-assignment-request": { - "description": "This is Dynamic Data type for the receipe resource-assignment-action.", - "required": false, - "type": "dt-resource-assignment-request" - } - }, - "node_templates": { - "resource-assignment-ra-component": { - "type": "component-resource-assignment", - "interfaces": { - "ResourceAssignmentComponent": { - "operations": { - "process": { - "inputs": { - "action-name": "{ \"get_input\" : \"action-name\" }", - "service-template-name": "{ \"get_attribute\" : \"service-template-name\" }", - "template-names": [ - "vFW_vNF_Artifact", - "base_template", - "vfw", - "vsn", - "vpg" - ], - "service-template-version": "{ \"get_attribute\" : \"service-template-version\" }", - "resource-type": "vnf-type", - "request-id": "{ \"get_input\" : \"request-id\" }", - "resource-id": "{ \"get_input\" : \"hostname\" }" - }, - "outputs": { - "resource-assignment-params": "Success", - "status": "status" - } - } + "workflows": { + "resource-assignment": { + "steps": { + "resource-assignment": { + "description": "Resource Assign Workflow", + "target": "resource-assignment" + } + }, + "inputs" : { + "template-prefix" : { + "required" : true, + "type" : "list", + "entry_schema" : { + "type" : "string" + } + } + }, + "outputs": { + "meshed-template": { + "type": "json", + "value": { + "get_attribute": [ + "resource-assignment", + "assignment-params" + ] } } - }, - "capabilities": { - "component-node": { - - } } - }, - "resource-assignment-action": { - "type": "dg-resource-assignment", - "properties": { - "mode": "sync", - "version": "LATEST", - "is-start-flow": false - }, - "interfaces": { - "CONFIG": { - "operations": { - "ResourceAssignment": { - "inputs": { - "params": [ - - ] + } + }, + "node_templates": { + "resource-assignment" : { + "type" : "component-resource-resolution", + "interfaces" : { + "ResourceResolutionComponent" : { + "operations" : { + "process" : { + "inputs" : { + "artifact-prefix-names" : { + "get_input" : "artifact-name" + } } } } } }, - "capabilities": { - "dg-node": { - + "artifacts": { + "base-template": { + "type": "artifact-template-velocity", + "file": "Templates/base-template.vtl" }, - "content": { - "properties": { - "type": "json" - } - } - }, - "requirements": { - "component-dependency": { - "capability": "component-node", - "node": "resource-assignment-ra-component", - "relationship": "tosca.relationships.DependsOn" - } - } - }, - "vFW_vNF_Artifact": { - "type": "artifact-config-template", - "properties": { - "action-names": [ - "resource-assignment-action" - ] - }, - "capabilities": { - "content": { - "properties": { - "content": "vFW_vNF_Artifact" - } + "base-mapping": { + "type": "artifact-mapping-resource", + "file": "Templates/base-mapping.json" }, - "mapping": { - "properties": { - "mapping": [ - { - "name": "service-instance-id", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "service-instance-id", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vnf-id", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnf-id", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vnf-model-customization-uuid", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnf-model-customization-uuid", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "aic-cloud-region", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "aic-cloud-region", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "onap_private_net_id", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "onap_private_net_id", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "onap_private_subnet_id", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "onap_private_subnet_id", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "key_name", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "key_name", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "image_name", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - }, - "default": "Ubuntu 14.04 LTS Generic" - }, - "input-param": false, - "dictionary-name": "image_name", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "pub_key", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - }, - "default": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKXDgoo3+WOqcUG8/5uUbk81+yczgwC4Y8ywTmuQqbNxlY1oQ0YxdMUqUnhitSXs5S/yRuAVOYHwGg2mCs20oAINrP+mxBI544AMIb9itPjCtgqtE2EWo6MmnFGbHB4Sx3XioE7F4VPsh7japsIwzOjbrQe+Mua1TGQ5d4nfEOQaaglXLLPFfuc7WbhbJbK6Q7rHqZfRcOwAMXgDoBqlyqKeiKwnumddo2RyNT8ljYmvB6buz7KnMinzo7qB0uktVT05FH9Rg0CTWH5norlG5qXgP2aukL0gk1ph8iAt7uYLf1ktp+LJI2gaF6L0/qli9EmVCSLr1uJ38Q8CBflhkh" - }, - "input-param": false, - "dictionary-name": "pub_key", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vnf_name", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnf_name", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vf-naming-policy", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - }, - "default": "SDNC_Policy.Config_MS_ONAP_VFW_NAMING_TIMESTAMP" - }, - "input-param": false, - "dictionary-name": "vf-naming-policy", - "dictionary-source": "default", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "nf-role", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "nf-role", - "dictionary-source": "primary-db", - "dependencies": [ - "vnf-model-customization-uuid" - ], - "version": 0 - }, - { - "name": "vfw_private_ip_1", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vfw_private_ip_1", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vfw_private_ip_0", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vfw_private_ip_0", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vpg_private_ip_0", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vpg_private_ip_0", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vsn_private_ip_0", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vsn_private_ip_0", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "protected-prefix-id", - "property": { - "description": "", - "required": false, - "type": "integer", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "protected-prefix-id", - "dictionary-source": "primary-db", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "unprotected-prefix-id", - "property": { - "description": "", - "required": false, - "type": "integer", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "unprotected-prefix-id", - "dictionary-source": "primary-db", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vf-nf-code", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vf-nf-code", - "dictionary-source": "primary-db", - "dependencies": [ - "vnf-model-customization-uuid" - ], - "version": 0 - } - ] - } - } - } - }, - "vfw": { - "type": "artifact-config-template", - "capabilities": { - "content": { - "properties": { - "content": "vfw" - } + "vfw-template": { + "type": "artifact-template-velocity", + "file": "Templates/vfw-template.vtl" }, - "mapping": { - "properties": { - "mapping": [ - { - "name": "service-instance-id", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "service-instance-id", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vnf-id", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnf-id", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vnf-name", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnf-name", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "vnf-model-customization-uuid", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnf-model-customization-uuid", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vf-module-id", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vf-module-id", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vf-module-type", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vf-module-type", - "dictionary-source": "primary-db", - "dependencies": [ - "vf-module-model-customization-uuid" - ], - "version": 0 - }, - { - "name": "vf-module-model-customization-uuid", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vf-module-model-customization-uuid", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vfccustomizationuuid", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vfccustomizationuuid", - "dictionary-source": "primary-db", - "dependencies": [ - "vf-module-model-customization-uuid" - ], - "version": 0 - }, - { - "name": "aic-cloud-region", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "aic-cloud-region", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vm-type", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vm-type", - "dictionary-source": "primary-db", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vnfc-model-invariant-uuid", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnfc-model-invariant-uuid", - "dictionary-source": "primary-db", - "dependencies": [ - "vfccustomizationuuid" - ], - "version": 0 - }, - { - "name": "vnfc-model-version", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnfc-model-version", - "dictionary-source": "primary-db", - "dependencies": [ - "vfccustomizationuuid" - ], - "version": 0 - }, - { - "name": "nf-role", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - }, - "default": "vFW" - }, - "input-param": false, - "dictionary-name": "nf-role", - "dictionary-source": "default", - "dependencies": [ - "vnf-model-customization-uuid" - ], - "version": 0 - }, - { - "name": "nfc-naming-code", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "nfc-naming-code", - "dictionary-source": "primary-db", - "dependencies": [ - "vfccustomizationuuid" - ], - "version": 0 - }, - { - "name": "public_net_id", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - }, - "default": "public_net_id" - }, - "input-param": false, - "dictionary-name": "public_net_id", - "dictionary-source": "default", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "image_name", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "image_name", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "key_name", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "key_name", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "pub_key", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "pub_key", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "onap_private_net_id", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "onap_private_net_id", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "onap_private_subnet_id", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "onap_private_subnet_id", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "unprotected_private_net_cidr", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "unprotected_private_net_cidr", - "dictionary-source": "primary-db", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "protected_private_net_cidr", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "protected_private_net_cidr", - "dictionary-source": "primary-db", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "nexus_artifact_repo", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - }, - "default": "nexus_artifact_repo" - }, - "input-param": false, - "dictionary-name": "nexus_artifact_repo", - "dictionary-source": "default", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "sec_group", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - }, - "default": "onap_sg_PUhf" - }, - "input-param": false, - "dictionary-name": "sec_group", - "dictionary-source": "default", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "onap_private_net_cidr", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "onap_private_net_cidr", - "dictionary-source": "primary-db", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vfw_name_0", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vfw_name_0", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vf-naming-policy", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - }, - "default": "SDNC_Policy.Config_MS_ONAP_VFW_NAMING_TIMESTAMP" - }, - "input-param": false, - "dictionary-name": "vf-naming-policy", - "dictionary-source": "default", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vf_module_name", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vf_module_name", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vf-module-label", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vf-module-label", - "dictionary-source": "primary-db", - "dependencies": [ - "vf-module-model-customization-uuid" - ], - "version": 0 - }, - { - "name": "private-prefix-id", - "property": { - "description": "", - "required": false, - "type": "integer", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "private-prefix-id", - "dictionary-source": "primary-db", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vfw_private_ip_2", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vfw_private_ip_2", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vnf_name", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnf_name", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - } - ] - } - } - } - }, - "vpg": { - "type": "artifact-config-template", - "capabilities": { - "content": { - "properties": { - "content": "vpg" - } + "vfw-mapping": { + "type": "artifact-mapping-resource", + "file": "Templates/vfw-mapping.json" }, - "mapping": { - "properties": { - "mapping": [ - { - "name": "service-instance-id", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "service-instance-id", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vnf-id", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnf-id", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vnf-name", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnf-name", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "vnf-model-customization-uuid", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnf-model-customization-uuid", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vf-module-id", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vf-module-id", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vf-module-type", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vf-module-type", - "dictionary-source": "primary-db", - "dependencies": [ - "vf-module-model-customization-uuid" - ], - "version": 0 - }, - { - "name": "vf-module-model-customization-uuid", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vf-module-model-customization-uuid", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vfccustomizationuuid", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vfccustomizationuuid", - "dictionary-source": "primary-db", - "dependencies": [ - "vf-module-model-customization-uuid" - ], - "version": 0 - }, - { - "name": "aic-cloud-region", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "aic-cloud-region", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vm-type", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vm-type", - "dictionary-source": "primary-db", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vnfc-model-invariant-uuid", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnfc-model-invariant-uuid", - "dictionary-source": "primary-db", - "dependencies": [ - "vfccustomizationuuid" - ], - "version": 0 - }, - { - "name": "vnfc-model-version", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnfc-model-version", - "dictionary-source": "primary-db", - "dependencies": [ - "vfccustomizationuuid" - ], - "version": 0 - }, - { - "name": "nf-role", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - }, - "default": "vPG" - }, - "input-param": false, - "dictionary-name": "nf-role", - "dictionary-source": "default", - "dependencies": [ - "vnf-model-customization-uuid" - ], - "version": 0 - }, - { - "name": "nfc-naming-code", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "nfc-naming-code", - "dictionary-source": "primary-db", - "dependencies": [ - "vfccustomizationuuid" - ], - "version": 0 - }, - { - "name": "public_net_id", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - }, - "default": "public_net_id" - }, - "input-param": false, - "dictionary-name": "public_net_id", - "dictionary-source": "default", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "image_name", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "image_name", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "key_name", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "key_name", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "pub_key", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "pub_key", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "onap_private_net_id", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "onap_private_net_id", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "onap_private_subnet_id", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "onap_private_subnet_id", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "unprotected_private_net_cidr", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "unprotected_private_net_cidr", - "dictionary-source": "primary-db", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "onap_private_net_cidr", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "onap_private_net_cidr", - "dictionary-source": "primary-db", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vfw_private_ip_0", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vfw_private_ip_0", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "vsn_private_ip_0", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vsn_private_ip_0", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "nexus_artifact_repo", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - }, - "default": "nexus_artifact_repo" - }, - "input-param": false, - "dictionary-name": "nexus_artifact_repo", - "dictionary-source": "default", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "sec_group", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - }, - "default": "onap_sg_PUhf" - }, - "input-param": false, - "dictionary-name": "sec_group", - "dictionary-source": "default", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vpg_private_ip_0", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vpg_private_ip_0", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "vpg_name_0", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vpg_name_0", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vf-naming-policy", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - }, - "default": "SDNC_Policy.Config_MS_ONAP_VPG_NAMING_TIMESTAMP" - }, - "input-param": false, - "dictionary-name": "vf-naming-policy", - "dictionary-source": "default", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vf_module_name", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vf_module_name", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vf-module-label", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vf-module-label", - "dictionary-source": "primary-db", - "dependencies": [ - "vf-module-model-customization-uuid" - ], - "version": 0 - }, - { - "name": "private-prefix-id", - "property": { - "description": "", - "required": false, - "type": "integer", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "private-prefix-id", - "dictionary-source": "primary-db", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vpg_private_ip_1", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vpg_private_ip_1", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - } - ] - } - } - } - }, - "vsn": { - "type": "artifact-config-template", - "capabilities": { - "content": { - "properties": { - "content": "vsn" - } + "vfw-vnf-template": { + "type": "artifact-template-velocity", + "file": "Templates/vfw-vnf-template.vtl" }, - "mapping": { - "properties": { - "mapping": [ - { - "name": "service-instance-id", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "service-instance-id", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vnf-id", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnf-id", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vnf-name", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnf-name", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "vnf-model-customization-uuid", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnf-model-customization-uuid", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vf-module-id", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vf-module-id", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vf-module-type", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vf-module-type", - "dictionary-source": "primary-db", - "dependencies": [ - "vf-module-model-customization-uuid" - ], - "version": 0 - }, - { - "name": "vf-module-model-customization-uuid", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vf-module-model-customization-uuid", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vfccustomizationuuid", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vfccustomizationuuid", - "dictionary-source": "primary-db", - "dependencies": [ - "vf-module-model-customization-uuid" - ], - "version": 0 - }, - { - "name": "aic-cloud-region", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "aic-cloud-region", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vm-type", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vm-type", - "dictionary-source": "primary-db", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vnfc-model-invariant-uuid", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnfc-model-invariant-uuid", - "dictionary-source": "primary-db", - "dependencies": [ - "vfccustomizationuuid" - ], - "version": 0 - }, - { - "name": "vnfc-model-version", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnfc-model-version", - "dictionary-source": "primary-db", - "dependencies": [ - "vfccustomizationuuid" - ], - "version": 0 - }, - { - "name": "nf-role", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - }, - "default": "vSN" - }, - "input-param": false, - "dictionary-name": "nf-role", - "dictionary-source": "default", - "dependencies": [ - "vnf-model-customization-uuid" - ], - "version": 0 - }, - { - "name": "nfc-naming-code", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "nfc-naming-code", - "dictionary-source": "primary-db", - "dependencies": [ - "vfccustomizationuuid" - ], - "version": 0 - }, - { - "name": "image_name", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "image_name", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "public_net_id", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - }, - "value": "public_net_id", - "default": "public_net_id" - }, - "input-param": false, - "dictionary-name": "public_net_id", - "dictionary-source": "default", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "key_name", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "key_name", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "pub_key", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "pub_key", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "onap_private_net_id", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "onap_private_net_id", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "onap_private_subnet_id", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "onap_private_subnet_id", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "unprotected_private_net_cidr", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "unprotected_private_net_cidr", - "dictionary-source": "primary-db", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "protected_private_net_cidr", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "protected_private_net_cidr", - "dictionary-source": "primary-db", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "onap_private_net_cidr", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "onap_private_net_cidr", - "dictionary-source": "primary-db", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "nexus_artifact_repo", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - }, - "value": "nexus_artifact_repo", - "default": "nexus_artifact_repo" - }, - "input-param": false, - "dictionary-name": "nexus_artifact_repo", - "dictionary-source": "default", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "sec_group", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - }, - "default": "onap_sg_PUhf" - }, - "input-param": false, - "dictionary-name": "sec_group", - "dictionary-source": "default", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vfw_private_ip_1", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vfw_private_ip_1", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "vsn_name_0", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vsn_name_0", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vf-naming-policy", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - }, - "default": "SDNC_Policy.Config_MS_ONAP_VSN_NAMING_TIMESTAMP" - }, - "input-param": false, - "dictionary-name": "vf-naming-policy", - "dictionary-source": "default", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vf_module_name", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vf_module_name", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vf-module-label", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vf-module-label", - "dictionary-source": "primary-db", - "dependencies": [ - "vf-module-model-customization-uuid" - ], - "version": 0 - }, - { - "name": "private-prefix-id", - "property": { - "description": "", - "required": false, - "type": "integer", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "private-prefix-id", - "dictionary-source": "primary-db", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vsn_private_ip_1", - "property": { - "description": "", - "required": false, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vsn_private_ip_1", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "protected-prefix-id", - "property": { - "description": "", - "required": false, - "type": "integer", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "protected-prefix-id", - "dictionary-source": "primary-db", - "dependencies": [ - - ], - "version": 0 - } - ] - } - } - } - }, - "base_template": { - "type": "artifact-config-template", - "capabilities": { - "content": { - "properties": { - "content": "base_template" - } + "vfw-vnf-mapping": { + "type": "artifact-mapping-resource", + "file": "Templates/vfw-vnf-mapping.json" }, - "mapping": { - "properties": { - "mapping": [ - { - "name": "service-instance-id", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "service-instance-id", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vf-module-type", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vf-module-type", - "dictionary-source": "primary-db", - "dependencies": [ - "vf-module-model-customization-uuid" - ], - "version": 0 - }, - { - "name": "vf-module-model-customization-uuid", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vf-module-model-customization-uuid", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vnf-id", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnf-id", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vf-module-id", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vf-module-id", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "vnf-model-customization-uuid", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnf-model-customization-uuid", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "aic-cloud-region", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "aic-cloud-region", - "dictionary-source": "input", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "nf-role", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "nf-role", - "dictionary-source": "primary-db", - "dependencies": [ - "vnf-model-customization-uuid" - ], - "version": 0 - }, - { - "name": "vnf-name", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "vnf-name", - "dictionary-source": "primary-config-data", - "dependencies": [ - "service-instance-id", - "vnf-id" - ], - "version": 0 - }, - { - "name": "unprotected_private_net_cidr", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "unprotected_private_net_cidr", - "dictionary-source": "primary-db", - "dependencies": [ - - ], - "version": 0 - }, - { - "name": "protected_private_net_cidr", - "property": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - }, - "input-param": false, - "dictionary-name": "protected_private_net_cidr", - "dictionary-source": "primary-db", - "dependencies": [ - - ], - "version": 0 - } - ] - } + "vpg-template": { + "type": "artifact-template-velocity", + "file": "Templates/vpg-template.vtl" + }, + "vpg-mapping": { + "type": "artifact-mapping-resource", + "file": "Templates/vpg-mapping.json" + }, + "vsn-template": { + "type": "artifact-template-velocity", + "file": "Templates/vsn-template.vtl" + }, + "vsn-mapping": { + "type": "artifact-mapping-resource", + "file": "Templates/vsn-mapping.json" } } } } - }, - "node_types": { - "tosca.nodes.Component": { - "description": "This is default Component Node", - "version": "1.0.0", - "derived_from": "tosca.nodes.Root" - }, - "tosca.nodes.Workflow": { - "description": "This is Directed Graph Node Type", - "version": "1.0.0", - "derived_from": "tosca.nodes.Root" - }, - "tosca.nodes.Artifact": { - "description": "This is Deprecated Artifact Node Type.", - "version": "1.0.0", - "derived_from": "tosca.nodes.Root" - }, - "component-resource-assignment": { - "description": "This is Resource Assignment Component API", - "version": "1.0.0", - "capabilities": { - "component-node": { - "type": "tosca.capabilities.Node" - } - }, - "interfaces": { - "ResourceAssignmentComponent": { - "operations": { - "process": { - "inputs": { - "action-name": { - "description": "Action Name of the process", - "required": true, - "type": "string" - }, - "service-template-name": { - "description": "Service Template Name.", - "required": true, - "type": "string" - }, - "service-template-version": { - "description": "Service Template Version.", - "required": true, - "type": "string" - }, - "resource-type": { - "description": "Request type.", - "required": true, - "type": "string" - }, - "template-names": { - "description": "Name of the artifact Node Templates, to get the template Content.", - "required": true, - "type": "list", - "entry_schema": { - "type": "string" - } - }, - "request-id": { - "description": "Request Id, Unique Id for the request.", - "required": true, - "type": "string" - }, - "resource-id": { - "description": "Resource Id.", - "required": true, - "type": "string" - } - }, - "outputs": { - "resource-assignment-params": { - "required": true, - "type": "string" - }, - "status": { - "required": true, - "type": "string" - } - } - } - } - } - }, - "derived_from": "tosca.nodes.Component" - }, - "dg-resource-assignment": { - "description": "This is Resource Assignment Directed Graph", - "version": "1.0.0", - "properties": { - "mode": { - "required": false, - "type": "string", - "default": "sync" - }, - "version": { - "required": false, - "type": "string", - "default": "LATEST" - }, - "is-start-flow": { - "required": false, - "type": "boolean", - "default": "false" - } - }, - "capabilities": { - "dg-node": { - "type": "tosca.capabilities.Node" - }, - "content": { - "type": "tosca.capabilities.Content", - "properties": { - "type": { - "required": false, - "type": "string", - "default": "json" - }, - "content": { - "required": false, - "type": "string" - } - } - } - }, - "requirements": { - "component-dependency": { - "capability": "component-node", - "node": "component-resource-assignment", - "relationship": "tosca.relationships.DependsOn" - } - }, - "interfaces": { - "CONFIG": { - "operations": { - "ResourceAssignment": { - "inputs": { - "params": { - "required": false, - "type": "list", - "entry_schema": { - "type": "datatype-property" - } - } - } - } - } - } - }, - "derived_from": "tosca.nodes.Workflow" - }, - "artifact-config-template": { - "description": "This is Configuration Velocity Template", - "version": "1.0.0", - "properties": { - "action-names": { - "required": true, - "type": "list", - "entry_schema": { - "type": "string" - } - } - }, - "capabilities": { - "content": { - "type": "tosca.capabilities.Content", - "properties": { - "content": { - "required": true, - "type": "string" - } - } - }, - "mapping": { - "type": "tosca.capabilities.Mapping", - "properties": { - "mapping": { - "required": false, - "type": "list", - "entry_schema": { - "type": "datatype-resource-assignment" - } - } - } - } - }, - "derived_from": "tosca.nodes.Artifact" - } - }, - "data_types": { - "datatype-property": { - "version": "1.0.0", - "description": "This is Entry point Input Data Type, which is dynamic datatype, The parameter names will be populated during the Design time for each inputs", - "properties": { - "type": { - "required": true, - "type": "string" - }, - "description": { - "required": false, - "type": "string" - }, - "required": { - "required": false, - "type": "boolean" - }, - "default": { - "required": false, - "type": "string" - }, - "entry_schema": { - "required": false, - "type": "string" - } - }, - "derived_from": "tosca.datatypes.Root" - }, - "datatype-resource-assignment": { - "version": "1.0.0", - "description": "This is Resource Assignment Data Type", - "properties": { - "property": { - "required": true, - "type": "datatype-property" - }, - "input-param": { - "required": true, - "type": "boolean" - }, - "dictionary-name": { - "required": false, - "type": "string" - }, - "dictionary-source": { - "required": false, - "type": "string" - }, - "dependencies": { - "required": true, - "type": "list", - "entry_schema": { - "type": "string" - } - }, - "status": { - "required": false, - "type": "string" - }, - "message": { - "required": false, - "type": "string" - }, - "updated-date": { - "required": false, - "type": "string" - }, - "updated-by": { - "required": false, - "type": "string" - } - }, - "derived_from": "tosca.datatypes.Root" - }, - "dt-resource-assignment-request": { - "version": "1.0.0", - "description": "This is Dynamic Data type definition generated from resource mapping for the config template name activate-template.", - "properties": { - "password-user-ftap-nsm": { - "required": true, - "type": "string", - "default": "password-user-ftap" - }, - "reservation-id": { - "required": true, - "type": "string", - "value": "123" - }, - "security-manager-resource-key": { - "required": true, - "type": "string", - "value": "sdnc" - }, - "password-user-ftap": { - "description": "", - "required": true, - "type": "string", - "status": "", - "constraints": [ - { - - } - ], - "entry_schema": { - "type": "" - } - } - }, - "derived_from": "tosca.datatypes.Dynamic" - } } }
\ No newline at end of file diff --git a/components/model-catalog/blueprint-model/service-blueprint/vFW/TOSCA-Metadata/TOSCA.meta b/components/model-catalog/blueprint-model/service-blueprint/vFW/TOSCA-Metadata/TOSCA.meta index 7918c1159..edbb54e2d 100644 --- a/components/model-catalog/blueprint-model/service-blueprint/vFW/TOSCA-Metadata/TOSCA.meta +++ b/components/model-catalog/blueprint-model/service-blueprint/vFW/TOSCA-Metadata/TOSCA.meta @@ -1,6 +1,6 @@ TOSCA-Meta-File-Version: 1.0.0 CSAR-Version: 1.0 -Created-By: ONAP +Created-By: Alexis de Talhouët Entry-Definitions: Definitions/vFW_spinup.json -Template-Tags: ONAP, vFW +Template-Tags: test Content-Type: application/vnd.oasis.bpmn diff --git a/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/base-mapping.json b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/base-mapping.json new file mode 100644 index 000000000..258174882 --- /dev/null +++ b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/base-mapping.json @@ -0,0 +1,267 @@ +[ + { + "name": "service-instance-id", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "service-instance-id", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vf-module-type", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vf-module-type", + "dictionary-source": "processor-db", + "dependencies": [ + "vf-module-model-customization-uuid" + ], + "version": 0 + }, + { + "name": "vf-module-model-customization-uuid", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vf-module-model-customization-uuid", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vnf-id", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnf-id", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vf-module-id", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vf-module-id", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vnf-model-customization-uuid", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnf-model-customization-uuid", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "aic-cloud-region", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "aic-cloud-region", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "nf-role", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "nf-role", + "dictionary-source": "processor-db", + "dependencies": [ + "vnf-model-customization-uuid" + ], + "version": 0 + }, + { + "name": "vnf-name", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnf-name", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "unprotected_private_net_cidr", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "unprotected_private_net_cidr", + "dictionary-source": "processor-db", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "protected_private_net_cidr", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "protected_private_net_cidr", + "dictionary-source": "processor-db", + "dependencies": [ + + ], + "version": 0 + } +]
\ No newline at end of file diff --git a/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/base_template.vtl b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/base-template.vtl index 271c50738..271c50738 100644 --- a/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/base_template.vtl +++ b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/base-template.vtl diff --git a/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vfw-mapping.json b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vfw-mapping.json new file mode 100644 index 000000000..c07007cbc --- /dev/null +++ b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vfw-mapping.json @@ -0,0 +1,781 @@ +[ + { + "name": "service-instance-id", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "service-instance-id", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vnf-id", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnf-id", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vnf-name", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnf-name", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "vnf-model-customization-uuid", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnf-model-customization-uuid", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vf-module-id", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vf-module-id", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vf-module-type", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vf-module-type", + "dictionary-source": "processor-db", + "dependencies": [ + "vf-module-model-customization-uuid" + ], + "version": 0 + }, + { + "name": "vf-module-model-customization-uuid", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vf-module-model-customization-uuid", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vfccustomizationuuid", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vfccustomizationuuid", + "dictionary-source": "processor-db", + "dependencies": [ + "vf-module-model-customization-uuid" + ], + "version": 0 + }, + { + "name": "aic-cloud-region", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "aic-cloud-region", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vm-type", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vm-type", + "dictionary-source": "processor-db", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vnfc-model-invariant-uuid", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnfc-model-invariant-uuid", + "dictionary-source": "processor-db", + "dependencies": [ + "vfccustomizationuuid" + ], + "version": 0 + }, + { + "name": "vnfc-model-version", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnfc-model-version", + "dictionary-source": "processor-db", + "dependencies": [ + "vfccustomizationuuid" + ], + "version": 0 + }, + { + "name": "nf-role", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + }, + "default": "vFW" + }, + "input-param": false, + "dictionary-name": "nf-role", + "dictionary-source": "default", + "dependencies": [ + "vnf-model-customization-uuid" + ], + "version": 0 + }, + { + "name": "nfc-naming-code", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "nfc-naming-code", + "dictionary-source": "processor-db", + "dependencies": [ + "vfccustomizationuuid" + ], + "version": 0 + }, + { + "name": "public_net_id", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + }, + "default": "public_net_id" + }, + "input-param": false, + "dictionary-name": "public_net_id", + "dictionary-source": "default", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "image_name", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "image_name", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "key_name", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "key_name", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "pub_key", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "pub_key", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "onap_private_net_id", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "onap_private_net_id", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "onap_private_subnet_id", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "onap_private_subnet_id", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "unprotected_private_net_cidr", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "unprotected_private_net_cidr", + "dictionary-source": "processor-db", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "protected_private_net_cidr", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "protected_private_net_cidr", + "dictionary-source": "processor-db", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "nexus_artifact_repo", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + }, + "default": "nexus_artifact_repo" + }, + "input-param": false, + "dictionary-name": "nexus_artifact_repo", + "dictionary-source": "default", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "sec_group", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + }, + "default": "onap_sg_PUhf" + }, + "input-param": false, + "dictionary-name": "sec_group", + "dictionary-source": "default", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "onap_private_net_cidr", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "onap_private_net_cidr", + "dictionary-source": "processor-db", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vfw_name_0", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vfw_name_0", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vf-naming-policy", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + }, + "default": "SDNC_Policy.Config_MS_ONAP_VFW_NAMING_TIMESTAMP" + }, + "input-param": false, + "dictionary-name": "vf-naming-policy", + "dictionary-source": "default", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vf_module_name", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vf_module_name", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vf-module-label", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vf-module-label", + "dictionary-source": "processor-db", + "dependencies": [ + "vf-module-model-customization-uuid" + ], + "version": 0 + }, + { + "name": "private-prefix-id", + "property": { + "description": "", + "required": false, + "type": "integer", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "private-prefix-id", + "dictionary-source": "processor-db", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vfw_private_ip_2", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vfw_private_ip_2", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vnf_name", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnf_name", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + } +]
\ No newline at end of file diff --git a/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vfw.vtl b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vfw-template.vtl index 6864a36fe..6864a36fe 100644 --- a/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vfw.vtl +++ b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vfw-template.vtl diff --git a/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vfw-vnf-mapping.json b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vfw-vnf-mapping.json new file mode 100644 index 000000000..d764572e4 --- /dev/null +++ b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vfw-vnf-mapping.json @@ -0,0 +1,461 @@ +[ + { + "name": "service-instance-id", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "service-instance-id", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vnf-id", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnf-id", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vnf-model-customization-uuid", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnf-model-customization-uuid", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "aic-cloud-region", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "aic-cloud-region", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "onap_private_net_id", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "onap_private_net_id", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "onap_private_subnet_id", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "onap_private_subnet_id", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "key_name", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "key_name", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "image_name", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + }, + "default": "Ubuntu 14.04 LTS Generic" + }, + "input-param": false, + "dictionary-name": "image_name", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "pub_key", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + }, + "default": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKXDgoo3+WOqcUG8/5uUbk81+yczgwC4Y8ywTmuQqbNxlY1oQ0YxdMUqUnhitSXs5S/yRuAVOYHwGg2mCs20oAINrP+mxBI544AMIb9itPjCtgqtE2EWo6MmnFGbHB4Sx3XioE7F4VPsh7japsIwzOjbrQe+Mua1TGQ5d4nfEOQaaglXLLPFfuc7WbhbJbK6Q7rHqZfRcOwAMXgDoBqlyqKeiKwnumddo2RyNT8ljYmvB6buz7KnMinzo7qB0uktVT05FH9Rg0CTWH5norlG5qXgP2aukL0gk1ph8iAt7uYLf1ktp+LJI2gaF6L0/qli9EmVCSLr1uJ38Q8CBflhkh" + }, + "input-param": false, + "dictionary-name": "pub_key", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vnf_name", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnf_name", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vf-naming-policy", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + }, + "default": "SDNC_Policy.Config_MS_ONAP_VFW_NAMING_TIMESTAMP" + }, + "input-param": false, + "dictionary-name": "vf-naming-policy", + "dictionary-source": "default", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "nf-role", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "nf-role", + "dictionary-source": "processor-db", + "dependencies": [ + "vnf-model-customization-uuid" + ], + "version": 0 + }, + { + "name": "vfw_private_ip_1", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vfw_private_ip_1", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vfw_private_ip_0", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vfw_private_ip_0", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vpg_private_ip_0", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vpg_private_ip_0", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vsn_private_ip_0", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vsn_private_ip_0", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "protected-prefix-id", + "property": { + "description": "", + "required": false, + "type": "integer", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "protected-prefix-id", + "dictionary-source": "processor-db", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "unprotected-prefix-id", + "property": { + "description": "", + "required": false, + "type": "integer", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "unprotected-prefix-id", + "dictionary-source": "processor-db", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vf-nf-code", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vf-nf-code", + "dictionary-source": "processor-db", + "dependencies": [ + "vnf-model-customization-uuid" + ], + "version": 0 + } +]
\ No newline at end of file diff --git a/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vFW_vNF_Artifact.vtl b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vfw-vnf-template.vtl index f7947ef8f..f7947ef8f 100644 --- a/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vFW_vNF_Artifact.vtl +++ b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vfw-vnf-template.vtl diff --git a/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vpg-mapping.json b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vpg-mapping.json new file mode 100644 index 000000000..d3cfdebf8 --- /dev/null +++ b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vpg-mapping.json @@ -0,0 +1,808 @@ +[ + { + "name": "service-instance-id", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "service-instance-id", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vnf-id", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnf-id", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vnf-name", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnf-name", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "vnf-model-customization-uuid", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnf-model-customization-uuid", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vf-module-id", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vf-module-id", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vf-module-type", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vf-module-type", + "dictionary-source": "processor-db", + "dependencies": [ + "vf-module-model-customization-uuid" + ], + "version": 0 + }, + { + "name": "vf-module-model-customization-uuid", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vf-module-model-customization-uuid", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vfccustomizationuuid", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vfccustomizationuuid", + "dictionary-source": "processor-db", + "dependencies": [ + "vf-module-model-customization-uuid" + ], + "version": 0 + }, + { + "name": "aic-cloud-region", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "aic-cloud-region", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vm-type", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vm-type", + "dictionary-source": "processor-db", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vnfc-model-invariant-uuid", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnfc-model-invariant-uuid", + "dictionary-source": "processor-db", + "dependencies": [ + "vfccustomizationuuid" + ], + "version": 0 + }, + { + "name": "vnfc-model-version", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnfc-model-version", + "dictionary-source": "processor-db", + "dependencies": [ + "vfccustomizationuuid" + ], + "version": 0 + }, + { + "name": "nf-role", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + }, + "default": "vPG" + }, + "input-param": false, + "dictionary-name": "nf-role", + "dictionary-source": "default", + "dependencies": [ + "vnf-model-customization-uuid" + ], + "version": 0 + }, + { + "name": "nfc-naming-code", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "nfc-naming-code", + "dictionary-source": "processor-db", + "dependencies": [ + "vfccustomizationuuid" + ], + "version": 0 + }, + { + "name": "public_net_id", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + }, + "default": "public_net_id" + }, + "input-param": false, + "dictionary-name": "public_net_id", + "dictionary-source": "default", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "image_name", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "image_name", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "key_name", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "key_name", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "pub_key", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "pub_key", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "onap_private_net_id", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "onap_private_net_id", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "onap_private_subnet_id", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "onap_private_subnet_id", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "unprotected_private_net_cidr", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "unprotected_private_net_cidr", + "dictionary-source": "processor-db", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "onap_private_net_cidr", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "onap_private_net_cidr", + "dictionary-source": "processor-db", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vfw_private_ip_0", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vfw_private_ip_0", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "vsn_private_ip_0", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vsn_private_ip_0", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "nexus_artifact_repo", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + }, + "default": "nexus_artifact_repo" + }, + "input-param": false, + "dictionary-name": "nexus_artifact_repo", + "dictionary-source": "default", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "sec_group", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + }, + "default": "onap_sg_PUhf" + }, + "input-param": false, + "dictionary-name": "sec_group", + "dictionary-source": "default", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vpg_private_ip_0", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vpg_private_ip_0", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "vpg_name_0", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vpg_name_0", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vf-naming-policy", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + }, + "default": "SDNC_Policy.Config_MS_ONAP_VPG_NAMING_TIMESTAMP" + }, + "input-param": false, + "dictionary-name": "vf-naming-policy", + "dictionary-source": "default", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vf_module_name", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vf_module_name", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vf-module-label", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vf-module-label", + "dictionary-source": "processor-db", + "dependencies": [ + "vf-module-model-customization-uuid" + ], + "version": 0 + }, + { + "name": "private-prefix-id", + "property": { + "description": "", + "required": false, + "type": "integer", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "private-prefix-id", + "dictionary-source": "processor-db", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vpg_private_ip_1", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vpg_private_ip_1", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + } +]
\ No newline at end of file diff --git a/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vpg.vtl b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vpg-template.vtl index 2ff6596ee..2ff6596ee 100644 --- a/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vpg.vtl +++ b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vpg-template.vtl diff --git a/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vsn-mapping.json b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vsn-mapping.json new file mode 100644 index 000000000..84bc73185 --- /dev/null +++ b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vsn-mapping.json @@ -0,0 +1,808 @@ +[ + { + "name": "service-instance-id", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "service-instance-id", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vnf-id", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnf-id", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vnf-name", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnf-name", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "vnf-model-customization-uuid", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnf-model-customization-uuid", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vf-module-id", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vf-module-id", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vf-module-type", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vf-module-type", + "dictionary-source": "processor-db", + "dependencies": [ + "vf-module-model-customization-uuid" + ], + "version": 0 + }, + { + "name": "vf-module-model-customization-uuid", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vf-module-model-customization-uuid", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vfccustomizationuuid", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vfccustomizationuuid", + "dictionary-source": "processor-db", + "dependencies": [ + "vf-module-model-customization-uuid" + ], + "version": 0 + }, + { + "name": "aic-cloud-region", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "aic-cloud-region", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vm-type", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vm-type", + "dictionary-source": "processor-db", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vnfc-model-invariant-uuid", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnfc-model-invariant-uuid", + "dictionary-source": "processor-db", + "dependencies": [ + "vfccustomizationuuid" + ], + "version": 0 + }, + { + "name": "vnfc-model-version", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vnfc-model-version", + "dictionary-source": "processor-db", + "dependencies": [ + "vfccustomizationuuid" + ], + "version": 0 + }, + { + "name": "nf-role", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + }, + "default": "vSN" + }, + "input-param": false, + "dictionary-name": "nf-role", + "dictionary-source": "default", + "dependencies": [ + "vnf-model-customization-uuid" + ], + "version": 0 + }, + { + "name": "nfc-naming-code", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "nfc-naming-code", + "dictionary-source": "processor-db", + "dependencies": [ + "vfccustomizationuuid" + ], + "version": 0 + }, + { + "name": "image_name", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "image_name", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "public_net_id", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + }, + "value": "public_net_id", + "default": "public_net_id" + }, + "input-param": false, + "dictionary-name": "public_net_id", + "dictionary-source": "default", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "key_name", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "key_name", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "pub_key", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "pub_key", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "onap_private_net_id", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "onap_private_net_id", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "onap_private_subnet_id", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "onap_private_subnet_id", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "unprotected_private_net_cidr", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "unprotected_private_net_cidr", + "dictionary-source": "processor-db", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "protected_private_net_cidr", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "protected_private_net_cidr", + "dictionary-source": "processor-db", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "onap_private_net_cidr", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "onap_private_net_cidr", + "dictionary-source": "processor-db", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "nexus_artifact_repo", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + }, + "value": "nexus_artifact_repo", + "default": "nexus_artifact_repo" + }, + "input-param": false, + "dictionary-name": "nexus_artifact_repo", + "dictionary-source": "default", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "sec_group", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + }, + "default": "onap_sg_PUhf" + }, + "input-param": false, + "dictionary-name": "sec_group", + "dictionary-source": "default", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vfw_private_ip_1", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vfw_private_ip_1", + "dictionary-source": "primary-config-data", + "dependencies": [ + "service-instance-id", + "vnf-id" + ], + "version": 0 + }, + { + "name": "vsn_name_0", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vsn_name_0", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vf-naming-policy", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + }, + "default": "SDNC_Policy.Config_MS_ONAP_VSN_NAMING_TIMESTAMP" + }, + "input-param": false, + "dictionary-name": "vf-naming-policy", + "dictionary-source": "default", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vf_module_name", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vf_module_name", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vf-module-label", + "property": { + "description": "", + "required": true, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vf-module-label", + "dictionary-source": "processor-db", + "dependencies": [ + "vf-module-model-customization-uuid" + ], + "version": 0 + }, + { + "name": "private-prefix-id", + "property": { + "description": "", + "required": false, + "type": "integer", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "private-prefix-id", + "dictionary-source": "processor-db", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "vsn_private_ip_1", + "property": { + "description": "", + "required": false, + "type": "string", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "vsn_private_ip_1", + "dictionary-source": "input", + "dependencies": [ + + ], + "version": 0 + }, + { + "name": "protected-prefix-id", + "property": { + "description": "", + "required": false, + "type": "integer", + "status": "", + "constraints": [ + { + + } + ], + "entry_schema": { + "type": "" + } + }, + "input-param": false, + "dictionary-name": "protected-prefix-id", + "dictionary-source": "processor-db", + "dependencies": [ + + ], + "version": 0 + } +]
\ No newline at end of file diff --git a/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vsn.vtl b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vsn-template.vtl index 11fcea9fd..11fcea9fd 100644 --- a/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vsn.vtl +++ b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vsn-template.vtl diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/nexus_artifact_repo.json b/components/model-catalog/resource-dictionary/starter-dictionary/nexus_artifact_repo.json index 6b0a79e03..8b8884200 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/nexus_artifact_repo.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/nexus_artifact_repo.json @@ -7,6 +7,11 @@ "type" : "string" }, "sources" : { + "default": { + "type": "source-default", + "properties": { + } + }, "input" : { "type" : "source-input", "properties" : { diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/nf-role.json b/components/model-catalog/resource-dictionary/starter-dictionary/nf-role.json index 6da5ea22f..a26b82ff2 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/nf-role.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/nf-role.json @@ -7,8 +7,13 @@ "type" : "string" }, "sources" : { - "primary-db" : { - "type" : "source-primary-db", + "default": { + "type": "source-default", + "properties": { + } + }, + "processor-db" : { + "type" : "source-processor-db", "properties" : { "type" : "SQL", "query" : "select sdnctl.VF_MODEL.nf_role as vf_model_role from sdnctl.VF_MODEL where sdnctl.VF_MODEL.customization_uuid=:vnfmodelcustomizationuuid", diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/nfc-naming-code.json b/components/model-catalog/resource-dictionary/starter-dictionary/nfc-naming-code.json index 4e1ba2b0a..710042d5f 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/nfc-naming-code.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/nfc-naming-code.json @@ -7,8 +7,8 @@ "type" : "string" }, "sources" : { - "primary-db" : { - "type" : "source-primary-db", + "processor-db" : { + "type" : "source-processor-db", "properties" : { "type" : "SQL", "query" : "select nfc_naming_code as nfc_naming_code from sdnctl.VFC_MODEL where customization_uuid=:vfccustomizationuuid", diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/onap_private_net_cidr.json b/components/model-catalog/resource-dictionary/starter-dictionary/onap_private_net_cidr.json index 42765ee94..559ec3e81 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/onap_private_net_cidr.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/onap_private_net_cidr.json @@ -7,8 +7,8 @@ "type" : "string" }, "sources" : { - "primary-db" : { - "type" : "source-primary-db", + "processor-db" : { + "type" : "source-processor-db", "properties" : { "type" : "SQL", "query" : "select sdnctl.IPAM_IP_POOL.prefix as prefix from sdnctl.IPAM_IP_POOL where description = \"private\"", diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/primary-db-source.json b/components/model-catalog/resource-dictionary/starter-dictionary/primary-db-source.json index 26e62e85d..adba4ce3a 100644 --- a/components/model-catalog/resource-dictionary/starter-dictionary/primary-db-source.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/primary-db-source.json @@ -1,5 +1,5 @@ { - "name": "primary-db-source", + "name": "processor-db-source", "property" :{ "description": "name of the ", "type": "string" @@ -7,8 +7,8 @@ "updated-by": "brindasanth@onap.com", "tags": "bundle-id, brindasanth@onap.com", "sources": { - "primary-db": { - "type": "source-primary-db", + "processor-db": { + "type": "source-processor-db", "properties": { "query": "SELECT db-country, db-state FROM DEVICE_PROFILE WHERE profile_name = :profile_name", "input-key-mapping": { diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/private-prefix-id.json b/components/model-catalog/resource-dictionary/starter-dictionary/private-prefix-id.json index 0685401d3..3365d6685 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/private-prefix-id.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/private-prefix-id.json @@ -7,8 +7,8 @@ "type" : "string" }, "sources" : { - "primary-db" : { - "type" : "source-primary-db", + "processor-db" : { + "type" : "source-processor-db", "properties" : { "type" : "SQL", "query" : "select sdnctl.IPAM_IP_POOL.prefix_id as prefix_id from sdnctl.IPAM_IP_POOL where description = \"private\"", diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/protected-prefix-id.json b/components/model-catalog/resource-dictionary/starter-dictionary/protected-prefix-id.json index f6120f3fd..8ddf98737 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/protected-prefix-id.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/protected-prefix-id.json @@ -7,8 +7,8 @@ "type" : "string" }, "sources" : { - "primary-db" : { - "type" : "source-primary-db", + "processor-db" : { + "type" : "source-processor-db", "properties" : { "type" : "SQL", "query" : "select sdnctl.IPAM_IP_POOL.prefix_id as prefix_id from sdnctl.IPAM_IP_POOL where description = \"protected\"", diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/protected_private_net_cidr.json b/components/model-catalog/resource-dictionary/starter-dictionary/protected_private_net_cidr.json index bb477dcb6..ac12ad28f 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/protected_private_net_cidr.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/protected_private_net_cidr.json @@ -7,8 +7,8 @@ "type" : "string" }, "sources" : { - "primary-db" : { - "type" : "source-primary-db", + "processor-db" : { + "type" : "source-processor-db", "properties" : { "type" : "SQL", "query" : "select sdnctl.IPAM_IP_POOL.prefix as prefix from sdnctl.IPAM_IP_POOL where description = \"protected\"", diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/public_net_id.json b/components/model-catalog/resource-dictionary/starter-dictionary/public_net_id.json index 6cc9c2e38..a4fbc9573 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/public_net_id.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/public_net_id.json @@ -7,6 +7,11 @@ "description" : "public_net_id" }, "sources": { + "default": { + "type": "source-default", + "properties": { + } + }, "input": { "type": "source-input" } diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/sample-primary-db-source.json b/components/model-catalog/resource-dictionary/starter-dictionary/sample-primary-db-source.json index 656841f2e..c9544edad 100644 --- a/components/model-catalog/resource-dictionary/starter-dictionary/sample-primary-db-source.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/sample-primary-db-source.json @@ -5,10 +5,10 @@ "type": "string"
},
"updated-by": "brindasanth@onap.com",
- "tags": "primary-db-source, brindasanth@onap.com",
+ "tags": "processor-db-source, brindasanth@onap.com",
"sources": {
- "primary-db": {
- "type": "source-primary-db",
+ "processor-db": {
+ "type": "source-processor-db",
"properties": {
"query": "SELECT db-country, db-state FROM DEVICE_PROFILE WHERE profile_name = :profile_name",
"input-key-mapping": {
diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/sec_group.json b/components/model-catalog/resource-dictionary/starter-dictionary/sec_group.json index 017ba984d..38f07e85d 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/sec_group.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/sec_group.json @@ -7,6 +7,11 @@ "type" : "string" }, "sources" : { + "default": { + "type": "source-default", + "properties": { + } + }, "input" : { "type" : "source-input", "properties" : { diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/service-instance-id.json b/components/model-catalog/resource-dictionary/starter-dictionary/service-instance-id.json index 737c7577b..4aa022379 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/service-instance-id.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/service-instance-id.json @@ -12,7 +12,7 @@ "properties" : { } }, "any-db": { - "type": "source-primary-db", + "type": "source-processor-db", "properties": { "query": "SELECT artifact_name FROM BLUEPRINT_RUNTIME where artifact_version=\"1.0.0\"", "input-key-mapping": { @@ -22,8 +22,8 @@ } } }, - "primary-db": { - "type": "source-primary-db", + "processor-db": { + "type": "source-processor-db", "properties": { "query": "SELECT artifact_name FROM BLUEPRINT_RUNTIME where artifact_version=\"1.0.0\"", "input-key-mapping": { diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/unprotected-prefix-id.json b/components/model-catalog/resource-dictionary/starter-dictionary/unprotected-prefix-id.json index c1fc541bd..7d3475d8c 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/unprotected-prefix-id.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/unprotected-prefix-id.json @@ -7,8 +7,8 @@ "type" : "string" }, "sources" : { - "primary-db" : { - "type" : "source-primary-db", + "processor-db" : { + "type" : "source-processor-db", "properties" : { "type" : "SQL", "query" : "select sdnctl.IPAM_IP_POOL.prefix_id as prefix_id from sdnctl.IPAM_IP_POOL where description = \"unprotected\"", diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/unprotected_private_net_cidr.json b/components/model-catalog/resource-dictionary/starter-dictionary/unprotected_private_net_cidr.json index 604875500..60b846d7b 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/unprotected_private_net_cidr.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/unprotected_private_net_cidr.json @@ -7,8 +7,8 @@ "type" : "string" }, "sources" : { - "primary-db" : { - "type" : "source-primary-db", + "processor-db" : { + "type" : "source-processor-db", "properties" : { "type" : "SQL", "query" : "select sdnctl.IPAM_IP_POOL.prefix as prefix from sdnctl.IPAM_IP_POOL where description = \"unprotected\"", diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/vf-module-label.json b/components/model-catalog/resource-dictionary/starter-dictionary/vf-module-label.json index faa7ea49e..e17de2bd9 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/vf-module-label.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/vf-module-label.json @@ -7,8 +7,8 @@ "type" : "string" }, "sources" : { - "primary-db" : { - "type" : "source-primary-db", + "processor-db" : { + "type" : "source-processor-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", diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/vf-module-type.json b/components/model-catalog/resource-dictionary/starter-dictionary/vf-module-type.json index dbd51bbd9..abbe8172e 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/vf-module-type.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/vf-module-type.json @@ -7,8 +7,8 @@ "type" : "string" }, "sources" : { - "primary-db" : { - "type" : "source-primary-db", + "processor-db" : { + "type" : "source-processor-db", "properties" : { "type" : "SQL", "query" : "select vf_module_type as vf_module_type from sdnctl.VF_MODULE_MODEL where customization_uuid=:customizationid", diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/vf-naming-policy.json b/components/model-catalog/resource-dictionary/starter-dictionary/vf-naming-policy.json index 70792f86f..cae11172c 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/vf-naming-policy.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/vf-naming-policy.json @@ -7,8 +7,13 @@ "type" : "string" }, "sources" : { - "primary-db" : { - "type" : "source-primary-db", + "default": { + "type": "source-default", + "properties": { + } + }, + "processor-db" : { + "type" : "source-processor-db", "properties" : { "type" : "SQL", "query" : "select sdnctl.VF_MODEL.naming_policy as vf_naming_policy from sdnctl.VF_MODEL where sdnctl.VF_MODEL.customization_uuid=:vnf_model_customization_uuid", diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/vf-nf-code.json b/components/model-catalog/resource-dictionary/starter-dictionary/vf-nf-code.json index a21982c0c..2f839ac88 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/vf-nf-code.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/vf-nf-code.json @@ -7,8 +7,8 @@ "type" : "string" }, "sources" : { - "primary-db" : { - "type" : "source-primary-db", + "processor-db" : { + "type" : "source-processor-db", "properties" : { "type" : "SQL", "query" : "select sdnctl.VF_MODEL.nf_code as vf_nf_code from sdnctl.VF_MODEL where sdnctl.VF_MODEL.customization_uuid=:customizationid", diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/vfccustomizationuuid.json b/components/model-catalog/resource-dictionary/starter-dictionary/vfccustomizationuuid.json index 9f3e7cf17..7ed76745d 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/vfccustomizationuuid.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/vfccustomizationuuid.json @@ -7,8 +7,8 @@ "type" : "string" }, "sources" : { - "primary-db" : { - "type" : "source-primary-db", + "processor-db" : { + "type" : "source-processor-db", "properties" : { "type" : "SQL", "query" : "select sdnctl.VF_MODULE_TO_VFC_MAPPING.vfc_customization_uuid as vnf_customid from sdnctl.VF_MODULE_TO_VFC_MAPPING where vm_count = 1 and sdnctl.VF_MODULE_TO_VFC_MAPPING.vf_module_customization_uuid=:vfmodulecustomizationuuid", diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/vm-type.json b/components/model-catalog/resource-dictionary/starter-dictionary/vm-type.json index 9744316c0..a0bb60743 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/vm-type.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/vm-type.json @@ -7,8 +7,8 @@ "type" : "string" }, "sources" : { - "primary-db" : { - "type" : "source-primary-db", + "processor-db" : { + "type" : "source-processor-db", "properties" : { "type" : "SQL", "query" : "select VFC_MODEL.vm_type as vm_type from VFC_MODEL where customization_uuid=:vfccustomizationuuid", diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/vnf_name.json b/components/model-catalog/resource-dictionary/starter-dictionary/vnf_name.json index e9d8a3b48..2174914e8 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/vnf_name.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/vnf_name.json @@ -7,6 +7,16 @@ "type" : "string" }, "sources" : { + "default": { + "type": "source-default", + "properties": { + } + }, + "input": { + "type": "source-input", + "properties": { + } + }, "primary-config-data" : { "type" : "source-rest", "properties" : { diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/vnfc-model-invariant-uuid.json b/components/model-catalog/resource-dictionary/starter-dictionary/vnfc-model-invariant-uuid.json index 3d89d9dd2..40604ccdd 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/vnfc-model-invariant-uuid.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/vnfc-model-invariant-uuid.json @@ -7,8 +7,8 @@ "type" : "string" }, "sources" : { - "primary-db" : { - "type" : "source-primary-db", + "processor-db" : { + "type" : "source-processor-db", "properties" : { "type" : "SQL", "query" : "select VFC_MODEL.invariant_uuid as vfc_invariant_uuid from VFC_MODEL where customization_uuid=:vfccustomizationuuid", diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/vnfc-model-version.json b/components/model-catalog/resource-dictionary/starter-dictionary/vnfc-model-version.json index d7fb50169..75bb2e5d2 100755 --- a/components/model-catalog/resource-dictionary/starter-dictionary/vnfc-model-version.json +++ b/components/model-catalog/resource-dictionary/starter-dictionary/vnfc-model-version.json @@ -7,8 +7,8 @@ "type" : "string" }, "sources" : { - "primary-db" : { - "type" : "source-primary-db", + "processor-db" : { + "type" : "source-processor-db", "properties" : { "type" : "SQL", "query" : "select VFC_MODEL.version as vnfc_model_version from VFC_MODEL where customization_uuid=:vfccustomizationuuid", diff --git a/ms/blueprintsprocessor/application/src/main/resources/application-dev.properties b/ms/blueprintsprocessor/application/src/main/resources/application-dev.properties index 7ed4cc942..fc148bf49 100755 --- a/ms/blueprintsprocessor/application/src/main/resources/application-dev.properties +++ b/ms/blueprintsprocessor/application/src/main/resources/application-dev.properties @@ -20,7 +20,7 @@ # Web server config
server.port=8080
-blueprintsprocessor.grpcEnable=true
+blueprintsprocessor.grpcEnable=false
blueprintsprocessor.httpPort=8080
blueprintsprocessor.grpcPort=9111
diff --git a/ms/blueprintsprocessor/application/src/test/resources/logback-test.xml b/ms/blueprintsprocessor/application/src/test/resources/logback-test.xml index 0c8d93bf0..16e7d3d1b 100644 --- a/ms/blueprintsprocessor/application/src/test/resources/logback-test.xml +++ b/ms/blueprintsprocessor/application/src/test/resources/logback-test.xml @@ -19,7 +19,7 @@ <!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
- <pattern>%d{HH:mm:ss.SSS} %-5level %logger{100} - %msg%n</pattern>
+ <pattern>%d{HH:mm:ss.SSS} %-5level [%thread] %logger{50} - %msg%n</pattern>
</encoder>
</appender>
diff --git a/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/netconf/executor/NetconfComponentFunction.kt b/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/netconf/executor/NetconfComponentFunction.kt index 4b08ce8e2..be7451aa9 100644 --- a/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/netconf/executor/NetconfComponentFunction.kt +++ b/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/netconf/executor/NetconfComponentFunction.kt @@ -1,5 +1,6 @@ /* * Copyright © 2018-2019 IBM, Bell Canada. + * Modifications Copyright © 2019 IBM. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +18,7 @@ package org.onap.ccsdk.cds.blueprintsprocessor.functions.netconf.executor import com.fasterxml.jackson.databind.JsonNode +import kotlinx.coroutines.runBlocking import org.onap.ccsdk.cds.blueprintsprocessor.functions.netconf.executor.api.DeviceInfo import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.ResourceResolutionConstants import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.ResourceResolutionService @@ -38,17 +40,17 @@ abstract class NetconfComponentFunction : AbstractScriptComponentFunction() { return bluePrintRuntimeService.resolveNodeTemplateArtifact(nodeTemplateName, artifactName) } - fun resolveFromDatabase(resolutionKey: String, artifactName: String): String { - return resourceResolutionService().resolveFromDatabase(bluePrintRuntimeService, artifactName, resolutionKey) + fun resolveFromDatabase(resolutionKey: String, artifactName: String): String = runBlocking { + resourceResolutionService().resolveFromDatabase(bluePrintRuntimeService, artifactName, resolutionKey) } - fun resolveAndGenerateMessage(artifactMapping: String, artifactTemplate: String): String { - return resourceResolutionService().resolveResources(bluePrintRuntimeService, nodeTemplateName, + fun resolveAndGenerateMessage(artifactMapping: String, artifactTemplate: String): String = runBlocking { + resourceResolutionService().resolveResources(bluePrintRuntimeService, nodeTemplateName, artifactMapping, artifactTemplate) } - fun resolveAndGenerateMessage(artifactPrefix: String): String { - return resourceResolutionService().resolveResources(bluePrintRuntimeService, nodeTemplateName, + fun resolveAndGenerateMessage(artifactPrefix: String): String = runBlocking { + resourceResolutionService().resolveResources(bluePrintRuntimeService, nodeTemplateName, artifactPrefix, mapOf()) } diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionService.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionService.kt index dad804692..8a14ded61 100644 --- a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionService.kt +++ b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionService.kt @@ -1,6 +1,6 @@ /* * Copyright © 2017-2018 AT&T Intellectual Property. - * Modifications Copyright © 2018 IBM. + * Modifications Copyright © 2018-2019 IBM. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,9 @@ package org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution -import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.async +import kotlinx.coroutines.awaitAll +import kotlinx.coroutines.coroutineScope import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.db.ResourceResolutionResultService import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.processor.ResourceAssignmentProcessor import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.utils.ResourceAssignmentUtils @@ -39,22 +41,22 @@ interface ResourceResolutionService { fun registeredResourceSources(): List<String> - fun resolveFromDatabase(bluePrintRuntimeService: BluePrintRuntimeService<*>, artifactTemplate: String, - resolutionKey: String): String + suspend fun resolveFromDatabase(bluePrintRuntimeService: BluePrintRuntimeService<*>, artifactTemplate: String, + resolutionKey: String): String - fun resolveResources(bluePrintRuntimeService: BluePrintRuntimeService<*>, nodeTemplateName: String, - artifactNames: List<String>, properties: Map<String, Any>): MutableMap<String, String> + suspend fun resolveResources(bluePrintRuntimeService: BluePrintRuntimeService<*>, nodeTemplateName: String, + artifactNames: List<String>, properties: Map<String, Any>): MutableMap<String, String> - fun resolveResources(bluePrintRuntimeService: BluePrintRuntimeService<*>, nodeTemplateName: String, - artifactPrefix: String, properties: Map<String, Any>): String + suspend fun resolveResources(bluePrintRuntimeService: BluePrintRuntimeService<*>, nodeTemplateName: String, + artifactPrefix: String, properties: Map<String, Any>): String - fun resolveResources(bluePrintRuntimeService: BluePrintRuntimeService<*>, nodeTemplateName: String, - artifactMapping: String, artifactTemplate: String?): String + suspend fun resolveResources(bluePrintRuntimeService: BluePrintRuntimeService<*>, nodeTemplateName: String, + artifactMapping: String, artifactTemplate: String?): String - fun resolveResourceAssignments(blueprintRuntimeService: BluePrintRuntimeService<*>, - resourceDictionaries: MutableMap<String, ResourceDefinition>, - resourceAssignments: MutableList<ResourceAssignment>, - identifierName: String) + suspend fun resolveResourceAssignments(blueprintRuntimeService: BluePrintRuntimeService<*>, + resourceDictionaries: MutableMap<String, ResourceDefinition>, + resourceAssignments: MutableList<ResourceAssignment>, + identifierName: String) } @Service(ResourceResolutionConstants.SERVICE_RESOURCE_RESOLUTION) @@ -70,9 +72,15 @@ open class ResourceResolutionServiceImpl(private var applicationContext: Applica .map { it.substringAfter(ResourceResolutionConstants.PREFIX_RESOURCE_RESOLUTION_PROCESSOR) } } - override fun resolveResources(bluePrintRuntimeService: BluePrintRuntimeService<*>, nodeTemplateName: String, - artifactNames: List<String>, - properties: Map<String, Any>): MutableMap<String, String> { + override suspend fun resolveFromDatabase(bluePrintRuntimeService: BluePrintRuntimeService<*>, + artifactTemplate: String, + resolutionKey: String): String { + return resolutionResultService.read(bluePrintRuntimeService, artifactTemplate, resolutionKey) + } + + override suspend fun resolveResources(bluePrintRuntimeService: BluePrintRuntimeService<*>, nodeTemplateName: String, + artifactNames: List<String>, + properties: Map<String, Any>): MutableMap<String, String> { val resolvedParams: MutableMap<String, String> = hashMapOf() artifactNames.forEach { artifactName -> @@ -82,8 +90,8 @@ open class ResourceResolutionServiceImpl(private var applicationContext: Applica return resolvedParams } - override fun resolveResources(bluePrintRuntimeService: BluePrintRuntimeService<*>, nodeTemplateName: String, - artifactPrefix: String, properties: Map<String, Any>): String { + override suspend fun resolveResources(bluePrintRuntimeService: BluePrintRuntimeService<*>, nodeTemplateName: String, + artifactPrefix: String, properties: Map<String, Any>): String { // Velocity Artifact Definition Name val artifactTemplate = "$artifactPrefix-template" @@ -95,20 +103,17 @@ open class ResourceResolutionServiceImpl(private var applicationContext: Applica if (properties.containsKey(ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_STORE_RESULT) && properties[ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_STORE_RESULT] as Boolean) { resolutionResultService.write(properties, result, bluePrintRuntimeService, artifactPrefix) + log.info("resolution saved into database successfully : ($properties)") } return result } - override fun resolveFromDatabase(bluePrintRuntimeService: BluePrintRuntimeService<*>, artifactTemplate: String, - resolutionKey: String): String { - return resolutionResultService.read(bluePrintRuntimeService, artifactTemplate, resolutionKey) - } - override fun resolveResources(bluePrintRuntimeService: BluePrintRuntimeService<*>, nodeTemplateName: String, - artifactMapping: String, artifactTemplate: String?): String { + override suspend fun resolveResources(bluePrintRuntimeService: BluePrintRuntimeService<*>, nodeTemplateName: String, + artifactMapping: String, artifactTemplate: String?): String { - var resolvedContent = "" + val resolvedContent: String log.info("Resolving resource for template artifact($artifactTemplate) with resource assignment artifact($artifactMapping)") val identifierName = artifactTemplate ?: "no-template" @@ -128,7 +133,6 @@ open class ResourceResolutionServiceImpl(private var applicationContext: Applica val resourceDictionaries: MutableMap<String, ResourceDefinition> = JacksonUtils.getMapFromFile(dictionaryFile, ResourceDefinition::class.java) - ?: throw BluePrintProcessorException("couldn't get Dictionary Definitions") // Resolve resources resolveResourceAssignments(bluePrintRuntimeService, resourceDictionaries, resourceAssignments, identifierName) @@ -153,46 +157,51 @@ open class ResourceResolutionServiceImpl(private var applicationContext: Applica * name, then get the type of the Resource Definition, Get the instance for the Resource Type and process the * request. */ - override fun resolveResourceAssignments(blueprintRuntimeService: BluePrintRuntimeService<*>, - resourceDictionaries: MutableMap<String, ResourceDefinition>, - resourceAssignments: MutableList<ResourceAssignment>, - identifierName: String) { + override suspend fun resolveResourceAssignments(blueprintRuntimeService: BluePrintRuntimeService<*>, + resourceDictionaries: MutableMap<String, ResourceDefinition>, + resourceAssignments: MutableList<ResourceAssignment>, + identifierName: String) { val bulkSequenced = BulkResourceSequencingUtils.process(resourceAssignments) val resourceAssignmentRuntimeService = ResourceAssignmentUtils.transformToRARuntimeService(blueprintRuntimeService, identifierName) - bulkSequenced.map { batchResourceAssignments -> - batchResourceAssignments.filter { it.name != "*" && it.name != "start" } - .forEach { resourceAssignment -> - val dictionaryName = resourceAssignment.dictionaryName - val dictionarySource = resourceAssignment.dictionarySource - /** - * Get the Processor name - */ - val processorName = processorName(dictionaryName!!, dictionarySource!!, resourceDictionaries) - - val resourceAssignmentProcessor = - applicationContext.getBean(processorName) as? ResourceAssignmentProcessor - ?: throw BluePrintProcessorException("failed to get resource processor for name($processorName) " + - "for resource assignment(${resourceAssignment.name})") - try { - // Set BluePrint Runtime Service - resourceAssignmentProcessor.raRuntimeService = resourceAssignmentRuntimeService - // Set Resource Dictionaries - resourceAssignmentProcessor.resourceDictionaries = resourceDictionaries - // TODO ("Implement suspend function") - runBlocking { - // Invoke Apply Method - resourceAssignmentProcessor.applyNB(resourceAssignment) + coroutineScope { + bulkSequenced.forEach { batchResourceAssignments -> + // Execute Non Dependent Assignments in parallel ( ie asynchronously ) + val deferred = batchResourceAssignments.filter { it.name != "*" && it.name != "start" } + .map { resourceAssignment -> + async { + val dictionaryName = resourceAssignment.dictionaryName + val dictionarySource = resourceAssignment.dictionarySource + /** + * Get the Processor name + */ + val processorName = processorName(dictionaryName!!, dictionarySource!!, resourceDictionaries) + + val resourceAssignmentProcessor = + applicationContext.getBean(processorName) as? ResourceAssignmentProcessor + ?: throw BluePrintProcessorException("failed to get resource processor ($processorName) " + + "for resource assignment(${resourceAssignment.name})") + try { + // Set BluePrint Runtime Service + resourceAssignmentProcessor.raRuntimeService = resourceAssignmentRuntimeService + // Set Resource Dictionaries + resourceAssignmentProcessor.resourceDictionaries = resourceDictionaries + // Invoke Apply Method + resourceAssignmentProcessor.applyNB(resourceAssignment) + // Set errors from RA + blueprintRuntimeService.setBluePrintError(resourceAssignmentRuntimeService.getBluePrintError()) + } catch (e: RuntimeException) { + throw BluePrintProcessorException(e) + } } - // Set errors from RA - blueprintRuntimeService.setBluePrintError(resourceAssignmentRuntimeService.getBluePrintError()) - } catch (e: RuntimeException) { - throw BluePrintProcessorException(e) } - } + log.debug("Resolving (${deferred.size})resources parallel.") + deferred.awaitAll() + } } + } @@ -202,13 +211,12 @@ open class ResourceResolutionServiceImpl(private var applicationContext: Applica */ private fun processorName(dictionaryName: String, dictionarySource: String, resourceDictionaries: MutableMap<String, ResourceDefinition>): String { - var processorName: String? = null - when (dictionarySource) { + val processorName: String = when (dictionarySource) { "input" -> { - processorName = "${ResourceResolutionConstants.PREFIX_RESOURCE_RESOLUTION_PROCESSOR}source-input" + "${ResourceResolutionConstants.PREFIX_RESOURCE_RESOLUTION_PROCESSOR}source-input" } "default" -> { - processorName = "${ResourceResolutionConstants.PREFIX_RESOURCE_RESOLUTION_PROCESSOR}source-default" + "${ResourceResolutionConstants.PREFIX_RESOURCE_RESOLUTION_PROCESSOR}source-default" } else -> { val resourceDefinition = resourceDictionaries[dictionaryName] @@ -217,8 +225,7 @@ open class ResourceResolutionServiceImpl(private var applicationContext: Applica val resourceSource = resourceDefinition.sources[dictionarySource] ?: throw BluePrintProcessorException("couldn't get resource definition $dictionaryName source($dictionarySource)") - processorName = ResourceResolutionConstants.PREFIX_RESOURCE_RESOLUTION_PROCESSOR - .plus(resourceSource.type) + ResourceResolutionConstants.PREFIX_RESOURCE_RESOLUTION_PROCESSOR.plus(resourceSource.type) } } checkNotEmptyOrThrow(processorName, diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/db/ResourceResolutionResultService.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/db/ResourceResolutionResultService.kt index 225251fce..cbc68bbc9 100644 --- a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/db/ResourceResolutionResultService.kt +++ b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/db/ResourceResolutionResultService.kt @@ -1,5 +1,6 @@ /* * Copyright (C) 2019 Bell Canada. + * Modifications Copyright © 2019 IBM. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +16,8 @@ */ package org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.db +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.ResourceResolutionConstants import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintException @@ -26,8 +29,8 @@ import java.util.* @Service class ResourceResolutionResultService(private val resourceResolutionRepository: ResourceResolutionRepository) { - fun write(properties: Map<String, Any>, result: String, bluePrintRuntimeService: BluePrintRuntimeService<*>, - artifactPrefix: String) { + suspend fun write(properties: Map<String, Any>, result: String, bluePrintRuntimeService: BluePrintRuntimeService<*>, + artifactPrefix: String) = withContext(Dispatchers.IO) { val metadata = bluePrintRuntimeService.bluePrintContext().metadata!! @@ -37,7 +40,7 @@ class ResourceResolutionResultService(private val resourceResolutionRepository: resourceResolutionResult.blueprintVersion = metadata[BluePrintConstants.METADATA_TEMPLATE_VERSION] resourceResolutionResult.blueprintName = metadata[BluePrintConstants.METADATA_TEMPLATE_NAME] resourceResolutionResult.resolutionKey = - properties[ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_KEY].toString() + properties[ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_KEY].toString() resourceResolutionResult.result = result try { @@ -47,18 +50,18 @@ class ResourceResolutionResultService(private val resourceResolutionRepository: } } - fun read(bluePrintRuntimeService: BluePrintRuntimeService<*>, artifactPrefix: String, - resolutionKey: String): String { + suspend fun read(bluePrintRuntimeService: BluePrintRuntimeService<*>, artifactPrefix: String, + resolutionKey: String): String = withContext(Dispatchers.IO) { val metadata = bluePrintRuntimeService.bluePrintContext().metadata!! val blueprintVersion = metadata[BluePrintConstants.METADATA_TEMPLATE_VERSION] val blueprintName = metadata[BluePrintConstants.METADATA_TEMPLATE_NAME] - return resourceResolutionRepository.findByResolutionKeyAndBlueprintNameAndBlueprintVersionAndArtifactName( - resolutionKey, - blueprintName, - blueprintVersion, - artifactPrefix).result!! + resourceResolutionRepository.findByResolutionKeyAndBlueprintNameAndBlueprintVersionAndArtifactName( + resolutionKey, + blueprintName, + blueprintVersion, + artifactPrefix).result!! } }
\ No newline at end of file diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionServiceTest.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionServiceTest.kt index d7a78999e..4a82dbd21 100644 --- a/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionServiceTest.kt +++ b/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionServiceTest.kt @@ -20,6 +20,7 @@ package org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution +import kotlinx.coroutines.runBlocking import org.junit.Assert import org.junit.Test import org.junit.runner.RunWith @@ -75,20 +76,22 @@ class ResourceResolutionServiceTest { @Test @Throws(Exception::class) fun testResolveResource() { + runBlocking { - Assert.assertNotNull("failed to create ResourceResolutionService", resourceResolutionService) + Assert.assertNotNull("failed to create ResourceResolutionService", resourceResolutionService) - val bluePrintRuntimeService = BluePrintMetadataUtils.getBluePrintRuntime("1234", - "./../../../../components/model-catalog/blueprint-model/test-blueprint/baseconfiguration") + val bluePrintRuntimeService = BluePrintMetadataUtils.getBluePrintRuntime("1234", + "./../../../../components/model-catalog/blueprint-model/test-blueprint/baseconfiguration") - val executionServiceInput = JacksonUtils.readValueFromClassPathFile("payload/requests/sample-resourceresolution-request.json", - ExecutionServiceInput::class.java)!! + val executionServiceInput = JacksonUtils.readValueFromClassPathFile("payload/requests/sample-resourceresolution-request.json", + ExecutionServiceInput::class.java)!! - // Prepare Inputs - PayloadUtils.prepareInputsFromWorkflowPayload(bluePrintRuntimeService, executionServiceInput.payload, "resource-assignment") + // Prepare Inputs + PayloadUtils.prepareInputsFromWorkflowPayload(bluePrintRuntimeService, executionServiceInput.payload, "resource-assignment") - resourceResolutionService.resolveResources(bluePrintRuntimeService, "resource-assignment", "baseconfig", mapOf()) + resourceResolutionService.resolveResources(bluePrintRuntimeService, "resource-assignment", "baseconfig", mapOf()) + } } @Test diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/logback-test.xml b/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/logback-test.xml index 0c8d93bf0..c37e0b5a0 100644 --- a/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/logback-test.xml +++ b/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/logback-test.xml @@ -19,13 +19,14 @@ <!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
- <pattern>%d{HH:mm:ss.SSS} %-5level %logger{100} - %msg%n</pattern>
+ <pattern>%d{HH:mm:ss.SSS} %-5level [%thread] %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<logger name="org.springframework" level="warn"/>
<logger name="org.hibernate" level="info"/>
+ <logger name="org.onap.ccsdk.cds.controllerblueprints" level="warn"/>
<logger name="org.onap.ccsdk.cds.blueprintsprocessor" level="info"/>
<root level="warn">
diff --git a/ms/blueprintsprocessor/functions/restconf-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/restconf/executor/RestconfComponentFunction.kt b/ms/blueprintsprocessor/functions/restconf-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/restconf/executor/RestconfComponentFunction.kt index b95879274..3895c39c8 100644 --- a/ms/blueprintsprocessor/functions/restconf-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/restconf/executor/RestconfComponentFunction.kt +++ b/ms/blueprintsprocessor/functions/restconf-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/restconf/executor/RestconfComponentFunction.kt @@ -17,6 +17,7 @@ package org.onap.ccsdk.cds.blueprintsprocessor.functions.restconf.executor +import kotlinx.coroutines.runBlocking import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.ResourceResolutionConstants import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.ResourceResolutionService import org.onap.ccsdk.cds.blueprintsprocessor.rest.RestLibConstants @@ -38,21 +39,21 @@ abstract class RestconfComponentFunction : AbstractScriptComponentFunction() { return bluePrintRestLibPropertyService().blueprintWebClientService(selector) } - fun resolveFromDatabase(resolutionKey: String, artifactName: String): String { - return resourceResolutionService().resolveFromDatabase(bluePrintRuntimeService, artifactName, resolutionKey) + fun resolveFromDatabase(resolutionKey: String, artifactName: String): String = runBlocking { + resourceResolutionService().resolveFromDatabase(bluePrintRuntimeService, artifactName, resolutionKey) } fun generateMessage(artifactName: String): String { return bluePrintRuntimeService.resolveNodeTemplateArtifact(nodeTemplateName, artifactName) } - fun resolveAndGenerateMessage(artifactMapping: String, artifactTemplate: String): String { - return resourceResolutionService().resolveResources(bluePrintRuntimeService, nodeTemplateName, + fun resolveAndGenerateMessage(artifactMapping: String, artifactTemplate: String): String = runBlocking { + resourceResolutionService().resolveResources(bluePrintRuntimeService, nodeTemplateName, artifactMapping, artifactTemplate) } - fun resolveAndGenerateMessage(artifactPrefix: String): String { - return resourceResolutionService().resolveResources(bluePrintRuntimeService, nodeTemplateName, + fun resolveAndGenerateMessage(artifactPrefix: String): String = runBlocking { + resourceResolutionService().resolveResources(bluePrintRuntimeService, nodeTemplateName, artifactPrefix, mapOf()) } }
\ No newline at end of file diff --git a/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/api/data/BlueprintProcessorData.kt b/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/api/data/BlueprintProcessorData.kt index fb6a0832a..badd70065 100644 --- a/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/api/data/BlueprintProcessorData.kt +++ b/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/api/data/BlueprintProcessorData.kt @@ -86,7 +86,7 @@ open class Status { @get:ApiModelProperty(required = true) var code: Int = 200 @get:ApiModelProperty(required = true) - var eventType: String = "EVENT-ACTION-RESPONSE" + var eventType: String = "" @get:ApiModelProperty(required = true, example = "2012-04-23T18:25:43.511Z") @get:JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") var timestamp: Date = Date() diff --git a/ms/blueprintsprocessor/modules/commons/rest-lib/pom.xml b/ms/blueprintsprocessor/modules/commons/rest-lib/pom.xml index 054f2386e..6809e7968 100644 --- a/ms/blueprintsprocessor/modules/commons/rest-lib/pom.xml +++ b/ms/blueprintsprocessor/modules/commons/rest-lib/pom.xml @@ -2,6 +2,7 @@ <!-- ~ Copyright © 2017-2018 AT&T Intellectual Property. ~ Modifications Copyright © 2018 IBM. + ~ Modifications Copyright © 2019 Huawei. ~ ~ Licensed under the Apache License, Version 2.0 (the "License"); ~ you may not use this file except in compliance with the License. @@ -41,6 +42,16 @@ <artifactId>httpclient</artifactId> <version>${apache.httpcomponents.client.version}</version> </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-web</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-security</artifactId> + <scope>test</scope> + </dependency> </dependencies> </project> diff --git a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/BluePrintRestLibConfiguration.kt b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/BluePrintRestLibConfiguration.kt index 05143f3d8..fa4ff231d 100644 --- a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/BluePrintRestLibConfiguration.kt +++ b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/BluePrintRestLibConfiguration.kt @@ -1,6 +1,7 @@ /* * Copyright © 2017-2018 AT&T Intellectual Property. * Modifications Copyright © 2019 IBM. + * Modifications Copyright © 2019 Huawei. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,6 +34,8 @@ class RestLibConstants { const val TYPE_TOKEN_AUTH = "token-auth" const val TYPE_BASIC_AUTH = "basic-auth" const val TYPE_SSL_BASIC_AUTH = "ssl-basic-auth" + const val TYPE_SSL_TOKEN_AUTH = "ssl-token-auth" + const val TYPE_SSL_NO_AUTH = "ssl-no-auth" const val TYPE_DME2_PROXY = "dme2-proxy" const val TYPE_POLICY_MANAGER = "policy-manager" } diff --git a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/BluePrintRestLibData.kt b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/BluePrintRestLibData.kt index 4e6e62efb..70ec9501a 100644 --- a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/BluePrintRestLibData.kt +++ b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/BluePrintRestLibData.kt @@ -1,5 +1,6 @@ /* * Copyright © 2017-2018 AT&T Intellectual Property. + * Modifications Copyright © 2019 Huawei. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +22,22 @@ open class RestClientProperties { lateinit var url: String } +open class SSLRestClientProperties : RestClientProperties() { + lateinit var keyStoreInstance: String // JKS, PKCS12 + lateinit var sslTrust: String + lateinit var sslTrustPassword: String + var sslKey: String? = null + var sslKeyPassword: String? = null +} + +open class SSLBasicAuthRestClientProperties : SSLRestClientProperties() { + var basicAuth: BasicAuthRestClientProperties? = null +} + +open class SSLTokenAuthRestClientProperties : SSLRestClientProperties() { + var tokenAuth: TokenAuthRestClientProperties? = null +} + open class BasicAuthRestClientProperties : RestClientProperties() { lateinit var password: String lateinit var username: String @@ -30,14 +47,6 @@ open class TokenAuthRestClientProperties : RestClientProperties() { var token: String? = null } -open class SSLBasicAuthRestClientProperties : RestClientProperties() { - lateinit var keyStoreInstance: String // JKS, PKCS12 - lateinit var sslTrust: String - lateinit var sslTrustPassword: String - lateinit var sslKey: String - lateinit var sslKeyPassword: String -} - open class DME2RestClientProperties : RestClientProperties() { lateinit var service: String lateinit var subContext: String diff --git a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BasicAuthRestClientService.kt b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BasicAuthRestClientService.kt index 67dbd0d72..3190cd1c6 100644 --- a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BasicAuthRestClientService.kt +++ b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BasicAuthRestClientService.kt @@ -23,11 +23,14 @@ import org.springframework.http.MediaType import java.nio.charset.Charset import java.util.* -class BasicAuthRestClientService(private val restClientProperties: BasicAuthRestClientProperties) : - BlueprintWebClientService { +class BasicAuthRestClientService(private val restClientProperties: + BasicAuthRestClientProperties) : + BlueprintWebClientService { override fun defaultHeaders(): Map<String, String> { - val encodedCredentials = setBasicAuth(restClientProperties.username, restClientProperties.password) + + val encodedCredentials = setBasicAuth(restClientProperties.username, + restClientProperties.password) return mapOf( HttpHeaders.CONTENT_TYPE to MediaType.APPLICATION_JSON_VALUE, HttpHeaders.ACCEPT to MediaType.APPLICATION_JSON_VALUE, @@ -38,18 +41,25 @@ class BasicAuthRestClientService(private val restClientProperties: BasicAuthRest return restClientProperties.url + uri } - override fun convertToBasicHeaders(headers: Map<String, String>): Array<BasicHeader> { + override fun convertToBasicHeaders(headers: Map<String, String>): + Array<BasicHeader> { + val customHeaders: MutableMap<String, String> = headers.toMutableMap() if (!headers.containsKey(HttpHeaders.AUTHORIZATION)) { - val encodedCredentials = setBasicAuth(restClientProperties.username, restClientProperties.password) - customHeaders[HttpHeaders.AUTHORIZATION] = "Basic $encodedCredentials" + val encodedCredentials = setBasicAuth( + restClientProperties.username, + restClientProperties.password) + customHeaders[HttpHeaders.AUTHORIZATION] = + "Basic $encodedCredentials" } return super.convertToBasicHeaders(customHeaders) } private fun setBasicAuth(username: String, password: String): String { + val credentialsString = "$username:$password" - return Base64.getEncoder().encodeToString(credentialsString.toByteArray(Charset.defaultCharset())) + return Base64.getEncoder().encodeToString( + credentialsString.toByteArray(Charset.defaultCharset())) } diff --git a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BluePrintRestLibPropertyService.kt b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BluePrintRestLibPropertyService.kt index dc974468b..a6bbc39d8 100644 --- a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BluePrintRestLibPropertyService.kt +++ b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BluePrintRestLibPropertyService.kt @@ -1,6 +1,7 @@ /* * Copyright © 2017-2019 AT&T, Bell Canada * Modifications Copyright © 2019 IBM. + * Modifications Copyright © 2019 Huawei. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,15 +26,19 @@ import org.onap.ccsdk.cds.blueprintsprocessor.rest.PolicyManagerRestClientProper import org.onap.ccsdk.cds.blueprintsprocessor.rest.RestClientProperties import org.onap.ccsdk.cds.blueprintsprocessor.rest.RestLibConstants import org.onap.ccsdk.cds.blueprintsprocessor.rest.SSLBasicAuthRestClientProperties +import org.onap.ccsdk.cds.blueprintsprocessor.rest.SSLRestClientProperties +import org.onap.ccsdk.cds.blueprintsprocessor.rest.SSLTokenAuthRestClientProperties import org.onap.ccsdk.cds.blueprintsprocessor.rest.TokenAuthRestClientProperties import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintProcessorException import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils import org.springframework.stereotype.Service @Service(RestLibConstants.SERVICE_BLUEPRINT_REST_LIB_PROPERTY) -open class BluePrintRestLibPropertyService(private var bluePrintProperties: BluePrintProperties) { +open class BluePrintRestLibPropertyService(private var bluePrintProperties: + BluePrintProperties) { - fun blueprintWebClientService(jsonNode: JsonNode): BlueprintWebClientService { + fun blueprintWebClientService(jsonNode: JsonNode): + BlueprintWebClientService { val restClientProperties = restClientProperties(jsonNode) return blueprintWebClientService(restClientProperties) } @@ -45,7 +50,8 @@ open class BluePrintRestLibPropertyService(private var bluePrintProperties: Blue } fun restClientProperties(prefix: String): RestClientProperties { - val type = bluePrintProperties.propertyBeanType("$prefix.type", String::class.java) + val type = bluePrintProperties.propertyBeanType( + "$prefix.type", String::class.java) return when (type) { RestLibConstants.TYPE_BASIC_AUTH -> { basicAuthRestClientProperties(prefix) @@ -53,6 +59,12 @@ open class BluePrintRestLibPropertyService(private var bluePrintProperties: Blue RestLibConstants.TYPE_SSL_BASIC_AUTH -> { sslBasicAuthRestClientProperties(prefix) } + RestLibConstants.TYPE_SSL_TOKEN_AUTH -> { + sslTokenAuthRestClientProperties(prefix) + } + RestLibConstants.TYPE_SSL_NO_AUTH -> { + sslNoAuthRestClientProperties(prefix) + } RestLibConstants.TYPE_DME2_PROXY -> { dme2ProxyClientProperties(prefix) } @@ -60,69 +72,123 @@ open class BluePrintRestLibPropertyService(private var bluePrintProperties: Blue policyManagerRestClientProperties(prefix) } else -> { - throw BluePrintProcessorException("Rest adaptor($type) is not supported") + throw BluePrintProcessorException("Rest adaptor($type) is" + + " not supported") } } } - private fun restClientProperties(jsonNode: JsonNode): RestClientProperties { + fun restClientProperties(jsonNode: JsonNode): RestClientProperties { + val type = jsonNode.get("type").textValue() return when (type) { RestLibConstants.TYPE_TOKEN_AUTH -> { - JacksonUtils.readValue(jsonNode, TokenAuthRestClientProperties::class.java)!! + JacksonUtils.readValue(jsonNode, + TokenAuthRestClientProperties::class.java)!! } RestLibConstants.TYPE_BASIC_AUTH -> { - JacksonUtils.readValue(jsonNode, BasicAuthRestClientProperties::class.java)!! - } - RestLibConstants.TYPE_SSL_BASIC_AUTH -> { - JacksonUtils.readValue(jsonNode, SSLBasicAuthRestClientProperties::class.java)!! + JacksonUtils.readValue(jsonNode, + BasicAuthRestClientProperties::class.java)!! } RestLibConstants.TYPE_DME2_PROXY -> { - JacksonUtils.readValue(jsonNode, DME2RestClientProperties::class.java)!! + JacksonUtils.readValue(jsonNode, + DME2RestClientProperties::class.java)!! } RestLibConstants.TYPE_POLICY_MANAGER -> { - JacksonUtils.readValue(jsonNode, PolicyManagerRestClientProperties::class.java)!! + JacksonUtils.readValue(jsonNode, + PolicyManagerRestClientProperties::class.java)!! + } + RestLibConstants.TYPE_SSL_BASIC_AUTH -> { + JacksonUtils.readValue(jsonNode, + SSLBasicAuthRestClientProperties::class.java)!! + } + RestLibConstants.TYPE_SSL_TOKEN_AUTH -> { + JacksonUtils.readValue(jsonNode, + SSLTokenAuthRestClientProperties::class.java)!! + } + RestLibConstants.TYPE_SSL_NO_AUTH -> { + JacksonUtils.readValue( + jsonNode, SSLRestClientProperties::class.java)!! } else -> { - throw BluePrintProcessorException("Rest adaptor($type) is not supported") + throw BluePrintProcessorException("Rest adaptor($type) is" + + " not supported") } } } + + private fun blueprintWebClientService( + restClientProperties: RestClientProperties): + BlueprintWebClientService { - private fun blueprintWebClientService(restClientProperties: RestClientProperties): BlueprintWebClientService { when (restClientProperties) { + is SSLRestClientProperties -> { + return SSLRestClientService(restClientProperties) + } is TokenAuthRestClientProperties -> { return TokenAuthRestClientService(restClientProperties) } is BasicAuthRestClientProperties -> { return BasicAuthRestClientService(restClientProperties) } - is SSLBasicAuthRestClientProperties -> { - return SSLBasicAuthRestClientService(restClientProperties) - } is DME2RestClientProperties -> { return DME2ProxyRestClientService(restClientProperties) } else -> { - throw BluePrintProcessorException("couldn't get rest service for") + throw BluePrintProcessorException("couldn't get rest " + + "service for") } } } - private fun basicAuthRestClientProperties(prefix: String): BasicAuthRestClientProperties { - return bluePrintProperties.propertyBeanType(prefix, BasicAuthRestClientProperties::class.java) + private fun basicAuthRestClientProperties(prefix: String): + BasicAuthRestClientProperties { + return bluePrintProperties.propertyBeanType( + prefix, BasicAuthRestClientProperties::class.java) + } + + private fun sslBasicAuthRestClientProperties(prefix: String): + SSLRestClientProperties { + + val sslProps: SSLBasicAuthRestClientProperties = + bluePrintProperties.propertyBeanType( + prefix, SSLBasicAuthRestClientProperties::class.java) + val basicProps : BasicAuthRestClientProperties = + bluePrintProperties.propertyBeanType( + prefix, BasicAuthRestClientProperties::class.java) + sslProps.basicAuth = basicProps + return sslProps + } + + private fun sslTokenAuthRestClientProperties(prefix: String): + SSLRestClientProperties { + + val sslProps: SSLTokenAuthRestClientProperties = + bluePrintProperties.propertyBeanType(prefix, + SSLTokenAuthRestClientProperties::class.java) + val basicProps : TokenAuthRestClientProperties = + bluePrintProperties.propertyBeanType(prefix, + TokenAuthRestClientProperties::class.java) + sslProps.tokenAuth = basicProps + return sslProps } - private fun sslBasicAuthRestClientProperties(prefix: String): SSLBasicAuthRestClientProperties { - return bluePrintProperties.propertyBeanType(prefix, SSLBasicAuthRestClientProperties::class.java) + private fun sslNoAuthRestClientProperties(prefix: String): + SSLRestClientProperties { + return bluePrintProperties.propertyBeanType( + prefix, SSLRestClientProperties::class.java) } - private fun dme2ProxyClientProperties(prefix: String): DME2RestClientProperties { - return bluePrintProperties.propertyBeanType(prefix, DME2RestClientProperties::class.java) + private fun dme2ProxyClientProperties(prefix: String): + DME2RestClientProperties { + return bluePrintProperties.propertyBeanType( + prefix, DME2RestClientProperties::class.java) } - private fun policyManagerRestClientProperties(prefix: String): PolicyManagerRestClientProperties { - return bluePrintProperties.propertyBeanType(prefix, PolicyManagerRestClientProperties::class.java) + private fun policyManagerRestClientProperties(prefix: String): + PolicyManagerRestClientProperties { + return bluePrintProperties.propertyBeanType( + prefix, PolicyManagerRestClientProperties::class.java) } } diff --git a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BlueprintWebClientService.kt b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BlueprintWebClientService.kt index 1c1d510fc..d6d02b330 100644 --- a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BlueprintWebClientService.kt +++ b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BlueprintWebClientService.kt @@ -1,6 +1,7 @@ /* * Copyright © 2017-2019 AT&T, Bell Canada, Nordix Foundation * Modifications Copyright © 2018-2019 IBM. + * Modifications Copyright © 2019 Huawei. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +22,11 @@ import com.fasterxml.jackson.databind.JsonNode import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import org.apache.commons.io.IOUtils -import org.apache.http.client.methods.* +import org.apache.http.client.methods.HttpDelete +import org.apache.http.client.methods.HttpGet +import org.apache.http.client.methods.HttpPatch +import org.apache.http.client.methods.HttpPost +import org.apache.http.client.methods.HttpPut import org.apache.http.entity.StringEntity import org.apache.http.impl.client.CloseableHttpClient import org.apache.http.impl.client.HttpClients @@ -30,6 +35,7 @@ import org.onap.ccsdk.cds.blueprintsprocessor.rest.utils.WebClientUtils import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintProcessorException import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils import org.springframework.http.HttpMethod +import java.io.InputStream import java.nio.charset.Charset interface BlueprintWebClientService { @@ -45,19 +51,24 @@ interface BlueprintWebClientService { .build() } - fun exchangeResource(methodType: String, path: String, request: String): String { - return this.exchangeResource(methodType, path, request, defaultHeaders()) + fun exchangeResource(methodType: String, path: String, request: String): + String { + return this.exchangeResource(methodType, path, request, + defaultHeaders()) } - fun exchangeResource(methodType: String, path: String, request: String, headers: Map<String, String>): String { - val convertedHeaders: Array<BasicHeader> = convertToBasicHeaders(headers) + fun exchangeResource(methodType: String, path: String, request: String, + headers: Map<String, String>): String { + val convertedHeaders: Array<BasicHeader> = convertToBasicHeaders( + headers) return when (HttpMethod.resolve(methodType)) { HttpMethod.DELETE -> delete(path, convertedHeaders) HttpMethod.GET -> get(path, convertedHeaders) HttpMethod.POST -> post(path, request, convertedHeaders) HttpMethod.PUT -> put(path, request, convertedHeaders) HttpMethod.PATCH -> patch(path, request, convertedHeaders) - else -> throw BluePrintProcessorException("Unsupported methodType($methodType)") + else -> throw BluePrintProcessorException("Unsupported met" + + "hodType($methodType)") } } @@ -81,7 +92,8 @@ interface BlueprintWebClientService { } } - fun post(path: String, request: String, headers: Array<BasicHeader>): String { + fun post(path: String, request: String, headers: Array<BasicHeader>): + String { val httpPost = HttpPost(host(path)) val entity = StringEntity(request) httpPost.entity = entity @@ -91,7 +103,8 @@ interface BlueprintWebClientService { } } - fun put(path: String, request: String, headers: Array<BasicHeader>): String { + fun put(path: String, request: String, headers: Array<BasicHeader>): + String { val httpPut = HttpPut(host(path)) val entity = StringEntity(request) httpPut.entity = entity @@ -101,7 +114,8 @@ interface BlueprintWebClientService { } } - fun patch(path: String, request: String, headers: Array<BasicHeader>): String { + fun patch(path: String, request: String, headers: Array<BasicHeader>): + String { val httpPatch = HttpPatch(host(path)) val entity = StringEntity(request) httpPatch.entity = entity @@ -111,28 +125,23 @@ interface BlueprintWebClientService { } } - // Non Blocking Rest Implementation - suspend fun httpClientNB(): CloseableHttpClient { - return HttpClients.custom() - .addInterceptorFirst(WebClientUtils.logRequest()) - .addInterceptorLast(WebClientUtils.logResponse()) - .build() - } suspend fun getNB(path: String): String { return getNB(path, null, String::class.java) } - suspend fun getNB(path: String, additionalHeaders: Map<String, String>?): String { + suspend fun getNB(path: String, additionalHeaders: Map<String, String>?): + String { return getNB(path, additionalHeaders, String::class.java) } suspend fun <T> getNB(path: String, additionalHeaders: Map<String, String>?, - responseType: Class<T>): T = withContext(Dispatchers.IO) { + responseType: Class<T>): T = + withContext(Dispatchers.IO) { val httpGet = HttpGet(host(path)) httpGet.setHeaders(basicHeaders(additionalHeaders)) httpClientNB().execute(httpGet).entity.content.use { - JacksonUtils.readValue(it, responseType)!! + getResponse(it, responseType) } } @@ -140,18 +149,20 @@ interface BlueprintWebClientService { return postNB(path, request, null, String::class.java) } - suspend fun postNB(path: String, request: Any, additionalHeaders: Map<String, String>?): String { + suspend fun postNB(path: String, request: Any, + additionalHeaders: Map<String, String>?): String { return postNB(path, request, additionalHeaders, String::class.java) } - suspend fun <T> postNB(path: String, request: Any, additionalHeaders: Map<String, String>?, + suspend fun <T> postNB(path: String, request: Any, + additionalHeaders: Map<String, String>?, responseType: Class<T>): T = withContext(Dispatchers.IO) { val httpPost = HttpPost(host(path)) httpPost.entity = StringEntity(strRequest(request)) httpPost.setHeaders(basicHeaders(additionalHeaders)) httpClientNB().execute(httpPost).entity.content.use { - JacksonUtils.readValue(it, responseType)!! + getResponse(it, responseType) } } @@ -159,17 +170,20 @@ interface BlueprintWebClientService { return putNB(path, request, null, String::class.java) } - suspend fun putNB(path: String, request: Any, additionalHeaders: Map<String, String>?): String { + suspend fun putNB(path: String, request: Any, + additionalHeaders: Map<String, String>?): String { return putNB(path, request, additionalHeaders, String::class.java) } - suspend fun <T> putNB(path: String, request: Any, additionalHeaders: Map<String, String>?, - responseType: Class<T>): T = withContext(Dispatchers.IO) { + suspend fun <T> putNB(path: String, request: Any, + additionalHeaders: Map<String, String>?, + responseType: Class<T>): T = + withContext(Dispatchers.IO) { val httpPut = HttpPut(host(path)) httpPut.entity = StringEntity(strRequest(request)) httpPut.setHeaders(basicHeaders(additionalHeaders)) httpClientNB().execute(httpPut).entity.content.use { - JacksonUtils.readValue(it, responseType)!! + getResponse(it, responseType) } } @@ -177,46 +191,61 @@ interface BlueprintWebClientService { return deleteNB(path, null, String::class.java) } - suspend fun <T> deleteNB(path: String, additionalHeaders: Map<String, String>?): String { + suspend fun <T> deleteNB(path: String, + additionalHeaders: Map<String, String>?): String { return deleteNB(path, additionalHeaders, String::class.java) } - suspend fun <T> deleteNB(path: String, additionalHeaders: Map<String, String>?, responseType: Class<T>): T = + suspend fun <T> deleteNB(path: String, + additionalHeaders: Map<String, String>?, + responseType: Class<T>): T = withContext(Dispatchers.IO) { - val httpDelete = HttpDelete(host(path)) - httpDelete.setHeaders(basicHeaders(additionalHeaders)) - httpClient().execute(httpDelete).entity.content.use { - JacksonUtils.readValue(it, responseType)!! - } - } + val httpDelete = HttpDelete(host(path)) + httpDelete.setHeaders(basicHeaders(additionalHeaders)) + httpClient().execute(httpDelete).entity.content.use { + getResponse(it, responseType) + } + } - suspend fun <T> patchNB(path: String, request: Any, additionalHeaders: Map<String, String>?, - responseType: Class<T>): T = withContext(Dispatchers.IO) { + suspend fun <T> patchNB(path: String, request: Any, + additionalHeaders: Map<String, String>?, + responseType: Class<T>): T = + withContext(Dispatchers.IO) { val httpPatch = HttpPatch(host(path)) httpPatch.entity = StringEntity(strRequest(request)) httpPatch.setHeaders(basicHeaders(additionalHeaders)) httpClient().execute(httpPatch).entity.content.use { - JacksonUtils.readValue(it, responseType)!! + getResponse(it, responseType) } } - suspend fun exchangeNB(methodType: String, path: String, request: Any): String { - return exchangeNB(methodType, path, request, hashMapOf(), String::class.java) + suspend fun exchangeNB(methodType: String, path: String, request: Any): + String { + return exchangeNB(methodType, path, request, hashMapOf(), + String::class.java) } - suspend fun exchangeNB(methodType: String, path: String, request: Any, additionalHeaders: Map<String, String>?): String { - return exchangeNB(methodType, path, request, additionalHeaders, String::class.java) + suspend fun exchangeNB(methodType: String, path: String, request: Any, + additionalHeaders: Map<String, String>?): String { + return exchangeNB(methodType, path, request, additionalHeaders, + String::class.java) } - suspend fun <T> exchangeNB(methodType: String, path: String, request: Any, additionalHeaders: Map<String, String>?, + suspend fun <T> exchangeNB(methodType: String, path: String, request: Any, + additionalHeaders: Map<String, String>?, responseType: Class<T>): T { + return when (HttpMethod.resolve(methodType)) { HttpMethod.GET -> getNB(path, additionalHeaders, responseType) - HttpMethod.POST -> postNB(path, request, additionalHeaders, responseType) + HttpMethod.POST -> postNB(path, request, additionalHeaders, + responseType) HttpMethod.DELETE -> deleteNB(path, additionalHeaders, responseType) - HttpMethod.PUT -> putNB(path, request, additionalHeaders, responseType) - HttpMethod.PATCH -> patchNB(path, request, additionalHeaders, responseType) - else -> throw BluePrintProcessorException("Unsupported methodType($methodType)") + HttpMethod.PUT -> putNB(path, request, additionalHeaders, + responseType) + HttpMethod.PATCH -> patchNB(path, request, additionalHeaders, + responseType) + else -> throw BluePrintProcessorException("Unsupported method" + + "Type($methodType)") } } @@ -228,7 +257,17 @@ interface BlueprintWebClientService { } } - private fun basicHeaders(headers: Map<String, String>?): Array<BasicHeader> { + private fun <T> getResponse(it: InputStream, responseType: Class<T>): T { + return if (responseType == String::class.java) { + IOUtils.toString(it, Charset.defaultCharset()) as T + } else { + JacksonUtils.readValue(it, responseType)!! + } + } + + private fun basicHeaders(headers: Map<String, String>?): + Array<BasicHeader> { + val basicHeaders = mutableListOf<BasicHeader>() defaultHeaders().forEach { name, value -> basicHeaders.add(BasicHeader(name, value)) @@ -238,4 +277,12 @@ interface BlueprintWebClientService { } return basicHeaders.toTypedArray() } + + // Non Blocking Rest Implementation + suspend fun httpClientNB(): CloseableHttpClient { + return HttpClients.custom() + .addInterceptorFirst(WebClientUtils.logRequest()) + .addInterceptorLast(WebClientUtils.logResponse()) + .build() + } }
\ No newline at end of file diff --git a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/SSLBasicAuthRestClientService.kt b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/SSLBasicAuthRestClientService.kt deleted file mode 100644 index 3d3b0a57e..000000000 --- a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/SSLBasicAuthRestClientService.kt +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright © 2017-2019 AT&T, Bell Canada - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onap.ccsdk.cds.blueprintsprocessor.rest.service - -import org.apache.http.conn.ssl.SSLConnectionSocketFactory -import org.apache.http.impl.client.CloseableHttpClient -import org.apache.http.impl.client.HttpClients -import org.apache.http.ssl.SSLContextBuilder -import org.onap.ccsdk.cds.blueprintsprocessor.rest.SSLBasicAuthRestClientProperties -import org.onap.ccsdk.cds.blueprintsprocessor.rest.utils.WebClientUtils -import org.springframework.http.HttpHeaders -import org.springframework.http.MediaType -import java.io.File -import java.io.FileInputStream -import java.security.KeyStore -import java.security.cert.X509Certificate - -class SSLBasicAuthRestClientService(private val restClientProperties: SSLBasicAuthRestClientProperties) : - BlueprintWebClientService { - - override fun defaultHeaders(): Map<String, String> { - return mapOf( - HttpHeaders.CONTENT_TYPE to MediaType.APPLICATION_JSON_VALUE, - HttpHeaders.ACCEPT to MediaType.APPLICATION_JSON_VALUE) - } - - override fun host(uri: String): String { - return restClientProperties.url + uri - } - - override fun httpClient(): CloseableHttpClient { - - val keystoreInstance = restClientProperties.keyStoreInstance - val sslKey = restClientProperties.sslKey - val sslKeyPwd = restClientProperties.sslKeyPassword - val sslTrust = restClientProperties.sslTrust - val sslTrustPwd = restClientProperties.sslTrustPassword - - val acceptingTrustStrategy = { chain: Array<X509Certificate>, authType: String -> true } - - FileInputStream(sslKey).use { keyInput -> - val keyStore = KeyStore.getInstance(keystoreInstance) - keyStore.load(keyInput, sslKeyPwd.toCharArray()) - - val sslContext = - SSLContextBuilder.create() - .loadKeyMaterial(keyStore, sslKeyPwd.toCharArray()) - .loadTrustMaterial(File(sslTrust), sslTrustPwd.toCharArray(), acceptingTrustStrategy).build() - - val csf = SSLConnectionSocketFactory(sslContext!!) - - return HttpClients.custom() - .addInterceptorFirst(WebClientUtils.logRequest()) - .addInterceptorLast(WebClientUtils.logResponse()) - .setSSLSocketFactory(csf).build() - } - } -}
\ No newline at end of file diff --git a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/SSLRestClientService.kt b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/SSLRestClientService.kt new file mode 100644 index 000000000..30dd49018 --- /dev/null +++ b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/SSLRestClientService.kt @@ -0,0 +1,125 @@ +/* + * Copyright © 2017-2019 AT&T, Bell Canada + * Modifications Copyright © 2019 Huawei. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.onap.ccsdk.cds.blueprintsprocessor.rest.service + +import org.apache.http.conn.ssl.SSLConnectionSocketFactory +import org.apache.http.impl.client.CloseableHttpClient +import org.apache.http.impl.client.HttpClients +import org.apache.http.message.BasicHeader +import org.apache.http.ssl.SSLContextBuilder +import org.onap.ccsdk.cds.blueprintsprocessor.rest.SSLBasicAuthRestClientProperties +import org.onap.ccsdk.cds.blueprintsprocessor.rest.SSLRestClientProperties +import org.onap.ccsdk.cds.blueprintsprocessor.rest.SSLTokenAuthRestClientProperties +import org.onap.ccsdk.cds.blueprintsprocessor.rest.utils.WebClientUtils +import org.springframework.http.HttpHeaders +import org.springframework.http.MediaType +import java.io.File +import java.io.FileInputStream +import java.security.KeyStore +import java.security.cert.X509Certificate + +class SSLRestClientService(private val restClientProperties: + SSLRestClientProperties) : + BlueprintWebClientService { + + var auth: BlueprintWebClientService? = null + + init { + auth = getAuthService() + } + + private fun getAuthService() : BlueprintWebClientService? { + + return when(restClientProperties) { + is SSLBasicAuthRestClientProperties -> { + val basic = restClientProperties.basicAuth!! + BasicAuthRestClientService(basic) + } + is SSLTokenAuthRestClientProperties -> { + val token = restClientProperties.tokenAuth!! + TokenAuthRestClientService(token) + } + else -> { + //Returns null for No auth + null + } + } + } + + + override fun defaultHeaders(): Map<String, String> { + + if (auth != null) { + return auth!!.defaultHeaders() + } + return mapOf( + HttpHeaders.CONTENT_TYPE to MediaType.APPLICATION_JSON_VALUE, + HttpHeaders.ACCEPT to MediaType.APPLICATION_JSON_VALUE) + } + + override fun host(uri: String): String { + + return restClientProperties.url + uri + } + + override fun httpClient(): CloseableHttpClient { + + val keystoreInstance = restClientProperties.keyStoreInstance + val sslKey = restClientProperties.sslKey + val sslKeyPwd = restClientProperties.sslKeyPassword + val sslTrust = restClientProperties.sslTrust + val sslTrustPwd = restClientProperties.sslTrustPassword + + val acceptingTrustStrategy = { chain: Array<X509Certificate>, + authType: String -> true } + val sslContext = SSLContextBuilder.create() + + if (sslKey != null && sslKeyPwd != null) { + FileInputStream(sslKey).use { keyInput -> + val keyStore = KeyStore.getInstance(keystoreInstance) + keyStore.load(keyInput, sslKeyPwd.toCharArray()) + sslContext.loadKeyMaterial(keyStore, sslKeyPwd.toCharArray()) + } + } + + sslContext.loadTrustMaterial(File(sslTrust), sslTrustPwd.toCharArray(), + acceptingTrustStrategy) + val csf = SSLConnectionSocketFactory(sslContext.build()) + return HttpClients.custom() + .addInterceptorFirst(WebClientUtils.logRequest()) + .addInterceptorLast(WebClientUtils.logResponse()) + .setSSLSocketFactory(csf).build() + + } + + // Non Blocking Rest Implementation + override suspend fun httpClientNB(): CloseableHttpClient { + return httpClient() + } + + override fun convertToBasicHeaders(headers: Map<String, String>): Array<BasicHeader> { + var head1: Map<String, String> = defaultHeaders() + var head2: MutableMap<String, String> = head1.toMutableMap() + head2.putAll(headers) + if (auth != null) { + return auth!!.convertToBasicHeaders(head2) + } + return super.convertToBasicHeaders(head2) + } + +}
\ No newline at end of file diff --git a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/TokenAuthRestClientService.kt b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/TokenAuthRestClientService.kt index 6f81ee1a8..82446994c 100644 --- a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/TokenAuthRestClientService.kt +++ b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/TokenAuthRestClientService.kt @@ -21,17 +21,21 @@ import org.onap.ccsdk.cds.blueprintsprocessor.rest.TokenAuthRestClientProperties import org.springframework.http.HttpHeaders import org.springframework.http.MediaType -class TokenAuthRestClientService(private val restClientProperties: TokenAuthRestClientProperties) : - BlueprintWebClientService { +class TokenAuthRestClientService(private val restClientProperties: + TokenAuthRestClientProperties) : + BlueprintWebClientService { override fun defaultHeaders(): Map<String, String> { + return mapOf( HttpHeaders.CONTENT_TYPE to MediaType.APPLICATION_JSON_VALUE, HttpHeaders.ACCEPT to MediaType.APPLICATION_JSON_VALUE, HttpHeaders.AUTHORIZATION to restClientProperties.token!!) } - override fun convertToBasicHeaders(headers: Map<String, String>): Array<BasicHeader> { + override fun convertToBasicHeaders(headers: Map<String, String>): + Array<BasicHeader> { + val customHeaders: MutableMap<String, String> = headers.toMutableMap() if (!headers.containsKey(HttpHeaders.AUTHORIZATION)) { customHeaders[HttpHeaders.AUTHORIZATION] = restClientProperties.token!! diff --git a/ms/blueprintsprocessor/modules/commons/rest-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BluePrintRestLibPropertyServiceTest.kt b/ms/blueprintsprocessor/modules/commons/rest-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BluePrintRestLibPropertyServiceTest.kt index c57745713..280dd0d40 100644 --- a/ms/blueprintsprocessor/modules/commons/rest-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BluePrintRestLibPropertyServiceTest.kt +++ b/ms/blueprintsprocessor/modules/commons/rest-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BluePrintRestLibPropertyServiceTest.kt @@ -1,6 +1,7 @@ /* * Copyright © 2017-2018 AT&T Intellectual Property. * Modifications Copyright © 2018 IBM. + * Modifications Copyright © 2019 Huawei. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,24 +18,50 @@ package org.onap.ccsdk.cds.blueprintsprocessor.rest.service +import com.fasterxml.jackson.databind.JsonNode +import com.fasterxml.jackson.databind.ObjectMapper import org.junit.Test import org.junit.runner.RunWith import org.onap.ccsdk.cds.blueprintsprocessor.core.BluePrintProperties import org.onap.ccsdk.cds.blueprintsprocessor.core.BlueprintPropertyConfiguration import org.onap.ccsdk.cds.blueprintsprocessor.rest.BluePrintRestLibConfiguration +import org.onap.ccsdk.cds.blueprintsprocessor.rest.SSLBasicAuthRestClientProperties +import org.onap.ccsdk.cds.blueprintsprocessor.rest.SSLRestClientProperties +import org.onap.ccsdk.cds.blueprintsprocessor.rest.SSLTokenAuthRestClientProperties import org.springframework.beans.factory.annotation.Autowired import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.TestPropertySource import org.springframework.test.context.junit4.SpringRunner +import kotlin.test.assertEquals import kotlin.test.assertNotNull - @RunWith(SpringRunner::class) @ContextConfiguration(classes = [BluePrintRestLibConfiguration::class, BlueprintPropertyConfiguration::class, BluePrintProperties::class]) @TestPropertySource(properties = ["blueprintsprocessor.restclient.sample.type=basic-auth", "blueprintsprocessor.restclient.sample.url=http://localhost:8080", - "blueprintsprocessor.restclient.sample.userId=sampleuser"]) + "blueprintsprocessor.restclient.sample.userId=sampleuser", + "blueprintsprocessor.restclient.sslbasic.type=ssl-basic-auth", + "blueprintsprocessor.restclient.sslbasic.url=https://localhost:8443", + "blueprintsprocessor.restclient.sslbasic.username=admin", + "blueprintsprocessor.restclient.sslbasic.password=cds", + "blueprintsprocessor.restclient.sslbasic.keyStoreInstance=PKCS12", + "blueprintsprocessor.restclient.sslbasic.sslTrust=src/test/resources/keystore.p12", + "blueprintsprocessor.restclient.sslbasic.sslTrustPassword=changeit", + "blueprintsprocessor.restclient.ssltoken.type=ssl-token-auth", + "blueprintsprocessor.restclient.ssltoken.url=https://localhost:8443", + "blueprintsprocessor.restclient.ssltoken.token=72178473kjshdkjgvbsdkjv903274908", + "blueprintsprocessor.restclient.ssltoken.keyStoreInstance=PKCS12", + "blueprintsprocessor.restclient.ssltoken.sslTrust=src/test/resources/keystore.p12", + "blueprintsprocessor.restclient.ssltoken.sslTrustPassword=changeit", + "blueprintsprocessor.restclient.ssl.type=ssl-no-auth", + "blueprintsprocessor.restclient.ssl.url=https://localhost:8443", + "blueprintsprocessor.restclient.ssl.keyStoreInstance=PKCS12", + "blueprintsprocessor.restclient.ssl.sslTrust=src/test/resources/keystore.p12", + "blueprintsprocessor.restclient.ssl.sslTrustPassword=changeit", + "blueprintsprocessor.restclient.ssl.sslKey=src/test/resources/keystore.p12", + "blueprintsprocessor.restclient.ssl.sslKeyPassword=changeit" +]) class BluePrintRestLibPropertyServiceTest { @@ -43,15 +70,148 @@ class BluePrintRestLibPropertyServiceTest { @Test fun testRestClientProperties() { - val properties = bluePrintRestLibPropertyService.restClientProperties("blueprintsprocessor.restclient.sample") + val properties = bluePrintRestLibPropertyService.restClientProperties( + "blueprintsprocessor.restclient.sample") + assertNotNull(properties, "failed to create property bean") + assertNotNull(properties.url, "failed to get url property in" + + " property bean") + } + + @Test + fun testSSLBasicProperties() { + val properties = bluePrintRestLibPropertyService.restClientProperties( + "blueprintsprocessor.restclient.sslbasic") + assertNotNull(properties, "failed to create property bean") + val p: SSLBasicAuthRestClientProperties = + properties as SSLBasicAuthRestClientProperties + + assertEquals(p.basicAuth!!.username, "admin") + assertEquals(p.basicAuth!!.password, "cds") + assertEquals(p.sslTrust, "src/test/resources/keystore.p12") + assertEquals(p.sslTrustPassword, "changeit") + assertEquals(p.keyStoreInstance, "PKCS12") + } + + @Test + fun testSSLTokenProperties() { + val properties = bluePrintRestLibPropertyService.restClientProperties( + "blueprintsprocessor.restclient.ssltoken") + assertNotNull(properties, "failed to create property bean") + + val p: SSLTokenAuthRestClientProperties = + properties as SSLTokenAuthRestClientProperties + + assertEquals(p.tokenAuth!!.token!!, "72178473kjshdkjgvbsdkjv903274908") + assertEquals(p.sslTrust, "src/test/resources/keystore.p12") + assertEquals(p.sslTrustPassword, "changeit") + assertEquals(p.keyStoreInstance, "PKCS12") + } + + @Test + fun testSSLNoAuthProperties() { + val properties = bluePrintRestLibPropertyService.restClientProperties( + "blueprintsprocessor.restclient.ssl") + assertNotNull(properties, "failed to create property bean") + + val p: SSLRestClientProperties = + properties as SSLRestClientProperties + + assertEquals(p.sslTrust, "src/test/resources/keystore.p12") + assertEquals(p.sslTrustPassword, "changeit") + assertEquals(p.keyStoreInstance, "PKCS12") + assertEquals(p.sslKey, "src/test/resources/keystore.p12") + assertEquals(p.sslKeyPassword, "changeit") + } + + + @Test + fun testSSLBasicPropertiesAsJson() { + val json: String = "{\n" + + " \"type\" : \"ssl-basic-auth\",\n" + + " \"url\" : \"https://localhost:8443\",\n" + + " \"keyStoreInstance\" : \"PKCS12\",\n" + + " \"sslTrust\" : \"src/test/resources/keystore.p12\",\n" + + " \"sslTrustPassword\" : \"changeit\",\n" + + " \"basicAuth\" : {\n" + + " \"username\" : \"admin\",\n" + + " \"password\" : \"cds\"\n" + + " }\n" + + "}" + val mapper = ObjectMapper() + val actualObj: JsonNode = mapper.readTree(json) + val properties = bluePrintRestLibPropertyService.restClientProperties( + actualObj) + assertNotNull(properties, "failed to create property bean") + val p: SSLBasicAuthRestClientProperties = + properties as SSLBasicAuthRestClientProperties + + assertEquals(p.basicAuth!!.username, "admin") + assertEquals(p.basicAuth!!.password, "cds") + assertEquals(p.sslTrust, "src/test/resources/keystore.p12") + assertEquals(p.sslTrustPassword, "changeit") + assertEquals(p.keyStoreInstance, "PKCS12") + } + + @Test + fun testSSLTokenPropertiesAsJson() { + val json: String = "{\n" + + " \"type\" : \"ssl-token-auth\",\n" + + " \"url\" : \"https://localhost:8443\",\n" + + " \"keyStoreInstance\" : \"PKCS12\",\n" + + " \"sslTrust\" : \"src/test/resources/keystore.p12\",\n" + + " \"sslTrustPassword\" : \"changeit\",\n" + + " \"tokenAuth\" : {\n" + + " \"token\" : \"72178473kjshdkjgvbsdkjv903274908\"\n" + + " }\n" + + "}" + val mapper = ObjectMapper() + val actualObj: JsonNode = mapper.readTree(json) + val properties = bluePrintRestLibPropertyService.restClientProperties( + actualObj) assertNotNull(properties, "failed to create property bean") - assertNotNull(properties.url, "failed to get url property in property bean") + + val p: SSLTokenAuthRestClientProperties = + properties as SSLTokenAuthRestClientProperties + + assertEquals(p.tokenAuth!!.token!!, "72178473kjshdkjgvbsdkjv903274908") + assertEquals(p.sslTrust, "src/test/resources/keystore.p12") + assertEquals(p.sslTrustPassword, "changeit") + assertEquals(p.keyStoreInstance, "PKCS12") + } + + @Test + fun testSSLNoAuthPropertiesAsJson() { + val json: String = "{\n" + + " \"type\" : \"ssl-basic-auth\",\n" + + " \"url\" : \"https://localhost:8443\",\n" + + " \"keyStoreInstance\" : \"PKCS12\",\n" + + " \"sslTrust\" : \"src/test/resources/keystore.p12\",\n" + + " \"sslTrustPassword\" : \"changeit\",\n" + + " \"sslKey\" : \"src/test/resources/keystore.p12\",\n" + + " \"sslKeyPassword\" : \"changeit\"\n" + + "}" + val mapper = ObjectMapper() + val actualObj: JsonNode = mapper.readTree(json) + val properties = bluePrintRestLibPropertyService.restClientProperties( + actualObj) + assertNotNull(properties, "failed to create property bean") + + val p: SSLRestClientProperties = + properties as SSLRestClientProperties + + assertEquals(p.sslTrust, "src/test/resources/keystore.p12") + assertEquals(p.sslTrustPassword, "changeit") + assertEquals(p.keyStoreInstance, "PKCS12") + assertEquals(p.sslKey, "src/test/resources/keystore.p12") + assertEquals(p.sslKeyPassword, "changeit") } @Test fun testBlueprintWebClientService() { - val blueprintWebClientService = bluePrintRestLibPropertyService.blueprintWebClientService("sample") - assertNotNull(blueprintWebClientService, "failed to create blueprintWebClientService") + val blueprintWebClientService = bluePrintRestLibPropertyService + .blueprintWebClientService("sample") + assertNotNull(blueprintWebClientService, "failed to create blu" + + "eprintWebClientService") } } diff --git a/ms/blueprintsprocessor/modules/commons/rest-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/RestClientServiceTest.kt b/ms/blueprintsprocessor/modules/commons/rest-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/RestClientServiceTest.kt index a02a8083b..98cdfc0f2 100644 --- a/ms/blueprintsprocessor/modules/commons/rest-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/RestClientServiceTest.kt +++ b/ms/blueprintsprocessor/modules/commons/rest-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/RestClientServiceTest.kt @@ -1,6 +1,7 @@ /* * Copyright © 2017-2018 AT&T Intellectual Property. * Copyright (C) 2019 Nordix Foundation + * Modifications Copyright © 2019 Huawei. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +18,13 @@ package org.onap.ccsdk.cds.blueprintsprocessor.rest.service +import com.fasterxml.jackson.databind.JsonNode +import com.fasterxml.jackson.databind.ObjectMapper +import kotlinx.coroutines.CoroutineStart +import kotlinx.coroutines.async +import kotlinx.coroutines.runBlocking +import org.apache.catalina.connector.Connector +import org.junit.Test import org.junit.runner.RunWith import org.onap.ccsdk.cds.blueprintsprocessor.core.BluePrintProperties import org.onap.ccsdk.cds.blueprintsprocessor.core.BlueprintPropertyConfiguration @@ -25,57 +33,330 @@ import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.autoconfigure.EnableAutoConfiguration import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration import org.springframework.boot.test.context.SpringBootTest +import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory +import org.springframework.boot.web.servlet.server.ServletWebServerFactory +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration import org.springframework.http.HttpMethod +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder +import org.springframework.security.config.annotation.web.builders.HttpSecurity +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder +import org.springframework.security.crypto.password.PasswordEncoder +import org.springframework.stereotype.Component import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.TestPropertySource import org.springframework.test.context.junit4.SpringRunner +import org.springframework.web.bind.annotation.DeleteMapping import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.PatchMapping +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.PutMapping +import org.springframework.web.bind.annotation.RequestHeader import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController -import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertNotNull @RunWith(SpringRunner::class) @EnableAutoConfiguration(exclude = [DataSourceAutoConfiguration::class]) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) -@ContextConfiguration(classes = [BluePrintRestLibConfiguration::class, BlueprintPropertyConfiguration::class, - SampleController::class, BluePrintProperties::class, BluePrintProperties::class]) +@ContextConfiguration(classes = [BluePrintRestLibConfiguration::class, + BlueprintPropertyConfiguration::class, + SampleController::class, BluePrintProperties::class, + BluePrintProperties::class]) @TestPropertySource(properties = -["blueprintsprocessor.restclient.sample.type=basic-auth", +[ + "server.port=8443", + "server.ssl.enabled=true", + "server.ssl.key-store=classpath:keystore.p12", + "server.ssl.key-store-password=changeit", + "server.ssl.keyStoreType=PKCS12", + "server.ssl.keyAlias=tomcat", + "blueprintsprocessor.restclient.sample.type=basic-auth", "blueprintsprocessor.restclient.sample.url=http://127.0.0.1:8080", - "blueprintsprocessor.restclient.sample.username=sampleuser", - "blueprintsprocessor.restclient.sample.password=sampletoken"]) + "blueprintsprocessor.restclient.sample.username=admin", + "blueprintsprocessor.restclient.sample.password=jans", + "blueprintsprocessor.restclient.test.type=ssl-basic-auth", + "blueprintsprocessor.restclient.test.url=https://localhost:8443", + "blueprintsprocessor.restclient.test.username=admin", + "blueprintsprocessor.restclient.test.password=jans", + "blueprintsprocessor.restclient.test.keyStoreInstance=PKCS12", + "blueprintsprocessor.restclient.test.sslTrust=src/test/resources/keystore.p12", + "blueprintsprocessor.restclient.test.sslTrustPassword=changeit" +]) class RestClientServiceTest { @Autowired lateinit var bluePrintRestLibPropertyService: BluePrintRestLibPropertyService @Test + fun testPatch() { + val restClientService = bluePrintRestLibPropertyService + .blueprintWebClientService("sample") + val response = restClientService.exchangeResource( + HttpMethod.PATCH.name, "/sample/name", "") + assertEquals("Patch request successful", response, + "failed to get patch response") + } + + @Test fun testBaseAuth() { - val restClientService = bluePrintRestLibPropertyService.blueprintWebClientService("sample") + val restClientService = bluePrintRestLibPropertyService + .blueprintWebClientService("sample") val headers = mutableMapOf<String, String>() headers["X-Transaction-Id"] = "1234" - val response = restClientService.exchangeResource(HttpMethod.GET.name, "/sample/name", "") + val response = restClientService.exchangeResource(HttpMethod.GET.name, + "/sample/name", "") assertNotNull(response, "failed to get response") } @Test - fun testPatch() { - val restClientService = bluePrintRestLibPropertyService.blueprintWebClientService("sample") - val response = restClientService.exchangeResource(HttpMethod.PATCH.name, "/sample/name", "") - assertEquals("Patch request successful", response, "failed to get patch response") + fun testSimpleBasicAuth() { + val json: String = "{\n" + + " \"type\" : \"basic-auth\",\n" + + " \"url\" : \"http://localhost:8080\",\n" + + " \"username\" : \"admin\",\n" + + " \"password\" : \"jans\"\n" + + "}" + val mapper = ObjectMapper() + val actualObj: JsonNode = mapper.readTree(json) + val restClientService = bluePrintRestLibPropertyService + .blueprintWebClientService(actualObj) + lateinit var res:String + runBlocking { + val get = async(start = CoroutineStart.LAZY) { + restClientService.exchangeNB(HttpMethod.GET.name, + "/sample/basic", "")} + get.start() + res = get.await() + } + assertNotNull(res, "failed to get response") + assertEquals(res, "Basic request arrived successfully") } + @Test + fun testSampleAaiReq() { + val restClientService = bluePrintRestLibPropertyService + .blueprintWebClientService("test") + val headers = mutableMapOf<String, String>() + headers["X-TransactionId"] = "9999" + headers["X-FromAppId"] = "AAI" + val post1 = "{\n" + + " \"customer\": {\n" + + " \"global-customer-id\": \"ONSDEMOBJHKCustomer\",\n" + + " \"subscriber-name\": \"ONSDEMOBJHKCustomer\",\n" + + " \"subscriber-type\": \"CUST\",\n" + + " \"resource-version\": \"1552985011163\"\n" + + " }\n" + + "}" + lateinit var res1: Customer + lateinit var res2: Customer + lateinit var res3: String + lateinit var res4: String + lateinit var res5: String + lateinit var res6: String + runBlocking { + val get1 = async(start = CoroutineStart.LAZY) { + restClientService.exchangeNB(HttpMethod.GET.name, + "/sample/aai/v14/business/customers", "", headers, + Customer::class.java)} + + val get2 = async(start = CoroutineStart.LAZY) { + restClientService.exchangeNB(HttpMethod.GET.name, + "/sample/aai/v14/business/customers", "", headers, + Customer::class.java)} + + val post = async(start = CoroutineStart.LAZY) { + restClientService.exchangeNB(HttpMethod.POST.name, + "/sample/aai/v14/business/customers", post1, headers, + String::class.java)} + + val put = async(start = CoroutineStart.LAZY) { + restClientService.exchangeNB(HttpMethod.PUT.name, + "/sample/aai/v14/business/customers", post1, headers, + String::class.java)} + + val patch = async(start = CoroutineStart.LAZY) { + restClientService.exchangeNB(HttpMethod.PATCH.name, + "/sample/aai/v14/business/customers", post1, headers, + String::class.java)} + + val delete = async(start = CoroutineStart.LAZY) { + restClientService.exchangeNB(HttpMethod.DELETE.name, + "/sample/aai/v14/business/customers", "", headers, + String::class.java)} + + get1.start() + get2.start() + post.start() + put.start() + patch.start() + delete.start() + res1 = get1.await() + res2 = get2.await() + res3 = post.await() + res4 = put.await() + res5 = patch.await() + res6 = delete.await() + } + assertNotNull(res1, "failed to get response") + assertNotNull(res2, "failed to get response") + assertEquals(res1.id, "ONSDEMOBJHKCustomer") + assertEquals(res1.name, "ONSDEMOBJHKCustomer") + assertEquals(res1.type, "CUST") + assertEquals(res1.resource, "1552985011163") + assertEquals(res2.id, "ONSDEMOBJHKCustomer") + assertEquals(res2.name, "ONSDEMOBJHKCustomer") + assertEquals(res2.type, "CUST") + assertEquals(res2.resource, "1552985011163") + assertEquals(res3, "The message is successfully posted") + assertEquals(res4, "The put request is success") + assertEquals(res5, "The patch request is success") + assertEquals(res6, "The message is successfully deleted") + } } +/** + * Sample controller code for testing both http and https requests. + */ @RestController @RequestMapping("/sample") open class SampleController { + @GetMapping("/name") fun getName(): String = "Sample Controller" + @PatchMapping("/name") fun patchName(): String = "Patch request successful" + + @GetMapping("/basic") + fun getBasic(): String = "Basic request arrived successfully" + + + @GetMapping("/aai/v14/business/customers") + fun getAaiCustomers( + @RequestHeader(name = "X-TransactionId", required = true) + transId: String, + @RequestHeader(name = "X-FromAppId", required = true) + appId: String) : String { + if (transId != "9999" || appId != "AAI") { + return "" + } + return "{\n" + + " \"id\": \"ONSDEMOBJHKCustomer\",\n" + + " \"name\": \"ONSDEMOBJHKCustomer\",\n" + + " \"type\": \"CUST\",\n" + + " \"resource\": \"1552985011163\"\n" + + "}" + } + + @PostMapping("/aai/v14/business/customers") + fun postAaiCustomers( + @RequestHeader(name = "X-TransactionId", required = true) + transId: String, + @RequestHeader(name = "X-FromAppId", required = true) + appId: String) : String { + if (transId != "9999" || appId != "AAI") { + return "" + } + return "The message is successfully posted" + } + + + @PutMapping("/aai/v14/business/customers") + fun putAaiCustomers( + @RequestHeader(name = "X-TransactionId", required = true) + transId: String, + @RequestHeader(name = "X-FromAppId", required = true) + appId: String) : String { + if (transId != "9999" || appId != "AAI") { + return "" + } + return "The put request is success" + } + + @PatchMapping("/aai/v14/business/customers") + fun patchAaiCustomers( + @RequestHeader(name = "X-TransactionId", required = true) + transId: String, + @RequestHeader(name = "X-FromAppId", required = true) + appId: String) : String { + if (transId != "9999" || appId != "AAI") { + return "" + } + return "The patch request is success" + } + + @DeleteMapping("/aai/v14/business/customers") + fun deleteAaiCustomers( + @RequestHeader(name = "X-TransactionId", required = true) + transId: String, + @RequestHeader(name = "X-FromAppId", required = true) + appId: String) : String { + if (transId != "9999" || appId != "AAI") { + return "" + } + return "The message is successfully deleted" + } } +/** + * Security configuration required for basic authentication with username and + * password for any request in the server. + */ +@Configuration +@EnableWebSecurity +open class SecurityConfig : WebSecurityConfigurerAdapter() { + + @Throws(Exception::class) + override fun configure(http: HttpSecurity) { + http + .csrf().disable() + .authorizeRequests().anyRequest().authenticated() + .and() + .httpBasic() + } + + @Autowired + @Throws(Exception::class) + open fun configureGlobal(auth: AuthenticationManagerBuilder) { + auth.inMemoryAuthentication() + .withUser("admin") + .password(passwordEncoder().encode("jans")) + .roles("USER") + } + + @Bean + open fun passwordEncoder(): PasswordEncoder { + return BCryptPasswordEncoder() + } +} + +/** + * Http server required for http request to be processed along with the https + * server. + */ +@Component +class HttpServer { + @Bean + fun servletContainer(): ServletWebServerFactory { + + val connector = Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL) + connector.setPort(8080) + + val tomcat = TomcatServletWebServerFactory() + tomcat.addAdditionalTomcatConnectors(connector) + return tomcat + } +} + +/** + * Data class required for response + */ +data class Customer( + val id: String, + val name: String, + val type: String, + val resource: String)
\ No newline at end of file diff --git a/ms/blueprintsprocessor/modules/commons/rest-lib/src/test/resources/keystore.p12 b/ms/blueprintsprocessor/modules/commons/rest-lib/src/test/resources/keystore.p12 Binary files differnew file mode 100644 index 000000000..96b0d3ac3 --- /dev/null +++ b/ms/blueprintsprocessor/modules/commons/rest-lib/src/test/resources/keystore.p12 diff --git a/ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/selfservice/api/ExecutionServiceHandler.kt b/ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/selfservice/api/ExecutionServiceHandler.kt index 274346917..1e09bee8d 100644 --- a/ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/selfservice/api/ExecutionServiceHandler.kt +++ b/ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/selfservice/api/ExecutionServiceHandler.kt @@ -62,7 +62,7 @@ class ExecutionServiceHandler(private val bluePrintPathConfiguration: BluePrintP return bluePrintCatalogService.saveToDatabase(saveId, compressedFile, true) } catch (e: IOException) { throw BluePrintException(ErrorCode.IO_FILE_INTERRUPT.value, - "Error in Upload CBA: ${e.message}", e) + "Error in Upload CBA: ${e.message}", e) } finally { deleteNBDir(blueprintArchive) deleteNBDir(blueprintWorking) @@ -90,41 +90,42 @@ class ExecutionServiceHandler(private val bluePrintPathConfiguration: BluePrintP responseObserver.onCompleted() } else -> responseObserver.onNext(response(executionServiceInput, - "Failed to process request, 'actionIdentifiers.mode' not specified. Valid value are: 'sync' or 'async'.", - true).toProto()); + "Failed to process request, 'actionIdentifiers.mode' not specified. Valid value are: 'sync' or 'async'.", + true).toProto()); } } suspend fun doProcess(executionServiceInput: ExecutionServiceInput): ExecutionServiceOutput { val requestId = executionServiceInput.commonHeader.requestId log.info("processing request id $requestId") - val actionIdentifiers = executionServiceInput.actionIdentifiers - val blueprintName = actionIdentifiers.blueprintName val blueprintVersion = actionIdentifiers.blueprintVersion + try { + val basePath = bluePrintCatalogService.getFromDatabase(blueprintName, blueprintVersion) + log.info("blueprint base path $basePath") - val basePath = bluePrintCatalogService.getFromDatabase(blueprintName, blueprintVersion) - log.info("blueprint base path $basePath") - - val blueprintRuntimeService = BluePrintMetadataUtils.getBluePrintRuntime(requestId, basePath.toString()) + val blueprintRuntimeService = BluePrintMetadataUtils.getBluePrintRuntime(requestId, basePath.toString()) - val output = bluePrintWorkflowExecutionService.executeBluePrintWorkflow(blueprintRuntimeService, + val output = bluePrintWorkflowExecutionService.executeBluePrintWorkflow(blueprintRuntimeService, executionServiceInput, hashMapOf()) - val errors = blueprintRuntimeService.getBluePrintError().errors - if (errors.isNotEmpty()) { - val errorMessage = errors.stream().map { it.toString() }.collect(Collectors.joining(", ")) - setErrorStatus(errorMessage, output.status) + val errors = blueprintRuntimeService.getBluePrintError().errors + if (errors.isNotEmpty()) { + val errorMessage = errors.stream().map { it.toString() }.collect(Collectors.joining(", ")) + setErrorStatus(errorMessage, output.status) + } + return output + } catch (e: Exception) { + log.error("fail processing request id $requestId", e) + return response(executionServiceInput, e.localizedMessage, true) } - - return output } private suspend fun copyFromFilePart(filePart: FilePart, targetFile: File): File { return filePart.transferTo(targetFile) - .thenReturn(targetFile) - .awaitSingle() + .thenReturn(targetFile) + .awaitSingle() } private fun setErrorStatus(errorMessage: String, status: Status) { @@ -139,10 +140,10 @@ class ExecutionServiceHandler(private val bluePrintPathConfiguration: BluePrintP val executionServiceOutput = ExecutionServiceOutput() executionServiceOutput.commonHeader = executionServiceInput.commonHeader executionServiceOutput.actionIdentifiers = executionServiceInput.actionIdentifiers - executionServiceOutput.payload = JsonNodeFactory.instance.objectNode() val status = Status() if (failure) { + executionServiceOutput.payload = JsonNodeFactory.instance.objectNode() setErrorStatus(errorMessage, status) } else { status.eventType = EventType.EVENT_COMPONENT_PROCESSING.name diff --git a/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/AbstractComponentFunction.kt b/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/AbstractComponentFunction.kt index e78e87523..14feb28bf 100644 --- a/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/AbstractComponentFunction.kt +++ b/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/AbstractComponentFunction.kt @@ -22,6 +22,7 @@ import com.fasterxml.jackson.databind.JsonNode import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceInput import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceOutput import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.Status +import org.onap.ccsdk.cds.controllerblueprints.common.api.EventType import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintProcessorException import org.onap.ccsdk.cds.controllerblueprints.core.asObjectNode @@ -97,7 +98,7 @@ abstract class AbstractComponentFunction : BlueprintFunctionNode<ExecutionServic log.info("Preparing Response...") executionServiceOutput.commonHeader = executionServiceInput.commonHeader executionServiceOutput.actionIdentifiers = executionServiceInput.actionIdentifiers - var status: Status? + var status = Status() try { // Resolve the Output Expression val stepOutputs = bluePrintRuntimeService @@ -105,12 +106,12 @@ abstract class AbstractComponentFunction : BlueprintFunctionNode<ExecutionServic bluePrintRuntimeService.put("$stepName-step-outputs", stepOutputs.asObjectNode()) // Set the Default Step Status - status = Status() + status.eventType = EventType.EVENT_COMPONENT_EXECUTED.name } catch (e: Exception) { - status = Status() status.message = BluePrintConstants.STATUS_FAILURE + status.eventType = EventType.EVENT_COMPONENT_FAILURE.name } - executionServiceOutput.status = status!! + executionServiceOutput.status = status return this.executionServiceOutput } diff --git a/ms/controllerblueprints/application/src/test/resources/logback.xml b/ms/controllerblueprints/application/src/test/resources/logback-test.xml index 55b008d11..2252939e7 100644 --- a/ms/controllerblueprints/application/src/test/resources/logback.xml +++ b/ms/controllerblueprints/application/src/test/resources/logback-test.xml @@ -1,35 +1,35 @@ -<!--
- ~ Copyright © 2017-2018 AT&T Intellectual Property.
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<configuration>
- <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
- <!-- encoders are assigned the type
- ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
- <encoder>
- <pattern>%d{HH:mm:ss.SSS} %-5level %logger{100} - %msg%n</pattern>
- </encoder>
- </appender>
-
-
- <logger name="org.springframework" level="warn"/>
- <logger name="org.hibernate" level="info"/>
- <logger name="org.onap.ccsdk.cds.controllerblueprints" level="info"/>
-
- <root level="warn">
- <appender-ref ref="STDOUT"/>
- </root>
-
-</configuration>
+<!-- + ~ Copyright © 2017-2018 AT&T Intellectual Property. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<configuration> + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <!-- encoders are assigned the type + ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> + <encoder> + <pattern>%d{HH:mm:ss.SSS} %-5level [%thread] %logger{50} - %msg%n</pattern> + </encoder> + </appender> + + + <logger name="org.springframework" level="warn"/> + <logger name="org.hibernate" level="info"/> + <logger name="org.onap.ccsdk.cds.controllerblueprints" level="info"/> + + <root level="warn"> + <appender-ref ref="STDOUT"/> + </root> + +</configuration> diff --git a/ms/controllerblueprints/modules/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/TopologicalSortingUtilsTest.kt b/ms/controllerblueprints/modules/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/TopologicalSortingUtilsTest.kt index 08b77bd4e..5da43484c 100644 --- a/ms/controllerblueprints/modules/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/TopologicalSortingUtilsTest.kt +++ b/ms/controllerblueprints/modules/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/TopologicalSortingUtilsTest.kt @@ -17,20 +17,22 @@ package org.onap.ccsdk.cds.controllerblueprints.core.utils import org.junit.Test +import org.slf4j.LoggerFactory class TopologicalSortingUtilsTest { - + + private val log = LoggerFactory.getLogger(TopologicalSortingUtilsTest::class.java) @Test - fun testSorting(): Unit { + fun testSorting() { val graph: TopologicalSortingUtils<String> = TopologicalSortingUtils() graph.add("bundle-id", "bundle-mac") graph.add("bundle-id", "bundle-ip") graph.add("bundle-mac", "bundle-ip") graph.add("bundle-ip", "bundle-mac") - println("The current graph: " + graph) - println("In-degrees: " + graph.inDegree()) - println("Out-degrees: " + graph.outDegree()) - println("A topological sort of the vertices: " + graph.topSort()) + log.debug("The current graph: $graph") + log.debug("In-degrees: " + graph.inDegree()) + log.debug("Out-degrees: " + graph.outDegree()) + log.debug("A topological sort of the vertices: " + graph.topSort()) } }
\ No newline at end of file diff --git a/ms/controllerblueprints/modules/blueprint-core/src/test/resources/logback-test.xml b/ms/controllerblueprints/modules/blueprint-core/src/test/resources/logback-test.xml new file mode 100644 index 000000000..83e0bc674 --- /dev/null +++ b/ms/controllerblueprints/modules/blueprint-core/src/test/resources/logback-test.xml @@ -0,0 +1,31 @@ +<!-- + ~ Copyright © 2019 IBM. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<configuration> + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <!-- encoders are assigned the type + ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> + <encoder> + <pattern>%d{HH:mm:ss.SSS} %-5level [%thread] %logger{50} - %msg%n</pattern> + </encoder> + </appender> + + <logger name="org.onap.ccsdk.cds.controllerblueprints" level="info"/> + <root level="info"> + <appender-ref ref="STDOUT"/> + </root> + +</configuration> diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/load/ModelTypeLoadService.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/load/ModelTypeLoadService.kt index f7875efde..0fd30f206 100644 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/load/ModelTypeLoadService.kt +++ b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/load/ModelTypeLoadService.kt @@ -50,7 +50,7 @@ open class ModelTypeLoadService(private val modelTypeHandler: ModelTypeHandler) * Load the Model Type file content from the defined path, Load of sequencing should be maintained. */ open suspend fun loadPathModelType(modelTypePath: String) { - log.info(" *************************** loadModelType **********************") + log.info(" ****** loadModelType($modelTypePath) ********") try { val errorBuilder = StrBuilder() diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/load/ResourceDictionaryLoadService.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/load/ResourceDictionaryLoadService.kt index ce979f60e..25db333a0 100644 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/load/ResourceDictionaryLoadService.kt +++ b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/load/ResourceDictionaryLoadService.kt @@ -39,13 +39,18 @@ open class ResourceDictionaryLoadService(private val resourceDictionaryHandler: private val log = LoggerFactory.getLogger(ResourceDictionaryLoadService::class.java) open suspend fun loadPathsResourceDictionary(paths: List<String>) { - paths.forEach { - loadPathResourceDictionary(it) + coroutineScope { + val deferred = paths.map { + async { + loadPathResourceDictionary(it) + } + } + deferred.awaitAll() } } open suspend fun loadPathResourceDictionary(path: String) { - log.info(" *************************** loadResourceDictionary **********************") + log.info(" ******* loadResourceDictionary($path) ********") val files = normalizedFile(path).listFiles() val errorBuilder = StrBuilder() diff --git a/ms/controllerblueprints/modules/service/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/enhancer/BluePrintEnhancerServiceImplTest.kt b/ms/controllerblueprints/modules/service/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/enhancer/BluePrintEnhancerServiceImplTest.kt index 23c541d76..e82ffc458 100644 --- a/ms/controllerblueprints/modules/service/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/enhancer/BluePrintEnhancerServiceImplTest.kt +++ b/ms/controllerblueprints/modules/service/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/enhancer/BluePrintEnhancerServiceImplTest.kt @@ -55,21 +55,30 @@ class BluePrintEnhancerServiceImplTest { fun init() { runBlocking { modelTypeLoadService.loadPathModelType("./../../../../components/model-catalog/definition-type/starter-type") - resourceDictionaryLoadService.loadPathResourceDictionary("./../../../../components/model-catalog/resource-dictionary/starter-dictionary") - resourceDictionaryLoadService.loadPathResourceDictionary("./../../../../components/model-catalog/resource-dictionary/test-dictionary") + + val dictPaths: MutableList<String> = arrayListOf() + dictPaths.add("./../../../../components/model-catalog/resource-dictionary/starter-dictionary") + dictPaths.add("./../../../../components/model-catalog/resource-dictionary/test-dictionary") + resourceDictionaryLoadService.loadPathsResourceDictionary(dictPaths) } } @Test @Throws(Exception::class) fun testEnhancementAndValidation() { - val basePath = "./../../../../components/model-catalog/blueprint-model/test-blueprint/baseconfiguration" testComponentInvokeEnhancementAndValidation(basePath, "base-enhance") } @Test @Throws(Exception::class) + fun testVFWEnhancementAndValidation() { + val basePath = "./../../../../components/model-catalog/blueprint-model/service-blueprint/vFW" + testComponentInvokeEnhancementAndValidation(basePath, "vFW-enhance") + } + + @Test + @Throws(Exception::class) fun testGoldenEnhancementAndValidation() { val basePath = "./../../../../components/model-catalog/blueprint-model/test-blueprint/golden" testComponentInvokeEnhancementAndValidation(basePath, "golden-enhance") @@ -96,7 +105,7 @@ class BluePrintEnhancerServiceImplTest { val valid = bluePrintValidatorService.validateBluePrints(targetPath) Assert.assertTrue("blueprint($basePath) validation failed ", valid) - deleteDir(targetPath) +// deleteDir(targetPath) } } diff --git a/ms/controllerblueprints/modules/service/src/test/resources/logback.xml b/ms/controllerblueprints/modules/service/src/test/resources/logback-test.xml index e66127977..feb4514d6 100644 --- a/ms/controllerblueprints/modules/service/src/test/resources/logback.xml +++ b/ms/controllerblueprints/modules/service/src/test/resources/logback-test.xml @@ -17,13 +17,11 @@ <configuration> - <property name="localPattern" value="[%-8thread] %d{HH:mm:ss.SSS} %-5level %logger{50} - %msg%n" /> - - <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> <encoder> - <pattern>${localPattern}</pattern> + <pattern>%d{HH:mm:ss.SSS} %-5level [%thread] %logger{50} - %msg%n</pattern> </encoder> </appender> @@ -31,7 +29,8 @@ <logger name="org.springframework" level="warn"/> <logger name="org.springframework.web" level="warn"/> <logger name="org.hibernate" level="error"/> - <logger name="org.onap.ccsdk.cds" level="info"/> + <logger name="org.onap.ccsdk.cds.controllerblueprints.core" level="warn"/> + <logger name="org.onap.ccsdk.cds.controllerblueprints" level="info"/> <root level="warn"> <appender-ref ref="STDOUT"/> |