Report State löschen per opsiadmin -d method
Report State löschen per opsiadmin -d method
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é
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é
- n.wenselowski
- Ex-uib-Team
- Beiträge: 3194
- Registriert: 04 Apr 2013, 12:15
Re: Report State löschen per opsiadmin -d method
Hi René,
der Report lässt sich mit productOnClient_updateObject leeren:
Gruß
Niko
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
Code: Alles auswählen
import OPSI
Re: Report State löschen per opsiadmin -d method
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é
Funktioniert.
ist es möglich in einer der nächsten OPSI Versionen die Methode
Code: Alles auswählen
setProductState
Vielen Dank für die Hilfe,
René
- n.wenselowski
- Ex-uib-Team
- Beiträge: 3194
- Registriert: 04 Apr 2013, 12:15
Re: Report State löschen per opsiadmin -d method
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 ist aus dem Kopf geschrieben & ungetestet, kann also noch Käfer enthalten)
Aufruf dann in etwa so:
Gruß
Niko
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)
Aufruf dann in etwa so:
Code: Alles auswählen
opsi-admin -d method resetReport mein.client.fqdn win7-x64
Gruß
Niko
Code: Alles auswählen
import OPSI
Re: Report State löschen per opsiadmin -d method
Klappt leider nicht, Report status bleibt weiter bestehen
Hab mir auch die Funktion 20_legacy.conf angesehen und eine neue gebaut
Setze im endeffeckt alles auf "None". Er löscht auch alles, nur den "actionResult" nicht
PackageVersion:
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
)
)
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
- n.wenselowski
- Ex-uib-Team
- Beiträge: 3194
- Registriert: 04 Apr 2013, 12:15
Re: Report State löschen per opsiadmin -d method
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
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:
Code: Alles auswählen
poc['actionResult'] = " "
Gruß
Niko
Code: Alles auswählen
import OPSI
Re: Report State löschen per opsiadmin -d method
Hallo Niko,
fixed
läuft
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
)
)