Disable Recommends and Suggests packages
Disable Recommends and Suggests package installs, inside Ubuntu target-image Change-Id: Ie8a450a960b9b00cd4d2c0545a19678baed147d6 Co-Authored-By: Ivan Suzdal <isuzdal@mirantis.com> Closes-Bug: 1664152
This commit is contained in:
parent
b419f9a21e
commit
6f6fd2fa42
|
@ -160,7 +160,7 @@ class BuildUtilsTestCase(unittest2.TestCase):
|
|||
@mock.patch.object(bu, 'clean_dirs')
|
||||
def test_clean_apt_settings(self, mock_dirs, mock_files):
|
||||
bu.clean_apt_settings('chroot', 'unsigned', 'force_ipv4',
|
||||
'pipeline_depth')
|
||||
'pipeline_depth', 'install_rule')
|
||||
mock_dirs.assert_called_once_with(
|
||||
'chroot', ['etc/apt/preferences.d', 'etc/apt/sources.list.d'])
|
||||
files = set(['etc/apt/sources.list', 'etc/apt/preferences',
|
||||
|
@ -169,7 +169,9 @@ class BuildUtilsTestCase(unittest2.TestCase):
|
|||
'etc/apt/apt.conf.d/%s' % 'pipeline_depth',
|
||||
'etc/apt/apt.conf.d/01fuel_agent-use-proxy-ftp',
|
||||
'etc/apt/apt.conf.d/01fuel_agent-use-proxy-http',
|
||||
'etc/apt/apt.conf.d/01fuel_agent-use-proxy-https'])
|
||||
'etc/apt/apt.conf.d/01fuel_agent-use-proxy-https',
|
||||
'etc/apt/apt.conf.d/%s' % 'install_rule',
|
||||
])
|
||||
self.assertEqual('chroot', mock_files.call_args[0][0])
|
||||
self.assertEqual(files, set(mock_files.call_args[0][1]))
|
||||
|
||||
|
@ -213,7 +215,8 @@ class BuildUtilsTestCase(unittest2.TestCase):
|
|||
hashed_root_password=password,
|
||||
allow_unsigned_file='fake_unsigned',
|
||||
force_ipv4_file='fake_force_ipv4',
|
||||
pipeline_depth_file='fake_pipeline_depth')
|
||||
pipeline_depth_file='fake_pipeline_depth',
|
||||
install_rule_file='fake_install_rule')
|
||||
|
||||
file_handle_mock = mock_open.return_value.__enter__.return_value
|
||||
file_handle_mock.write.assert_called_once_with('manual\n')
|
||||
|
@ -236,7 +239,8 @@ class BuildUtilsTestCase(unittest2.TestCase):
|
|||
'chroot',
|
||||
allow_unsigned_file='fake_unsigned',
|
||||
force_ipv4_file='fake_force_ipv4',
|
||||
pipeline_depth_file='fake_pipeline_depth')
|
||||
pipeline_depth_file='fake_pipeline_depth',
|
||||
install_rule_file='fake_install_rule')
|
||||
mock_path_join_expected_calls = [
|
||||
mock.call('chroot', 'etc/shadow'),
|
||||
mock.call('chroot', 'etc/init.d/puppet'),
|
||||
|
@ -527,25 +531,33 @@ class BuildUtilsTestCase(unittest2.TestCase):
|
|||
file_handle_mock = mock_open.return_value.__enter__.return_value
|
||||
bu.pre_apt_get('chroot', allow_unsigned_file='fake_unsigned',
|
||||
force_ipv4_file='fake_force_ipv4',
|
||||
pipeline_depth_file='fake_pipeline_depth')
|
||||
pipeline_depth_file='fake_pipeline_depth',
|
||||
install_rule_file='fake_install_rule')
|
||||
expected_calls = [
|
||||
mock.call('APT::Get::AllowUnauthenticated 1;\n'),
|
||||
mock.call('Acquire::ForceIPv4 "true";\n'),
|
||||
mock.call('Acquire::http::Pipeline-Depth 0;\n')]
|
||||
mock.call('Acquire::http::Pipeline-Depth 0;\n'),
|
||||
mock.call('APT::Install-Recommends "false";\n'),
|
||||
mock.call('APT::Install-Suggests "false";\n')]
|
||||
self.assertEqual(expected_calls,
|
||||
file_handle_mock.write.call_args_list)
|
||||
mock_clean.assert_called_once_with(
|
||||
'chroot',
|
||||
allow_unsigned_file='fake_unsigned',
|
||||
force_ipv4_file='fake_force_ipv4',
|
||||
pipeline_depth_file='fake_pipeline_depth')
|
||||
pipeline_depth_file='fake_pipeline_depth',
|
||||
install_rule_file='fake_install_rule')
|
||||
expected_join_calls = [
|
||||
mock.call('chroot', 'etc/apt/apt.conf.d',
|
||||
'fake_unsigned'),
|
||||
mock.call('chroot', 'etc/apt/apt.conf.d',
|
||||
'fake_force_ipv4'),
|
||||
mock.call('chroot', 'etc/apt/apt.conf.d',
|
||||
'fake_pipeline_depth')]
|
||||
'fake_pipeline_depth'),
|
||||
mock.call('chroot', 'etc/apt/apt.conf.d',
|
||||
'fake_install_rule'),
|
||||
mock.call('chroot', 'etc/apt/apt.conf.d',
|
||||
'fake_install_rule')]
|
||||
self.assertEqual(expected_join_calls, mock_path.join.call_args_list)
|
||||
|
||||
@mock.patch.object(bu.utils, 'execute')
|
||||
|
|
|
@ -161,13 +161,15 @@ def remove_files(chroot, files):
|
|||
|
||||
def clean_apt_settings(chroot, allow_unsigned_file='allow_unsigned_packages',
|
||||
force_ipv4_file='force_ipv4',
|
||||
pipeline_depth_file='pipeline_depth'):
|
||||
pipeline_depth_file='pipeline_depth',
|
||||
install_rule_file='install_rule'):
|
||||
"""Cleans apt settings such as package sources and repo pinning."""
|
||||
files = [DEFAULT_APT_PATH['sources_file'],
|
||||
DEFAULT_APT_PATH['preferences_file'],
|
||||
os.path.join(DEFAULT_APT_PATH['conf_dir'], force_ipv4_file),
|
||||
os.path.join(DEFAULT_APT_PATH['conf_dir'], allow_unsigned_file),
|
||||
os.path.join(DEFAULT_APT_PATH['conf_dir'], pipeline_depth_file)]
|
||||
os.path.join(DEFAULT_APT_PATH['conf_dir'], pipeline_depth_file),
|
||||
os.path.join(DEFAULT_APT_PATH['conf_dir'], install_rule_file)]
|
||||
# also remove proxies
|
||||
for p_file in six.itervalues(PROXY_PROTOCOLS):
|
||||
files.append(os.path.join(DEFAULT_APT_PATH['conf_dir'], p_file))
|
||||
|
@ -193,7 +195,8 @@ def fix_cloud_init_config(config_path):
|
|||
def do_post_inst(chroot, hashed_root_password,
|
||||
allow_unsigned_file='allow_unsigned_packages',
|
||||
force_ipv4_file='force_ipv4',
|
||||
pipeline_depth_file='pipeline_depth'):
|
||||
pipeline_depth_file='pipeline_depth',
|
||||
install_rule_file='install_rule'):
|
||||
# NOTE(agordeev): set up password for root
|
||||
utils.execute('sed', '-i',
|
||||
's%root:[\*,\!]%root:' + hashed_root_password + '%',
|
||||
|
@ -238,7 +241,8 @@ def do_post_inst(chroot, hashed_root_password,
|
|||
utils.execute('chroot', chroot, 'apt-get', 'clean')
|
||||
clean_apt_settings(chroot, allow_unsigned_file=allow_unsigned_file,
|
||||
force_ipv4_file=force_ipv4_file,
|
||||
pipeline_depth_file=pipeline_depth_file)
|
||||
pipeline_depth_file=pipeline_depth_file,
|
||||
install_rule_file=install_rule_file)
|
||||
|
||||
|
||||
def stop_chrooted_processes(chroot, signal=sig.SIGTERM,
|
||||
|
@ -537,11 +541,13 @@ def set_apt_proxy(chroot, proxies, direct_repo_addr=None):
|
|||
def pre_apt_get(chroot, allow_unsigned_file='allow_unsigned_packages',
|
||||
force_ipv4_file='force_ipv4',
|
||||
pipeline_depth_file='pipeline_depth',
|
||||
install_rule_file='install_rule',
|
||||
proxies=None, direct_repo_addr=None):
|
||||
"""It must be called prior run_apt_get."""
|
||||
clean_apt_settings(chroot, allow_unsigned_file=allow_unsigned_file,
|
||||
force_ipv4_file=force_ipv4_file,
|
||||
pipeline_depth_file=pipeline_depth_file)
|
||||
pipeline_depth_file=pipeline_depth_file,
|
||||
install_rule_file=install_rule_file)
|
||||
# NOTE(agordeev): allow to install packages without gpg digest
|
||||
with open(os.path.join(chroot, DEFAULT_APT_PATH['conf_dir'],
|
||||
allow_unsigned_file), 'w') as f:
|
||||
|
@ -552,7 +558,12 @@ def pre_apt_get(chroot, allow_unsigned_file='allow_unsigned_packages',
|
|||
with open(os.path.join(chroot, DEFAULT_APT_PATH['conf_dir'],
|
||||
pipeline_depth_file), 'w') as f:
|
||||
f.write('Acquire::http::Pipeline-Depth 0;\n')
|
||||
|
||||
with open(os.path.join(chroot, DEFAULT_APT_PATH['conf_dir'],
|
||||
install_rule_file), 'w') as f:
|
||||
f.write('APT::Install-Recommends "false";\n')
|
||||
with open(os.path.join(chroot, DEFAULT_APT_PATH['conf_dir'],
|
||||
install_rule_file), 'a') as f:
|
||||
f.write('APT::Install-Suggests "false";\n')
|
||||
if proxies:
|
||||
set_apt_proxy(chroot, proxies, direct_repo_addr)
|
||||
|
||||
|
|
Loading…
Reference in New Issue