From 720cac0f0bacb8a08353a243b3597dc9a3fb6d2f Mon Sep 17 00:00:00 2001 From: cajus Date: Fri, 20 Nov 2009 10:00:14 +0000 Subject: [PATCH] Added additional shortcut functions git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@14828 594d385d-05f5-0310-b6e9-bd551577e9d8 --- gosa-si/contrib/90_gosa.conf | 75 ++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/gosa-si/contrib/90_gosa.conf b/gosa-si/contrib/90_gosa.conf index 53beacdeb..1ae7362c7 100644 --- a/gosa-si/contrib/90_gosa.conf +++ b/gosa-si/contrib/90_gosa.conf @@ -1,6 +1,8 @@ ''' Add a couple of additional functions to retrieve needed information with just one call. ''' +logger= Logger() + def getClientsInformation_listOfHashes(self, serverId=None, depotIds=[], groupId=None, productId=None, installationStatus=None, actionRequest=None, productVersion=None, packageVersion=None): # Get backend instance and load client list @@ -14,6 +16,7 @@ def getClientsInformation_listOfHashes(self, serverId=None, depotIds=[], groupId return clients + def getProductHostInformation_list(self, objectId=None, installationStatus=None, type='localboot'): result = [] @@ -42,6 +45,7 @@ def getProductHostInformation_list(self, objectId=None, installationStatus=None, return result + def getProductInformation_list(self, installationStatus=None, type='localboot'): result = [] @@ -58,3 +62,74 @@ def getProductInformation_list(self, installationStatus=None, type='localboot'): return result + +def getFullProductHostInformation_list(self, objectId=None, installationStatus=None, type='localboot'): + result = [] + + # Load product ids + productIds= self.getProductIds_list(type, None, installationStatus) + + # Load product states + productStates= self.getProductStates_hash(objectId) + + # Extend every entry by name and description + for productId in productIds: + + # Add missing information to the productInfo + productInfo= self.getProduct_hash(productId) + productInfo['productId']= productId + + # Find product entry + currentState= None + for state in productStates[objectId]: + if state['productId'] == productId: + currentState= state + break + + # Add missing information to the productInfo + if currentState['installationStatus'] != "not_installed" or \ + currentState['actionRequest'] == "setup": + + # Add state for enabled products + productInfo['installationStatus']= currentState['installationStatus'] + productInfo['actionRequest']= currentState['actionRequest'] + + # Add properties + productInfo['action']= self.getPossibleProductActions_list(productId) + + # Load actual property values + propertyDefinitions= self.getProductPropertyDefinitions_listOfHashes(productId) + propertyValues= dict() + propertyDescriptions= dict() + propertyDefaults= dict() + + for property in propertyDefinitions: + if property.has_key('values'): + propertyValues[property['name']]= property['values'] + if property.has_key('description'): + propertyDescriptions[property['name']]= property['description'] + if property.has_key('default'): + propertyDefaults[property['name']]= property['default'] + + # Load all properties and complete with values/descriptions + combinedProperties= dict() + productProperties= self.getProductProperties_hash(productId, objectId) + properties= productProperties.keys() + for property in properties: + combinedProperties[property]= dict() + if propertyDescriptions.has_key(property): + combinedProperties[property]['description']= propertyDescriptions[property] + if propertyValues.has_key(property): + combinedProperties[property]['values']= propertyValues[property] + if propertyDefaults.has_key(property): + combinedProperties[property]['default']= propertyDefaults[property] + combinedProperties[property]['current']= productProperties[property] + + # Add product properties to current product info + productInfo['properties']= combinedProperties + + # Push information + result.append(productInfo) + + return result + -- 2.30.2