@@ -298,9 +298,22 @@ func actionScan(c *cli.Context) error {
298298 fmt .Printf ("Scan failed: %s\n " , err )
299299 os .Exit (1 )
300300 }
301- fmt .Printf ("Discovered %v Spawnpoint(s)\n " , len (heartbeats ))
302- for uri , hb := range heartbeats {
303- printSpawnpointStatus (uri , & hb )
301+
302+ if len (heartbeats ) == 1 {
303+ // Guaranteed to iterate once
304+ for uri , _ := range heartbeats {
305+ daemonHb , svcHbs , err := spawnClient .Inspect (uri )
306+ if err != nil {
307+ fmt .Printf ("Inspect failed: %s\n " , err )
308+ os .Exit (1 )
309+ }
310+ printSpawnpointDetails (uri , daemonHb , svcHbs )
311+ }
312+ } else {
313+ fmt .Printf ("Discovered %v Spawnpoint(s)\n " , len (heartbeats ))
314+ for uri , hb := range heartbeats {
315+ printSpawnpointStatus (uri , & hb )
316+ }
304317 }
305318
306319 return nil
@@ -339,10 +352,12 @@ func parseSvcConfig(configFile string) (*service.Configuration, error) {
339352}
340353
341354func printSpawnpointStatus (uri string , hb * daemon.Heartbeat ) {
355+ tokens := strings .Split (uri , "/" )
356+ alias := tokens [len (tokens )- 1 ]
342357 lastSeen := time .Unix (0 , hb .Time )
343358 duration := time .Now ().Sub (lastSeen ) / (10 * time .Millisecond ) * (10 * time .Millisecond )
344359
345- fmt .Printf ("[%s] seen %s (%s) ago at %s\n " , hb . Alias , lastSeen .Format (time .RFC822 ), duration .String (), uri )
360+ fmt .Printf ("[%s] seen %s (%s) ago at %s\n " , alias , lastSeen .Format (time .RFC822 ), duration .String (), uri )
346361 fmt .Printf ("Available CPU Shares: %v/%v\n " , hb .AvailableCPU , hb .TotalCPU )
347362 fmt .Printf ("Available Memory: %v/%v\n " , hb .AvailableMemory , hb .TotalMemory )
348363
@@ -351,3 +366,23 @@ func printSpawnpointStatus(uri string, hb *daemon.Heartbeat) {
351366 fmt .Printf (" • %s\n " , service )
352367 }
353368}
369+
370+ func printSpawnpointDetails (uri string , daemonHb * daemon.Heartbeat , svcHbs map [string ]daemon.ServiceHeartbeat ) {
371+ tokens := strings .Split (uri , "/" )
372+ alias := tokens [len (tokens )- 1 ]
373+ lastSeen := time .Unix (0 , daemonHb .Time )
374+ duration := time .Now ().Sub (lastSeen ) / (10 * time .Millisecond ) * (10 * time .Millisecond )
375+
376+ fmt .Printf ("[%s] seen %s (%s) ago at %s\n " , alias , lastSeen .Format (time .RFC822 ), duration .String (), uri )
377+ fmt .Printf ("Available CPU Shares: %v/%v\n " , daemonHb .AvailableCPU , daemonHb .TotalCPU )
378+ fmt .Printf ("Available Memory: %v/%v\n " , daemonHb .AvailableMemory , daemonHb .TotalMemory )
379+
380+ fmt .Printf ("%v Running Service(s)\n " , len (daemonHb .Services ))
381+ for name , svcHb := range svcHbs {
382+ lastSeen := time .Unix (0 , svcHb .Time )
383+ duration := time .Now ().Sub (lastSeen ) / (10 * time .Millisecond ) * (10 * time .Millisecond )
384+ fmt .Printf ("• [%s] seen %s (%s) ago.\n " , name , lastSeen .Format (time .RFC822 ), duration .String ())
385+ fmt .Printf (" CPU: ~%.2f/%d Shares. Memory: %.2f/%d MiB\n " , svcHb .UsedCPUShares , svcHb .CPUShares ,
386+ svcHb .UsedMemory , svcHb .Memory )
387+ }
388+ }
0 commit comments