Anwendungszuweisung inkl. Lizenz via API



  • Hallo,

    ich versuche einem Client eine Anwendung inkl. Lizenz zuzuweisen.
    Die Zuweisung der Anwendung funktioniert problemfrei, wenn ich aber bei "assigned_license" die Objekt ID der Lizenz eintrage bekomme ich

    Internal error: An database error occurred that indicates that you provided an Id which does not exist.
    Please check all properties which are referencing an entry for validity: FOREIGN KEY (isys_catg_application_list__isys_cats_lic_list__id) REFERENCES isys_cats_lic_list

    Das wird wohl wahrscheinlich daran liegen, dass im Lizenzobjekt ein weiteres Unterobjekt sitzt? Wie komme ich denn an die Objekt ID der Lizenz ran, die ich bei "assigned_license" eintragen muss?

    version = '2.0';
        method = 'cmdb.category.create';
        params = @{
                apikey = "apikey"
                language = "de"
                objID = "10386"
                catgID = "C__CATG__APPLICATION"
                data = @{
                    assigned_license = "10367"
                    application = "10376"              
                }
            };
        id = '1';
    

    Ist mein Body (nicht über die Syntax wundern, das ist Powershelll via Invoke-RestMethod)


  • i-doIT Team

    Hallo,

    der Request kann durchaus funktionieren, leider habe ich kein Umgebung um das via Powershell abzufeuern.
    Wichtig ist zu beachten, dass die "cateID" der Lizenz verwendet werden muss.
    Wir legen zum Beispiel ein Objekt vom Typ Lizenz an und hat die Objekt-ID 1337.
    Wenn wir aber nun den eigentlichen Lizenzschlüssel anlegen, bekommt dieser Eintrag eine eindeutige id und diese muss verwendet werden.
    9635a434-777e-473a-83ad-1c064edee880-image.png

    Viel Erfolg und Gruß
    Patrick Feiler



  • @PatrickFeiler

    Genau die ID brauchte ich! Hat auch direkt funktioniert!
    Vielen herzlichen Dank und ein schönes Wochenende.

    Hier mal das komplette Schnipsel, falls andere mal die gleiche Frage haben.

    $body = @{
        version = '2.0';
        method = 'cmdb.category.create';
        params = @{
                apikey = "somekey"
                language = "de"
                objID = "10386"
                catgID = "C__CATG__APPLICATION"
                data = @{
                    assigned_license = "24"
                    application = "10376"              
                }
            };
        id = '1';  
    } 
    $body = $body | ConvertTo-Json
    Invoke-RestMethod -Uri $url -Method POST -ContentType application/json -Body $body
    


  • Ich muss doch nochmal etwas neues hinzufügen. Nun möchte ich die Lizenz auch wieder entfernen können. Das klappt an sich auch soweit, aber erst nachdem ich den API Befehl genau 3x durchgeschickt habe. Ich weiß leider nicht woran das liegen könnte. Mein Aufruf lautet wie folgt
    Als Ergebnis bekomme ich auch jedes Mal ein "Category entry '###' successfully deleted"

    $body = @{
        version = '2.0';
        method = 'cmdb.category.delete';
        params = @{
                apikey = "apikey"
                language = "de"
                objID = "10428"
                catgID = "12"
                cateID = "204"
            };
        id = '1';  
    } 
    

    Nach dem dritten mal bekomme ich dann via category.read kein Ergebnis mehr.



  • cmdb.category.delete bildet den kanonischen Lebenszyklus von Objekten ab:
    Status Normal -> Status Archived -> Status Deleted -> Purged.

    Für Ungeduldige gibt es die (undokumentierte) Funktion cmdb.category.quickpurge.



  • @franknagel Ah! Ja das würde helfen. Ich nutze das ja um eine Softwareinstallation via Powershell noch gleichzeitig mit einem Eintrag im idoit zu begleiten. Wenn man die Software wieder deinstalliert, ist natürlich auch die Lizenz nicht mehr in benutzung. Daher brauche ich ja ein sofortiges "Löschen" der Zuweisung der Lizenz.

    Vielen Dank 🙂


  • i-doIT Team

    @franknagel besser hätte ich es auch nicht erklären können ☺


Log in to reply
 


Datenschutz / Privacy Policy