{
"id": "AppPkgInfoId",
"appDid": "appdId",
"appName": "APP_NAME",
"appSoftwareVersion": "APP_SOFTWARE_VERSION",
"appDVersion": "APP_D_VERSION",
"checksum": {
"algorithm": "SHA-256",
"hash": "0x1234567890abcdef"
},
"softwareImages": ["info about sofware image"],
"onBoardingState": "CREATED",
"operationalState": "ENABLED",
"usageState": "NOT_IN_USE",
"mecInfo": ["mecInfo"],
"links": {
"self": {
"href": "/app_lcm/v1/app_packages/123"
},
"appD": {
"href": "/app_lcm/v1/on_boarded_app_packages/456/appd"
},
"appPkgContent": {
"href": "/app_lcm/v1/on_boarded_app_packages/456/package_content"
}
}
}
\ No newline at end of file
This diff is collapsed.
{
"description": "'The data type AppPkgInfo represents the parameters for an application package resource'",
"type": "object",
"required": [
"id",
"appDId",
"appName",
"appSoftwareVersion",
"appDVersion",
"checksum",
"softwareImages",
"onboardingState",
"operationalState",
"usageState",
"_links"
],
"properties": {
"id": {
"description": "Identifier of the onboarded application package.",
"type": "string"
},
"appDId": {
"description": "Identifier of this MEC application descriptor. This attribute shall be globally unique.",
"type": "string"
},
"appProvider": {
"description": "Provider of the application and of the AppD.",
"type": "string"
},
"appName": {
"description": "Name to identify the MEC application.",
"type": "string"
},
"appSoftwareVersion": {
"description": "Software version of the application. This is updated when there is any change to the software in the onboarded application package.",
"type": "string"
},
"appDVersion": {
"description": "Identifies the version of the application descriptor.",
"type": "string"
},
"checksum": {
"description": "",
"properties": {
"algorithm": {
"description": " Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512.",
"type": "string"
},
"hash": {
"description": "'String 1 The hexadecimal value of the checksum'",
"type": "string"
}
},
"required": [
"algorithm",
"hash"
],
"type": "object"
},
"softwareImages": {
"description": "Information of application software image in application package. Type is TBD"
},
"additionalArtifacts": {
"description": "Additional information of application package artifacts that are not application software images. Type is TBD"
},
"onboardingState": {
"description": "Onboarding state of application package",
"type": "string",
"format": "enum",
"enum": [
"CREATED",
"UPLOADING",
"PROCESSING",
"ONBOARDED"
]
},
"operationalState": {
"description": "Operational state of the onboarded application package: •ENABLED: the application package can be used for instantiation of new application instances. •DISABLED: the application package cannot be used for further application instantiation requests.",
"type": "string",
"enum": [
"ENABLED",
"DISABLED"
]
},
"usageState": {
"description": "Usage state of the onboarded instance of the application package",
"type": "string",
"format": "enum",
"enum": [
"IN_USE",
"NOT_IN_USE"
]
},
"userDefinedData": {
"description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'",
"type": "object",
"additionalProperties": true
},
"_links": {
"description": "Links to resources related to this resource.",
"type": "object",
"required": [
"self",
"appD",
"appPkgContent"
],
"properties": {
"self": {
"properties": {
"href": {
"description": "URI referring to a resource",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "URI"
}
},
"required": [
"href"
],
"type": "object",
"x-etsi-ref": "6.5.2"
},
"appD": {
"properties": {
"href": {
"description": "URI referring to a resource",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "URI"
}
},
"required": [
"href"
],
"type": "object",
"x-etsi-ref": "6.5.2"
},
"appPkgContent": {
"properties": {
"href": {
"description": "URI referring to a resource",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "URI"
}
},
"required": [
"href"
],
"type": "object",
"x-etsi-ref": "6.5.2"
}
}
}
}
}
\ No newline at end of file
{
"description": "'The data type represents the operational state for an application package resource'",
"type": "object",
"required": [
"operationalState"
],
"properties": {
"operationalState": {
"type": "string",
"enum": [
"DISABLED",
"ENABLED"
]
}
}
}
\ No newline at end of file
{
"description": "'This data type represents an application package management notification for informing the subscribers about onboarding application package resources. The notification is triggered when a new application package is onboarded'",
"type": "object",
"required": [
"id",
"notificationType",
"subscriptionId",
"timeStamp",
"appPkgId",
"appDId",
"operationalState",
"_links"
],
"properties": {
"id": {
"description": "''",
"type": "string"
},
"notificationType": {
"description": "Discriminator for the different notification types",
"type": "string",
"enum": [
"AppPackageOnBoarded",
"AppPacakgeEnabled",
"AppPacakgeDisabled",
"AppPackageDeleted"
]
},
"subscriptionId": {
"description": "Identifier of the subscription related to this notification.",
"type": "string"
},
"timeStamp": {
"properties": {
"nanoSeconds": {
"description": "The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
"format": "Uint32",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint32"
},
"seconds": {
"description": "The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
"format": "Uint32",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint32"
}
},
"required": [
"seconds",
"nanoSeconds"
],
"type": "object",
"x-etsi-ref": "6.2.5.4"
},
"appPkgId": {
"description": "Identifier of the onboarded application package.",
"type": "string"
},
"appDId": {
"description": "Identifier of this MEC application descriptor. This attribute shall be globally unique.",
"type": "string"
},
"operationalState": {
"type": "string",
"enum": [
"DISABLED",
"ENABLED"
]
},
"_links": {
"description": "Links to resources related to this resource.",
"type": "object",
"required": [
"subscription"
],
"properties": {
"subscription": {
"properties": {
"href": {
"description": "URI referring to a resource",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "URI"
}
},
"required": [
"href"
],
"type": "object",
"x-etsi-ref": "6.5.2"
}
}
}
}
}
\ No newline at end of file
{
"description": "'The data type represents a subscription to notification of application package management for the onboarding, or operational state change of application package'",
"type": "object",
"required": [
"id",
"subscriptionType",
"callbackUri",
"_links"
],
"properties": {
"id": {
"description": "''",
"type": "string"
},
"subscriptionType": {
"description": "Subscribed notification type.",
"type": "string",
"enum": [
"AppPackageOnBoardingSubscription",
"AppPacakgeOperationChange",
"AppPackageDeletion"
]
},
"callbackUri": {
"description": "The URI of the endpoint for the notification to be sent to.",
"type": "string",
"format": "uri"
},
"_links": {
"description": "Links to resources related to this resource.",
"type": "object",
"required": [
"self"
],
"properties": {
"self": {
"properties": {
"href": {
"description": "URI referring to a resource",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "URI"
}
},
"required": [
"href"
],
"type": "object",
"x-etsi-ref": "6.5.2"
}
}
}
}
}
\ No newline at end of file
{
"description": "'The data type represents a subscription link list of notification on application package management'",
"type": "object",
"required": [
"_links"
],
"properties": {
"_links": {
"description": "Links to resources related to this resource.",
"type": "object",
"required": [
"self"
],
"properties": {
"self": {
"properties": {
"href": {
"description": "URI referring to a resource",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "URI"
}
},
"required": [
"href"
],
"type": "object",
"x-etsi-ref": "6.5.2"
},
"subscriptions": {
"type": "array",
"items": {
"description": "'The data type represents the input parameters of \"subscription operation\" to notification of application package management for the onboarding, or operational state change of application package.'",
"type": "object",
"required": [
"href",
"subsctiptionType"
],
"properties": {
"href": {
"description": "The URI referring to the subscription.",
"type": "string",
"format": "uri"
},
"subsctiptionType": {
"description": "'Subscribed notification type'",
"type": "string",
"enum": [
"AppPackageOnBoardingSubscription",
"AppPacakgeOperationChange",
"AppPackageDeletion"
]
}
}
}
}
}
}
}
}
\ No newline at end of file
{
"properties": {
"appPkgName": {
"description": "Name of the application package to be onboarded.",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"appPkgPath": {
"type": "string"
},
"appPkgVersion": {
"description": "Version of the application package to be onboarded.\nThe appPkgName with appPkgVersion can be used to uniquely identify the application package.",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"appProvider": {
"description": "The provider's name of the application package to be onboarded.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"checksum": {
"description": "",
"properties": {
"algorithm": {
"description": " Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512.",
"type": "string"
},
"hash": {
"description": "'String 1 The hexadecimal value of the checksum'",
"type": "string"
}
},
"required": [
"algorithm",
"hash"
],
"type": "object"
},
"userDefinedData": {
"description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'",
"type": "object",
"additionalProperties": true
}
},
"required": [
"appPkgName",
"appPkgVersion",
"checksum",
"appPkgPath"
],
"type": "object",
"x-etsi-notes": "NOTE:\tIt is for further study how to convey appPkgPath, and align with ETSI GS NFV-SOL 005 [i.7].",
"x-etsi-ref": "6.2.3.2"
}
\ No newline at end of file
''[Documentation] robot --outputdir ./outputs ./PlatformConfiguration.robot
... Test Suite to validate Platform Configuration operations.
*** Settings ***
Resource environment/variables.txt
Resource ../../../GenericKeywords.robot
Library REST ${MEPM_SCHEMA}://${MEPM_HOST}:${MEPM_PORT} ssl_verify=false
Library BuiltIn
Library OperatingSystem
*** Test Cases ***
TC_MEC_MEC010p2_MEPM_LCM_001_OK
[Documentation] TP_MEC_MEC010p2_MEPM_LCM_001_OK
... Check that MEC API provider has created the configuration information in AppD to the MEPM-V
... ETSI GS MEC 010-2 2.2.1, clause 7.7.6.3.1
... ETSI GS MEC 010-2 2.2.1, Table 6.2.2.21.2-1 #ConfigPlatformForAppRequest
Request to configure Platform ${APP_INSTANCE_ID} ConfigPlatformForAppRequest
Check HTTP Response Status Code Is 202
Check Response Header contains Location
TC_MEC_MEC010p2_MEPM_LCM_001_BR
[Documentation] TP_MEC_MEC010p2_MEPM_LCM_001_BR
... Check that MEC API provider sends an error when it receives a malformed request for the configuration information in AppD to the MEPM-V
... ETSI GS MEC 010-2 2.2.1, clause 7.7.6.3.1
... ETSI GS MEC 010-2 2.2.1, Table 6.2.2.21.2-1 #ConfigPlatformForAppRequest
Request to configure Platform ${APP_INSTANCE_ID} ConfigPlatformForAppRequestBadRequest
Check HTTP Response Status Code Is 400
TC_MEC_MEC010p2_MEPM_LCM_001_NF
[Documentation] TP_MEC_MEC010p2_MEPM_LCM_001_BR
... "Check that MEC API provider sends an error when it receives a request
... for the configuration information in AppD to the MEPM-V with not valid app instance ID
... ETSI GS MEC 010-2 2.2.1, clause 7.7.6.3.1
... ETSI GS MEC 010-2 2.2.1, Table 6.2.2.21.2-1 #ConfigPlatformForAppRequest
Request to configure Platform ${NOT_EXISTING_APP_INSTANCE_ID} ConfigPlatformForAppRequest
Check HTTP Response Status Code Is 404
*** Keywords ***
Request to configure Platform
[Argument] ${appInstanceId} ${content}
Log Request to configure platform
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
${file}= Catenate SEPARATOR= jsons/ ${content} .json
${body}= Get File ${file}
Post ${apiRoot}/${apiName}/${apiVersion}/app_instances/${appInstanceId}/configure_platform_for_app ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
\ No newline at end of file
*** Variables ***
# Generic variables
${MEPM_SCHEMA} http
${MEPM_HOST} 127.0.0.1
${MEPM_PORT} 8081
${response} {}
${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l
${apiRoot}
${apiName} app_lcm
${apiVersion} v1
# Specific variables
${APP_INSTANCE_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3
${NOT_EXISTING_APP_INSTANCE_ID} NOT_EXISTING_APP_INSTANCE_ID
\ No newline at end of file
{
"appServiceRequired": [{
"sernName": "serviceName"
}]
}
\ No newline at end of file
{
"appServiceWrongRequired": [{
"sernName": "serviceName"
}]
}
\ No newline at end of file
*** Variables ***
# Generic variables
${MEPM_SCHEMA} http
${MEPM_HOST} 127.0.0.1
${MEPM_PORT} 8081
${response} {}
${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l
${apiRoot}
${apiName} app_pkgm
${apiVersion} v1
${ACCEPTED_CONTENT_TYPE} text/plain
# Specific variables
${APP_PKG_ID} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
${APP_INSTANCE_ID} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
${APPD_ID} appdId
${NOT_EXISTING_APP_INSTANCE_ID} NOT_EXISTING_APP_INSTANCE_ID
${CALLBACK_URI} http://some.url/somepath
${SUBSCRIPTION_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3
${MALFORMED_FILTER_NAME} operationalStatus
${FILTER_VALUE} ENABLED
${NON_EXISTENT_APP_PKG_ID} NON_EXISTENT_APP_PKG_ID
${NON_EXISTENT_SUBSCRIPTION_ID} NON_EXISTENT_SUBSCRIPTION_ID
${NON_EXISTENT_APPD_ID} NON_EXISTENT_APPD_ID
\ No newline at end of file
{
"callbackUri": "http://some.url/somepath",
"subsctiptionType": "AppPackageOnBoardingSubscription"
}
\ No newline at end of file
{
"callbackUri": "http://some.url/somepath",
"subscriptionType": "ON-BOARDING"
}
\ No newline at end of file
{
"description": "'The data type AppPkgInfo represents the parameters for an application package resource'",
"type": "object",
"required": [
"id",
"appDId",
"appName",
"appSoftwareVersion",
"appDVersion",
"checksum",
"softwareImages",
"onboardingState",
"operationalState",
"usageState",
"mecInfo",
"_links"
],
"properties": {
"id": {
"description": "Identifier of the onboarded application package.",
"type": "string"
},
"appDId": {
"description": "Identifier of this MEC application descriptor. This attribute shall be globally unique.",
"type": "string"
},
"appProvider": {
"description": "Provider of the application and of the AppD.",
"type": "string"
},
"appName": {
"description": "Name to identify the MEC application.",
"type": "string"
},
"appSoftwareVersion": {
"description": "Software version of the application. This is updated when there is any change to the software in the onboarded application package.",
"type": "string"
},
"appDVersion": {
"description": "Identifies the version of the application descriptor.",
"type": "string"
},
"checksum": {
"description": "",
"properties": {
"algorithm": {
"description": " Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512.",
"type": "string"
},
"hash": {
"description": "'String 1 The hexadecimal value of the checksum'",
"type": "string"
}
},
"required": [
"algorithm",
"hash"
],
"type": "object"
},
"softwareImages": {
"description": "Information of application software image in application package. Type is TBD"
},
"additionalArtifacts": {
"description": "Additional information of application package artifacts that are not application software images. Type is TBD"
},
"onboardingState": {
"description": "Onboarding state of application package",
"type": "string",
"format": "enum",
"enum": [
"CREATED",
"UPLOADING",
"PROCESSING",
"ONBOARDED"
]
},
"operationalState": {
"description": "Operational state of the onboarded application package: •ENABLED: the application package can be used for instantiation of new application instances. •DISABLED: the application package cannot be used for further application instantiation requests.",
"type": "string",
"enum": [
"ENABLED",
"DISABLED"
]
},
"usageState": {
"description": "Usage state of the onboarded instance of the application package",
"type": "string",
"format": "enum",
"enum": [
"IN_USE",
"NOT_IN_USE"
]
},
"mecInfo": {
"description": "",
"type": "array",
"items": {
"type": "string"
}
},
"userDefinedData": {
"description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'",
"type": "object",
"additionalProperties": true
},
"_links": {
"description": "Links to resources related to this resource.",
"type": "object",
"required": [
"self",
"appD",
"appPkgContent"
],
"properties": {
"self": {
"properties": {
"href": {
"description": "URI referring to a resource",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "URI"
}
},
"required": [
"href"
],
"type": "object",
"x-etsi-ref": "6.5.2"
},
"appD": {
"properties": {
"href": {
"description": "URI referring to a resource",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "URI"
}
},
"required": [
"href"
],
"type": "object",
"x-etsi-ref": "6.5.2"
},
"appPkgContent": {
"properties": {
"href": {
"description": "URI referring to a resource",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "URI"
}
},
"required": [
"href"
],
"type": "object",
"x-etsi-ref": "6.5.2"
}
}
}
}
}
\ No newline at end of file
{
"description": "'The data type represents a subscription to notification of application package management for the onboarding, or operational state change of application package'",
"type": "object",
"required": [
"id",
"subscriptionType",
"callbackUri",
"_links"
],
"properties": {
"id": {
"description": "''",
"type": "string"
},
"subscriptionType": {
"description": "Subscribed notification type.",
"type": "string",
"enum": [
"AppPackageOnBoardingSubscription",
"AppPacakgeOperationChangeSubscription",
"AppPackageDeletionSubscription"
]
},
"callbackUri": {
"description": "The URI of the endpoint for the notification to be sent to.",
"type": "string",
"format": "uri"
},
"_links": {
"description": "Links to resources related to this resource.",
"type": "object",
"required": [
"self"
],
"properties": {
"self": {
"properties": {
"href": {
"description": "URI referring to a resource",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "URI"
}
},
"required": [
"href"
],
"type": "object",
"x-etsi-ref": "6.5.2"
}
}
}
}
}
\ No newline at end of file