예제 #1
0
 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"])
예제 #2
0
 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)
예제 #3
0
    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)
예제 #4
0
    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)
예제 #5
0
 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)
예제 #6
0
 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)
예제 #7
0
 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)
예제 #8
0
 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()
예제 #9
0
 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)
예제 #10
0
 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
예제 #11
0
 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"])
예제 #12
0
 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
예제 #13
0
 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
예제 #14
0
 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
예제 #15
0
 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
예제 #16
0
 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
예제 #17
0
 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)
예제 #18
0
 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)
예제 #19
0
        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
예제 #20
0
 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)
예제 #21
0
 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
예제 #22
0
 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
예제 #23
0
 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)