Expose function table to python global control state API (#542)

* expose function table to python global control state API

* fix

* fix linting

* add test for function table
This commit is contained in:
Philipp Moritz
2017-05-16 20:06:13 -07:00
committed by Robert Nishihara
parent 5572561704
commit 28f0882387
2 changed files with 33 additions and 6 deletions
+20
View File
@@ -20,6 +20,7 @@ OBJECT_INFO_PREFIX = "OI:"
OBJECT_LOCATION_PREFIX = "OL:"
OBJECT_SUBSCRIBE_PREFIX = "OS:"
TASK_PREFIX = "TT:"
FUNCTION_PREFIX = "RemoteFunction:"
OBJECT_CHANNEL_PREFIX = "OC:"
# This mapping from integer to task state string must be kept up-to-date with
@@ -194,6 +195,25 @@ class GlobalState(object):
task_id_binary)
return results
def function_table(self, function_id=None):
"""Fetch and parse the function table.
Returns:
A dictionary that maps function IDs to information about the function.
"""
self._check_connected()
function_table_keys = self.redis_client.keys(FUNCTION_PREFIX + "*")
results = {}
for key in function_table_keys:
info = self.redis_client.hgetall(key)
function_info_parsed = {
"DriverID": binary_to_hex(info[b"driver_id"]),
"Module": decode(info[b"module"]),
"Name": decode(info[b"name"])
}
results[binary_to_hex(info[b"function_id"])] = function_info_parsed
return results
def client_table(self):
"""Fetch and parse the Redis DB client table.