def __init__(self, URI=None, config=None): self.clear_special_roles() self.directive_count = 0 self.directories = {} RadistNode.__init__(self, 'ix') content = adv_get_content(URI, config) clusters = {} for line, special in get_line_iterator(content, directives): if is_special_role(special): self.directive_count += 1 self.add_special_role(parse_special_role_directive(special)) elif is_directory(special): self.update_directories(special) self.directive_count += 1 x = self.__get_roles(line) if x is None: # server without roles, skip one continue server, roles = x # print "start dancing..." for role, attrs in roles: special = self.get_special(role, attrs) for path, node in special.get_extra_nodes(): if self.get_default(path, None) is None: self.add_node_to_path(path, node) for path, number in special.get_roles(): if type(number) != int: name = number else: if number == -1: if path not in clusters: clusters[path] = -1 clusters[path] += 1 number = clusters[path] name = "%03d" % number node = RadistNode(name) if self.directories_for(path, name): node.add_attr('primary', RadistPrimary(self.directories_for(path, name))) else: node.add_attr('primary', \ RadistPrimary('%(server)s:/spool/_R_/%(path)s:/spool/_R_/%(path)s/tmp-radist' % \ {'server': server, 'path': path.split('/')[-1]})) self.add_node_to_path('/'.join([path, node.name]), node)