Community
    • Categories
    • Recent
    • Popular
    • Users
    • Search
    • Register
    • Login
    1. Home
    2. hu
    3. Posts
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 6
    • Posts 13
    • Groups 0

    Posts

    Recent Best Controversial
    • Custom Category mittels API erstellen

      Liebe Alle,

      leider finde ich im Netz und auch in der Doku nichts darüber, wie man eine Custom Category (also eine selbstdefinierte Category) mittels API anlegt.

      Kann mir bitte jemand auf die Sprünge helfen. Lieber Gruß, hu

      posted in Entwicklung
      huH
      hu
    • RE: Kabelverbindung via API erstellen

      @jakob : sehr gerne 🙂

      posted in Entwicklung
      huH
      hu
    • RE: JSON-RPC: zwei Patchpanels mit einem Kabel verbinden

      ... ich beantworte es mir an dieser Stelle einfach mal selber, damit anderen evtl. geholfen sein möge:

      → zwei Patchpanels mit einem Trunk verbinden

      posted in Entwicklung
      huH
      hu
    • Beziehung löschen

      Liebe Liste,

      könnt Ihr mir einen Tipp geben, wie man eine implizite Beziehung in I-Doit löscht, ohne dass verwaiste Einträge in der CMDB zurückbleiben. D.h. konkret, wie man z.B. ein zuvor in ein Rack eingebautes Patchpanel wieder ausbaut.
      Der Einbau von HUtest_PATCHPANEL_11 in das Rack HUtest_RACK_03 (Vorderseite, horizontal, HE 3) wurde von der API so quitiert:

      {
          "assign patchpanel to rack": {
              "id": 1,
              "jsonrpc": "2.0",
              "result": {
                  "success": true,
                  "message": "Category entry successfully saved",
                  "entry": 5935
              }
          },
          "set assembly, insertion and position in rack": {
              "id": 1,
              "jsonrpc": "2.0",
              "result": {
                  "success": true,
                  "message": "Category entry successfully saved",
                  "entry": 5935
              }
          }
      }
      

      Ist es ausreichend die ID 5935 zu entfernen und mit welchem API-Request erhalte ich für ein eingebautes Patchpanel die entsprechende ID?

      Lieber Gruß, hu

      posted in Entwicklung
      huH
      hu
    • RE: Kabelverbindung via API erstellen
      DICT_CATEGORYUPDATE   = {
                                  'method':   'cmdb.category.save',
                                  'params': {
                                      'object':   0,
                                      'category': 'C__CATG__CONNECTOR',
                                      'entry':    0,
                                      'data':     {},
                                      'apikey':   IDOIT_API_LOGIN.IDOIT_API_KEY,
                                      'language': 'de'
                                  },
                                  'id': 1,
                                  'version': '2.0'
                              }
      
      • sorted_ports_1 enthält eine Liste mit Port-IDs der "linken" Ports.
      • sorted_ports_2 enthält eine Liste mit Port-IDs der "rechten" Ports.
      • cables enthält eine Liste mit Kabel-IDs zum Verbinden.
      • OBJID_PATCHPANEL_01 enthält die ID des erstbeteiligten Objektes (in diesem Fall ein Patchpanel)
      if len(sorted_ports_1) == len(sorted_ports_2) == len(cables):
          print('\ncreating ', len(cables), ' cable connections ...')
          ARRAY_OF_DICT_CATEGORYUPDATE = [{}] * len(cables)
          for index in range(len(cables)):
              print('\nindex = ', index)
              ARRAY_OF_DICT_CATEGORYUPDATE[index]                                         = copy.deepcopy(DICT_CATEGORYUPDATE)
              ARRAY_OF_DICT_CATEGORYUPDATE[index]['params']['object']                     = OBJID_PATCHPANEL_01
              ARRAY_OF_DICT_CATEGORYUPDATE[index]['params']['entry']                      = sorted_ports_1[index]['id']
              ARRAY_OF_DICT_CATEGORYUPDATE[index]['params']['data']['assigned_connector'] = sorted_ports_2[index]['id']
              ARRAY_OF_DICT_CATEGORYUPDATE[index]['params']['data']['cable_connection']   = cables[index]['id']
              ARRAY_OF_DICT_CATEGORYUPDATE[index]['id']                                   = index
      

      Und ab damit:

      API_RETURN  = requests.post(IDOIT_API_LOGIN.IDOIT_API_URL, json=ARRAY_OF_DICT_CATEGORYUPDATE, headers=IDOIT_API_HEADER_AUTHENTICATED)
      
      posted in Entwicklung
      huH
      hu
    • Response [504] nach umpfangreichem Batch-Request

      Hallo Community,

      wenn ich umfangreiche Batcht-Requests an die I-Doit API sende, erhalte ich teilweise anscheinend Timeouts.

      API_RETURN  = requests.post(IDOIT_API_URL, json=ARRAY_OF_DICT_OBJECTDELETE, headers=IDOIT_API_HEADER_AUTHENTICATED, timeout=600) 
      print(API_RETURN)
      # <Response [504]>
      

      Error 504 zeigt üblicherweise einen Timeout an. Kann mir jemand beantworten, wie man den Timeout I-Doit-API-seitig hoch setzen kann, damit ich den Batch-Request nicht auf kleine Päckchen verteilen muss?

      Lieber Gruß & danke für Eure Hilfe, hu

      posted in Entwicklung
      huH
      hu
    • JSON-RPC: zwei Patchpanels mit einem Kabel verbinden

      Ausgangssituation:

      1.) Es sollen 2 Patchpanels mittels API erstellt werden, die jeweils der Einfachheit halber nur einen Ein- und Ausgang besitzen.
      2.) Es soll ein Kabel erstellt werden.
      3.) Die beiden Patchpanels sollen mittels des Kabels verbunden werden.

      Bisher erfolgreich gelöst:

      1a.) Erstellung des ersten Patchpanels

      Schritt 1: Erstellung des Patchpanels HUtest_PATCHPANEL_01 und aller input-ports.

      request:

      data = {
          "method": "cmdb.object.create",
          "params": {
              "type": "C__OBJTYPE__PATCH_PANEL",
              "title": "HUtest_PATCHPANEL_01",
              "description": "virtual Test-Panel",
              "categories": {
                  "C__CATG__GLOBAL": [  
                      {
                          "category": "TEST",
                          "purpose": "Test"
                      }
                  ],
                  "C__CATG__CONNECTOR": [
                      {
                          "title": "P-1-1",
                          "type": 1,
                          "connection_type": 16,
                          "description": "P-1-1 Eingang"
                      }
                  ]
              },
              "apikey": "0815",
              "language": "de"
          },
          "id": 1,
          "version": "2.0"
      }
      

      answer:

      API_RETURN =  {
          "id": 1,
          "jsonrpc": "2.0",
          "result": {
              "id": 50158,
              "message": "Object was successfully created",
              "categories": {
                  "C__CATG__GLOBAL": [
                      "50155"
                  ],
                  "C__CATG__CONNECTOR": [
                      53756
                  ]
              },
              "success": true
          }
      }
      

      Schritt 2: Erstellung aller output-ports und sibbling zu den entsprechenden input ports.

      request:

      data =  {
          "method": "cmdb.category.save",
          "params": {
              "object": 50158,
              "category": "C__CATG__CONNECTOR",
              "data": {
                  "title": "P-1-1",
                  "type": 2,
                  "connection_type": 12,
                  "connector_sibling": 53756,
                  "description": "P-1-1 Ausgang"
              },
              "apikey": "0815",
              "language": "de"
          },
          "id": 1,
          "version": "2.0"
      }
      

      answer:

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

      1b.) Erstellung des zweiten Patchpanels

      Schritt 1: Erstellung des Patchpanels HUtest_PATCHPANEL_02 und aller input-ports.

      request:

      data =  {
          "method": "cmdb.object.create",
          "params": {
              "type": "C__OBJTYPE__PATCH_PANEL",
              "title": "HUtest_PATCHPANEL_02",
              "description": "virtual Test-Panel",
              "categories": {
                  "C__CATG__GLOBAL": [
                      {
                          "category": "TEST",
                          "purpose": "Test"
                      }
                  ],
                  "C__CATG__CONNECTOR": [
                      {
                          "title": "P-1-1",
                          "type": 1,
                          "connection_type": 16,
                          "description": "P-1-1 Eingang"
                      }
                  ]
              },
              "apikey": "0815",
              "language": "de"
          },
          "id": 1,
          "version": "2.0"
      }
      

      answer:

      API_RETURN =  {
          "id": 1,
          "jsonrpc": "2.0",
          "result": {
              "id": 50159,
              "message": "Object was successfully created",
              "categories": {
                  "C__CATG__GLOBAL": [
                      "50156"
                  ],
                  "C__CATG__CONNECTOR": [
                      53758
                  ]
              },
              "success": true
          }
      }
      

      Schritt 2: Erstellung aller output-ports und sibbling zu den entsprechenden input ports.

      request:

          "method": "cmdb.category.save",
          "params": {
              "object": 50159,
              "category": "C__CATG__CONNECTOR",
              "data": {
                  "title": "P-1-1",
                  "type": 2,
                  "connection_type": 12,
                  "connector_sibling": 53758,
                  "description": "P-1-1 Ausgang"
              },
              "apikey": "0815",
              "language": "de"
          },
          "id": 1,
          "version": "2.0"
      }
      
      

      answer:

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

      2.) Erstellung des Kabels K-HUtest-001

      request:

      data =  {
          "method": "cmdb.object.create",
          "params": {
              "type": "C__OBJTYPE__CABLE",
              "title": "K-HUtest-001-1",
              "description": "virtual Cable",
              "apikey": "0815",
              "language": "de"
          },
          "id": 1,
          "version": "2.0"
      }
      

      answer:

      API_RETURN =  {
          "id": 1,
          "jsonrpc": "2.0",
          "result": {
              "id": 50160,
              "message": "Object was successfully created",
              "success": true
          }
      }
      
      

      Hier scheitere ich bisher:

      3.) Die beiden Patchpanels mittels des Kabels verbinden.

      Weder der Versuch über die Methode cmdb.category.save noch über die Methode cmdb.category.update war von Erfolg gekrönt. Hier meine Version von cmdb.category.update.
      Ich vermute, dass ich mit meinem Ansatz an dieser Stelle auf dem Holzweg bin. Leider komme ich mit der Dokumentation der API nicht gut zurecht.

      request:

          "method": "cmdb.category.update",
          "params": {
              "objID": "50158",
              "category": "C__CATG__CONNECTOR",
              "data": {
                  "assigned_connector": "53758",
                  "cable_connection": "50160"
              },
              "apikey": "0815",
              "language": "de"
          },
          "id": 1,
          "version": "2.0"
      }
      
      

      answer:

      API_RETURN =  {
          "id": 1,
          "jsonrpc": "2.0",
          "error": {
              "code": -32099,
              "message": "i-doit system error: Please define the category entry you want to update by setting data.id or data.category_id.",
              "data": null
      

      Wäre schön, wenn mir jemand der bereits erfolgreich Kabel mittels API verbunden hat, helfen könnte, liebe Grüße, hu

      posted in Entwicklung
      huH
      hu
    • RE: API - kompletten Baum eines Objektes auslesen

      @MartinV : lieber Martin, danke für die Bereitstellung Deiner Inhouse-Portierung von Benjamin Heisig's php client library für i-doit's JSON-RPC API.

      Ich habe mich heute Morgen ein wenig mit Deiner Implementierung beschäftigt und konnte auf Anhieb erfolgreich das mitgelieferte Testscript read_Objects_and_Categories.py zum Laufen bekommen.
      Andere Methoden, wie CMDBObjectsByRelation oder CMDBLocationTree konte ich ebenfalls aus der python i-doit API client library von Dir, erfolgreich verwenden.

      Hast Du vor das ganze offiziell zu veröffentlichen? Ich bin am überlegen, ob ich meine Programmentwicklungen auf Dein Fundament stellen soll. Da wäre es natürlich toll, weiterhin Anteil an Deiner Arbeit haben zu könen.

      Zunächst aber vielen, vielen Dank. Das macht auf den ersten Blick einen sehr guten Eindruck.

      posted in Entwicklung
      huH
      hu
    • RE: API-Suche nach it service relations für Kabel

      @StephanBuerger said in API-Suche nach it service relations für Kabel:

      @hu Was soll der "push nach vorn"?

      Das mag niemand in einem Forum

      ... das ist mir absolut neu bei Foren. Tut mir leid dass Dich das stört. Ich mache dies bereits seit Jahrzehnten so und Du bist der erste der sich beschwert. Falls Du diesbezüglich einen netiquette Hinweis im Netz findest, kannst du ihn gerne posten, ich bin nicht fündig geworden.

      Ich würde mich weiterhin freuen, wenn jemand eine Idee zu meinem Problem hat.

      posted in Entwicklung
      huH
      hu
    • RE: API-Suche nach it service relations für Kabel

      push nach vorne

      posted in Entwicklung
      huH
      hu
    • RE: API search for it service relations of cables

      push, push

      posted in Development
      huH
      hu
    • API search for it service relations of cables

      Hello community,

      I'm trying to read it-service-relations (C__CATG__IT_SERVICE_RELATIONS) via the API.

      {
                  'method': 'cmdb.category.read',
                  'params': {
                      'language'  : 'de',
                      'apikey'    : ***,
                      'objID'     : 32529,
                      'category'  : 'C__CATG__IT_SERVICE_RELATIONS'
          },
          'id': 1,
          'version': '2.0'
      }
      

      This works as expected for all types of objects. Except for cabes.

      For objects of type cabe the result = []

      Does anyone of you know how, starting from a cable, you can easily read out its physical relationships at its ends via the API?

      greetings, hu

      posted in Development
      huH
      hu
    • API-Suche nach it service relations für Kabel

      Hallo Community,

      ich versuche über die API it service relations (C__CATG__IT_SERVICE_RELATIONS) auszulesen.

      {
                  'method': 'cmdb.category.read',
                  'params': {
                      'language'  : 'de',
                      'apikey'    : ***,
                      objID'     : 32529,
                      'category'  : 'C__CATG__IT_SERVICE_RELATIONS'
          },
          'id': 1,
          'version': '2.0'
      }
      

      Dies funktioniert für alle Arten von Objekten wie erwartet. Bis auf Cabe.

      Bei Objekten vom type Cabe ist das result = []

      Weiß jemand von Euch, wie man ausgehend von einem Kabel einfach dessen physikalische Beziehungen an dessen Enden über die API auslesen kann?

      Grüße, hu

      posted in Entwicklung api cable relations
      huH
      hu