Modell - Hersteller Zuordnung über die API



  • Hallo,

    ich experimentiere gerade ein wenig mit der API und bin mir gerade nicht sicher ob die Dinge die ich vor habe nicht möglich sind, oder ich es nur falsch probiere. Ich würde gerne neue Objekte anlegen und dabei dann natürlich auch in der Modell Kategorie den entsprechenden Hersteller und den zugehörigen Modelltyp dokumentieren.
    Wenn die Modelle schon existieren ist das auch erstmal kein Problem. Mein Problem bezieht sich auf die Erstellung von noch nicht existierenden Modellen die ich gerne den Herstellern zuordnen möchte. Wenn ich die Modelle über die API nur mit Ihrem Titel anlege, sind diese unfertig und es fehlt die Zuordnung zum Hersteller.
    Über ein cmd.dialog.read der entsprechenden Modelle bekomme ich leider nur die spalten "id, const, title".

    {
        "jsonrpc":"2.0",
        "result": [
            ...,
            {
                "id": "7",
                "const": "",
                "title": "Modelltitel"
            }
        ],
        "id":null
    }
    

    Für den API connect verwende ich die Powershell und für die Erstellung der Modelle folgenden body:

    {
        "jsonrpc": "2.0",
        "method": "cmdb.dialog.create",
        "params": {
            "apikey": "xy",
            "category": "C__CATG__MODEL",
            "property": "title",
            "value": "Modelltitel"
        }
    }
    

    In i-doit sieht dies dann so aus:
    0_1521451760752_1777afca-8d95-4de8-a88b-0dd89da0d880-image.png

    Kann ich über die API Modelle korrekt zuordnen und wenn ja wie mache ich dies?


  • i-doIT Team

    Hallo,

    bereits beim Erstellen von Kategorie-Einträgen kann man Dialog-Felder ergänzen. D. h., es spricht erst einmal nichts dagegen, beim Ausfüllen der Modell-Kategorie mit der Methode cmdb.category.create den Hersteller- und Modell-Namen als String mitzugeben, auch wenn dieses Pärchen noch nicht existiert. In der i-doit Knowledge Base gibt es dazu ein passendes Beispiel.

    Über die Methode cmdb.dialog.create kann das Attribut-Pärchen aus Hersteller- und Modellnamen derzeit noch nicht angelegt werden. Die Entwicklung ist bereits informiert.

    Viele Grüße
    Benjamin



  • Hallo Benjamin,

    danke für den passenden Link in die Knowledge Base. Schade, dass die Zuordnung noch nicht geht.
    Dann muss diese halt später folgen.

    Ich hätte da noch ein Thema zur API das mir heute aufgefallen ist. Ich kann Objekte der Kategorie C__OBJTYPE__STACKING (CatgID: 90) anlegen aber nicht auslesen. Beim Versuch bekomme ich den Fehler:
    "error=Unable to find desired category with ID "90". Please check the delivered category ID and try again"

    Im Handbuch der Knowledge Base (i-doit JSON-RPC 1.8.3.docx) ist noch die Rede von der C__CATG__STACKING.

    Auf der Serveransicht der Objektkategorien unter https://hostname/index.php?load=api_properties wird STACKING gar nicht gelistet.

    Befindet sich diese Kategorie gerade im Umbau?
    Gibt es eine andere elegante Möglichkeit gestackte Switche als solche zu dokumentieren?

    Grüße
    Simon


  • i-doIT Team

    Hallo Simon,

    gerade eben habe ich ein paar Tests auf einer frischen Installation von i-doit open 1.10.1 mit API Add-on 1.9 ausgeführt. Erst einmal sieht alles ganz gut aus:

    Objekt vom Typ Stacking erstellen:

    {
        "version": "2.0",
        "method": "cmdb.object.create",
        "params": {
            "type": "C__OBJTYPE__STACKING",
            "title": "My little stack",
            "apikey": "xxx"
        },
        "id": 1
    }
    

    Server Response:

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

    Auslesen aller Stacking-Objekte:

    {
        "version": "2.0",
        "method": "cmdb.objects.read",
        "params": {
            "filter": {
                "type": "C__OBJTYPE__STACKING"
            },
            "apikey": "xxx"
        },
        "id": 2
    }
    

    Server-Response:

    {
        "jsonrpc": "2.0",
        "result": [
            {
                "id": "26",
                "title": "My little stack",
                "sysid": "SYSID_1521623834",
                "type": "90",
                "created": "2018-03-21 10:16:48",
                "updated": "2018-03-21 10:16:48",
                "type_title": "Stacking",
                "type_group_title": "Other",
                "status": "2",
                "cmdb_status": "6",
                "cmdb_status_title": "in operation"
            }
        ],
        "id": 2
    }
    

    Die Kategorie Stacking (C__CATG__STACKING) wurde durch die Kategorien Stack member (C__CATG__STACK_MEMBER) bzw. Stack Membership ersetzt, siehe KB-Artikel "Kategorien und Attribute". In der open-Variante ist die Kategorie Stacking nicht vorhanden. Während die Kategorie Stack member über die API angesprochen werden kann, ist das bei der Kategorie Stack Membership nicht der Fall.

    Um herauszufinden, welche Kategorie die ID 90 bekommen hat, hilft ein Blick in die Datenbanktabelle idoit_data.isysgui_catg weiter:

    select isysgui_catg__id, isysgui_catg__const from idoit_data.isysgui_catg where isysgui_catg__id = 90;
    

    Viele Grüße
    Benjamin



  • Hallo Benjamin,

    aktuell habe ich eine 1.10.1 open im Einsatz und eine 1.10.1 pro (30 Tage test).
    Auf der open hatte ich noch die API 1.8 laufen und habe nun auf 1.9 aktualisiert.
    Die angebotene API auf der Webseite der open ist die angebotene API Version 1.8.

    Die Ausgabe aller Stacking-Objekte funktioniert problemlos. Dabei bekomme ich die folgende Ausgabe:

    {
        "jsonrpc": "2.0",
        "result": [
            {
                "id": "2331",
                "title": "My little stack",
                "sysid": "SYSID_1521562362",
                "type": "90",
                "created": "2018-03-20 16:33:51",
                "updated": "2018-03-20 16:33:51",
                "type_title": "Stacking",
                "type_group_title": "Other",
                "status": "2",
                "cmdb_status": "6",
                "cmdb_status_title": "in operation",
                "image": "https:\/\/de0001sido10002\/images\/objecttypes\/empty.png"
            },
            ...
        ],
        "id": null
    }
    

    Auch gelingt mir nun die korrekte Ausgabe dieses einzel Objektes via:

    {
    "jsonrpc": "2.0",
        "method": "cmdb.object.read",
        "params": {
            "apikey": "xy",
            "objID": "2331",
            "category": "C__OBJTYPE__STACKING"
        }
    }
    

    So lange eine der beiden Kategorien angesprochen werden kann, hilft mir das.

    Bei der Prüfung welche Kategorie die ID 90 hat, bekomme ich die folgende Ausgabe:

    +------------------+-------------------------+
    | isysgui_catg__id | isysgui_catg__const     |
    +------------------+-------------------------+
    |               90 | C__CATG__ASSIGNED_CARDS |
    +------------------+-------------------------+
    

    Was an dieser Stelle nicht weiter tragisch ist, da sich die benötigten Kategorien nun, wie oben beschrieben,editieren lassen.
    An dieser Stelle nochmal vielen Dank für die ausführliche Hilfestellung.

    Grüße
    Simon


 


Datenschutz / Privacy Policy