productOnClient_getObjects mit angegebenen Attributen liefert null-Werte

Antworten
skywalker
Beiträge: 5
Registriert: 20 Okt 2016, 14:43

productOnClient_getObjects mit angegebenen Attributen liefert null-Werte

Beitrag von skywalker »

Das verhalten der CLI-Methode productOnClient_getObjects ist inkonsistent in hinsicht auf die Anwendung des '*attributes'-Parameters. Wird ein leeres Array angegeben, so werden alle verfügbaren Werte zurückgegeben.

Code: Alles auswählen

opsi-admin -d method productOnClient_getObjects '[]' '{"installationStatus": "installed"}'

Code: Alles auswählen

...,
    {
    "ident" : "opsi-client-agent;LocalbootProduct;evaluation2.dsm.museum",
    "actionProgress" : "",
    "actionResult" : "successful",
    "clientId" : "****",
    "modificationTime" : "2017-03-06 10:24:07",
    "actionRequest" : "none",
    "targetConfiguration" : null,
    "productVersion" : "4.0.7.11",
    "productType" : "LocalbootProduct",
    "lastAction" : null,
    "packageVersion" : "2",
    "actionSequence" : -1,
    "type" : "ProductOnClient",
    "installationStatus" : "installed",
    "productId" : "opsi-client-agent"
    },...
Gibt man jedoch Attribute explizit an, so werden einige Werte durch null ersetzt, andere außer dem angegebenen Attribut enthalten jedoch immer noch Werte:

Code: Alles auswählen

opsi-admin -d method productOnClient_getObjects '["productVersion"]' '{"installationStatus": "installed"}'

Code: Alles auswählen

...,
    {
    "ident" : "opsi-client-agent;LocalbootProduct;*****",
    "actionProgress" : null,
    "actionResult" : null,
    "clientId" : "****",
    "modificationTime" : null,
    "actionRequest" : null,
    "targetConfiguration" : null,
    "productVersion" : "4.0.7.11",
    "productType" : "LocalbootProduct",
    "lastAction" : null,
    "packageVersion" : null,
    "actionSequence" : -1,
    "type" : "ProductOnClient",
    "installationStatus" : null,
    "productId" : "opsi-client-agent"
    },...
Ich würde eigentlich erwarten, dass entweder ALLE außer dem explizit angegeben Attribut den Wert null haben oder gar nicht im Ergebnis auftauchen. Insbesondere wenn man die Shell-Ausgabe weiterverwenden will ist eine solche Ausgabe nicht hilfreicher als ein Aufruf ohne Parameter.

Ist das ein Fehler in der Methode oder habe ich den Sinn des '*attributes'-Parameters falsch verstanden?
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: productOnClient_getObjects mit angegebenen Attributen liefert null-Werte

Beitrag von n.wenselowski »

Hi,

über attributes wird eingeschränkt welche Daten ausgelesen und ausgegeben werden. Bei einem leeren Array wird davon ausgegangen, dass keine Filterung gemacht werden soll und alle Felder zurück gegeben.
Die zusätzlichen Felder, die du immer erhälst (hier: productType, type, productId, clientId), werden zurückgegeben, weil es die Informationen sind, welche dafür sorgen, dass der Eintrag eindeutig zuzuordnen (productType, productId, clientId) ist bzw. um daraus wieder ein komplettes Objekt erstellen zu können (type).

Wenn du die Ausgabe filtern und dann weiterverwenden willst, dann ist vielleicht der Schalter -S bei opsi-admin etwas für dich.


Gruß

Niko

Code: Alles auswählen

import OPSI
Antworten