def getServicegroups(self, names): reString = '^' + '$|^'.join(names) + '$' queryString = "GET servicegroups\nColumns: name members\nFilter: name ~ " + reString + "\n" lines = self.query(queryString) idServicegroupMap = {} for line in lines: columns = line.split(';') name = columns[0] members = columns[1].split(',') idServicegroupMap[name] = Servicegroup(name) for member in members: elements = member.split('|') hostObjectId = elements[0] serviceObjectId = elements[1] if hostObjectId not in idServicegroupMap[name].hostObjectIds: if hostObjectId not in idServicegroupMap[ name].hostObjectIds: idServicegroupMap[name].addHostObjectId(hostObjectId) idServicegroupMap[name].hostServiceObjectIds[ hostObjectId] = [] idServicegroupMap[name].hostServiceObjectIds[ hostObjectId].append(serviceObjectId) return idServicegroupMap.values()
def getServicegroups(self, names): reString = '^' + '$|^'.join(names) + '$' queryString = "GET servicegroups\nColumns: name members\nFilter: name ~ " + reString + "\n" lines = self.query(queryString) idServicegroupMap = {} for line in lines: columns = line.split(';') name = columns[0] members = columns[1].split(',') idServicegroupMap[name] = Servicegroup(name) for member in members: elements = member.split('|') hostObjectId = elements[0] serviceObjectId = elements[1] if hostObjectId not in idServicegroupMap[name].hostObjectIds: if hostObjectId not in idServicegroupMap[name].hostObjectIds: idServicegroupMap[name].addHostObjectId(hostObjectId) idServicegroupMap[name].hostServiceObjectIds[hostObjectId] = [] idServicegroupMap[name].hostServiceObjectIds[hostObjectId].append(serviceObjectId) return idServicegroupMap.values()
def getServicegroups(self, names): idServicegroupMap = {} for name, members in self.servicegroupDefinitions: if name not in names: continue idServicegroupMap[name] = Servicegroup(name) hostObjectIds = members[0::2] serviceObjectIds = members[1::2] for hostObjectId, serviceObjectId in zip(hostObjectIds, serviceObjectIds): if hostObjectId not in idServicegroupMap[name].hostObjectIds: idServicegroupMap[name].addHostObjectId(hostObjectId) idServicegroupMap[name].hostServiceObjectIds[hostObjectId] = [] idServicegroupMap[name].hostServiceObjectIds[hostObjectId].append(serviceObjectId) return idServicegroupMap.values()
def getServicegroups(self, names): if len(names) == 0: return [] raise Exception("List of servicegroup names invalid or empty.") try: cursor = self.connection.cursor() whereClause = '") OR (name1="'.join(names) cursor.execute('SELECT name1, object_id FROM ' + self.prefix + '_objects WHERE (objecttype_id="4") AND ((name1="' + whereClause + '"))') rows = cursor.fetchall() if len(rows) != len(names): raise Exception("List of servicegroup names invalid or empty.") objectIdNameMap = {} for row in rows: objectIdNameMap[str(row[1])] = row[0] whereClause = '") OR (servicegroup_object_id="'.join( objectIdNameMap.keys()) cursor.execute( 'SELECT servicegroup_id, servicegroup_object_id FROM ' + self.prefix + '_servicegroups WHERE (servicegroup_object_id="' + whereClause + '")') rows = cursor.fetchall() # bis hier ok idServicegroupMap = {} for row in rows: name = objectIdNameMap[str(row[1])] idServicegroupMap[str(row[0])] = Servicegroup(name) # get all members whereClause = '") OR (servicegroup_id="'.join( idServicegroupMap.keys()) cursor.execute('SELECT service_object_id, servicegroup_id FROM ' + self.prefix + '_servicegroup_members WHERE (servicegroup_id="' + whereClause + '")') rows = cursor.fetchall() for row in rows: serviceId = str(row[0]) servicegroupId = str(row[1]) # find out the host in which the service is. cursor.execute('SELECT host_object_id FROM ' + self.prefix + '_services WHERE (service_object_id="' + serviceId + '")') hostId = str(cursor.fetchone()[0]) if hostId not in idServicegroupMap[ servicegroupId].hostObjectIds: idServicegroupMap[servicegroupId].addHostObjectId(hostId) idServicegroupMap[servicegroupId].hostServiceObjectIds[ hostId] = [] idServicegroupMap[servicegroupId].hostServiceObjectIds[ hostId].append(serviceId) cursor.close() return idServicegroupMap.values() except MySQLdb.Error, e: self.connection.close() raise Exception( "Couldn't fetch service information from database: " + str(e.args[1]))