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



  • 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


  • i-doit Kenner

    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



  • 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


  • i-doit Kenner

    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


Log in to reply
 

Looks like your connection to Community was lost, please wait while we try to reconnect.