Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Purpose


 The purpose of SNIRO Emulator is to mock SNIRO homing functionality,  which can be used to demo use cases.

  It consists of a HTTP server that we could connect to as we would to an actual web service.


Set up

SNIRO emulator is built using microservices architecture to support portability and evolution. It is built based on wiremock testing tool wireMock.

It is deployed as dedicated docker container either using OOM based kubernetes deployment or as an additional container inside Robot VM using Heat template deployment technique.

  1.  OOM based deployment
    Since emulator is not core component of ONAP, it is not included in the list of all components that are deployed by "all" option of OOM oneclick/createALL.bash script.
    In order to run it, one should explicitly deploy is using "-a" option :  

  2. Heat based deployment

          SNIRO emulator container is added into Robot VM  and exposed at the port 8080

          It will be up and running automatically once Robot VM is spun up

Using emulator

Admin API Reference  

The server provides various admin API to handle stubbing.

 The API can be viewed through swagger page:

http://<ROBOT_VM_HOST>:8080/__admin/swagger-ui/

Some of the most useful APIs:

Some of the useful APIs are:

/__admin/mappings

GET /__admin/mappings --> Gets all defined mappings

POST /__admin/mappings --> Create a new stub mapping

GET /__admin/mappings/{guid} --> Get a single stub mapping


/__admin/requests

POST /__admin/requests/count --> Count requests logged in the journal matching the specified criteria

POST /__admin/mappings/reset --> Reset stub mappings (restore to defaults defined back the backing store)


Stubbing the server via Robot Framework


The following steps are needed to stub emulator server to be able to respond for Rest-API calls originated in SO:

Create Session alias=session url=${SNIRO_EMULATOR_URL}

${body} Get File Template/sniro_data/sniro_stub_request.json

${sniro_stub_response} Post Request alias=session uri=/__admin/mappings data=${body}


sniro_stub_request contains the following mapping:

{
  "request" : {
    "urlPath" : "/sniro/api/v2/placement",
    "method" : "POST"
  },
  "response" : {
    "status" : 202,
    "body": "{\"requestId\": \"1111-111-11\"}"
  },
  "postServeActions" : {
    "webhook" : {
      "headers" : {
        "Content-Type" : "application/json"
      },
      "method" : "POST",
      "base64Body" : "ew0KICAidHJhbnNhY3Rpb25JZCI6ICIxMTEtMTExLTExMTEiLA0KICAicmVxdWVzdElkIjogIjExMS0xMTEtMTExMSIsDQogICJyZXF1ZXN0U3RhdGUiOiAiY29tcGxldGUiLA0KICAic3RhdHVzTWVzc2FnZSI6ICIiLA0KICAic29sdXRpb25JbmZvIjogew0KICAgICJwbGFjZW1lbnQiOiBbDQogICAgICB7DQogICAgICAgICJzZXJ2aWNlUmVzb3VyY2VJZCI6ICI2MWQ1NjNlOC1lNzE0LTQzOTMtOGY5OS1jYzQ4MDE0NGEwNWUiLA0KICAgICAgICAicmVzb3VyY2VNb2R1bGVOYW1lIjogIlR1bm5lbFhDb25uIiwNCiAgICAgICAgImludmVudG9yeVR5cGUiOiAic2VydmljZSIsDQogICAgICAgICJzZXJ2aWNlSW5zdGFuY2VJZCI6ICJHTXV4SW5mcmEgVVVJRCIsDQogICAgICAgICJjbG91ZFJlZ2lvbklkIjogIiIsDQogICAgICB9LA0KICAgICAgew0KICAgICAgICAic2VydmljZVJlc291cmNlSWQiOiAiOTFkNTYzZTgtZTcxNC00MzkzLThmOTktY2M0ODAxNDRhMDVlIiwNCiAgICAgICAgInJlc291cmNlTW9kdWxlTmFtZSI6ICJ2RyIsDQogICAgICAgICJpbnZlbnRvcnlUeXBlIjogImNsb3VkIiwNCiAgICAgICAgInNlcnZpY2VJbnN0YW5jZUlkIjogIiIsDQogICAgICAgICJjbG91ZFJlZ2lvbklkIjogImRhMTAyIiwNCiAgICAgIH0sDQogICAgICB7DQogICAgICAgICJzZXJ2aWNlUmVzb3VyY2VJZCI6ICI3MWQ1NjNlOC1lNzE0LTQzOTMtOGY5OS1jYzQ4MDE0NGEwNWUiLA0KICAgICAgICAicmVzb3VyY2VNb2R1bGVOYW1lIjogIkJSRyIsDQogICAgICAgICJpbnZlbnRvcnlUeXBlIjogInNlcnZpY2UiLA0KICAgICAgICAic2VydmljZUluc3RhbmNlSWQiOiAiQlJHX0VNVV9VVUlEIiwNCiAgICAgICAgImNsb3VkUmVnaW9uSWQiOiAiIg0KICAgICAgfQ0KICAgIF0NCiAgfQ0KfQ==",
      "url" : "https://{{mso_ip}}:8080/adapters/rest/SDNCNotify/SNIROResponse"
    }
  }
}


 The above base64Body encoded value represents the following call back request:

{
  "transactionId": "111-111-1111",
  "requestId": "111-111-1111",
  "requestState": "complete",
  "statusMessage": "",
  "solutionInfo": {
    "placement": [
      {
        "serviceResourceId": "61d563e8-e714-4393-8f99-cc480144a05e",
        "resourceModuleName": "TunnelXConn",
        "inventoryType": "service",
        "serviceInstanceId": "${GMuxInfra UUID}",
        "cloudRegionId": "",
      },
      {
        "serviceResourceId": "91d563e8-e714-4393-8f99-cc480144a05e",
        "resourceModuleName": "vG",
        "inventoryType": "cloud",
        "serviceInstanceId": "",
        "cloudRegionId": "${cloud_region_id}",
      },
      {
        "serviceResourceId": "71d563e8-e714-4393-8f99-cc480144a05e",
        "resourceModuleName": "BRG",
        "inventoryType": "service",
        "serviceInstanceId": "${BRG_EMU_UUID}",
        "cloudRegionId": ""
      }
    ]
  }
}