aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sos/plugins/openstack.py115
-rw-r--r--sos/plugins/openstack_cinder.py57
-rw-r--r--sos/plugins/openstack_dashboard.py82
-rw-r--r--sos/plugins/openstack_nova.py148
-rw-r--r--sos/plugins/openstack_quantum.py90
5 files changed, 357 insertions, 135 deletions
diff --git a/sos/plugins/openstack.py b/sos/plugins/openstack.py
deleted file mode 100644
index 488fe6ce..00000000
--- a/sos/plugins/openstack.py
+++ /dev/null
@@ -1,115 +0,0 @@
-## Copyright (C) 2009 Red Hat, Inc., Joey Boggs <jboggs@redhat.com>
-## Copyright (C) 2012 Rackspace US, Inc., Justin Shepherd <jshepher@rackspace.com>
-
-### This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-import os
-
-from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
-
-
-class OpenStack(Plugin):
- """openstack related information
- """
- plugin_name = "openstack"
-
- option_list = [("log", "gathers all openstack logs", "slow", False)]
-
- def setup(self):
- # Nova
- self.add_cmd_output(
- "nova-manage config list 2>/dev/null | sort",
- suggest_filename="nova_config_list")
- self.add_cmd_output(
- "nova-manage service list 2>/dev/null",
- suggest_filename="nova_service_list")
- self.add_cmd_output(
- "nova-manage db version 2>/dev/null",
- suggest_filename="nova_db_version")
- self.add_cmd_output(
- "nova-manage fixed list 2>/dev/null",
- suggest_filename="nova_fixed_ip_list")
- self.add_cmd_output(
- "nova-manage floating list 2>/dev/null",
- suggest_filename="nova_floating_ip_list")
- self.add_cmd_output(
- "nova-manage flavor list 2>/dev/null",
- suggest_filename="nova_flavor_list")
- self.add_cmd_output(
- "nova-manage network list 2>/dev/null",
- suggest_filename="nova_network_list")
- self.add_cmd_output(
- "nova-manage vm list 2>/dev/null",
- suggest_filename="nova_vm_list")
- self.add_copy_specs(["/etc/nova/",
- "/var/log/nova/"])
-
- # Quantum
- self.add_copy_specs(["/etc/quantum/",
- "/var/log/quantum/"])
-
-
-class DebianOpenStack(OpenStack, DebianPlugin, UbuntuPlugin):
- """OpenStack related information for Debian based distributions
- """
-
- packages = ('melange',
- 'nova-api-ec2',
- 'nova-api-metadata',
- 'nova-api-os-compute',
- 'nova-api-os-volume',
- 'nova-common',
- 'nova-compute',
- 'nova-compute-kvm',
- 'nova-compute-lxc',
- 'nova-compute-qemu',
- 'nova-compute-uml',
- 'nova-compute-xcp',
- 'nova-compute-xen',
- 'nova-xcp-plugins',
- 'nova-consoleauth',
- 'nova-network',
- 'nova-scheduler',
- 'nova-volume',
- 'novnc',
- 'python-melange',
- 'python-nova',
- 'python-novaclient',
- 'python-novnc',
-
- def setup(self):
- # Nova
- self.add_copy_spec("/etc/sudoers.d/nova_sudoers")
-
- # Quantum
- self.add_copy_spec("/etc/sudoers.d/quantum_sudoers")
-
-
-class RedHatOpenStack(OpenStack, RedHatPlugin):
- """OpenStack related information for Red Hat distributions
- """
-
- packages = ('openstack-nova',
- 'python-nova',
- 'python-novaclient',
- 'python-openstackclient')
-
- def setup(self):
- # Nova
- self.add_copy_specs([
- "/var/lib/nova/",
- "/etc/polkit-1/localauthority/50-local.d/50-nova.pkla",
- "/etc/sudoers.d/nova"
- ])
diff --git a/sos/plugins/openstack_cinder.py b/sos/plugins/openstack_cinder.py
index b3951698..97eb8fba 100644
--- a/sos/plugins/openstack_cinder.py
+++ b/sos/plugins/openstack_cinder.py
@@ -1,6 +1,7 @@
## Copyright (C) 2009 Red Hat, Inc., Joey Boggs <jboggs@redhat.com>
## Copyright (C) 2012 Rackspace US, Inc., Justin Shepherd <jshepher@rackspace.com>
## Copyright (C) 2013 Red Hat, Inc., Flavio Percoco <fpercoco@redhat.com>
+## Copyright (C) 2013 Red Hat, Inc., Jeremy Agee <jagee@redhat.com>
### This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
@@ -16,30 +17,36 @@
## along with this program; if not, write to the Free Software
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-from sos import plugins
+import os
+from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
-class OpenStackCinder(plugins.Plugin):
- """OpenstackCinder related information."""
+class OpenStackCinder(Plugin):
+ """openstack cinder related information
+ """
plugin_name = "openstack-cinder"
- option_list = [("log", "gathers openstack-cinder logs", "slow", False)]
+ option_list = [("log", "gathers openstack cinder logs", "slow", True),
+ ("db", "gathers openstack cinder db version", "slow", False)]
def setup(self):
- # Cinder
- self.add_cmd_output(
- "cinder-manage db version",
- suggest_filename="cinder_db_version")
- self.add_copy_specs(["/etc/cinder/",
- "/var/log/cinder/"])
+ if self.option_enabled("db"):
+ self.add_cmd_output(
+ "cinder-manage db version",
+ suggest_filename="cinder_db_version")
+ self.add_copy_specs(["/etc/cinder/"])
-class DebianOpenStackCinder(OpenStackCinder,
- plugins.DebianPlugin,
- plugins.UbuntuPlugin):
- """OpenStackCinder related information for Debian based distributions."""
+ if self.option_enabled("log"):
+ self.add_copy_specs(["/var/log/cinder/"])
+
+class DebianOpenStackCinder(OpenStackCinder, DebianPlugin, UbuntuPlugin):
+ """OpenStack Cinder related information for Debian based distributions
+ """
+
+ cinder = False
packages = ('cinder-api',
'cinder-backup',
'cinder-common',
@@ -48,17 +55,27 @@ class DebianOpenStackCinder(OpenStackCinder,
'python-cinder',
'python-cinderclient')
- def setup(self):
- # Cinder
- self.add_copy_spec("/etc/sudoers.d/cinder_sudoers")
+ def check_enabled(self):
+ self.cinder = self.is_installed("cinder-common")
+ return self.cinder
+ def setup(self):
+ super(DebianOpenStackCinder, self).setup()
-class RedHatOpenStackCinder(OpenStackCinder, plugins.RedHatPlugin):
- """OpenStackCinder related information for Red Hat distributions."""
+class RedHatOpenStackCinder(OpenStackCinder, RedHatPlugin):
+ """OpenStack related information for Red Hat distributions
+ """
+ cinder = False
packages = ('openstack-cinder',
+ 'python-cinder',
'python-cinderclient')
+ def check_enabled(self):
+ self.cinder = self.is_installed("openstack-cinder")
+ return self.cinder
+
def setup(self):
- # Cinder
+ super(RedHatOpenStackCinder, self).setup()
self.add_copy_specs(["/etc/sudoers.d/cinder"])
+
diff --git a/sos/plugins/openstack_dashboard.py b/sos/plugins/openstack_dashboard.py
new file mode 100644
index 00000000..5e0cb489
--- /dev/null
+++ b/sos/plugins/openstack_dashboard.py
@@ -0,0 +1,82 @@
+## Copyright (C) 2009 Red Hat, Inc., Joey Boggs <jboggs@redhat.com>
+## Copyright (C) 2012 Rackspace US, Inc., Justin Shepherd <jshepher@rackspace.com>
+## Copyright (C) 2013 Red Hat, Inc., Jeremy Agee <jagee@redhat.com>
+
+### This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+import os
+
+from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
+
+
+class OpenStackDashboard(Plugin):
+ """openstack dashboard related information
+ """
+ plugin_name = "openstack-dashboard"
+
+ option_list = [("log", "gathers openstack httpd logs", "slow", True)]
+
+ def setup(self):
+ self.add_copy_specs(["/etc/openstack-dashboard/"])
+
+
+class DebianOpenStackDashboard(OpenStackDashboard, DebianPlugin):
+ """OpenStack related information for Debian based distributions
+ """
+
+ packages = ('openstack-dashboard',
+ 'openstack-dashboard-apache')
+ dashboard = False
+
+ def check_enabled(self):
+ self.dashboard = self.is_installed("openstack-dashboard")
+ return self.dashboard
+
+ def setup(self):
+ super(DebianOpenStackDashboard, self).setup()
+ self.add_copy_specs(["/etc/apache2/sites-available/"])
+
+class UbuntuOpenStackDashboard(OpenStackDashboard, UbuntuPlugin):
+ """OpenStack related information for Ubuntu based distributions
+ """
+
+ packages = ('openstack-dashboard',
+ 'openstack-dashboard-ubuntu-theme')
+ dashboard = False
+
+ def check_enabled(self):
+ self.dashboard = self.is_installed("openstack-dashboard")
+ return self.dashboard
+
+ def setup(self):
+ super(UbuntuOpenStackDashboard, self).setup()
+ self.add_copy_specs(["/etc/apache2/conf.d/openstack-dashboard.conf"])
+
+class RedHatOpenStackDashboard(OpenStackDashboard, RedHatPlugin):
+ """OpenStack related information for Red Hat distributions
+ """
+
+ dashboard = False
+ packages = ('openstack-dashboard')
+
+ def check_enabled(self):
+ self.dashboard = self.is_installed("openstack-dashboard")
+ return self.dashboard
+
+ def setup(self):
+ super(RedHatOpenStackDashboard, self).setup()
+ self.add_copy_specs(["/etc/httpd/conf.d/openstack-dashboard.conf"])
+ if self.option_enabled("log"):
+ self.add_copy_specs(["/var/log/httpd/"])
diff --git a/sos/plugins/openstack_nova.py b/sos/plugins/openstack_nova.py
new file mode 100644
index 00000000..e9932b48
--- /dev/null
+++ b/sos/plugins/openstack_nova.py
@@ -0,0 +1,148 @@
+## Copyright (C) 2009 Red Hat, Inc., Joey Boggs <jboggs@redhat.com>
+## Copyright (C) 2012 Rackspace US, Inc., Justin Shepherd <jshepher@rackspace.com>
+## Copyright (C) 2013 Red Hat, Inc., Jeremy Agee <jagee@redhat.com>
+
+### This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
+
+
+class OpenStackNova(Plugin):
+ """openstack nova related information
+ """
+ plugin_name = "openstack-nova"
+
+ option_list = [("log", "gathers openstack nova logs", "slow", True),
+ ("cmds", "gathers openstack nova commands", "slow", False)]
+
+ def setup(self):
+ if self.option_enabled("cmds"):
+ self.add_cmd_output(
+ "nova-manage config list 2>/dev/null | sort",
+ suggest_filename="nova_config_list")
+ self.add_cmd_output(
+ "nova-manage service list 2>/dev/null",
+ suggest_filename="nova_service_list")
+ self.add_cmd_output(
+ "nova-manage db version 2>/dev/null",
+ suggest_filename="nova_db_version")
+ self.add_cmd_output(
+ "nova-manage fixed list 2>/dev/null",
+ suggest_filename="nova_fixed_ip_list")
+ self.add_cmd_output(
+ "nova-manage floating list 2>/dev/null",
+ suggest_filename="nova_floating_ip_list")
+ self.add_cmd_output(
+ "nova-manage flavor list 2>/dev/null",
+ suggest_filename="nova_flavor_list")
+ self.add_cmd_output(
+ "nova-manage network list 2>/dev/null",
+ suggest_filename="nova_network_list")
+ self.add_cmd_output(
+ "nova-manage vm list 2>/dev/null",
+ suggest_filename="nova_vm_list")
+
+ if self.option_enabled("log"):
+ self.add_copy_spec("/var/log/nova/")
+
+ self.add_copy_spec("/etc/nova/")
+
+ def postproc(self):
+ protect_passwords = {
+ "/etc/nova/nova.conf": [
+ "ldap_dns_password", "neutron_admin_password",
+ "rabbit_password", "qpid_password", "powervm_mgr_passwd",
+ "xenapi_connection_password", "virtual_power_host_pass",
+ "password", "host_password", "vnc_password", "connection",
+ "sql_connection"],
+ "/etc/nova/api-paste.ini": ["admin_password"]
+ }
+
+ for conf_file, keys in protect_passwords.items():
+ for password_key in keys:
+ regexp = r"(?m)^(%s\s*=\s*)(.*)" % password_key
+ self.do_file_sub(conf_file, regexp, r"\1*********")
+
+
+class DebianOpenStackNova(OpenStackNova, DebianPlugin, UbuntuPlugin):
+ """OpenStack nova related information for Debian based distributions
+ """
+
+ nova = False
+ packages = ('nova-api-ec2',
+ 'nova-api-metadata',
+ 'nova-api-os-compute',
+ 'nova-api-os-volume',
+ 'nova-common',
+ 'nova-compute',
+ 'nova-compute-kvm',
+ 'nova-compute-lxc',
+ 'nova-compute-qemu',
+ 'nova-compute-uml',
+ 'nova-compute-xcp',
+ 'nova-compute-xen',
+ 'nova-xcp-plugins',
+ 'nova-consoleauth',
+ 'nova-network',
+ 'nova-scheduler',
+ 'nova-volume',
+ 'novnc',
+ 'python-nova',
+ 'python-novaclient',
+ 'python-novnc')
+
+ def check_enabled(self):
+ self.nova = self.is_installed("nova-common")
+ return self.nova
+
+ def setup(self):
+ # Nova
+ super(DebianOpenStackNova, self).setup()
+ self.add_copy_spec(["/etc/sudoers.d/nova_sudoers"])
+
+
+class RedHatOpenStackNova(OpenStackNova, RedHatPlugin):
+ """OpenStack nova related information for Red Hat distributions
+ """
+
+ nova = False
+ packages = ('openstack-nova-common',
+ 'openstack-nova-network',
+ 'openstack-nova-conductor',
+ 'openstack-nova-conductor',
+ 'openstack-nova-scheduler',
+ 'openstack-nova-console',
+ 'openstack-nova-novncproxy',
+ 'openstack-nova-compute',
+ 'openstack-nova-api',
+ 'openstack-nova-cert',
+ 'openstack-nova-cells',
+ 'openstack-nova-objectstore',
+ 'python-nova',
+ 'python-novaclient',
+ 'novnc')
+
+ def check_enabled(self):
+ self.nova = self.is_installed("openstack-nova-common")
+ return self.nova
+
+ def setup(self):
+ super(RedHatOpenStackNova, self).setup()
+ self.add_copy_specs([
+ "/etc/logrotate.d/openstack-nova",
+ "/etc/polkit-1/localauthority/50-local.d/50-nova.pkla",
+ "/etc/sudoers.d/nova",
+ "/etc/sysconfig/openstack-nova-novncproxy.sysconfig",
+ "/var/security/limits.d/91-nova.conf"])
diff --git a/sos/plugins/openstack_quantum.py b/sos/plugins/openstack_quantum.py
new file mode 100644
index 00000000..9ce59b15
--- /dev/null
+++ b/sos/plugins/openstack_quantum.py
@@ -0,0 +1,90 @@
+## Copyright (C) 2009 Red Hat, Inc., Joey Boggs <jboggs@redhat.com>
+## Copyright (C) 2012 Rackspace US, Inc., Justin Shepherd <jshepher@rackspace.com>
+## Copyright (C) 2013 Red Hat, Inc., Jeremy Agee <jagee@redhat.com>
+
+### This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+import os
+
+from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
+
+
+class OpenStackQuantum(Plugin):
+ """openstack quantum related information
+ """
+ plugin_name = "openstack-quantum"
+
+ option_list = [("log", "gathers openstack quantum logs", "slow", True)]
+
+ def setup(self):
+ self.add_copy_specs(["/etc/quantum/"])
+
+ if self.option_enabled("log"):
+ self.add_copy_specs(["/var/log/quantum/"])
+
+
+class DebianOpenStackQuantum(OpenStackQuantum, DebianPlugin, UbuntuPlugin):
+ """OpenStack Quantum related information for Debian based distributions
+ """
+
+ quantum = False
+ packages = ('quantum-common',
+ 'quantum-plugin-cisco',
+ 'quantum-plugin-linuxbridge-agent',
+ 'quantum-plugin-nicira',
+ 'quantum-plugin-openvswitch',
+ 'quantum-plugin-openvswitch-agent',
+ 'quantum-plugin-ryu',
+ 'quantum-plugin-ryu-agent',
+ 'quantum-server',
+ 'python-quantum',
+ 'python-quantumclient')
+
+ def check_enabled(self):
+ self.quantum = self.is_installed("quantum-common")
+ return self.quantum
+
+ def setup(self):
+ super(DebianOpenStackQuantum, self).setup()
+ self.add_copy_spec(["/etc/sudoers.d/quantum_sudoers"])
+
+
+class RedHatOpenStackQuantum(OpenStackQuantum, RedHatPlugin):
+ """OpenStack Quantum related information for Red Hat distributions
+ """
+
+ quantum = False
+ packages = ('openstack-quantum-bigswitch',
+ 'openstack-quantum-brocade',
+ 'openstack-quantum-cisco',
+ 'openstack-quantum-hyperv',
+ 'openstack-quantum-linuxbridge',
+ 'openstack-quantum-metaplugin',
+ 'openstack-quantum-midonet',
+ 'openstack-quantum-nec',
+ 'openstack-quantum-nicira',
+ 'openstack-quantum-openvswitch',
+ 'openstack-quantum-plumgrid',
+ 'openstack-quantum-ryu',
+ 'python-quantum',
+ 'python-quantumclient',
+ 'openstack-quantum')
+
+ def check_enabled(self):
+ self.quantum = self.is_installed("openstack-quantum")
+ return self.quantum
+
+ def setup(self):
+ super(RedHatOpenStackQuantum, self).setup()