Example #1
0
    def _get_config(self):
        """Get the fetcher config element from desired_status
        """
        # The config element for the fetcher is just what desired
        # status says it is.
        try:
            ds_elt = copy.deepcopy(context.get_worker_elt(self.name))
            c_elt = ds_elt.find("config")
        except:
            c_elt = etree.Element("config")

        return c_elt
Example #2
0
    def generate_status(self):
        """Generate worker status element.

        Part generated: Everything from desired status is just
        returned, apart from:
          - versionInstalled: auto-generated from installed packages
        """
        # The current status of machination is just what desired
        # status says it is, apart from installedVersion.

        # Copy the __machination__ worker element as our starting point.
        w_elt = copy.deepcopy(context.get_worker_elt(self.name))

        # Grab the installedVersion element.
        try:
            desiv = w_elt.xpath("installedVersion")[0]
        except IndexError:
            # No installedVersion, create an empty one for the rest of
            # the algorithm.
            desiv = etree.Element("installedVersion")
        else:
            w_elt.remove(desiv)

        # Find installedVersion information
        geniv = getattr(self, self.get_installed_func())()
        # Use geniv as a template to build new element. We do this so
        # that the installedVersion element's children are in the same
        # order.
        self.generated_iv = etree.Element("installedVersion")
        for desb in desiv.xpath("machinationFetcherBundle"):
            try:
                genb = geniv.xpath('machinationFetcherBundle[@id="{}"]'.format(desb.get("id")))[0]
            except IndexError:
                # No counterpart.
                pass
            else:
                # Found counterpart in geniv, add to generated_iv.
                self.generated_iv.append(genb)
        # Now add any elements left in geniv to generated_iv
        for genb in geniv:
            self.generated_iv.append(genb)

        w_elt.append(self.generated_iv)

        return xmltools.mc14n(w_elt)