diff options
-rw-r--r-- | sos/plugins/openstack_neutron.py | 74 |
1 files changed, 3 insertions, 71 deletions
diff --git a/sos/plugins/openstack_neutron.py b/sos/plugins/openstack_neutron.py index 1dbca77c..9e375b26 100644 --- a/sos/plugins/openstack_neutron.py +++ b/sos/plugins/openstack_neutron.py @@ -14,24 +14,14 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -import re - from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin -# The Networking plugin includes most of what is needed from a snapshot -# of the networking, so we only need to focus on the parts that are specific -# to OpenStack Networking. The Process plugin should capture the dnsmasq -# command line. The libvirt plugin grabs the instance's XML definition which -# has the interface names for an instance. So what remains is relevant database -# info... - class OpenStackNeutron(Plugin): """OpenStack Networking """ plugin_name = "openstack_neutron" profiles = ('openstack', 'openstack_controller', 'openstack_compute') - option_list = [("log", "Gathers all Neutron logs", "slow", False)] def setup(self): @@ -44,7 +34,7 @@ class OpenStackNeutron(Plugin): sizelimit=self.limit) self.add_copy_spec("/etc/neutron/") - self.netns_dumps() + self.add_copy_spec("/var/lib/neutron/") def postproc(self): protect_keys = [ @@ -60,66 +50,8 @@ class OpenStackNeutron(Plugin): self.do_path_regex_sub("/etc/neutron/*", regexp, r"\1*********") - def netns_dumps(self): - # It would've been beautiful if we could get parts of the networking - # plugin to run in different namespaces. There are a couple of options - # in the short term: create a local instance and "borrow" some of the - # functionality, or simply copy some of the functionality. - prefixes = ["qdhcp", "qrouter"] - ip_netns_result = self.call_ext_prog("ip netns") - if not (ip_netns_result['status'] == 0): - return - nslist = ip_netns_result['output'] - lease_directories = [] - if nslist: - for nsname in nslist.splitlines(): - prefix, netid = nsname.split('-', 1) - if len(netid) > 0 and prefix in prefixes: - self.ns_gather_data(nsname) - lease_directories.append( - "/var/lib/neutron/dhcp/%s/" % netid) - self.add_copy_spec(lease_directories) - - # TODO: Refactor! Copied from Networking plugin. - def get_interface_name(self, ip_addr_out): - """Return a dictionary for which key are interface name according to - the output of ifconifg-a stored in ifconfig_file. - """ - out = {} - for line in ip_addr_out.splitlines(): - match = re.match('.*link/ether', line) - if match: - int = match.string.split(':')[1].lstrip() - out[int] = True - return out - - def ns_gather_data(self, nsname): - cmd_prefix = "ip netns exec %s " % nsname - self.add_cmd_output([ - cmd_prefix + "iptables-save", - cmd_prefix + "ifconfig -a", - cmd_prefix + "route -n" - ]) - # borrowed from networking plugin - ip_addr_result = self.call_ext_prog(cmd_prefix + "ip -o addr") - if ip_addr_result['status'] == 0: - for eth in self.get_interface_name(ip_addr_result['output']): - # Most, if not all, IFs in the namespaces are going to be - # virtual. The '-a', '-c' and '-g' options are not likely to be - # supported so these ops are not copied from the network - # plugin. - self.add_cmd_output([ - cmd_prefix + "ethtool "+eth, - cmd_prefix + "ethtool -i "+eth, - cmd_prefix + "ethtool -k "+eth, - cmd_prefix + "ethtool -S "+eth - ]) - - # As all of the bridges are in the "global namespace", we do not need - # to gather info on them. - - -class DebianNeutron(OpenstackNeutron, DebianPlugin, UbuntuPlugin): + +class DebianNeutron(OpenStackNeutron, DebianPlugin, UbuntuPlugin): packages = [ 'neutron-common', 'neutron-plugin-cisco', |