aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmso-service/pom.xml25
-rw-r--r--cmso-service/src/main/resources/swagger-ui/dist/swagger.json2320
-rw-r--r--cmso-service/src/test/java/org/onap/optf/cmso/service/rs/CMSOServiceImplTest.java20
3 files changed, 1195 insertions, 1170 deletions
diff --git a/cmso-service/pom.xml b/cmso-service/pom.xml
index 160deb7..5317b98 100644
--- a/cmso-service/pom.xml
+++ b/cmso-service/pom.xml
@@ -140,6 +140,12 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
@@ -194,6 +200,25 @@
<groupId>com.att.eelf</groupId>
<artifactId>eelf-core</artifactId>
<version>${eelf.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.powermock</groupId>
+ <artifactId>powermock-module</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.powermock</groupId>
+ <artifactId>powermock-api-mockito</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.powermock</groupId>
+ <artifactId>powermock-module-junit4</artifactId>
+ </exclusion>
+
+ </exclusions>
</dependency>
<!-- <dependency>
<groupId>org.onap.aaf.authz</groupId>
diff --git a/cmso-service/src/main/resources/swagger-ui/dist/swagger.json b/cmso-service/src/main/resources/swagger-ui/dist/swagger.json
index 95bd771..b8f5def 100644
--- a/cmso-service/src/main/resources/swagger-ui/dist/swagger.json
+++ b/cmso-service/src/main/resources/swagger-ui/dist/swagger.json
@@ -1,1161 +1,1161 @@
-{
- "swagger" : "2.0",
- "info" : {
- "version" : "0.1.0-SNAPSHOT",
- "title" : "cmso"
- },
- "basePath" : "/cmso",
- "paths" : {
- "/{apiVersion}/admin/{id}" : {
- "get" : {
- "summary" : "",
- "description" : "Returns encrypted value of id.",
- "operationId" : "exec",
- "produces" : [ "text/plain" ],
- "parameters" : [ {
- "name" : "apiVersion",
- "in" : "path",
- "description" : "v1|v2",
- "required" : true,
- "type" : "string",
- "default" : "v1"
- }, {
- "name" : "id",
- "in" : "path",
- "description" : "Identifier",
- "required" : true,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "csv"
- } ],
- "responses" : {
- "200" : {
- "description" : "OK",
- "schema" : {
- "type" : "string"
- }
- },
- "400" : {
- "description" : "Request failed"
- }
- }
- }
- },
- "/{apiVersion}/health" : {
- "get" : {
- "summary" : "",
- "description" : "Returns health status of server.",
- "operationId" : "healthCheck",
- "produces" : [ "application/json" ],
- "parameters" : [ {
- "name" : "apiVersion",
- "in" : "path",
- "description" : "v1",
- "required" : true,
- "type" : "string",
- "default" : "v1"
- }, {
- "name" : "checkInterfaces",
- "in" : "query",
- "description" : "Check Interfaces",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "boolean",
- "default" : true
- },
- "collectionFormat" : "multi"
- } ],
- "responses" : {
- "200" : {
- "description" : "OK",
- "schema" : {
- "$ref" : "#/definitions/HealthCheckMessage"
- }
- },
- "400" : {
- "description" : "Not healthy",
- "schema" : {
- "$ref" : "#/definitions/HealthCheckMessage"
- }
- }
- }
- }
- },
- "/{apiVersion}/optimizerCallback" : {
- "post" : {
- "summary" : "",
- "description" : "Processes optimizer results callback to a Pending Optimization schedule.",
- "operationId" : "sniroCallback",
- "produces" : [ "application/json" ],
- "parameters" : [ {
- "name" : "apiVersion",
- "in" : "path",
- "description" : "v1",
- "required" : true,
- "type" : "string",
- "default" : "v1"
- }, {
- "in" : "body",
- "name" : "body",
- "description" : "Return schedules > lastScheduleId",
- "required" : false,
- "schema" : {
- "$ref" : "#/definitions/Response from schedule optimizer"
- }
- } ],
- "responses" : {
- "200" : {
- "description" : "OK"
- },
- "500" : {
- "description" : "Unexpected Runtime error"
- }
- }
- }
- },
- "/{apiVersion}/schedules" : {
- "get" : {
- "summary" : "",
- "description" : "Returns a list of Scheduler Requests based upon the filter criteria.",
- "operationId" : "searchScheduleRequests",
- "produces" : [ "application/json" ],
- "parameters" : [ {
- "name" : "apiVersion",
- "in" : "path",
- "description" : "v1",
- "required" : true,
- "type" : "string",
- "default" : "v1"
- }, {
- "name" : "includeDetails",
- "in" : "query",
- "description" : "Include details",
- "required" : false,
- "type" : "boolean",
- "default" : false
- }, {
- "name" : "scheduleId",
- "in" : "query",
- "description" : "Schedule identifier",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "scheduleName",
- "in" : "query",
- "description" : "Schedule name",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "userId",
- "in" : "query",
- "description" : "SCheduler creator User id of ",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "status",
- "in" : "query",
- "description" : "Schedule status",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "createDateTime",
- "in" : "query",
- "description" : "Creation date and time (<low date>[,<hi date>])",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "optimizerStatus",
- "in" : "query",
- "description" : "Optimizer status",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "WorkflowName",
- "in" : "query",
- "description" : "Workflow",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- } ],
- "responses" : {
- "200" : {
- "description" : "OK",
- "schema" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/definitions/Schedule"
- }
- }
- },
- "404" : {
- "description" : "No records found",
- "schema" : {
- "$ref" : "#/definitions/CMSRequestError"
- }
- },
- "500" : {
- "description" : "Unexpected Runtime error"
- }
- }
- }
- },
- "/{apiVersion}/schedules/scheduleDetails" : {
- "get" : {
- "summary" : "",
- "description" : "Returns a list of Schedule request details based upon the filter criteria.",
- "operationId" : "searchScheduleRequestDetails",
- "produces" : [ "application/json" ],
- "parameters" : [ {
- "name" : "apiVersion",
- "in" : "path",
- "description" : "v1",
- "required" : true,
- "type" : "string",
- "default" : "v1"
- }, {
- "name" : "request.scheduleId",
- "in" : "query",
- "description" : "Schedule identifier",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "request.scheduleName",
- "in" : "query",
- "description" : "Schedule name",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "request.userId",
- "in" : "query",
- "description" : "Scheduler creator User id of ",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "request.status",
- "in" : "query",
- "description" : "Schedule status",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "request.createDateTime",
- "in" : "query",
- "description" : "Creation date and time (<low date>[,<hi date>])",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "request.optimizerStatus",
- "in" : "query",
- "description" : "Optimizer status",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "request.approvalUserId",
- "in" : "query",
- "description" : "Request Approval user id",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "request.approvalStatus",
- "in" : "query",
- "description" : "Request Approval status",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "request.approvalType",
- "in" : "query",
- "description" : "Request Approval type",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "WorkflowName",
- "in" : "query",
- "description" : "Workflow",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "vnfName",
- "in" : "query",
- "description" : "VNF Name",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "vnfId",
- "in" : "query",
- "description" : "VNF Id",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "vnfStatus",
- "in" : "query",
- "description" : "VNF Status",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "startTime",
- "in" : "query",
- "description" : "Start time <low>,<high>",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "finishTime",
- "in" : "query",
- "description" : "Finish time <low>,<high>",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "lastInstanceTime",
- "in" : "query",
- "description" : "Last instance start time <low>,<high>",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "tmChangeId",
- "in" : "query",
- "description" : "TM Change Ticket Change Id",
- "required" : false,
- "type" : "array",
- "items" : {
- "type" : "string"
- },
- "collectionFormat" : "multi"
- }, {
- "name" : "maxSchedules",
- "in" : "query",
- "description" : "Maximum number of schedules to return",
- "required" : false,
- "type" : "integer",
- "format" : "int32"
- }, {
- "name" : "lastScheduleId",
- "in" : "query",
- "description" : "Return schedules > lastScheduleId",
- "required" : false,
- "type" : "string"
- }, {
- "name" : "request.concurrencyLimit",
- "in" : "query",
- "description" : "Return concurrencyLimit",
- "required" : false,
- "type" : "integer",
- "format" : "int32"
- } ],
- "responses" : {
- "200" : {
- "description" : "OK",
- "schema" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/definitions/CmDetailsMessage"
- }
- }
- },
- "404" : {
- "description" : "No records found",
- "schema" : {
- "$ref" : "#/definitions/CMSRequestError"
- }
- },
- "500" : {
- "description" : "Unexpected Runtime error"
- }
- }
- }
- },
- "/{apiVersion}/schedules/{scheduleId}" : {
- "get" : {
- "summary" : "",
- "description" : "Retrieve the schedule request for scheduleId",
- "operationId" : "getScheduleRequestInfo",
- "produces" : [ "application/json" ],
- "parameters" : [ {
- "name" : "apiVersion",
- "in" : "path",
- "description" : "v1",
- "required" : true,
- "type" : "string",
- "default" : "v1"
- }, {
- "name" : "scheduleId",
- "in" : "path",
- "description" : "Schedule id to uniquely identify the schedule info being retrieved.",
- "required" : true,
- "type" : "string"
- } ],
- "responses" : {
- "200" : {
- "description" : "OK",
- "schema" : {
- "$ref" : "#/definitions/Schedule"
- }
- },
- "404" : {
- "description" : "No record found"
- },
- "500" : {
- "description" : "Unexpected Runtime error"
- }
- }
- },
- "post" : {
- "summary" : "",
- "description" : "Creates a schedule request for scheduleId",
- "operationId" : "createScheduleRequest",
- "produces" : [ "application/json" ],
- "parameters" : [ {
- "name" : "apiVersion",
- "in" : "path",
- "description" : "v1",
- "required" : true,
- "type" : "string",
- "default" : "v1"
- }, {
- "name" : "scheduleId",
- "in" : "path",
- "description" : "Schedule id to uniquely identify the schedule request being created.",
- "required" : true,
- "type" : "string"
- }, {
- "in" : "body",
- "name" : "body",
- "description" : "Data for creating a schedule request for the given schedule id",
- "required" : false,
- "schema" : {
- "$ref" : "#/definitions/CMSMessage"
- }
- } ],
- "responses" : {
- "202" : {
- "description" : "Schedule request accepted for optimization."
- },
- "409" : {
- "description" : "Schedule request already exists for this schedule id.",
- "schema" : {
- "$ref" : "#/definitions/CMSRequestError"
- }
- },
- "500" : {
- "description" : "Unexpected Runtime error"
- }
- }
- },
- "delete" : {
- "summary" : "",
- "description" : "Cancels the schedule request for scheduleId",
- "operationId" : "deleteScheduleRequest",
- "produces" : [ "application/json" ],
- "parameters" : [ {
- "name" : "apiVersion",
- "in" : "path",
- "description" : "v1",
- "required" : true,
- "type" : "string",
- "default" : "v1"
- }, {
- "name" : "scheduleId",
- "in" : "path",
- "description" : "Schedule id to uniquely identify the schedule request being deleted.",
- "required" : true,
- "type" : "string"
- } ],
- "responses" : {
- "204" : {
- "description" : "Delete successful"
- },
- "404" : {
- "description" : "No record found",
- "schema" : {
- "$ref" : "#/definitions/CMSRequestError"
- }
- },
- "500" : {
- "description" : "Unexpected Runtime error"
- }
- }
- }
- },
- "/{apiVersion}/schedules/{scheduleId}/approvals" : {
- "post" : {
- "summary" : "",
- "description" : "Adds an accept/reject approval status to the schedule request identified by scheduleId",
- "operationId" : "approveScheduleRequest",
- "produces" : [ "application/json" ],
- "parameters" : [ {
- "name" : "apiVersion",
- "in" : "path",
- "description" : "v1",
- "required" : true,
- "type" : "string",
- "default" : "v1"
- }, {
- "name" : "scheduleId",
- "in" : "path",
- "description" : "Schedule id to uniquely identify the schedule request being accepted or rejected.",
- "required" : true,
- "type" : "string"
- }, {
- "in" : "body",
- "name" : "body",
- "description" : "Accept or reject approval message",
- "required" : false,
- "schema" : {
- "$ref" : "#/definitions/Schedule Approval Request"
- }
- } ],
- "responses" : {
- "200" : {
- "description" : "OK"
- },
- "404" : {
- "description" : "No record found"
- },
- "500" : {
- "description" : "Unexpected Runtime error"
- }
- }
- }
- }
- },
- "definitions" : {
- "CMSMessage" : {
- "type" : "object",
- "properties" : {
- "domain" : {
- "type" : "string",
- "description" : "Schedule domain : ChangeManagement"
- },
- "scheduleId" : {
- "type" : "string",
- "description" : "Schedule id that must be unique within the domain. Use of UUID is highly recommended."
- },
- "scheduleName" : {
- "type" : "string",
- "description" : "User provided name of the schedule (deaults to scheduleId"
- },
- "userId" : {
- "type" : "string",
- "description" : "ATTUID of the user requesting the schedule."
- },
- "domainData" : {
- "type" : "array",
- "description" : "Domain data as name value/pairs. (i.e. CallbackUrl, CallbackData, WorkflowName)",
- "items" : {
- "type" : "object",
- "additionalProperties" : {
- "type" : "string"
- }
- }
- },
- "schedulingInfo" : {
- "$ref" : "#/definitions/Change Management Scheduling Info"
- }
- }
- },
- "CMSRequestError" : {
- "type" : "object",
- "properties" : {
- "requestError" : {
- "$ref" : "#/definitions/RequestError"
- }
- }
- },
- "CMSchedule" : {
- "type" : "object",
- "properties" : {
- "groupId" : {
- "type" : "string"
- },
- "startTime" : {
- "type" : "string"
- },
- "finishTime" : {
- "type" : "string"
- },
- "latestInstanceStartTime" : {
- "type" : "string"
- },
- "node" : {
- "type" : "array",
- "items" : {
- "type" : "string"
- }
- }
- }
- },
- "Change Management Group" : {
- "type" : "object",
- "properties" : {
- "finishTime" : {
- "type" : "string",
- "description" : "Date/time by which all of the workflows should be completed."
- },
- "groupId" : {
- "type" : "string",
- "description" : "Name of the group of VNFs to be scheduled"
- },
- "lastInstanceStartTime" : {
- "type" : "string",
- "description" : "The latest date/time by which a workflow is to be started."
- },
- "startTime" : {
- "type" : "string",
- "description" : "The date/time when workflows are to be started."
- },
- "additionalDurationInSecs" : {
- "type" : "integer",
- "format" : "int32",
- "description" : "Time added to the workflow interval to allow for rollback in case of failure."
- },
- "concurrencyLimit" : {
- "type" : "integer",
- "format" : "int32",
- "description" : "The maximum number of workflows that should be started simultaneiously."
- },
- "normalDurationInSecs" : {
- "type" : "integer",
- "format" : "int32",
- "description" : "Expected duration of a successful workflow execution."
- },
- "policyId" : {
- "type" : "string",
- "description" : "The name of the schedule optimization policy used by the change management schedule optimizer."
- },
- "changeManagementSchedules" : {
- "type" : "array",
- "description" : "The list of VNF workflows scheduled.",
- "items" : {
- "$ref" : "#/definitions/Change Management Schedule"
- }
- }
- },
- "description" : "Scheduling critirea for a group of VNFs"
- },
- "Change Management Schedule" : {
- "type" : "object",
- "properties" : {
- "tmChangeId" : {
- "type" : "string",
- "description" : "TM Change Id"
- },
- "tmStatus" : {
- "type" : "string",
- "description" : "TM ticket status",
- "enum" : [ "<null>", "Closed" ]
- },
- "tmApprovalStatus" : {
- "type" : "string",
- "description" : "TM ticket approval status",
- "enum" : [ "<null>", "Approved" ]
- },
- "finishTime" : {
- "type" : "string",
- "description" : "Anticipated time of completion based upon start time and duration"
- },
- "startTime" : {
- "type" : "string",
- "description" : "Start time of this VNF workflow assigned by Scheduler based upon the group start time returned by the optimizer and concurrency."
- },
- "status" : {
- "type" : "string",
- "description" : "Status of the VNF.",
- "enum" : [ "See CMSStatusEnum" ]
- },
- "vnfName" : {
- "type" : "string",
- "description" : "Name of the VNF."
- },
- "dispatchTime" : {
- "type" : "string",
- "description" : "Actual time the VNF workflow was dispatched."
- },
- "executionCompletedTime" : {
- "type" : "string",
- "description" : "Actual time the VNF workflow execution was completed as reported by MSO."
- },
- "msoRequestId" : {
- "type" : "string",
- "description" : "MSO Request ID of the workflow returned at dispatch time."
- },
- "msoStatus" : {
- "type" : "string",
- "description" : "Final MSO status.",
- "enum" : [ "COMPLETED", "FAILED" ]
- },
- "msoMessage" : {
- "type" : "string",
- "description" : "MSO final status message."
- },
- "statusMessage" : {
- "type" : "string",
- "description" : "Scheduler status message."
- },
- "msoTime" : {
- "type" : "string",
- "description" : "Time of last poll for MSO status."
- }
- },
- "description" : "VNF details for Change Management Schedule"
- },
- "Change Management Scheduling Info" : {
- "type" : "object",
- "properties" : {
- "normalDurationInSeconds" : {
- "type" : "integer",
- "format" : "int32",
- "description" : "Expected duration (in seconds) of a successful execution of a single VNF change."
- },
- "additionalDurationInSeconds" : {
- "type" : "integer",
- "format" : "int32",
- "description" : "Additional duration (in seconds) to be added to support backout of an unsuccessful VNF change."
- },
- "concurrencyLimit" : {
- "type" : "integer",
- "format" : "int32",
- "description" : "Maximum number of VNF changes to schedule concurrently"
- },
- "policyId" : {
- "type" : "string",
- "description" : "Name of schedule optimization policy used by the change management cmso optimizer to determine available time slot"
- },
- "vnfDetails" : {
- "type" : "array",
- "description" : "Lists of the VNFs to be changed and the desired change windows",
- "items" : {
- "$ref" : "#/definitions/VNF Details"
- }
- }
- },
- "description" : "Details of schedule being requested"
- },
- "Change Window" : {
- "type" : "object",
- "properties" : {
- "startTime" : {
- "type" : "string",
- "description" : "Earliest time that a set of changes may begin."
- },
- "endTime" : {
- "type" : "string",
- "description" : "Latest time by which all changes must be completed"
- }
- },
- "description" : "Time window within which the scheduler optimizer can schedule the changes for the group of NVFs"
- },
- "CmDetailsMessage" : {
- "type" : "object",
- "properties" : {
- "vnfName" : {
- "type" : "string",
- "description" : "Name of the VNF."
- },
- "status" : {
- "type" : "string",
- "description" : "Status of the VNF.",
- "enum" : [ "See CMSStatusEnum" ]
- },
- "tmChangeId" : {
- "type" : "string",
- "description" : "TM Change Id"
- },
- "tmStatus" : {
- "type" : "string",
- "description" : "TM ticket status",
- "enum" : [ "<null>", "Closed" ]
- },
- "tmApprovalStatus" : {
- "type" : "string",
- "description" : "TM ticket approval status",
- "enum" : [ "<null>", "Approved" ]
- },
- "startTime" : {
- "type" : "string",
- "description" : "Start time of this VNF workflow assigned by Scheduler based upon the group start time returned by the optimizer and concurrency."
- },
- "finishTime" : {
- "type" : "string",
- "description" : "Anticipated time of completion based upon start time and duration"
- },
- "groupId" : {
- "type" : "string",
- "description" : "Name of the group of VNFs to be scheduled"
- },
- "lastInstanceStartTime" : {
- "type" : "string",
- "description" : "The latest date/time by which a workflow is to be started."
- },
- "policyId" : {
- "type" : "string",
- "description" : "Time of last poll for MSO status."
- },
- "dispatchTime" : {
- "type" : "string",
- "description" : "Actual time the VNF workflow was dispatched."
- },
- "executionCompletedTime" : {
- "type" : "string",
- "description" : "Actual time the VNF workflow execution was completed as reported by MSO."
- },
- "msoRequestId" : {
- "type" : "string",
- "description" : "MSO Request ID of the workflow returned at dispatch time."
- },
- "msoStatus" : {
- "type" : "string",
- "description" : "Final MSO status.",
- "enum" : [ "COMPLETED", "FAILED" ]
- },
- "msoMessage" : {
- "type" : "string",
- "description" : "MSO final status message."
- },
- "statusMessage" : {
- "type" : "string",
- "description" : "Scheduler status message."
- },
- "msoTime" : {
- "type" : "string",
- "description" : "Time of last poll for MSO status."
- },
- "scheduleRequest" : {
- "$ref" : "#/definitions/Schedule"
- },
- "approvals" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/definitions/Schedule Approval Request"
- }
- },
- "schedulesId" : {
- "type" : "integer",
- "format" : "int32"
- }
- }
- },
- "Domain data" : {
- "type" : "object",
- "properties" : {
- "name" : {
- "type" : "string"
- },
- "value" : {
- "type" : "string"
- }
- },
- "description" : "Domain specific data represented as name/value pairs"
- },
- "HealthCheckComponent" : {
- "type" : "object",
- "properties" : {
- "name" : {
- "type" : "string"
- },
- "url" : {
- "type" : "string"
- },
- "status" : {
- "type" : "string"
- },
- "healthy" : {
- "type" : "boolean"
- }
- }
- },
- "HealthCheckMessage" : {
- "type" : "object",
- "properties" : {
- "healthy" : {
- "type" : "boolean"
- },
- "buildInfo" : {
- "type" : "string"
- },
- "currentTime" : {
- "type" : "string"
- },
- "hostname" : {
- "type" : "string"
- },
- "components" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/definitions/HealthCheckComponent"
- }
- }
- }
- },
- "RequestError" : {
- "type" : "object",
- "properties" : {
- "messageId" : {
- "type" : "string"
- },
- "text" : {
- "type" : "string"
- },
- "variables" : {
- "type" : "array",
- "items" : {
- "type" : "string"
- }
- }
- }
- },
- "Response from schedule optimizer" : {
- "type" : "object",
- "properties" : {
- "transactionId" : {
- "type" : "string",
- "description" : "Unique id of optimization request."
- },
- "scheduleId" : {
- "type" : "string",
- "description" : "Schedule id for which the optimization request was executed."
- },
- "requestState" : {
- "type" : "string",
- "description" : "State of the request as reported by the optimizer."
- },
- "status" : {
- "type" : "string",
- "description" : "Status of the request."
- },
- "description" : {
- "type" : "string",
- "description" : "Description of the request status."
- },
- "schedule" : {
- "type" : "array",
- "description" : "List of schedules returned, one per group. Only 1 group supported at this time.",
- "items" : {
- "$ref" : "#/definitions/CMSchedule"
- }
- }
- },
- "description" : "Asynchronous response to schedule oprimizer request."
- },
- "Schedule" : {
- "type" : "object",
- "properties" : {
- "createDateTime" : {
- "type" : "string",
- "description" : "Date/time schedule was created."
- },
- "optimizerDateTime" : {
- "type" : "string"
- },
- "optimizerMessage" : {
- "type" : "string"
- },
- "optimizerStatus" : {
- "type" : "string"
- },
- "optimizerReturnDateTime" : {
- "type" : "string"
- },
- "optimizerTransactionId" : {
- "type" : "string"
- },
- "schedule" : {
- "type" : "string"
- },
- "scheduleName" : {
- "type" : "string"
- },
- "scheduleInfo" : {
- "type" : "string"
- },
- "status" : {
- "type" : "string"
- },
- "userId" : {
- "type" : "string"
- },
- "domain" : {
- "type" : "string"
- },
- "deleteDateTime" : {
- "type" : "string"
- },
- "domainData" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/definitions/Domain data"
- }
- },
- "scheduleApprovals" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/definitions/Schedule Approval"
- }
- },
- "groups" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/definitions/Change Management Group"
- }
- }
- }
- },
- "Schedule Approval" : {
- "type" : "object",
- "properties" : {
- "approvalDateTime" : {
- "type" : "string",
- "description" : "Date/time schedule time slot was accepted/rejected."
- },
- "status" : {
- "type" : "string",
- "description" : "Approval status.",
- "enum" : [ "Accepted", "Rejected" ]
- },
- "userId" : {
- "type" : "string",
- "description" : "ATTUID of the user accepting/rejecting the time slot."
- }
- },
- "description" : "Details of a schedule approval/rejection."
- },
- "Schedule Approval Request" : {
- "type" : "object",
- "properties" : {
- "approvalUserId" : {
- "type" : "string",
- "description" : "ATTUID of the user accepting/rejecting the time slot."
- },
- "approvalStatus" : {
- "type" : "string",
- "description" : "Approval status.",
- "enum" : [ "Accepted", "Rejected" ]
- },
- "approvalType" : {
- "type" : "string",
- "description" : "Type of approval.",
- "enum" : [ "Tier 2" ]
- },
- "approvalDateTime" : {
- "type" : "string",
- "format" : "date-time"
- }
- },
- "description" : "Request to accept or reject an optimized time slot."
- },
- "VNF Details" : {
- "type" : "object",
- "properties" : {
- "groupId" : {
- "type" : "string",
- "description" : "Name of the list of VNFs to be changed as a group"
- },
- "node" : {
- "type" : "array",
- "description" : "Lists of the VNF names to be changed",
- "items" : {
- "type" : "string"
- }
- },
- "changeWindow" : {
- "type" : "array",
- "description" : "Lists of desired change windows that the optimizer can select from. (Only 1 change window supported at this time)",
- "items" : {
- "$ref" : "#/definitions/Change Window"
- }
- }
- },
- "description" : "Details and scheduling criteria for the VNFs to be changed."
- }
- }
+{
+ "swagger" : "2.0",
+ "info" : {
+ "version" : "0.1.0-SNAPSHOT",
+ "title" : "cmso"
+ },
+ "basePath" : "/cmso",
+ "paths" : {
+ "/{apiVersion}/admin/{id}" : {
+ "get" : {
+ "summary" : "",
+ "description" : "Returns encrypted value of id.",
+ "operationId" : "exec",
+ "produces" : [ "text/plain" ],
+ "parameters" : [ {
+ "name" : "apiVersion",
+ "in" : "path",
+ "description" : "v1|v2",
+ "required" : true,
+ "type" : "string",
+ "default" : "v1"
+ }, {
+ "name" : "id",
+ "in" : "path",
+ "description" : "Identifier",
+ "required" : true,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "csv"
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "OK",
+ "schema" : {
+ "type" : "string"
+ }
+ },
+ "400" : {
+ "description" : "Request failed"
+ }
+ }
+ }
+ },
+ "/{apiVersion}/health" : {
+ "get" : {
+ "summary" : "",
+ "description" : "Returns health status of server.",
+ "operationId" : "healthCheck",
+ "produces" : [ "application/json" ],
+ "parameters" : [ {
+ "name" : "apiVersion",
+ "in" : "path",
+ "description" : "v1",
+ "required" : true,
+ "type" : "string",
+ "default" : "v1"
+ }, {
+ "name" : "checkInterfaces",
+ "in" : "query",
+ "description" : "Check Interfaces",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "boolean",
+ "default" : true
+ },
+ "collectionFormat" : "multi"
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "OK",
+ "schema" : {
+ "$ref" : "#/definitions/HealthCheckMessage"
+ }
+ },
+ "400" : {
+ "description" : "Not healthy",
+ "schema" : {
+ "$ref" : "#/definitions/HealthCheckMessage"
+ }
+ }
+ }
+ }
+ },
+ "/{apiVersion}/optimizerCallback" : {
+ "post" : {
+ "summary" : "",
+ "description" : "Processes optimizer results callback to a Pending Optimization schedule.",
+ "operationId" : "sniroCallback",
+ "produces" : [ "application/json" ],
+ "parameters" : [ {
+ "name" : "apiVersion",
+ "in" : "path",
+ "description" : "v1",
+ "required" : true,
+ "type" : "string",
+ "default" : "v1"
+ }, {
+ "in" : "body",
+ "name" : "body",
+ "description" : "Return schedules > lastScheduleId",
+ "required" : false,
+ "schema" : {
+ "$ref" : "#/definitions/Response from schedule optimizer"
+ }
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "OK"
+ },
+ "500" : {
+ "description" : "Unexpected Runtime error"
+ }
+ }
+ }
+ },
+ "/{apiVersion}/schedules" : {
+ "get" : {
+ "summary" : "",
+ "description" : "Returns a list of Scheduler Requests based upon the filter criteria.",
+ "operationId" : "searchScheduleRequests",
+ "produces" : [ "application/json" ],
+ "parameters" : [ {
+ "name" : "apiVersion",
+ "in" : "path",
+ "description" : "v1",
+ "required" : true,
+ "type" : "string",
+ "default" : "v1"
+ }, {
+ "name" : "includeDetails",
+ "in" : "query",
+ "description" : "Include details",
+ "required" : false,
+ "type" : "boolean",
+ "default" : false
+ }, {
+ "name" : "scheduleId",
+ "in" : "query",
+ "description" : "Schedule identifier",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "scheduleName",
+ "in" : "query",
+ "description" : "Schedule name",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "userId",
+ "in" : "query",
+ "description" : "SCheduler creator User id of ",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "status",
+ "in" : "query",
+ "description" : "Schedule status",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "createDateTime",
+ "in" : "query",
+ "description" : "Creation date and time (<low date>[,<hi date>])",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "optimizerStatus",
+ "in" : "query",
+ "description" : "Optimizer status",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "WorkflowName",
+ "in" : "query",
+ "description" : "Workflow",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "OK",
+ "schema" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/definitions/Schedule"
+ }
+ }
+ },
+ "404" : {
+ "description" : "No records found",
+ "schema" : {
+ "$ref" : "#/definitions/CMSRequestError"
+ }
+ },
+ "500" : {
+ "description" : "Unexpected Runtime error"
+ }
+ }
+ }
+ },
+ "/{apiVersion}/schedules/scheduleDetails" : {
+ "get" : {
+ "summary" : "",
+ "description" : "Returns a list of Schedule request details based upon the filter criteria.",
+ "operationId" : "searchScheduleRequestDetails",
+ "produces" : [ "application/json" ],
+ "parameters" : [ {
+ "name" : "apiVersion",
+ "in" : "path",
+ "description" : "v1",
+ "required" : true,
+ "type" : "string",
+ "default" : "v1"
+ }, {
+ "name" : "request.scheduleId",
+ "in" : "query",
+ "description" : "Schedule identifier",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "request.scheduleName",
+ "in" : "query",
+ "description" : "Schedule name",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "request.userId",
+ "in" : "query",
+ "description" : "Scheduler creator User id of ",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "request.status",
+ "in" : "query",
+ "description" : "Schedule status",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "request.createDateTime",
+ "in" : "query",
+ "description" : "Creation date and time (<low date>[,<hi date>])",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "request.optimizerStatus",
+ "in" : "query",
+ "description" : "Optimizer status",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "request.approvalUserId",
+ "in" : "query",
+ "description" : "Request Approval user id",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "request.approvalStatus",
+ "in" : "query",
+ "description" : "Request Approval status",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "request.approvalType",
+ "in" : "query",
+ "description" : "Request Approval type",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "WorkflowName",
+ "in" : "query",
+ "description" : "Workflow",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "vnfName",
+ "in" : "query",
+ "description" : "VNF Name",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "vnfId",
+ "in" : "query",
+ "description" : "VNF Id",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "vnfStatus",
+ "in" : "query",
+ "description" : "VNF Status",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "startTime",
+ "in" : "query",
+ "description" : "Start time <low>,<high>",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "finishTime",
+ "in" : "query",
+ "description" : "Finish time <low>,<high>",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "lastInstanceTime",
+ "in" : "query",
+ "description" : "Last instance start time <low>,<high>",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "tmChangeId",
+ "in" : "query",
+ "description" : "TM Change Ticket Change Id",
+ "required" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ },
+ "collectionFormat" : "multi"
+ }, {
+ "name" : "maxSchedules",
+ "in" : "query",
+ "description" : "Maximum number of schedules to return",
+ "required" : false,
+ "type" : "integer",
+ "format" : "int32"
+ }, {
+ "name" : "lastScheduleId",
+ "in" : "query",
+ "description" : "Return schedules > lastScheduleId",
+ "required" : false,
+ "type" : "string"
+ }, {
+ "name" : "request.concurrencyLimit",
+ "in" : "query",
+ "description" : "Return concurrencyLimit",
+ "required" : false,
+ "type" : "integer",
+ "format" : "int32"
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "OK",
+ "schema" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/definitions/CmDetailsMessage"
+ }
+ }
+ },
+ "404" : {
+ "description" : "No records found",
+ "schema" : {
+ "$ref" : "#/definitions/CMSRequestError"
+ }
+ },
+ "500" : {
+ "description" : "Unexpected Runtime error"
+ }
+ }
+ }
+ },
+ "/{apiVersion}/schedules/{scheduleId}" : {
+ "get" : {
+ "summary" : "",
+ "description" : "Retrieve the schedule request for scheduleId",
+ "operationId" : "getScheduleRequestInfo",
+ "produces" : [ "application/json" ],
+ "parameters" : [ {
+ "name" : "apiVersion",
+ "in" : "path",
+ "description" : "v1",
+ "required" : true,
+ "type" : "string",
+ "default" : "v1"
+ }, {
+ "name" : "scheduleId",
+ "in" : "path",
+ "description" : "Schedule id to uniquely identify the schedule info being retrieved.",
+ "required" : true,
+ "type" : "string"
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "OK",
+ "schema" : {
+ "$ref" : "#/definitions/Schedule"
+ }
+ },
+ "404" : {
+ "description" : "No record found"
+ },
+ "500" : {
+ "description" : "Unexpected Runtime error"
+ }
+ }
+ },
+ "post" : {
+ "summary" : "",
+ "description" : "Creates a schedule request for scheduleId",
+ "operationId" : "createScheduleRequest",
+ "produces" : [ "application/json" ],
+ "parameters" : [ {
+ "name" : "apiVersion",
+ "in" : "path",
+ "description" : "v1",
+ "required" : true,
+ "type" : "string",
+ "default" : "v1"
+ }, {
+ "name" : "scheduleId",
+ "in" : "path",
+ "description" : "Schedule id to uniquely identify the schedule request being created.",
+ "required" : true,
+ "type" : "string"
+ }, {
+ "in" : "body",
+ "name" : "body",
+ "description" : "Data for creating a schedule request for the given schedule id",
+ "required" : false,
+ "schema" : {
+ "$ref" : "#/definitions/CMSMessage"
+ }
+ } ],
+ "responses" : {
+ "202" : {
+ "description" : "Schedule request accepted for optimization."
+ },
+ "409" : {
+ "description" : "Schedule request already exists for this schedule id.",
+ "schema" : {
+ "$ref" : "#/definitions/CMSRequestError"
+ }
+ },
+ "500" : {
+ "description" : "Unexpected Runtime error"
+ }
+ }
+ },
+ "delete" : {
+ "summary" : "",
+ "description" : "Cancels the schedule request for scheduleId",
+ "operationId" : "deleteScheduleRequest",
+ "produces" : [ "application/json" ],
+ "parameters" : [ {
+ "name" : "apiVersion",
+ "in" : "path",
+ "description" : "v1",
+ "required" : true,
+ "type" : "string",
+ "default" : "v1"
+ }, {
+ "name" : "scheduleId",
+ "in" : "path",
+ "description" : "Schedule id to uniquely identify the schedule request being deleted.",
+ "required" : true,
+ "type" : "string"
+ } ],
+ "responses" : {
+ "204" : {
+ "description" : "Delete successful"
+ },
+ "404" : {
+ "description" : "No record found",
+ "schema" : {
+ "$ref" : "#/definitions/CMSRequestError"
+ }
+ },
+ "500" : {
+ "description" : "Unexpected Runtime error"
+ }
+ }
+ }
+ },
+ "/{apiVersion}/schedules/{scheduleId}/approvals" : {
+ "post" : {
+ "summary" : "",
+ "description" : "Adds an accept/reject approval status to the schedule request identified by scheduleId",
+ "operationId" : "approveScheduleRequest",
+ "produces" : [ "application/json" ],
+ "parameters" : [ {
+ "name" : "apiVersion",
+ "in" : "path",
+ "description" : "v1",
+ "required" : true,
+ "type" : "string",
+ "default" : "v1"
+ }, {
+ "name" : "scheduleId",
+ "in" : "path",
+ "description" : "Schedule id to uniquely identify the schedule request being accepted or rejected.",
+ "required" : true,
+ "type" : "string"
+ }, {
+ "in" : "body",
+ "name" : "body",
+ "description" : "Accept or reject approval message",
+ "required" : false,
+ "schema" : {
+ "$ref" : "#/definitions/Schedule Approval Request"
+ }
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "OK"
+ },
+ "404" : {
+ "description" : "No record found"
+ },
+ "500" : {
+ "description" : "Unexpected Runtime error"
+ }
+ }
+ }
+ }
+ },
+ "definitions" : {
+ "CMSMessage" : {
+ "type" : "object",
+ "properties" : {
+ "domain" : {
+ "type" : "string",
+ "description" : "Schedule domain : ChangeManagement"
+ },
+ "scheduleId" : {
+ "type" : "string",
+ "description" : "Schedule id that must be unique within the domain. Use of UUID is highly recommended."
+ },
+ "scheduleName" : {
+ "type" : "string",
+ "description" : "User provided name of the schedule (deaults to scheduleId"
+ },
+ "userId" : {
+ "type" : "string",
+ "description" : "ATTUID of the user requesting the schedule."
+ },
+ "domainData" : {
+ "type" : "array",
+ "description" : "Domain data as name value/pairs. (i.e. CallbackUrl, CallbackData, WorkflowName)",
+ "items" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "string"
+ }
+ }
+ },
+ "schedulingInfo" : {
+ "$ref" : "#/definitions/Change Management Scheduling Info"
+ }
+ }
+ },
+ "CMSRequestError" : {
+ "type" : "object",
+ "properties" : {
+ "requestError" : {
+ "$ref" : "#/definitions/RequestError"
+ }
+ }
+ },
+ "CMSchedule" : {
+ "type" : "object",
+ "properties" : {
+ "groupId" : {
+ "type" : "string"
+ },
+ "startTime" : {
+ "type" : "string"
+ },
+ "finishTime" : {
+ "type" : "string"
+ },
+ "latestInstanceStartTime" : {
+ "type" : "string"
+ },
+ "node" : {
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "Change Management Group" : {
+ "type" : "object",
+ "properties" : {
+ "finishTime" : {
+ "type" : "string",
+ "description" : "Date/time by which all of the workflows should be completed."
+ },
+ "groupId" : {
+ "type" : "string",
+ "description" : "Name of the group of VNFs to be scheduled"
+ },
+ "lastInstanceStartTime" : {
+ "type" : "string",
+ "description" : "The latest date/time by which a workflow is to be started."
+ },
+ "startTime" : {
+ "type" : "string",
+ "description" : "The date/time when workflows are to be started."
+ },
+ "additionalDurationInSecs" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "Time added to the workflow interval to allow for rollback in case of failure."
+ },
+ "concurrencyLimit" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "The maximum number of workflows that should be started simultaneiously."
+ },
+ "normalDurationInSecs" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "Expected duration of a successful workflow execution."
+ },
+ "policyId" : {
+ "type" : "string",
+ "description" : "The name of the schedule optimization policy used by the change management schedule optimizer."
+ },
+ "changeManagementSchedules" : {
+ "type" : "array",
+ "description" : "The list of VNF workflows scheduled.",
+ "items" : {
+ "$ref" : "#/definitions/Change Management Schedule"
+ }
+ }
+ },
+ "description" : "Scheduling critirea for a group of VNFs"
+ },
+ "Change Management Schedule" : {
+ "type" : "object",
+ "properties" : {
+ "tmChangeId" : {
+ "type" : "string",
+ "description" : "TM Change Id"
+ },
+ "tmStatus" : {
+ "type" : "string",
+ "description" : "TM ticket status",
+ "enum" : [ "<null>", "Closed" ]
+ },
+ "tmApprovalStatus" : {
+ "type" : "string",
+ "description" : "TM ticket approval status",
+ "enum" : [ "<null>", "Approved" ]
+ },
+ "finishTime" : {
+ "type" : "string",
+ "description" : "Anticipated time of completion based upon start time and duration"
+ },
+ "startTime" : {
+ "type" : "string",
+ "description" : "Start time of this VNF workflow assigned by Scheduler based upon the group start time returned by the optimizer and concurrency."
+ },
+ "status" : {
+ "type" : "string",
+ "description" : "Status of the VNF.",
+ "enum" : [ "See CMSStatusEnum" ]
+ },
+ "vnfName" : {
+ "type" : "string",
+ "description" : "Name of the VNF."
+ },
+ "dispatchTime" : {
+ "type" : "string",
+ "description" : "Actual time the VNF workflow was dispatched."
+ },
+ "executionCompletedTime" : {
+ "type" : "string",
+ "description" : "Actual time the VNF workflow execution was completed as reported by MSO."
+ },
+ "msoRequestId" : {
+ "type" : "string",
+ "description" : "MSO Request ID of the workflow returned at dispatch time."
+ },
+ "msoStatus" : {
+ "type" : "string",
+ "description" : "Final MSO status.",
+ "enum" : [ "COMPLETED", "FAILED" ]
+ },
+ "msoMessage" : {
+ "type" : "string",
+ "description" : "MSO final status message."
+ },
+ "statusMessage" : {
+ "type" : "string",
+ "description" : "Scheduler status message."
+ },
+ "msoTime" : {
+ "type" : "string",
+ "description" : "Time of last poll for MSO status."
+ }
+ },
+ "description" : "VNF details for Change Management Schedule"
+ },
+ "Change Management Scheduling Info" : {
+ "type" : "object",
+ "properties" : {
+ "normalDurationInSeconds" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "Expected duration (in seconds) of a successful execution of a single VNF change."
+ },
+ "additionalDurationInSeconds" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "Additional duration (in seconds) to be added to support backout of an unsuccessful VNF change."
+ },
+ "concurrencyLimit" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "Maximum number of VNF changes to schedule concurrently"
+ },
+ "policyId" : {
+ "type" : "string",
+ "description" : "Name of schedule optimization policy used by the change management cmso optimizer to determine available time slot"
+ },
+ "vnfDetails" : {
+ "type" : "array",
+ "description" : "Lists of the VNFs to be changed and the desired change windows",
+ "items" : {
+ "$ref" : "#/definitions/VNF Details"
+ }
+ }
+ },
+ "description" : "Details of schedule being requested"
+ },
+ "Change Window" : {
+ "type" : "object",
+ "properties" : {
+ "startTime" : {
+ "type" : "string",
+ "description" : "Earliest time that a set of changes may begin."
+ },
+ "endTime" : {
+ "type" : "string",
+ "description" : "Latest time by which all changes must be completed"
+ }
+ },
+ "description" : "Time window within which the scheduler optimizer can schedule the changes for the group of NVFs"
+ },
+ "CmDetailsMessage" : {
+ "type" : "object",
+ "properties" : {
+ "vnfName" : {
+ "type" : "string",
+ "description" : "Name of the VNF."
+ },
+ "status" : {
+ "type" : "string",
+ "description" : "Status of the VNF.",
+ "enum" : [ "See CMSStatusEnum" ]
+ },
+ "tmChangeId" : {
+ "type" : "string",
+ "description" : "TM Change Id"
+ },
+ "tmStatus" : {
+ "type" : "string",
+ "description" : "TM ticket status",
+ "enum" : [ "<null>", "Closed" ]
+ },
+ "tmApprovalStatus" : {
+ "type" : "string",
+ "description" : "TM ticket approval status",
+ "enum" : [ "<null>", "Approved" ]
+ },
+ "startTime" : {
+ "type" : "string",
+ "description" : "Start time of this VNF workflow assigned by Scheduler based upon the group start time returned by the optimizer and concurrency."
+ },
+ "finishTime" : {
+ "type" : "string",
+ "description" : "Anticipated time of completion based upon start time and duration"
+ },
+ "groupId" : {
+ "type" : "string",
+ "description" : "Name of the group of VNFs to be scheduled"
+ },
+ "lastInstanceStartTime" : {
+ "type" : "string",
+ "description" : "The latest date/time by which a workflow is to be started."
+ },
+ "policyId" : {
+ "type" : "string",
+ "description" : "Time of last poll for MSO status."
+ },
+ "dispatchTime" : {
+ "type" : "string",
+ "description" : "Actual time the VNF workflow was dispatched."
+ },
+ "executionCompletedTime" : {
+ "type" : "string",
+ "description" : "Actual time the VNF workflow execution was completed as reported by MSO."
+ },
+ "msoRequestId" : {
+ "type" : "string",
+ "description" : "MSO Request ID of the workflow returned at dispatch time."
+ },
+ "msoStatus" : {
+ "type" : "string",
+ "description" : "Final MSO status.",
+ "enum" : [ "COMPLETED", "FAILED" ]
+ },
+ "msoMessage" : {
+ "type" : "string",
+ "description" : "MSO final status message."
+ },
+ "statusMessage" : {
+ "type" : "string",
+ "description" : "Scheduler status message."
+ },
+ "msoTime" : {
+ "type" : "string",
+ "description" : "Time of last poll for MSO status."
+ },
+ "scheduleRequest" : {
+ "$ref" : "#/definitions/Schedule"
+ },
+ "approvals" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/definitions/Schedule Approval Request"
+ }
+ },
+ "schedulesId" : {
+ "type" : "integer",
+ "format" : "int32"
+ }
+ }
+ },
+ "Domain data" : {
+ "type" : "object",
+ "properties" : {
+ "name" : {
+ "type" : "string"
+ },
+ "value" : {
+ "type" : "string"
+ }
+ },
+ "description" : "Domain specific data represented as name/value pairs"
+ },
+ "HealthCheckComponent" : {
+ "type" : "object",
+ "properties" : {
+ "name" : {
+ "type" : "string"
+ },
+ "url" : {
+ "type" : "string"
+ },
+ "status" : {
+ "type" : "string"
+ },
+ "healthy" : {
+ "type" : "boolean"
+ }
+ }
+ },
+ "HealthCheckMessage" : {
+ "type" : "object",
+ "properties" : {
+ "healthy" : {
+ "type" : "boolean"
+ },
+ "buildInfo" : {
+ "type" : "string"
+ },
+ "currentTime" : {
+ "type" : "string"
+ },
+ "hostname" : {
+ "type" : "string"
+ },
+ "components" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/definitions/HealthCheckComponent"
+ }
+ }
+ }
+ },
+ "RequestError" : {
+ "type" : "object",
+ "properties" : {
+ "messageId" : {
+ "type" : "string"
+ },
+ "text" : {
+ "type" : "string"
+ },
+ "variables" : {
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "Response from schedule optimizer" : {
+ "type" : "object",
+ "properties" : {
+ "transactionId" : {
+ "type" : "string",
+ "description" : "Unique id of optimization request."
+ },
+ "scheduleId" : {
+ "type" : "string",
+ "description" : "Schedule id for which the optimization request was executed."
+ },
+ "requestState" : {
+ "type" : "string",
+ "description" : "State of the request as reported by the optimizer."
+ },
+ "status" : {
+ "type" : "string",
+ "description" : "Status of the request."
+ },
+ "description" : {
+ "type" : "string",
+ "description" : "Description of the request status."
+ },
+ "schedule" : {
+ "type" : "array",
+ "description" : "List of schedules returned, one per group. Only 1 group supported at this time.",
+ "items" : {
+ "$ref" : "#/definitions/CMSchedule"
+ }
+ }
+ },
+ "description" : "Asynchronous response to schedule oprimizer request."
+ },
+ "Schedule" : {
+ "type" : "object",
+ "properties" : {
+ "createDateTime" : {
+ "type" : "string",
+ "description" : "Date/time schedule was created."
+ },
+ "optimizerDateTime" : {
+ "type" : "string"
+ },
+ "optimizerMessage" : {
+ "type" : "string"
+ },
+ "optimizerStatus" : {
+ "type" : "string"
+ },
+ "optimizerReturnDateTime" : {
+ "type" : "string"
+ },
+ "optimizerTransactionId" : {
+ "type" : "string"
+ },
+ "schedule" : {
+ "type" : "string"
+ },
+ "scheduleName" : {
+ "type" : "string"
+ },
+ "scheduleInfo" : {
+ "type" : "string"
+ },
+ "status" : {
+ "type" : "string"
+ },
+ "userId" : {
+ "type" : "string"
+ },
+ "domain" : {
+ "type" : "string"
+ },
+ "deleteDateTime" : {
+ "type" : "string"
+ },
+ "domainData" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/definitions/Domain data"
+ }
+ },
+ "scheduleApprovals" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/definitions/Schedule Approval"
+ }
+ },
+ "groups" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/definitions/Change Management Group"
+ }
+ }
+ }
+ },
+ "Schedule Approval" : {
+ "type" : "object",
+ "properties" : {
+ "approvalDateTime" : {
+ "type" : "string",
+ "description" : "Date/time schedule time slot was accepted/rejected."
+ },
+ "status" : {
+ "type" : "string",
+ "description" : "Approval status.",
+ "enum" : [ "Accepted", "Rejected" ]
+ },
+ "userId" : {
+ "type" : "string",
+ "description" : "ATTUID of the user accepting/rejecting the time slot."
+ }
+ },
+ "description" : "Details of a schedule approval/rejection."
+ },
+ "Schedule Approval Request" : {
+ "type" : "object",
+ "properties" : {
+ "approvalUserId" : {
+ "type" : "string",
+ "description" : "ATTUID of the user accepting/rejecting the time slot."
+ },
+ "approvalStatus" : {
+ "type" : "string",
+ "description" : "Approval status.",
+ "enum" : [ "Accepted", "Rejected" ]
+ },
+ "approvalType" : {
+ "type" : "string",
+ "description" : "Type of approval.",
+ "enum" : [ "Tier 2" ]
+ },
+ "approvalDateTime" : {
+ "type" : "string",
+ "format" : "date-time"
+ }
+ },
+ "description" : "Request to accept or reject an optimized time slot."
+ },
+ "VNF Details" : {
+ "type" : "object",
+ "properties" : {
+ "groupId" : {
+ "type" : "string",
+ "description" : "Name of the list of VNFs to be changed as a group"
+ },
+ "node" : {
+ "type" : "array",
+ "description" : "Lists of the VNF names to be changed",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "changeWindow" : {
+ "type" : "array",
+ "description" : "Lists of desired change windows that the optimizer can select from. (Only 1 change window supported at this time)",
+ "items" : {
+ "$ref" : "#/definitions/Change Window"
+ }
+ }
+ },
+ "description" : "Details and scheduling criteria for the VNFs to be changed."
+ }
+ }
} \ No newline at end of file
diff --git a/cmso-service/src/test/java/org/onap/optf/cmso/service/rs/CMSOServiceImplTest.java b/cmso-service/src/test/java/org/onap/optf/cmso/service/rs/CMSOServiceImplTest.java
index c8039ad..b989a73 100644
--- a/cmso-service/src/test/java/org/onap/optf/cmso/service/rs/CMSOServiceImplTest.java
+++ b/cmso-service/src/test/java/org/onap/optf/cmso/service/rs/CMSOServiceImplTest.java
@@ -1,27 +1,27 @@
/*
- * Copyright © 2017-2018 AT&T Intellectual Property.
- * Modifications Copyright © 2018 IBM.
- *
+ * Copyright © 2018 AT&T Intellectual Property.
+ * Modifications Copyright © 2018 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.
- *
- *
+ *
+ *
* Unless otherwise specified, all documentation contained herein is licensed
* under the Creative Commons License, Attribution 4.0 Intl. (the "License");
* you may not use this documentation except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* https://creativecommons.org/licenses/by/4.0/
- *
+ *
* Unless required by applicable law or agreed to in writing, documentation
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -55,7 +55,7 @@ import scala.collection.mutable.StringBuilder;
public class CMSOServiceImplTest {
@Autowired
- CMSOServiceImpl cMSOServiceImpl;
+ CMSOService cMSOServiceImpl;
@Autowired
private TestEntityManager entityManager;