def group_values(lines): records = [] for _, records in itertools.groupby(lines, lambda row: row[0:2]): for __, by_value in itertools.groupby(records, lambda row: row[-3:]): recs = list( by_value) # consume the iterator so we can grab positionally first = recs[0] record = Record() record.name = first[0] record.type = first[1] if first[2].startswith('ALIAS'): _, alias_hosted_zone_id, alias_dns_name = first[2].split(':') record.alias_hosted_zone_id = alias_hosted_zone_id record.alias_dns_name = alias_dns_name else: record.resource_records = [r[2] for r in recs] record.ttl = first[3] record.region = first[4] or None record.weight = first[5] or None record.identifier = first[6] or None record.failover = first[7] or None if first[8] == 'True': record.alias_evaluate_target_health = True elif first[8] == 'False': record.alias_evaluate_target_health = False else: record.alias_evaluate_target_health = None yield record
def get_records(self): if self.name != 'test.': return [] r = Record() r.name = '_etcd-server._tcp.cluster.' + self.name r.type = 'SRV' return [r]
def group_values(lines): records = [] for _, records in itertools.groupby(lines, lambda row: row[0:2]): for __, by_value in itertools.groupby(records, lambda row: row[-3:]): recs = list(by_value) # consume the iterator so we can grab positionally first = recs[0] record = Record() record.name = first[0] record.type = first[1] if first[2].startswith('ALIAS'): _, alias_hosted_zone_id, alias_dns_name = first[2].split(':') record.alias_hosted_zone_id = alias_hosted_zone_id record.alias_dns_name = alias_dns_name else: record.resource_records = [r[2] for r in recs] record.ttl = first[3] record.region = first[4] or None record.weight = first[5] or None record.identifier = first[6] or None record.failover = first[7] or None if first[8] == 'True': record.alias_evaluate_target_health = True elif first[8] == 'False': record.alias_evaluate_target_health = False else: record.alias_evaluate_target_health = None yield record