Ejemplo n.º 1
0
        def mark_software_not_available(software, version):
            url = ("{master_api}/agents/{agent}/software/{software}/"
                    "versions/{version}").format(
                        master_api=config.get("master_api"),
                        agent=config.get("agent_id"),
                        software=software,
                        version=version)
            while True:
                try:
                    response = yield delete_direct(url)
                except Exception as error:
                    delay = http_retry_delay()
                    logger.error(
                        "Failed to remove software %s, version %s from this "
                        "agent on master: %r. Will retry in %s seconds.",
                        software, version, error, delay)
                    deferred = Deferred()
                    reactor.callLater(delay, deferred.callback, None)
                    yield deferred

                else:
                    data = yield treq.content(response)

                    if response.code in [OK, ACCEPTED, NO_CONTENT]:
                        logger.info("Removed software %s, version %s from this "
                                    "agent on master.", software, version)
                        break

                    elif response.code >= INTERNAL_SERVER_ERROR:
                        delay = http_retry_delay()
                        logger.warning(
                            "Could not remove software %s, version %s from "
                            "this agent. The master responded with "
                            "INTERNAL_SERVER_ERROR.  Retrying in %s "
                            "seconds.", software, version, delay)

                        deferred = Deferred()
                        reactor.callLater(delay, deferred.callback, None)
                        yield deferred

                    else:
                        logger.error(
                            "Failed to remove software %s, version %s from "
                            "this agent: "
                            "Unexpected status from server %s. Data: %s",
                            software, version, response.code, data)
                        break

            if self.testing:
                self.operation_deferred.callback(None)
Ejemplo n.º 2
0
 def delete(self, url, **kwargs):
     return delete_direct(self.get_url(url), **kwargs)