Ändern einer Hostadresse per API mit cmdb.category.save



  • Hallo zusammen,

    ich möchte gerne die Hostadresse ändern mittels cmdb.category.save. Davor habe ich die Funktion cmdb.category.update bzw. .create verwendet und wollte nun mein Skript umstellen.

    Der erste Aufruf zum Erstellen der IP lautet:

    {
        "method": "cmdb.category.save",
        "params": {
            "object": 204
            "data": {
                "net": 2110,
                "active": 1,
                "ipv4_address": "10.12.2.1",
                "ipv4_assignment": 2
            },
            "apikey": "1234567890",
            "category": "C__CATG__IP"
        },
        "id": "1",
        "jsonrpc": "2.0"
    }
    

    Das funktioniert auch soweit. Wenn ich aber den Aufruf auf die gleiche IP mit z.B. einer Beschreibung ausführe bekomme ich die nachfolgende Meldung.

    Aufruf:

    {
        "method": "cmdb.category.save",
        "params": {
            "object": 204,
            "data": {
                "net": 2110,
                "active": 1,
                "ipv4_address": "10.12.2.1",
                "ipv4_assignment": 2,           
                "description": "kk",
                "category_id": 705    
            },
            "apikey": "1234567890",
            "category": "C__CATG__IP"
        },
        "id": "1",
        "jsonrpc": "2.0"
    }
    

    Meldung:

    {
        "ipv4_address": "The selected IP-address is already being used in \"host123\" (#204)."
    }
    

    Was im Prinzip korrekt ist, aber ich möchte ja den Datensatz erweitern.

    Kann mit hierbei bitte jemand weiterhelfen?

    Vielen Dank vorab und viele Grüße
    Sascha Mommert



  • Hallo @mommersa,

    wenn du die save Methode verwendest und es sich um Multi-value Einträge handelt brauchst du die EntryID die du beim erstellen des Eintrages als Rückmeldung bekommst.

    Zuerst erstelle ich den Eintrag mit:

    {
        "version": "2.0",
        "method": "cmdb.category.save",
        "params": {
    			"object": 1122502404,
                            "category": "C__CATG__IP",
    			"data": {
                "net": 1122502812,
                "active": 1,
                "ipv4_address": "10.12.2.1",
                "ipv4_assignment": 2
    			},
            "apikey": "h3md6u3y",
            "language": "en"
        },
        "id": 1
    }
    

    Als Antwort bekomme ich die EntryID:

    {
      "id": 1,
      "jsonrpc": "2.0",
      "result": {
        "success": true,
        "message": "Category entry successfully saved",
        "entry": 5606
      }
    }
    

    Die EntryID verwende ich dann beim nächsten mal um das Netz für diesen Eintrag zu ändern:

    {
        "version": "2.0",
        "method": "cmdb.category.save",
        "params": {
    			"object": 1122502404,
                            "category": "C__CATG__IP",
    			"entry":5606,
    			"data": {
                "net": 1122500421,
                "active": 1,
                "ipv4_address": "10.12.2.1",
                "ipv4_assignment": 2
    			},
            "apikey": "h3md6u3y",
            "language": "en"
        },
        "id": 1
    }
    

    Hoffe das hilft dir dabei etwas weiter.
    Ansonsten schau mal in der Knowledge Base HIER bzw. in den Subkategorien der API nach.

    mfg Micha



  • Hallo Micha,

    vielen Dank für den Hinweis mit dem Parameter "EntryID"! Ich hatte noch "Category_ID" von cmdb.category.update verwendet.

    Wenn ich nun aber zum Beispiel die Description des Eintrags ändern möchte meckert er immer noch dass die IP bereits vergeben ist .

    1. Anlegen der IP -> Entry 709
    {
        "method": "cmdb.category.save",
        "params": {
            "object": 204,
            "data": {
                "net": 2110,
                "active": 1,
                "ipv4_address": "192.168.16.15",
                "ipv4_assignment": 2,
                "description": "hallo"
            },
            "apikey": "1234567890abc",
            "category": "C__CATG__IP"
        },
        "id": "1",
        "jsonrpc": "2.0"
    }
    
    -- ------- ------
    1  2.0     @{success=True; message=Category entry successfully saved; entry=709}
    
    1. Ändern der Description -> Fehler
    {
        "method": "cmdb.category.save",
        "params": {
            "object": 204,
            "entry": 709,
            "data": {
                "net": 2110,
                "active": 1,
                "ipv4_address": "192.168.16.15",
                "ipv4_assignment": 2,
                "description": "hallo2"
            },
            "apikey": "1234567890abc",
            "category": "C__CATG__IP"
        },
        "id": "1",
        "jsonrpc": "2.0"
    }
    
    -- ------- -----
    1  2.0     @{code=-32603; message=Internal error: There was a validation error: ipv4_address(text): The selected IP-address is already being used in "hostABC" (#204).; data=}
    

    Hat sich das Verhalten bei der save-Methode im Vergleich zu update verändert? Bei Update konnte ich immer die IP mitgeben. Wenn ich die IP-Adresse nicht angebe in der Anfrage funktioniert es aber so müsste ich immer zuerst in einer Abfrage prüfen ob die IP noch stimmt.

    Ich habe in den Experteneinstellungen auch schon die Validierung testweise abgeschaltet aber es ist das gleiche Ergebnis.

    Viele Grüße
    Sascha


Log in to reply
 


Datenschutz / Privacy Policy