diff --git a/public/2024Q2/404.html b/public/2024Q2/404.html new file mode 100644 index 0000000000000000000000000000000000000000..e0025669d1b89ba5b710550ed76ec646237beb5d --- /dev/null +++ b/public/2024Q2/404.html @@ -0,0 +1,2756 @@ + + + +
+ + + + + + + + + + + + + + + + + + +Here are some examples from past and current efforts that use OpenSlice in various cases.
+In Openslice parts of TMF642 Alarm Management API are currently implemented. Alarms can be managed through the TMF API endpoint as well as the UI.
+Note: Actions is an experimental feature. We expect to have a more mature solution in future. The component in the architecture is the Openslcie Assurance Services
+Alarms can be automatically resolved by specific actions. Today only the following actions are offered.
+Usually used to perform a Day2 configuration (towards OSM). To use it, Create a New Action Specification Name=execDay2 as following
+ +Now make a Service Order for your service. In this example ςε used a cirros NSD
+Create a New Action Rule for the running services as the following example:
+ +The scope is the running cirros service.
+Params should be paramname=value;paramname2=value2;paramname3=value3 (must exist in the VNF otherwise OSM will raise an error).
+In this case should be filename=test.txt
+Primitive=touch
+ServiceId = select the service which will accept the Day2. In this case is the same
+To test it:
+Go to the Service Inventory and select the active Service.
+Note the UUID of the service (e.g. c4e7990a-e174-4cd2-9133-b10e56721e08 copy from address bar), DeploymentRequestID and NSDID from characteristics
+You can either use the UUID of the service or the DeploymentRequestID and POST to the Alarms endpoint ( /tmf-api/alarmManagement/v4/alarm)
+If the DeploymentRequestID is used then POST:
+
+{
+ "alarmRaisedTime": "2021-06-29T12:30:24.675Z",
+ "alarmReportingTime": "2021-06-29T12:30:54.675Z",
+ "state": "raised",
+ "alarmType": "qualityOfServiceAlarm",
+ "probableCause": "thresholdCrossed",
+ "ackState": "unacknowledged",
+ "perceivedSeverity": "major",
+ "sourceSystemId": "mano-client-service",
+ "alarmDetails": "NSID=3;DeploymentRequestID=1",
+ "specificProblem": "myalram raised"
+}
+
+
+If the UUID is used then POST:
+
+{
+ "alarmRaisedTime": "2021-06-29T12:30:24.675Z",
+ "alarmReportingTime": "2021-06-29T12:30:54.675Z",
+ "state": "raised",
+ "alarmType": "qualityOfServiceAlarm",
+ "probableCause": "thresholdCrossed",
+ "ackState": "unacknowledged",
+ "perceivedSeverity": "major",
+ "sourceSystemId": "mano-client-service",
+ "alarmDetails": "analarm",
+ "specificProblem": "myalram raised",
+ "affectedService": [
+ {
+ "id": "c4e7990a-e174-4cd2-9133-b10e56721e08"
+ }
+ ]
+
+}
+
+
+The Alarm to be created must have the affected Service ID equal to the running service from the scope (the cirros_ns)
+Go to service inventory you will see the notes and also the service characteristics for any EXEC_ACTION updates
+You can also adjust the alarm conditions. They must match true so the alarm to be acknowledged +So if another external service raises an Alarm (with POST) for the running service, a Day2 will be performed on another Service
+This action is used from getting a scaling event from OSM. Please see the next demo for details on how it works
+You can watch how we used the prototype on the following ETSI ZMS PoC #2
+ + + + + + + + + + + + + + +++Kubernetes is an orchestration system for automating software deployment, scaling, and management. One can interact though the Kubernetes API and it has a set of objects ready for use out of the box. Custom Resource Definitions (CRDs) is a way that allows to manage things other than Kubernetes itself and allows to create our own objects The use of CRDs makes the possibilities of Kubernetes management almost limitless. You can extend the base Kubernetes API with any object you like using CRDs.
+
CRIDGE is a service designed to create and manage Custom Resources (CRs) based on Custom Resource Definitions (CRDs) installed on a Kubernetes cluster. By leveraging the OpenSlice (OSL), CRIDGE enables seamless integration and orchestration within Kubernetes environments, utilizing Kubernetes APIs via the TMF APIs and models. Thus, more or less, OSL exposes Kubernetes APIs as TMF APIs and models.
+++By allowing the design and lifecycle management of services/resources that expose CRDs/CRs in a Kubernetes cluster via the TMF APIs, OSL can be used in many complex scenarios now involing resources from multiple domains.
+
CRIDGE service allows OSL to:
+Enabling Loose Coupling and Orchestration
+Ecosystem Reusability
+Service Catalog Exposure and Deployment
+OSL can expose CRs in service catalogs, facilitating their deployment in complex scenarios. +These scenarios may include service bundles that involve multiple systems, such as RAN controllers or other Kubernetes clusters, providing a robust and versatile deployment framework.
+++Why the CRIDGE name? we wanted to build a service that maps TMF models to CRDs; a kind of a CRD to TMF bridge. Therefore CRIDGE was born
+
++OSL in general is responible for exposing service specifications which are ready to be ordered and orchestrated, through tmforum Open APIs as defined in the OSL Service Spec Catalog. Usually for a service specification a corresponding (one or more) resource specification (resourceSpecificationReference) is registered in the OSL Resource Spec Catalog.
+
The following image illustrates the approach.
+ +The provided image illustrates the architecture and workflow of the CRIDGE service, showing how it interacts with other components within a Kubernetes (K8s) cluster. Here is an explanation of the key components and flow in the diagram:
+K8s API: The Kubernetes API server, which is the central control point for managing the Kubernetes cluster. CRIDGE interacts with the K8s API to manage CRDs and CRs.
+++CRD (Custom Resource Definition): A CRD is a way to define custom resources in Kubernetes cluster-wise. It allows the extension of Kubernetes API to create and manage user-defined resources. Example :
+
apiVersion: apiextensions.k8s.io/v1
+ kind: CustomResourceDefinition
+ metadata:
+ name: myresource.example.com
+
+++CR (Custom Resource): A CR is an instance of a CRD. It represents the actual custom resource that is managed within the Kubernetes cluster. Example shown in different namespaces:
+
apiVersion: example.com/v1
+ kind: Myresource
+ metadata:
+ name: example_resource_1
+
+In a nutchell:
+> The example CRD myresource.example.com allows the creation of custom resources of type Myresource.
+> Instances of Myresource are created in various namespaces, each with unique names like example_resource_1.
+
+A CRIDGE service is usually responsible for managing one cluster. In the following diagram we show how it can be used for managing multiple clusters:
+ +We assume that there is an OSL Management cluster that OSL is installed. CRIDGE is also installed there if we would like to manage resources in the same management cluster. + - Each CRIDGE service has for example its own configuration to connect to target cluster + - Each CRIDGE can be installed either in the managed cluster or at the remote clusters. Connectivity is handled via the service bus + - Important: Each CRIDGE has a different context and API endpoints. This is used to request CRDs on a different cluster
+++A CRD has a globally unique name for example mycrd.example.com. So we need to somehow identify also the different cluster
+
++CRDs and CRs can appear (disappear) or change status at any time in a cluster. OSL Resource Inventory need to be aware of these events.
+
The sync process is found in the code and explained by the following picture:
+ +WatcherService is executed when the cridge service application starts (see onApplicationEvent). First things:
+See ExposingKubernetesResources
+OSOM checks the presence of attribute _CR_SPEC at the RFS to make a request for a CR deployment
+++LCM rules can be used to change attributes of this yaml/json file, before sending this for orchestration
+
However, the following issue needs to be solved: ** How to map the CR lifecycle that is defined in the CRD with the TMF resource Lifecycle? ** + - For this We introduced the following characteristics: _CR_CHECK_FIELD, _CR_CHECKVAL_STANDBY, _CR_CHECKVAL_ALARM, _CR_CHECKVAL_AVAILABLE, _CR_CHECKVAL_RESERVED, _CR_CHECKVAL_UNKNOWN, _CR_CHECKVAL_SUSPENDED
+OSOM sends to CRIDGE a message with the following information:
+org.etsi.osl.statusCheckValueSuspended: The CR specific value (of the CheckFieldName) that needs to me mapped to the TMF resource state SUSPENDED (see org.etsi.osl.tmf.ri639.model.ResourceStatusType)
+Parameters:
+Returns:
+CRIDGE receives the message and creates according to the labels the necessary CR
+Openslice offers the following main functionalities:
+The following figure displays the overall architecture of Openslice.
+ +Openslice allows Vertical Customers browsing the available offered service specifications. It consists of:
+The following figure depicts how Openslice microservices are deployed
+ +A typical deployment across domains, involves today some typical components: i) an OSS/BSS to allow customers access the service catalog and perform service orders, ii) a Service Orchestrator (SO) component for executing the service order workflow, as well as iii) a Network Functions Virtualization Orchestrator (NFVO) for configuring the iv) network resources.
+TMF Open APIs are introduced not only for exposing catalogues and accepting service orders, but also implementing the East-West interfaces between the domains, fulfilling also the LSO requirements as introduced by MEF.
+The following figure shows how openslice could be used in such scenarios:
+ +See more Consuming Services From External Partner Organizations
+ + + + + + + + + + + + + +Openslice follows the centralized log management concept, i.e. a type of logging solution system that consolidates the log data from different services and pushes it to a central, accessible and easy-to-use interface.
+For that reason, Elasticsearch is elected as an open-source centralized logging solution for collecting, parsing and storing logs towards a real-time data analytics tool that provides insights from any type of structured and unstructured data source.
+ + + + + + + + + + + + + +A typical deployment across domains, involves today some typical components: i) an OSS/BSS to allow customers access the service catalog and perform service orders, ii) a Service Orchestrator (SO) component for executing the service order workflow, as well as iii) a Network Functions Virtualization Orchestrator (NFVO) for configuring the iv) network resources.
+TMF Open APIs are introduced not only for exposing catalogues and accepting service orders, but also implementing the East-West interfaces between the domains, fulfilling also the LSO requirements as introduced by MEF.
+The following figure shows how openslice could be used in such scenarios:
+ +In Openslice we can consume services from 3rd parties via Open APIs.
+We use the TMF 632 Party Management model to specify Organizations that we can exchange items and other information such as:
+An organization must have the following characteristics in openslice catalog, like for example:
+"EXTERNAL_TMFAPI_BASEURL", "http://portal.openslice.io"
+"EXTERNAL_TMFAPI_CLIENTREGISTRATIONID", "authOpensliceProvider"
+"EXTERNAL_TMFAPI_OAUTH2CLIENTID", "osapiWebClientId"
+"EXTERNAL_TMFAPI_OAUTH2CLIENTSECRET", "secret"
+"EXTERNAL_TMFAPI_OAUTH2SCOPES", scopes
+"EXTERNAL_TMFAPI_OAUTH2TOKENURI", "http://portal.openslice.io/osapi-oauth-server/oauth/token"
+"EXTERNAL_TMFAPI_USERNAME", "admin"
+"EXTERNAL_TMFAPI_PASSWORD", "openslice"
+"EXTERNAL_TMFAPI_SERVICE_CATALOG_URLS" = "/tmf-api/serviceCatalogManagement/v4/serviceSpecification?type=CustomerFacingServiceSpecification" (this is optional, fetch a list of service specs it will be relative with the BASEURL. If the url is empty then no specs will be fetched, the EXTERNAL_TMFAPI_SERVICE_CATEGORY_URLS might be used)
+"EXTERNAL_TMFAPI_SERVICE_CATEGORY_URLS" = "/tmf-api/serviceCatalogManagement/v4/serviceCategory/{categoryid}" (this example will fetch all specs in a category. You may define comma separated URLs of categories API URL . This will fetch specifications of every defined category. If you want only one specific category put for example the uuid only of one category: "/tmf-api/serviceCatalogManagement/v4/serviceCategory/bda02821-bc4d-4bd6-b64b-d9c2aa5f8e6d". multiple urls should be "/tmf-api/serviceCatalogManagement/v4/serviceCategory/bda02821-bc4d-4bd6-b64b-d9c2aa5f8e6d,/tmf-api/serviceCatalogManagement/v4/serviceCategory/9b6d8bf3-abd2-43c4-8154-c8c6fe5545b2")
+"EXTERNAL_TMFAPI_SERVICE_SPEC" = "/tmf-api/serviceCatalogManagement/v4/serviceSpecification"
+"EXTERNAL_TMFAPI_SERVICE_ORDER_URLS"= "/test/v1/serviceorder" (this is optional)
+An example Organization defined example in json:
+
+{
+ "uuid": "1a09a8b5-6bd5-444b-b0b9-a73c69eb42ae",
+ "@baseType": "BaseEntity",
+ "@schemaLocation": null,
+ "@type": null,
+ "href": null,
+ "name": "Openslice.io",
+ "id": "1a09a8b5-6bd5-444b-b0b9-a73c69eb42ae",
+ "isHeadOffice": null,
+ "isLegalEntity": null,
+ "nameType": null,
+ "organizationType": null,
+ "tradingName": null,
+ "contactMedium": [],
+ "creditRating": [],
+ "existsDuring": null,
+ "externalReference": [],
+ "organizationChildRelationship": [],
+ "organizationIdentification": [],
+ "organizationParentRelationship": null,
+ "otherName": [],
+ "partyCharacteristic": [
+ {
+ "uuid": "3a2f7221-e0a2-4a6b-88d1-534c8e1963f6",
+ "@baseType": "BaseEntity",
+ "@schemaLocation": null,
+ "@type": null,
+ "href": null,
+ "name": "EXTERNAL_TMFAPI_CLIENTREGISTRATIONID",
+ "valueType": null,
+ "value": {
+ "value": "authOpensliceProvider",
+ "alias": null
+ }
+ },
+ {
+ "uuid": "c24bb527-f178-4d38-9b93-2027c1732876",
+ "@baseType": "BaseEntity",
+ "@schemaLocation": null,
+ "@type": null,
+ "href": null,
+ "name": "EXTERNAL_TMFAPI_USERNAME",
+ "valueType": null,
+ "value": {
+ "value": "admin",
+ "alias": null
+ }
+ },
+ {
+ "uuid": "27e45df8-414b-44c6-a5d5-3f064e2cfd3b",
+ "@baseType": "BaseEntity",
+ "@schemaLocation": null,
+ "@type": null,
+ "href": null,
+ "name": "EXTERNAL_TMFAPI_PASSWORD",
+ "valueType": null,
+ "value": {
+ "value": "openslice",
+ "alias": null
+ }
+ },
+ {
+ "uuid": "e0e470b8-6024-4014-8a18-2333e5465ce1",
+ "@baseType": "BaseEntity",
+ "@schemaLocation": null,
+ "@type": null,
+ "href": null,
+ "name": "EXTERNAL_TMFAPI_OAUTH2CLIENTSECRET",
+ "valueType": null,
+ "value": {
+ "value": "secret",
+ "alias": null
+ }
+ },
+ {
+ "uuid": "3e0de762-ac80-4c1e-a0a1-f265ff0899b4",
+ "@baseType": "BaseEntity",
+ "@schemaLocation": null,
+ "@type": null,
+ "href": null,
+ "name": "EXTERNAL_TMFAPI_OAUTH2SCOPES",
+ "valueType": null,
+ "value": {
+ "value": "admin;read",
+ "alias": null
+ }
+ },
+ {
+ "uuid": "0bbb8314-f7f2-420d-9fed-ba054b15f886",
+ "@baseType": "BaseEntity",
+ "@schemaLocation": null,
+ "@type": null,
+ "href": null,
+ "name": "EXTERNAL_TMFAPI_OAUTH2TOKENURI",
+ "valueType": null,
+ "value": {
+ "value": "http://portal.openslice.io/osapi-oauth-server/oauth/token",
+ "alias": null
+ }
+ },
+ {
+ "uuid": "3a567de4-79eb-4006-a500-3e5229b44175",
+ "@baseType": "BaseEntity",
+ "@schemaLocation": null,
+ "@type": null,
+ "href": null,
+ "name": "EXTERNAL_TMFAPI_OAUTH2CLIENTID",
+ "valueType": null,
+ "value": {
+ "value": "osapiWebClientId",
+ "alias": null
+ }
+ },
+ {
+ "uuid": "6dca729f-dbe1-46b7-89f1-5c4f9fe89d4e",
+ "@baseType": "BaseEntity",
+ "@schemaLocation": null,
+ "@type": null,
+ "href": null,
+ "name": "EXTERNAL_TMFAPI_BASEURL",
+ "valueType": null,
+ "value": {
+ "value": "http://portal.openslice.io",
+ "alias": null
+ }
+ }
+ ],
+ "relatedParty": [],
+ "status": null,
+ "taxExemptionCertificate": []
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ For issue management support, Openslice relies on Bugzilla. Bugzilla is a ticketing tool that allows issue reporting and tracking via tickets to all relevant stakeholders.
+The figure below displays the overall issue management service architecture integrating Bugzilla as its core and how this tool interacts with other Openslice services presenting some distinctive scenarios. It should be noted that Bugzilla tickets will not only be used for bugs/errors, but also for general requests, e.g. Service Order procedure.
+ + + + + + + + + + + + + + +Openslice has a Message bus which allows Openslice services to exchange messages via queues and topics.
+It is based on ActiveMQ.
+3rd party services can be attached to bus and subscribe to message topics or request resources via queues.
+Message | ++ |
---|---|
Alias | +CATALOG_GET_SERVICEORDERS | +
Name | +jms:queue:CATALOG.GET.SERVICEORDERS | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +OSOM | +
Body | ++ |
Description | +Return a List |
+
Message | ++ |
---|---|
Alias | +CATALOG_GET_SERVICEORDER_BY_ID | +
Name | +jms:queue:CATALOG.GET.SERVICEORDER_BY_ID | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +OSOM | +
Body | +String orderid | +
Description | +Return a ServiceOrder as String Json | +
Message | ++ |
---|---|
Alias | +CATALOG_UPD_SERVICEORDER_BY_ID | +
Name | +jms:queue:CATALOG.UPD.SERVICEORDER_BY_ID | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +OSOM | +
Body | +ServiceOrderUpdate serviceOrder | +
Headers | +"orderid"= orderid | +
Description | +Returns a ServiceOrder as String | +
Message | ++ |
---|---|
Alias | +CATALOG_GET_SERVICESPEC_BY_ID | +
Name | +jms:queue:CATALOG.GET.SERVICESPEC_BY_ID | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +OSOM | +
Body | +specid | +
Description | +Return a ServiceSpecification | +
Message | ++ |
---|---|
Alias | +CATALOG_ADD_SERVICESPEC | +
Name | +jms:queue:CATALOG.ADD.SERVICESPEC | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +CRIDGE | +
Body | +ServiceSpecCreate | +
Description | +Creates a ServiceSpecification and returns a ServiceSpecification as String | +
Message | ++ |
---|---|
Alias | +CATALOG_UPD_SERVICESPEC | +
Name | +jms:queue:CATALOG.UPD.SERVICESPEC | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +CRIDGE | +
Body | +ServiceSpecUpdate | +
Headers | +"serviceSpecid" = serviceSpecId | +
Description | +Updates a ServiceSpecification and returns a ServiceSpecification as String. | +
--- | ++ |
Message | ++ |
---|---|
Alias | +CATALOG_UPDADD_SERVICESPEC | +
Name | +jms:queue:CATALOG.UPDADD.SERVICESPEC | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +CRIDGE | +
Body | +ServiceSpecUpdate | +
Headers | +"serviceSpecid" = serviceSpecId, "forceId"=forceId | +
Description | +Updates a ServiceSpecification and returns a ServiceSpecification as String. If forceId is true then tries to assign the requested ID to the spec | +
Message | ++ |
---|---|
Alias | +CATALOG_ADD_SERVICEORDER | +
Name | +jms:queue:CATALOG.ADD.SERVICEORDER | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +OSOM | +
Body | +ServiceOrderCreate serviceOrder | +
Headers | ++ |
Description | +Creates a ServiceOrder and returns a ServiceOrder as String | +
Message | ++ |
---|---|
Alias | +CATALOG_GET_INITIAL_SERVICEORDERS_IDS | +
Name | +jms:queue:CATALOG.GET.INITIAL_SERVICEORDERS | +
Type | +queue | +
Destination | +TMF API service | +
Producers | ++ |
Body | ++ |
Description | +Return a List |
+
Message | ++ |
---|---|
Alias | +CATALOG_GET_SERVICEORDER_IDS_BY_STATE | +
Name | +jms:queue:CATALOG.GET.ACKNOWLEDGED_SERVICEORDERS | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +OSOM | +
Body | ++ |
Headers | +"orderstate"= orderState | +
Description | +String Json ArrayList of ServiceOrders | +
Message | ++ |
---|---|
Alias | +CATALOG_ADD_SERVICE | +
Name | +jms:queue:CATALOG.ADD.SERVICE | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +OSOM | +
Body | +ServiceCreate String json | +
Headers | +"orderid"=orderid, "serviceSpecid"= specid | +
Description | +Creates Service based an a Service Spec, Returns a Service object | +
Message | ++ |
---|---|
Alias | +CATALOG_UPD_SERVICE | +
Name | +jms:queue:CATALOG.UPD.SERVICE | +
Type | +queue | +
Destination | +TMF API service | +
Producers | ++ |
Body | +ServiceUpdate | +
Headers | +"serviceid" = serviceId, "propagateToSO" = true/false | +
Description | +will update a service by id and return the service instance. If propagateToSO=true then any service change will be handled by OSOM. This is needed to be controlled in order to avoid update loops | +
Message | ++ |
---|---|
Alias | +CATALOG_GET_SERVICE_BY_ID | +
Name | +jms:queue:CATALOG.GET.SERVICE | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +OSOM | +
Body | +String serviceID | +
Description | +returns a Service instance | +
---| Message | | +| ------------- |----------------| +|Alias | CATALOG_GET_SERVICE_BY_ORDERID | +|Name | jms:queue:CATALOG.GET.SERVICE_BY_ORDERID | +|Type | queue | +|Destination | TMF API service | +|Producers | | +|Body | String serviceID | +|Description | returns Service IDs of a specific order given then order id |
+Message | ++ |
---|---|
Alias | +CATALOG_SERVICE_QUEUE_ITEMS_GET | +
Name | +jms:queue:CATALOG.SERVICEQUEUEITEMS.GET | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +OSOM | +
Body | ++ |
Description | +returns a LIST OF Service Queue Items | +
--- | ++ |
Message | ++ |
---|---|
Alias | +CATALOG_SERVICE_QUEUE_ITEM_UPD | +
Name | +jms:queue:CATALOG.SERVICEQUEUEITEM.UPDATE | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +OSOM | +
Body | +String SERVICEQUEUEITEM | +
Headers | +"itemid" = SERVICEQUEUEITEM id | +
Description | +ill update a service queue item by id and return the instance | +
--- | ++ |
Message | ++ |
---|---|
Alias | +CATALOG_SERVICE_QUEUE_ITEM_DELETE | +
Name | +jms:queue:CATALOG.SERVICEQUEUEITEM.DELETE | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +OSOM | +
Body | ++ |
Headers | +"itemid" = SERVICEQUEUEITEM id | +
Description | +ill delete a service queue item by id | +
Message | ++ |
---|---|
Alias | +CATALOG_SERVICES_TO_TERMINATE | +
Name | +jms:queue:CATALOG.GET.SERVICETOTERMINATE | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +OSOM | +
Body | ++ |
Headers | ++ |
Description | +Get a list of ACTIVE services with END DAte in the past | +
--- | ++ |
Message | ++ |
---|---|
Alias | +CATALOG_SERVICES_OF_PARTNERS | +
Name | +jms:queue:CATALOG.GET.SERVICESOFPARTNERS | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +OSOM | +
Body | ++ |
Headers | ++ |
Description | +Get a list of ACTIVE services from the inventory of partners | +
Message | ++ |
---|---|
Alias | +NFV_CATALOG_GET_NSD_BY_ID | +
Name | +jms:queue:NFVCATALOG.GET.NSD_BY_ID | +
Type | +queue | +
Destination | +NFV Catalog service | +
Producers | +TMF API, OSOM | +
Body | +NSDid | +
Description | +Returns a NetworkServiceDescriptor object | +
Message | ++ |
---|---|
Alias | +NFV_CATALOG_DEPLOY_NSD_REQ | +
Name | +jms:queue:NFVCATALOG.DEPLOY.NSD_REQ | +
Type | +queue | +
Destination | +NFV Catalog service | +
Producers | +OSOM | +
Body | +DeploymentDescriptor as Json String | +
Headers | +NSD id | +
Description | +Returns a DeploymentDescriptor object as json string containing deployment info | +
Message | ++ |
---|---|
Alias | +NFV_CATALOG_UPD_DEPLOYMENT_BY_ID | +
Name | +jms:queue:NFVCATALOG.UPD.DEPLOYMENT_BY_ID | +
Type | +queue | +
Destination | +NFV Catalog service | +
Producers | +OSOM | +
Body | +DeploymentDescriptor as Json String | +
Headers | +DeploymentDescriptor id | +
Description | +Updates and Returns a DeploymentDescriptor object as json string containing deployment info | +
Message | ++ |
---|---|
Alias | +GET_USER_BY_USERNAME | +
Name | +jms:queue:GET.USER_BY_USERNAME | +
Type | +queue | +
Destination | +NFV Catalog service (this is temproary for now) | +
Producers | +TMF API | +
Body | +username | +
Headers | ++ |
Description | +Returns a PortalUser object as json string containing user info | +
Message | ++ |
---|---|
Alias | +NFV_CATALOG_GET_DEPLOYMENT_BY_ID | +
Name | +jms:queue:NFVCATALOG.GET.DEPLOYMENT_BY_ID | +
Type | +queue | +
Destination | +NFV Catalog service | +
Producers | +OSOM | +
Body | +Deployment ID | +
Description | +Returns a DeploymentDescriptor object | +
Message | ++ |
---|---|
Alias | +CATALOG_GET_EXTERNAL_SERVICE_PARTNERS | +
Name | +jms:queue:CATALOG.GET.EXTERNALSERVICEPARTNERS | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +OSOM | +
Body | ++ |
Headers | ++ |
Description | +As a String Json ArrayList of Organizaton objects containing the characteristic name EXTERNAL_TMFAPI | +
Message | ++ |
---|---|
Alias | +CATALOG_UPD_EXTERNAL_SERVICESPEC | +
Name | +jms:queue:CATALOG.UPD.EXTERNAL_SERVICESPEC | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +OSOM or maybe used by others that would like to update a Service Spec | +
Body | +A serviceSpecification as json string | +
Headers | +servicespecification id, orgid id | +
Description | +Updates (or inserts if does not exist in catalog) an external service specification) | +
Message | ++ |
---|---|
Alias | +NFV_CATALOG_NSACTIONS_SCALE | +
Name | +jms:queue:NSACTIONS.SCALE | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +OSOM or maybe used by others that would like scale a NS | +
Body | +A ScaleDescriptor as json string | +
Headers | +none | +
Description | +performs a scale | +
Message | ++ |
---|---|
Alias | +NFV_CATALOG_NS_LCMCHANGED | +
Name | +NFV_CATALOG_NS_LCMCHANGED | +
Type | +topic | +
Destination | +any | +
Producers | +MANO client | +
Body | +A json string | +
Headers | +none | +
Description | +A NFV_CATALOG_NS_LCMCHANGED message is published when LCM of a running NS is changed | +
Message | ++ |
---|---|
Alias | +ALARMS_ADD_ALARM | +
Name | +jms:queue:ALARMS.ADD.ALARM | +
Type | +queue | +
Publishers | ++ |
Consumers | +TMF API | +
Body | +AlarmCreate | +
Headers | ++ |
Description | +Add an alarm | +
Message | ++ |
---|---|
Alias | +ALARMS_UPDATE_ALARM | +
Name | +jms:queue:ALARMS.UPDATE.ALARM | +
Type | +queue | +
Publishers | ++ |
Consumers | +TMF API | +
Body | +AlarmUpdate | +
Headers | +alarmid = alarm id, body (AlarmUpdate object) | +
Description | +Update an alarm | +
Message | ++ |
---|---|
Alias | +ALARMS_GET_ALARM | +
Name | +jms:queue:ALARMS.GET.ALARM | +
Type | +queue | +
Publishers | ++ |
Consumers | +TMF API | +
Body | ++ |
Headers | +alarmid = alarm id | +
Description | +get an alarm | +
Message | ++ |
---|---|
Alias | +EVENT_SERVICE_CREATE | +
Name | +jms:topic:EVENT.SERVICE.CREATE | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +- | +
Body | +Notification object | +
Headers | +"eventid"=eventid, "objId"= objId | +
Description | +xx | +
Message | ++ |
---|---|
Alias | +EVENT_SERVICE_STATE_CHANGED | +
Name | +jms:topic:EVENT.SERVICE.STATECHANGED | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +- | +
Body | +Notification object | +
Headers | +"eventid"=eventid, "objId"= objId | +
Description | +xx | +
Message | ++ |
---|---|
Alias | +EVENT_SERVICE_DELETE | +
Name | +jms:topic:EVENT.SERVICE.DELETE | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +- | +
Body | +Notification object. Can be one of ServiceOrderCreateNotification, ServiceOrderStateChangeNotification, ServiceOrderAttributeValueChangeNotification, ServiceOrderDeleteNotification, etc | +
Headers | +"eventid"=eventid, "objId"= objId | +
Description | +xx | +
Message | ++ |
---|---|
Alias | +EVENT_SERVICE_ATTRIBUTE_VALUE_CHANGED | +
Name | +jms:topic:EVENT.SERVICE.ATTRCHANGED | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +- | +
Body | +Notification object. Can be one of ServiceOrderCreateNotification, ServiceOrderStateChangeNotification, ServiceOrderAttributeValueChangeNotification, ServiceOrderDeleteNotification, etc | +
Headers | +"eventid"=eventid, "objId"= objId | +
Description | +xx | +
Message | ++ |
---|---|
Alias | +EVENT_SERVICE_ORDER_CREATE | +
Name | +jms:topic:EVENT.SERVICEORDER.CREATE | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +BUGZILLA Service, CentralLog Service | +
Body | +Notification object. Can be one of ServiceOrderCreateNotification, ServiceOrderStateChangeNotification, ServiceOrderAttributeValueChangeNotification, ServiceOrderDeleteNotification, etc | +
Headers | +"eventid"=eventid, "objId"= objId | +
Description | +The Event of the Notification object contains the ServiceOrder object. Bugzilla service for example uses this to create a new issue | +
Message | ++ |
---|---|
Alias | +EVENT_SERVICE_ORDER_STATE_CHANGED | +
Name | +jms:topic:EVENT.SERVICEORDER.STATECHANGED | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +BUGZILLA Service, CentralLog Service | +
Body | +Notification object. Can be one of ServiceOrderCreateNotification, ServiceOrderStateChangeNotification, ServiceOrderAttributeValueChangeNotification, ServiceOrderDeleteNotification, etc | +
Headers | +"eventid"=eventid, "objId"= objId | +
Description | +The Event of the Notification object contains the ServiceOrder object. Bugzilla service for example uses this to update an issue | +
Message | ++ |
---|---|
Alias | +EVENT_SERVICE_ORDER_DELETE | +
Name | +jms:topic:EVENT.SERVICEORDER.DELETE | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +BUGZILLA Service, CentralLog Service | +
Body | +Notification object. Can be one of ServiceOrderCreateNotification, ServiceOrderStateChangeNotification, ServiceOrderAttributeValueChangeNotification, ServiceOrderDeleteNotification, etc | +
Headers | +"eventid"=eventid, "objId"= objId | +
Description | +The Event of the Notification object contains the ServiceOrder object | +
Message | ++ |
---|---|
Alias | +EVENT_SERVICE_ORDER_ATTRIBUTE_VALUE_CHANGED | +
Name | +jms:topic:EVENT.SERVICEORDER.ATTRCHANGED | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +BUGZILLA Service, CentralLog Service | +
Body | +Notification object. Can be one of ServiceOrderCreateNotification, ServiceOrderStateChangeNotification, ServiceOrderAttributeValueChangeNotification, ServiceOrderDeleteNotification, etc | +
Headers | +"eventid"=eventid, "objId"= objId | +
Description | +The Event of the Notification object contains the ServiceOrder object | +
Message | ++ |
---|---|
Alias | +EVENT_ALARM_CREATE | +
Name | +jms:topic:EVENT.ALARM.CREATE | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +OAS, BUGZILLA Service, CentralLog Service | +
Body | +AlarmCreateEvent | +
Headers | ++ |
Description | +The Event contains the Alarm object in payload | +
Message | ++ |
---|---|
Alias | +CATALOG_ADD_RESOURCE | +
Name | +jms:queue:CATALOG.ADD.RESOURCE | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +any | +
Body | +ResourceCreate | +
Headers | ++ |
Description | +The Body contains the ResourceCreate object to add | +
Message | ++ |
---|---|
Alias | +CATALOG_UPD_RESOURCE | +
Name | +jms:queue:CATALOG.UPD.RESOURCE | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +any | +
Body | +ResourceUpdate | +
Headers | +resourceid , propagateToSO | +
Description | +The Body contains the ResourceCreate object to update | +
Message | ++ |
---|---|
Alias | +CATALOG_GET_RESOURCE_BY_ID | +
Name | +jms:queue:CATALOG.GET.RESOURCE | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +any | +
Body | +resourceid | +
Headers | ++ |
Description | +The Body contains the ResourceCreate object to update | +
Message | ++ |
---|---|
Alias | +CATALOG_RESOURCES_OF_PARTNERS | +
Name | +jms:queue:CATALOG.GET.SERVICESOFPARTNERS | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +any | +
Body | +none | +
Headers | +none | +
Description | +retrieve all active services of partners | +
Message | ++ |
---|---|
Alias | +CATALOG_ADD_RESOURCESPEC | +
Name | +jms:queue:CATALOG.ADD.RESOURCESPEC | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +any | +
Body | +ResourceSpecificationCreate | +
Headers | ++ |
Description | +The Body contains the ResourceSpecificationCreate object to add | +
Message | ++ |
---|---|
Alias | +CATALOG_UPD_RESOURCESPEC | +
Name | +jms:queue:CATALOG.UPD.RESOURCESPEC | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +any | +
Body | +ResourceSpecificationUpdate | +
Headers | +resourceSpecId | +
Description | +The Body contains the ResourceSpecificationCreate object to update | +
Message | ++ |
---|---|
Alias | +CATALOG_GET_RESOURCESPEC_BY_ID | +
Name | +jms:queue:CATALOG.GET.RESOURCESPEC_BY_ID | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +any | +
Body | +resourceSpecid | +
Headers | ++ |
Description | +The Body contains the object id to find | +
Message | ++ |
---|---|
Alias | +CATALOG_UPDADD_RESOURCESPEC | +
Name | +jms:queue:CATALOG.UPDADD.RESOURCESPEC | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +any | +
Body | +resourceid | +
Headers | ++ |
Description | +The Body contains the ResourceSpecificationCreate object to update or create if not exist | +
Message | ++ |
---|---|
Alias | +EVENT_RESOURCE_CREATE | +
Name | +jms:topic:EVENT.RESOURCE.CREATE | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +BUGZILLA Service, CentralLog Service, other | +
Body | +Notification object. | +
Headers | +"eventid"=eventid, "objId"= objId | +
Description | +The Event of the Notification object contains the Resource object | +
Message | ++ |
---|---|
Alias | +EVENT_RESOURCE_STATE_CHANGED | +
Name | +jms:topic:EVENT.RESOURCE.STATECHANGED | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +BUGZILLA Service, CentralLog Service, other | +
Body | +Notification object. | +
Headers | +"eventid"=eventid, "objId"= objId | +
Description | +The Event of the Notification object contains the Resource object | +
Message | ++ |
---|---|
Alias | +EVENT_RESOURCE_DELETE | +
Name | +jms:topic:EVENT.SERVICE.RESOURCE | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +BUGZILLA Service, CentralLog Service, other | +
Body | +Notification object. | +
Headers | +"eventid"=eventid, "objId"= objId | +
Description | +The Event of the Notification object contains the Resource object | +
Message | ++ |
---|---|
Alias | +EVENT_RESOURCE_ATTRIBUTE_VALUE_CHANGED | +
Name | +jms:topic:EVENT.RESOURCE.ATTRCHANGED | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +BUGZILLA Service, CentralLog Service, other | +
Body | +Notification object. | +
Headers | +"eventid"=eventid, "objId"= objId | +
Description | +The Event of the Notification object contains the Resource object | +
Message | ++ |
---|---|
Alias | +CATALOG_GET_LCMRULE_BY_ID | +
Name | +jms:queue:CATALOG.GET.LCMRULE | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +any | +
Body | +lcmid | +
Headers | ++ |
Description | +The Body contains the LCMRuleSpec object | +
Message | ++ |
---|---|
Alias | +CATALOG_GET_LCMRULES_BY_SPECID_PHASE | +
Name | +jms:queue:CATALOG.GET.LCMRULES_BY_SPECID_PHASE | +
Type | +topic | +
Publishers | +TMF API | +
Consumers | +any | +
Body | ++ |
Headers | +header.servicespecid, header.phasename | +
Description | +The Body contains the LCMRuleSpec objects of the specific Service Spec and the specific phase | +
Message | ++ |
---|---|
Alias | +CATALOG_GET_SERVICETESTSPEC_BY_ID | +
Name | +jms:queue:CATALOG.GET.SERVICETESTSPEC_BY_ID | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +OSOM | +
Body | +specid | +
Description | +Return a ServiceTestSpecification | +
Message | ++ |
---|---|
Alias | +CATALOG_ADD_SERVICETEST | +
Name | +jms:queue:CATALOG.ADD.SERVICETEST | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +OSOM | +
Body | +ServiceTestCreate String json | +
Headers | +"orderid"=orderid, "serviceTestSpecid"= specid | +
Description | +Creates Service Test based an a Service Test Spec, Returns a ServiceTest object | +
Message | ++ |
---|---|
Alias | +CATALOG_UPD_SERVICETEST | +
Name | +jms:queue:CATALOG.UPD.SERVICETEST | +
Type | +queue | +
Destination | +TMF API service | +
Producers | ++ |
Body | +ServiceTestUpdate | +
Headers | +"serviceid" = serviceId, "propagateToSO" = true/false | +
Description | +will update a service test by id and return the service instance. If propagateToSO=true then any service change will be handled by OSOM. This is needed to be controlled in order to avoid update loops | +
Message | ++ |
---|---|
Alias | +CATALOG_GET_SERVICETEST_BY_ID | +
Name | +jms:queue:CATALOG.GET.SERVICETEST | +
Type | +queue | +
Destination | +TMF API service | +
Producers | +OSOM | +
Body | +String serviceID | +
Description | +returns a Service TEST instance | +
Message | ++ |
---|---|
Alias | +CRD_DEPLOY_CR_REQ | +
Name | +jms:queue:CRD.DEPLOY.CR_REQ | +
Type | +queue | +
Destination | +CRD service | +
Producers | +OSOM | +
Body | +CR spec as String | +
Headers | +related service id | +
Description | +Returns a String object containing deployment info | +
Message | ++ |
---|---|
Alias | +CRD_PATCH_CR_REQ | +
Name | +jms:queue:CRD.PATCH.CR_REQ | +
Type | +queue | +
Destination | +CRD service | +
Producers | +OSOM | +
Body | +CR as String | +
Headers | +related service id | +
Description | +Returns a String object containing PATCH info | +
Message | ++ |
---|---|
Alias | +CRD_DELETE_CR_REQ | +
Name | +jms:queue:CRD.DELETE.CR_REQ | +
Type | +queue | +
Destination | +CRD service | +
Producers | +OSOM | +
Body | +CR as String | +
Headers | +related service id | +
Description | +Returns a String object containing deletion info | +
See oauth
+Example: Get all vxfs (check the Authorization:Bearer
to be correct)
curl -H "Authorization:Bearer eybGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJhZG1pbiIsInNjb3BlIjpbIm9wZW5hcGkiLCJhZG1pbiIsInJlYWQiLCJ3cml0ZSJdLCJvcmdhbml6YXRpb24iOiJteW9yZ2FuaXp0aW9uIiwiZXhwIjoxNTcxOTI0MjU2LCJhdXRob3JpdGllcyI6WyJST0xFX01FTlRPUiIsIlJPTEVfQURNSU4iXSwianRpIjoiNzNkZmIxODEtNTMwOS00MmExLThkOWUtOGM3YmQ0YTE1YmU0IiwiY2xpZW50X2lkIjoib3NhcGlXZWJDbGllbnRJZE91dCJ9.Pj_hxnyMGhFhN8avU_DiAw1-LlcaIz5Hp9HNqalw-X4" http://localhost:13000/osapi/admin/vxfs
+
+Example response:
+[
+ {
+ "id": 1,
+ "owner": {
+ "id": 1,
+ "organization": "ee",
+ "name": "Portal Administrator",
+ "email": "",
+ "username": "admin",
+ "createdAt": null
+ },
+ "uuid": "a954daf2-16da-4b7e-ae42-4825936d453c",
+ "name": "cirros_vnfd",
+ "iconsrc": "/osapi/images/a954daf2-16da-4b7e-ae42-4825936d453c/cirros-64.png",
+ "shortDescription": "cirros_vnfd",
+ "longDescription": "Simple VNF example with a cirros",
+ "version": "1.0",
+ "packageLocation": "/osapi/packages/a954daf2-16da-4b7e-ae42-4825936d453c/cirros_vnf.tar.gz",
+ "dateCreated": 1568971426000,
+ "dateUpdated": 1568981107000,
+ "categories": [
+ {
+ "id": 3,
+ "name": "Service",
+ "productsCount": 1,
+ "appscount": 0,
+ "vxFscount": 1
+ },
+ {
+ "id": 2,
+ "name": "Networking",
+ "productsCount": 1,
+ "appscount": 0,
+ "vxFscount": 1
+ }
+ ],
+ "extensions": [],
+ "validationJobs": [],
+ "screenshots": "",
+ "vendor": "OSM",
+ "published": false,
+ "termsOfUse": null,
+ "descriptor": "vnfd-catalog:\n vnfd:\n - connection-point:\n - name: eth0\n type: VPORT\n description: Simple VNF example with a cirros\n id: cirros_vnfd\n logo: cirros-64.png\n mgmt-interface:\n cp: eth0\n name: cirros_vnfd\n short-name: cirros_vnfd\n vdu:\n - count: 1\n description: cirros_vnfd-VM\n id: cirros_vnfd-VM\n image: cirros034\n interface:\n - external-connection-point-ref: eth0\n name: eth0\n position: '1'\n type: EXTERNAL\n virtual-interface:\n bandwidth: '0'\n type: VIRTIO\n vpci: 0000:00:0a.0\n name: cirros_vnfd-VM\n vm-flavor:\n memory-mb: 512\n storage-gb: 1\n vcpu-count: 1\n vendor: OSM\n version: '1.0'\n",
+ "descriptorHTML": "<h3>cirros_vnfd</h3><br><b>Vendor: </b>OSM<br><b>Version: </b>1.0<br><b>Description: </b>Simple VNF example with a cirros<br><b>VM Count: </b>1<br><b>vCPU Count: </b>1<br><b>Memory: </b>512 MB<br><b>Storage: </b>1 GB<br>",
+ "certified": false,
+ "certifiedBy": null,
+ "validationStatus": "UNDER_REVIEW",
+ "packagingFormat": "OSMvFIVE",
+ "supportedMANOPlatforms": [
+ {
+ "id": 1,
+ "name": "osm fivee",
+ "version": "osm fivee",
+ "description": "osm five"
+ }
+ ],
+ "vxfOnBoardedDescriptors": [],
+ "vfimagesVDU": [
+ {
+ "id": 1,
+ "name": "cirros034",
+ "uuid": "d4549610-8abd-42ad-97f4-0a64e1c93977",
+ "shortDescription": "Automatically created during vxf cirros_vnfd submission. Owner must update.",
+ "packageLocation": null,
+ "publicURL": null,
+ "dateCreated": 1568971426000,
+ "dateUpdated": null,
+ "refVxFs": [
+ {
+ "id": 1,
+ "name": "cirros_vnfd"
+ }
+ ],
+ "owner": {
+ "id": 1,
+ "organization": "ee",
+ "name": "Portal Administrator",
+ "email": "",
+ "username": "admin",
+ "active": true,
+ "currentSessionID": null,
+ "apikey": "e41c1cc4-aa56-4b7e-9f4d-64589549d768",
+ "createdAt": 1568711859000,
+ "roles": [
+ "ADMIN",
+ "MENTOR"
+ ]
+ },
+ "published": false,
+ "termsOfUse": null,
+ "deployedInfrastructures": []
+ }
+ ]
+ },
+ {
+ "id": 2,
+ "owner": {
+ "id": 1,
+ "organization": "ee",
+ "name": "Portal Administrator",
+ "email": "",
+ "username": "admin",
+ "createdAt": null
+ },
+ "uuid": "4ab80095-a63e-4fe7-8598-e1c7e880706e",
+ "name": "cirros_sriov_vnfd",
+ "iconsrc": null,
+ "shortDescription": "cirros_sriov_vnf",
+ "longDescription": "Simple VNF example with a cirros SRIOV interface",
+ "version": "1.0",
+ "packageLocation": "/osapi/packages/4ab80095-a63e-4fe7-8598-e1c7e880706e/cirros_sriov.tar.gz",
+ "dateCreated": 1568971740000,
+ "dateUpdated": 1568981100000,
+ "categories": [
+ {
+ "id": 4,
+ "name": "tyu",
+ "productsCount": 1,
+ "appscount": 0,
+ "vxFscount": 1
+ },
+ {
+ "id": 5,
+ "name": "tyi",
+ "productsCount": 1,
+ "appscount": 0,
+ "vxFscount": 1
+ }
+ ],
+ "extensions": [],
+ "validationJobs": [],
+ "screenshots": "",
+ "vendor": "OSM",
+ "published": false,
+ "termsOfUse": null,
+ "descriptor": "vnfd:vnfd-catalog:\n vnfd:\n - connection-point:\n - name: eth0\n type: VPORT\n - name: eth1\n type: VPORT\n description: Simple VNF example with a cirros SRIOV interface\n id: cirros_sriov_vnfd\n logo: cirros-64.png\n mgmt-interface:\n cp: eth0\n name: cirros_sriov_vnf\n short-name: cirros_sriov_vnf\n vdu:\n - count: 1\n description: cirros_sriov_vnfd-VM\n guest-epa:\n cpu-pinning-policy: DEDICATED\n cpu-thread-pinning-policy: PREFER\n mempage-size: SMALL\n numa-node-policy:\n mem-policy: STRICT\n node:\n - id: '1'\n node-cnt: '1'\n id: cirros_sriov_vnfd-VM\n image: cirros-0.3.6-x86_64\n interface:\n - external-connection-point-ref: eth0\n name: eth0\n position: '1'\n type: EXTERNAL\n virtual-interface:\n bandwidth: '0'\n type: VIRTIO\n vpci: 0000:00:0a.0\n - external-connection-point-ref: eth1\n name: eth1\n position: '2'\n type: EXTERNAL\n virtual-interface:\n type: SR-IOV\n name: cirros_sriov_vnfd-VM\n vm-flavor:\n memory-mb: 4096\n storage-gb: 10\n vcpu-count: 4\n vendor: OSM\n version: '1.0'\n",
+ "descriptorHTML": "<h3>cirros_sriov_vnf</h3><br><b>Vendor: </b>OSM<br><b>Version: </b>1.0<br><b>Description: </b>Simple VNF example with a cirros SRIOV interface<br><b>VM Count: </b>1<br><b>vCPU Count: </b>1<br><b>Memory: </b>4096 MB<br><b>Storage: </b>10 GB<br>",
+ "certified": false,
+ "certifiedBy": null,
+ "validationStatus": "UNDER_REVIEW",
+ "packagingFormat": "OSMvFIVE",
+ "supportedMANOPlatforms": [
+ {
+ "id": 1,
+ "name": "osm fivee",
+ "version": "osm fivee",
+ "description": "osm five"
+ }
+ ],
+ "vxfOnBoardedDescriptors": [],
+ "vfimagesVDU": [
+ {
+ "id": 2,
+ "name": "cirros-0.3.6-x86_64",
+ "uuid": "be121176-1d62-4a1b-a3c1-7dce2e069d22",
+ "shortDescription": "Automatically created during vxf cirros_sriov_vnfd submission. Owner must update.",
+ "packageLocation": null,
+ "publicURL": null,
+ "dateCreated": 1568971740000,
+ "dateUpdated": null,
+ "refVxFs": [
+ {
+ "id": 2,
+ "name": "cirros_sriov_vnfd"
+ }
+ ],
+ "owner": {
+ "id": 1,
+ "organization": "ee",
+ "name": "Portal Administrator",
+ "email": "",
+ "username": "admin",
+ "active": true,
+ "currentSessionID": null,
+ "apikey": "e41c1cc4-aa56-4b7e-9f4d-64589549d768",
+ "createdAt": 1568711859000,
+ "roles": [
+ "ROLE_ADMIN",
+ "ROLE_MENTOR"
+ ]
+ },
+ "published": false,
+ "termsOfUse": null,
+ "deployedInfrastructures": []
+ }
+ ]
+ }
+]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Authentication is based on oAuth2. Our authentication service is a Keycloak server which is deployed with Openslice deployment
+API users needs to authenticate. +All APIs (except grant token request) must include Bearer token in request Authorization header.
+Get first an oauth token, using your username and password.
+curl -X POST http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/token -H 'Content-Type: application/x-www-form-urlencoded' -d 'username=demouser' -d 'password=demouser' -d 'grant_type=password' -d 'client_id=osapiWebClientId'
+
+response:
+ {"access_token":"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJHZFRjQnpxczg2VW10NTRVZV8ybTJyWHJkV3dzaWdSZE9EUldMYm1memNvIn0.eyJleHAiOjE1ODgyNDA1NzAsImlhdCI6MTU4ODI0MDI3MCwianRpIjoiOGI2ZTU0NWUtNDIyYy00NzFiLWEwN2UtYTUzYzY1NDQ0MzZmIiwiaXNzIjoiaHR0cDovL3BvcnRhbC5vcGVuc2xpY2UuaW8vYXV0aC9yZWFsbXMvb3BlbnNsaWNlIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImExYTI3NjVhLWVjODMtNDQ1Ni1iN2IyLTIwNzMxOTg2ZTAzNSIsInR5cCI6IkJlYXJlciIsImF6cCI6Im9zYXBpV2ViQ2xpZW50SWQiLCJzZXNzaW9uX3N0YXRlIjoiMzM1MGY0OTMtNjYyNy00MzczLTg1NDQtZGVmZDI3YWQzYzc0IiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6WyJodHRwOi8vbG9jYWxob3N0OjEzMDgyIiwiaHR0cDovL2xvY2FsaG9zdCIsImh0dHA6Ly9vcGVuc2xpY2UuaW8iLCJodHRwOi8vbG9jYWxob3N0OjEzMDAwIiwiaHR0cDovL2xvY2FsaG9zdDo0MjAwIiwiaHR0cDovL3BvcnRhbC5vcGVuc2xpY2UuaW8iXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIk5GVl9ERVZFTE9QRVIiLCJvZmZsaW5lX2FjY2VzcyIsInVtYV9hdXRob3JpemF0aW9uIiwiRVhQRVJJTUVOVEVSIiwiVVNFUiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoicHJvZmlsZSBlbWFpbCIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJkZW1vdXNlciJ9.TnzzpRLMD94UTKpT5_wkr1h4_3KUQmr4TGvFLpJ7cZx-Klrv8tB_eRkWnPqqzCAM9G21a1qXboL8MLMW8ECzG7HYKpobKOGr7LSczMOTdA2ZDyBCRUSOdW77pchu54tJ0ITEkFaDwSKMKKt04V_Sy4U-eIndj0XzzRlkDolWDnK4Z2lRaXAI6fMwOKx1Toa6RfOcemxtzl3pdtjPx92zo6MaKlbIqHK82lxdK0k8aQQaT6TmIrXbZKV2dU_1d3O0q0dVUEZJ_1kzwqOFkmxr9w0EnndC6ccYJlDAr_-GgUhhhNOn5v6tjYLUQdj5e4KEAsxIPzaCreK4un7mEAPmDw","expires_in":300,"refresh_expires_in":1800,"refresh_token":"eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIwZjUxMDk5Yy0wNTIzLTRjNGQtODM0Zi1iNDc0YzBjOTA1MzkifQ.eyJleHAiOjE1ODgyNDIwNzAsImlhdCI6MTU4ODI0MDI3MCwianRpIjoiZmViOTg5NWEtOTY5ZS00MzIzLWJjY2QtZTY2YzQ0NGE1MzJlIiwiaXNzIjoiaHR0cDovL3BvcnRhbC5vcGVuc2xpY2UuaW8vYXV0aC9yZWFsbXMvb3BlbnNsaWNlIiwiYXVkIjoiaHR0cDovL3BvcnRhbC5vcGVuc2xpY2UuaW8vYXV0aC9yZWFsbXMvb3BlbnNsaWNlIiwic3ViIjoiYTFhMjc2NWEtZWM4My00NDU2LWI3YjItMjA3MzE5ODZlMDM1IiwidHlwIjoiUmVmcmVzaCIsImF6cCI6Im9zYXBpV2ViQ2xpZW50SWQiLCJzZXNzaW9uX3N0YXRlIjoiMzM1MGY0OTMtNjYyNy00MzczLTg1NDQtZGVmZDI3YWQzYzc0Iiwic2NvcGUiOiJwcm9maWxlIGVtYWlsIn0.cDTx9BE1Df8EfGYm3VLr_MNFeymxZtJhMtlK7PVbIuk","token_type":"bearer","not-before-policy":1586797346,"session_state":"3350f493-6627-4373-8544-defd27ad3c74","scope":"profile email"}
+
+
+The access_token
will be used next as a Bearer.
curl http://portal.openslice.io/tmf-api/serviceCatalogManagement/v4/serviceCatalog -H 'Authorization: Bearer yJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJHZFRjQnpxczg2VW10NTRVZV8ybTJyWHJkV3dzaWdSZE9EUldMYm1memNvIn0.eyJleHAiOjE1ODgyNDA1MjQsImlhdCI6MTU4ODI0MDIyNCwianRpIjoiYjg0NGYxZDAtMzk3Mi00YTMyLThiMWEtZDAxMDY3OGZjMTQ4IiwiaXNzIjoiaHR0cDovL3BvcnRhbC5vcGVuc2xpY2UuaW8vYXV0aC9yZWFsbXMvb3BlbnNsaWNlIiwic3ViIjoiYTFhMjc2NWEtZWM4My00NDU2LWI3YjItMjA3MzE5ODZlMDM1IiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiYWRtaW4tY2xpIiwic2Vzc2lvbl9zdGF0ZSI6ImFmMmMzZmY1LTE4YWQtNDFkNC1hYTAyLTFlMGJkNzNmOTM5MSIsImFjciI6IjEiLCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwicHJlZmVycmVkX3VzZXJuYW1lIjoiZGVtb3VzZXIifQ.SMtgV1E44_K_MQumGXZtWsLGVhYNaoM8Pk-DiFIZtUP4Zu-ervOsxHVQMX1frgVERR4jJidBcSshy9TnJ3UjF4l33WujHltbs-1UPy-gaIufVuEpl8RmbjOti3Up70vLfLXbzb6kN6WaahgobWXlbJsSXXwaBPQP6vSX5KigCa8TmzXcuqom14lOrlU-RB2zQTlJ30p7d9ag-a7o3I5m9GZWLJCZW2UYMl1JkskTHKgilA8HFQY4C9DYwWu8YDMyzqQSNumrTlURalBFidFbZvb1kp4dAyct8TysSWSbxxiwaL2RX1PWUqk-5Fpc1Q6BnBC8muMheiukFuoSkuADAg'^C
+ubuntu@portal:~$ curl http://portal.openslice.io/tmf-api/serviceCatalogManagement/v4/serviceCatalog -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJHZFRjQnpxczg2VW10NTRVZV8ybTJyWHJkV3dzaWdSZE9EUldMYm1memNvIn0.eyJleHAiOjE1ODgyNDA1NzAsImlhdCI6MTU4ODI0MDI3MCwianRpIjoiOGI2ZTU0NWUtNDIyYy00NzFiLWEwN2UtYTUzYzY1NDQ0MzZmIiwiaXNzIjoiaHR0cDovL3BvcnRhbC5vcGVuc2xpY2UuaW8vYXV0aC9yZWFsbXMvb3BlbnNsaWNlIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImExYTI3NjVhLWVjODMtNDQ1Ni1iN2IyLTIwNzMxOTg2ZTAzNSIsInR5cCI6IkJlYXJlciIsImF6cCI6Im9zYXBpV2ViQ2xpZW50SWQiLCJzZXNzaW9uX3N0YXRlIjoiMzM1MGY0OTMtNjYyNy00MzczLTg1NDQtZGVmZDI3YWQzYzc0IiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6WyJodHRwOi8vbG9jYWxob3N0OjEzMDgyIiwiaHR0cDovL2xvY2FsaG9zdCIsImh0dHA6Ly9vcGVuc2xpY2UuaW8iLCJodHRwOi8vbG9jYWxob3N0OjEzMDAwIiwiaHR0cDovL2xvY2FsaG9zdDo0MjAwIiwiaHR0cDovL3BvcnRhbC5vcGVuc2xpY2UuaW8iXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIk5GVl9ERVZFTE9QRVIiLCJvZmZsaW5lX2FjY2VzcyIsInVtYV9hdXRob3JpemF0aW9uIiwiRVhQRVJJTUVOVEVSIiwiVVNFUiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoicHJvZmlsZSBlbWFpbCIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJkZW1vdXNlciJ9.TnzzpRLMD94UTKpT5_wkr1h4_3KUQmr4TGvFLpJ7cZx-Klrv8tB_eRkWnPqqzCAM9G21a1qXboL8MLMW8ECzG7HYKpobKOGr7LSczMOTdA2ZDyBCRUSOdW77pchu54tJ0ITEkFaDwSKMKKt04V_Sy4U-eIndj0XzzRlkDolWDnK4Z2lRaXAI6fMwOKx1Toa6RfOcemxtzl3pdtjPx92zo6MaKlbIqHK82lxdK0k8aQQaT6TmIrXbZKV2dU_1d3O0q0dVUEZJ_1kzwqOFkmxr9w0EnndC6ccYJlDAr_-GgUhhhNOn5v6tjYLUQdj5e4KEAsxIPzaCreK4un7mEAPmDw'
+
+Response:
+
+
+[{"uuid":"9e186cd5-b2b2-4a06-b1d6-895720193bc9","lastUpdate":"2020-03-11T23:19:05Z","@baseType":"BaseEntity","@schemaLocation":null,"@type":"ServiceCatalog","href":null,"name":"Example Facility Services","description":"Example Facility Services","lifecycleStatus":"Active","version":"1.0","validFor":{"endDateTime":"2039-11-20T23:07:21Z","startDateTime":"2019-11-20T23:07:21Z"},"relatedParty":null,"id":"9e186cd5-b2b2-4a06-b1d6-895720193bc9","category":[{"@baseType":"org.etsi.osl.tmf.scm633.model.ServiceCategoryRef","@schemaLocation":null,"@type":"org.etsi.osl.tmf.scm633.model.ServiceCategoryRef","href":null,"name":"Generic Services","@referredType":null,"id":"98b9adf1-a1d6-4165-855f-153ddc2131b1"},{"@baseType":"org.etsi.osl.tmf.scm633.model.ServiceCategoryRef","@schemaLocation":null,"@type":"org.etsi.osl.tmf.scm633.model.ServiceCategoryRef","href":null,"name":"External","@referredType":null,"id":"08ffdb3c-6237-45d0-9f3a-d43b5fc5f0b6"},{"@baseType":"org.etsi.osl.tmf.scm633.model.ServiceCategoryRef","@schemaLocation":null,"@type":"org.etsi.osl.tmf.scm633.model.ServiceCategoryRef","href":null,"name":"eMBB","@referredType":null,"id":"ef2c90dd-b65e-4a9f-a9c3-427c9fb0219b"}]}]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OSOM is a service responsible for:
+It uses open source Flowable Business process engine (https://www.flowable.org) .
+A Service Order follows the states as defined in TMF641 specification:
+ +When a new order is created, it goes into the Initial state. It is stored in the repository and triggers an Event.
+ +Administrators are notified usually from the Ticketing System of a new order. They login to Openslice and change the State of the order either to ACKNOWLEDGED or REJECTED. If ACKNOWLEDGED they can Propose a startDate, add Notes, and add any additional service items
+A process checks every 1 minute for ACKNOWLEDGED orders.
+ + +It retrieves all orders that are in ACKNOWLEDGED state and if the start date is in time it will initialize the process by settingn the order in IN_PROGRESS state. Finally the Start Order Process will start.
+This process for now is a draft simple prototype to make a simple orchestration via NFVO. Here the actual Services (TMF638/640 model) are created and attached to Service Order and Service Inventory.
+ + +We expect here to check which tasks can be orchestrated by NFVO and which by human. We create the equivalent Services(TMF638/640 model) for this order.
+There will be two instances of task "User Task Manual Complete Service" each for Services S_C1 and S_C2. The task is Transient for now. It displays only the services that are not automated! +Here is a flow for future:
+There will be an instance of NFVODeploymentRequest process each for Service S_R1. (see later)
+All services in "Order Complete" are in a status:
+A Service follows the states as defined in TMF638 Service Inventory specification:
+ +This process is related with the NFVO orchestration +It will send a msg to NFVO(s?) for a specific deployment request +Then it checks the deployment status. It will wait 30 secs each time until the deployment is running (or failed)
+Every 1 minute the "Check In Progress Orders" process is executed checking if a supported Service changed state (i.e. to ACTIVE) then the whole Order will change state (e.g. go to COMPLETED)
+ +This process contains tasks for submitting order requests to external partners. +- Submit Order To External Service Provider Task: This task creates automatically a Service Order request to a 3rd party provider SO that hosts the Service Specification +- Check external service order fulfillment task: This task Check external partner for Service creations and updates our local inventory of services the service characteristics of remote Service Inventory
+Every 2 minutes the "fetchPartnerServicesProcess" process is executed checking remote Partner Organizations for changes in the published catalogues. +The Fetch and Update External Partner Services Task is executed in paralle l for each Partner Organization
+This process handles automatically services that need to be further orchestrated or processed by OSOM. For example, for a CFS Bundled service we create such automated service instances that just aggregate the underlying services.
+ + + + + + + + + + + + + +PLease check the complete specification here.
+See oauth
+Example: Get all Service Catalogs (check the Authorization:Bearer
to be correct)
curl -H "Authorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJhZG1pbiIsInNjb3BlIjpbIm9wZW5hcGkiLCJhZG1pbiIsInJlYWQiLCJ3cml0ZSJdLCJvcmdhbml6YXRpb24iOiJteW9yZ2FuaXp0aW9uIiwiZXhwIjoxNTc4NTA1MDcyLCJhdXRob3JpdGllcyI6WyJST0xFX01FTlRPUiIsIlJPTEVfQURNSU4iXSwianRpIjoiMTFlNGYxYTUtZDY0Ny00YzA1LWE0ZGMtYWFhYzUyMjk4YzMwIiwiY2xpZW50X2lkIjoib3NhcGlXZWJDbGllbnRJZE91dCJ9.gm7cKdusDrdMRkxEiFU5sENKGRC1xwVj2SgPRmE9xxx" -H "accept: application/json;charset=utf-8" -X GET "http://portal.openslice.io/tmf-api/serviceCatalogManagement/v4/serviceCatalog"
+
+
+response:
+[
+ {
+ "uuid": "9e186cd5-b2b2-4a06-b1d6-895720193bc9",
+ "lastUpdate": "2019-12-19T10:45:55Z",
+ "@baseType": "BaseEntity",
+ "@schemaLocation": null,
+ "@type": "ServiceCatalog",
+ "href": null,
+ "name": "Example Facility Services",
+ "description": "Example Facility Services",
+ "lifecycleStatus": "Active",
+ "version": "1.0",
+ "validFor": {
+ "endDateTime": "2039-11-20T23:07:21Z",
+ "startDateTime": "2019-11-20T23:07:21Z"
+ },
+ "relatedParty": null,
+ "id": "9e186cd5-b2b2-4a06-b1d6-895720193bc9",
+ "category": [
+ {
+ "@baseType": "org.etsi.osl.tmf.scm633.model.ServiceCategoryRef",
+ "@schemaLocation": null,
+ "@type": "org.etsi.osl.tmf.scm633.model.ServiceCategoryRef",
+ "href": null,
+ "name": "eMBB",
+ "@referredType": null,
+ "id": "ef2c90dd-b65e-4a9f-a9c3-427c9fb0219b"
+ },
+ {
+ "@baseType": "org.etsi.osl.tmf.scm633.model.ServiceCategoryRef",
+ "@schemaLocation": null,
+ "@type": "org.etsi.osl.tmf.scm633.model.ServiceCategoryRef",
+ "href": null,
+ "name": "Generic Services",
+ "@referredType": null,
+ "id": "98b9adf1-a1d6-4165-855f-153ddc2131b1"
+ }
+ ]
+ }
+]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+