Community
    • Categories
    • Recent
    • Popular
    • Users
    • Search
    • Register
    • Login

    I-Doit API Update Sub Kategorien (z.B C__CATG__VERSION)

    Scheduled Pinned Locked Moved Entwicklung
    3 Posts 2 Posters 522 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • L Offline
      lewando
      last edited by lewando

      Hallo zusammen,

      ich suche derzeit eine Möglichkeit Subkategorien zu aktualisieren, wie etwa "C__CATG__VERSION". Hintergrund ist, dass ich gerne dynamisch das OS System aktualisieren möchte (samt Versionsnummer), diese aber nicht übernommen wird. Beziehungweise, die Versionsnummer wird nur dann übernommen, wenn diese zuvor im DialogPlus Feld hinterlegt wurde.

      Auszug aus der API Beschreibung:
      7784d455-6be1-4546-bcd5-13388d467e42-grafik.png

      Beim Versuch einen Eintrag des Betriebssystems zu aktualisieren

      - name: update os information in CMDB
        shell: |
          curl -s --noproxy "*" --location --request POST 'https://idoit/i-doit/src/jsonrpc.php' \
          --header 'Content-Type: application/json' \
          --header "X-RPC-Auth-Session: {{ idoit_session_key }}" \
          --header "Cookie: PHPSESSID= {{ idoit_session_key }}" \
          --data-raw '{
              "version": "2.0",
              "method": "cmdb.category.save",
              "params": {
                  "object": "{{  idoit_object_id }}",
                  "entry": "",
                  "data": {
                      "application": "{{ os_idoit_id }}",
                      "application_type": "",
                      "assigned_license": "",
                      "assigned_license_key": "",
                      "assigned_it_service": "",
                      "assigned_variant": "{{ ansible_distribution_release }}",
                      "assigned_version": "{{ ansible_distribution_version }}",
                      "assigned_databases": "",
                      "description": "Auto created by API"
                  },
                  "category": "C__CATG__OPERATING_SYSTEM",
                  "apikey": "{{ idoit_api_key }}",
                  "language": "en"
              },
              "id": 1
            }'
        args:
          warn: false
        delegate_to: 127.0.0.1
        when:
          - "os_idoit_id is defined"
      

      Musste ich jedoch feststellen, dass der Wert zwar korrekt dem Request hinzugefügt wird (hier als String) jedoch nicht gespeichert wird.

      changed: [idoit] => {"changed": true, "cmd": "curl -s --noproxy \"*\" --location --request POST 'https://idoit/i-doit/src/jsonrpc.php' --header 'Content-Type: application/json' --header \"X-RPC-Auth-Session: u501nrtoo270p04ceuakpmetgc\" --header \"Cookie: PHPSESSID= u501nrtoo270p04ceuakpmetgc\" --data-raw '{\n    \"version\": \"2.0\",\n    \"method\": \"cmdb.category.save\",\n    \"params\": {\n        \"object\": \"11571\",\n        \"entry\": \"\",\n        \"data\": {\n            \"application\": \"1702\",\n            \"application_type\": \"\",\n            \"assigned_license\": \"\",\n            \"assigned_license_key\": \"\",\n            \"assigned_it_service\": \"\",\n            \"assigned_variant\": \"Core\",\n            \"assigned_version\": \"7.8\",\n            \"assigned_databases\": \"\",\n            \"description\": \"Auto created by API\"\n        },\n        \"category\": \"C__CATG__OPERATING_SYSTEM\",\n        \"apikey\": \"XzpV1ejX9ungCUW6K2dT\",\n        \"language\": \"en\"\n    },\n    \"id\": 1\n  }'\n", "delta": "0:00:00.290924", "end": "2020-10-07 13:10:15.218418", "rc": 0, "start": "2020-10-07 13:10:14.927494", "stderr": "", "stderr_lines": [], "stdout": "{\"id\":1,\"jsonrpc\":\"2.0\",\"result\":{\"success\":true,\"message\":\"Category entry successfully saved\",\"entry\":444}}", "stdout_lines": ["{\"id\":1,\"jsonrpc\":\"2.0\",\"result\":{\"success\":true,\"message\":\"Category entry successfully saved\",\"entry\":444}}"]}
      

      In der Beschreibung der Kategorie wird darauf verwiesen, dass sich assigned_version auf einen bereits existierenden Wert beziehen muss. Ich habe in der Doku jedoch noch keinen Hinweis darauf gefunden, wie ich diesen Wert über die API hinterlegen kann.

      Vielleicht könnt ihr mir hier weiterhelfen?

      Gruß
      Lewando

      1 Reply Last reply Reply Quote 0
      • F Offline
        franknagel
        last edited by franknagel

        Ich habe mal grob über den idoit Code der mir vorliegt geguckt. Bitte versuchen, ob es mit

                        "assigned_version": "Version {{ ansible_distribution_version }}",
        

        besser funktioniert. Falls ja, können Sie einen Bug Report bei synetics einwerfen.

        Hintergrund: idoit versucht hier eine Fallunterscheidung:

        • Integer -> DB primary key, welcher bestehenden Eintrag referenziert
        • String -> Wert, wie er angezeigt werden soll, für den evtl. automatisch ein neuer Eintrag in der DB erzeugt wird

        Durch Verwendung von PHP is_numeric gelingt die Fallunterscheidung nicht sauber und der erste Fall wird irrtümlich getriggert ohne ordentliche Fehlerbehandlung im Folgenden.

        Grundsätzlich kann bei assigned_variant das gleiche passieren, Sie haben nur Glück, dass der Wert bei Ihnen nicht numerisch ist.

        1 Reply Last reply Reply Quote 0
        • L Offline
          lewando
          last edited by lewando

          @franknagel :
          Gute Idee, ich hab das direkt mal ausprobiert und es scheint ähnlich zu sein, wie von ihnen beschrieben.

          Ändere ich den POST, wie in ihrem Beispiel zu sehen ist, bekommt I-Doit mit, das ein neuer Wert geschrieben werden soll
          f55bf09b-9485-4771-937e-9c7745d9f310-grafik.png

          Dieser wird beim Objekt jedoch nicht übernommen.
          9f8d6d34-f485-4d0a-be5a-4a2649b78637-grafik.png

          Sieht für mich auf den ersten Blick wirklich nach einem Bug aus, oder?

          Edit: einen Bug Report habe ich hierzu ebenfalls mal eröffnet.

          1 Reply Last reply Reply Quote 0
          • F franknagel referenced this topic on
          • First post
            Last post