def remove_packages(name, version, username, channel, auth_user): """ Remove any existing conanfiles or its packages created """ ref = ConanFileReference(name, version, username, channel) conan_service = ConanService(app.authorizer, app.server_store, auth_user) reader = codecs.getreader("utf-8") payload = json.load(reader(request.body)) conan_service.remove_packages(ref, payload["package_ids"])
def remove_conanfile_files(conanname, version, username, channel, auth_user): """ Remove any existing conanfiles or its packages created """ conan_reference = ConanFileReference(conanname, version, username, channel) conan_service = ConanService(app.authorizer, app.file_manager, auth_user) payload = json.load(request.body) files = [os.path.normpath(filename) for filename in payload["files"]] conan_service.remove_conanfile_files(conan_reference, files)
def setUp(self): self.conan_reference = ConanFileReference.loads("openssl/2.0.3@lasote/testing#%s" % DEFAULT_REVISION_V1) self.package_reference = PackageReference(self.conan_reference, "123123123", DEFAULT_REVISION_V1) self.tmp_dir = temp_folder() read_perms = [("*/*@*/*", "*")] write_perms = [] authorizer = BasicAuthorizer(read_perms, write_perms) self.fake_url = "http://url" updown_auth_manager = JWTUpDownAuthManager("secret", timedelta(seconds=200)) adapter = ServerDiskAdapter(self.fake_url, self.tmp_dir, updown_auth_manager) self.server_store = ServerStore(storage_adapter=adapter) self.service = ConanService(authorizer, self.server_store, "lasote") self.search_service = SearchService(authorizer, self.server_store, "lasote") files = hello_source_files("test") save_files(self.server_store.export(self.conan_reference), files) self.server_store.update_last_revision(self.conan_reference) self.conan_digest = FileTreeManifest.create(self.server_store.export(self.conan_reference)) conan_digest_path = os.path.join(self.server_store.export(self.conan_reference), CONAN_MANIFEST) save(conan_digest_path, str(self.conan_digest)) files = hello_source_files("package") save_files(self.server_store.package(self.package_reference), files)
def setUp(self): self.conan_reference = ConanFileReference.loads( "openssl/2.0.3@lasote/testing") self.package_reference = PackageReference(self.conan_reference, "123123123") self.tmp_dir = temp_folder() read_perms = [("*/*@*/*", "*")] write_perms = [] authorizer = BasicAuthorizer(read_perms, write_perms) self.fake_url = "http://url" updown_auth_manager = JWTUpDownAuthManager("secret", timedelta(seconds=200)) adapter = DiskAdapter(self.fake_url, self.tmp_dir, updown_auth_manager) self.paths = SimplePaths(self.tmp_dir) self.file_manager = FileManager(self.paths, adapter) self.service = ConanService(authorizer, self.file_manager, "lasote") files = hello_source_files("test") save_files(self.paths.export(self.conan_reference), files) self.conan_digest = FileTreeManifest.create( self.paths.export(self.conan_reference)) conan_digest_path = os.path.join( self.paths.export(self.conan_reference), CONAN_MANIFEST) save(conan_digest_path, str(self.conan_digest)) files = hello_source_files("package") save_files(self.paths.package(self.package_reference), files)
def remove_conanfile(conanname, version, username, channel, auth_user): """ Remove any existing conanfiles or its packages created """ conan_reference = ConanFileReference(conanname, version, username, channel) conan_service = ConanService(app.authorizer, app.file_manager, auth_user) conan_service.remove_conanfile(conan_reference)
def remove_recipe(name, version, username, channel, auth_user): """ Remove any existing conanfiles or its packages created. Will remove all revisions, packages and package revisions (parent folder)""" conan_reference = ConanFileReference(name, version, username, channel) conan_service = ConanService(app.authorizer, app.server_store, auth_user) conan_service.remove_conanfile(conan_reference)
def remove_conanfile_files(name, version, username, channel, auth_user, revision=None): """ Remove any existing conanfiles or its packages created """ conan_reference = ConanFileReference(name, version, username, channel, revision) conan_service = ConanService(app.authorizer, app.server_store, auth_user) reader = codecs.getreader("utf-8") payload = json.load(reader(request.body)) files = [os.path.normpath(filename) for filename in payload["files"]] conan_service.remove_conanfile_files(conan_reference, files)
def search(auth_user): pattern = request.params.get("q", None) ignorecase = request.params.get("ignorecase", True) if isinstance(ignorecase, str): ignorecase = False if 'false' == ignorecase.lower() else True conan_service = ConanService(app.authorizer, app.file_manager, auth_user) info = conan_service.search(pattern, ignorecase) return info.serialize()
def remove_packages_files(conanname, version, username, channel, package_id, auth_user): """ Remove any existing conanfiles or its packages created """ conan_service = ConanService(app.authorizer, app.file_manager, auth_user) reference = ConanFileReference(conanname, version, username, channel) package_reference = PackageReference(reference, package_id) reader = codecs.getreader("utf-8") payload = json.load(reader(request.body)) files = [os.path.normpath(filename) for filename in payload["files"]] conan_service.remove_package_files(package_reference, files)
def get_conanfile_download_urls(conanname, version, username, channel, auth_user): """ Get a dict with all files and the download url """ conan_service = ConanService(app.authorizer, app.file_manager, auth_user) reference = ConanFileReference(conanname, version, username, channel) urls = conan_service.get_conanfile_download_urls(reference) urls_norm = {filename.replace("\\", "/"): url for filename, url in urls.items()} return urls_norm
def remove_packages(conanname, version, username, channel, auth_user): """ Remove any existing conanfiles or its packages created """ conan_reference = ConanFileReference(conanname, version, username, channel) conan_service = ConanService(app.authorizer, app.file_manager, auth_user) payload = json.load(request.body) conan_service.remove_packages(conan_reference, payload["package_ids"])
def get_package_download_urls(conanname, version, username, channel, package_id, auth_user): """ Get a dict with all packages files and the download url for each one """ conan_service = ConanService(app.authorizer, app.file_manager, auth_user) reference = ConanFileReference(conanname, version, username, channel) package_reference = PackageReference(reference, package_id) urls = conan_service.get_package_download_urls(package_reference) urls_norm = {filename.replace("\\", "/"): url for filename, url in urls.iteritems()} return urls_norm
def get_conan_digest_url(conanname, version, username, channel, auth_user): """ Get a dict with all files and the download url """ conan_service = ConanService(app.authorizer, app.file_manager, auth_user) reference = ConanFileReference(conanname, version, username, channel) urls = conan_service.get_conanfile_download_urls(reference, [CONAN_MANIFEST]) if not urls: raise NotFoundException("No digest found") return urls
def get_conanfile_snapshot(conanname, version, username, channel, auth_user): """ Get a dictionary with all files and their each md5s """ conan_service = ConanService(app.authorizer, app.file_manager, auth_user) reference = ConanFileReference(conanname, version, username, channel) snapshot = conan_service.get_conanfile_snapshot(reference) snapshot_norm = {filename.replace("\\", "/"): the_md5 for filename, the_md5 in snapshot.items()} return snapshot_norm
def get_conanfile_upload_urls(conanname, version, username, channel, auth_user): """ Get a dict with all files and the upload url """ conan_service = ConanService(app.authorizer, app.file_manager, auth_user) reference = ConanFileReference(conanname, version, username, channel) reader = codecs.getreader("utf-8") filesizes = json.load(reader(request.body)) urls = conan_service.get_conanfile_upload_urls(reference, filesizes) urls_norm = {filename.replace("\\", "/"): url for filename, url in urls.items()} return urls_norm
def get_package_upload_urls(conanname, version, username, channel, package_id, auth_user): """ Get a dict with all files and the upload url """ conan_service = ConanService(app.authorizer, app.file_manager, auth_user) reference = ConanFileReference(conanname, version, username, channel) package_reference = PackageReference(reference, package_id) filesizes = json.load(request.body) urls = conan_service.get_package_upload_urls(package_reference, filesizes) urls_norm = {filename.replace("\\", "/"): url for filename, url in urls.iteritems()} return urls_norm
def remove_recipe_files(name, version, username, channel, auth_user): """ Remove any existing conanfiles or its packages created """ # The remove files is a part of the upload process, where the revision in v1 will always # be DEFAULT_REVISION_V1 revision = DEFAULT_REVISION_V1 ref = ConanFileReference(name, version, username, channel, revision) conan_service = ConanService(app.authorizer, app.server_store, auth_user) reader = codecs.getreader("utf-8") payload = json.load(reader(request.body)) files = [os.path.normpath(filename) for filename in payload["files"]] conan_service.remove_conanfile_files(ref, files)
def remove_all_packages(name, version, username, channel, auth_user, revision=None): """ Remove a file from a recipe. The revision is mandatory, because it comes from the upload and the revision is mandatory in v2""" conan_reference = ConanFileReference(name, version, username, channel, revision) conan_service = ConanService(app.authorizer, app.server_store, auth_user) conan_service.remove_all_packages(conan_reference)
def get_package_digest_url(conanname, version, username, channel, package_id, auth_user): """ Get a dict with all files and the download url """ conan_service = ConanService(app.authorizer, app.file_manager, auth_user) reference = ConanFileReference(conanname, version, username, channel) package_reference = PackageReference(reference, package_id) urls = conan_service.get_package_download_urls(package_reference, [CONAN_MANIFEST]) if not urls: raise NotFoundException("No digest found") urls_norm = {filename.replace("\\", "/"): url for filename, url in urls.items()} return urls_norm
def remove_package(name, version, username, channel, package_id, auth_user, revision=None, p_revision=None): """ - If both RRev and PRev are specified, it will remove the specific package revision of the specific recipe revision. - If PRev is NOT specified but RRev is specified (package_recipe_revision_url) it will remove all the package revisions - If PRev is NOT specified and RRev is NOT specified (package_url) it will remove ALL the package revisions for the specified "package_id" for all the recipe revisions (SAME AS V1) """ pref = get_package_ref(name, version, username, channel, package_id, revision, p_revision) conan_service = ConanService(app.authorizer, app.server_store, auth_user) conan_service.remove_package(pref)
def get_package_snapshot(name, version, username, channel, package_id, auth_user): """ Get a dictionary with all files and their each md5s """ conan_service = ConanService(app.authorizer, app.server_store, auth_user) reference = ConanFileReference(name, version, username, channel) package_reference = PackageReference(reference, package_id) snapshot = conan_service.get_package_snapshot(package_reference) snapshot_norm = { filename.replace("\\", "/"): the_md5 for filename, the_md5 in snapshot.items() } return snapshot_norm
def get_conanfile_upload_urls(name, version, username, channel, auth_user): """ Get a dict with all files and the upload url """ conan_service = ConanService(app.authorizer, app.server_store, auth_user) ref = ConanFileReference(name, version, username, channel, DEFAULT_REVISION_V1) reader = codecs.getreader("utf-8") filesizes = json.load(reader(request.body)) urls = conan_service.get_conanfile_upload_urls(ref, filesizes) urls_norm = { filename.replace("\\", "/"): url for filename, url in urls.items() } app.server_store.update_last_revision(ref) return urls_norm
def remove_conanfile(name, version, username, channel, auth_user, revision=None): """ Remove any existing conanfiles or its packages created """ conan_reference = ConanFileReference(name, version, username, channel, revision) conan_service = ConanService(app.authorizer, app.server_store, auth_user) conan_service.remove_conanfile(conan_reference)