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

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

    Scheduled Pinned Locked Moved Entwicklung
    3 Posts 2 Posters 370 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.
    • M Offline
      mommersa
      last edited by mommersa

      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

      1 Reply Last reply Reply Quote 0
      • Michael HuhnM Offline
        Michael Huhn
        last edited by Michael Huhn

        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

        1 Reply Last reply Reply Quote 0
        • M Offline
          mommersa
          last edited by

          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

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