Guten Morgen zusammen,
pandel hat geschrieben:Nachvollziehbar, danke! Wünschenswert wäre ja dann, wenn bspw. die Parameter -S, -s oder -r dafür sorgen würden, dass dieser ganze overhead nicht geladen wird. Das würds wahrscheinlich beschleunigen...
Hm, schwierig. Würde dann dazu führen dass irgendwo imports gemacht werden und sowas ist ziemlich schlechter Stil. Ein anderer Ansatz wäre der von wiederverwendbaren Interpretern, wie bspw. in
The Python I Would Like To See beschrieben.
Ich würde vorschlagen das ganze entweder über ein eigenes Python-Script, in welchem der Backend-Zugang wiederverwendet wird, oder eine Erweiterung.
Hier eine (ungetestete) Backend-Erweiterung, die genau das machen sollte, was dein Script macht. Die kann dann über
opsi-admin -d method installProductOnClientsWithProduct "foo" "bar" aufgerufen werden.
Code: Alles auswählen
def installProductOnClientsWithProduct(self, requiredProduct, productToInstall):
clients = set([poc.clientId for poc in self.productOnClient_getObjects(productId=requiredProduct, installationStatus="installed")])
for clientId in clients:
self.setProductActionRequestWithDependencies(productToInstall, clientId, "setup")
Für den
Golffactor 
kann man das auch in einen Einzeiler packen:
Code: Alles auswählen
def installProductOnClientsWithProduct(self, requiredProduct, productToInstall):
[self.setProductActionRequestWithDependencies(productToInstall, clientId, "setup") for clientId in set([poc.clientId for poc in self.productOnClient_getObjects(productId=requiredProduct, installationStatus="installed")])]
Viele Grüße
Niko