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

    JSON-RPC-API Erstellung von IPv4 nicht vollständig möglich

    Scheduled Pinned Locked Moved Entwicklung
    4 Posts 2 Posters 1.1k Views 1 Watching
    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.
    • T Offline
      thaefner
      last edited by

      Hallo zusammen.

      Ich nutze die Version 1.6.2-PRO von i-doit und beschäftige mich zurzeit mit der JSON-RPC-API um Daten von aus einer komplexen Datenbank (welche in erster Linie Serverdaten beinhaltet) direkt an die cmdb schicken und speichern zu können.

      Das Erstellen und Aktualisieren von Objekten funktioniert auch soweit, allerdings bringt mir der folgende Call Probleme:

      {
          "version": "2.0",
          "method": "cmdb.category.create",
          "params": {
              "apikey": my_apikey,
              "category": "C__CATG__IP",
              "objID": 40,   
              "data": {
                  "net_type": "1",
                  "net": "20",
                  "hostname":  "Test-IP",
                  "description": "Test Beschreibung",
                  "ipv4_address": "192.168.1.2",
                  "ipv4_assignment": "2",
                  "primary": "1",
                  "active": "1",
                  "dns_server": "30", 
                  "dns_domain": "test-domain",
                  "use_standard_gateway": "1"
                  }       
              },
          "id": "1"
      }
      
      

      Kommentiere ich die Parameter "dns_server" sowie "dns_domain" aus, erhalte ich eine "SUCCESS"-Meldung und die Aktualisierung wird vorgenommen. Ist jedoch mindesens einer der beiden dabei, erhalte ich diese Meldung:

      {
          "error": {
              "code": -32602, 
              "data": {
                  "error": "Object id invalid. ID must be positive and higher than two."
              }, 
              "message": "Invalid parameters"
          }, 
          "id": "1", 
          "jsonrpc": "2.0"
      }
      
      

      Die objekt-ID des Ziels bleibt unverändert. Da auch die ID-Nummern der Parameter "net", "ipv4_assignment" etc. korrekt erfasst werden, schließe ich einen parse-Fehler ebenfalls aus.
      Da ich für viele Objekte gern den dazugehörigen DNS-Server sowie die Domäne erfassen möchte, hoffe ich auf Hilfe.

      Viele Grüße
      Tobias

      thaefner is using i-doit v1.7.5 PRO

      1 Reply Last reply Reply Quote 0
      • J Offline
        jkondek
        last edited by

        Hallo Tobias,

        zumindest beim Eintragen des DNS Servers erhalte ich keinen Fehler.
        Als ID muss allerdings die aus der IP-Liste genommen werden. Also nicht die Objekt-ID Deines DNS Servers, sondern die des IP-Eintrages Deines Servers.

        Mit der DNS Domain funktioniert es bei mir noch nicht, ich probier aber noch weiter aus…

        Gruss,
        jkondek

        1 Reply Last reply Reply Quote 0
        • T Offline
          thaefner
          last edited by

          Hallo jkondek,

          vielen Dank für die schnelle Hilfe. Das Setzen des DNS-Servers ist nun auch bei mir erfolgreich. Da habe ich wohl den Parameter fehlinterpretiert…

          Viele Grüße,
          Tobias

          thaefner is using i-doit v1.7.5 PRO

          1 Reply Last reply Reply Quote 0
          • J Offline
            jkondek
            last edited by

            Hallo Tobias,

            ich habe das Problem mit der DNS Domain jetzt auch geloest. Der Eintrag in der API Doku ist falsch:

            Feldname: DNS Domäne
            Key: dns_domain
            Datentyp: int
            Referenz: isys_catg_ip_list__id
            Optional: Ja

            Die korrekte Referenz ist isys_net_dns_domain__id, der Datentyp muss array sein:
            array_unique() expects parameter 1 to be array, integer given (/var/www/idoit/src/classes/modules/cmdb/dao/category/global/isys_cmdb_dao_category_g_ip.class.php:1501

            Du musst also erst die richtige ID aus der Tabelle isys_net_dns_domain auswaehlen (d.h. die DNS Domains muessen bereits vorhanden sein oder zuvor angelegt werden) und diese dann als array uebergeben, schon sollte es auch bei Dir funktionieren. 😉

            Gruss,
            jkondek

            1 Reply Last reply Reply Quote 0
            • First post
              Last post