Seite 1 von 1
Report State löschen per opsiadmin -d method
Verfasst: 22 Aug 2018, 15:25
von MyLive
Ich habe den Therad:
viewtopic.php?t=3080
gefunden und kommentiert. Es funktioniert leider nicht darüber den Report Status zurückzusetzen.
Mit welcher method kann ich dieses für einen Host & ein LocalBoot oder Netboot Produkt erreichen ?
Vielen lieben Dank,
René
Re: Report State löschen per opsiadmin -d method
Verfasst: 24 Aug 2018, 12:26
von n.wenselowski
Hi René,
der Report lässt sich mit
productOnClient_updateObject leeren:
Code: Alles auswählen
opsi-admin -d method productOnClient_updateObject '{"type": "ProductOnClient", "productType": "NetbootProduct", "productId": "win7-x64", "clientId": "niko-client2.uib.local", "actionResult": ""}'
Gruß
Niko
Re: Report State löschen per opsiadmin -d method
Verfasst: 24 Aug 2018, 16:16
von MyLive
Hi Niko,
Funktioniert.
ist es möglich in einer der nächsten OPSI Versionen die Methode
um einen optionalen Parameter zu erweitern
der den Result zurücksetzt.
Vielen Dank für die Hilfe,
René
Re: Report State löschen per opsiadmin -d method
Verfasst: 27 Aug 2018, 10:35
von n.wenselowski
Hi René,
ich denke nicht, dass wir so etwas einbauen, weil es von unserer Seite aktuell keinen Nutzen gibt und ich das Zurücksetzen des Reports als relativ selten benötigt ansehe. Das ist mit Pflege und Tests dann doch ein bisschen zu großer Aufwand für uns.
Du kannst aber eine eigene Erweiterung bauen, die genau das macht.
Wenn du den folgenden Code nach
/etc/opsi/backendManager/extend.d/80_meine_methoden.conf speicherst (opsi-set-rights nicht vergessen), dann kannst du die Methode resetReport mit den Parametern clientId und productId aufrufen.
Code: Alles auswählen
# -*- coding: utf-8 -*-
def resetReport(self, clientId, productId):
poc = self.productOnClient_getHashes(productId=productId, clientId=clientId)
try:
poc = poc[0]
except IndexError:
# No matching poc -> no report
return
poc['actionResult'] = ""
self.productOnClient_updateObject(poc)
(Code ist aus dem Kopf geschrieben & ungetestet, kann also noch Käfer enthalten)
Aufruf dann in etwa so:
Code: Alles auswählen
opsi-admin -d method resetReport mein.client.fqdn win7-x64
Gruß
Niko
Re: Report State löschen per opsiadmin -d method
Verfasst: 27 Aug 2018, 12:43
von MyLive
Klappt leider nicht, Report status bleibt weiter bestehen
Hab mir auch die Funktion 20_legacy.conf angesehen und eine neue gebaut
Code: Alles auswählen
def clearProductState(self, productId, objectId):
installationStatus = "not_installed"
actionRequest = None
productVersion = None
packageVersion = None
lastStateChange = None
productActionProgress = None
actionResult = None
depotId = self.getDepotId(clientId=objectId)
productType = None
for productOnDepot in self.productOnDepot_getObjects(depotId=depotId, productId=productId):
productType = productOnDepot.productType
if not productType:
from OPSI.Exceptions import BackendMissingDataError
raise BackendMissingDataError("Product '%s' not found on depot '%s'" % (productId, depotId))
self.productOnClient_updateObjects(
ProductOnClient(
productId=productId,
productType=productType,
clientId=objectId,
installationStatus=installationStatus,
actionRequest=actionRequest,
actionProgress=productActionProgress,
actionResult=actionResult,
productVersion=productVersion,
packageVersion=packageVersion,
modificationTime=lastStateChange
)
)
Setze im endeffeckt alles auf "None". Er löscht auch alles, nur den "actionResult" nicht
PackageVersion:
Code: Alles auswählen
dpkg -l |grep opsi
ii opsi-configed 4.0.7.6.34-2 all OPSI config editor
ii opsi-linux-bootimage 20180713-1 all opsi bootimage for netboot tasks.
ii opsi-server 4.1.1.4-10 all opsi server configuration package
ii opsi-tftpd-hpa 5.2.8-47 amd64 HPA's tftp server
ii opsi-utils 4.1.1.19-2 all utilites for working with opsi.
ii opsiconfd 4.1.1.10-7 all opsi configuration service
ii opsipxeconfd 4.1.1.13-1 all opsi pxe configuration daemon
ii python-opsi 4.1.1.40-1 all opsi python library
Re: Report State löschen per opsiadmin -d method
Verfasst: 27 Aug 2018, 14:51
von n.wenselowski
Hi,
ich würde dann einfach mal debuggen was genau ihm nicht schmeckt.
Gibt es Fehlermeldungen?
Falls nicht: Bei opsi-admin würde ich
-l 7 (oder sogar
-l 8, wenn ersteres nicht hilft) mitgeben und schauen, was er tut.
Kleine Idee an der Stelle noch: Ändere das Setzen des Werts mal auf das hier:
Ansonsten: None-Werte werden Update an vielen Stellen ignoriert und nur die Teile mit Werten verarbeitet - ob der Wert dabei im Prinzip leer ist, ist dann meist egal.
Gruß
Niko
Re: Report State löschen per opsiadmin -d method
Verfasst: 04 Sep 2018, 09:34
von MyLive
Hallo Niko,
fixed
Code: Alles auswählen
def clearProductState(self, productId, objectId):
installationStatus = "not_installed"
actionRequest = None
productVersion = None
packageVersion = None
lastStateChange = None
productActionProgress = " "
actionResult = None
depotId = self.getDepotId(clientId=objectId)
productType = None
for productOnDepot in self.productOnDepot_getObjects(depotId=depotId, productId=productId):
productType = productOnDepot.productType
if not productType:
from OPSI.Exceptions import BackendMissingDataError
raise BackendMissingDataError("Product '%s' not found on depot '%s'" % (productId, depotId))
self.productOnClient_updateObjects(
ProductOnClient(
productId=productId,
productType=productType,
clientId=objectId,
installationStatus=installationStatus,
actionRequest=actionRequest,
actionProgress=productActionProgress,
actionResult=actionResult,
productVersion=productVersion,
packageVersion=packageVersion,
modificationTime=lastStateChange
)
)
läuft