Abhängige Produkte über Commandline auf setup setzen?

Antworten
mhaegele
Beiträge: 293
Registriert: 18 Aug 2010, 13:55

Abhängige Produkte über Commandline auf setup setzen?

Beitrag von mhaegele »

Hallo
Wenn ich das absetze:

Code: Alles auswählen

 opsi-admin -d task setActionRequestWhereOutdated setup adobe-flashplayer
werden die "post-setup abhängigkeiten" z.B. weiteres Produkt auf "setup" setzen nicht erfüllt,
über die Gui geht das,
kriegt man das über kommandozeile auch irgendwie gebacken?

Danke Vorab!
MH
dkoch
Beiträge: 309
Registriert: 25 Nov 2011, 14:03

Re: Abhängige Produkte über Commandline auf setup setzen?

Beitrag von dkoch »

An die Entwicklung:
Selbe Funktion wie WhereOutdated die aber setActionRequestWithDepencies verwendet statt setActionRequest
Richtig ?

Code: Alles auswählen

*** opsi-admin  2014-10-28 12:35:16.000000000 +0100
--- opsi-admin2 2015-01-29 23:33:14.962354986 +0100
*************** class CommandTask(Command):
*** 1428,1433 ****
--- 1428,1434 ----
                        (u'updateWhereInstalled', 'productId'),
                        (u'uninstallWhereInstalled', 'productId'),
                        (u'setActionRequestWhereOutdated', 'actionRequest', 'productId'),
+                       (u'setActionRequestWhereOutdatedWithDependencies', 'actionRequest', 'productId'),
                        (u'setActionRequestWithDependencies', 'actionRequest', 'productId', 'clientId'),
                        (u'decodePcpatchPassword', u'encodedPassword', u'opsiHostKey'),
                        (u'setPcpatchPassword', u'*password')
*************** class CommandTask(Command):
*** 1555,1560 ****
--- 1556,1588 ----
                                                        updateProductOnClients.append(productOnClient)
                                                        shell.appendLine(productOnClient.clientId)
                        backend.productOnClient_updateObjects(updateProductOnClients)
+
+               if params[0] == u'setActionRequestWhereOutdatedWithDependencies':
+                       if len(params) < 2:
+                               raise Exception(_(u'Missing action request'))
+                       if len(params) < 3:
+                               raise Exception(_(u'Missing product-id'))
+                       actionRequest = params[1]
+                       productId = params[2]
+
+                       # Get depot to client assignment
+                       depotToClients = {}
+                       for clientToDepot in backend.configState_getClientToDepotserver():
+                               if clientToDepot['depotId'] not in depotToClients:
+                                       depotToClients[clientToDepot['depotId']] = []
+                               depotToClients[clientToDepot['depotId']].append(clientToDepot['clientId'])
+
+                       updateProductOnClients = []
+                       for (depotId, clientIds) in depotToClients.items():
+                               if not clientIds:
+                                       continue
+                               for productOnDepot in backend.productOnDepot_getObjects(productId=productId):
+                                       for productOnClient in backend.productOnClient_getObjects(clientId=clientIds, productId=productOnDepot.productId, installationStatus=u'installed'):
+                                               if (productOnClient.productVersion != productOnDepot.productVersion) or (productOnClient.packageVersion != productOnDepot.packageVersion):
+                                                       productOnClient.setActionRequestWithDependencies(actionRequest)
+                                                       updateProductOnClients.append(productOnClient)
+                                                       shell.appendLine(productOnClient.clientId)
+                       backend.productOnClient_updateObjects(updateProductOnClients)

                if params[0] == u'setActionRequestWithDependencies':
                        if len(params) < 2:
Lass erstmal einen von den Entwicklern drüber schauen ob ich da mangels Detailkenntnis nen fehler drin hab dann erkläre ich dir wie man es einbaut ;)
Oder du bist mutig und wendest den patch auf opsi-admin jetzt an und testest entsprechend.
dkoch
Beiträge: 309
Registriert: 25 Nov 2011, 14:03

Re: Abhängige Produkte über Commandline auf setup setzen?

Beitrag von dkoch »

Code: Alles auswählen

cd /usr/bin/ && wget http://paste.triple6.org/sX4sxA/raw -O opsi-admin.patch && patch opsi-admin < opsi-admin.patch
Danach hast du dann den Task updateWhereOutdatedWithDependencies. Und der macht was du willst.
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Abhängige Produkte über Commandline auf setup setzen?

Beitrag von n.wenselowski »

Hallo,

der Patch von dkoch wird Teil von 4.0.6 sein.


Gruß

Niko

Code: Alles auswählen

import OPSI
sebastianwi
Beiträge: 24
Registriert: 15 Aug 2012, 09:45

Re: Abhängige Produkte über Commandline auf setup setzen?

Beitrag von sebastianwi »

Hallo,
Gibts den Patch noch irgendwo? Der Downloadlink ist scheinbar nicht mehr gültig.

Danke und Grüße,
Sebastian
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Abhängige Produkte über Commandline auf setup setzen?

Beitrag von n.wenselowski »

Hi Sebastian,
sebastianwi hat geschrieben:Gibts den Patch noch irgendwo? Der Downloadlink ist scheinbar nicht mehr gültig.
Es ist mittlerweile Teil von 4.0.6 - kein Grund für Patches ;)


Gruß

Niko

Code: Alles auswählen

import OPSI
sebastianwi
Beiträge: 24
Registriert: 15 Aug 2012, 09:45

Re: Abhängige Produkte über Commandline auf setup setzen?

Beitrag von sebastianwi »

Ja, ich hab mich dann auch entschieden das Update zu machen.
Nun hab ich aber das nächste Problem:
Der Befehl setActionRequestWithDependencies bricht mit dem Fehler "Backend I/O error: Error occured by resolving the dependendcie that configured in product:'xxxxx'. No ProductAction will be set. (opsi-admin|1713)" ab.
Definiert sind für das Paket so in der control:
[ProductDependency]
action: setup
reqiredProduct: xxxx1
reqiredProductVersion: 2.3.21
reqiredAction: update (oder setup, je nachdem was ich gebaut habe).

Wo ist der Fehler?

Grüße, Sebastian
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Abhängige Produkte über Commandline auf setup setzen?

Beitrag von n.wenselowski »

Hallo Sebastian,

da meine Glaskugel gerade in Reparatur ist, würde ich dich bitten mal ein Log mit Level 7 (--help /-h ;)) zu erzeugen und da rein zu schauen.
Da sollten ein paar Infos stehen.


Viele Grüße

Niko

Code: Alles auswählen

import OPSI
Antworten