Expose the method-listing call as host.list_methods.

Signed-off-by: Ewan Mellor <ewan@xensource.com>
This commit is contained in:
Ewan Mellor committed 2007-04-04 18:42:20 +01:00
1 parent 3a7400aa86
commit fccf5da0dd
6 files changed
+92 -11

No files matched your search

+21
View File
@@ -4952,6 +4952,27 @@ dmesg string
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~list\_methods}
{\bf Overview:}
List all supported methods.
\noindent {\bf Signature:}
\begin{verbatim} (string Set) list_methods (session_id s)\end{verbatim}
\vspace{0.3cm}
\noindent {\bf Return Type:}
{\tt
string Set
}
The name of every supported method.
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_all}
{\bf Overview:}
+7
View File
@@ -435,6 +435,13 @@ extern bool
xen_host_dmesg(xen_session *session, char **result, xen_host host);
/**
* List all supported methods.
*/
extern bool
xen_host_list_methods(xen_session *session, struct xen_string_set **result);
/**
* Return a list of all the hosts known to the system.
*/
+12
View File
@@ -739,6 +739,18 @@ xen_host_dmesg(xen_session *session, char **result, xen_host host)
}
bool
xen_host_list_methods(xen_session *session, struct xen_string_set **result)
{
abstract_type result_type = abstract_type_string_set;
*result = NULL;
xen_call_(session, "host.list_methods", NULL, 0, &result_type, result);
return session->ok;
}
bool
xen_host_get_all(xen_session *session, struct xen_host_set **result)
{
+43
View File
@@ -64,6 +64,7 @@ typedef struct
static xen_vm create_new_vm(xen_session *session, bool hvm);
static void print_session_info(xen_session *session);
static void print_methods(xen_session *session);
static void print_vm_power_state(xen_session *session, xen_vm vm);
static void print_vm_metrics(xen_session *session, xen_vm vm);
@@ -166,6 +167,14 @@ int main(int argc, char **argv)
return 1;
}
print_methods(session);
if (!session->ok)
{
/* Error has been logged, just clean up. */
CLEANUP;
return 1;
}
xen_vm vm;
if (!xen_vm_get_by_uuid(session, &vm,
"00000000-0000-0000-0000-000000000000"))
@@ -644,6 +653,40 @@ static void print_session_info(xen_session *session)
}
static int pstrcmp(const void *p1, const void *p2)
{
return strcmp(*(char **)p1, *(char **)p2);
}
/**
* Print the list of supported methods.
*/
static void print_methods(xen_session *session)
{
xen_string_set *methods;
if (!xen_host_list_methods(session, &methods))
{
print_error(session);
goto done;
}
printf("%zd.\n", methods->size);
qsort(methods->contents, methods->size, sizeof(char *), pstrcmp);
printf("Supported methods:\n");
for (size_t i = 0; i < methods->size; i++)
{
printf(" %s\n", methods->contents[i]);
}
fflush(stdout);
done:
xen_string_set_free(methods);
}
/**
* Print the metrics for the given VM.
*/
+8 -10
View File
@@ -886,7 +886,8 @@ class XendAPI(object):
('get_log', 'String'),
('send_debug_keys', None)]
host_funcs = [('get_by_name_label', 'Set(host)')]
host_funcs = [('get_by_name_label', None),
('list_methods', None)]
# attributes
def host_get_name_label(self, session, host_ref):
@@ -1010,6 +1011,12 @@ class XendAPI(object):
return xen_api_success((XendNode.instance().uuid,))
return xen_api_success([])
def host_list_methods(self, _):
def _funcs():
return [getattr(XendAPI, x) for x in XendAPI.__dict__]
return xen_api_success([x.api for x in _funcs()
if hasattr(x, 'api')])
# Xen API: Class host_CPU
# ----------------------------------------------------------------
@@ -2611,15 +2618,6 @@ class XendAPI(object):
return xen_api_success({'uuid': debug_ref})
def list_all_methods(self, _):
def _funcs():
return [getattr(XendAPI, x) for x in XendAPI.__dict__]
return xen_api_success([x.api for x in _funcs()
if hasattr(x, 'api')])
list_all_methods.api = '_UNSUPPORTED_list_all_methods'
class XendAPIAsyncProxy:
""" A redirector for Async.Class.function calls to XendAPI
but wraps the call for use with the XendTaskManager.
+1 -1
View File
@@ -591,7 +591,7 @@ class Shell(cmd.Cmd):
self.prompt = "xm> "
if serverType == SERVER_XEN_API:
try:
res = server.xenapi._UNSUPPORTED_list_all_methods()
res = server.xenapi.host.list_methods()
for f in res:
setattr(Shell, 'do_' + f + ' ', self.default)
except:
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.