Provides a flexible and secure way for deploying and managing various RIC xApp applications.
Action URL Method Deploy /ric/v1/xapps POST Undeploy /ric/v1/xapps/{xappName} DELETE Query Xapp Status /ric/v1/xapps/{xappName} GET Query Xapp Instance Status /ric/v1/xapps/instances/{xappName} GET Query All Xapp Status /ric/v1/xapps GET Health Check /ric/v1/health GET
Action URL Method Add A Subscription /ric/v1/subscriptions POST Update A Subscription /ric/v1/subscriptions/{id} PUT Delete A Subscription /ric/v1/subscriptions/{id} DELETE Get A Subscription /ric/v1/subscriptions GET Get All Subscriptions /ric/v1/subscriptions/{id} GET
TBD later
Make sure that following tools are properly installed and configured
# Run following command. Make sure that mdclog is installed and found in the standard library path make docker-build
# Run following command make test
# Now run the xApp manager build/appmgr -f config/appmgr.yaml
make docker-run
# Deploy a new xApp instance with the name 'dummy-xapp' curl -H "Content-Type: application/json" -X POST http://172.17.0.3:8080/ric/v1/xapps -d '{"name": "dummy-xapp"}'
# Query the status of all xApp applications curl -H "Content-Type: application/json" http://localhost:8080/ric/v1/xapps % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 95 100 95 0 0 95000 0 --:--:-- --:--:-- --:--:-- 95000 [ { "name": "dummy-xapp", "status": "DEPLOYED", "version": "1.0", "instances": [ { "name": "dummy-xapp-8984fc9fd-8jq9q", "status": "Running", "ip": "10.99.213.161", "port": 80, "txMessages": "[]", "rxMessages": "[]" }, { "name": "dummy-xapp-8984fc9fd-zq47z", "status": "Running", "ip": "10.99.213.161", "port": 80, "txMessages": "[]", "rxMessages": "[]" }, { "name": "dummy-xapp-8984fc9fd-zzxjj", "status": "Running", "ip": "10.99.213.161", "port": 80, "txMessages": "[]", "rxMessages": "[]" } ] } ]
# Query the status of a sigle xApp (using the xApp name) curl -H "Content-Type: application/json" http://localhost:8080/ric/v1/xapps/dummy-xapp % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 95 100 95 0 0 95000 0 --:--:-- --:--:-- --:--:-- 95000 { "name": "dummy-xapp", "status": "DEPLOYED", "version": "1.0", "instances": [ { "name": "dummy-xapp-8984fc9fd-8jq9q", "status": "Running", "ip": "10.99.213.161", "port": 80, "txMessages": "[]", "rxMessages": "[]" }, { "name": "dummy-xapp-8984fc9fd-zq47z", "status": "Running", "ip": "10.99.213.161", "port": 80, "txMessages": "[]", "rxMessages": "[]" }, { "name": "dummy-xapp-8984fc9fd-zzxjj", "status": "Running", "ip": "10.99.213.161", "port": 80, "txMessages": "[]", "rxMessages": "[]" } ] }
# Query the status of a sigle xApp instance (using the xApp instance name) curl -H "Content-Type: application/json" http://localhost:8080/ric/v1/xapps/dummy-xapp % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 95 100 95 0 0 95000 0 --:--:-- --:--:-- --:--:-- 95000 { "name": "dummy-xapp-8984fc9fd-8jq9q", "status": "Running", "ip": "10.99.213.161", "port": 80, "txMessages": "[]", "rxMessages": "[]" }
# Undeploy xApp by name curl -H "Content-Type: application/json" -X DELETE http://localhost:8080/ric/v1/xapps/dummy-xapp
# Health Check using CURL curl -H "Content-Type: application/json" http://10.244.1.47:8080/ric/v1/health --verbose * Trying 10.244.1.47... * TCP_NODELAY set * Connected to 10.244.1.47 (10.244.1.47) port 8080 (#0) > GET /ric/v1/health HTTP/1.1 > Host: 10.244.1.47:8080 > User-Agent: curl/7.58.0 > Accept: */* > Content-Type: application/json > < HTTP/1.1 200 OK < Content-Type: application/json < Date: Sun, 24 Mar 2019 11:13:59 GMT < Content-Length: 0 < * Connection #0 to host 10.244.1.47 left intact
# Add a new subscription curl -H "Content-Type: application/json" http://172.17.0.3:8080/ric/v1/subscriptions -X POST -d '{"maxRetries": 3, "retryTimer": 5, "eventType":"Created", "targetUrl": "http://192.168.0.12:8088/"}' % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 169 100 70 100 99 17500 24750 --:--:-- --:--:-- --:--:-- 56333 { "id": "1ILBltYYzEGzWRrVPZKmuUmhwcc", "version": 0, "eventType": "Created" }
# List all subscriptions curl -H "Content-Type: application/json" http://172.17.0.3:8080/ric/v1/subscriptions % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 259 100 259 0 0 252k 0 --:--:-- --:--:-- --:--:-- 252k [ { "id": "1ILBZTtEVVtQmIZnh1OJdBP7bcR", "targetUrl": "http://192.168.0.12:8088/", "eventType": "Created", "maxRetries": 3, "retryTimer": 5 }, { "id": "1ILBltYYzEGzWRrVPZKmuUmhwcc", "targetUrl": "http://192.168.0.12:8088/", "eventType": "Created", "maxRetries": 3, "retryTimer": 5 } ]
# Get a specific subscription by Id curl -H "Content-Type: application/json" http://172.17.0.3:8080/ric/v1/subscriptions/1ILBZTtEVVtQmIZnh1OJdBP7bcR % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 128 100 128 0 0 125k 0 --:--:-- --:--:-- --:--:-- 125k { "id": "1ILBZTtEVVtQmIZnh1OJdBP7bcR", "targetUrl": "http://192.168.0.12:8088/", "eventType": "Created", "maxRetries": 3, "retryTimer": 5 }
# Delete a specific subscription by Id curl -H "Content-Type: application/json" http://172.17.0.3:8080/ric/v1/subscriptions/1ILBZTtEVVtQmIZnh1OJdBP7bcR -X DELETE % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
# Example of subscription notification POSTed to targetUrl provided by the client { "id": "1ILBltYYzEGzWRrVPZKmuUmhwcc", "version": 0, "eventType": "Created", "xapp": { "name": "dummy-xapp", "status": "DEPLOYED", "version": "1.0", "instances": [ { "name": "dummy-xapp-8984fc9fd-lh7r2", "status": "ContainerCreating", "ip": "10.104.73.185", "port": 80, "txMessages": "[]", "rxMessages": "[]" }, { "name": "dummy-xapp-8984fc9fd-lzrdk", "status": "Pending", "ip": "10.104.73.185", "port": 80, "txMessages": "[]", "rxMessages": "[]" }, { "name": "dummy-xapp-8984fc9fd-xfjcn", "status": "Pending", "ip": "10.104.73.185", "port": 80, "txMessages": "[]", "rxMessages": "[]" } ] } }
Run command appmgrcli help for short usage instructions, or read the script source; the instructions can be found as plain text near the beginning.
Unlike direct curl commands, using the appmgrcli validates some of the parameters, and there is usually less to type...
The host and port where the xapp manager is running are given by options -h and -p, or you can define environment variables APPMGR_HOST and APPMGR_PORT to specify them (recommended). The following examples assume they have been specified.
# Deploy a xapp $ appmgrcli deploy dummy-xapp { "name": "dummy-xapp", "status": "DEPLOYED", "version": "1.0", "instances": [ { "name": "dummy-xapp-667dfc9bfb-wd5m9", "status": "Pending", "ip": "", "port": 0, "txMessages": "", "rxMessages": "" } ] } # Undeploy $ appmgrcli undeploy dummy-xapp dummy-xapp undeployed # Add some subscriptions $ appmgrcli subscriptions add https://kukkuu.reset created 500 600 { "id": "1IoQqEI24sPfLkq8prmMqk6Oz1I", "version": 0, "eventType": "created" } $ appmgrcli subscriptions add https://facebook.com all 10 4 { "id": "1IoR85ZwgiNiIn82phUR6qJmBvq", "version": 0, "eventType": "all" } # list and delete (also shows using abbreviations): $ appmgrcli subs list [ { "id": "1IoQqEI24sPfLkq8prmMqk6Oz1I", "targetUrl": "https://kukkuu.reset", "eventType": "created", "maxRetries": 500, "retryTimer": 600 }, { "id": "1IoR85ZwgiNiIn82phUR6qJmBvq", "targetUrl": "https://facebook.com", "eventType": "all", "maxRetries": 10, "retryTimer": 4 } ] $ appmgrcli subs del 1IoR85ZwgiNiIn82phUR6qJmBvq Subscription 1IoR85ZwgiNiIn82phUR6qJmBvq deleted $ appmgrcli subs list [ { "id": "1IoQqEI24sPfLkq8prmMqk6Oz1I", "targetUrl": "https://kukkuu.reset", "eventType": "created", "maxRetries": 500, "retryTimer": 600 } ]
Todo