Seite 1 von 1
ProductDependency wird bei opsiservicecall nicht aufgelöst
Verfasst: 02 Jun 2016, 15:53
von jensito
Moin,
für die Umstellung von Windows 7 auf Windows 10 baue ich gerade ein Paket, dass das USMT von Microsoft verwendet, um Benutzerprofile zu sichern und nach der Frischinstallation von W10 wiederherzustellen. Wenn dieses Paket usmt-scan erfolgreich gelaufen ist, soll es das netboot-Paket win10-x64 auf Setup stellen und den Rechner durchstarten, was auch tadellos mit dem opsiservicecall
setProductActionRequest funktioniert.
Zusätzlich soll aber auch das localboot-Paket "standard-10" auf once gestellt werden, das neben einigen standard-Einstellungen alle von uns benötigten Pakete auf Setup stellt. Dazu ist standard-10 mit lauter ProductDependencies versehen. Stelle ich im configeditor das standard-10-Paket auf once, werden zeitgleich die per ProductDependency verknüpften Pakete auf Setup gesetzt.
Rufe ich aber den opsiservicecall
setProductActionRequest auf um standard-10 auf once zu setzen, werden die ProductDependencies NICHT beachtet.
zur Veranschaulichung noch der Code mit dem serviceCall:
Code: Alles auswählen
comment 'gewähltes Standardpaket setzen'
set $ProductToSet$ = 'standard-10'
set $ActionRequest$ = 'once'
opsiServiceCall_setProductActionRequest
[opsiServiceCall_setProductActionRequest]
"method": "setProductActionRequest"
"params": [
"$ProductToSet$",
"%HostID%",
"$ActionRequest$"
]
Da alle weiteren Pakete überhaupt erst auf Setup gestellt werden dürfen, wenn usmt-scan erfolgreich war, kann ich standard-10 nicht einfach von Hand mit setzen.
Gibt es eine Erklärung für dieses Verhalten? Kann man da was dran drehen? Oder gibt es einen anderen möglichen Weg?
Re: ProductDependency wird bei opsiservicecall nicht aufgelöst
Verfasst: 03 Jun 2016, 00:36
von ueluekmen
Hi,
versuchs mal mit der Methode:
Code: Alles auswählen
opsiServiceCall_setProductActionRequestWithDependencies
wobei ich mir nicht sicher bin, ob das auch mit once funktioniert.
Re: ProductDependency wird bei opsiservicecall nicht aufgelöst
Verfasst: 03 Jun 2016, 11:21
von jensito
Danke für die schnelle Antwort.
Leider habe ich auch keinen Erfolg mit der Methode setProductActionRequestWithDependencies...
Ich habe es einmal mit 'setup' als ActionRequest ausprobiert (und das standard-10-Paket kurz dafür umgebaut) und einmal mit once. Das komische Ergebnis, dass ich bei beiden Aufrufen bekommen habe: Die Abhängigkeiten, die als "RequiredAction : once" laufen, werden aufgelöst, zwei Pakete sind also auf once gesetzt worden! Die mit Setup aber allesamt nicht...
Noch eine Idee?
Hier ein Auszug aus dem Log. Meines Erachtens zeigt der aber nur, dass ich die Methode korrekt aufgerufen habe...
Code: Alles auswählen
Execution of opsiServiceCall_setProductActionRequest
(176) [8] [Jun 03 09:15:41:776] [usmt-scan] Parsing: getparam: standard-10
(177) [8] [Jun 03 09:15:41:776] [usmt-scan] Parsing: getparam: ******.*******.de
(178) [8] [Jun 03 09:15:41:776] [usmt-scan] Parsing: getparam: setup
(179) [6] [Jun 03 09:15:41:776] [usmt-scan] "method": "setProductActionRequestWithDependencies"
(180) [6] [Jun 03 09:15:41:776] [usmt-scan] Calling opsi service at https://***.***.***.***:****
(181) [8] [Jun 03 09:15:41:777] [usmt-scan] Sessionid OPSISID=*************
(182) [6] [Jun 03 09:15:41:777] [usmt-scan] JSON service request https://***.***.***.***:****/rpc setProductActionRequestWithDependencies
(183) [8] [Jun 03 09:15:41:777] [usmt-scan] JSON service request Furl https://***.***.***.***:****/rpc
(184) [8] [Jun 03 09:15:41:777] [usmt-scan] JSON service request str {"method":"setProductActionRequestWithDependencies","params":["standard-10","*****.*******.de","setup"],"id":1}
(185) [8] [Jun 03 09:15:41:777] [usmt-scan] Using MimeType: application/json
(186) [8] [Jun 03 09:15:41:777] [usmt-scan] HTTP Header: Content-Encoding: deflate\r\nContent-Type: application/json\r\nContent-Length: 113\r\nHost: ***.***.***.***:****\r\nAccept-Encoding: deflate, identity\r\nUser-Agent: opsi-script 4.11.5.14\r\nAuthorization: Basic ZXhuMDMwLmtyb3NjaGtlLmRlOjdjNDAxZTU4MGQ0YTk3Y2Q0NGQ5MzM0ZDMzOTA3Mjgy\r\nCookie: OPSISID=FH8nCTn36jEzJUQr3tU4ECizQEp25PFd\r\n
(187) [6] [Jun 03 09:15:42:900] [usmt-scan] JSON Bench for setProductActionRequestWithDependencies "params":["standard-10","********.********.de","se Start: 09:15:41:777 Time: 00:00:01:123
(188) [8] [Jun 03 09:15:42:900] [usmt-scan] JSON Call: {"method":"setProductActionRequestWithDependencies","params":["standard-10","********.*******.de","setup"],"id":1} Time: 00:00:01:123
(189) [6] [Jun 03 09:15:42:967] [usmt-scan] JSON result:
Re: ProductDependency wird bei opsiservicecall nicht aufgelöst
Verfasst: 14 Jun 2016, 10:07
von jensito
Ich habe die Abhängigkeiten letztlich einfach nachgebaut. Nun ist natürlich bei jeder Änderung Doppelpflege notwendig, im Standard-10-Paket und in diesem Paket der jeweilige Servicecall... Ist nicht die schönste Lösung, funktioniert aber gut.
Hoffe, dass dieser opsiservicecall in zukünftigen Versionen die Dependencies auflösen kann. Sollte das vielleicht in einem Bugreport festgehalten werden?
Re: ProductDependency wird bei opsiservicecall nicht aufgelöst
Verfasst: 14 Jun 2016, 21:55
von ueluekmen
Hi,
das ist nicht schön. Kannst du mal deine Dependency-Sektionen aus einer Controlfile von diesem standard posten?
Re: ProductDependency wird bei opsiservicecall nicht aufgelöst
Verfasst: 15 Jun 2016, 08:16
von jensito
Das ist das controlfile des Standard-Pakets:
Code: Alles auswählen
[Package]
version: 3
depends:
incremental: False
[Product]
type: localboot
id: standard-10
name: Standardpakete fuer Rechner in der Zentrale
description: Fuer Windows 10
advice:
version: 1.0
priority: 90
licenseRequired: False
productClasses:
setupScript:
uninstallScript:
updateScript:
alwaysScript:
onceScript: once.ins
customScript:
userLoginScript:
[ProductDependency]
action: once
requiredProduct: adselfservice
requiredAction: setup
requirementType: after
[ProductDependency]
action: once
requiredProduct: adobereader
requiredAction: setup
requirementType: after
[ProductDependency]
action: once
requiredProduct: freepdf
requiredAction: setup
requirementType: after
[ProductDependency]
action: once
requiredProduct: irfanview
requiredAction: setup
requirementType: after
[ProductDependency]
action: once
requiredProduct: java
requiredAction: setup
requirementType: after
[ProductDependency]
action: once
requiredProduct: k-lite
requiredAction: setup
requirementType: after
[ProductDependency]
action: once
requiredProduct: office2007
requiredAction: setup
requirementType: after
[ProductDependency]
action: once
requiredProduct: kaspersky
requiredAction: setup
requirementType: after
[ProductDependency]
action: once
requiredProduct: sapgui
requiredAction: setup
requirementType: after
[ProductDependency]
action: once
requiredProduct: teamviewer-inhouse
requiredAction: setup
requirementType: after
[ProductDependency]
action: once
requiredProduct: updates
requiredAction: once
requirementType: after
[ProductDependency]
action: once
requiredProduct: vcc
requiredAction: setup
requirementType: after
[ProductDependency]
action: once
requiredProduct: winkey
requiredAction: once
requirementType: after
Re: ProductDependency wird bei opsiservicecall nicht aufgelöst
Verfasst: 15 Jun 2016, 12:00
von n.wenselowski
Hi,
setProductActionRequestWithDependencies ist eine Methode, der beliebige action requests übergeben werden können. Und sie ist in einer Erweiterung (10_opsi.conf) gespeichert.
Du könntest nun aber auch ausgehend davon deine eigene Variante implementieren, die bei einem setup oder once immer beides macht. Mehr Infos dazu im Handbuch unter dem Stichwort Backend-Erweiterung.
Gruß
Niko
Re: ProductDependency wird bei opsiservicecall nicht aufgelöst
Verfasst: 15 Jun 2016, 15:01
von SisterOfMercy
Would anything change when not using requiredAction but requiredStatus?
Code: Alles auswählen
[ProductDependency]
action: setup
requiredProduct: adobe-flash-player
requiredStatus: installed
requirementType: before
Re: ProductDependency wird bei opsiservicecall nicht aufgelöst
Verfasst: 30 Jun 2016, 16:24
von n.wenselowski
Hi,
jensito hat geschrieben:Hoffe, dass dieser opsiservicecall in zukünftigen Versionen die Dependencies auflösen kann. Sollte das vielleicht in einem Bugreport festgehalten werden?
in python-opsi 4.0.7.5 wurde die Methode überarbeitet.
Aktuell ist dieses
Paket in experimental zu finden, wovon wir im Einsatz einer Produktivumgebung abraten.
Wenn du zum testen kommst, würde uns natürlich auch Feedback interessieren!
Viele Grüße
Niko