diff options
Diffstat (limited to 'patches/fuel-agent/0001-Use-qemu-debootstrap-for-image-creation.patch')
-rw-r--r-- | patches/fuel-agent/0001-Use-qemu-debootstrap-for-image-creation.patch | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/patches/fuel-agent/0001-Use-qemu-debootstrap-for-image-creation.patch b/patches/fuel-agent/0001-Use-qemu-debootstrap-for-image-creation.patch new file mode 100644 index 00000000..28ef2cff --- /dev/null +++ b/patches/fuel-agent/0001-Use-qemu-debootstrap-for-image-creation.patch @@ -0,0 +1,160 @@ +From: Stanislaw Kardach <stanislaw.kardach@caviumnetworks.com> +Date: Thu, 25 Feb 2016 13:38:14 +0100 +Subject: [PATCH] Use qemu-debootstrap for image creation + +This commit adds qemu-debootstrap support and a command line argument +`target_arch` which can be used for choosing the architecture to build +the image for. The architecture detection from environment settings is +not yet implemented. +--- + .../fuel_bootstrap_cli/fuel_bootstrap/commands/build.py | 8 ++++++++ + .../fuel_bootstrap/utils/bootstrap_image.py | 3 ++- + debian/control | 2 ++ + fuel_agent/manager.py | 13 ++++++++++++- + fuel_agent/tests/test_build_utils.py | 4 ++-- + fuel_agent/utils/build.py | 2 +- + specs/fuel-agent.spec | 2 ++ + 7 files changed, 29 insertions(+), 5 deletions(-) + +diff --git a/contrib/fuel_bootstrap/fuel_bootstrap_cli/fuel_bootstrap/commands/build.py b/contrib/fuel_bootstrap/fuel_bootstrap_cli/fuel_bootstrap/commands/build.py +index ca2d3e1..b0d410d 100644 +--- a/contrib/fuel_bootstrap/fuel_bootstrap_cli/fuel_bootstrap/commands/build.py ++++ b/contrib/fuel_bootstrap/fuel_bootstrap_cli/fuel_bootstrap/commands/build.py +@@ -166,6 +166,14 @@ class BuildCommand(command.Command): + " files", + action='append' + ) ++ parser.add_argument( ++ '--target_arch', ++ type=str, ++ choices=['arm64', 'amd64'], ++ help="Choose the target architecture for which image is built", ++ default="amd64" ++ ) ++ + return parser + + def take_action(self, parsed_args): +diff --git a/contrib/fuel_bootstrap/fuel_bootstrap_cli/fuel_bootstrap/utils/bootstrap_image.py b/contrib/fuel_bootstrap/fuel_bootstrap_cli/fuel_bootstrap/utils/bootstrap_image.py +index 0219961..1387cf9 100644 +--- a/contrib/fuel_bootstrap/fuel_bootstrap_cli/fuel_bootstrap/utils/bootstrap_image.py ++++ b/contrib/fuel_bootstrap/fuel_bootstrap_cli/fuel_bootstrap/utils/bootstrap_image.py +@@ -172,7 +172,8 @@ def make_bootstrap(data): + + LOG.info("Try to build image with data:\n%s", yaml.safe_dump(bootdata)) + +- opts = ['--data_driver', 'bootstrap_build_image'] ++ opts = ['--data_driver', 'bootstrap_build_image', ++ '--target_arch', data['target_arch']] + if data.get('image_build_dir'): + opts.extend(['--image_build_dir', data['image_build_dir']]) + +diff --git a/debian/control b/debian/control +index 0a6f947..189dc00 100644 +--- a/debian/control ++++ b/debian/control +@@ -36,6 +36,8 @@ Pre-Depends: dpkg (>= 1.15.6~) + Depends: bzip2, + cloud-utils, + debootstrap, ++ qemu-user-static, ++ binfmt-support, + dmidecode, + ethtool, + gdisk, +diff --git a/fuel_agent/manager.py b/fuel_agent/manager.py +index 15cc5d8..f613aef 100644 +--- a/fuel_agent/manager.py ++++ b/fuel_agent/manager.py +@@ -18,6 +18,7 @@ import shutil + import signal + + from oslo_config import cfg ++from oslo_config import types + import six + import yaml + +@@ -33,6 +34,8 @@ from fuel_agent.utils import md as mu + from fuel_agent.utils import partition as pu + from fuel_agent.utils import utils + ++ArchType = types.String(choices=['amd64', 'arm64']) ++ + opts = [ + cfg.StrOpt( + 'nc_template_path', +@@ -153,6 +156,13 @@ cli_opts = [ + default='/tmp', + help='Directory where the image is supposed to be built', + ), ++ cfg.Opt( ++ 'target_arch', ++ default='amd64', ++ type=ArchType, ++ help='Architecture for which image will be built using ' ++ 'debootstrap', ++ ), + ] + + CONF = cfg.CONF +@@ -551,7 +561,8 @@ class Manager(object): + LOG.debug('Preventing services from being get started') + bu.suppress_services_start(chroot) + LOG.debug('Installing base operating system using debootstrap') +- bu.run_debootstrap(uri=uri, suite=suite, chroot=chroot, ++ bu.run_debootstrap(uri=uri, suite=suite, arch=CONF.target_arch, ++ chroot=chroot, + attempts=CONF.fetch_packages_attempts, + proxies=proxies.proxies, + direct_repo_addr=proxies.direct_repo_addr_list) +diff --git a/fuel_agent/tests/test_build_utils.py b/fuel_agent/tests/test_build_utils.py +index 82c3462..ac5ae82 100644 +--- a/fuel_agent/tests/test_build_utils.py ++++ b/fuel_agent/tests/test_build_utils.py +@@ -42,7 +42,7 @@ class BuildUtilsTestCase(unittest2.TestCase): + def test_run_debootstrap(self, mock_exec, mock_environ): + bu.run_debootstrap('uri', 'suite', 'chroot', 'arch', attempts=2) + mock_exec.assert_called_once_with( +- 'debootstrap', '--include={0}' ++ 'qemu-debootstrap', '--include={0}' + .format(','.join(bu.ADDITIONAL_DEBOOTSTRAP_PACKAGES)), + '--verbose', '--no-check-gpg', '--arch=arch', + 'suite', 'chroot', 'uri', attempts=2, env_variables={}) +@@ -53,7 +53,7 @@ class BuildUtilsTestCase(unittest2.TestCase): + bu.run_debootstrap('uri', 'suite', 'chroot', 'arch', eatmydata=True, + attempts=2) + mock_exec.assert_called_once_with( +- 'debootstrap', '--include={0}' ++ 'qemu-debootstrap', '--include={0}' + .format(','.join(bu.ADDITIONAL_DEBOOTSTRAP_PACKAGES)), + '--verbose', '--no-check-gpg', '--arch=arch', + '--include=eatmydata', 'suite', +diff --git a/fuel_agent/utils/build.py b/fuel_agent/utils/build.py +index 7247965..af41b2b 100644 +--- a/fuel_agent/utils/build.py ++++ b/fuel_agent/utils/build.py +@@ -80,7 +80,7 @@ def run_debootstrap(uri, suite, chroot, arch='amd64', eatmydata=False, + env_vars['no_proxy'] = ','.join(direct_repo_addr) + LOG.debug('Setting no_proxy for: {0}'.format(env_vars['no_proxy'])) + +- cmds = ['debootstrap', ++ cmds = ['qemu-debootstrap', + '--include={0}'.format(",".join(ADDITIONAL_DEBOOTSTRAP_PACKAGES)), + '--verbose', '--no-check-gpg', + '--arch={0}'.format(arch)] +diff --git a/specs/fuel-agent.spec b/specs/fuel-agent.spec +index 5c37600..a43f693 100644 +--- a/specs/fuel-agent.spec ++++ b/specs/fuel-agent.spec +@@ -50,6 +50,8 @@ Requires: xfsprogs + Requires: pciutils + Requires: ethtool + Requires: debootstrap ++Requires: dpkg ++Requires: qemu-user-static + Requires: xz + Requires: coreutils + Requires: psmisc +-- +1.9.1 + |