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 |
> 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
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 > > >
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 > > > > > >
> 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
> 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 --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']))
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(+)