[virt-tools-list] [virt-bootstrap] [PATCH 8/9] root-password: Handle different sources

Radostin Stoyanov rstoyanov1 at gmail.com
Fri Jul 28 09:21:46 UTC 2017


This changes aim to:
- VirtBuilderSource: pass the root password to virt-builder.
- FileSource: Call set_root_password_in_rootfs() or
  set_root_password_in_image() for format 'dir' or 'qcow2' respectivly.
- DockerSource: should have the same behaviour as before.
---
 src/virtBootstrap/sources.py        | 19 +++++++++++++++++++
 src/virtBootstrap/virt_bootstrap.py |  5 +----
 2 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/src/virtBootstrap/sources.py b/src/virtBootstrap/sources.py
index 3f06f96..8ed8406 100644
--- a/src/virtBootstrap/sources.py
+++ b/src/virtBootstrap/sources.py
@@ -51,6 +51,7 @@ class FileSource(object):
         self.path = kwargs['uri'].path
         self.output_format = kwargs.get('fmt', utils.DEFAULT_OUTPUT_FORMAT)
         self.use_sandbox = kwargs.get('use_sandbox', False)
+        self.root_password = kwargs.get('root_password', None)
         self.progress = kwargs['progress'].update_progress
 
     def unpack(self, dest):
@@ -68,6 +69,10 @@ class FileSource(object):
                           value=0, logger=logger)
             utils.untar(self.path, dest, self.use_sandbox)
 
+            if self.root_password is not None:
+                logger.info("Setting password of the root account")
+                utils.set_root_password_in_rootfs(dest, self.root_password)
+
         elif self.output_format == 'qcow2':
             # Remove the old path
             file_name = os.path.basename(self.path)
@@ -77,6 +82,11 @@ class FileSource(object):
             self.progress("Extracting files into qcow2 image", value=0,
                           logger=logger)
             utils.create_qcow2(self.path, qcow2_file)
+
+            if self.root_password is not None:
+                logger.info("Setting password of the root account")
+                utils.set_root_password_in_image(qcow2_file,
+                                                 self.root_password)
         else:
             raise Exception("Unknown format:" + self.output_format)
 
@@ -112,6 +122,7 @@ class DockerSource(object):
         self.insecure = kwargs.get('not_secure', False)
         self.no_cache = kwargs.get('no_cache', False)
         self.use_sandbox = kwargs.get('use_sandbox', False)
+        self.root_password = kwargs.get('root_password', None)
         self.progress = kwargs['progress'].update_progress
         self.images_dir = utils.get_image_dir(self.no_cache)
         self.manifest = None
@@ -320,6 +331,13 @@ class DockerSource(object):
             raise
 
         else:
+
+            if self.root_password is not None:
+                logger.info("Setting password of the root account")
+                utils.set_root_password(self.output_format,
+                                        dest,
+                                        self.root_password)
+
             self.progress("Download and extract completed!", value=100,
                           logger=logger)
             logger.info("Files are stored in: " + dest)
@@ -349,6 +367,7 @@ class VirtBuilderSource(object):
         # - "virt-builder:/<template>"
         self.template = kwargs['uri'].netloc or kwargs['uri'].path[1:]
         self.output_format = kwargs.get('fmt', utils.DEFAULT_OUTPUT_FORMAT)
+        self.root_password = kwargs.get('root_password', None)
         self.progress = kwargs['progress'].update_progress
 
     def build_image(self, output_file):
diff --git a/src/virtBootstrap/virt_bootstrap.py b/src/virtBootstrap/virt_bootstrap.py
index b8c3e29..2081880 100755
--- a/src/virtBootstrap/virt_bootstrap.py
+++ b/src/virtBootstrap/virt_bootstrap.py
@@ -200,12 +200,9 @@ def bootstrap(uri, dest,
            not_secure=not_secure,
            no_cache=no_cache,
            progress=prog,
+           root_password=root_password,
            use_sandbox=use_sandbox).unpack(dest)
 
-    if root_password is not None:
-        logger.info("Setting password of the root account")
-        utils.set_root_password(fmt, dest, root_password)
-
     if fmt == "dir" and uid_map or gid_map:
         logger.info("Mapping UID/GID")
         mapping_uid_gid(dest, uid_map, gid_map)
-- 
2.9.4




More information about the virt-tools-list mailing list