From fc72a3a3a20dd3fa6810f292bff0d8b5079a3c4b Mon Sep 17 00:00:00 2001 From: Oleksiy Mishchenko <oleksiy@google.com> Date: Thu, 29 Jan 2009 15:02:20 +0000 Subject: [PATCH] RAPI: Implement /2 resource Reviewed-by: iustinp --- lib/rapi/connector.py | 37 +++++++++++++++++++++++++- test/ganeti.rapi.resources_unittest.py | 2 +- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/lib/rapi/connector.py b/lib/rapi/connector.py index 0b81c57d7..cb843b894 100644 --- a/lib/rapi/connector.py +++ b/lib/rapi/connector.py @@ -114,12 +114,47 @@ class R_root(baserlib.R_Generic): return baserlib.BuildUriList(rootlist, "/%s") +def _getResources(id): + """Return a list of resources underneath given id. + + This is to generalize querying of version resources lists. + + @return: a list of resources names. + + """ + r_pattern = re.compile('^R_%s_([a-zA-Z0-9]+)$' % id) + + rlist = [] + for handler in CONNECTOR.values(): + m = r_pattern.match(handler.__name__) + if m: + name = m.group(1) + rlist.append(name) + + return rlist + + +class R_2(baserlib.R_Generic): + """ /2 resourse. + + """ + DOC_URI = "/2" + + def GET(self): + """Show the list of mapped resources. + + @return: a dictionary with 'name' and 'uri' keys for each of them. + + """ + return baserlib.BuildUriList(_getResources("2"), "/2/%s") + + CONNECTOR.update({ "/": R_root, "/version": rlib1.R_version, - + "/2": R_2, "/2/jobs": rlib2.R_2_jobs, "/2/nodes": rlib2.R_2_nodes, "/2/instances": rlib2.R_2_instances, diff --git a/test/ganeti.rapi.resources_unittest.py b/test/ganeti.rapi.resources_unittest.py index 9a5bef6d9..b40e0da49 100755 --- a/test/ganeti.rapi.resources_unittest.py +++ b/test/ganeti.rapi.resources_unittest.py @@ -76,7 +76,7 @@ class R_RootTests(unittest.TestCase): def testGet(self): expected = [ - # TODO: {'name': 'info', 'uri': '/2'}, + {'name': '2', 'uri': '/2'}, {'name': 'version', 'uri': '/version'}, ] self.assertEquals(self.root.GET(), expected) -- GitLab