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
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)
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
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)
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)
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
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