[virt-tools-list] [virt-manager PATCH v2] cloudinit: Move random password printing and sleeping to virt-install

athina.plaskasoviti at gmail.com athina.plaskasoviti at gmail.com
Wed Aug 14 09:16:00 UTC 2019


From: Athina Plaskasoviti <athina.plaskasoviti at gmail.com>

Fixed:
- Added a do_log flag to print_stdout(), to avoid logging of printed random password.
- Excluded timeout in virt-install from testing

Signed-off-by: Athina Plaskasoviti <athina.plaskasoviti at gmail.com>
---
 virt-install                  | 10 ++++++++++
 virtinst/cli.py               |  7 ++++---
 virtinst/install/installer.py |  4 ++++
 3 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/virt-install b/virt-install
index 4c05a7b4..bb708c4b 100755
--- a/virt-install
+++ b/virt-install
@@ -9,6 +9,7 @@ import argparse
 import atexit
 import sys
 import time
+import select
 
 import libvirt
 
@@ -664,6 +665,15 @@ def start_install(guest, installer, options):
         if options.destroy_on_exit:
             atexit.register(_destroy_on_exit, domain)
 
+        passwd = installer.get_generated_password()
+        if options.cloud_init and passwd:  # pragma: no cover
+            print_stdout(_("Password for first login is: %s") % passwd, do_log=False)
+            print_stdout(
+                _("Installation will continue in 10 seconds "
+                "(press Enter to skip)"))
+            timeout = 10
+            select.select([sys.stdin], [], [], timeout)
+
         cli.connect_console(guest, domain, conscb,
                 waithandler.wait_for_console_to_exit,
                 options.destroy_on_exit)
diff --git a/virtinst/cli.py b/virtinst/cli.py
index 77d38c69..c4110e87 100644
--- a/virtinst/cli.py
+++ b/virtinst/cli.py
@@ -269,9 +269,10 @@ def fail(msg, do_exit=True):
         _fail_exit()
 
 
-def print_stdout(msg, do_force=False):
-    log.debug(msg)
-    if do_force or not get_global_state().quiet:
+def print_stdout(msg, do_force=False, do_log=True):
+    if do_log:
+        log.debug(msg)
+    if do_force or not get_global_state().quiet or not do_log:
         print(msg)
 
 
diff --git a/virtinst/install/installer.py b/virtinst/install/installer.py
index b6d4d134..74f42f41 100644
--- a/virtinst/install/installer.py
+++ b/virtinst/install/installer.py
@@ -418,6 +418,10 @@ class Installer(object):
         self._tmpfiles.append(iso)
         self._add_unattended_install_cdrom_device(guest, iso)
 
+    def get_generated_password(self):
+        if self._cloudinit_data:
+            return self._cloudinit_data.generate_password()
+
 
     ##########################
     # guest install handling #
-- 
2.21.0




More information about the virt-tools-list mailing list