Blob Blame History Raw
From 4e46e0c8db3e2ecea7279ae7a781ae2e22a81b69 Mon Sep 17 00:00:00 2001
From: David Vallee Delisle <dvd@redhat.com>
Date: Mon, 31 Aug 2020 18:58:42 -0400
Subject: [PATCH] [openstack_ironic] Missing ironic-inspector configs

We're missing the ironic-inspector configurations, probably because they
were in the RedHatPlugin class, at the bottom of the file and they were
probably missed when updating this plugin. Moving them at the top with
the other `add_copy_spec` will help tracking them in case something
change again.

Revamping also the way we grab logs to check if we're in a container
first.

Resolves: #2223

Signed-off-by: David Vallee Delisle <dvd@redhat.com>
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
---
 sos/report/plugins/openstack_ironic.py | 121 +++++++++++++++++--------
 1 file changed, 82 insertions(+), 39 deletions(-)

diff --git a/sos/report/plugins/openstack_ironic.py b/sos/report/plugins/openstack_ironic.py
index 314d2a58..57060a27 100644
--- a/sos/report/plugins/openstack_ironic.py
+++ b/sos/report/plugins/openstack_ironic.py
@@ -20,41 +20,95 @@ class OpenStackIronic(Plugin):
     profiles = ('openstack', 'openstack_undercloud')
 
     var_puppet_gen = "/var/lib/config-data/puppet-generated/ironic"
+    ins_puppet_gen = var_puppet_gen + "_inspector"
 
     def setup(self):
-        self.conf_list = [
-            "/etc/ironic/*",
-            self.var_puppet_gen + "/etc/ironic/*",
-            self.var_puppet_gen + "_api/etc/ironic/*"
-        ]
-        self.add_copy_spec([
-            "/etc/ironic/",
-            self.var_puppet_gen + "/etc/xinetd.conf",
-            self.var_puppet_gen + "/etc/xinetd.d/",
-            self.var_puppet_gen + "/etc/ironic/",
-            self.var_puppet_gen + "/etc/httpd/conf/",
-            self.var_puppet_gen + "/etc/httpd/conf.d/",
-            self.var_puppet_gen + "/etc/httpd/conf.modules.d/*.conf",
-            self.var_puppet_gen + "/etc/my.cnf.d/tripleo.cnf",
-            self.var_puppet_gen + "_api/etc/ironic/",
-            self.var_puppet_gen + "_api/etc/httpd/conf/",
-            self.var_puppet_gen + "_api/etc/httpd/conf.d/",
-            self.var_puppet_gen + "_api/etc/httpd/conf.modules.d/*.conf",
-            self.var_puppet_gen + "_api/etc/my.cnf.d/tripleo.cnf"
-        ])
-
-        if self.get_option("all_logs"):
+
+        in_container = self.container_exists('.*ironic_api')
+
+        if in_container:
+            self.conf_list = [
+                self.var_puppet_gen + "/etc/ironic/*",
+                self.var_puppet_gen + "/etc/ironic-inspector/*",
+                self.var_puppet_gen + "_api/etc/ironic/*",
+                self.ins_puppet_gen + "/etc/ironic-inspector/*",
+                self.ins_puppet_gen + "/var/lib/httpboot/inspector.ipxe"
+            ]
             self.add_copy_spec([
-                "/var/log/ironic/",
+                "/var/lib/ironic-inspector/",
+                "/var/log/containers/ironic-inspector/ramdisk/",
+                self.var_puppet_gen + "/etc/xinetd.conf",
+                self.var_puppet_gen + "/etc/xinetd.d/",
+                self.var_puppet_gen + "/etc/ironic/",
+                self.var_puppet_gen + "/etc/ironic-inspector/",
+                self.var_puppet_gen + "/etc/httpd/conf/",
+                self.var_puppet_gen + "/etc/httpd/conf.d/",
+                self.var_puppet_gen + "/etc/httpd/conf.modules.d/*.conf",
+                self.var_puppet_gen + "/etc/my.cnf.d/tripleo.cnf",
+                self.var_puppet_gen + "_api/etc/ironic/",
+                self.var_puppet_gen + "_api/etc/httpd/conf/",
+                self.var_puppet_gen + "_api/etc/httpd/conf.d/",
+                self.var_puppet_gen + "_api/etc/httpd/conf.modules.d/*.conf",
+                self.var_puppet_gen + "_api/etc/my.cnf.d/tripleo.cnf",
+                self.ins_puppet_gen + "/etc/ironic-inspector/*",
+                self.ins_puppet_gen + "/var/lib/httpboot/inspector.ipxe"
             ])
+
+            if self.get_option("all_logs"):
+                self.add_copy_spec([
+                    "/var/log/containers/ironic/",
+                    "/var/log/containers/ironic-inspector/"
+                ])
+            else:
+                self.add_copy_spec([
+                    "/var/log/containers/ironic/*.log",
+                    "/var/log/containers/ironic-inspector/*.log",
+                ])
+
+            for path in ['/var/lib/ironic', '/httpboot', '/tftpboot',
+                         self.ins_puppet_gen + '/var/lib/httpboot/',
+                         self.ins_puppet_gen + '/var/lib/tftpboot/']:
+                self.add_cmd_output('ls -laRt %s' % path)
+                self.add_cmd_output('ls -laRt %s' %
+                                    (self.var_puppet_gen + path))
+
+            # Let's get the packages from the containers, always helpful when
+            # troubleshooting.
+            for container_name in ['ironic_inspector_dnsmasq',
+                                   'ironic_inspector', 'ironic_pxe_http',
+                                   'ironic_pxe_tftp', 'ironic_neutron_agent',
+                                   'ironic_conductor', 'ironic_api']:
+                if self.container_exists('.*' + container_name):
+                    self.add_cmd_output(self.fmt_container_cmd(container_name,
+                                                               'rpm -qa'))
+
         else:
+            self.conf_list = [
+                "/etc/ironic/*",
+                "/etc/ironic-inspector/*",
+            ]
             self.add_copy_spec([
-                "/var/log/ironic/*.log",
+                "/etc/ironic/",
+                "/etc/ironic-inspector/",
+                "/var/lib/ironic-inspector/",
+                "/var/log/ironic-inspector/ramdisk/",
+                "/etc/my.cnf.d/tripleo.cnf",
+                "/var/lib/httpboot/inspector.ipxe"
             ])
 
-        for path in ['/var/lib/ironic', '/httpboot', '/tftpboot']:
-            self.add_cmd_output('ls -laRt %s' % path)
-            self.add_cmd_output('ls -laRt %s' % (self.var_puppet_gen + path))
+            if self.get_option("all_logs"):
+                self.add_copy_spec([
+                    "/var/log/ironic/",
+                    "/var/log/ironic-inspector/",
+                ])
+            else:
+                self.add_copy_spec([
+                    "/var/log/ironic/*.log",
+                    "/var/log/ironic-inspector/*.log",
+                ])
+
+            for path in ['/var/lib/ironic', '/httpboot', '/tftpboot']:
+                self.add_cmd_output('ls -laRt %s' % path)
 
         vars_all = [p in os.environ for p in [
                     'OS_USERNAME', 'OS_PASSWORD']]
@@ -136,6 +190,7 @@ class RedHatIronic(OpenStackIronic, RedHatPlugin):
     def setup(self):
         super(RedHatIronic, self).setup()
 
+        # ironic-discoverd was renamed to ironic-inspector in Liberty
         # is the optional ironic-discoverd service installed?
         if any([self.is_installed(p) for p in self.discoverd_packages]):
             self.conf_list.append('/etc/ironic-discoverd/*')
@@ -146,18 +201,6 @@ class RedHatIronic(OpenStackIronic, RedHatPlugin):
             self.add_journal(units="openstack-ironic-discoverd")
             self.add_journal(units="openstack-ironic-discoverd-dnsmasq")
 
-        # ironic-discoverd was renamed to ironic-inspector in Liberty
-        self.conf_list.append('/etc/ironic-inspector/*')
-        self.conf_list.append(self.var_puppet_gen + '/etc/ironic-inspector/*')
-        self.add_copy_spec('/etc/ironic-inspector/')
-        self.add_copy_spec(self.var_puppet_gen + '/etc/ironic-inspector/')
-        self.add_copy_spec('/var/lib/ironic-inspector/')
-        if self.get_option("all_logs"):
-            self.add_copy_spec('/var/log/ironic-inspector/')
-        else:
-            self.add_copy_spec('/var/log/ironic-inspector/*.log')
-            self.add_copy_spec('/var/log/ironic-inspector/ramdisk/')
-
         self.add_journal(units="openstack-ironic-inspector-dnsmasq")
 
         if self.osc_available:
-- 
2.26.2