diff mbox

[herd] Have status display services as a bulleted list.

Message ID 87oa15j4cq.fsf@dustycloud.org
State New
Headers show

Commit Message

Christopher Allan Webber Nov. 23, 2016, 9:03 p.m. UTC
I don't know about you, but I am totally unable to read the
"herd status" line as it exists in the current state.  I mean, I love
sexps, but even I don't like a completely flat and ungreppable list
printed to stdout.

*** Previous output ***

cwebber@oolong:~/devel/shepherd$ sudo herd -s /var/run/shepherd/socket status
Started: (file-system-/run/systemd xorg-server file-system-/sys/fs/cgroup/cpuacct file-system-/mnt/debian syslogd term-tty1 root-file-system file-system-/sys/fs/cgroup/blkio avahi-daemon file-system-/sys/fs/cgroup upower-daemon console-font-tty6 console-font-tty3 nscd file-system-/run/user file-system-/sys/fs/cgroup/memory file-system-/dev/pts loopback term-tty2 user-processes term-tty4 postgres file-system-/sys/fs/cgroup/perf_event file-system-/sys/fs/cgroup/cpuset device-mapping-home-luks guix-daemon file-system-/sys/fs/cgroup/elogind file-system-/sys/fs/cgroup/devices file-system-/dev/shm dbus-system console-font-tty5 term-tty6 host-name term-tty3 file-system-/sys/fs/cgroup/hugetlb file-system-/sys/fs/cgroup/cpu file-system-/home networking ntpd console-font-tty4 urandom-seed user-file-systems file-system-/sys/fs/cgroup/freezer file-system-/gnu/store root console-font-tty2 term-tty5 console-font-tty1 udev)
Stopped: (ssh-daemon)

*** New output ***

cwebber@oolong:~/devel/shepherd$ sudo ./herd -s /var/run/shepherd/socket status
Started:
 + file-system-/run/systemd
 + xorg-server
 + file-system-/sys/fs/cgroup/cpuacct
 + file-system-/mnt/debian
 + syslogd
 + term-tty1
 + root-file-system
 + file-system-/sys/fs/cgroup/blkio
 + avahi-daemon
 + file-system-/sys/fs/cgroup
 + upower-daemon
 + console-font-tty6
 + console-font-tty3
 + nscd
 + file-system-/run/user
 + file-system-/sys/fs/cgroup/memory
 + file-system-/dev/pts
 + loopback
 + term-tty2
 + user-processes
 + term-tty4
 + postgres
 + file-system-/sys/fs/cgroup/perf_event
 + file-system-/sys/fs/cgroup/cpuset
 + device-mapping-home-luks
 + guix-daemon
 + file-system-/sys/fs/cgroup/elogind
 + file-system-/sys/fs/cgroup/devices
 + file-system-/dev/shm
 + dbus-system
 + console-font-tty5
 + term-tty6
 + host-name
 + term-tty3
 + file-system-/sys/fs/cgroup/hugetlb
 + file-system-/sys/fs/cgroup/cpu
 + file-system-/home
 + networking
 + ntpd
 + console-font-tty4
 + urandom-seed
 + user-file-systems
 + file-system-/sys/fs/cgroup/freezer
 + file-system-/gnu/store
 + root
 + console-font-tty2
 + term-tty5
 + console-font-tty1
 + udev
Stopped:
 - ssh-daemon

Whew!  I can read that finally.  And grep it too!

Speaking of grepping, the new bulleted behavior uses a "+" for services
enabled, and a "-" for disabled services.  That way if you do a grep,
you'll still know whether it was enabled/disabled.

 - Chris

Comments

Hartmut Goebel Nov. 24, 2016, 8:28 a.m. UTC | #1
Am 23.11.2016 um 22:03 schrieb Christopher Allan Webber:
> Whew!  I can read that finally.  And grep it too!
+1
Alex Sassmannshausen Nov. 24, 2016, 9 a.m. UTC | #2
Hartmut Goebel writes:

> Am 23.11.2016 um 22:03 schrieb Christopher Allan Webber:
>> Whew!  I can read that finally.  And grep it too!
> +1

Indeed, neat patch :-)
Ludovic Courtès Nov. 24, 2016, 4:16 p.m. UTC | #3
Christopher Allan Webber <cwebber@dustycloud.org> skribis:

> I don't know about you, but I am totally unable to read the
> "herd status" line as it exists in the current state.  I mean, I love
> sexps, but even I don't like a completely flat and ungreppable list
> printed to stdout.

Agreed!

> *** New output ***
>
> cwebber@oolong:~/devel/shepherd$ sudo ./herd -s /var/run/shepherd/socket status
> Started:
>  + file-system-/run/systemd
>  + xorg-server
>  + file-system-/sys/fs/cgroup/cpuacct
>  + file-system-/mnt/debian
>  + syslogd
>  + term-tty1
>  + root-file-system
>  + file-system-/sys/fs/cgroup/blkio
>  + avahi-daemon

Works for me!  I’m just wondering if there are ideas we could/should
follow more closely the output of ‘systemctl status’.  IIRC, it displays
a couple of lines for each service; for instance, we could display the
“running” value and dependencies of each service, indented below its
name.

WDYT?  Would that make sense?

Ludo’.
Christopher Allan Webber Nov. 25, 2016, 4:55 a.m. UTC | #4
Ludovic Courtès writes:

> Christopher Allan Webber <cwebber@dustycloud.org> skribis:
>
>> I don't know about you, but I am totally unable to read the
>> "herd status" line as it exists in the current state.  I mean, I love
>> sexps, but even I don't like a completely flat and ungreppable list
>> printed to stdout.
>
> Agreed!
>
>> *** New output ***
>>
>> cwebber@oolong:~/devel/shepherd$ sudo ./herd -s /var/run/shepherd/socket status
>> Started:
>>  + file-system-/run/systemd
>>  + xorg-server
>>  + file-system-/sys/fs/cgroup/cpuacct
>>  + file-system-/mnt/debian
>>  + syslogd
>>  + term-tty1
>>  + root-file-system
>>  + file-system-/sys/fs/cgroup/blkio
>>  + avahi-daemon
>
> Works for me!  I’m just wondering if there are ideas we could/should
> follow more closely the output of ‘systemctl status’.  IIRC, it displays
> a couple of lines for each service; for instance, we could display the
> “running” value and dependencies of each service, indented below its
> name.
>
> WDYT?  Would that make sense?
>
> Ludo’.

It's a good idea, and I think we should shoot for better output.
Listing a tree of dependencies is a great idea.

But I'm unlikely to have time to get to it soon.  I think it should be
on our TODO list, but for now, the preceding patch will still be a nice
improvement.

If someone else wants to step up to make those changes, of course,
great!

 - Chris
Ludovic Courtès Nov. 25, 2016, 11:08 p.m. UTC | #5
Christopher Allan Webber <cwebber@dustycloud.org> skribis:

> Ludovic Courtès writes:
>
>> Christopher Allan Webber <cwebber@dustycloud.org> skribis:
>>
>>> I don't know about you, but I am totally unable to read the
>>> "herd status" line as it exists in the current state.  I mean, I love
>>> sexps, but even I don't like a completely flat and ungreppable list
>>> printed to stdout.
>>
>> Agreed!
>>
>>> *** New output ***
>>>
>>> cwebber@oolong:~/devel/shepherd$ sudo ./herd -s /var/run/shepherd/socket status
>>> Started:
>>>  + file-system-/run/systemd
>>>  + xorg-server
>>>  + file-system-/sys/fs/cgroup/cpuacct
>>>  + file-system-/mnt/debian
>>>  + syslogd
>>>  + term-tty1
>>>  + root-file-system
>>>  + file-system-/sys/fs/cgroup/blkio
>>>  + avahi-daemon
>>
>> Works for me!  I’m just wondering if there are ideas we could/should
>> follow more closely the output of ‘systemctl status’.  IIRC, it displays
>> a couple of lines for each service; for instance, we could display the
>> “running” value and dependencies of each service, indented below its
>> name.
>>
>> WDYT?  Would that make sense?
>>
>> Ludo’.
>
> It's a good idea, and I think we should shoot for better output.
> Listing a tree of dependencies is a great idea.
>
> But I'm unlikely to have time to get to it soon.  I think it should be
> on our TODO list, but for now, the preceding patch will still be a nice
> improvement.

You’re right.  Applied with an adjusted test.

Thank you!

Ludo’.
diff mbox

Patch

From d9391382286b1dc5a0719c9e1e6ac1e5941bbb87 Mon Sep 17 00:00:00 2001
From: Christopher Allan Webber <cwebber@dustycloud.org>
Date: Wed, 23 Nov 2016 14:53:18 -0600
Subject: [PATCH] herd: Have status display services as a bulleted list.

* modules/shepherd/scripts/herd.scm (display-status-summary): Display
services as an ascii bulleted list.
---
 modules/shepherd/scripts/herd.scm | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/modules/shepherd/scripts/herd.scm b/modules/shepherd/scripts/herd.scm
index 0ad52b2..06256c1 100644
--- a/modules/shepherd/scripts/herd.scm
+++ b/modules/shepherd/scripts/herd.scm
@@ -46,6 +46,11 @@  of pairs."
 
 (define (display-status-summary services)
   "Display a summary of the status of all of SERVICES."
+  (define (display-services header bullet services)
+    (display header)
+    (for-each (lambda (service)
+                (format #t " ~a ~a~%" bullet (service-canonical-name service)))
+              services))
   (call-with-values
       (lambda ()
         (partition (match-lambda
@@ -53,10 +58,10 @@  of pairs."
                       (car (assoc-ref properties 'running))))
                    services))
     (lambda (started stopped)
-      (format #t (l10n "Started: ~a~%")
-              (map service-canonical-name started))
-      (format #t (l10n "Stopped: ~a~%")
-              (map service-canonical-name stopped)))))
+      (display-services (l10n "Started:\n") "+"
+                        started)
+      (display-services (l10n "Stopped:\n") "-"
+                        stopped))))
 
 (define (display-detailed-status services)
   "Display the detailed status of SERVICES."
-- 
2.10.2