diff mbox series

[v2] mountstats: Adding 'Day:Hour:Min:Sec' format along with 'age' to "mountstats --nfs" for ease of understanding.

Message ID 20200604175221.GA157967@fedora.rsable.com (mailing list archive)
State New, archived
Headers show
Series [v2] mountstats: Adding 'Day:Hour:Min:Sec' format along with 'age' to "mountstats --nfs" for ease of understanding. | expand

Commit Message

Rohan Sable June 4, 2020, 5:52 p.m. UTC
This patch adds printing of 'Age' in 'Sec' and 'Day:Hours:Min:Sec' like below to --nfs in mountstats :
NFS mount age: 9479; 0 Day(s) 2 Hour(s) 37 Min(s) 59 Sec(s)

Signed-off-by: Rohan Sable <rsable@redhat.com>
---
 tools/mountstats/mountstats.py | 12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

Chuck Lever June 4, 2020, 6:12 p.m. UTC | #1
> On Jun 4, 2020, at 1:52 PM, Rohan Sable <rsable@redhat.com> wrote:
> 
> This patch adds printing of 'Age' in 'Sec' and 'Day:Hours:Min:Sec' like below to --nfs in mountstats :
> NFS mount age: 9479; 0 Day(s) 2 Hour(s) 37 Min(s) 59 Sec(s)
> 
> Signed-off-by: Rohan Sable <rsable@redhat.com>
> ---
> tools/mountstats/mountstats.py | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
> 
> diff --git a/tools/mountstats/mountstats.py b/tools/mountstats/mountstats.py
> index d565385d..c4f4f9e6 100755
> --- a/tools/mountstats/mountstats.py
> +++ b/tools/mountstats/mountstats.py
> @@ -233,6 +233,16 @@ Nfsv4ops = [
>     'COPY_NOTIFY'
> ]
> 
> +# Function to convert sec from age to Day:Hours:Min:Sec.
> +def sec_conv(rem):
> +    day = int(rem / (24 * 3600))
> +    rem %= (24 * 3600)
> +    hrs = int(rem / 3600)
> +    rem %= 3600
> +    min = int(rem / 60)
> +    sec = rem % 60
> +    print(day, "Day(s)", hrs, "Hour(s)", min, "Min(s)", sec, "Sec(s)")
> +

Just wondering if there's a Python module that can do this for us?


> class DeviceData:
>     """DeviceData objects provide methods for parsing and displaying
>     data for a single mount grabbed from /proc/self/mountstats
> @@ -391,6 +401,8 @@ class DeviceData:
>         """Pretty-print the NFS options
>         """
>         print('  NFS mount options: %s' % ','.join(self.__nfs_data['mountoptions']))
> +        print('  NFS mount age: %d' % self.__nfs_data['age'], end="; ")
> +        sec_conv(self.__nfs_data['age'])
>         print('  NFS server capabilities: %s' % ','.join(self.__nfs_data['servercapabilities']))
>         if 'nfsv4flags' in self.__nfs_data:
>             print('  NFSv4 capability flags: %s' % ','.join(self.__nfs_data['nfsv4flags']))
> -- 
> 2.25.4
> 

--
Chuck Lever
Kenneth Dsouza June 4, 2020, 6:53 p.m. UTC | #2
Using the datetime module?

datetime.timedelta(seconds = n)
Should print in below format
0:11:05

On Thu, Jun 4, 2020 at 11:45 PM Chuck Lever <chuck.lever@oracle.com> wrote:
>
>
>
> > On Jun 4, 2020, at 1:52 PM, Rohan Sable <rsable@redhat.com> wrote:
> >
> > This patch adds printing of 'Age' in 'Sec' and 'Day:Hours:Min:Sec' like below to --nfs in mountstats :
> > NFS mount age: 9479; 0 Day(s) 2 Hour(s) 37 Min(s) 59 Sec(s)
> >
> > Signed-off-by: Rohan Sable <rsable@redhat.com>
> > ---
> > tools/mountstats/mountstats.py | 12 ++++++++++++
> > 1 file changed, 12 insertions(+)
> >
> > diff --git a/tools/mountstats/mountstats.py b/tools/mountstats/mountstats.py
> > index d565385d..c4f4f9e6 100755
> > --- a/tools/mountstats/mountstats.py
> > +++ b/tools/mountstats/mountstats.py
> > @@ -233,6 +233,16 @@ Nfsv4ops = [
> >     'COPY_NOTIFY'
> > ]
> >
> > +# Function to convert sec from age to Day:Hours:Min:Sec.
> > +def sec_conv(rem):
> > +    day = int(rem / (24 * 3600))
> > +    rem %= (24 * 3600)
> > +    hrs = int(rem / 3600)
> > +    rem %= 3600
> > +    min = int(rem / 60)
> > +    sec = rem % 60
> > +    print(day, "Day(s)", hrs, "Hour(s)", min, "Min(s)", sec, "Sec(s)")
> > +
>
> Just wondering if there's a Python module that can do this for us?
>
>
> > class DeviceData:
> >     """DeviceData objects provide methods for parsing and displaying
> >     data for a single mount grabbed from /proc/self/mountstats
> > @@ -391,6 +401,8 @@ class DeviceData:
> >         """Pretty-print the NFS options
> >         """
> >         print('  NFS mount options: %s' % ','.join(self.__nfs_data['mountoptions']))
> > +        print('  NFS mount age: %d' % self.__nfs_data['age'], end="; ")
> > +        sec_conv(self.__nfs_data['age'])
> >         print('  NFS server capabilities: %s' % ','.join(self.__nfs_data['servercapabilities']))
> >         if 'nfsv4flags' in self.__nfs_data:
> >             print('  NFSv4 capability flags: %s' % ','.join(self.__nfs_data['nfsv4flags']))
> > --
> > 2.25.4
> >
>
> --
> Chuck Lever
>
>
>
Kenneth Dsouza June 4, 2020, 7:23 p.m. UTC | #3
I get the below results using the datetime module.

# mountstats --nfs | grep -w age
  NFS mount age: 688865; 7 days, 23:21:05

On Fri, Jun 5, 2020 at 12:23 AM Kenneth Dsouza <kdsouza@redhat.com> wrote:
>
> Using the datetime module?
>
> datetime.timedelta(seconds = n)
> Should print in below format
> 0:11:05
>
> On Thu, Jun 4, 2020 at 11:45 PM Chuck Lever <chuck.lever@oracle.com> wrote:
> >
> >
> >
> > > On Jun 4, 2020, at 1:52 PM, Rohan Sable <rsable@redhat.com> wrote:
> > >
> > > This patch adds printing of 'Age' in 'Sec' and 'Day:Hours:Min:Sec' like below to --nfs in mountstats :
> > > NFS mount age: 9479; 0 Day(s) 2 Hour(s) 37 Min(s) 59 Sec(s)
> > >
> > > Signed-off-by: Rohan Sable <rsable@redhat.com>
> > > ---
> > > tools/mountstats/mountstats.py | 12 ++++++++++++
> > > 1 file changed, 12 insertions(+)
> > >
> > > diff --git a/tools/mountstats/mountstats.py b/tools/mountstats/mountstats.py
> > > index d565385d..c4f4f9e6 100755
> > > --- a/tools/mountstats/mountstats.py
> > > +++ b/tools/mountstats/mountstats.py
> > > @@ -233,6 +233,16 @@ Nfsv4ops = [
> > >     'COPY_NOTIFY'
> > > ]
> > >
> > > +# Function to convert sec from age to Day:Hours:Min:Sec.
> > > +def sec_conv(rem):
> > > +    day = int(rem / (24 * 3600))
> > > +    rem %= (24 * 3600)
> > > +    hrs = int(rem / 3600)
> > > +    rem %= 3600
> > > +    min = int(rem / 60)
> > > +    sec = rem % 60
> > > +    print(day, "Day(s)", hrs, "Hour(s)", min, "Min(s)", sec, "Sec(s)")
> > > +
> >
> > Just wondering if there's a Python module that can do this for us?
> >
> >
> > > class DeviceData:
> > >     """DeviceData objects provide methods for parsing and displaying
> > >     data for a single mount grabbed from /proc/self/mountstats
> > > @@ -391,6 +401,8 @@ class DeviceData:
> > >         """Pretty-print the NFS options
> > >         """
> > >         print('  NFS mount options: %s' % ','.join(self.__nfs_data['mountoptions']))
> > > +        print('  NFS mount age: %d' % self.__nfs_data['age'], end="; ")
> > > +        sec_conv(self.__nfs_data['age'])
> > >         print('  NFS server capabilities: %s' % ','.join(self.__nfs_data['servercapabilities']))
> > >         if 'nfsv4flags' in self.__nfs_data:
> > >             print('  NFSv4 capability flags: %s' % ','.join(self.__nfs_data['nfsv4flags']))
> > > --
> > > 2.25.4
> > >
> >
> > --
> > Chuck Lever
> >
> >
> >
Chuck Lever June 4, 2020, 7:34 p.m. UTC | #4
> On Jun 4, 2020, at 3:23 PM, Kenneth Dsouza <kdsouza@redhat.com> wrote:
> 
> I get the below results using the datetime module.
> 
> # mountstats --nfs | grep -w age
>  NFS mount age: 688865; 7 days, 23:21:05

For pretty-printing the mount point's age, you probably don't need
to display the raw delta seconds value.


> On Fri, Jun 5, 2020 at 12:23 AM Kenneth Dsouza <kdsouza@redhat.com> wrote:
>> 
>> Using the datetime module?
>> 
>> datetime.timedelta(seconds = n)
>> Should print in below format
>> 0:11:05
>> 
>> On Thu, Jun 4, 2020 at 11:45 PM Chuck Lever <chuck.lever@oracle.com> wrote:
>>> 
>>> 
>>> 
>>>> On Jun 4, 2020, at 1:52 PM, Rohan Sable <rsable@redhat.com> wrote:
>>>> 
>>>> This patch adds printing of 'Age' in 'Sec' and 'Day:Hours:Min:Sec' like below to --nfs in mountstats :
>>>> NFS mount age: 9479; 0 Day(s) 2 Hour(s) 37 Min(s) 59 Sec(s)
>>>> 
>>>> Signed-off-by: Rohan Sable <rsable@redhat.com>
>>>> ---
>>>> tools/mountstats/mountstats.py | 12 ++++++++++++
>>>> 1 file changed, 12 insertions(+)
>>>> 
>>>> diff --git a/tools/mountstats/mountstats.py b/tools/mountstats/mountstats.py
>>>> index d565385d..c4f4f9e6 100755
>>>> --- a/tools/mountstats/mountstats.py
>>>> +++ b/tools/mountstats/mountstats.py
>>>> @@ -233,6 +233,16 @@ Nfsv4ops = [
>>>>    'COPY_NOTIFY'
>>>> ]
>>>> 
>>>> +# Function to convert sec from age to Day:Hours:Min:Sec.
>>>> +def sec_conv(rem):
>>>> +    day = int(rem / (24 * 3600))
>>>> +    rem %= (24 * 3600)
>>>> +    hrs = int(rem / 3600)
>>>> +    rem %= 3600
>>>> +    min = int(rem / 60)
>>>> +    sec = rem % 60
>>>> +    print(day, "Day(s)", hrs, "Hour(s)", min, "Min(s)", sec, "Sec(s)")
>>>> +
>>> 
>>> Just wondering if there's a Python module that can do this for us?
>>> 
>>> 
>>>> class DeviceData:
>>>>    """DeviceData objects provide methods for parsing and displaying
>>>>    data for a single mount grabbed from /proc/self/mountstats
>>>> @@ -391,6 +401,8 @@ class DeviceData:
>>>>        """Pretty-print the NFS options
>>>>        """
>>>>        print('  NFS mount options: %s' % ','.join(self.__nfs_data['mountoptions']))
>>>> +        print('  NFS mount age: %d' % self.__nfs_data['age'], end="; ")
>>>> +        sec_conv(self.__nfs_data['age'])
>>>>        print('  NFS server capabilities: %s' % ','.join(self.__nfs_data['servercapabilities']))
>>>>        if 'nfsv4flags' in self.__nfs_data:
>>>>            print('  NFSv4 capability flags: %s' % ','.join(self.__nfs_data['nfsv4flags']))
>>>> --
>>>> 2.25.4
>>>> 
>>> 
>>> --
>>> Chuck Lever
>>> 
>>> 
>>> 
> 

--
Chuck Lever
Chuck Lever June 4, 2020, 11:27 p.m. UTC | #5
> On Jun 4, 2020, at 4:12 PM, Rohan Sable <rsable@redhat.com> wrote:
> 
> >> For pretty-printing the mount point's age, you probably don't need
> >> to display the raw delta seconds value.
> 
> Yes, I can drop that.
> 
> >> Just wondering if there's a Python module that can do this for us?
> 
> I was not exactly sure if I could be doing that, since this is kind of the 1st one for me.
> If that's fine, using the timedate module makes it way smaller and easier.

Importing "datetime" should be fine.


--
Chuck Lever
diff mbox series

Patch

diff --git a/tools/mountstats/mountstats.py b/tools/mountstats/mountstats.py
index d565385d..c4f4f9e6 100755
--- a/tools/mountstats/mountstats.py
+++ b/tools/mountstats/mountstats.py
@@ -233,6 +233,16 @@  Nfsv4ops = [
     'COPY_NOTIFY'
 ]
 
+# Function to convert sec from age to Day:Hours:Min:Sec.
+def sec_conv(rem):
+    day = int(rem / (24 * 3600))
+    rem %= (24 * 3600)
+    hrs = int(rem / 3600)
+    rem %= 3600
+    min = int(rem / 60)
+    sec = rem % 60
+    print(day, "Day(s)", hrs, "Hour(s)", min, "Min(s)", sec, "Sec(s)")
+
 class DeviceData:
     """DeviceData objects provide methods for parsing and displaying
     data for a single mount grabbed from /proc/self/mountstats
@@ -391,6 +401,8 @@  class DeviceData:
         """Pretty-print the NFS options
         """
         print('  NFS mount options: %s' % ','.join(self.__nfs_data['mountoptions']))
+        print('  NFS mount age: %d' % self.__nfs_data['age'], end="; ")
+        sec_conv(self.__nfs_data['age'])
         print('  NFS server capabilities: %s' % ','.join(self.__nfs_data['servercapabilities']))
         if 'nfsv4flags' in self.__nfs_data:
             print('  NFSv4 capability flags: %s' % ','.join(self.__nfs_data['nfsv4flags']))