[ CoyoteKG @ 04.09.2019. 14:40 ] @
Zapucao sam pa ajd da napisem celu ideju, mozda je neko slicno nesto nekad radio.

Sa jedne strane imam SAP HANA, sa druge Redis. Treba da pretabam neke podatke iz neke tebele iz HANA u Redis.
Za to imam 3 strima u kafki, i 2 querija.

Strimove ne mogu da dropujem dok ne uradim terminate query-ja, a mora i nekim redosledom jer strimovi kao svoj source koriste druge strimove.
Hoću to da automatizujem sa ansible.

Ne mogu da hardkodujem tako sto cu u varijablu da dam ime query-ja, posto prilikom kreiranja dobijaju neki sufix u obliku broja.

Ideja mi ja da procitam prvo sve querije, izvucem njihov ID, i onda na osnovu tog ID opet pomocu REST da uradim terminate.

Response uz pomoc curl ili Postman je ovakav
Code:
[
    {
        "@type": "queries",
        "statementText": "SHOW queries;",
        "queries": [
            {
                "sinks": [
                    "SAPHANA_STOCK_SOURCE_PROCESSED"
                ],
                "id": "CSAS_SAPHANA_STOCK_SOURCE_PROCESSED_2",
                "queryString": "CREATE STREAM SAP_HANA.......;"
            },
            {
                "sinks": [
                    "REDIS_SAPHANA_STOCK_STREAM"
                ],
                "id": "CSAS_REDIS_SAPHANA_STOCK_STREAM_3",
                "queryString": "CREATE STREAM REDIS_SAP_HANA.......;"
            }
        ]
    }
]


Kad sa Ansible ovako pozovem taj API
Code:
- hosts: localhost
  tasks:
  - name: Get Stream queries
    uri:
      url: http://10.10.10.10:8088/ksql
      method: POST
      body:
        ksql: SHOW QUERIES;
        streamsProperties:
      return_content: yes
      status_code: 200
      body_format: json
      return_content: yes
    register: getqueries
  - name: Get content
    debug:
      var: getqueries


i uradim debug da mi prikaze registrovani response, dobijem ovo
Code:
TASK [Get content] *********************************************************************************************************************************************************************
ok: [localhost] => {
    "getqueries": {
        "changed": false,
        "connection": "close",
        "content": "[{\"@type\":\"queries\",\"statementText\":\"SHOW QUERIES;\",\"queries\":[{\"sinks\":[\"SAPHANA_STOCK_SOURCE_COMPOSITEKEY\"],\"id\":\"CSAS_SAPHANA_STOCK_SOURCE_COMPOSITEKEY_2\",.............,
        "content_type": "application/vnd.ksql.v1+json",
        "cookies": {},
        "date": "Wed, 04 Sep 2019 13:07:57 GMT",
        "failed": false,
        "msg": "OK (unknown bytes)",
        "redirected": false,
        "server": "Jetty(9.4.18.v20190429)",
        "status": 200,
        "url": "http://10.10.10.10:8088/ksql",
        "vary": "Accept-Encoding, User-Agent"
    }
}


Response mi spakuje u contect, i sta god sam pokusao da uradim nisam uspeo da izvucem id spakujem u neku listu.
Pokusao sam i sa json_query i regex, i json filterom ali nisam uspeo, verovatno jer ovo u content je sve jedan value i nije json format.

Jer ako pokusam sa

Code:
  - name: Get content
    debug:
        var: getqueries.content[3]



TASK [Get content] *********************************************************************************************************************************************************************
ok: [localhost] => {
"getqueries.content[3]": "@"
}

Dobijem @ sto i jeste 4. karakter is content value.
Je l' postoji mogucnost da sa tim Ansible uri modulom registrujem samo ovo sto je iz content pa da mi to bude u json formatu.
Ili da li mogu ovo sto je u content da naknadno prebacim u json koji bih mogao da parsiram.
Ili neka treca ideja.
[ CoyoteKG @ 04.09.2019. 14:54 ] @
hmmm... ne vidim šumu od drveta. Zalepio sam se za uri, mogu umesto njega da koristim curl i možda rezultat spakujem u json.
Forum mi dođe kao
https://en.wikipedia.org/wiki/Rubber_duck_debugging
:D