diff options
author | Luke Macken <lmacken@redhat.com> | 2008-01-17 13:42:44 -0500 |
---|---|---|
committer | Luke Macken <lmacken@redhat.com> | 2008-01-17 13:42:44 -0500 |
commit | 97c21048ebfdcd205888c659393ae4e1f66de034 (patch) | |
tree | 6fbd7780118b786c8504991e3a87261a9fe02254 /funcweb/funcweb/controllers.py | |
parent | 5beae9e4bee512ad0b52495a6fa8ba94052a3348 (diff) | |
download | func-97c21048ebfdcd205888c659393ae4e1f66de034.tar.gz func-97c21048ebfdcd205888c659393ae4e1f66de034.tar.xz func-97c21048ebfdcd205888c659393ae4e1f66de034.zip |
Add ability to execute methods and view minions/modules/methods from funcweb
Diffstat (limited to 'funcweb/funcweb/controllers.py')
-rw-r--r-- | funcweb/funcweb/controllers.py | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/funcweb/funcweb/controllers.py b/funcweb/funcweb/controllers.py index 0754526..5fa6630 100644 --- a/funcweb/funcweb/controllers.py +++ b/funcweb/funcweb/controllers.py @@ -10,12 +10,32 @@ class Root(controllers.RootController): def minions(self): """ Return a list of our minions """ fc = Client("*") - return dict(minions=fc.system.list_methods()) + return dict(minions=fc.system.list_methods(), widgets=[]) @expose(template="funcweb.templates.minion") - def minion(self, name): + def minion(self, name, module=None, method=None): """ View all modules for a given minion """ fc = Client(name) - return dict(modules=fc.system.list_modules()) + if not module: # list all modules + modules = fc.system.list_modules() + return dict(modules=modules) + else: # a module is specified + if method: # minion.module.method specified; bring up execution form + return dict(minion=name, module=module, method=method, + tg_template="funcweb.templates.method") + else: # return a list of methods for specified module + modules = getattr(fc, module).list_methods() + return dict(modules=modules, module=module, + tg_template="funcweb.templates.module") - index = minions + index = minions # start with our minion view, for now + + @expose(template="funcweb.templates.run") + def run(self, minion="*", module=None, method=None, arguments=None): + fc = Client(minion) + if arguments: + results = getattr(getattr(fc, module), method)(arguments) + else: + results = getattr(getattr(fc, module), method)() + cmd = "%s.%s.%s(%s)" % (minion, module, method, arguments) + return dict(cmd=cmd, results=results) |