示例#1
0
def install_requirements(virtualenv_path,
                         requirements_file_path,
                         proxy_config=None,
                         logger=None):
    """
    Install requirements from a file.
    """
    logger = logger or LOG
    pip_path = os.path.join(virtualenv_path, "bin/pip")
    pip_opts = cfg.CONF.actionrunner.pip_opts or []
    cmd = [pip_path]

    if proxy_config:
        cert = proxy_config.get("proxy_ca_bundle_path", None)
        https_proxy = proxy_config.get("https_proxy", None)
        http_proxy = proxy_config.get("http_proxy", None)

        if http_proxy:
            cmd.extend(["--proxy", http_proxy])

        if https_proxy:
            cmd.extend(["--proxy", https_proxy])

        if cert:
            cmd.extend(["--cert", cert])

    cmd.append("install")
    cmd.extend(pip_opts)
    cmd.extend(["-U", "-r", requirements_file_path])

    env = get_env_for_subprocess_command()

    logger.debug(
        "Installing requirements from file %s with command %s.",
        requirements_file_path,
        " ".join(cmd),
    )
    exit_code, stdout, stderr = run_command(cmd=cmd, env=env)

    # Normally we don't want this, even in debug logs. But it is useful to
    # investigate pip behavior changes & broken virtualenv integration tests.
    # logger.debug(f"\npip stdout=\n{stdout}")

    if exit_code != 0:
        stdout = to_ascii(stdout)
        stderr = to_ascii(stderr)

        raise Exception(
            'Failed to install requirements from "%s": %s (stderr: %s)' %
            (requirements_file_path, stdout, stderr))

    return True
示例#2
0
def install_requirements(virtualenv_path,
                         requirements_file_path,
                         proxy_config=None,
                         logger=None):
    """
    Install requirements from a file.
    """
    logger = logger or LOG
    pip_path = os.path.join(virtualenv_path, "bin/pip")
    pip_opts = cfg.CONF.actionrunner.pip_opts or []
    cmd = [pip_path]

    if proxy_config:
        cert = proxy_config.get("proxy_ca_bundle_path", None)
        https_proxy = proxy_config.get("https_proxy", None)
        http_proxy = proxy_config.get("http_proxy", None)

        if http_proxy:
            cmd.extend(["--proxy", http_proxy])

        if https_proxy:
            cmd.extend(["--proxy", https_proxy])

        if cert:
            cmd.extend(["--cert", cert])

    cmd.append("install")
    cmd.extend(pip_opts)
    cmd.extend(["-U", "-r", requirements_file_path])

    env = get_env_for_subprocess_command()

    logger.debug(
        "Installing requirements from file %s with command %s.",
        requirements_file_path,
        " ".join(cmd),
    )
    exit_code, stdout, stderr = run_command(cmd=cmd, env=env)

    if exit_code != 0:
        stdout = to_ascii(stdout)
        stderr = to_ascii(stderr)

        raise Exception(
            'Failed to install requirements from "%s": %s (stderr: %s)' %
            (requirements_file_path, stdout, stderr))

    return True
    def test_to_ascii(self):
        expected_values = [('already ascii', 'already ascii'), (u'foo', 'foo'),
                           ('٩(̾●̮̮̃̾•̃̾)۶', '()'), ('\xd9\xa9', '')]

        for input_value, expected_value in expected_values:
            result = to_ascii(input_value)
            self.assertEqual(result, expected_value)
示例#4
0
def install_requirements(virtualenv_path, requirements_file_path):
    """
    Install requirements from a file.
    """
    pip_path = os.path.join(virtualenv_path, 'bin/pip')
    cmd = [pip_path, 'install', '-U', '-r', requirements_file_path]
    env = get_env_for_subprocess_command()
    exit_code, stdout, stderr = run_command(cmd=cmd, env=env)

    if exit_code != 0:
        stdout = to_ascii(stdout)
        stderr = to_ascii(stderr)

        raise Exception('Failed to install requirements from "%s": %s (stderr: %s)' %
                        (requirements_file_path, stdout, stderr))

    return True
示例#5
0
    def test_to_ascii(self):
        expected_values = [
            ("already ascii", "already ascii"),
            ("foo", "foo"),
            ("٩(̾●̮̮̃̾•̃̾)۶", "()"),
            ("\xd9\xa9", ""),
        ]

        for input_value, expected_value in expected_values:
            result = to_ascii(input_value)
            self.assertEqual(result, expected_value)
示例#6
0
    def test_to_ascii(self):
        expected_values = [
            ('already ascii', 'already ascii'),
            (u'foo', 'foo'),
            ('٩(̾●̮̮̃̾•̃̾)۶', '()'),
            ('\xd9\xa9', '')
        ]

        for input_value, expected_value in expected_values:
            result = to_ascii(input_value)
            self.assertEqual(result, expected_value)
示例#7
0
def install_requirements(virtualenv_path,
                         requirements_file_path,
                         proxy_config=None,
                         logger=None):
    """
    Install requirements from a file.
    """
    logger = logger or LOG
    pip_path = os.path.join(virtualenv_path, 'bin/pip')
    cmd = [pip_path]

    if proxy_config:
        cert = proxy_config.get('proxy_ca_bundle_path', None)
        https_proxy = proxy_config.get('https_proxy', None)
        http_proxy = proxy_config.get('http_proxy', None)

        if http_proxy:
            cmd.extend(['--proxy', http_proxy])

        if https_proxy:
            cmd.extend(['--proxy', https_proxy])

        if cert:
            cmd.extend(['--cert', cert])

    cmd.extend(['install', '-U', '-r', requirements_file_path])
    env = get_env_for_subprocess_command()

    logger.debug('Installing requirements from file %s with command %s.',
                 requirements_file_path, ' '.join(cmd))
    exit_code, stdout, stderr = run_command(cmd=cmd, env=env)

    if exit_code != 0:
        stdout = to_ascii(stdout)
        stderr = to_ascii(stderr)

        raise Exception(
            'Failed to install requirements from "%s": %s (stderr: %s)' %
            (requirements_file_path, stdout, stderr))

    return True
示例#8
0
文件: virtualenvs.py 项目: nzlosh/st2
def install_requirements(virtualenv_path, requirements_file_path, proxy_config=None, logger=None):
    """
    Install requirements from a file.
    """
    logger = logger or LOG
    pip_path = os.path.join(virtualenv_path, 'bin/pip')
    cmd = [pip_path]

    if proxy_config:
        cert = proxy_config.get('proxy_ca_bundle_path', None)
        https_proxy = proxy_config.get('https_proxy', None)
        http_proxy = proxy_config.get('http_proxy', None)

        if http_proxy:
            cmd.extend(['--proxy', http_proxy])

        if https_proxy:
            cmd.extend(['--proxy', https_proxy])

        if cert:
            cmd.extend(['--cert', cert])

    cmd.extend(['install', '-U', '-r', requirements_file_path])
    env = get_env_for_subprocess_command()

    logger.debug('Installing requirements from file %s with command %s.',
                 requirements_file_path, ' '.join(cmd))
    exit_code, stdout, stderr = run_command(cmd=cmd, env=env)

    if exit_code != 0:
        stdout = to_ascii(stdout)
        stderr = to_ascii(stderr)

        raise Exception('Failed to install requirements from "%s": %s (stderr: %s)' %
                        (requirements_file_path, stdout, stderr))

    return True