ausgabe von OPSI4 Methoden / attribute

Antworten
Benutzeravatar
tobias
Beiträge: 1294
Registriert: 20 Aug 2008, 12:36
Wohnort: Braunschweig
Kontaktdaten:

ausgabe von OPSI4 Methoden / attribute

Beitrag von tobias »

Hi,

ich versuche grade OPSI4 methoden zu verarbeiten. Leider ist die Ausgabe irgendwie unsinnig in meinen Augen.
dministrator@opsi012:~$ opsi-admin -d method host_getObjects '["id"]' '{"id":"50-163.wki.fraunhofer.de"}'
[
{
"ident" : "50-163.wki.fraunhofer.de",
"description" : null,
"created" : null,
"inventoryNumber" : null,
"ipAddress" : null,
"notes" : null,
"oneTimePassword" : null,
"lastSeen" : null,
"hardwareAddress" : null,
"opsiHostKey" : null,
"type" : "OpsiClient",
"id" : "50-163.wki.fraunhofer.de"
}
ich filtere doch die Attribute vom Objekt 50-163.... nach der ID warum erhalte ich dann eine Liste mit allen anderen Attributen nur das diese halt leer sind.
Kann ich das irgendwie realisieren das ich nur das attribut + Wert des Attributs erhalte ? oder noch besser als Rückgabe einfach nur den Wert? Oder habe ich den Sinn davon irgendwie nur nicht verstanden ? :?


Gruß
Tobias
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3327
Registriert: 04 Jun 2008, 14:27

Re: ausgabe von OPSI4 Methoden / attribute

Beitrag von d.oertel »

Hi,

das Verhalten ist das im Handbuch beschriebene:
'attributes' dient dazu, nur bestimmte Attribute des Objektes abzufragen.
Zurückgeliefert werden immer alle Attributnamen,
aber nur die Werte der Attribute, welche das Objekt eindeutig kennzeichnen sowie die in 'attributes'
angegebenen Attribut werden. Die restlichen Attribute werden mit dem Wert 'None' geliefert.
Aber das ist nicht das was Du willst.
Kann ich das irgendwie realisieren das ich nur das attribut + Wert des Attributs erhalte ?

Code: Alles auswählen

opsi-admin -dS method host_getObjects '[]' '{"id":"50-163.wki.fraunhofer.de"}' | grep "id" 
gruß
d.oertel


Vielen Dank für die Nutzung von opsi. Im Forum ist unser Support begrenzt.

Für den professionellen Einsatz und individuelle Beratung empfehlen wir einen Support-Vertrag und eine Schulung.
Gerne informieren wir Sie zu unserem Angebot.

uib GmbH
Telefon: +49 6131 27561 0
E-Mail: sales@uib.de


Benutzeravatar
tobias
Beiträge: 1294
Registriert: 20 Aug 2008, 12:36
Wohnort: Braunschweig
Kontaktdaten:

Re: ausgabe von OPSI4 Methoden / attribute

Beitrag von tobias »

d.oertel hat geschrieben:Hi,

das Verhalten ist das im Handbuch beschriebene:
'attributes' dient dazu, nur bestimmte Attribute des Objektes abzufragen.
Zurückgeliefert werden immer alle Attributnamen,
aber nur die Werte der Attribute, welche das Objekt eindeutig kennzeichnen sowie die in 'attributes'
angegebenen Attribut werden. Die restlichen Attribute werden mit dem Wert 'None' geliefert.
Aber das ist nicht das was Du willst.
Kann ich das irgendwie realisieren das ich nur das attribut + Wert des Attributs erhalte ?

Code: Alles auswählen

opsi-admin -dS method host_getObjects '[]' '{"id":"50-163.wki.fraunhofer.de"}' | grep "id" 
gruß
d.oertel
Hi,

Naja zur Weiterverarbeitung in externen Anwendungen eher unpraktisch und sorgt für aufgeblähten code :/

Beispiel wir sind dabei OPSI in unser Ticketsystem zu integrieren.
Und da nutzen wir PHP wäre halt schöner wenn man das was man abfragt auch zurück bekommen würde und nicht den ganzen rest den ich gar nicht haben will.
So kann ich mir die Filter ja quasi sparen denn ich muss ja eh das ganze im PHP Code wieder aufdröseln um weiter zu arbeiten (klar ich spare Serverressourcen auf OPSI Serverseite)
Mit grep kann ich da auch nicht arbeiten - auf eine shell Abfrage wollte ich eigtl. nicht zurückgreifen weil dafür ist ja json_rpc eigentlich ziemlich gut geeignet bis auf das die Abfragen nicht die schnellsten sind ;)

Gruß
Tobias

ps. sehe ich das richtig das die OPSI4 JSON-RPC 2.0 und OPSI3 JSON-RPC 1.0 methoden sind?
Benutzeravatar
ueluekmen
uib-Team
Beiträge: 1940
Registriert: 28 Mai 2008, 10:53

Re: ausgabe von OPSI4 Methoden / attribute

Beitrag von ueluekmen »

Hi Tobias,

ich verstehe das anliegen, aber......

der Witz bei JSON ist ja gerade, das man die Ausgabe nicht manuell parsen muss/sollte. Es gibt in jeder Programmiersprache JSON-Module. Das bedeutet, man bekommt dieses Objekt als String aus dem Service und überlässt das parsen aber PHP.

Ein Beispiel:

Code: Alles auswählen

<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json));
var_dump(json_decode($json, true));

?>
rauskommt folgendes:

Code: Alles auswählen

object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}
Andersrum gehts auch, man baut sich den Filter und sagt dann aber mit json_encode, dass er aus einem PHP-Objekt wieder ein JSON-String basteln soll.

Ich habe ein Vorschlag zur güte: Veröffentliche doch einfach mal deinen Code bei uns im WIKI und hole dir Hilfe aus der Community. So bekommst du guten Code und die Community eine Idee, wie Sie selber was mit dem Webservice anstellen können.

Zu folgender Frage:
tobias hat geschrieben:Und da nutzen wir PHP wäre halt schöner wenn man das was man abfragt auch zurück bekommen würde und nicht den ganzen rest den ich gar nicht haben will.
Im Endeffekt ist das auch so, allerdings müssen diese Objekte:

1. Valides JSON sein
2. können wir nicht alle Attribute nullen, da einige Attri. den Primary Key in der Datenhaltung darstellen. Ansonsten könnte man diese Objekte nicht eindeutig identifizieren.

Grüße
Erol


Vielen Dank für die Nutzung von opsi. Im Forum ist unser Support begrenzt.

Für den professionellen Einsatz und individuelle Beratung empfehlen wir einen Support-Vertrag und eine Schulung.
Gerne informieren wir Sie zu unserem Angebot.

uib GmbH
Telefon: +49 6131 27561 0
E-Mail: sales@uib.de


Benutzeravatar
tobias
Beiträge: 1294
Registriert: 20 Aug 2008, 12:36
Wohnort: Braunschweig
Kontaktdaten:

Re: ausgabe von OPSI4 Methoden / attribute

Beitrag von tobias »

Hi,

danke für deine ausführliche Antwort :)

ich würde gerne Quellcode veröffentlichen wenn ich schon welche hätte :mrgreen:

hier habe ich jedenfalls schonmal ein funktionierenden OPSI3 Methoden Code gepostet der ist auch schon so im Einsatz bei uns.
Also das Anlegen von Clients und das setzen von Konfigurationen darüber.
viewtopic.php?f=7&t=3856&p=18733&hilit=json#p18733

die OPSI4 Methoden hab ich seit gestern endlich verstanden wie sie aufgebaut sind. Nur leider noch nicht hinbekommen wie ich diese in php umsetze. Erhalte oft einfach ein kwargs param is not a dict. Da spielen wir hier aktuell noch mit Syntax rum :mrgreen:

Also wenn wir das hier hinbekommen wirds selbstverständlich im WIKI dokumentiert wie wir es lösen. Die API ist sehr praktisch und ich denke das würde sehr vielen Leuten helfen OPSI besser zu integrieren.
Antworten