Пример #1
0
    def create_root_aggregate(self, defaults):
        """
        If a root aggregate doesn't already exist, create one
        """
        try:
            aggr = self.get_root_aggregate()
            return
        except ValueError, valerr:
            try:
                root_aggr_name = defaults.get("vfiler", "default_root_aggregate")
                xmldata = """<aggregate type="root" name="%s"/>""" % root_aggr_name
                node = etree.fromstring(xmldata)
                aggr = Aggregate()
                aggr.configure_from_node(node, defaults, self)
                self.add_child(aggr)

            except (NoSectionError, NoOptionError), e:
                raise valerr
Пример #2
0
    def create_root_aggregate(self, defaults):
        """
        If a root aggregate doesn't already exist, create one
        """
        try:
            aggr = self.get_root_aggregate()
            return
        except ValueError, valerr:
            try:
                root_aggr_name = defaults.get('vfiler',
                                              'default_root_aggregate')
                xmldata = """<aggregate type="root" name="%s"/>""" % root_aggr_name
                node = etree.fromstring(xmldata)
                aggr = Aggregate()
                aggr.configure_from_node(node, defaults, self)
                self.add_child(aggr)

            except (NoSectionError, NoOptionError), e:
                raise valerr
Пример #3
0
    def find_target_aggr(self, targetfiler, aggrname, defaults):
        """
        Given a name, find the target aggregate in the config,
        or create a reference object if we just have a name
        """
        log.debug("Finding target aggregates...")
        try:
            targetaggr = [ x for x in targetfiler.get_aggregates() if x.name == aggrname ][0]
        except IndexError:
            # An indexerror means the aggregate isn't defined in the
            # project XML, which is ok. We invent an aggregate and
            # add it to the target filer.
            xmldata = """<aggregate name="%s" />""" % aggrname
            node = etree.fromstring(xmldata)
            targetaggr = Aggregate()
            targetaggr.configure_from_node(node, defaults, targetfiler)
            targetfiler.add_child(targetaggr)
            pass

        log.debug("Added a placeholder aggregate to project: %s", targetaggr)
        log.debug("%s", targetfiler.get_aggregates())
        return targetaggr
Пример #4
0
    def find_target_aggr(self, targetfiler, aggrname, defaults):
        """
        Given a name, find the target aggregate in the config,
        or create a reference object if we just have a name
        """
        log.debug("Finding target aggregates...")
        try:
            targetaggr = [
                x for x in targetfiler.get_aggregates() if x.name == aggrname
            ][0]
        except IndexError:
            # An indexerror means the aggregate isn't defined in the
            # project XML, which is ok. We invent an aggregate and
            # add it to the target filer.
            xmldata = """<aggregate name="%s" />""" % aggrname
            node = etree.fromstring(xmldata)
            targetaggr = Aggregate()
            targetaggr.configure_from_node(node, defaults, targetfiler)
            targetfiler.add_child(targetaggr)
            pass

        log.debug("Added a placeholder aggregate to project: %s", targetaggr)
        log.debug("%s", targetfiler.get_aggregates())
        return targetaggr