Here's the list of requirements that need to be met at each of the components for the homing call from SO to succeed for the vCPE use case.
Requirements from the downstream dependencies
AAI
Data needed
- vGMuxInfra (run the vcpe flows that create the vGMuxInfra)
- list of Cloud regions, one of which should have the vGMuxInfra
MultiCloud
Data needed
Policy
Policy models to be created:
Policies to be uploaded:
- vG demand
vGMuxInfra demand
- objective function (distance)
- colocation constraint
HAS
OSDF
Requirements for Functional Features
HPA
- upload HPA policies into policy framework
Capacity checks
- upload Capacity check policy into policy framework
Sequence of actions (how to..)
- Deploy OOF
- HEAT:
- Go to the OOF VM
- Run /opt/oof_vm_init.sh - this will pull the docker images and install OSDF + HAS, and perform the required configurations to pass the healthcheck.
- OOM:
- HEAT:
- populate the cloud region data into AAI
- upload the policies into policy framework
Run the vcpe flows that create the vGMuxInfra
vCPE use case standalone testing on a single machine
Goal: Running the vCPE use case of the Beijing release of ONAP in a local setup, with minimal hardware and software requirements.
The work should be done in the ONAP MUSIC and ONAP HAS repositories with tag 2.0.0-ONAP.
Prerequisites
- Install Docker CE, an example tutorial can be found here.
Make local copies of the HAS and MUSIC repos
HAS and MUSIC install$ cd "your workspace" $ git clone https://gerrit.onap.org/r/music $ cd music $ git checkout 2.0.0-ONAP $ cd ../ $ git clone https://gerrit.onap.org/r/optf/has $ cd has $ git checkout 2.0.0-ONAP
- (Optional) Install Insomnia REST API client for handling REST requests. Some prepared requests and variables are available can be imported to Insomnia. Importable to Insomnia:
- (Optional) For advanced debugging of the inter-component communication use Wireshark
Installation and Configuration
Build and start A&AI simulator
$ cd ~/has/conductor/conductor/tests/functional/simulators $ ./build_aaisim.sh $ ./run_aaisim.sh
Note: DNS name resolution issue may arise during building the simulator, because it needs the **web** Python package. TBD: Provide more detailed instructions. How does one there is an issues? what can one do about it?
- Verify A&AI Simulator (Hint: in examples, 0.0.0.0 is IPAddress of A&AI container as per $ docker container ls)
- $ docker container ls
- expected result: image names should include: aaisim
- $ curl http://0.0.0.0:8081/healthcheck
- expected result: {"status": "success"}
- $ curl http://0.0.0.0:8081/aai/v13/cloud-infrastructure/cloud-regions/
- expected result: {"cloud-region": [{"group-assignments": ...much more...
- Build and start MUSIC
- Configure access to MUSIC:
Edit music/distribution/dockermusic/music.sh to change user/password:
```text -CASS_USERNAME=cassandra1 -CASS_PASSWORD=cassandra1 +CASS_USERNAME=conductor +CASS_PASSWORD=c0nduct0r ```
Edit music/distribution/dockermusic/properties/music.properties to change user/password:
```text -cassandra.user=cassandra1 -cassandra.password=cassandra1 +cassandra.user=conductor +cassandra.password=c0nduct0r ```
Build and start MUSIC containers
$ cd ~//music/distribution/dockermusic $ ./music.sh start
- Verify MUSIC components
- $ docker container ls
- expected result: image names should include: music-tomcat, music-zk, music-war, music-db
- Build and Start HAS
- Configure HAS
- Edit has/conductor.conf
search for [music_api]
```text -server_url = http://localhost:8080/MUSIC/rest/v2 +server_url = http://<<IP address of 'music-tomcat' container>>:8080/MUSIC/rest/v2 ```
- search for [aai]
```text -server_url = https://aai.api.simpledemo.onap.org:8443/aai +server_url = http://<<IP address of 'aaisim' container>>:8081/aai ```
- Hint: find IPAddress of containers via:
- $ docker container ls
- look at first term in PORTS column
- Configure HAS
- Onboard the HAS "conductor" application into MUSIC,
E.g.:
$ curl -X POST -H 'Content-Type: application/json' \ -d '{"appname" : "conductor","userId": "conductor","password": "c0nduct0r","isAAF": false}' \ 0.0.0.0:8080/MUSIC/rest/v2/admin/onboardAppWithMusic
- expected result: {"Generated AID":"2895db7e-2746-426a-822f-80c367161c65","Success":"Your application conductor has been onboarded with MUSIC."}
- Start the HAS containers
- $ cd ~/has
- $ ./run-dockers.sh
- Verify HAS components
- $ docker container ls
- expected result: image names should include: data, reservation, solver, api, controller
- At this moment a $ docker ps or $ docker container ls commands should have an output similar to the following
- Example output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d140b3aa2590 nexus3.onap.org:10003/onap/optf-has:latest "python /usr/local/b…" 13 minutes ago Up 13 minutes 8091/tcp data a64620643678 nexus3.onap.org:10003/onap/optf-has:latest "python /usr/local/b…" 13 minutes ago Up 13 minutes 8091/tcp reservation 343c987ee6d0 nexus3.onap.org:10003/onap/optf-has:latest "python /usr/local/b…" 13 minutes ago Up 13 minutes 8091/tcp solver ee3ebd3ef924 nexus3.onap.org:10003/onap/optf-has:latest "python /usr/local/b…" 13 minutes ago Up 13 minutes 0.0.0.0:8091->8091/tcp api 47ed0c49a6ae nexus3.onap.org:10003/onap/optf-has:latest "python /usr/local/b…" 13 minutes ago Up 13 minutes 8091/tcp controller 140da6ee2808 tomcat:8.5 "catalina.sh run" 36 minutes ago Up 36 minutes 0.0.0.0:8080->8080/tcp music-tomcat 15553a52e3ae zookeeper:3.4 "/docker-entrypoint.…" 36 minutes ago Up 36 minutes 0.0.0.0:2181->2181/tcp, 0.0.0.0:2888->2888/tcp, 0.0.0.0:3888->3888/tcp music-zk 08c89e0fff47 nexus3.onap.org:10001/onap/music/music:latest "tail -f /dev/null" 36 minutes ago Up 36 minutes music-war 3387e50c4135 nexus3.onap.org:10001/onap/music/cassandra_music:latest "docker-entrypoint.sh" 36 minutes ago Up 36 minutes 0.0.0.0:7000-7001->7000-7001/tcp, 0.0.0.0:7199->7199/tcp, 0.0.0.0:9042->9042/tcp, 0.0.0.0:9160->9160/tcp music-db 9cafc8ddfdd1 aaisim "/bin/sh -c 'python …" 42 minutes ago Up 42 minutes 0.0.0.0:8081->8081/tcp aaisim
Running
Send vCPE homing template to HAS, E.g.
$ curl -X POST --user admin1:plan.15 -H 'Content-Type: application/json' \
-d @homing.json localhost:8091/v1/plansHint: homing.json may be created by conjoining
{ "name": "vCPE homing Beijing 2.0.0-ONAP", "template": <<HAS Homing Specification (R')>> }
where HAS Homing Specification (R') = https://wiki.onap.org/display/DW/vCPE+Homing+Use+Case
Hint: for username:password (--user above) see ~/conductor.conf, conductor_api section
ISSUE_1: At this point a request sent to the MUSIC fails with the error:
request to MUSIC sent by the controller: PUT /MUSIC/rest/v2/keyspaces/conductor_rpc/tables/controller/rows?id=<<Some UUID>>
MUSIC's reply: "Exception thrown while doing the critical put, check sanctity of the row/conditions:\nnull"
- The produced HTTP stream between `controller` and MUSIC captured with Wireshark:
Contact
Please if you have anything to add to or ask about this tutorial, contact me: balazs.nemeth__AT__tmit.bme.hu