def _groupPfsIniByInstanceName(profiles): r''' Group profiles by instance to which they belong @types: list[tuple[str, str]] -> dict[str, InstancePfSet] @param profiles: list of tuples where first item is name and other is content of profile @return: dictionary of grouped profilesby instance name ''' pfSetByInstName = {} iniParser = IniParser() for pfName, pfContent in profiles: instName = (StartProfileParser.parseInstanceNameFromPfName(pfName) or InstanceProfileParser.parseInstanceNameFromPfName(pfName)) if instName: iniDoc = iniParser.parseIniDoc(pfContent) pfSet = pfSetByInstName.get(instName, InstancePfSet(None, None)) if StartProfileParser.isApplicable(pfName): pfSetByInstName[instName] = pfSet._replace(startPfIni=iniDoc) elif InstanceProfileParser.isApplicable(pfName): pfSetByInstName[instName] = pfSet._replace(instancePfIni=iniDoc) else: logger.warn("Failed to determine profile type: %s" % pfName) return pfSetByInstName