예제 #1
0
def process_packages(pkgmgr, pkg_type, pkg_names, src_dir, repo_url, remove=False):
    exclude_string = " ."
    names = [p.strip() for p in pkg_names.split(",")]
    for name in names:
        print "Processing %s ... " % name
        if pkg_type == "client":
            pkg_dir = src_dir
            exclude_string = get_exclude_string(pkg_dir)
        elif pkg_type == "test":
            # if the package is a test then look whether it is in client/tests
            # or client/site_tests
            pkg_dir = os.path.join(get_test_dir(name, src_dir), name)
        else:
            # for the profilers and deps
            pkg_dir = os.path.join(src_dir, name)

        pkg_name = pkgmgr.get_tarball_name(name, pkg_type)
        if not remove:
            # Tar the source and upload
            temp_dir = tempfile.mkdtemp()
            try:
                try:
                    base_packages.check_diskspace(temp_dir)
                except error.RepoDiskFullError:
                    msg = "Temporary directory for packages  does not have " "enough space available"
                    raise error.RepoDiskFullError(msg)
                tarball_path = pkgmgr.tar_package(pkg_name, pkg_dir, temp_dir, exclude_string)
                pkgmgr.upload_pkg(tarball_path, repo_url, update_checksum=True)
            finally:
                # remove the temporary directory
                shutil.rmtree(temp_dir)
        else:
            pkgmgr.remove_pkg(pkg_name, repo_url, remove_checksum=True)
        print "Done."
예제 #2
0
def process_packages(pkgmgr, pkg_type, pkg_names, src_dir, remove=False):
    exclude_string = ' .'
    names = [p.strip() for p in pkg_names.split(',')]
    for name in names:
        print "Processing %s ... " % name
        if pkg_type == 'client':
            pkg_dir = src_dir
            exclude_string = get_exclude_string(pkg_dir)
        elif pkg_type == 'test':
            # if the package is a test then look whether it is in client/tests
            # or client/site_tests
            pkg_dir = os.path.join(get_test_dir(name, src_dir), name)
        else:
            # for the profilers and deps
            pkg_dir = os.path.join(src_dir, name)

        pkg_name = pkgmgr.get_tarball_name(name, pkg_type)
        if not remove:
            # Tar the source and upload
            temp_dir = tempfile.mkdtemp()
            try:
                try:
                    base_packages.check_diskspace(temp_dir)
                except error.RepoDiskFullError, e:
                    msg = ("Temporary directory for packages %s does not have "
                           "enough space available: %s" % (temp_dir, e))
                    raise error.RepoDiskFullError(msg)
                tarball_path = pkgmgr.tar_package(pkg_name, pkg_dir, temp_dir,
                                                  exclude_string)
                pkgmgr.upload_pkg(tarball_path, update_checksum=True)
            finally:
예제 #3
0
def process_all_packages(pkgmgr, client_dir, upload_paths, remove=False):
    """Process a full upload of packages as a directory upload."""
    test_dir = os.path.join(client_dir, "tests")
    site_test_dir = os.path.join(client_dir, "site_tests")
    dep_dir = os.path.join(client_dir, "deps")
    prof_dir = os.path.join(client_dir, "profilers")
    # Directory where all are kept
    temp_dir = tempfile.mkdtemp()
    try:
        base_packages.check_diskspace(temp_dir)
    except error.RepoDiskFullError:
        print ("Temp destination for packages is full %s, aborting upload" % temp_dir)
        os.rmdir(temp_dir)
        sys.exit(1)

    # process tests
    tests_list = get_subdir_list("tests", client_dir)
    tests = ",".join(tests_list)

    # process site_tests
    site_tests_list = get_subdir_list("site_tests", client_dir)
    site_tests = ",".join(site_tests_list)

    # process deps
    deps_list = get_subdir_list("deps", client_dir)
    deps = ",".join(deps_list)

    # process profilers
    profilers_list = get_subdir_list("profilers", client_dir)
    profilers = ",".join(profilers_list)

    # Update md5sum
    if not remove:
        tar_packages(pkgmgr, "profiler", profilers, prof_dir, temp_dir)
        tar_packages(pkgmgr, "dep", deps, dep_dir, temp_dir)
        tar_packages(pkgmgr, "test", site_tests, client_dir, temp_dir)
        tar_packages(pkgmgr, "test", tests, client_dir, temp_dir)
        tar_packages(pkgmgr, "client", "autotest", client_dir, temp_dir)
        cwd = os.getcwd()
        os.chdir(temp_dir)
        client_utils.system("md5sum * > packages.checksum")
        os.chdir(cwd)
        for path in upload_paths:
            print "Uploading to: " + path
            pkgmgr.upload_pkg(temp_dir, path)
        client_utils.run("rm -rf " + temp_dir)
    else:
        for repo_url in upload_paths:
            process_packages(pkgmgr, "test", tests, client_dir, repo_url, remove=remove)
            process_packages(pkgmgr, "test", site_tests, client_dir, repo_url, remove=remove)
            process_packages(pkgmgr, "client", "autotest", client_dir, repo_url, remove=remove)
            process_packages(pkgmgr, "dep", deps, dep_dir, repo_url, remove=remove)
            process_packages(pkgmgr, "profiler", profilers, prof_dir, repo_url, remove=remove)
예제 #4
0
def process_all_packages(pkgmgr, client_dir, remove=False):
    """Process a full upload of packages as a directory upload."""
    dep_dir = os.path.join(client_dir, "deps")
    prof_dir = os.path.join(client_dir, "profilers")
    # Directory where all are kept
    temp_dir = tempfile.mkdtemp()
    try:
        base_packages.check_diskspace(temp_dir)
    except error.RepoDiskFullError, e:
        print("Temp destination for packages is full %s, aborting upload: %s" %
              (temp_dir, e))
        os.rmdir(temp_dir)
        sys.exit(1)
예제 #5
0
def process_all_packages(pkgmgr, client_dir, remove=False):
    """Process a full upload of packages as a directory upload."""
    dep_dir = os.path.join(client_dir, "deps")
    prof_dir = os.path.join(client_dir, "profilers")
    # Directory where all are kept
    temp_dir = tempfile.mkdtemp()
    try:
        base_packages.check_diskspace(temp_dir)
    except error.RepoDiskFullError, e:
        print ("Temp destination for packages is full %s, aborting upload: %s"
               % (temp_dir, e))
        os.rmdir(temp_dir)
        sys.exit(1)
예제 #6
0
파일: packager.py 프로젝트: Poohby/autotest
def process_packages(pkgmgr, pkg_type, pkg_names, src_dir,
                    remove=False):
    include_string = " ."
    exclude_string = None
    names = [p.strip() for p in pkg_names.split(',')]
    for name in names:
        print "Processing %s ... " % name
        if pkg_type == 'client':
            pkg_dir = src_dir
            exclude_string = get_exclude_string(pkg_dir)
        elif pkg_type == 'test':
            # if the package is a test then look whether it is in client/tests
            # or client/site_tests
            pkg_dir = os.path.join(get_test_dir(name, src_dir), name)
        else:
            # for the profilers and deps
            pkg_dir = os.path.join(src_dir, name)

        pkg_name = pkgmgr.get_tarball_name(name, pkg_type)
        if not remove:
            # Tar the source and upload
            temp_dir = tempfile.mkdtemp()
            try:
                try:
                    base_packages.check_diskspace(temp_dir)
                except error.RepoDiskFullError, e:
                    msg = ("Temporary directory for packages %s does not have "
                           "enough space available: %s" % (temp_dir, e))
                    raise error.RepoDiskFullError(msg)
                tarball_path = pkgmgr.tar_package(pkg_name=pkg_name,
                                                  src_dir=pkg_dir,
                                                  dest_dir=temp_dir,
                                                  include_string=include_string,
                                                  exclude_string=exclude_string)
                pkgmgr.upload_pkg(tarball_path, update_checksum=True)
            finally: