def __translate(self, obj, newObj, index=False): mainMap = self.__getMap(classUtility.getType(obj)) if mainMap: for attr in classUtility.getAttrList(obj): subObj = getattr(obj, attr) objType = classUtility.getType(subObj) if objType == 'dict': newObj = self.__transDict2Attr(attr, subObj, newObj, mainMap) elif objType == 'list': myObjList = self.__transList(subObj) setattr(newObj, self.__newType(attr), myObjList) elif objType in ['unicode', 'str']: if self.__isTranslable(attr, mainMap): newKey = mainMap[attr] if '->' in newKey: exName, exAttr = newKey.split('->') extraObj = getClassObj(exName) setattr(extraObj, exName, subObj) else: setattr(newObj, newKey, subObj) else: if self.__isTranslable(objType, Mapping): newType = self.__newType(objType) if newType: subNewObj = self.__getNewObj(objType) subNewObj = self.__translate(subObj, subNewObj) else: newObj = self.__translate(subObj, newObj) else: for attr in classUtility.getAttrList(obj): setattr(newObj, attr, getattr(obj, attr)) return newObj
def __transList(self, subObj): myList = [] i = 0 for sub in subObj: if classUtility.getType(sub) not in classUtility.DATA_TYPES: subNewObj = self.__getNewObj(classUtility.getType(sub)) subNewObj = self.__translate(sub, subNewObj, index=i) i += 1 myList.append(subNewObj) return myList
def sendoutEvent(self, rawData, count=False, community=None, version=None, utf_8=True): """This method will take raw data, with counts to send out data.""" myCount = 1 myComm = DEFAULT_COMM myVer = DEFAULT_VER if count: myCount = int(count) if community: myComm = community if version: myVer = version for i in range(myCount): if getType(rawData) == 'list': for msg in rawData: if self.snmp: self.eventHandler.sendEvent(msg, self.type, myComm, myVer, utf_8) else: self.eventHandler.sendEvent(msg, self.type, utf_8) else: if self.snmp: self.eventHandler.sendEvent(rawData, self.type, myComm, myVer, utf_8) else: self.eventHandler.sendEvent(rawData, self.type, utf_8)
def getData(self, type, index=True, pickle=True): if pickle: data = self.__getData(type) else: data = self.__getData(type, pickle=False) if pickle and index: indexData = {} keyItem = testUtility.getKey(type) for item in data: if 'Attribute-' in keyItem: key = item.attribute[keyItem.split('-')[-1]] elif classUtility.getType(keyItem) == 'list': values = [] for subKey in keyItem: values.append(getattr(item, subKey)) key = '-'.join(values) else: key = getattr(item, keyItem) indexData[key] = item if type in TestConstant.special_handling: finalData = self.__specialHandling(type, indexData) else: finalData = indexData else: finalData = data return finalData
def listToClass(key, list, objModule): objList = [] if key in create_device_wrap: objName = create_device_wrap[key] else: objName = key[0:-1] for item in list: if classUtility.getType(item) == 'dict': subObj = getClassObj(objName, module=objModule) subObj = hashToClass(item, subObj) objList.append(subObj) return objList
def rekeyKey(keyName, data): newData={} for key in data.keys(): if classUtility.getType(data[key])=='list': for sub in data[key]: if 'Attribute-' in keyName: newKey=sub.attribute[keyName.split('-')[-1]] else: newKey=getattr(sub, keyName) newData[newKey]=key else: if 'Attribute-' in keyName: newKey=data[key].attribute[keyName.split('-')[-1]] else: newKey=getattr(data[key], keyName) newData[newKey]=key return newData
def hashToClass(hash, obj, objModule=False): attrKeys = hash.keys() for key in attrKeys: subType = classUtility.getType(hash[key]) if subType == 'list': objList = listToClass(key, hash[key], objModule) setattr(obj, key, objList) elif subType == 'dict': if key == 'attribute': setattr(obj, 'attribute', hash[key]) else: subObj = hashToClass(hash[key], getClassObj(key, module=objModule)) setattr(obj, key, subObj) elif subType == 'str': setattr(obj, key, hash[key]) return obj
def doTranslate(self, obj): newObj = self.__getNewObj(classUtility.getType(obj)) newObj = self.__translate(obj, newObj) return newObj
def _setType(self, object): return classUtility.getType(object) + 's'
def formatData(reader, fileName, type=False): formattedData={} specialKey='' if type: type, objType=retriveType(fileName, type=type) else: type, objType=retriveType(fileName) nameMap=myConstant.data_structure[objType] for item in reader: if metCondition(item): map={} for numkey in nameMap.keys(): if numkey > (len(item)-1): map[nameMap[numkey]]='' else: nums=nameMap[numkey] if classUtility.getType(nums)=='list': for subKey in nums: map[subKey]=item[numkey].strip() else: map[nums]=item[numkey].strip() myObj=locateClassInstance.getClassInstance(objType) for key in map.keys(): if 'Attribute-' in key: myObj.attribute[key.split('-')[-1].strip()]=map[key].strip() else: if key in myConstant.special_keys: value=specialFormat(key, map[key]) else: value=map[key] setattr(myObj, key, value) if objType=='group': myObj.attribute['type']=myConstant.group_tasks[type] elif objType=='eventAttributeType': myList=item[4:9] myList.extend(item[10:14]) myList.extend(item[15:22]) myObj.categories=getCategories(myList) elif objType=='deviceType': myObj.sysDefined='true' elif objType=='eventCode': if '$' in myObj.code: specialKey=myObj.code.split('$')[-1] myObj.eventAttributeType=specialKey map['eventAttributeType']=specialKey keys=getKeys(objType) values=[] if classUtility.getType(keys)=='list': for key in keys: values.append(map[key]) value='-'.join(values) else: value=map[keys] formattedData[value]=myObj if formattedData: if objType in myConstant.special_package: finalData=specialProcess(objType, formattedData) else: finalData=formattedData else: print '%s has empty file.' % fileName.split('/')[-1] finalData='' return finalData