diff options
Diffstat (limited to 'docs')
-rw-r--r-- | docs/.gitignore | 3 | ||||
-rw-r--r-- | docs/_static/css/ribbon.css | 64 | ||||
-rwxr-xr-x | docs/_static/favicon.ico | bin | 0 -> 2102 bytes | |||
-rw-r--r-- | docs/_static/logo_onap_2017.png | bin | 0 -> 12278 bytes | |||
-rw-r--r-- | docs/api/swagger/oof-optf-opteng-api.json | 584 | ||||
-rw-r--r-- | docs/api/swagger/oof-osdf-has-api.json | 2155 | ||||
-rw-r--r-- | docs/conf.py | 74 | ||||
-rw-r--r-- | docs/index.rst | 3 | ||||
-rw-r--r-- | docs/requirements-docs.txt | 9 | ||||
-rw-r--r-- | docs/sections/architecture.rst | 1 | ||||
-rw-r--r-- | docs/sections/offeredapis.rst | 25 | ||||
-rw-r--r-- | docs/sections/release-notes.rst | 777 | ||||
-rw-r--r-- | docs/sections/swaggerdoc/oof-osdf-has-api.json | 587 | ||||
-rw-r--r-- | docs/sections/upgradestrategy.rst | 22 | ||||
-rw-r--r-- | docs/tox.ini | 31 |
15 files changed, 3723 insertions, 612 deletions
diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000..43ca5b6 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,3 @@ +/.tox +/_build/* +/__pycache__/* diff --git a/docs/_static/css/ribbon.css b/docs/_static/css/ribbon.css new file mode 100644 index 0000000..db927a4 --- /dev/null +++ b/docs/_static/css/ribbon.css @@ -0,0 +1,64 @@ +.ribbon { + z-index: 1000; + background-color: #a00; + overflow: hidden; + white-space: nowrap; + position: fixed; + top: 25px; + right: -50px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + -webkit-box-shadow: 0 0 10px #888; + -moz-box-shadow: 0 0 10px #888; + box-shadow: 0 0 10px #888; + + } + + .ribbon a { + border: 1px solid #faa; + color: #fff; + display: block; + font: bold 81.25% 'Helvetica Neue', Helvetica, Arial, sans-serif; + margin: 1px 0; + padding: 10px 50px; + text-align: center; + text-decoration: none; + text-shadow: 0 0 5px #444; + transition: 0.5s; + } + + .ribbon a:hover { + background: #c11; + color: #fff; + } + + + /* override table width restrictions */ + @media screen and (min-width: 767px) { + + .wy-table-responsive table td, .wy-table-responsive table th { + /* !important prevents the common CSS stylesheets from overriding + this as on RTD they are loaded after this stylesheet */ + white-space: normal !important; + } + + .wy-table-responsive { + overflow: visible !important; + } + } + + @media screen and (max-width: 767px) { + .wy-table-responsive table td { + white-space: nowrap; + } + } + + /* fix width of the screen */ + + .wy-nav-content { + max-width: 800px; + } +
\ No newline at end of file diff --git a/docs/_static/favicon.ico b/docs/_static/favicon.ico Binary files differnew file mode 100755 index 0000000..cb712eb --- /dev/null +++ b/docs/_static/favicon.ico diff --git a/docs/_static/logo_onap_2017.png b/docs/_static/logo_onap_2017.png Binary files differnew file mode 100644 index 0000000..5d064f4 --- /dev/null +++ b/docs/_static/logo_onap_2017.png diff --git a/docs/api/swagger/oof-optf-opteng-api.json b/docs/api/swagger/oof-optf-opteng-api.json new file mode 100644 index 0000000..4e77f76 --- /dev/null +++ b/docs/api/swagger/oof-optf-opteng-api.json @@ -0,0 +1,584 @@ +{ + "swagger": "2.0", + "info": { + "description": "This is the ONAP Optimization Engine (Generic Solver) API", + "version": "1.0.0", + "title": "ONAP Optimization ENGINE API", + "contact": { + "email": "vikas.varma@att.com" + }, + "license": { + "name": "Apache 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + } + }, + "securityDefinitions": { + "basicAuth": { + "type": "basic", + "description": "HTTP Basic Auth" + } + }, + "security": [ + { + "basicAuth": [] + } + ], + "paths": { + "/optengine/v1": { + "post": { + "tags": [ + "Generic Solver Optimization" + ], + "summary": "Call the Generic Optimization engine", + "operationId": "optimizationRequest", + "description": "call optimization engine", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "optimizationRequest", + "description": "optimization request", + "schema": { + "$ref": "#/definitions/OptimizationRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/OptimizationResponse" + } + }, + "202": { + "description": "An optimization request is accepted" + }, + "400": { + "description": "bad request" + }, + "401": { + "description": "Request body is not compliant with the API definition" + }, + "404": { + "description": "The server cannot find the requested URI" + }, + "405": { + "description": "The requested method is not supported by a server." + }, + "500": { + "description": "The server encountered an internal server error or timed out" + } + } + } + }, + "/optmodel/v1": { + "post": { + "tags": [ + "Request to add the Optimizer model, metadata" + ], + "summary": "Add/Insert the optimization models in the database", + "operationId": "optimModelRequestAPI", + "description": "Request to add update the Optimizer model, metadata", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "optimModelRequest", + "description": "optimization model request", + "schema": { + "$ref": "#/definitions/OptimModelRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/OptimModelResponse" + } + }, + "400": { + "description": "bad request" + }, + "401": { + "description": "Request body is not compliant with the API definition" + }, + "404": { + "description": "The server cannot find the requested URI" + }, + "405": { + "description": "The requested method is not supported by a server." + }, + "500": { + "description": "The server encountered an internal server error or timed out" + } + } + }, + "put": { + "tags": [ + "Request to update the Optimizer model, metadata" + ], + "summary": "Add/update the optimization models in the database", + "operationId": "updateModelRequestAPI", + "description": "Request to add update the Optimizer model, metadata", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "optimModelRequest", + "description": "optimization model request", + "schema": { + "$ref": "#/definitions/OptimModelRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/OptimModelResponse" + } + }, + "400": { + "description": "bad request" + }, + "401": { + "description": "Request body is not compliant with the API definition" + }, + "404": { + "description": "The server cannot find the requested URI" + }, + "405": { + "description": "The requested method is not supported by a server." + }, + "500": { + "description": "The server encountered an internal server error or timed out" + } + } + }, + "get": { + "tags": [ + "Retrieve all models" + ], + "summary": "Gets all Optim Model data", + "description": "Retrieves all Optim Models", + "operationId": "getAllOptModelData", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ArrayOfOptimModelResponse" + } + }, + "400": { + "description": "bad request" + }, + "401": { + "description": "Request body is not compliant with the API definition" + }, + "404": { + "description": "The server cannot find the requested URI" + }, + "405": { + "description": "The requested method is not supported by a server." + }, + "500": { + "description": "The server encountered an internal server error or timed out" + } + } + } + }, + "/optmodel/v1/{model_id}": { + "get": { + "tags": [ + "Retrieve Model Data" + ], + "summary": "Gets the Optim Model data", + "description": "Retrieves the Optim Model data given modelId", + "operationId": "getOptModelById", + "parameters": [ + { + "in": "path", + "name": "model_id", + "description": "Model ID", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/OptimModelResponse" + } + }, + "400": { + "description": "bad request" + }, + "401": { + "description": "Request body is not compliant with the API definition" + }, + "404": { + "description": "The server cannot find the requested URI" + }, + "405": { + "description": "The requested method is not supported by a server." + }, + "500": { + "description": "The server encountered an internal server error or timed out" + } + } + }, + "delete": { + "tags": [ + "Delete Model Data" + ], + "summary": "Delete the Optim Model data", + "description": "Deletes the Optim Model data given modelId", + "operationId": "deleteOptModelById", + "parameters": [ + { + "in": "path", + "name": "model_id", + "description": "Model ID", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/DeleteModelResponse" + } + }, + "400": { + "description": "bad request" + }, + "401": { + "description": "Request body is not compliant with the API definition" + }, + "404": { + "description": "The server cannot find the requested URI" + }, + "405": { + "description": "The requested method is not supported by a server." + }, + "500": { + "description": "The server encountered an internal server error or timed out" + } + } + } + } + }, + "definitions": { + "OptimizationResponse": { + "type": "object", + "required": [ + "transactionId", + "requestID", + "requestStatus" + ], + "properties": { + "transactionId": { + "type": "string", + "format": "uuid", + "description": "unique ID to track an ONAP transaction", + "example": "d290f1ee-6c54-4b01-90e6-d701748f0851" + }, + "requestID": { + "type": "string", + "format": "uuid", + "description": "A unique ID to track multiple requests associated with a transaction", + "example": "d290f1ee-6c54-4b01-90e6-d701748f0851" + }, + "requestStatus": { + "type": "string", + "description": "request status (accepted, done, completed,failed)", + "example": "done" + }, + "statusMessage": { + "type": "string", + "description": "Status message (incomplete, complete, unsatisfiable, unknown, unbounded, unsat_or_unbounded, error)", + "example": "complete" + }, + "solutions": { + "additionalProperties": { + "type": "object" + }, + "example": { + "SCHEDULED": [ + [ + 0, + 1 + ], + [ + 0, + 1 + ] + ], + "OPTIMIZED": 2 + } + } + } + }, + "OptimizationRequest": { + "type": "object", + "required": [ + "requestInfo", + "optimInfo" + ], + "properties": { + "requestInfo": { + "$ref": "#/definitions/RequestInfo" + }, + "optimInfo": { + "$ref": "#/definitions/OptimInfo" + } + } + }, + "RequestInfo": { + "type": "object", + "required": [ + "transactionId", + "requestID", + "sourceId" + ], + "properties": { + "transactionId": { + "type": "string", + "format": "uuid", + "description": "unique ID to track an ONAP transaction", + "example": "d290f1ee-6c54-4b01-90e6-d701748f0851" + }, + "requestID": { + "type": "string", + "format": "uuid", + "description": "A unique ID to track multiple requests associated with a transaction", + "example": "d290f1ee-6c54-4b01-90e6-d701748f0851" + }, + "callbackUrl": { + "type": "string", + "format": "url", + "description": "The end point of a callback service where recommendations are posted.", + "example": "myDomain.com/myCallback" + }, + "sourceId": { + "type": "string", + "description": "The unique ID of a client making an optimization call.", + "example": "son-handler" + }, + "timeout": { + "type": "integer", + "description": "A tolerance window (in second) for expecting solutions", + "example": 5 + } + } + }, + "OptimInfo": { + "type": "object", + "properties": { + "modelId": { + "type": "string", + "description": "ModelId from the database, if its not populated, assume that solverModel will be populated", + "example": "pci_model1" + }, + "solver": { + "type": "string", + "description": "type of solver (mzn, py, etc.)", + "example": "mzn" + }, + "solverArgs": { + "type": "object", + "description": "Arguments for solver", + "additionalProperties": { + "type": "object" + }, + "example": { + "solver": "cbc", + "timeout": 5 + } + }, + "modelContent": { + "type": "string", + "description": "a large blob string containing the model (which is not that problematic since models are fairly small)." + }, + "optData": { + "$ref": "#/definitions/DataInfo" + } + } + }, + "DataInfo": { + "type": "object", + "description": "Data Payload, input data for the solver, either text or json", + "properties": { + "text": { + "type": "string", + "description": "Solver data as a string", + "example": "flour = 8000; \r\nbanana = 11;\r\n " + }, + "json": { + "type": "object", + "description": "Solver data as a json", + "additionalProperties": { + "type": "object" + }, + "example": { + "flour": 8000, + "banana": 11 + } + } + } + }, + "OptimModelRequest": { + "type": "object", + "required": [ + "requestInfo", + "modelInfo" + ], + "properties": { + "requestInfo": { + "$ref": "#/definitions/ModelRequestInfo" + }, + "modelInfo": { + "$ref": "#/definitions/OptimModelInfo" + } + } + }, + "ModelRequestInfo": { + "type": "object", + "required": [ + "transactionId", + "requestID", + "sourceId" + ], + "properties": { + "transactionId": { + "type": "string", + "format": "uuid", + "description": "unique ID to track an ONAP transaction", + "example": "d290f1ee-6c54-4b01-90e6-d701748f0851" + }, + "requestID": { + "type": "string", + "format": "uuid", + "description": "A unique ID to track multiple requests associated with a transaction", + "example": "d290f1ee-6c54-4b01-90e6-d701748f0851" + }, + "sourceId": { + "type": "string", + "description": "The unique ID of a client making an optimization call.", + "example": "optf-osdf" + } + } + }, + "OptimModelInfo": { + "type": "object", + "required": [ + "modelId", + "solver", + "description", + "modelContent" + ], + "properties": { + "modelId": { + "type": "string", + "description": "ModelId from the database", + "example": "pci_anr_model1" + }, + "solver": { + "type": "string", + "description": "type of solver (mzn, py, etc.)", + "example": "mzn" + }, + "description": { + "type": "string", + "description": "Description of the model", + "example": "mzn model to optimize pci/anr models" + }, + "modelContent": { + "type": "string", + "description": "a large blob string containing the model (which is not that problematic since models are fairly small).", + "example": "mzn content" + } + } + }, + "ArrayOfOptimModelResponse": { + "type": "array", + "items": { + "$ref": "#/definitions/OptimModelResponse" + } + }, + "OptimModelResponse": { + "type": "object", + "required": [ + "modelId", + "solver", + "modelContent" + ], + "properties": { + "modelId": { + "type": "string", + "description": "ModelId from the database", + "example": "pci_anr_model1" + }, + "solver": { + "type": "string", + "description": "type of solver (mzn, py, etc.)", + "example": "mzn" + }, + "description": { + "type": "string", + "description": "Description of the model", + "example": "mzn model to optimize pci/anr models" + }, + "modelContent": { + "type": "string", + "description": "a large blob string containing the model (which is not that problematic since models are fairly small).", + "example": "mzn content" + }, + "statusMessage": { + "type": "string", + "description": "status message.", + "example": "mzn content" + } + } + }, + "DeleteModelResponse": { + "type": "object", + "required": [ + "statusMessage" + ], + "properties": { + "statusMessage": { + "type": "string", + "description": "status message.", + "example": "model data for modelId pci_anr_model1 deleted" + } + } + } + }, + "schemes": [ + "https" + ], + "host": "virtserver.swaggerhub.com", + "basePath": "/api/oof/" +} diff --git a/docs/api/swagger/oof-osdf-has-api.json b/docs/api/swagger/oof-osdf-has-api.json new file mode 100644 index 0000000..a2fa43f --- /dev/null +++ b/docs/api/swagger/oof-osdf-has-api.json @@ -0,0 +1,2155 @@ +{ + "swagger": "2.0", + "info": { + "description": "This is the ONAP OOF OSDF (Optimization Service Design Framework) API", + "version": "1.0.0", + "title": "OSDF API", + "contact": { + "email": "frank.sandoval@oamtechnologies.com" + }, + "license": { + "name": "Apache 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + } + }, + "securityDefinitions": { + "basicAuth": { + "type": "basic", + "description": "HTTP Basic Auth" + } + }, + "security": [ + { + "basicAuth": [] + } + ], + "paths": { + "/v2/placement": { + "post": { + "tags": [ + "Placement Optimization" + ], + "summary": "create/update a placement", + "operationId": "createPlacement", + "description": "create/update a placement", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "placementRequest", + "description": "placement request", + "schema": { + "$ref": "#/definitions/PlacementRequest" + } + } + ], + "responses": { + "201": { + "description": "An optimization solution is found." + }, + "202": { + "description": "An optimization request is accepted" + }, + "400": { + "description": "bad request" + }, + "401": { + "description": "Request body is not compliant with the API definition" + }, + "404": { + "description": "The server cannot find the requested URI" + }, + "405": { + "description": "The requested method is not supported by a server." + }, + "500": { + "description": "The server encountered an internal server error or timed out" + } + } + } + }, + "/api/oof/placement/v1": { + "post": { + "tags": [ + "Placement Optimization" + ], + "summary": "create/update a placement", + "operationId": "createPlacementv1", + "description": "create/update a placement", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "placementRequest", + "description": "placement request", + "schema": { + "$ref": "#/definitions/PlacementRequest" + } + } + ], + "responses": { + "201": { + "description": "An optimization solution is found." + }, + "202": { + "description": "An optimization request is accepted" + }, + "400": { + "description": "bad request" + }, + "401": { + "description": "Request body is not compliant with the API definition" + }, + "404": { + "description": "The server cannot find the requested URI" + }, + "405": { + "description": "The requested method is not supported by a server." + }, + "500": { + "description": "The server encountered an internal server error or timed out" + } + } + } + }, + "/api/oof/v1/pci": { + "post": { + "tags": [ + "PCI/ANR Optimization" + ], + "summary": "Initiate PCI/ANR Optimization", + "operationId": "initiatePCIOptRequest", + "description": "Initiate PCI/ANR Optimization", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "PCIOptimizationRequest", + "description": "PCI request", + "schema": { + "$ref": "#/definitions/PCIOptRequest" + } + } + ], + "responses": { + "201": { + "description": "An optimization solution is found." + }, + "202": { + "description": "An optimization request is accepted" + }, + "400": { + "description": "bad request" + }, + "401": { + "description": "Request body is not compliant with the API definition" + }, + "404": { + "description": "The server cannot find the requested URI" + }, + "405": { + "description": "The requested method is not supported by a server." + }, + "500": { + "description": "The server encountered an internal server error or timed out" + } + } + } + }, + "/api/oof/pci/v1": { + "post": { + "tags": [ + "PCI/ANR Optimization" + ], + "summary": "Initiate PCI/ANR Optimization", + "operationId": "initiatePCIOptRequestv1", + "description": "Initiate PCI/ANR Optimization", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "PCIOptimizationRequest", + "description": "PCI request", + "schema": { + "$ref": "#/definitions/PCIOptRequest" + } + } + ], + "responses": { + "201": { + "description": "An optimization solution is found." + }, + "202": { + "description": "An optimization request is accepted" + }, + "400": { + "description": "bad request" + }, + "401": { + "description": "Request body is not compliant with the API definition" + }, + "404": { + "description": "The server cannot find the requested URI" + }, + "405": { + "description": "The requested method is not supported by a server." + }, + "500": { + "description": "The server encountered an internal server error or timed out" + } + } + } + }, + "/api/oof/selection/nst/v1": { + "post": { + "tags": [ + "NST Selection" + ], + "summary": "NST selection", + "operationId": "selectNstRequest", + "description": "Request for NST selection", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "NSTSelectionRequest", + "description": "nst selection request", + "schema": { + "$ref": "#/definitions/NSTSelectionRequest" + } + } + ], + "responses": { + "202": { + "description": "An optimization request is accepted", + "schema": { + "$ref": "#/definitions/SynchronousResponse" + } + }, + "400": { + "description": "bad request" + }, + "401": { + "description": "Request body is not compliant with the API definition" + }, + "404": { + "description": "The server cannot find the requested URI" + }, + "405": { + "description": "The requested method is not supported by a server." + }, + "500": { + "description": "The server encountered an internal server error or timed out" + } + } + } + }, + "/api/oof/selection/nsi/v1": { + "post": { + "tags": [ + "NSI Selection" + ], + "summary": "NSI selection", + "operationId": "selectNsiRequest", + "description": "Request for NSI selection", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "NSISelectionRequest", + "description": "NSI selection request", + "schema": { + "$ref": "#/definitions/NSISelectionRequest" + } + } + ], + "responses": { + "202": { + "description": "An optimization request is accepted", + "schema": { + "$ref": "#/definitions/SynchronousResponse" + } + }, + "400": { + "description": "bad request" + }, + "401": { + "description": "Request body is not compliant with the API definition" + }, + "404": { + "description": "The server cannot find the requested URI" + }, + "405": { + "description": "The requested method is not supported by a server." + }, + "500": { + "description": "The server encountered an internal server error or timed out" + } + } + } + }, + "/api/oof/selection/nssi/v1": { + "post": { + "tags": [ + "NSSI Selection" + ], + "summary": "NSSI selection", + "operationId": "selectNssiRequest", + "description": "Request for NSSI selection", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "NSSISelectionRequest", + "description": "NSSI selection request", + "schema": { + "$ref": "#/definitions/NSSISelectionRequest" + } + } + ], + "responses": { + "202": { + "description": "An optimization request is accepted", + "schema": { + "$ref": "#/definitions/SynchronousResponse" + } + }, + "400": { + "description": "bad request" + }, + "401": { + "description": "Request body is not compliant with the API definition" + }, + "404": { + "description": "The server cannot find the requested URI" + }, + "405": { + "description": "The requested method is not supported by a server." + }, + "500": { + "description": "The server encountered an internal server error or timed out" + } + } + } + }, + "/api/oof/terminate/nxi/v1": { + "post": { + "tags": [ + "NSSI/NSI Termination" + ], + "summary": "NSSI/NSI Termination", + "operationId": "terminateNxiRequest", + "description": "Request for NSSI/NSI Termination", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "NxITerminationRequest", + "description": "NSSI/NSI termination request", + "schema": { + "$ref": "#/definitions/NxITerminationRequest" + } + } + ], + "responses": { + "200": { + "description": "request has succeeded", + "schema": { + "$ref": "#/definitions/SynchronousTerminationResponse" + } + }, + "400": { + "description": "bad request" + }, + "401": { + "description": "Request body is not compliant with the API definition" + }, + "404": { + "description": "The server cannot find the requested URI" + }, + "405": { + "description": "The requested method is not supported by a server." + }, + "500": { + "description": "The server encountered an internal server error or timed out" + } + } + } + }, + "/api/oof/route/v1": { + "post": { + "tags": [ + "Route Select" + ], + "summary": "Find the optimistic route between OTN domains", + "description": "", + "operationId": "getRoute", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "Source and Destination nodes across which optmistic route have to be obtained.", + "required": true, + "schema": { + "$ref": "#/definitions/RouteRequest" + } + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/routeResponseBody" + } + } + }, + "405": { + "description": "Invalid input" + } + } + } + }, + "/api/oof/mdons/route/v1": { + "post": { + "tags": [ + "Inter Domain Route Select" + ], + "summary":"Find the optimistic inter domain route for multi domain optical system", + "description":"", + "operationId":"getInterDomainRoute", + "consumes": [ + "application/json" + ], + "produces":[ + "application/json" + ], + "parameters":[ + { + "in":"body", + "name":"body", + "description":"Source and Destination interfaces across which optmistic route have to be obtained.", + "required":true, + "schema":{ + "$ref":"#/definitions/InterDomainRouteRequest" + } + } + ], + "responses":{ + "200":{ + "description":"successful operation", + "schema":{ + "$ref":"#/definitions/InterDomainRouteResponseBody" + } + }, + "400":{ + "description":"bad request" + }, + "401":{ + "description":"Request body is not compliant with the API definition" + }, + "404":{ + "description":"The server cannot find the requested URI" + }, + "405":{ + "description":"The requested method is not supported by a server." + }, + "500":{ + "description":"The server encountered an internal server error or timed out" + } + } + } + } + }, + "definitions": { + "InterDomainRouteRequest":{ + "type":"object", + "properties":{ + "requestInfo":{ + "$ref":"#/definitions/requestInfo" + }, + "routeInfo":{ + "$ref":"#/definitions/interDomainRouteInfo" + } + } + }, + "interDomainRouteInfo":{ + "type":"object", + "properties":{ + "routeRequest":{ + "$ref":"#/definitions/interDomainRouteRequest" + } + } + }, + "interDomainRouteRequest":{ + "type":"object", + "properties":{ + "srcDetails":{ + "$ref":"#/definitions/interDomainPortDetails" + }, + "dstDetails":{ + "$ref":"#/definitions/interDomainPortDetails" + }, + "serviceRate":{ + "type":"string", + "description":"The rate of the service." + } + } + }, + "interDomainPortDetails":{ + "type":"object", + "properties":{ + "interfaceId":{ + "type":"string", + "description":"The port id." + }, + "nodeId":{ + "type":"string", + "description":"The node id." + }, + "controllerId":{ + "type":"string", + "description":"The controller id to which the node belongs to." + } + } + }, + "InterDomainRouteResponseBody":{ + "type":"object", + "properties":{ + "requestId":{ + "type":"string", + "description":"A unique Id for an ONAP transaction." + }, + "transactionId":{ + "type":"string", + "description":"A unique ID to track multiple requests associated with a transaction." + }, + "statusMessage":{ + "type":"string", + "description":"Reasoning if a requestStatus is failure." + }, + "requestStatus":{ + "type":"string", + "description":"The status of a request." + }, + "solutions":{ + "$ref":"#/definitions/InterDomainRouteSolutionInfo" + } + } + }, + "InterDomainRouteSolutionInfo":{ + "type":"object", + "properties":{ + "routeInfo":{ + "$ref":"#/definitions/interDomainResponseRouteinfo" + } + } + }, + "interDomainResponseRouteinfo":{ + "type":"object", + "properties":{ + "serviceRoute":{ + "type":"array", + "items":{ + "$ref":"#/definitions/serviceRouteDetails" + } + }, + "linkList":{ + "type":"array", + "items":{ + "type":"string" + }, + "description":"A list of link names of the route.", + "example":[ + "link1", + "link2" + ] + } + } + }, + "serviceRouteDetails":{ + "type":"object", + "properties":{ + "srcInterfaceId":{ + "type":"string", + "description":"Source port Id of the domain Service." + }, + "dstInterfaceId":{ + "type":"string", + "description":"Destination Port Id of the domain Service." + }, + "controllerId":{ + "type":"string", + "description":"Controller Id of the domain." + } + } + }, + "RouteRequest": { + "type": "object", + "properties": { + "requestInfo": { + "$ref": "#/definitions/requestInfo" + }, + "routeInfo": { + "$ref": "#/definitions/routeInfo" + } + } + }, + "requestInfo": { + "type": "object", + "properties": { + "transactionId": { + "type": "string", + "description": "A unique ID to track an ONAP transaction." + }, + "requestId": { + "type": "string", + "description": "A unique ID to track multiple requests associated with a transaction." + }, + "callbackUrl": { + "type": "string", + "description": "The end point of a callback service where recommendations are posted." + }, + "callbackHeader": { + "type": "string", + "description": "The header information a client expecting in a async callback." + }, + "sourceId": { + "type": "string", + "description": "The unique ID of a client making an optimization call." + }, + "requestType": { + "type": "string", + "format": "string", + "description": "The type of request being placed.", + "enum": [ + "create", + "update", + "delete" + ] + }, + "numSolutions": { + "type": "integer", + "format": "int32", + "description": "Expected number of solutions. numSolution can also be specified using an optimization query policies, where the default configured value is 1. The value from a request gets higher precedence over the value defined in a policy." + }, + "optimizers": { + "description": "A list of optimization services that can be used to resolve the route", + "type": "array", + "items": { + "type": "string" + } + }, + "timeout": { + "type": "integer", + "format": "int32", + "description": "A tolerance window (in secs) for expecting solutions. Default is 600 secs." + } + } + }, + "routeInfo": { + "type": "object", + "properties": { + "routeRequest": { + "$ref": "#/definitions/routeRequest" + } + } + }, + "routeRequest": { + "type": "object", + "properties": { + "srcPort": { + "$ref": "#/definitions/routePortInfo" + }, + "destPort": { + "$ref": "#/definitions/routePortInfo" + } + } + }, + "routePortInfo": { + "type": "object", + "properties": { + "accessTopologyId": { + "type": "string", + "description": "A unique ID of the Access Topology." + }, + "accessClientId": { + "type": "string", + "format": "string", + "description": "A unique ID of the client which provides the access." + }, + "accessProviderId": { + "type": "string", + "format": "string", + "description": "A unique ID of the access provider" + }, + "accessNodeId": { + "type": "string", + "format": "string", + "description": "A unique ID of the node to/from which the route has to be established." + }, + "accessLtpId": { + "type": "integer", + "format": "int32", + "description": "A unique ID of the Termination Point to/from which the route has to be established." + } + } + }, + "routeResponseBody": { + "type": "object", + "properties": { + "requestId": { + "type": "string", + "description": "A unique Id for an ONAP transaction." + }, + "transactionId": { + "type": "string", + "description": "A unique ID to track multiple requests associated with a transaction." + }, + "statusMessage": { + "type": "string", + "description": "Reasoning if a requestStatus is failure." + }, + "requestStatus": { + "type": "string", + "description": "The status of a request." + }, + "solutions": { + "$ref": "#/definitions/RouteSolutionInfo" + } + } + }, + "RouteSolutionInfo": { + "type": "object", + "properties": { + "startTime": { + "type": "string", + "format": "date-time", + "description": "start time of the operation in RFC 3339 notation for example, 2017-07-21T17:32:28Z." + }, + "finishTime": { + "type": "string", + "format": "date-time", + "description": "end time of the operation in RFC 3339 notation for example, 2017-07-21T17:32:28Z." + }, + "links": { + "description": "A list of vpn info that can be used to establish the route between source and destination port/node.", + "type": "array", + "items": { + "$ref": "#/definitions/link" + } + } + } + }, + "link": { + "type": "object", + "properties": { + "linkId": { + "type": "string", + "description": "Id or name identifies a link uniquely." + } + } + }, + "PlacementRequest": { + "type": "object", + "required": [ + "requestInfo", + "placementInfo", + "licenseInfo", + "serviceInfo" + ], + "properties": { + "requestInfo": { + "$ref": "#/definitions/RequestInfo" + }, + "placementInfo": { + "$ref": "#/definitions/PlacementInfo" + }, + "licenseInfo": { + "$ref": "#/definitions/LicenseInfo" + }, + "serviceInfo": { + "$ref": "#/definitions/ServiceInfo" + } + } + }, + "RequestInfo": { + "type": "object", + "required": [ + "transactionId", + "requestId", + "callbackUrl", + "sourceId", + "requestType", + "optimizers", + "timeout" + ], + "properties": { + "transactionId": { + "type": "string", + "format": "uuid", + "description": "unique ID to track an ONAP transaction", + "example": "d290f1ee-6c54-4b01-90e6-d701748f0851" + }, + "requestId": { + "type": "string", + "format": "uuid", + "description": "A unique ID to track multiple requests associated with a transaction", + "example": "d290f1ee-6c54-4b01-90e6-d701748f0851" + }, + "callbackUrl": { + "type": "string", + "format": "url", + "description": "The end point of a callback service where recommendations are posted.", + "example": "myDomain.com/myCallback" + }, + "callbackHeader": { + "type": "string", + "description": "JSON blob. The header information a client expecting in a async callback.", + "example": { + "blob": "content" + } + }, + "sourceId": { + "type": "string", + "description": "The unique ID of a client making an optimization call.", + "example": "d290f1ee-6c54-4b01-90e6-d701748f0851" + }, + "requestType": { + "type": "string", + "enum": [ + "create", + "update", + "delete" + ], + "description": "The type of a request", + "example": "create" + }, + "numSolutions": { + "type": "integer", + "description": "Expected number of solutions.", + "example": 1 + }, + "optimizers": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "placement", + "pci", + "pci-anr" + ] + }, + "description": "A list of optimization services.", + "example": [ + "placement" + ] + }, + "timeout": { + "type": "integer", + "description": "A tolerance window (in second) for expecting solutions.", + "example": 5 + } + } + }, + "PlacementInfo": { + "type": "object", + "required": [ + "requestParameters", + "placementDemands" + ], + "properties": { + "requestParameters": { + "type": "string", + "description": "JSON blob. A service ordering information", + "example": { + "blob": "content" + } + }, + "placementDemands": { + "type": "array", + "items": { + "$ref": "#/definitions/PlacementDemand" + }, + "description": "The resource information for a placement service" + }, + "subscriberInfo": { + "type": "object", + "items": { + "$ref": "#/definitions/SubscriberInfo" + }, + "description": "The information of a service subscriber." + } + } + }, + "PlacementDemand": { + "type": "object", + "required": [ + "resourceModuleName", + "serviceResourceId", + "resourceModelInfo" + ], + "properties": { + "resourceModuleName": { + "type": "string", + "description": "A resource name as defined in a service mode", + "example": "myResourceName" + }, + "serviceResourceId": { + "type": "string", + "description": "A unique resource Id with a local scope between client and OOF.", + "example": "myResourceId" + }, + "givenPlacement": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "description": "placement parameters defined in the ordering system, keyname include tenantId", + "example": { + "tenantId": "1" + } + }, + "resourceModelInfo": { + "$ref": "#/definitions/ModelMetaData" + }, + "existingCandidates": { + "$ref": "#/definitions/Candidates" + }, + "excludedCandidates": { + "$ref": "#/definitions/Candidates" + }, + "requiredCandidates": { + "$ref": "#/definitions/Candidates" + } + } + }, + "ModelMetaData": { + "type": "object", + "required": [ + "modelInvariantId", + "modelVersionId" + ], + "properties": { + "modelInvariantId": { + "type": "string", + "description": "A model invariant Id as defined in a service model.", + "example": "my model invariant Id" + }, + "modelVersionId": { + "type": "string", + "description": "A unique model Id as defined in a service model.", + "example": "my unique model Id" + }, + "modelName": { + "type": "string", + "description": "A model name as defined in a service model", + "example": "my model name" + }, + "modelType": { + "type": "string", + "description": "A model type as defined in a service model.", + "example": "my model type" + }, + "modelVersion": { + "type": "string", + "description": "A model version as defined in a service model.", + "example": "my model version" + }, + "modelCustomizationName": { + "type": "string", + "description": "A model customization name as defined in a service model.", + "example": "my model customization" + } + } + }, + "Candidates": { + "type": "object", + "required": [ + "identifierType", + "identifiers" + ], + "properties": { + "identifierType": { + "type": "string", + "enum": [ + "service_instance_id", + "vnf_name", + "cloud_region_id" + ], + "description": "The type of a candidate.", + "example": "service_instance_id" + }, + "identifiers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of identifiers.", + "example": "candidateId" + }, + "cloudOwner": { + "type": "string", + "description": "The name of a cloud owner. Only required if identifierType is cloud_region_id", + "example": "cloud_owner" + } + } + }, + "SubscriberInfo": { + "type": "object", + "required": [ + "globalSubscriberId", + "subscriberName", + "subscriberCommonSiteId" + ], + "properties": { + "globalSubscriberId": { + "type": "string", + "description": "An ID of a subscriber.", + "example": "subscriber_id" + }, + "subscriberName": { + "type": "string", + "description": "The name of a subscriber. If the name is not known, the value must be 'unknown'", + "example": "subscriber_name" + }, + "subscriberCommonSiteId": { + "type": "string", + "description": "Id representing a subscriber location", + "example": "subscriber_location_id" + } + } + }, + "LicenseInfo": { + "type": "object", + "required": [ + "licenseDemands" + ], + "properties": { + "licenseDemands": { + "type": "array", + "items": { + "$ref": "#/definitions/LicenseDemands" + }, + "description": "A list of resources for license selection" + } + } + }, + "LicenseDemands": { + "type": "object", + "required": [ + "resourceModuleName", + "serviceResourceId", + "resourceModelInfo" + ], + "properties": { + "resourceModuleName": { + "type": "string", + "description": "A resource name as defined in a service model.", + "example": "service_instance_id" + }, + "serviceResourceId": { + "type": "string", + "description": "A unique resource Id with a local scope between client and OOF.", + "example": "service_instance_id" + }, + "resourceModelInfo": { + "$ref": "#/definitions/ModelMetaData" + }, + "existingLicenses": { + "$ref": "#/definitions/LicenseModel" + } + } + }, + "LicenseModel": { + "type": "object", + "required": [ + "entitlementPoolUUID", + "licenseKeyGroupUUID" + ], + "properties": { + "entitlementPoolUUID": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Entitlement pool UUIDs associated with a resource.", + "example": "candidateId" + }, + "licenseKeyGroupUUID": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "License key groups associated with a resource", + "example": "candidateId" + } + } + }, + "SynchronousResponse": { + "type": "object", + "required": [ + "requestId", + "transactionId", + "requestStatus" + ], + "properties": { + "requestId": { + "type": "string", + "format": "uuid", + "description": "A unique Id for an ONAP transaction", + "example": "ONAP transaction id" + }, + "transactionId": { + "type": "string", + "format": "uuid", + "description": "A unique ID to track multiple requests associated with a transaction.", + "example": "requests id" + }, + "statusMessage": { + "type": "string", + "description": "Reasoning if a requestStatus is failure.", + "example": "requestStatus" + }, + "requestStatus": { + "type": "string", + "enum": [ + "success", + "failure" + ], + "description": "The status of a request.", + "example": "success" + } + } + }, + "SynchronousTerminationResponse": { + "type": "object", + "required": [ + "requestId", + "transactionId", + "requestStatus", + "terminateResponse" + ], + "properties": { + "requestId": { + "type": "string", + "format": "uuid", + "description": "A unique Id for an ONAP transaction", + "example": "ONAP transaction id" + }, + "transactionId": { + "type": "string", + "format": "uuid", + "description": "A unique ID to track multiple requests associated with a transaction.", + "example": "requests id" + }, + "statusMessage": { + "type": "string", + "description": "Reasoning if a requestStatus is failure.", + "example": "requestStatus" + }, + "requestStatus": { + "type": "string", + "enum": [ + "success", + "failure" + ], + "description": "The status of a request.", + "example": "success" + }, + "terminateResponse": { + "type": "boolean" + }, + "reason": { + "type": "string", + "description": "Reason if terminateResponse is false", + "example": "Restricted by Policy" + } + } + }, + "PlacementAsynchronousResponse": { + "type": "object", + "required": [ + "requestId", + "transactionId", + "requestStatus", + "solutions" + ], + "properties": { + "requestId": { + "type": "string", + "format": "uuid", + "description": "A unique Id for an ONAP transaction", + "example": "ONAP transaction id" + }, + "transactionId": { + "type": "string", + "format": "uuid", + "description": "A unique ID to track multiple requests associated with a transaction.", + "example": "requests id" + }, + "statusMessage": { + "type": "string", + "description": "Reasoning if a requestStatus is failure.", + "example": "requestStatus" + }, + "requestStatus": { + "type": "string", + "enum": [ + "success", + "failure" + ], + "description": "The status of a request.", + "example": "success" + }, + "solutions": { + "$ref": "#/definitions/Solutions" + } + } + }, + "Solutions": { + "type": "object", + "required": [ + "placementSolutions", + "licenseSolutions" + ], + "properties": { + "placementSolutions": { + "type": "array", + "items": { + "$ref": "#/definitions/ComprehensiveSolution" + }, + "description": "A list of placement solutions." + }, + "licenseSolutions": { + "type": "array", + "items": { + "$ref": "#/definitions/LicenseSolution" + }, + "description": "A list of license solutions." + } + } + }, + "ComprehensiveSolution": { + "type": "object", + "required": [ + "placementSolutions" + ], + "properties": { + "placementSolutions": { + "type": "array", + "items": { + "$ref": "#/definitions/PlacementSolution" + }, + "description": "A list of placement solutions." + } + } + }, + "PlacementSolution": { + "type": "object", + "required": [ + "resourceModuleName", + "serviceResourceId", + "identifierType", + "identifier" + ], + "properties": { + "resourceModuleName": { + "type": "string", + "description": "The name of a resource as defined in the service model", + "example": "resource name" + }, + "serviceResourceId": { + "type": "string", + "description": "A resource Id as defined in a service model.", + "example": "resource id" + }, + "identifierType": { + "type": "string", + "enum": [ + "service_instance_id" + ], + "description": "The type of a candidate.", + "example": "candidate type" + }, + "identifier": { + "type": "string", + "description": "The id of a candidate.", + "example": "candidate id" + }, + "assignmentInfo": { + "type": "array", + "items": { + "$ref": "#/definitions/AssignmentInfo" + }, + "description": "Additional information related to a candidate." + } + } + }, + "AssignmentInfo": { + "type": "object", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "type": "string", + "description": "An attribute name", + "example": "attribute name" + }, + "value": { + "type": "string", + "description": "An attribute value.", + "example": "attribute value" + } + } + }, + "LicenseSolution": { + "type": "object", + "required": [ + "resourceModuleName", + "serviceResourceId", + "entitlementPoolUUID", + "licenseKeyGroupUUID", + "entitlementPoolInvariantUUID", + "licenseKeyGroupInvariantUUID" + ], + "properties": { + "resourceModuleName": { + "type": "string", + "description": "A resource name as defined in a service", + "example": "resource name" + }, + "serviceResourceId": { + "type": "string", + "description": "A resource Id as defined in a service.", + "example": "resource Id" + }, + "entitlementPoolUUID": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "A list of entitlementPoolUUIDs", + "example": "entitlementPoolUUID" + }, + "licenseKeyGroupUUID": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "A list of licenseKeyGroupUUID.", + "example": "licenseKeyGroupUUID" + }, + "entitlementPoolInvariantUUID": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "A list of entitlementPoolInvariantUUID", + "example": "entitlementPoolInvariantUUID" + }, + "licenseKeyGroupInvariantUUID": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "A list of licenseKeyGroupInvariantUUID", + "example": "licenseKeyGroupInvariantUUID" + } + } + }, + "ServiceInfo": { + "type": "object", + "required": [ + "serviceInstanceId", + "modelInfo", + "serviceName" + ], + "properties": { + "serviceInstanceId": { + "type": "string", + "description": "A service instance id associated with a request.", + "example": "service_instance_id" + }, + "modelInfo": { + "$ref": "#/definitions/ModelMetaData" + }, + "serviceName": { + "type": "string", + "description": "The name of a service", + "example": "service_name" + } + } + }, + "PCIOptRequest": { + "type": "object", + "required": [ + "requestInfo", + "cellInfo" + ], + "properties": { + "requestInfo": { + "$ref": "#/definitions/RequestInfo" + }, + "cellInfo": { + "$ref": "#/definitions/CellInfo" + } + } + }, + "CellInfo": { + "type": "object", + "required": [ + "networkId", + "cellIdList", + "anrInputList", + "trigger" + ], + "properties": { + "networkId": { + "type": "string", + "description": "Id of network requiring PCI optimization", + "example": 100 + }, + "cellIdList": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of cellIds triggering need for PCI optimization (eg.potential confusion)", + "example": [ + "cell0001", + "cell0002" + ] + }, + "anrInputList": { + "type": "array", + "items": { + "$ref": "#/definitions/ANRInfo" + }, + "description": "A list of ANR Input." + }, + "fixedPCICells": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of blacklisted cells whose PCI values should not be changed", + "example": [ + "cell0007", + "cell0009" + ] + }, + "priorityTreatmentCells": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of cells which should be given special treatment during optimization", + "example": [ + "cell0010", + "cell0003" + ] + }, + "trigger": { + "type": "string", + "description": "Type of trigger causing need for PCI optimization", + "example": "NbrListChange" + } + } + }, + "PCIAsynchronousResponse": { + "type": "object", + "required": [ + "requestId", + "transactionId", + "requestStatus", + "solutions" + ], + "properties": { + "requestId": { + "type": "string", + "format": "uuid", + "description": "A unique Id for an ONAP transaction", + "example": "ONAP transaction id" + }, + "transactionId": { + "type": "string", + "format": "uuid", + "description": "A unique ID to track multiple requests associated with a transaction.", + "example": "requests id" + }, + "statusMessage": { + "type": "string", + "description": "Reasoning if a requestStatus is failure.", + "example": "requestStatus" + }, + "requestStatus": { + "type": "string", + "enum": [ + "success", + "failure" + ], + "description": "The status of a request.", + "example": "success" + }, + "solutions": { + "$ref": "#/definitions/PCIANRSolutions" + } + } + }, + "PCIANRSolutions": { + "type": "object", + "required": [ + "networkId", + "pciSolutions", + "anrSolutions" + ], + "properties": { + "networkId": { + "type": "string", + "description": "Id of network requiring PCI optimization", + "example": 100 + }, + "pciSolutions": { + "type": "array", + "items": { + "$ref": "#/definitions/PCISolution" + }, + "description": "A list of PCI solutions." + }, + "anrSolutions": { + "type": "array", + "items": { + "$ref": "#/definitions/ANRInfo" + }, + "description": "A list of ANR solutions." + } + } + }, + "PCISolution": { + "type": "object", + "required": [ + "cellId", + "pci" + ], + "properties": { + "cellId": { + "type": "string", + "description": "cellId with modified PCI value", + "example": "cell0001" + }, + "pci": { + "type": "integer", + "description": "New PCI value for cellId", + "example": 1 + } + } + }, + "ANRInfo": { + "type": "object", + "required": [ + "cellId", + "removeableNeighbors" + ], + "properties": { + "cellId": { + "type": "string", + "description": "cellId with modified PCI value", + "example": "cell0001" + }, + "removeableNeighbors": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of neighbors to be removed", + "example": [ + "cell0002", + "cell0003" + ] + } + } + }, + "NSTSelectionRequest": { + "type": "object", + "required": [ + "requestInfo", + "serviceProfile" + ], + "properties": { + "requestInfo": { + "$ref": "#/definitions/RequestInfo2" + }, + "serviceProfile": { + "$ref": "#/definitions/ServiceProfile" + } + } + }, + "NSISelectionRequest": { + "type": "object", + "required": [ + "requestInfo", + "serviceProfile", + "NSTInfo", + "NSSTInfo", + "subnetCapabilities" + ], + "properties": { + "serviceProfile": { + "$ref": "#/definitions/ServiceProfile" + }, + "requestInfo": { + "$ref": "#/definitions/RequestInfo2" + }, + "NSTInfo": { + "$ref": "#/definitions/NSTInfo" + }, + "NSSTInfo": { + "type": "array", + "description": "List of constituent NSST(s) of the NST", + "items": { + "$ref": "#/definitions/NSSTInfo" + } + }, + "preferReuse": { + "type": "boolean", + "description": "true if reusing an existing NSI is preferred/false if creating a new NSI is preferred " + }, + "subnetCapabilities": { + "type": "array", + "description": "List of subnet capabilities", + "items": { + "$ref": "#/definitions/SubnetCapability" + } + } + } + }, + "NSSISelectionRequest": { + "type": "object", + "required": [ + "requestInfo", + "NSSTInfo", + "sliceProfile" + ], + "properties": { + "sliceProfile": { + "$ref": "#/definitions/SliceProfile" + }, + "requestInfo": { + "$ref": "#/definitions/RequestInfo2" + }, + "NSSTInfo": { + "$ref": "#/definitions/NSSTInfo" + } + } + }, + "NxITerminationRequest": { + "type": "object", + "required": [ + "requestInfo", + "type", + "NxIId" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "NSI", + "NSSI" + ], + "description": "indicates if the request is for NSI/NSSI termination" + }, + "NxIId": { + "type": "string", + "format": "UUID", + "description": "Id of NSI / NSSI" + }, + "UUID": { + "type": "string", + "format": "UUID", + "description": "UUID of NST/NSST model" + }, + "invariantUUID": { + "type": "string", + "format": "UUID", + "description": "invariant UUID of NST/NSST model" + }, + "requestInfo": { + "$ref": "#/definitions/RequestInfo2" + } + } + }, + "SubnetCapability": { + "type": "object", + "required": [ + "domainType", + "capabilityDetails" + ], + "properties": { + "domainType": { + "type": "string", + "description": "type of the subnet" + }, + "capabilityDetails": { + "type": "string", + "description": "A JSON object containing capability parameters", + "example": { + "blob": "content" + } + } + } + }, + "NSTInfo": { + "type": "object", + "required": [ + "UUID", + "invariantUUID", + "name" + ], + "properties": { + "UUID": { + "type": "string", + "format": "uuid", + "description": "UUID of NST" + }, + "invariantUUID": { + "type": "string", + "format": "uuid", + "description": "Invariant UUID" + }, + "name": { + "type": "string", + "description": "name of the NST model" + } + } + }, + "NSSTInfo": { + "type": "object", + "required": [ + "UUID", + "invariantUUID", + "name" + ], + "properties": { + "UUID": { + "type": "string", + "format": "uuid", + "description": "UUID of NSST" + }, + "invariantUUID": { + "type": "string", + "format": "uuid", + "description": "Invariant UUID" + }, + "name": { + "type": "string", + "description": "name of the NSST model" + } + } + }, + "ServiceProfile": { + "type": "string", + "description": "JSON blob. Containing service profile parameters. The contents are based on 3GPP TS 23.541 Release 16 contents, and will be in the form of attribute value pairs.", + "example": { + "blob": "content" + } + }, + "SliceProfile": { + "type": "string", + "description": "JSON blob. Containing slice profile parameters. The contents are based on 3GPP TS 23.541 Release 16 contents, and will be in the form of attribute value pairs.", + "example": { + "blob": "content" + } + }, + "RequestInfo2": { + "type": "object", + "required": [ + "transactionId", + "requestId", + "callbackUrl", + "sourceId" + ], + "properties": { + "transactionId": { + "type": "string", + "format": "uuid", + "description": "unique ID to track an ONAP transaction", + "example": "d290f1ee-6c54-4b01-90e6-d701748f0851" + }, + "requestId": { + "type": "string", + "format": "uuid", + "description": "A unique ID to track multiple requests associated with a transaction", + "example": "d290f1ee-6c54-4b01-90e6-d701748f0851" + }, + "callbackUrl": { + "type": "string", + "format": "url", + "description": "The end point of a callback service where recommendations are posted.", + "example": "myDomain.com/myCallback" + }, + "callbackHeader": { + "type": "string", + "description": "JSON blob. The header information a client expecting in a async callback.", + "example": { + "blob": "content" + } + }, + "sourceId": { + "type": "string", + "description": "The unique ID of a client making an optimization call.", + "example": "d290f1ee-6c54-4b01-90e6-d701748f0851" + }, + "timeout": { + "type": "integer", + "description": "A tolerance window (in second) for expecting solutions.", + "example": 5 + }, + "numSolutions": { + "type": "integer", + "description": "Expected number of solutions.", + "example": 1 + }, + "addtnlArgs": { + "type": "string", + "description": "Any additional parameters that have to be considered during selection", + "example": { + "blob": "content" + } + } + } + }, + "NSTAsynchronousResponse": { + "type": "object", + "required": [ + "transactionId", + "requestId", + "requestStatus", + "solutions" + ], + "properties": { + "transactionId": { + "type": "string", + "format": "uuid", + "description": "unique ID to track an ONAP transaction", + "example": "d290f1ee-6c54-4b01-90e6-d701748f0851" + }, + "requestId": { + "type": "string", + "format": "uuid", + "description": "A unique ID to track multiple requests associated with a transaction", + "example": "d290f1ee-6c54-4b01-90e6-d701748f0851" + }, + "statusMessage": { + "type": "string", + "description": "Reasoning if a requestStatus is failed." + }, + "requestStatus": { + "type": "string", + "enum": [ + "completed", + "failed", + "pending" + ], + "description": "The status of a request." + }, + "solutions": { + "type": "array", + "items": { + "$ref": "#/definitions/NSTSolution" + }, + "description": "A list of NST solutions" + } + } + }, + "NSTSolution": { + "type": "object", + "required": [ + "UUID", + "NSTName", + "invariantUUID", + "matchLevel" + ], + "properties": { + "invariantUUID": { + "type": "string", + "format": "uuid", + "description": "Invariant UUID of NST" + }, + "UUID": { + "type": "string", + "format": "UUID of NST" + }, + "NSTName": { + "type": "string", + "description": "NST name" + }, + "matchLevel": { + "type": "string", + "description": "JSON blob. Containing details of match of requirements in slice profile and percentage of fit" + } + } + }, + "NSIAsynchronousResponse": { + "type": "object", + "required": [ + "transactionId", + "requestId", + "requestStatus", + "solutions" + ], + "properties": { + "transactionId": { + "type": "string", + "format": "uuid", + "description": "unique ID to track an ONAP transaction", + "example": "d290f1ee-6c54-4b01-90e6-d701748f0851" + }, + "requestId": { + "type": "string", + "format": "uuid", + "description": "A unique ID to track multiple requests associated with a transaction", + "example": "d290f1ee-6c54-4b01-90e6-d701748f0851" + }, + "statusMessage": { + "type": "string", + "description": "Reasoning if a requestStatus is failed." + }, + "requestStatus": { + "type": "string", + "enum": [ + "completed", + "failed", + "pending" + ], + "description": "The status of a request." + }, + "solutions": { + "type": "array", + "items": { + "$ref": "#/definitions/NSISolution" + }, + "description": "A list of NSI solutions" + } + } + }, + "NSISolution": { + "type": "object", + "required": [ + "existingNSI" + ], + "properties": { + "existingNSI": { + "type": "boolean", + "description": "true if NSISolution object has shareNSISolution/false if NSISolution object has newNSISolution" + }, + "sharedNSISolution": { + "$ref": "#/definitions/SharedNSISolution" + }, + "newNSISolution": { + "$ref": "#/definitions/NewNSISolution" + } + } + }, + "SharedNSISolution": { + "type": "object", + "required": [ + "invariantUUID", + "UUID", + "NSIName", + "NSIId", + "matchLevel" + ], + "properties": { + "invariantUUID": { + "type": "string", + "format": "uuid", + "description": "Invariant UUID of NST" + }, + "UUID": { + "type": "string", + "format": "uuid", + "description": "UUID of NST" + }, + "NSIName": { + "type": "string", + "description": "Name of NSI" + }, + "NSIId": { + "type": "string", + "format": "uuid", + "description": "Instance Id of NSI" + }, + "matchLevel": { + "type": "string", + "description": "JSON blob. Containing details of match of requirements in service profile, and recommendation rank" + } + } + }, + "NewNSISolution": { + "type": "object", + "required": [ + "sliceProfiles", + "matchLevel" + ], + "properties": { + "sliceProfiles": { + "type": "array", + "description": "List of slice profiles", + "items": { + "$ref": "#/definitions/SliceProfile" + } + }, + "matchLevel": { + "type": "string", + "description": "JSON blob. Containing details of match of requirements in service profile, and recommendation rank" + } + } + }, + "NSSIAsynchronousResponse": { + "type": "object", + "required": [ + "transactionId", + "requestId", + "requestStatus", + "solutions" + ], + "properties": { + "transactionId": { + "type": "string", + "format": "uuid", + "description": "unique ID to track an ONAP transaction", + "example": "d290f1ee-6c54-4b01-90e6-d701748f0851" + }, + "requestId": { + "type": "string", + "format": "uuid", + "description": "A unique ID to track multiple requests associated with a transaction", + "example": "d290f1ee-6c54-4b01-90e6-d701748f0851" + }, + "statusMessage": { + "type": "string", + "description": "Reasoning if a requestStatus is failed." + }, + "requestStatus": { + "type": "string", + "enum": [ + "completed", + "failed", + "pending" + ], + "description": "The status of a request." + }, + "solutions": { + "type": "array", + "items": { + "$ref": "#/definitions/SharedNSSISolution" + }, + "description": "A list of NSSI solutions, empty list will be returned if no solution is found" + } + } + }, + "SharedNSSISolution": { + "type": "object", + "required": [ + "invariantUUID", + "UUID", + "NSSIName", + "NSSIId", + "matchLevel" + ], + "properties": { + "invariantUUID": { + "type": "string", + "format": "uuid", + "description": "Invariant UUID of NSST" + }, + "UUID": { + "type": "string", + "format": "uuid", + "description": "UUID of NSST" + }, + "NSSIName": { + "type": "string", + "description": "Name of NSSI" + }, + "NSSIId": { + "type": "string", + "description": "Instance Id of NSSI" + }, + "matchLevel": { + "type": "string", + "description": "JSON blob. Containing details of match of requirements in slice profile and percentage of fit" + } + } + } + }, + "schemes": [ + "https" + ], + "host": "virtserver.swaggerhub.com", + "basePath": "/oof-osdf/v1" +} diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 0000000..172975d --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,74 @@ +project = "onap" +release = "master" +version = "master" + +author = "Open Network Automation Platform" +# yamllint disable-line rule:line-length +copyright = "ONAP. Licensed under Creative Commons Attribution 4.0 International License" + +pygments_style = "sphinx" +html_theme = "sphinx_rtd_theme" +html_theme_options = { + "style_nav_header_background": "white", + "sticky_navigation": "False" } +html_logo = "_static/logo_onap_2017.png" +html_favicon = "_static/favicon.ico" +html_static_path = ["_static"] +html_show_sphinx = False + +extensions = [ + 'sphinx.ext.intersphinx', + 'sphinx.ext.graphviz', + 'sphinxcontrib.blockdiag', + 'sphinxcontrib.seqdiag', + 'sphinxcontrib.swaggerdoc', + 'sphinxcontrib.plantuml', + 'sphinxcontrib.redoc' +] + +# +# Map to 'latest' if this file is used in 'latest' (master) 'doc' branch. +# Change to {releasename} after you have created the new 'doc' branch. +# + +branch = 'latest' + +intersphinx_mapping = {} +doc_url = 'https://docs.onap.org/projects' +master_doc = 'index' + +exclude_patterns = ['.tox'] + +spelling_word_list_filename='spelling_wordlist.txt' +spelling_lang = "en_GB" + +# +# Example: +# intersphinx_mapping['onap-aai-aai-common'] = ('{}/onap-aai-aai-common/en/%s'.format(doc_url) % branch, None) +# + +html_last_updated_fmt = '%d-%b-%y %H:%M' + +def setup(app): + app.add_css_file("css/ribbon.css") + +linkcheck_ignore = [ + r'http://localhost:\d+/' +] + +redoc = [ + { + 'name': 'OSDF API', + 'page': 'sections/osdf-api', + 'spec': './api/swagger/oof-osdf-has-api.json', + 'embed': True, + }, + { + 'name': 'OPTENG API', + 'page': 'sections/opteng-api', + 'spec': './api/swagger/oof-optf-opteng-api.json', + 'embed': True, + } + ] + +redoc_uri = 'https://cdn.jsdelivr.net/npm/redoc@next/bundles/redoc.standalone.js' diff --git a/docs/index.rst b/docs/index.rst index c3ea9da..9a8302b 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,4 +1,5 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. _master_index: Optimization Framework: Optimization Service Design Framework (OSDF) @@ -17,4 +18,4 @@ Optimization Framework: Optimization Service Design Framework (OSDF) ./sections/administration.rst ./sections/humaninterfaces.rst ./sections/release-notes.rst - + ./sections/upgradestrategy.rst diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt new file mode 100644 index 0000000..38643a1 --- /dev/null +++ b/docs/requirements-docs.txt @@ -0,0 +1,9 @@ +sphinx>=4.2.0 # BSD +sphinx-rtd-theme>=1.0.0 # MIT +sphinxcontrib-blockdiag # BSD +sphinxcontrib-seqdiag # BSD +sphinxcontrib-swaggerdoc +sphinxcontrib-spelling +sphinxcontrib-plantuml +sphinxcontrib-redoc +six diff --git a/docs/sections/architecture.rst b/docs/sections/architecture.rst index 64bc43c..b11eec2 100644 --- a/docs/sections/architecture.rst +++ b/docs/sections/architecture.rst @@ -1,4 +1,5 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. _architecture: Architecture ============================================= diff --git a/docs/sections/offeredapis.rst b/docs/sections/offeredapis.rst index 5151431..c9af97d 100644 --- a/docs/sections/offeredapis.rst +++ b/docs/sections/offeredapis.rst @@ -1,8 +1,9 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 +.. _offeredapis: Offered APIs -============================================= +============ This document describes the OSDF HAS (Homing and Allocation Service) API @@ -10,8 +11,20 @@ This document describes the OSDF HAS (Homing and Allocation Service) API To view API documentation in the interactive swagger UI download the following and paste into the swagger tool here: https://editor.swagger.io -:download:`oof-osdf-has-api.json <./swaggerdoc/oof-osdf-has-api.json>` - -.. swaggerv2doc:: ./swaggerdoc/oof-osdf-has-api.json - - +.. csv-table:: + :header: "API name", "Swagger JSON" + :widths: 10,5 + + "OOF OSDF HAS API", ":download:`link <../api/swagger/oof-osdf-has-api.json>`" + "OOF OPTENG API", ":download:`link <../api/swagger/oof-optf-opteng-api.json>`" + +.. OOF OSDF HAS API +.. ................ +.. +.. `OSDF API <osdf-api.html>`_ +.. +.. +.. OOF OPTENG API +.. .............. +.. +.. `OPTENG API <opteng-api.html>`_ diff --git a/docs/sections/release-notes.rst b/docs/sections/release-notes.rst index d8088dd..63ab538 100644 --- a/docs/sections/release-notes.rst +++ b/docs/sections/release-notes.rst @@ -1,13 +1,764 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. _release_notes: ============= Release Notes ============= -Version: 1.1.1 +.. =========================== +.. * * * KOHN * * * +.. =========================== + +Abstract +======== + +This document provides the release notes for the KOHN release. + +Summary +======= + + +Release Data +============ + + ++--------------------------------------+--------------------------------------+ +| **OOF Project** | | +| | | ++--------------------------------------+--------------------------------------+ +| **Docker images** | optf-osdf 3.0.7 | +| | | +| | | ++--------------------------------------+--------------------------------------+ +| **Release designation** | 11.0.0 kohn | +| | | ++--------------------------------------+--------------------------------------+ +| **Release date** | 10/11/2022 (TBD) | +| | | ++--------------------------------------+--------------------------------------+ + + +New features +------------ + +Bug Fixes +--------- + +- OPTFRA-1080 - Fix timeout issue in OSDF on sending plan request to HAS-API + + +Known Limitations, Issues and Workarounds +========================================= + +System Limitations +------------------ + +Known Vulnerabilities +--------------------- + + +Workarounds +----------- + + +Security Notes +-------------- + +References +========== + +For more information on the ONAP Jakarta release, please see: + +#. `ONAP Home Page`_ +#. `ONAP Documentation`_ +#. `ONAP Release Downloads`_ +#. `ONAP Wiki Page`_ + +.. _`ONAP Home Page`: https://www.onap.org +.. _`ONAP Wiki Page`: https://wiki.onap.org +.. _`ONAP Documentation`: https://docs.onap.org +.. _`ONAP Release Downloads`: https://git.onap.org + +Quick Links: + +- `OOF project page <https://wiki.onap.org/display/DW/Optimization+Framework+Project>`_ +- `Passing Badge information for OOF <https://bestpractices.coreinfrastructure.org/en/projects/1720>`_ + + +.. =========================== +.. * * * JAKARTA * * * +.. =========================== + +Abstract +======== + +This document provides the release notes for the JAKARTA release. + +Summary +======= + + +Release Data +============ + + ++--------------------------------------+--------------------------------------+ +| **OOF Project** | | +| | | ++--------------------------------------+--------------------------------------+ +| **Docker images** | optf-osdf 3.0.6 | +| | | +| | | ++--------------------------------------+--------------------------------------+ +| **Release designation** | 10.0.0 jakarta | +| | | ++--------------------------------------+--------------------------------------+ +| **Release date** | 02/06/2022 (TBD) | +| | | ++--------------------------------------+--------------------------------------+ + + +New features +------------ + + + +Bug Fixes +--------- + +- OPTFRA-1059 - Update configuration for TN-FH in NxI termination app + + +Known Limitations, Issues and Workarounds +========================================= + +System Limitations +------------------ + +Known Vulnerabilities +--------------------- + + +Workarounds +----------- + + +Security Notes +-------------- + + +References +========== + +For more information on the ONAP Jakarta release, please see: + +#. `ONAP Home Page`_ +#. `ONAP Documentation`_ +#. `ONAP Release Downloads`_ +#. `ONAP Wiki Page`_ + +.. _`ONAP Home Page`: https://www.onap.org +.. _`ONAP Wiki Page`: https://wiki.onap.org +.. _`ONAP Documentation`: https://docs.onap.org +.. _`ONAP Release Downloads`: https://git.onap.org + +Quick Links: + +- `OOF project page <https://wiki.onap.org/display/DW/Optimization+Framework+Project>`_ +- `Passing Badge information for OOF <https://bestpractices.coreinfrastructure.org/en/projects/1720>`_ + + + +.. =========================== +.. * * * ISTANBUL * * * +.. =========================== + +Abstract +======== + +This document provides the release notes for the Istanbul release. + +Summary +======= + + +Release Data +============ + + ++--------------------------------------+--------------------------------------+ +| **OOF Project** | | +| | | ++--------------------------------------+--------------------------------------+ +| **Docker images** | optf-osdf 3.0.6 | +| | | +| | | ++--------------------------------------+--------------------------------------+ +| **Release designation** | 9.0.0 istanbul | +| | | ++--------------------------------------+--------------------------------------+ +| **Release date** | 28/10/2021 (TBD) | +| | | ++--------------------------------------+--------------------------------------+ + + +New features +------------ + +- Enhancements in NxI termination to support second level NSSIs +- Update NxI termination app to use AAI DSL query +- Add CPS client for PCI app +- OSDF image optimization + +Bug Fixes +--------- + +- OPTFRA-511 Return error when policies are not present +- OPTFRA-943 Fix issues in NSI selection response +- OPTFRA-853 Remove unwanted gplv3 components from docker image + + +Known Limitations, Issues and Workarounds +========================================= + +System Limitations +------------------ + + +Known Vulnerabilities +--------------------- + + +Workarounds +----------- + + +Security Notes +-------------- + + +References +========== + +For more information on the ONAP Honolulu release, please see: + +#. `ONAP Home Page`_ +#. `ONAP Documentation`_ +#. `ONAP Release Downloads`_ +#. `ONAP Wiki Page`_ + + +.. _`ONAP Home Page`: https://www.onap.org +.. _`ONAP Wiki Page`: https://wiki.onap.org +.. _`ONAP Documentation`: https://docs.onap.org +.. _`ONAP Release Downloads`: https://git.onap.org + +Quick Links: + - `OOF project page <https://wiki.onap.org/display/DW/Optimization+Framework+Project>`_ + - `Passing Badge information for OOF <https://bestpractices.coreinfrastructure.org/en/projects/1720>`_ + + +.. =========================== +.. * * * HONOLULU * * * +.. =========================== + +Abstract +======== + +This document provides the release notes for the Honolulu release. + +Summary +======= + + +Release Data +============ + + ++--------------------------------------+--------------------------------------+ +| **OOF Project** | | +| | | ++--------------------------------------+--------------------------------------+ +| **Docker images** | optf-osdf 3.0.4 | +| | | +| | | ++--------------------------------------+--------------------------------------+ +| **Release designation** | 8.0.0 honolulu | +| | | ++--------------------------------------+--------------------------------------+ +| **Release date** | 04/08/2021 (TBD) | +| | | ++--------------------------------------+--------------------------------------+ + + +New features +------------ + +- Add NST selection feature with AAI & SDC +- Configuration management with consul KV store + +Bug Fixes +--------- + +- OPTFRA-906 Update slice/service profile attributes +- OPTFRA-871 Bug Fix in ML SON - convert cell_id before sending it to Minizinc + + +Known Limitations, Issues and Workarounds +========================================= + +System Limitations +------------------ + + +Known Vulnerabilities +--------------------- + + +Workarounds +----------- + + +Security Notes +-------------- + + +References +========== + +For more information on the ONAP Honolulu release, please see: + +#. `ONAP Home Page`_ +#. `ONAP Documentation`_ +#. `ONAP Release Downloads`_ +#. `ONAP Wiki Page`_ + + +.. _`ONAP Home Page`: https://www.onap.org +.. _`ONAP Wiki Page`: https://wiki.onap.org +.. _`ONAP Documentation`: https://docs.onap.org +.. _`ONAP Release Downloads`: https://git.onap.org + +Quick Links: + - `OOF project page <https://wiki.onap.org/display/DW/Optimization+Framework+Project>`_ + - `Passing Badge information for OOF <https://bestpractices.coreinfrastructure.org/en/projects/1720>`_ + +.. =========================== +.. * * * GUILIN * * * +.. =========================== + +Abstract +======== + +This document provides the release notes for the Guilin release. + +Summary +======= + + +Release Data +============ + + ++--------------------------------------+--------------------------------------+ +| **OOF Project** | | +| | | ++--------------------------------------+--------------------------------------+ +| **Docker images** | optf-osdf 3.0.2 | +| | | +| | | ++--------------------------------------+--------------------------------------+ +| **Release designation** | 7.0.0 guilin | +| | | ++--------------------------------------+--------------------------------------+ +| **Release date** | 2020-11-19 (TBD) | +| | | ++--------------------------------------+--------------------------------------+ + + +New features +------------ + +- NSI selection enhancements +- Support for NSSI selection +- Support for NSI/NSSI Termination +- Support for Inter domain route optimization +- Support for ML based SON optimization +- Upgrade python version to 3.8 + +Bug Fixes +--------- + +- OPTFRA-839 Remove python 2.7 from OSDF docker image +- OPTFRA-855 Fix slice selection API +- OPTFRA-852 Callback implementation for NST selection + +Known Limitations, Issues and Workarounds +========================================= + +System Limitations +------------------ + + +Known Vulnerabilities +--------------------- + + +Workarounds +----------- + + +Security Notes +-------------- + + +References +========== + +For more information on the ONAP Guilin release, please see: + +#. `ONAP Home Page`_ +#. `ONAP Documentation`_ +#. `ONAP Release Downloads`_ +#. `ONAP Wiki Page`_ + + +.. _`ONAP Home Page`: https://www.onap.org +.. _`ONAP Wiki Page`: https://wiki.onap.org +.. _`ONAP Documentation`: https://docs.onap.org +.. _`ONAP Release Downloads`: https://git.onap.org + +Quick Links: + - `OOF project page <https://wiki.onap.org/display/DW/Optimization+Framework+Project>`_ + - `Passing Badge information for OOF <https://bestpractices.coreinfrastructure.org/en/projects/1720>`_ + +.. =========================== +.. * * * FRANKFURT * * * +.. =========================== + +Abstract +======== + +This document provides the release notes for the Frankfurt release. + +Summary +======= + + +Release Data +============ + + ++--------------------------------------+--------------------------------------+ +| **OOF Project** | | +| | | ++--------------------------------------+--------------------------------------+ +| **Docker images** | optf-osdf 2.0.4 | +| | | +| | | ++--------------------------------------+--------------------------------------+ +| **Release designation** | 6.0.0 frankfurt | +| | | ++--------------------------------------+--------------------------------------+ +| **Release date** | 2020-05-07 (TBD) | +| | | ++--------------------------------------+--------------------------------------+ + + +New features +------------ + +- Project is restructured into apps and libs. +- A Generic optimizing engine is implemented. +- New optimizer model for route optimization is added. +- Policy apis are migrated from legacy apis to new decision api. +- The Conductor adapter is moved from placement to adapters. +- NST and NSI selection function has been implemented for Network + Slicing use case. +- PCI optimization is enhanced to support fixed cells field. + +Bug Fixes +--------- + +- OPTFRA-482 The field "unique" should be defined in vnf policy. +- OPTFRA-729 OSDF fails to start in the k8s environment. +- OPTFRA-731 OSDF Policy interface is not working +- OPTFRA-754 Return slice profile when service profile indicates the + resource sharing level as not shared +- OPTFRA-755 OOF Policy filtering does not work. + +Known Limitations, Issues and Workarounds +========================================= + +System Limitations +------------------ + + +Known Vulnerabilities +--------------------- + + +Workarounds +----------- + + +Security Notes +-------------- + + +References +========== + +For more information on the ONAP Frankfurt release, please see: + +#. `ONAP Home Page`_ +#. `ONAP Documentation`_ +#. `ONAP Release Downloads`_ +#. `ONAP Wiki Page`_ + + +.. _`ONAP Home Page`: https://www.onap.org +.. _`ONAP Wiki Page`: https://wiki.onap.org +.. _`ONAP Documentation`: https://docs.onap.org +.. _`ONAP Release Downloads`: https://git.onap.org + +Quick Links: + - `OOF project page <https://wiki.onap.org/display/DW/Optimization+Framework+Project>`_ + - `Passing Badge information for OOF <https://bestpractices.coreinfrastructure.org/en/projects/1720>`_ + + +Version: 5.0.1 +-------------- + +:Release Date: 2019-09-30 (El Alto Release) + +The El Alto release is the fourth release for ONAP Optimization Framework (OOF). + +Artifacts released: + +optf-has:1.3.3 +optf-osdf:1.3.4 +optf-cmso:2.1.1 + +**New Features** + +While no new features were added in the release, the following Stories were delivered as enhancements. + + * [OPTFRA-415] Automation on policy model uploading + * [OPTFRA-427] CMSO - Schedule a workflow in SO and track status to completion + +* Platform Maturity Level 1 + * ~65.1+ unit test coverage + + +**Bug Fixes** + +The El Alto release for OOF fixed the following Bugs. + + * [OPTFRA-579] Json error in homing solution + * [OPTFRA-521] oof-has-api exposes plain text HTTP endpoint using port 30275 + * [OPTFRA-522] oof-osdf exposes plain text HTTP endpoint using port 30248 + * [OPTFRA-577] Need for "ReadWriteMany" access on storage when deploying on Kubernetes? + * [OPTFRA-517] Clean up optf/cmso in integration/csit for Dublin + * [OPTFRA-486] Support "identifiers" field as a list of values + * [OPTFRA-403] OOF CMSO Service kubernetes resources allocation is not done + * [OPTFRA-526] OOF pods not running + * [OPTFRA-409] Template example : purpose to be explained + * [OPTFRA-593] OOF-CSMO healthcheck is failing in Master + + +**Known Issues** + + * [OPTFRA-576] optf-has-master-csit-has is testing Dublin image + * [OPTFRA-596] CMSO - Sonar and CSIT jobs failing + * [OPTFRA-608] Error in Homing with multiple policies + +**Security Notes** + +*Fixed Security Issues* + + * [OJSI-122] In default deployment OPTFRA (oof-osdf) exposes HTTP port 30248 outside of cluster. + * [OPTFRA-521] oof-has-api exposes plain text HTTP endpoint using port 30275 + * [OPTFRA-522] oof-osdf exposes plain text HTTP endpoint using port 30248 + * [OPTFRA-455] CMSO - Mitigate License Threat tomcat-embed-core + +*Known Security Issues* + + * [OPTFRA-481] Fix Vulnerability with spring-data-jpa package + * [OPTFRA-431] Fix Vulnerability with spring-security-web package + +*Known Vulnerabilities in Used Modules* + +**Upgrade Notes** + + +**Deprecation Notes** + + +**Other** + + +Version: 4.0.0 +-------------- + +:Release Date: 2019-06-06 (Dublin Release) + +**New Features** + +The Dublin release is the third release for ONAP Optimization Framework (OOF). + +A summary of features includes + +* Support SON (PCI/ANR) optimization using OSDF +* Implement encryption for OSDF internal and external communication + +* Platform Maturity Level 1 + * ~65.1+ unit test coverage + +The Dublin release for OOF delivered the following Epics. + + * [OPTFRA-426] Track the changes to CMSO to support change management schedule optimization + * [OPTFRA-424] Extend OOF to support traffic distribution optimization + * [OPTFRA-422] Move OOF projects' CSIT to run on OOM + * [OPTFRA-276] Implementing a POC for 5G SON Optimization + * [OPTFRA-270] This epic captures stories related to maintaining current S3P levels of the project as new functional requirements are supported + + +**Bug Fixes** + +* The full list of implemented user stories and epics is available on `DUBLIN RELEASE <https://jira.onap.org/projects/OPTFRA/versions/10463>`_ + +**Known Issues** + + + +**Security Notes** + +*Fixed Security Issues* + +*Known Security Issues* + + * [`OJSI-122 <https://jira.onap.org/browse/OJSI-122>`_] In default deployment OPTFRA (oof-osdf) exposes HTTP port 30248 outside of cluster. + +*Known Vulnerabilities in Used Modules* + +OPTFRA osdf code has been formally scanned during build time using NexusIQ and no Critical vulnerability was found. +The OPTF open Critical security vulnerabilities and their risk assessment have been documented as part of the `project <https://wiki.onap.org/pages/viewpage.action?pageId=64005463>`__. + +Quick Links: + - `OPTFRA project page <https://wiki.onap.org/display/DW/Optimization+Framework+Project>`__ + - `Passing Badge information for OPTFRA <https://bestpractices.coreinfrastructure.org/en/projects/1720>`__ + - `Project Vulnerability Review Table for OPTF <https://wiki.onap.org/pages/viewpage.action?pageId=64005463>`__ + +**Upgrade Notes** + +None. + +**Deprecation Notes** + +None. + +**Other** + +None + +Version: 3.0.1 +-------------- + +:Release Date: 2019-01-31 (Casablanca Maintenance Release) + +The following items were deployed with the Casablanca Maintenance Release: + + +**New Features** + +None. + +**Bug Fixes** + +* [OPTFRA-401] - Need flavor id while launching vm. + + + +Version: 3.0.0 +-------------- + +:Release Date: 2018-11-30 (Casablanca Release) + +**New Features** + +The Casablanca release is the second release for ONAP Optimization Framework (OOF). + +A summary of features includes + +* Homing enhancements for improving service deployability + * Discovering and reusing shared resources when processing multiple homing requests in parallel + * Considering Latency Reduction (in addition to geographical distances) for homing optimization + * Enhanced capacity checks during VNF homing + * Asynchronous communication between HAS components +* OOF Casablanca S3P Usability enhancement + * Adherence to ONAP API Common Versioning Strategy (CVS) Proposal + * Move all internal and external facing APIs to Swagger 2.0 +* OOF Casablanca S3P Performance enhancements + * Creating a plan for performance improvements based on the baseline measured metrics +* OOF development platform hardening + * Deployment scripts + * Fix Build Docker image script for supporting multiple versions + * Fix OOM, HEAT deployment scripts (versioning) + * CSIT functional tests for each repo + * CI Jobs for different streams (Beijing, master etc) + * Clean up nexus binaries and maven versioning +* Integrate OOF with Certificate and Secret Management Service (CSM) +* Support SON (PCI) optimization using OSDF + +* Platform Maturity Level 1 + * ~65.1+ unit test coverage + +The Casablanca release for OOF delivered the following Epics. + + * [OPTFRA-273] - Epic Name: OOF Casablanca S3P Manageability enhancement + * [OPTFRA-270] - Maintain current S3P levels + * [OPTFRA-271] - OOF Casablanca S3P Security enhancement + * [OPTFRA-267] - OOF - HPA Enhancements + * [OPTFRA-276] - Implementing a POC for 5G SON Optimization + + +**Bug Fixes** + +* The full list of implemented user stories and epics is available on `CASABLANCA RELEASE <https://jira.onap.org/projects/OPTFRA/versions/10445>`_ + +**Known Issues** + + * [OPTFRA-223] - On boarding and testing AAF certificates for OSDF. + * [OPTFRA-293] - Implement encryption for all OSDF internal and external communication + * [OPTFRA-329] - role based access control for OSDF-Policy interface + +**Security Notes** + +OPTFRA osdf code has been formally scanned during build time using NexusIQ and no Critical vulnerability was found. +The OPTF open Critical security vulnerabilities and their risk assessment have been documented as part of the `project <https://wiki.onap.org/pages/viewpage.action?pageId=43385924>`__. + +Quick Links: + - `OPTFRA project page <https://wiki.onap.org/display/DW/Optimization+Framework+Project>`_ + - `Passing Badge information for OPTFRA <https://bestpractices.coreinfrastructure.org/en/projects/1720>`_ + - `Project Vulnerability Review Table for OPTF <https://wiki.onap.org/pages/viewpage.action?pageId=43385924>`_ + +**Upgrade Notes** + +None. + +**Deprecation Notes** + +None. + +**Other** + +None + +Version: 2.0.0 -------------- :Release Date: 2018-06-07 @@ -15,7 +766,7 @@ Version: 1.1.1 **New Features** -The ONAP Optimization Framework (OOF) is new in Beijing. A summary of features includes: +The ONAP Optimization Framework (OOF) is new in Beijing. A summary of features includes: * Baseline HAS functionality * support for VCPE use case @@ -23,37 +774,28 @@ The ONAP Optimization Framework (OOF) is new in Beijing. A summary of features i * Integration with OOF OSDF, SO, Policy, AAI, and Multi-Cloud * Platform Maturity Level 1 * ~50%+ unit test coverage - -The Beijing release for OOF delivered the following Epics. - * [OPTFRA-2] - On-boarding and Stabilization of the OOF seed code +The Beijing release for OOF delivered the following Epics. + * [OPTFRA-2] - On-boarding and Stabilization of the OOF seed code * [OPTFRA-6] - Integrate OOF with other ONAP components - * [OPTFRA-7] - Integration with R2 Use Cases [HPA, Change Management, Scaling] - * [OPTFRA-20] - OOF Adapters for Retrieving and Resolving Policies - * [OPTFRA-21] - OOF Packaging - * [OPTFRA-28] - OOF Adapters for Beijing Release (Policy, SDC, A&AI, Multi Cloud, etc.) - * [OPTFRA-29] - Policies and Specifications for Initial Applications [Change Management, HPA] - * [OPTFRA-32] - Platform Maturity Requirements for Beijing release - * [OPTFRA-33] - OOF Support for HPA - * [OPTFRA-105] - All Documentation Related User Stories and Tasks **Bug Fixes** -None. Initial release R2 Beijing. No previous versions +None. Initial release R2 Beijing. No previous versions **Known Issues** -None. +None. **Security Notes** @@ -61,16 +803,15 @@ OPTFRA code has been formally scanned during build time using NexusIQ and no Cri Quick Links: - `OPTFRA project page <https://wiki.onap.org/display/DW/Optimization+Framework+Project>`_ - - `Passing Badge information for OPTFRA <https://bestpractices.coreinfrastructure.org/en/projects/1720>`_ **Upgrade Notes** -None. Initial release R2 Beijing. No previous versions +None. Initial release R2 Beijing. No previous versions **Deprecation Notes** -None. Initial release R2 Beijing. No previous versions +None. Initial release R2 Beijing. No previous versions **Other** diff --git a/docs/sections/swaggerdoc/oof-osdf-has-api.json b/docs/sections/swaggerdoc/oof-osdf-has-api.json deleted file mode 100644 index 2fe2b97..0000000 --- a/docs/sections/swaggerdoc/oof-osdf-has-api.json +++ /dev/null @@ -1,587 +0,0 @@ -{ - "swagger" : "2.0", - "info" : { - "description" : "This is the ONAP OOF OSDF (Optimization Service Design Framework) API", - "version" : "1.0.0", - "title" : "OSDF API", - "contact" : { - "email" : "frank.sandoval@oamtechnologies.com" - }, - "license" : { - "name" : "Apache 2.0", - "url" : "http://www.apache.org/licenses/LICENSE-2.0.html" - } - }, - "securityDefinitions" : { - "basicAuth" : { - "type" : "basic", - "description" : "HTTP Basic Auth" - } - }, - "security" : [ { - "basicAuth" : [ ] - } ], - "paths" : { - "/v2/placement" : { - "post" : { - "summary" : "create/update a placement", - "operationId" : "createPlacement", - "description" : "create/update a placement", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "placementRequest", - "description" : "placement request", - "schema" : { - "$ref" : "#/definitions/PlacementRequest" - } - } ], - "responses" : { - "201" : { - "description" : "An optimization solution is found." - }, - "202" : { - "description" : "An optimization request is accepted" - }, - "400" : { - "description" : "bad request" - }, - "401" : { - "description" : "Request body is not compliant with the API definition" - }, - "404" : { - "description" : "The server cannot find the requested URI" - }, - "405" : { - "description" : "The requested method is not supported by a server." - }, - "500" : { - "description" : "The server encountered an internal server error or timed out" - } - } - } - } - }, - "definitions" : { - "PlacementRequest" : { - "type" : "object", - "required" : [ "requestInfo", "placementInfo", "licenseInfo", "serviceInfo" ], - "properties" : { - "requestInfo" : { - "$ref" : "#/definitions/RequestInfo" - }, - "placementInfo" : { - "$ref" : "#/definitions/PlacementInfo" - }, - "licenseInfo" : { - "$ref" : "#/definitions/LicenseInfo" - }, - "serviceInfo" : { - "$ref" : "#/definitions/ServiceInfo" - } - } - }, - "RequestInfo" : { - "type" : "object", - "required" : [ "transactionId", "requestId", "callbackUrl", "sourceId", "requestType", "optimizers", "timeout" ], - "properties" : { - "transactionId" : { - "type" : "string", - "format" : "uuid", - "description" : "unique ID to track an ONAP transaction", - "example" : "d290f1ee-6c54-4b01-90e6-d701748f0851" - }, - "requestId" : { - "type" : "string", - "format" : "uuid", - "description" : "A unique ID to track multiple requests associated with a transaction", - "example" : "d290f1ee-6c54-4b01-90e6-d701748f0851" - }, - "callbackUrl" : { - "type" : "string", - "format" : "url", - "description" : "The end point of a callback service where recommendations are posted.", - "example" : "myDomain.com/myCallback" - }, - "callbackHeader" : { - "type" : "string", - "description" : "JSON blob. The header information a client expecting in a async callback.", - "example" : { - "blob" : "content" - } - }, - "sourceId" : { - "type" : "string", - "description" : "The unique ID of a client making an optimization call.", - "example" : "d290f1ee-6c54-4b01-90e6-d701748f0851" - }, - "requestType" : { - "type" : "string", - "enum" : [ "create", "update", "delete" ], - "description" : "The type of a request", - "example" : "create" - }, - "numSolutions" : { - "type" : "integer", - "description" : "Expected number of solutions.", - "example" : 1 - }, - "optimizers" : { - "type" : "array", - "items" : { - "type" : "string", - "enum" : [ "placement" ] - }, - "description" : "A list of optimization services.", - "example" : "placement" - }, - "timeout" : { - "type" : "integer", - "description" : "A tolerance window (in second) for expecting solutions.", - "example" : 5 - } - } - }, - "PlacementInfo" : { - "type" : "object", - "required" : [ "requestParameters", "placementDemands" ], - "properties" : { - "requestParameters" : { - "type" : "string", - "description" : "JSON blob. A service ordering information", - "example" : { - "blob" : "content" - } - }, - "placementDemands" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/PlacementDemand" - }, - "description" : "The resource information for a placement service" - }, - "subscriberInfo" : { - "type" : "object", - "items" : { - "$ref" : "#/definitions/SubscriberInfo" - }, - "description" : "The information of a service subscriber." - } - } - }, - "PlacementDemand" : { - "type" : "object", - "required" : [ "resourceModuleName", "serviceResourceId", "resourceModelInfo" ], - "properties" : { - "resourceModuleName" : { - "type" : "string", - "description" : "A resource name as defined in a service mode", - "example" : "myResourceName" - }, - "serviceResourceId" : { - "type" : "string", - "description" : "A unique resource Id with a local scope between client and OOF.", - "example" : "myResourceId" - }, - "givenPlacement" : { - "type" : "object", - "additionalProperties" : { - "type" : "object", - "properties" : { - "key" : { - "type" : "string" - }, - "value" : { - "type" : "string" - } - } - }, - "description" : "placement parameters defined in the ordering system, keyname include tenantId", - "example" : { - "tenantId" : "1" - } - }, - "resourceModelInfo" : { - "$ref" : "#/definitions/ModelMetaData", - "description" : "Resource model information as defined in SDC" - }, - "existingCandidates" : { - "$ref" : "#/definitions/Candidates", - "description" : "The existing placement information of a resource." - }, - "excludedCandidates" : { - "$ref" : "#/definitions/Candidates", - "description" : "Candidates that need to be excluded from solutions." - }, - "requiredCandidates" : { - "$ref" : "#/definitions/Candidates", - "description" : "Candidates that must be included in solutions." - } - } - }, - "ModelMetaData" : { - "type" : "object", - "required" : [ "modelInvariantId", "modelVersionId" ], - "properties" : { - "modelInvariantId" : { - "type" : "string", - "description" : "A model invariant Id as defined in a service model.", - "example" : "my model invariant Id" - }, - "modelVersionId" : { - "type" : "string", - "description" : "A unique model Id as defined in a service model.", - "example" : "my unique model Id" - }, - "modelName" : { - "type" : "string", - "description" : "A model name as defined in a service model", - "example" : "my model name" - }, - "modelType" : { - "type" : "string", - "description" : "A model type as defined in a service model.", - "example" : "my model type" - }, - "modelVersion" : { - "type" : "string", - "description" : "A model version as defined in a service model.", - "example" : "my model version" - }, - "modelCustomizationName" : { - "type" : "string", - "description" : "A model customization name as defined in a service model.", - "example" : "my model customization" - } - } - }, - "Candidates" : { - "type" : "object", - "required" : [ "identifierType", "identifiers" ], - "properties" : { - "identifierType" : { - "type" : "string", - "enum" : [ "service_instance_id", "vnf_name", "cloud_region_id" ], - "description" : "The type of a candidate.", - "example" : "service_instance_id" - }, - "identifiers" : { - "type" : "array", - "items" : { - "type" : "string" - }, - "description" : "A list of identifiers.", - "example" : "candidateId" - }, - "cloudOwner" : { - "type" : "string", - "description" : "The name of a cloud owner. Only required if identifierType is cloud_region_id", - "example" : "cloud_owner" - } - } - }, - "SubscriberInfo" : { - "type" : "object", - "required" : [ "globalSubscriberId", "subscriberName", "subscriberCommonSiteId" ], - "properties" : { - "globalSubscriberId" : { - "type" : "string", - "description" : "An ID of a subscriber.", - "example" : "subscriber_id" - }, - "subscriberName" : { - "type" : "string", - "description" : "The name of a subscriber. If the name is not known, the value must be 'unknown'", - "example" : "subscriber_name" - }, - "subscriberCommonSiteId" : { - "type" : "string", - "description" : "Id representing a subscriber location", - "example" : "subscriber_location_id" - } - } - }, - "LicenseInfo" : { - "type" : "object", - "required" : [ "licenseDemands" ], - "properties" : { - "licenseDemands" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/LicenseDemands" - }, - "description" : "A list of resources for license selection" - } - } - }, - "LicenseDemands" : { - "type" : "object", - "required" : [ "resourceModuleName", "serviceResourceId", "resourceModelInfo" ], - "properties" : { - "resourceModuleName" : { - "type" : "string", - "description" : "A resource name as defined in a service model.", - "example" : "service_instance_id" - }, - "serviceResourceId" : { - "type" : "string", - "description" : "A unique resource Id with a local scope between client and OOF.", - "example" : "service_instance_id" - }, - "resourceModelInfo" : { - "$ref" : "#/definitions/ModelMetaData", - "description" : "Resource model information as defined in a service model." - }, - "existingLicenses" : { - "$ref" : "#/definitions/LicenseModel", - "description" : "Existing license information assigned to a resource." - } - } - }, - "LicenseModel" : { - "type" : "object", - "required" : [ "entitlementPoolUUID", "licenseKeyGroupUUID" ], - "properties" : { - "entitlementPoolUUID" : { - "type" : "array", - "items" : { - "type" : "string", - "format" : "uuid" - }, - "description" : "Entitlement pool UUIDs associated with a resource.", - "example" : "candidateId" - }, - "licenseKeyGroupUUID" : { - "type" : "array", - "items" : { - "type" : "string", - "format" : "uuid" - }, - "description" : "License key groups associated with a resource", - "example" : "candidateId" - } - } - }, - "SynchronousResponse" : { - "type" : "object", - "required" : [ "requestId", "transactionId", "requestStatus" ], - "properties" : { - "requestId" : { - "type" : "string", - "format" : "uuid", - "description" : "A unique Id for an ONAP transaction", - "example" : "ONAP transaction id" - }, - "transactionId" : { - "type" : "string", - "format" : "uuid", - "description" : "A unique ID to track multiple requests associated with a transaction.", - "example" : "requests id" - }, - "statusMessage" : { - "type" : "string", - "description" : "Reasoning if a requestStatus is failure.", - "example" : "requestStatus" - }, - "requestStatus" : { - "type" : "string", - "enum" : [ "success", "failure" ], - "description" : "The status of a request.", - "example" : "success" - } - } - }, - "AsynchronousResponse" : { - "type" : "object", - "required" : [ "requestId", "transactionId", "requestStatus", "solutions" ], - "properties" : { - "requestId" : { - "type" : "string", - "format" : "uuid", - "description" : "A unique Id for an ONAP transaction", - "example" : "ONAP transaction id" - }, - "transactionId" : { - "type" : "string", - "format" : "uuid", - "description" : "A unique ID to track multiple requests associated with a transaction.", - "example" : "requests id" - }, - "statusMessage" : { - "type" : "string", - "description" : "Reasoning if a requestStatus is failure.", - "example" : "requestStatus" - }, - "requestStatus" : { - "type" : "string", - "enum" : [ "success", "failure" ], - "description" : "The status of a request.", - "example" : "success" - }, - "solutions" : { - "$ref" : "#/definitions/Solutions", - "description" : "Solutions related to a request." - } - } - }, - "Solutions" : { - "type" : "object", - "required" : [ "placementSolutions", "licenseSolutions" ], - "properties" : { - "placementSolutions" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/ComprehensiveSolution" - }, - "description" : "A list of placement solutions." - }, - "licenseSolutions" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/LicenseSolution" - }, - "description" : "A list of license solutions." - } - } - }, - "ComprehensiveSolution" : { - "type" : "object", - "required" : [ "placementSolutions" ], - "properties" : { - "placementSolutions" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/PlacementSolution" - }, - "description" : "A list of placement solutions." - } - } - }, - "PlacementSolution" : { - "type" : "object", - "required" : [ "resourceModuleName", "serviceResourceId", "identifierType", "identifier" ], - "properties" : { - "resourceModuleName" : { - "type" : "string", - "description" : "The name of a resource as defined in the service model", - "example" : "resource name" - }, - "serviceResourceId" : { - "type" : "string", - "description" : "A resource Id as defined in a service model.", - "example" : "resource id" - }, - "identifierType" : { - "type" : "string", - "enum" : [ "service_instance_id" ], - "description" : "The type of a candidate.", - "example" : "candidate type" - }, - "identifier" : { - "type" : "string", - "description" : "The id of a candidate.", - "example" : "candidate id" - }, - "assignmentInfo" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/AssignmentInfo" - }, - "description" : "Additional information related to a candidate." - } - } - }, - "AssignmentInfo" : { - "type" : "object", - "required" : [ "key", "value" ], - "properties" : { - "key" : { - "type" : "string", - "description" : "An attribute name", - "example" : "attribute name" - }, - "value" : { - "type" : "string", - "description" : "An attribute value.", - "example" : "attribute value" - } - } - }, - "LicenseSolution" : { - "type" : "object", - "required" : [ "resourceModuleName", "serviceResourceId", "entitlementPoolUUID", "licenseKeyGroupUUID", "entitlementPoolInvariantUUID", "licenseKeyGroupInvariantUUID" ], - "properties" : { - "resourceModuleName" : { - "type" : "string", - "description" : "A resource name as defined in a service", - "example" : "resource name" - }, - "serviceResourceId" : { - "type" : "string", - "description" : "A resource Id as defined in a service.", - "example" : "resource Id" - }, - "entitlementPoolUUID" : { - "type" : "array", - "items" : { - "type" : "string", - "format" : "uuid" - }, - "description" : "A list of entitlementPoolUUIDs", - "example" : "entitlementPoolUUID" - }, - "licenseKeyGroupUUID" : { - "type" : "array", - "items" : { - "type" : "string", - "format" : "uuid" - }, - "description" : "A list of licenseKeyGroupUUID.", - "example" : "licenseKeyGroupUUID" - }, - "entitlementPoolInvariantUUID" : { - "type" : "array", - "items" : { - "type" : "string", - "format" : "uuid" - }, - "description" : "A list of entitlementPoolInvariantUUID", - "example" : "entitlementPoolInvariantUUID" - }, - "licenseKeyGroupInvariantUUID" : { - "type" : "array", - "items" : { - "type" : "string", - "format" : "uuid" - }, - "description" : "A list of licenseKeyGroupInvariantUUID", - "example" : "licenseKeyGroupInvariantUUID" - } - } - }, - "ServiceInfo" : { - "type" : "object", - "required" : [ "serviceInstanceId", "modelInfo", "serviceName" ], - "properties" : { - "serviceInstanceId" : { - "type" : "string", - "description" : "A service instance id associated with a request.", - "example" : "service_instance_id" - }, - "modelInfo" : { - "$ref" : "#/definitions/ModelMetaData", - "description" : "A list of identifiers." - }, - "serviceName" : { - "type" : "string", - "description" : "The name of a service", - "example" : "service_name" - } - } - } - }, - "schemes" : [ "https" ], - "host" : "virtserver.swaggerhub.com", - "basePath" : "/oof-osdf/v1" -}
\ No newline at end of file diff --git a/docs/sections/upgradestrategy.rst b/docs/sections/upgradestrategy.rst new file mode 100644 index 0000000..6357fac --- /dev/null +++ b/docs/sections/upgradestrategy.rst @@ -0,0 +1,22 @@ +.. + This work is licensed under a Creative Commons Attribution 4.0 + International License. + +================ +Upgrade Strategy +================ + +OSDF can be upgraded in place(remove and replace) or in a blue-green +strategy. + +There is no need for database migration. Since, there is no database +being used by OSDF. + +Supporting Facts +================ + +OSDF is a stateless component. It doesn't store any information in the +database. It holds on to the optimization request in memory only until +the optimization process is complete. The optimization is done either by +OSDF itself or other external components(such as HAS) are leveraged for +optimization. diff --git a/docs/tox.ini b/docs/tox.ini new file mode 100644 index 0000000..73e317e --- /dev/null +++ b/docs/tox.ini @@ -0,0 +1,31 @@ +[tox] +minversion = 1.6 +envlist = docs,docs-linkcheck,docs-spellcheck +skipsdist = true + +[testenv:docs] +basepython = python3.8 +deps = + -r{toxinidir}/requirements-docs.txt + -chttps://releases.openstack.org/constraints/upper/yoga + -chttps://git.onap.org/doc/plain/etc/upper-constraints.onap.txt?h=master +commands = + sphinx-build -q -b html -n -d {envtmpdir}/doctrees {toxinidir} {toxinidir}/_build/html + +[testenv:docs-linkcheck] +basepython = python3.8 +deps = + -r{toxinidir}/requirements-docs.txt + -chttps://releases.openstack.org/constraints/upper/yoga + -chttps://git.onap.org/doc/plain/etc/upper-constraints.onap.txt?h=master +commands = + sphinx-build -q -b linkcheck -d {envtmpdir}/doctrees {toxinidir} {toxinidir}/_build/linkcheck + +[testenv:docs-spellcheck] +basepython = python3.8 +deps = + -r{toxinidir}/requirements-docs.txt + -chttps://releases.openstack.org/constraints/upper/yoga + -chttps://git.onap.org/doc/plain/etc/upper-constraints.onap.txt?h=master +commands = + sphinx-build -q -b spelling -d {envtmpdir}/doctrees {toxinidir} {toxinidir}/_build/spellcheck |