]> git.apps.os.sepia.ceph.com Git - teuthology.git/commitdiff
Don't falsely claim the newest kernel is running
authorZack Cerza <zack@redhat.com>
Fri, 12 Jun 2015 20:04:53 +0000 (14:04 -0600)
committerZack Cerza <zack@redhat.com>
Mon, 15 Jun 2015 21:20:48 +0000 (15:20 -0600)
Signed-off-by: Zack Cerza <zack@redhat.com>
teuthology/task/kernel.py

index 7a583bbd4e2787341544d231b4997e26eb4738a5..2b53448d96c8c50e91ada16395f515748df9aeae 100644 (file)
@@ -624,21 +624,32 @@ def need_to_install_distro(remote):
     output, err_mess = StringIO(), StringIO()
     remote.run(args=['uname', '-r'], stdout=output)
     current = output.getvalue().strip()
+    installed_version = None
     if package_type == 'rpm':
         remote.run(args=['sudo', 'yum', 'install', '-y', 'kernel'],
-                        stdout=output)
-        if 'Nothing to do' in output.getvalue():
+                   stdout=output)
+        install_stdout = output.getvalue()
+        match = re.search(
+            "Package (.*) already installed",
+            install_stdout, flags=re.MULTILINE)
+        installed_version = match.groups()[0] if match else ''
+        if 'Nothing to do' in install_stdout:
             err_mess.truncate(0)
             remote.run(args=['echo', 'no', run.Raw('|'), 'sudo', 'yum',
-                                  'reinstall', 'kernel', run.Raw('||'),
-                                  'true'], stderr=err_mess)
-            if 'Skipping the running kernel' in err_mess.getvalue():
-                # Current running kernel is already newest and updated
-                log.info('Newest distro kernel already installed/running')
-                return False
+                             'reinstall', 'kernel', run.Raw('||'), 'true'],
+                       stderr=err_mess)
+            reinstall_stderr = err_mess.getvalue()
+            if 'Skipping the running kernel' in reinstall_stderr:
+                running_version = re.search(
+                    "Skipping the running kernel: (.*)",
+                    reinstall_stderr, flags=re.MULTILINE).groups()[0]
+                if installed_version == running_version:
+                    log.info(
+                        'Newest distro kernel already installed and running')
+                    return False
             else:
-                remote.run(args=['sudo', 'yum', 'reinstall', '-y',
-                                      'kernel', run.Raw('||'), 'true'])
+                remote.run(args=['sudo', 'yum', 'reinstall', '-y', 'kernel',
+                                 run.Raw('||'), 'true'])
         # reset stringIO output.
         output.truncate(0)
         remote.run(args=['rpm', '-q', 'kernel', '--last'], stdout=output)