def remove_packages(self, ref, package_ids): """ Remove any packages specified by package_ids""" self.check_credentials() if ref.revision is None: # Remove the packages from all the RREVs revisions = self.get_recipe_revisions(ref) refs = [ref.copy_with_rev(rev["revision"]) for rev in revisions] else: refs = [ref] for ref in refs: assert ref.revision is not None, "remove_packages needs RREV" if not package_ids: url = self.router.remove_all_packages(ref) response = self.requester.delete(url, auth=self.auth, verify=self.verify_ssl, headers=self.custom_headers) if response.status_code == 404: # Double check if it is a 404 because there are no packages try: package_search_url = self.router.search_packages(ref) if not self.get_json(package_search_url): return except Exception as e: logger.warning("Unexpected error searching {} packages" " in remote {}: {}".format( ref, self.remote_url, e)) if response.status_code != 200: # Error message is text # To be able to access ret.text (ret.content are bytes) response.charset = "utf-8" raise get_exception_from_error(response.status_code)( response.text) else: for pid in package_ids: pref = PackageReference(ref, pid) revisions = self.get_package_revisions(pref) prefs = [ pref.copy_with_revs(ref.revision, rev["revision"]) for rev in revisions ] for pref in prefs: url = self.router.remove_package(pref) response = self.requester.delete( url, auth=self.auth, headers=self.custom_headers, verify=self.verify_ssl) if response.status_code == 404: raise PackageNotFoundException(pref) if response.status_code != 200: # Error message is text # To be able to access ret.text (ret.content are bytes) response.charset = "utf-8" raise get_exception_from_error( response.status_code)(response.text)
def remove_packages(self, ref, package_ids=None): """ Remove any packages specified by package_ids""" self.check_credentials() if ref.revision is None: # Remove the packages from all the RREVs revisions = self.get_recipe_revisions(ref) refs = [ref.copy_with_rev(rev["revision"]) for rev in revisions] else: refs = [ref] for ref in refs: assert ref.revision is not None, "remove_packages needs RREV" if not package_ids: url = self.router.remove_all_packages(ref) response = self.requester.delete(url, auth=self.auth, headers=self.custom_headers, verify=self.verify_ssl) if response.status_code != 200: # Error message is text # To be able to access ret.text (ret.content are bytes) response.charset = "utf-8" raise get_exception_from_error(response.status_code)( response.text) else: for pid in package_ids: pref = PackageReference(ref, pid) revisions = self.get_package_revisions(pref) prefs = [ pref.copy_with_revs(ref.revision, rev["revision"]) for rev in revisions ] for pref in prefs: url = self.router.remove_package(pref) response = self.requester.delete( url, auth=self.auth, headers=self.custom_headers, verify=self.verify_ssl) if response.status_code == 404: raise PackageNotFoundException(pref) if response.status_code != 200: # Error message is text # To be able to access ret.text (ret.content are bytes) response.charset = "utf-8" raise get_exception_from_error( response.status_code)(response.text)
def remove_conanfile(self, ref): """ Remove a recipe and packages """ self.check_credentials() if ref.revision is None: # Remove all the RREVs revisions = self.get_recipe_revisions(ref) refs = [ref.copy_with_rev(rev["revision"]) for rev in revisions] else: refs = [ref] for ref in refs: url = self.router.remove_recipe(ref) logger.debug("REST: remove: %s" % url) response = self.requester.delete(url, auth=self.auth, headers=self.custom_headers, verify=self.verify_ssl) if response.status_code == 404: raise RecipeNotFoundException(ref) if response.status_code != 200: # Error message is text # To be able to access ret.text (ret.content are bytes) response.charset = "utf-8" raise get_exception_from_error(response.status_code)(response.text)