# HG changeset patch
# User Ewan Mellor <ewan@xxxxxxxxxxxxx>
# Date 1176117635 -3600
# Node ID 3565e4883548fcb448c8c9489b83ee80035d27f7
# Parent 51678fab4b0fb73faa141fef19dbe69207961573
Make host.sched_policy read-only. Added docs, bindings, and a test for
host.cpu_configuration and host.sched_policy.
Signed-off-by: Ewan Mellor <ewan@xxxxxxxxxxxxx>
---
docs/xen-api/xenapi-datamodel.tex | 66 ++++++++++++++++++++++++++++++++++++++
tools/libxen/include/xen_host.h | 16 +++++++++
tools/libxen/src/xen_host.c | 42 ++++++++++++++++++++++++
tools/libxen/test/test_bindings.c | 45 +++++++++++++++++++++++++
tools/python/xen/xend/XendAPI.py | 2 -
5 files changed, 170 insertions(+), 1 deletion(-)
diff -r 51678fab4b0f -r 3565e4883548 docs/xen-api/xenapi-datamodel.tex
--- a/docs/xen-api/xenapi-datamodel.tex Mon Apr 09 11:39:27 2007 +0100
+++ b/docs/xen-api/xenapi-datamodel.tex Mon Apr 09 12:20:35 2007 +0100
@@ -4744,6 +4744,8 @@ Quals & Field & Type & Description \\
$\mathit{RO}_\mathit{run}$ & {\tt software\_version} & (string $\rightarrow$
string) Map & version strings \\
$\mathit{RW}$ & {\tt other\_config} & (string $\rightarrow$ string) Map &
additional configuration \\
$\mathit{RO}_\mathit{run}$ & {\tt capabilities} & string Set & Xen
capabilities \\
+$\mathit{RO}_\mathit{run}$ & {\tt cpu\_configuration} & (string $\rightarrow$
string) Map & The CPU configuration on this host. May contain keys such as
``nr\_nodes'', ``sockets\_per\_node'', ``cores\_per\_socket'', or
``threads\_per\_core'' \\
+$\mathit{RO}_\mathit{run}$ & {\tt sched\_policy} & string & Scheduler policy
currently in force on this host \\
$\mathit{RO}_\mathit{run}$ & {\tt supported\_bootloaders} & string Set & a
list of the bootloaders installed on the machine \\
$\mathit{RO}_\mathit{run}$ & {\tt resident\_VMs} & (VM ref) Set & list of VMs
currently resident on host \\
$\mathit{RW}$ & {\tt logging} & (string $\rightarrow$ string) Map & logging
configuration \\
@@ -5545,6 +5547,70 @@ Get the capabilities field of the given
\noindent {\bf Return Type:}
{\tt
string Set
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_cpu\_configuration}
+
+{\bf Overview:}
+Get the cpu\_configuration field of the given host.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} ((string -> string) Map) get_cpu_configuration (session_id s,
host ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt host ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+(string $\rightarrow$ string) Map
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_sched\_policy}
+
+{\bf Overview:}
+Get the sched\_policy field of the given host.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} string get_sched_policy (session_id s, host ref
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt host ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+string
}
diff -r 51678fab4b0f -r 3565e4883548 tools/libxen/include/xen_host.h
--- a/tools/libxen/include/xen_host.h Mon Apr 09 11:39:27 2007 +0100
+++ b/tools/libxen/include/xen_host.h Mon Apr 09 12:20:35 2007 +0100
@@ -79,6 +79,8 @@ typedef struct xen_host_record
xen_string_string_map *software_version;
xen_string_string_map *other_config;
struct xen_string_set *capabilities;
+ xen_string_string_map *cpu_configuration;
+ char *sched_policy;
struct xen_string_set *supported_bootloaders;
struct xen_vm_record_opt_set *resident_vms;
xen_string_string_map *logging;
@@ -261,6 +263,20 @@ xen_host_get_capabilities(xen_session *s
/**
+ * Get the cpu_configuration field of the given host.
+ */
+extern bool
+xen_host_get_cpu_configuration(xen_session *session, xen_string_string_map
**result, xen_host host);
+
+
+/**
+ * Get the sched_policy field of the given host.
+ */
+extern bool
+xen_host_get_sched_policy(xen_session *session, char **result, xen_host host);
+
+
+/**
* Get the supported_bootloaders field of the given host.
*/
extern bool
diff -r 51678fab4b0f -r 3565e4883548 tools/libxen/src/xen_host.c
--- a/tools/libxen/src/xen_host.c Mon Apr 09 11:39:27 2007 +0100
+++ b/tools/libxen/src/xen_host.c Mon Apr 09 12:20:35 2007 +0100
@@ -73,6 +73,12 @@ static const struct_member xen_host_reco
{ .key = "capabilities",
.type = &abstract_type_string_set,
.offset = offsetof(xen_host_record, capabilities) },
+ { .key = "cpu_configuration",
+ .type = &abstract_type_string_string_map,
+ .offset = offsetof(xen_host_record, cpu_configuration) },
+ { .key = "sched_policy",
+ .type = &abstract_type_string,
+ .offset = offsetof(xen_host_record, sched_policy) },
{ .key = "supported_bootloaders",
.type = &abstract_type_string_set,
.offset = offsetof(xen_host_record, supported_bootloaders) },
@@ -128,6 +134,8 @@ xen_host_record_free(xen_host_record *re
xen_string_string_map_free(record->software_version);
xen_string_string_map_free(record->other_config);
xen_string_set_free(record->capabilities);
+ xen_string_string_map_free(record->cpu_configuration);
+ free(record->sched_policy);
xen_string_set_free(record->supported_bootloaders);
xen_vm_record_opt_set_free(record->resident_vms);
xen_string_string_map_free(record->logging);
@@ -350,6 +358,40 @@ xen_host_get_capabilities(xen_session *s
bool
+xen_host_get_cpu_configuration(xen_session *session, xen_string_string_map
**result, xen_host host)
+{
+ abstract_value param_values[] =
+ {
+ { .type = &abstract_type_string,
+ .u.string_val = host }
+ };
+
+ abstract_type result_type = abstract_type_string_string_map;
+
+ *result = NULL;
+ XEN_CALL_("host.get_cpu_configuration");
+ return session->ok;
+}
+
+
+bool
+xen_host_get_sched_policy(xen_session *session, char **result, xen_host host)
+{
+ abstract_value param_values[] =
+ {
+ { .type = &abstract_type_string,
+ .u.string_val = host }
+ };
+
+ abstract_type result_type = abstract_type_string;
+
+ *result = NULL;
+ XEN_CALL_("host.get_sched_policy");
+ return session->ok;
+}
+
+
+bool
xen_host_get_supported_bootloaders(xen_session *session, struct xen_string_set
**result, xen_host host)
{
abstract_value param_values[] =
diff -r 51678fab4b0f -r 3565e4883548 tools/libxen/test/test_bindings.c
--- a/tools/libxen/test/test_bindings.c Mon Apr 09 11:39:27 2007 +0100
+++ b/tools/libxen/test/test_bindings.c Mon Apr 09 12:20:35 2007 +0100
@@ -285,6 +285,40 @@ int main(int argc, char **argv)
return 1;
}
+ xen_string_string_map *cpu_configuration;
+ if (!xen_host_get_cpu_configuration(session, &cpu_configuration, host))
+ {
+ print_error(session);
+ free(dmesg);
+ xen_string_set_free(capabilities);
+ xen_string_set_free(supported_bootloaders);
+ xen_string_string_map_free(versions);
+ xen_host_free(host);
+ xen_vm_record_free(vm_record);
+ xen_uuid_bytes_free(vm_uuid_bytes);
+ xen_uuid_free(vm_uuid);
+ xen_vm_free(vm);
+ CLEANUP;
+ return 1;
+ }
+
+ char *sched_policy;
+ if (!xen_host_get_sched_policy(session, &sched_policy, host))
+ {
+ print_error(session);
+ xen_string_string_map_free(cpu_configuration);
+ xen_string_set_free(capabilities);
+ xen_string_set_free(supported_bootloaders);
+ xen_string_string_map_free(versions);
+ xen_host_free(host);
+ xen_vm_record_free(vm_record);
+ xen_uuid_bytes_free(vm_uuid_bytes);
+ xen_uuid_free(vm_uuid);
+ xen_vm_free(vm);
+ CLEANUP;
+ return 1;
+ }
+
printf("%s.\n", vm_uuid);
printf("In bytes, the VM UUID is ");
@@ -317,6 +351,15 @@ int main(int argc, char **argv)
printf(" %s", capabilities->contents[i]);
}
printf("\n");
+
+ printf("Host has the following CPU configuration:\n");
+ for (size_t i = 0; i < cpu_configuration->size; i++)
+ {
+ printf(" %s -> %s.\n", cpu_configuration->contents[i].key,
+ cpu_configuration->contents[i].val);
+ }
+
+ printf("Current scheduler policy: %s.\n\n", sched_policy);
printf("%s.\n", vm_record->uuid);
@@ -334,6 +377,8 @@ int main(int argc, char **argv)
free(dmesg);
xen_string_set_free(supported_bootloaders);
xen_string_set_free(capabilities);
+ xen_string_string_map_free(cpu_configuration);
+ free(sched_policy);
print_vm_metrics(session, vm);
if (!session->ok)
diff -r 51678fab4b0f -r 3565e4883548 tools/python/xen/xend/XendAPI.py
--- a/tools/python/xen/xend/XendAPI.py Mon Apr 09 11:39:27 2007 +0100
+++ b/tools/python/xen/xend/XendAPI.py Mon Apr 09 12:20:35 2007 +0100
@@ -860,13 +860,13 @@ class XendAPI(object):
'metrics',
'capabilities',
'supported_bootloaders',
+ 'sched_policy',
'API_version_major',
'API_version_minor',
'API_version_vendor',
'API_version_vendor_implementation']
host_attr_rw = ['name_label',
- 'sched_policy',
'name_description',
'other_config']
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|