[autotest] Add JSON output to atest server list
JSON output allows atest to be used to access server_db information in
admin scripts.
BUG=None
TEST=Run atest server list
Change-Id: I84240cb56a36a68f457b361d13131af694d7e645
Reviewed-on: https://chromium-review.googlesource.com/404689
Commit-Ready: Allen Li <[email protected]>
Tested-by: Allen Li <[email protected]>
Reviewed-by: Allen Li <[email protected]>
diff --git a/site_utils/server_manager_utils.py b/site_utils/server_manager_utils.py
index b9e6ea7..e69d6f2 100644
--- a/site_utils/server_manager_utils.py
+++ b/site_utils/server_manager_utils.py
@@ -8,6 +8,7 @@
"""
import collections
+import json
import socket
import subprocess
import sys
@@ -92,6 +93,37 @@
return '\n'.join(str(server) for server in servers)
+def format_servers_json(servers):
+ """Format servers for printing as JSON.
+
+ Example output:
+
+ Hostname : server2
+ Status : primary
+ Roles : drone
+ Attributes : {'max_processes':300}
+ Date Created : 2014-11-25 12:00:00
+ Date Modified: None
+ Note : Drone in lab1
+
+ @param servers: Sequence of Server instances.
+ @returns: String.
+ """
+ server_dicts = []
+ for server in servers:
+ if server.date_modified is None:
+ date_modified = None
+ else:
+ date_modified = str(server.date_modified)
+ server_dicts.append({'hostname': server.hostname,
+ 'status': server.status,
+ 'roles': server.get_role_names(),
+ 'date_created': str(server.date_created),
+ 'date_modified': date_modified,
+ 'note': server.note})
+ return json.dumps(server_dicts)
+
+
_SERVER_TABLE_FORMAT = ('%(hostname)-30s | %(status)-7s | %(roles)-20s |'
' %(date_created)-19s | %(date_modified)-19s |'
' %(note)s')