def setUp(self): yum_metadata_obj = YumMetadataObj(repo_label=self.repo_label, repo_url=self.repo_url, mirrorlist=self.mirrors, cacert=self.sslcacert, clicert=self.sslclientcert, clikey=self.sslclientkey, proxy_url=self.proxy_url, proxy_port=self.proxy_port, proxy_user=self.proxy_user, proxy_pass=self.proxy_pass, sslverify=self.sslverify, tmp_path=self.tmp_path, filter=self.filter, num_retries=self.num_retries, retry_delay=self.retry_delay) yumAO = None try: yumAO = ActiveObject(yum_metadata_obj) download_items = yumAO.getDownloadItems( repo_dir=self.repo_dir, packages_location=self.pkgpath, newest=self.newest, remove_old=self.remove_old, numOldPackages=self.numOldPackages, skip=self.skip) if download_items.has_key("rpms"): if download_items["rpms"]: self.rpms.extend(download_items["rpms"]) if download_items.has_key("drpms"): if download_items["drpms"]: self.drpms.extend(download_items["drpms"]) finally: # Force __del__ to be called on ActiveObject del yumAO
def prepareTrees(self, fetcher): fetcherAO = ActiveObject(fetcher) try: LOG.info("Checking if distribution info exists in repository: %s" % (self.repo_url)) tree_manifest = self.get_tree_manifest(fetcherAO) if not tree_manifest: LOG.info("No distribution tree manifest found.") return [] return self.__prepareTrees(tree_manifest) finally: #Note: We want to explicitly kill the child activeobject # so will use abort() on activeobject's Method class fetcherAO.dummy_method.abort() # We were seeing the invocation of __del__() on activeobject # being delayed, hence child processes weren't dying when they should. # therefore we added the explicit abort() del fetcherAO fetchAO = None