Fixing cmso jenkin jobs failures 14/70014/5
authorVarma, Vikas <vv8305@att.com>
Mon, 8 Oct 2018 19:41:21 +0000 (15:41 -0400)
committerVarma, Vikas <vv8305@att.com>
Tue, 9 Oct 2018 12:17:17 +0000 (08:17 -0400)
CMSO test cases were failing due to conflicting jars
Fixed the test cases failing due to unsatisfied dependency
Fixing pom.xml file to exclude dependencies
Fix copyright headers.

Change-Id: I6fbf354fe3a83acc8bb0bd2199ac359f60ab8f76
Signed-off-by: Varma, Vikas <vv8305@att.com>
Issue-ID: OPTFRA-365

cmso-service/pom.xml
cmso-service/src/main/resources/swagger-ui/dist/swagger.json
cmso-service/src/test/java/org/onap/optf/cmso/service/rs/CMSOServiceImplTest.java

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