From 608ab78d17dbbea0ec9f1d6d0dc8d38710795c87 Mon Sep 17 00:00:00 2001 From: mxzhao <mengxuan.zhao@eglobalmark.com> Date: Tue, 6 Nov 2018 10:34:53 +0100 Subject: [PATCH] SOL 003 Fault Management API --- .../IndividualAlarm.robot | 2 +- .../IndividualSubscription.robot | 62 ++++++++++++ .../NotificationEndpoint.robot | 57 +++++++++++ .../Subscriptions.robot | 96 +++++++++++++++++++ .../jsons/fmSubscriptionRequest.json | 10 ++ .../VNFFaultManagement-API_egm/variables.txt | 6 +- .../Subscriptions.robot | 12 ++- .../variables.txt | 1 - TrackingStatus.txt | 11 ++- 9 files changed, 243 insertions(+), 14 deletions(-) create mode 100644 SOL003/VNFFaultManagement-API_egm/IndividualSubscription.robot create mode 100644 SOL003/VNFFaultManagement-API_egm/NotificationEndpoint.robot create mode 100644 SOL003/VNFFaultManagement-API_egm/Subscriptions.robot create mode 100644 SOL003/VNFFaultManagement-API_egm/jsons/fmSubscriptionRequest.json diff --git a/SOL003/VNFFaultManagement-API_egm/IndividualAlarm.robot b/SOL003/VNFFaultManagement-API_egm/IndividualAlarm.robot index 404984d5..d1aae536 100644 --- a/SOL003/VNFFaultManagement-API_egm/IndividualAlarm.robot +++ b/SOL003/VNFFaultManagement-API_egm/IndividualAlarm.robot @@ -12,7 +12,7 @@ ${Etag_modified}= a modified etag *** Test cases *** POST Alarm - Method not implemented - log Trying to perform a PUT. This method should not be implemented + log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Post ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} diff --git a/SOL003/VNFFaultManagement-API_egm/IndividualSubscription.robot b/SOL003/VNFFaultManagement-API_egm/IndividualSubscription.robot new file mode 100644 index 00000000..388aa89e --- /dev/null +++ b/SOL003/VNFFaultManagement-API_egm/IndividualSubscription.robot @@ -0,0 +1,62 @@ +*** Settings *** +Resource variables.txt +Library REST http://${VNFM_HOST}:${VNFM_PORT} +... spec=SOL003-VNFFaultManagement-API.yaml +Documentation This resource represents an individual subscription for VNF alarms. +... The client can use this resource to read and to terminate a subscription to notifications related to VNF fault management. +Suite setup Check resource existance + +*** Test Cases *** +Post Individual Subscription - Method not implemented + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Log Validate Status code + Output response + Integer response status 405 + +Get Information about an individual subscription + log Trying to get information about an individual subscription + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Log Validate Status code + Output response + Integer response status 200 + +PUT an individual subscription - Method not implemented + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Log Validate Status code + Output response + Integer response status 405 + +PATCH an individual subscription - Method not implemented + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Log Validate Status code + Output response + Integer response status 405 + +DELETE an individual subscription + log Try to delete an individual subscription + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Log Validate Status code + Output response + Integer response status 204 + +*** Key words *** + +Check resource existance + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Integer response status 200 \ No newline at end of file diff --git a/SOL003/VNFFaultManagement-API_egm/NotificationEndpoint.robot b/SOL003/VNFFaultManagement-API_egm/NotificationEndpoint.robot new file mode 100644 index 00000000..afc9171f --- /dev/null +++ b/SOL003/VNFFaultManagement-API_egm/NotificationEndpoint.robot @@ -0,0 +1,57 @@ +*** Settings *** +Resource variables.txt +Library REST http://${NFVO_HOST}:${NFVO_PORT} +... spec=SOL003-VNFFaultManagement-API.yaml + +*** Test Cases *** +Deliver a notification - Operation Occurence + log The POST method delivers a notification from the server to the client. + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Post ${notification_ep} ${AlarmNotification} + Log Validate Status code + Output response + Integer response status 204 + +Deliver a notification - Id Creation + log The POST method delivers a notification from the server to the client. + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Post ${notification_ep} ${AlarmClearedNotification} + Log Validate Status code + Output response + Integer response status 204 + +Deliver a notification - Id deletion + log The POST method delivers a notification from the server to the client. + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Post ${notification_ep} ${AlarmListRebuiltNotification} + Log Validate Status code + Output response + Integer response status 204 + +Test a notification end point + log The GET method allows the server to test the notification endpoint + Get ${notification_ep} + Log Validate Status code + Output response + Integer response status 204 + +PUT notification - Method not implemented + log Trying to perform a PUT. This method should not be implemented + Put ${notification_ep} + Log Validate Status code + Output response + Integer response status 405 + +PATCH subscriptions - Method not implemented + log Trying to perform a PATCH. This method should not be implemented + Patch ${notification_ep} + Log Validate Status code + Output response + Integer response status 405 + +DELETE subscriptions - Method not implemented + log Trying to perform a DELETE. This method should not be implemented + Delete ${notification_ep} + Log Validate Status code + Output response + Integer response status 405 \ No newline at end of file diff --git a/SOL003/VNFFaultManagement-API_egm/Subscriptions.robot b/SOL003/VNFFaultManagement-API_egm/Subscriptions.robot new file mode 100644 index 00000000..85c51a99 --- /dev/null +++ b/SOL003/VNFFaultManagement-API_egm/Subscriptions.robot @@ -0,0 +1,96 @@ +*** Settings *** +Resource variables.txt +Library REST http://${VNFM_HOST}:${VNFM_PORT} +... spec=SOL003-VNFFaultManagement-API.yaml +Library OperatingSystem + +*** Test Cases *** +Create a new subscription + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File json/fmSubscriptionRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Output response + Integer response status 201 + Log Status code validated + +Create a new Subscription - DUPLICATION + Log Trying to create a subscription with an already created content + Pass Execution If ${NVFM_DUPLICATION} == 0 VNFM is not permitting duplication. Skipping the test + Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + ${body}= Get File json/fmSubscriptionRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Output response + Integer response status 201 + Log Status code validated + +Create a new Subscription - NO-DUPLICATION + Log Trying to create a subscription with an already created content + Pass Execution If ${NVFM_DUPLICATION} == 1 VNFM permits duplication. Skipping the test + Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + ${body}= Get File json/fmSubscriptionRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Output response + Integer response status 303 + Log Status code validated + +GET Subscriptions + Log Get the list of active subscriptions + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Output response + Log Validate Status code + Integer response status 200 + +GET Subscription - Filter + Log Get the list of active subscriptions using a filter + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter} + Integer response status 200 + Log Received a 200 OK as expected + +GET subscriptions - Bad Request Invalid attribute-based filtering parameters + Log Get the list of active subscriptions using an invalid filter + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter_invalid} + Integer response status 400 + Log Received a 400 Bad Request as expected + +PUT subscriptions - Method not implemented + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Log Validate Status code + Output response + Integer response status 405 + +PATCH subscriptions - Method not implemented + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Log Validate Status code + Output response + Integer response status 405 + +DELETE subscriptions - Method not implemented + log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Log Validate Status code + Output response + Integer response status 405 + \ No newline at end of file diff --git a/SOL003/VNFFaultManagement-API_egm/jsons/fmSubscriptionRequest.json b/SOL003/VNFFaultManagement-API_egm/jsons/fmSubscriptionRequest.json new file mode 100644 index 00000000..e44916f8 --- /dev/null +++ b/SOL003/VNFFaultManagement-API_egm/jsons/fmSubscriptionRequest.json @@ -0,0 +1,10 @@ +{ + "filter": { + "vnfInstanceSubscriptionFilter": { + "vnfdIds": [ + "6fc3539c-e602-4afa-8e13-962fb5a7d81f" + ] + } + }, + "callbackUri": "http://127.0.0.1/subscribe" +} \ No newline at end of file diff --git a/SOL003/VNFFaultManagement-API_egm/variables.txt b/SOL003/VNFFaultManagement-API_egm/variables.txt index 3facdfff..c995c9cb 100644 --- a/SOL003/VNFFaultManagement-API_egm/variables.txt +++ b/SOL003/VNFFaultManagement-API_egm/variables.txt @@ -35,6 +35,6 @@ ${sub_filter} filter ${sub_filter_invalid} filter_invalid ${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${notification_ep} notification -${VnfLcmOperationOccurrenceNotification} {} -${VnfIdentifierCreationNotification} {} -${VnfIdentifierDeletionNotification} {} \ No newline at end of file +${AlarmNotification} {} +${AlarmClearedNotification} {} +${AlarmListRebuiltNotification} {} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API_egm/Subscriptions.robot b/SOL003/VNFLifecycleManagement-API_egm/Subscriptions.robot index 99f81604..33e0b97e 100644 --- a/SOL003/VNFLifecycleManagement-API_egm/Subscriptions.robot +++ b/SOL003/VNFLifecycleManagement-API_egm/Subscriptions.robot @@ -2,14 +2,16 @@ Resource variables.txt Library REST http://${VNFM_HOST}:${VNFM_PORT} ... spec=SOL003-VNFLifecycleManagement-API.yaml +Library OperatingSystem *** Test Cases *** Create a new subscription - Log Create VNF instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${LccnSubscriptionRequest} + ${body}= Get File json/lccbSubscriptionRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} Output response Integer response status 201 Log Status code validated @@ -20,7 +22,8 @@ Create a new Subscription - DUPLICATION Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${LccnSubscriptionRequest} + ${body}= Get File json/lccbSubscriptionRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} Output response Integer response status 201 Log Status code validated @@ -31,7 +34,8 @@ Create a new Subscription - NO-DUPLICATION Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${LccnSubscriptionRequest} + ${body}= Get File json/lccbSubscriptionRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} Output response Integer response status 303 Log Status code validated diff --git a/SOL003/VNFLifecycleManagement-API_egm/variables.txt b/SOL003/VNFLifecycleManagement-API_egm/variables.txt index d144946f..e738edac 100644 --- a/SOL003/VNFLifecycleManagement-API_egm/variables.txt +++ b/SOL003/VNFLifecycleManagement-API_egm/variables.txt @@ -27,7 +27,6 @@ ${ARTIFACT_ID} artifactId ${WRONG_ACCEPT} application/json ${vnfLcmOpOccId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d ${CancelMode} GRACEFUL -${LccnSubscriptionRequest} {} ${NVFM_DUPLICATION} 0 ${sub_filter} filter ${sub_filter_invalid} filter_invalid diff --git a/TrackingStatus.txt b/TrackingStatus.txt index ad81e23f..2b451b04 100644 --- a/TrackingStatus.txt +++ b/TrackingStatus.txt @@ -31,8 +31,9 @@ SOL003 - VNFFaultManagement-API_egm ------------------------------> [IN PROGRESS] * Alarms ----------------------------------------------> [DONE] * IndividualAlarm ----------------------------------------------> [DONE] - * Subscriptions --------------------------------------------> [IN PROGRESS] //to be reviewed with nxw on how notification server will be configured - * IndividualSubscription -----------------------------------> [IN PROGRESS] + * Subscriptions --------------------------------------------> [DONE] + * IndividualSubscription -----------------------------------> [DONE] + * NotificationEndpoint -------------------------------------> [DONE] //to be reviewed with nxw on how notification server will be configured - VNFFaultManagementNotification-API_egm ------------------> [NOT STARTED] @@ -62,9 +63,9 @@ SOL003 * RollbackOperationTask ------------------------------------> [DONE] * FailOperationTask ----------------------------------------> [DONE] * CancelOperationTask --------------------------------------> [DONE] - * Subscriptions --------------------------------------------> [DONE] //to be reviewed with nxw on how notification server will be configured - * IndividualSubscription -----------------------------------> [DONE] //same as above - * NotificationEndpoint -------------------------------------> [DONE] //same as above + * Subscriptions --------------------------------------------> [DONE] + * IndividualSubscription -----------------------------------> [DONE] + * NotificationEndpoint -------------------------------------> [DONE] //to be reviewed with nxw on how notification server will be configured - VNFLifecycleOperationGranting-API_egm -------------------> [NOT STARTED] -- GitLab