All of lore.kernel.org
 help / color / mirror / Atom feed
From: Scott Mayhew <smayhew@redhat.com>
To: linux-nfs@vger.kernel.org
Subject: [nfs-utils PATCH v4 11/14] mountstats: Allow mountstats_command to take a variable number of mountpoints
Date: Fri, 12 Dec 2014 14:14:54 -0500	[thread overview]
Message-ID: <1418411697-65535-12-git-send-email-smayhew@redhat.com> (raw)
In-Reply-To: <1418411697-65535-1-git-send-email-smayhew@redhat.com>

Allow the mountstats command to take a variable number of mountpoints
(including none, in which case it will print stats for all NFS
mountpoints it finds).

Signed-off-by: Scott Mayhew <smayhew@redhat.com>
---
 tools/mountstats/mountstats.py | 48 ++++++++++++++++++++++++++++++------------
 1 file changed, 34 insertions(+), 14 deletions(-)

diff --git a/tools/mountstats/mountstats.py b/tools/mountstats/mountstats.py
index 769c458..4a6dc44 100644
--- a/tools/mountstats/mountstats.py
+++ b/tools/mountstats/mountstats.py
@@ -311,11 +311,14 @@ class DeviceData:
             return True
         return False
 
+    def display_stats_header(self):
+        print('Stats for %s mounted on %s:' % \
+            (self.__nfs_data['export'], self.__nfs_data['mountpoint']))
+
     def display_nfs_options(self):
         """Pretty-print the NFS options
         """
-        print('Stats for %s mounted on %s:' % \
-            (self.__nfs_data['export'], self.__nfs_data['mountpoint']))
+        self.display_stats_header()
 
         print('  NFS mount options: %s' % ','.join(self.__nfs_data['mountoptions']))
         print('  NFS server capabilities: %s' % ','.join(self.__nfs_data['servercapabilities']))
@@ -562,6 +565,7 @@ def print_mountstats(stats, nfs_only, rpc_only):
        stats.display_nfs_events()
        stats.display_nfs_bytes()
     elif rpc_only:
+       stats.display_stats_header()
        stats.display_rpc_generic_stats()
        stats.display_rpc_op_stats()
     else:
@@ -569,27 +573,42 @@ def print_mountstats(stats, nfs_only, rpc_only):
        stats.display_nfs_bytes()
        stats.display_rpc_generic_stats()
        stats.display_rpc_op_stats()
+    print()
 
 def mountstats_command(args):
     """Mountstats command
     """
     mountstats = parse_stats_file(args.infile)
+    mountpoints = args.mountpoints
+
+    # make certain devices contains only NFS mount points
+    if len(mountpoints) > 0:
+        check = []
+        for device in mountpoints:
+            stats = DeviceData()
+            try:
+                stats.parse_stats(mountstats[device])
+                if stats.is_nfs_mountpoint():
+                    check += [device]
+            except KeyError:
+                continue
+        mountpoints = check
+    else:
+        for device, descr in mountstats.items():
+            stats = DeviceData()
+            stats.parse_stats(descr)
+            if stats.is_nfs_mountpoint():
+                mountpoints += [device]
+    if len(mountpoints) == 0:
+        print('No NFS mount points were found')
+        return
 
     if args.since:
         old_mountstats = parse_stats_file(args.since)
 
-    for mp in args.mountpoints:
-        if mp not in mountstats:
-            print('Statistics for mount point %s not found' % mp)
-            continue
-
+    for mp in mountpoints:
         stats = DeviceData()
         stats.parse_stats(mountstats[mp])
-
-        if not stats.is_nfs_mountpoint():
-            print('Mount point %s exists but is not an NFS mount' % mp)
-            continue
-
         if not args.since:
             print_mountstats(stats, args.nfs_only, args.rpc_only)
         elif args.since and mp not in old_mountstats:
@@ -736,8 +755,9 @@ def main():
         help='Display only the RPC statistics')
     # The mountpoints argument cannot be moved into the common_parser because
     # it will screw up the parsing of the iostat arguments (interval and count)
-    mountstats_parser.add_argument('mountpoints', nargs='+', metavar='mountpoint',
-        help='Display statistics for this mountpoint. More than one may be specified.')
+    mountstats_parser.add_argument('mountpoints', nargs='*', metavar='mountpoint',
+        help='Display statistics for this mountpoint. More than one may be specified. '
+            'If absent, statistics for all NFS mountpoints will be generated.')
     mountstats_parser.set_defaults(func=mountstats_command)
 
     nfsstat_parser = subparsers.add_parser('nfsstat',
-- 
1.9.3


  parent reply	other threads:[~2014-12-12 19:15 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-12 19:14 [nfs-utils PATCH v4 00/14] A few enhancements to mountstats.py Scott Mayhew
2014-12-12 19:14 ` [nfs-utils PATCH v4 01/14] mountstats: Fix up NFS event counters Scott Mayhew
2014-12-12 19:14 ` [nfs-utils PATCH v4 02/14] mountstats: Add lists of various counters Scott Mayhew
2014-12-12 19:14 ` [nfs-utils PATCH v4 03/14] mountstats: Refactor __parse_nfs_line and __parse_rpc_line Scott Mayhew
2014-12-12 19:14 ` [nfs-utils PATCH v4 04/14] mountstats: Refactor compare_iostats Scott Mayhew
2014-12-12 19:14 ` [nfs-utils PATCH v4 05/14] mountstats: Convert existing option parsing to use the argparse module Scott Mayhew
2014-12-12 19:14 ` [nfs-utils PATCH v4 06/14] mountstats: Make the iostat sub-command output match that of nfs-iostat.py Scott Mayhew
2014-12-12 19:14 ` [nfs-utils PATCH v4 07/14] mountstats: Make print_iostat_summary handle newly appearing mounts Scott Mayhew
2014-12-12 19:14 ` [nfs-utils PATCH v4 08/14] mountstats: Add support for -f/--file Scott Mayhew
2014-12-12 19:14 ` [nfs-utils PATCH v4 09/14] mountstats: Add support for -S/--since Scott Mayhew
2014-12-12 19:14 ` [nfs-utils PATCH v4 10/14] mountstats: Fix IndexError in __parse_nfs_line Scott Mayhew
2014-12-12 19:14 ` Scott Mayhew [this message]
2014-12-12 19:14 ` [nfs-utils PATCH v4 12/14] mountstats: Add support for -R/--raw to mountstats_command Scott Mayhew
2014-12-12 19:14 ` [nfs-utils PATCH v4 13/14] mountstats: Implement the nfsstat sub-command Scott Mayhew
2014-12-12 19:14 ` [nfs-utils PATCH v4 14/14] mountstats: Updated the mountstats(8) man page Scott Mayhew
2014-12-13 15:42 ` [nfs-utils PATCH v4 00/14] A few enhancements to mountstats.py Steve Dickson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1418411697-65535-12-git-send-email-smayhew@redhat.com \
    --to=smayhew@redhat.com \
    --cc=linux-nfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.