X-Git-Url: https://git.teslayout.com/public/public/public/?p=anna.git;a=blobdiff_plain;f=INSTALL_ADML_HTTP.md;h=e3aa9aed7e71fcce9cc93d2cc0eeca88716d8150;hp=785c4dda77eb2ec0ecd7c81db9afb4ffcfc7f1d5;hb=HEAD;hpb=af14877201a9856708ec43086a229777d9cb3da7 diff --git a/INSTALL_ADML_HTTP.md b/INSTALL_ADML_HTTP.md index 785c4dd..e3aa9ae 100644 --- a/INSTALL_ADML_HTTP.md +++ b/INSTALL_ADML_HTTP.md @@ -2,20 +2,88 @@ ## Deployment -Execute 'example/diameter/launcher/deploy-adml-http.sh' and follow instructions. +Execute this [script](./example/diameter/launcher/deploy-adml-http.sh [Variant: Release by default]) and follow instructions. -## Enabling HTTP2 Service +## Building docker image -This is done through nginx proxy configured as reverse proxy to translate `HTTP2` traffic coming to port *8074* towards *localhost* port *8000* where `ADML HTTP` is going to serve the *HTTP1.1* Rest Service. +In our image, we enable the `HTTP2 Service` to attack the `HTTP1.1 ADML interface`. This is done through nginx proxy configured as reverse proxy to translate `HTTP2` traffic coming to port *8074* towards *localhost* port *8000* where `ADML HTTP` is going to serve the *HTTP1.1* Rest Service. To build the docker image, execute this script: -> tools/build-adml-http [variant: [Release]|Debug] +> tools/build-anna-adml-http [variant: [Release]|Debug] ## Running docker image -> docker run --rm -d --network host --name adml-http anna-adml-http: +> docker run --rm -d -p 8074:8074 --name anna-adml-http anna-adml-http: [entrypoint arguments: <[ft]|st>] -## Monitoring ADML traces +Entrypoint arguments are passed to ADML start script (`/opt/adml/start.sh` inside the container), and are mainly preconfigured variants for `ADML` command-line arguments. So, `ft` stands for `function test` (debug traces, traffic logs in real time, etc.) and `st` is `system test` (warning level for traces, no traffic logs dumped, etc.). + +Service port is **8074**. + +## Basic operations + +### Monitoring ADML traces + +> docker exec -it anna-adml-http tail -F /opt/adml/launcher.trace + +### Checking available diameter dictionaries + +> docker exec -it anna-adml-http ls -1 /opt/adml/stacks +> +> DictionaryGx.16777238.xml +> DictionaryRx.16777236.xml +> DictionarySy.16777302.xml +> diameter_base.0.xml + +### Configure diameter nodes + +You may use the *REST API* to load diameter services into *ADML*. This is the way to load stacks and nodes (origin hosts) in order to be up and running. + +For example, consider an Origin-Host acting as diameter client with the name: **afHost.afRealm.com** and also a node named **ownHostId.operatorRealm.com** acting as diameter server, both using the *Rx interface* ( **/stacks/DictionaryRx.16777236.xml)**. You could configure any number of stacks/nodes to setup different diameter interfaces even having proxy/relay/translation capabilities. + +You could load any number of services given by this [file specification](./example/diameter/launcher/resources/services_examples/services.dtd). Also, you could configure a single file and load together all the needed elements, for example: + +`` + `` + `` + `` +`` + +The REST API works with json format, then we shall use the [xml2json.py](./example/diameter/launcher/resources/rest_api/helpers/diameterJsonHelper/xml2json.py) tool to convert the previous one and insert on a node called "**servicesJson**": + +> { +> **"servicesJson": {** +> "services": { +> "node": [ +> { +> "@applicationId": "16777236", +> "@entity": "localhost:3868", +> "@originHost": "afHost.afRealm.com" +> }, +> { +> "@applicationId": "16777236", +> "@diameterServer": "localhost:3868", +> "@diameterServerSessions": "1", +> "@originHost": "ownHostId.operatorRealm.com" +> } +> ], +> "stack": { +> "@dictionary": "stacks/DictionaryRx.16777236.xml", +> "@fixMode": "Always", +> "@id": "16777236", +> "@ignoreFlagsOnValidation": "yes" +> } +> } +> **}** +> } + +Then, you could load the former *services.json* file: + +> nghttp -v -H ":method: POST" -d services.json http://localhost:8074/services + + + +## Component Test + +Read [this](./example/diameter/launcher/resources/rest_api/README.md). -> docker exec -it adml-http tail -F /opt/adml/launcher.trace \ No newline at end of file