WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] Add a last_updated field to every metrics

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] Add a last_updated field to every metrics class.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 23 Mar 2007 11:10:16 -0700
Delivery-date: Fri, 23 Mar 2007 11:10:05 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Ewan Mellor <ewan@xxxxxxxxxxxxx>
# Date 1174656449 0
# Node ID 678b8838d361c5d5469219334d9941526978b377
# Parent  931c4b77ea7dc244145250b128f8010cd6e22b18
Add a last_updated field to every metrics class.

Signed-off-by: Ewan Mellor <ewan@xxxxxxxxxxxxx>
---
 docs/xen-api/xenapi-datamodel.tex           |  198 ++++++++++++++++++++++++++++
 tools/libxen/include/xen_host_metrics.h     |    8 +
 tools/libxen/include/xen_pif_metrics.h      |    8 +
 tools/libxen/include/xen_vbd_metrics.h      |    8 +
 tools/libxen/include/xen_vif_metrics.h      |    8 +
 tools/libxen/include/xen_vm_guest_metrics.h |    8 +
 tools/libxen/include/xen_vm_metrics.h       |    8 +
 tools/libxen/src/xen_host_metrics.c         |   21 ++
 tools/libxen/src/xen_pif_metrics.c          |   21 ++
 tools/libxen/src/xen_vbd_metrics.c          |   21 ++
 tools/libxen/src/xen_vif_metrics.c          |   21 ++
 tools/libxen/src/xen_vm_guest_metrics.c     |   21 ++
 tools/libxen/src/xen_vm_metrics.c           |   21 ++
 tools/libxen/test/test_bindings.c           |    5 
 tools/python/xen/xend/XendAPI.py            |   86 +++++-------
 tools/python/xen/xend/XendPIFMetrics.py     |    4 
 tools/python/xen/xend/XendVMMetrics.py      |    2 
 17 files changed, 417 insertions(+), 52 deletions(-)

diff -r 931c4b77ea7d -r 678b8838d361 docs/xen-api/xenapi-datamodel.tex
--- a/docs/xen-api/xenapi-datamodel.tex Fri Mar 23 13:26:08 2007 +0000
+++ b/docs/xen-api/xenapi-datamodel.tex Fri Mar 23 13:27:29 2007 +0000
@@ -3983,6 +3983,7 @@ Quals & Field & Type & Description \\
 $\mathit{RO}_\mathit{run}$ &  {\tt memory/actual} & int & Guest's actual 
memory (bytes) \\
 $\mathit{RO}_\mathit{run}$ &  {\tt VCPUs/number} & int & Current number of 
VCPUs \\
 $\mathit{RO}_\mathit{run}$ &  {\tt VCPUs/utilisation} & (int $\rightarrow$ 
float) Map & Utilisation for all of guest's current VCPUs \\
+$\mathit{RO}_\mathit{run}$ &  {\tt last\_updated} & datetime & Time at which 
this information was last updated \\
 \hline
 \end{longtable}
 \subsection{RPCs associated with class: VM\_metrics}
@@ -4128,6 +4129,38 @@ Get the VCPUs/utilisation field of the g
  \noindent {\bf Return Type:} 
 {\tt 
 (int $\rightarrow$ float) Map
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_last\_updated}
+
+{\bf Overview:} 
+Get the last\_updated field of the given VM\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} datetime get_last_updated (session_id s, VM_metrics 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 VM\_metrics ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+datetime
 }
 
 
@@ -4219,6 +4252,7 @@ Quals & Field & Type & Description \\
 $\mathit{RO}_\mathit{run}$ &  {\tt disks} & (string $\rightarrow$ string) Map 
& disk configuration/free space \\
 $\mathit{RO}_\mathit{run}$ &  {\tt networks} & (string $\rightarrow$ string) 
Map & network configuration \\
 $\mathit{RO}_\mathit{run}$ &  {\tt other} & (string $\rightarrow$ string) Map 
& anything else \\
+$\mathit{RO}_\mathit{run}$ &  {\tt last\_updated} & datetime & Time at which 
this information was last updated \\
 \hline
 \end{longtable}
 \subsection{RPCs associated with class: VM\_guest\_metrics}
@@ -4460,6 +4494,38 @@ Get the other field of the given VM\_gue
  \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\_last\_updated}
+
+{\bf Overview:} 
+Get the last\_updated field of the given VM\_guest\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} datetime get_last_updated (session_id s, VM_guest_metrics 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 VM\_guest\_metrics ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+datetime
 }
 
 
@@ -5816,6 +5882,7 @@ Quals & Field & Type & Description \\
 $\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object 
reference \\
 $\mathit{RO}_\mathit{run}$ &  {\tt memory/total} & int & Host's total memory 
(bytes) \\
 $\mathit{RO}_\mathit{run}$ &  {\tt memory/free} & int & Host's free memory 
(bytes) \\
+$\mathit{RO}_\mathit{run}$ &  {\tt last\_updated} & datetime & Time at which 
this information was last updated \\
 \hline
 \end{longtable}
 \subsection{RPCs associated with class: host\_metrics}
@@ -5929,6 +5996,38 @@ Get the memory/free field of the given h
  \noindent {\bf Return Type:} 
 {\tt 
 int
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_last\_updated}
+
+{\bf Overview:} 
+Get the last\_updated field of the given host\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} datetime get_last_updated (session_id s, host_metrics 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\_metrics ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+datetime
 }
 
 
@@ -7745,6 +7844,7 @@ Quals & Field & Type & Description \\
 $\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object 
reference \\
 $\mathit{RO}_\mathit{run}$ &  {\tt io/read\_kbs} & float & Read bandwidth 
(KiB/s) \\
 $\mathit{RO}_\mathit{run}$ &  {\tt io/write\_kbs} & float & Write bandwidth 
(KiB/s) \\
+$\mathit{RO}_\mathit{run}$ &  {\tt last\_updated} & datetime & Time at which 
this information was last updated \\
 \hline
 \end{longtable}
 \subsection{RPCs associated with class: VIF\_metrics}
@@ -7858,6 +7958,38 @@ Get the io/write\_kbs field of the given
  \noindent {\bf Return Type:} 
 {\tt 
 float
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_last\_updated}
+
+{\bf Overview:} 
+Get the last\_updated field of the given VIF\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} datetime get_last_updated (session_id s, VIF_metrics 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 VIF\_metrics ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+datetime
 }
 
 
@@ -8522,6 +8654,7 @@ Quals & Field & Type & Description \\
 $\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object 
reference \\
 $\mathit{RO}_\mathit{run}$ &  {\tt io/read\_kbs} & float & Read bandwidth 
(KiB/s) \\
 $\mathit{RO}_\mathit{run}$ &  {\tt io/write\_kbs} & float & Write bandwidth 
(KiB/s) \\
+$\mathit{RO}_\mathit{run}$ &  {\tt last\_updated} & datetime & Time at which 
this information was last updated \\
 \hline
 \end{longtable}
 \subsection{RPCs associated with class: PIF\_metrics}
@@ -8635,6 +8768,38 @@ Get the io/write\_kbs field of the given
  \noindent {\bf Return Type:} 
 {\tt 
 float
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_last\_updated}
+
+{\bf Overview:} 
+Get the last\_updated field of the given PIF\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} datetime get_last_updated (session_id s, PIF_metrics 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 PIF\_metrics ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+datetime
 }
 
 
@@ -11293,6 +11458,7 @@ Quals & Field & Type & Description \\
 $\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object 
reference \\
 $\mathit{RO}_\mathit{run}$ &  {\tt io/read\_kbs} & float & Read bandwidth 
(KiB/s) \\
 $\mathit{RO}_\mathit{run}$ &  {\tt io/write\_kbs} & float & Write bandwidth 
(KiB/s) \\
+$\mathit{RO}_\mathit{run}$ &  {\tt last\_updated} & datetime & Time at which 
this information was last updated \\
 \hline
 \end{longtable}
 \subsection{RPCs associated with class: VBD\_metrics}
@@ -11406,6 +11572,38 @@ Get the io/write\_kbs field of the given
  \noindent {\bf Return Type:} 
 {\tt 
 float
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_last\_updated}
+
+{\bf Overview:} 
+Get the last\_updated field of the given VBD\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} datetime get_last_updated (session_id s, VBD_metrics 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 VBD\_metrics ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+datetime
 }
 
 
diff -r 931c4b77ea7d -r 678b8838d361 tools/libxen/include/xen_host_metrics.h
--- a/tools/libxen/include/xen_host_metrics.h   Fri Mar 23 13:26:08 2007 +0000
+++ b/tools/libxen/include/xen_host_metrics.h   Fri Mar 23 13:27:29 2007 +0000
@@ -64,6 +64,7 @@ typedef struct xen_host_metrics_record
     char *uuid;
     int64_t memory_total;
     int64_t memory_free;
+    time_t last_updated;
 } xen_host_metrics_record;
 
 /**
@@ -182,6 +183,13 @@ xen_host_metrics_get_memory_free(xen_ses
 
 
 /**
+ * Get the last_updated field of the given host_metrics.
+ */
+extern bool
+xen_host_metrics_get_last_updated(xen_session *session, time_t *result, 
xen_host_metrics host_metrics);
+
+
+/**
  * Return a list of all the host_metrics instances known to the system.
  */
 extern bool
diff -r 931c4b77ea7d -r 678b8838d361 tools/libxen/include/xen_pif_metrics.h
--- a/tools/libxen/include/xen_pif_metrics.h    Fri Mar 23 13:26:08 2007 +0000
+++ b/tools/libxen/include/xen_pif_metrics.h    Fri Mar 23 13:27:29 2007 +0000
@@ -64,6 +64,7 @@ typedef struct xen_pif_metrics_record
     char *uuid;
     double io_read_kbs;
     double io_write_kbs;
+    time_t last_updated;
 } xen_pif_metrics_record;
 
 /**
@@ -181,6 +182,13 @@ xen_pif_metrics_get_io_write_kbs(xen_ses
 
 
 /**
+ * Get the last_updated field of the given PIF_metrics.
+ */
+extern bool
+xen_pif_metrics_get_last_updated(xen_session *session, time_t *result, 
xen_pif_metrics pif_metrics);
+
+
+/**
  * Return a list of all the PIF_metrics instances known to the system.
  */
 extern bool
diff -r 931c4b77ea7d -r 678b8838d361 tools/libxen/include/xen_vbd_metrics.h
--- a/tools/libxen/include/xen_vbd_metrics.h    Fri Mar 23 13:26:08 2007 +0000
+++ b/tools/libxen/include/xen_vbd_metrics.h    Fri Mar 23 13:27:29 2007 +0000
@@ -64,6 +64,7 @@ typedef struct xen_vbd_metrics_record
     char *uuid;
     double io_read_kbs;
     double io_write_kbs;
+    time_t last_updated;
 } xen_vbd_metrics_record;
 
 /**
@@ -181,6 +182,13 @@ xen_vbd_metrics_get_io_write_kbs(xen_ses
 
 
 /**
+ * Get the last_updated field of the given VBD_metrics.
+ */
+extern bool
+xen_vbd_metrics_get_last_updated(xen_session *session, time_t *result, 
xen_vbd_metrics vbd_metrics);
+
+
+/**
  * Return a list of all the VBD_metrics instances known to the system.
  */
 extern bool
diff -r 931c4b77ea7d -r 678b8838d361 tools/libxen/include/xen_vif_metrics.h
--- a/tools/libxen/include/xen_vif_metrics.h    Fri Mar 23 13:26:08 2007 +0000
+++ b/tools/libxen/include/xen_vif_metrics.h    Fri Mar 23 13:27:29 2007 +0000
@@ -64,6 +64,7 @@ typedef struct xen_vif_metrics_record
     char *uuid;
     double io_read_kbs;
     double io_write_kbs;
+    time_t last_updated;
 } xen_vif_metrics_record;
 
 /**
@@ -181,6 +182,13 @@ xen_vif_metrics_get_io_write_kbs(xen_ses
 
 
 /**
+ * Get the last_updated field of the given VIF_metrics.
+ */
+extern bool
+xen_vif_metrics_get_last_updated(xen_session *session, time_t *result, 
xen_vif_metrics vif_metrics);
+
+
+/**
  * Return a list of all the VIF_metrics instances known to the system.
  */
 extern bool
diff -r 931c4b77ea7d -r 678b8838d361 tools/libxen/include/xen_vm_guest_metrics.h
--- a/tools/libxen/include/xen_vm_guest_metrics.h       Fri Mar 23 13:26:08 
2007 +0000
+++ b/tools/libxen/include/xen_vm_guest_metrics.h       Fri Mar 23 13:27:29 
2007 +0000
@@ -69,6 +69,7 @@ typedef struct xen_vm_guest_metrics_reco
     xen_string_string_map *disks;
     xen_string_string_map *networks;
     xen_string_string_map *other;
+    time_t last_updated;
 } xen_vm_guest_metrics_record;
 
 /**
@@ -216,6 +217,13 @@ xen_vm_guest_metrics_get_other(xen_sessi
 
 
 /**
+ * Get the last_updated field of the given VM_guest_metrics.
+ */
+extern bool
+xen_vm_guest_metrics_get_last_updated(xen_session *session, time_t *result, 
xen_vm_guest_metrics vm_guest_metrics);
+
+
+/**
  * Return a list of all the VM_guest_metrics instances known to the
  * system.
  */
diff -r 931c4b77ea7d -r 678b8838d361 tools/libxen/include/xen_vm_metrics.h
--- a/tools/libxen/include/xen_vm_metrics.h     Fri Mar 23 13:26:08 2007 +0000
+++ b/tools/libxen/include/xen_vm_metrics.h     Fri Mar 23 13:27:29 2007 +0000
@@ -66,6 +66,7 @@ typedef struct xen_vm_metrics_record
     int64_t memory_actual;
     int64_t vcpus_number;
     xen_int_float_map *vcpus_utilisation;
+    time_t last_updated;
 } xen_vm_metrics_record;
 
 /**
@@ -190,6 +191,13 @@ xen_vm_metrics_get_vcpus_utilisation(xen
 
 
 /**
+ * Get the last_updated field of the given VM_metrics.
+ */
+extern bool
+xen_vm_metrics_get_last_updated(xen_session *session, time_t *result, 
xen_vm_metrics vm_metrics);
+
+
+/**
  * Return a list of all the VM_metrics instances known to the system.
  */
 extern bool
diff -r 931c4b77ea7d -r 678b8838d361 tools/libxen/src/xen_host_metrics.c
--- a/tools/libxen/src/xen_host_metrics.c       Fri Mar 23 13:26:08 2007 +0000
+++ b/tools/libxen/src/xen_host_metrics.c       Fri Mar 23 13:27:29 2007 +0000
@@ -44,7 +44,10 @@ static const struct_member xen_host_metr
           .offset = offsetof(xen_host_metrics_record, memory_total) },
         { .key = "memory_free",
           .type = &abstract_type_int,
-          .offset = offsetof(xen_host_metrics_record, memory_free) }
+          .offset = offsetof(xen_host_metrics_record, memory_free) },
+        { .key = "last_updated",
+          .type = &abstract_type_datetime,
+          .offset = offsetof(xen_host_metrics_record, last_updated) }
     };
 
 const abstract_type xen_host_metrics_record_abstract_type_ =
@@ -143,6 +146,22 @@ xen_host_metrics_get_memory_free(xen_ses
 
 
 bool
+xen_host_metrics_get_last_updated(xen_session *session, time_t *result, 
xen_host_metrics host_metrics)
+{
+    abstract_value param_values[] =
+        {
+            { .type = &abstract_type_string,
+              .u.string_val = host_metrics }
+        };
+
+    abstract_type result_type = abstract_type_datetime;
+
+    XEN_CALL_("host_metrics.get_last_updated");
+    return session->ok;
+}
+
+
+bool
 xen_host_metrics_get_all(xen_session *session, struct xen_host_metrics_set 
**result)
 {
 
diff -r 931c4b77ea7d -r 678b8838d361 tools/libxen/src/xen_pif_metrics.c
--- a/tools/libxen/src/xen_pif_metrics.c        Fri Mar 23 13:26:08 2007 +0000
+++ b/tools/libxen/src/xen_pif_metrics.c        Fri Mar 23 13:27:29 2007 +0000
@@ -44,7 +44,10 @@ static const struct_member xen_pif_metri
           .offset = offsetof(xen_pif_metrics_record, io_read_kbs) },
         { .key = "io_write_kbs",
           .type = &abstract_type_float,
-          .offset = offsetof(xen_pif_metrics_record, io_write_kbs) }
+          .offset = offsetof(xen_pif_metrics_record, io_write_kbs) },
+        { .key = "last_updated",
+          .type = &abstract_type_datetime,
+          .offset = offsetof(xen_pif_metrics_record, last_updated) }
     };
 
 const abstract_type xen_pif_metrics_record_abstract_type_ =
@@ -143,6 +146,22 @@ xen_pif_metrics_get_io_write_kbs(xen_ses
 
 
 bool
+xen_pif_metrics_get_last_updated(xen_session *session, time_t *result, 
xen_pif_metrics pif_metrics)
+{
+    abstract_value param_values[] =
+        {
+            { .type = &abstract_type_string,
+              .u.string_val = pif_metrics }
+        };
+
+    abstract_type result_type = abstract_type_datetime;
+
+    XEN_CALL_("PIF_metrics.get_last_updated");
+    return session->ok;
+}
+
+
+bool
 xen_pif_metrics_get_all(xen_session *session, struct xen_pif_metrics_set 
**result)
 {
 
diff -r 931c4b77ea7d -r 678b8838d361 tools/libxen/src/xen_vbd_metrics.c
--- a/tools/libxen/src/xen_vbd_metrics.c        Fri Mar 23 13:26:08 2007 +0000
+++ b/tools/libxen/src/xen_vbd_metrics.c        Fri Mar 23 13:27:29 2007 +0000
@@ -44,7 +44,10 @@ static const struct_member xen_vbd_metri
           .offset = offsetof(xen_vbd_metrics_record, io_read_kbs) },
         { .key = "io_write_kbs",
           .type = &abstract_type_float,
-          .offset = offsetof(xen_vbd_metrics_record, io_write_kbs) }
+          .offset = offsetof(xen_vbd_metrics_record, io_write_kbs) },
+        { .key = "last_updated",
+          .type = &abstract_type_datetime,
+          .offset = offsetof(xen_vbd_metrics_record, last_updated) }
     };
 
 const abstract_type xen_vbd_metrics_record_abstract_type_ =
@@ -143,6 +146,22 @@ xen_vbd_metrics_get_io_write_kbs(xen_ses
 
 
 bool
+xen_vbd_metrics_get_last_updated(xen_session *session, time_t *result, 
xen_vbd_metrics vbd_metrics)
+{
+    abstract_value param_values[] =
+        {
+            { .type = &abstract_type_string,
+              .u.string_val = vbd_metrics }
+        };
+
+    abstract_type result_type = abstract_type_datetime;
+
+    XEN_CALL_("VBD_metrics.get_last_updated");
+    return session->ok;
+}
+
+
+bool
 xen_vbd_metrics_get_all(xen_session *session, struct xen_vbd_metrics_set 
**result)
 {
 
diff -r 931c4b77ea7d -r 678b8838d361 tools/libxen/src/xen_vif_metrics.c
--- a/tools/libxen/src/xen_vif_metrics.c        Fri Mar 23 13:26:08 2007 +0000
+++ b/tools/libxen/src/xen_vif_metrics.c        Fri Mar 23 13:27:29 2007 +0000
@@ -44,7 +44,10 @@ static const struct_member xen_vif_metri
           .offset = offsetof(xen_vif_metrics_record, io_read_kbs) },
         { .key = "io_write_kbs",
           .type = &abstract_type_float,
-          .offset = offsetof(xen_vif_metrics_record, io_write_kbs) }
+          .offset = offsetof(xen_vif_metrics_record, io_write_kbs) },
+        { .key = "last_updated",
+          .type = &abstract_type_datetime,
+          .offset = offsetof(xen_vif_metrics_record, last_updated) }
     };
 
 const abstract_type xen_vif_metrics_record_abstract_type_ =
@@ -143,6 +146,22 @@ xen_vif_metrics_get_io_write_kbs(xen_ses
 
 
 bool
+xen_vif_metrics_get_last_updated(xen_session *session, time_t *result, 
xen_vif_metrics vif_metrics)
+{
+    abstract_value param_values[] =
+        {
+            { .type = &abstract_type_string,
+              .u.string_val = vif_metrics }
+        };
+
+    abstract_type result_type = abstract_type_datetime;
+
+    XEN_CALL_("VIF_metrics.get_last_updated");
+    return session->ok;
+}
+
+
+bool
 xen_vif_metrics_get_all(xen_session *session, struct xen_vif_metrics_set 
**result)
 {
 
diff -r 931c4b77ea7d -r 678b8838d361 tools/libxen/src/xen_vm_guest_metrics.c
--- a/tools/libxen/src/xen_vm_guest_metrics.c   Fri Mar 23 13:26:08 2007 +0000
+++ b/tools/libxen/src/xen_vm_guest_metrics.c   Fri Mar 23 13:27:29 2007 +0000
@@ -57,7 +57,10 @@ static const struct_member xen_vm_guest_
           .offset = offsetof(xen_vm_guest_metrics_record, networks) },
         { .key = "other",
           .type = &abstract_type_string_string_map,
-          .offset = offsetof(xen_vm_guest_metrics_record, other) }
+          .offset = offsetof(xen_vm_guest_metrics_record, other) },
+        { .key = "last_updated",
+          .type = &abstract_type_datetime,
+          .offset = offsetof(xen_vm_guest_metrics_record, last_updated) }
     };
 
 const abstract_type xen_vm_guest_metrics_record_abstract_type_ =
@@ -232,6 +235,22 @@ xen_vm_guest_metrics_get_other(xen_sessi
 
 
 bool
+xen_vm_guest_metrics_get_last_updated(xen_session *session, time_t *result, 
xen_vm_guest_metrics vm_guest_metrics)
+{
+    abstract_value param_values[] =
+        {
+            { .type = &abstract_type_string,
+              .u.string_val = vm_guest_metrics }
+        };
+
+    abstract_type result_type = abstract_type_datetime;
+
+    XEN_CALL_("VM_guest_metrics.get_last_updated");
+    return session->ok;
+}
+
+
+bool
 xen_vm_guest_metrics_get_all(xen_session *session, struct 
xen_vm_guest_metrics_set **result)
 {
 
diff -r 931c4b77ea7d -r 678b8838d361 tools/libxen/src/xen_vm_metrics.c
--- a/tools/libxen/src/xen_vm_metrics.c Fri Mar 23 13:26:08 2007 +0000
+++ b/tools/libxen/src/xen_vm_metrics.c Fri Mar 23 13:27:29 2007 +0000
@@ -48,7 +48,10 @@ static const struct_member xen_vm_metric
           .offset = offsetof(xen_vm_metrics_record, vcpus_number) },
         { .key = "VCPUs_utilisation",
           .type = &abstract_type_int_float_map,
-          .offset = offsetof(xen_vm_metrics_record, vcpus_utilisation) }
+          .offset = offsetof(xen_vm_metrics_record, vcpus_utilisation) },
+        { .key = "last_updated",
+          .type = &abstract_type_datetime,
+          .offset = offsetof(xen_vm_metrics_record, last_updated) }
     };
 
 const abstract_type xen_vm_metrics_record_abstract_type_ =
@@ -165,6 +168,22 @@ xen_vm_metrics_get_vcpus_utilisation(xen
 
 
 bool
+xen_vm_metrics_get_last_updated(xen_session *session, time_t *result, 
xen_vm_metrics vm_metrics)
+{
+    abstract_value param_values[] =
+        {
+            { .type = &abstract_type_string,
+              .u.string_val = vm_metrics }
+        };
+
+    abstract_type result_type = abstract_type_datetime;
+
+    XEN_CALL_("VM_metrics.get_last_updated");
+    return session->ok;
+}
+
+
+bool
 xen_vm_metrics_get_all(xen_session *session, struct xen_vm_metrics_set 
**result)
 {
 
diff -r 931c4b77ea7d -r 678b8838d361 tools/libxen/test/test_bindings.c
--- a/tools/libxen/test/test_bindings.c Fri Mar 23 13:26:08 2007 +0000
+++ b/tools/libxen/test/test_bindings.c Fri Mar 23 13:27:29 2007 +0000
@@ -592,6 +592,11 @@ static void print_vm_metrics(xen_session
         return;
     }
 
+    char time[256];
+    struct tm *tm = localtime(&vm_metrics_record->last_updated);
+    strftime(time, 256, "Metrics updated at %c, local time.\n", tm);
+    printf(time);
+
     for (size_t i = 0; i < vm_metrics_record->vcpus_utilisation->size; i++)
     {
         printf("%"PRId64" -> %lf.\n",
diff -r 931c4b77ea7d -r 678b8838d361 tools/python/xen/xend/XendAPI.py
--- a/tools/python/xen/xend/XendAPI.py  Fri Mar 23 13:26:08 2007 +0000
+++ b/tools/python/xen/xend/XendAPI.py  Fri Mar 23 13:27:29 2007 +0000
@@ -21,6 +21,8 @@ import sys
 import sys
 import traceback
 import threading
+import time
+import xmlrpclib
 
 from xen.xend import XendDomain, XendDomainInfo, XendNode, XendDmesg
 from xen.xend import XendLogging, XendTaskManager
@@ -76,6 +78,11 @@ def xen_api_todo():
 def xen_api_todo():
     """Temporary method to make sure we track down all the TODOs"""
     return {"Status": "Error", "ErrorDescription": XEND_ERROR_TODO}
+
+
+def now():
+    return xmlrpclib.DateTime(time.strftime("%Y%m%dT%H:%M:%S", time.gmtime()))
+
 
 # ---------------------------------------------------
 # Python Method Decorators for input value validation
@@ -850,7 +857,8 @@ class XendAPI(object):
     # ----------------------------------------------------------------
 
     host_metrics_attr_ro = ['memory_total',
-                            'memory_free']
+                            'memory_free',
+                            'last_updated']
     host_metrics_attr_rw = []
     host_metrics_methods = []
 
@@ -865,13 +873,17 @@ class XendAPI(object):
             'uuid'         : ref,
             'memory_total' : self._host_metrics_get_memory_total(),
             'memory_free'  : self._host_metrics_get_memory_free(),
+            'last_updated' : now(),
             })
 
-    def host_metrics_get_memory_total(self, _, ref):
+    def host_metrics_get_memory_total(self, _1, _2):
         return xen_api_success(self._host_metrics_get_memory_total())
 
-    def host_metrics_get_memory_free(self, _, ref):
+    def host_metrics_get_memory_free(self, _1, _2):
         return xen_api_success(self._host_metrics_get_memory_free())
+
+    def host_metrics_get_last_updated(self, _1, _2):
+        return xen_api_success(now())
 
     def _host_metrics_get_memory_total(self):
         node = XendNode.instance()
@@ -1012,7 +1024,8 @@ class XendAPI(object):
     # ----------------------------------------------------------------
 
     PIF_metrics_attr_ro = ['io_read_kbs',
-                           'io_write_kbs']
+                           'io_write_kbs',
+                           'last_updated']
     PIF_metrics_attr_rw = []
     PIF_methods = []
 
@@ -1030,6 +1043,9 @@ class XendAPI(object):
 
     def PIF_metrics_get_io_write_kbs(self, _, ref):
         return xen_api_success(self._PIF_metrics_get(ref).get_io_write_kbs())
+
+    def PIF_metrics_get_last_updated(self, _1, _2):
+        return xen_api_success(now())
 
 
     # Xen API: Class VM
@@ -1609,7 +1625,8 @@ class XendAPI(object):
                           'VCPUs_flags',
                           'VCPUs_params',
                           'state',
-                          'start_time']
+                          'start_time',
+                          'last_updated']
     VM_metrics_attr_rw = []
     VM_metrics_methods = []
 
@@ -1645,6 +1662,9 @@ class XendAPI(object):
 
     def VM_metrics_get_state(self, _, ref):
         return xen_api_success(self._VM_metrics_get(ref).get_state())
+
+    def VM_metrics_get_last_updated(self, _1, _2):
+        return xen_api_success(now())
 
 
     # Xen API: Class VBD
@@ -1800,7 +1820,8 @@ class XendAPI(object):
     # ----------------------------------------------------------------
 
     VBD_metrics_attr_ro = ['io_read_kbs',
-                           'io_write_kbs']
+                           'io_write_kbs',
+                           'last_updated']
     VBD_metrics_attr_rw = []
     VBD_methods = []
 
@@ -1810,13 +1831,18 @@ class XendAPI(object):
             return xen_api_error(['HANDLE_INVALID', 'VBD_metrics', ref])
         return xen_api_success(
             { 'io_read_kbs'  : vm.get_dev_property('vbd', ref, 'io_read_kbs'),
-              'io_write_kbs' : vm.get_dev_property('vbd', ref, 'io_write_kbs') 
})
+              'io_write_kbs' : vm.get_dev_property('vbd', ref, 'io_write_kbs'),
+              'last_updated' : now()
+            })
 
     def VBD_metrics_get_io_read_kbs(self, _, ref):
         return self._VBD_get(ref, 'io_read_kbs')
     
     def VBD_metrics_get_io_write_kbs(self, session, ref):
         return self._VBD_get(ref, 'io_write_kbs')
+
+    def VBD_metrics_get_last_updated(self, _1, _2):
+        return xen_api_success(now())
 
 
     # Xen API: Class VIF
@@ -1934,7 +1960,8 @@ class XendAPI(object):
     # ----------------------------------------------------------------
 
     VIF_metrics_attr_ro = ['io_read_kbs',
-                           'io_write_kbs']
+                           'io_write_kbs',
+                           'last_updated']
     VIF_metrics_attr_rw = []
     VIF_methods = []
 
@@ -1944,13 +1971,18 @@ class XendAPI(object):
             return xen_api_error(['HANDLE_INVALID', 'VIF_metrics', ref])
         return xen_api_success(
             { 'io_read_kbs'  : vm.get_dev_property('vif', ref, 'io_read_kbs'),
-              'io_write_kbs' : vm.get_dev_property('vif', ref, 'io_write_kbs') 
})
+              'io_write_kbs' : vm.get_dev_property('vif', ref, 'io_write_kbs'),
+              'last_updated' : now()
+            })
 
     def VIF_metrics_get_io_read_kbs(self, _, ref):
         return self._VIF_get(ref, 'io_read_kbs')
     
     def VIF_metrics_get_io_write_kbs(self, session, ref):
         return self._VIF_get(ref, 'io_write_kbs')
+
+    def VIF_metrics_get_last_updated(self, _1, _2):
+        return xen_api_success(now())
 
 
     # Xen API: Class VDI
@@ -2424,39 +2456,3 @@ class XendAPIAsyncProxy:
                                                 synchronous_method_name,
                                                 session)
         return xen_api_success(task_uuid)
-
-#   
-# Auto generate some stubs based on XendAPI introspection
-#
-if __name__ == "__main__":
-    def output(line):
-        print '    ' + line
-    
-    classes = ['VDI', 'SR']
-    for cls in classes:
-        ro_attrs = getattr(XendAPI, '%s_attr_ro' % cls, [])
-        rw_attrs = getattr(XendAPI, '%s_attr_rw' % cls, [])
-        methods  = getattr(XendAPI, '%s_methods' % cls, [])
-        funcs    = getattr(XendAPI, '%s_funcs' % cls, [])
-
-        ref = '%s_ref' % cls
-
-        for attr_name in ro_attrs + rw_attrs + XendAPI.Base_attr_ro:
-            getter_name = '%s_get_%s' % (cls, attr_name)
-            output('def %s(self, session, %s):' % (getter_name, ref))
-            output('    return xen_api_todo()')
-
-        for attr_name in rw_attrs + XendAPI.Base_attr_rw:
-            setter_name = '%s_set_%s' % (cls, attr_name)
-            output('def %s(self, session, %s, value):' % (setter_name, ref))
-            output('    return xen_api_todo()')
-
-        for method_name in methods + XendAPI.Base_methods:
-            method_full_name = '%s_%s' % (cls,method_name)
-            output('def %s(self, session, %s):' % (method_full_name, ref))
-            output('    return xen_api_todo()')
-
-        for func_name in funcs + XendAPI.Base_funcs:
-            func_full_name = '%s_%s' % (cls, func_name)
-            output('def %s(self, session):' % func_full_name)
-            output('    return xen_api_todo()')
diff -r 931c4b77ea7d -r 678b8838d361 tools/python/xen/xend/XendPIFMetrics.py
--- a/tools/python/xen/xend/XendPIFMetrics.py   Fri Mar 23 13:26:08 2007 +0000
+++ b/tools/python/xen/xend/XendPIFMetrics.py   Fri Mar 23 13:27:29 2007 +0000
@@ -40,8 +40,10 @@ class XendPIFMetrics:
         return 0.0
 
     def get_record(self):
+        import xen.xend.XendAPI as XendAPI
         return {'uuid'         : self.uuid,
                 'PIF'          : self.pif.uuid,
                 'io_read_kbs'  : self.get_io_read_kbs(),
-                'io_write_kbs' : self.get_io_write_kbs()
+                'io_write_kbs' : self.get_io_write_kbs(),
+                'last_updated' : XendAPI.now(),
                 }
diff -r 931c4b77ea7d -r 678b8838d361 tools/python/xen/xend/XendVMMetrics.py
--- a/tools/python/xen/xend/XendVMMetrics.py    Fri Mar 23 13:26:08 2007 +0000
+++ b/tools/python/xen/xend/XendVMMetrics.py    Fri Mar 23 13:27:29 2007 +0000
@@ -141,6 +141,7 @@ class XendVMMetrics:
         return self.xend_domain_instance.info.get("start_time", -1)
     
     def get_record(self):
+        import xen.xend.XendAPI as XendAPI
         return { 'uuid'              : self.uuid,
                  'memory_actual'     : self.get_memory_actual(),
                  'VCPUs_number'      : self.get_VCPUs_number(),
@@ -150,4 +151,5 @@ class XendVMMetrics:
                  'VCPUs_params'      : self.get_VCPUs_params(),
                  'start_time'        : self.get_start_time(),
                  'state'             : self.get_state(),
+                 'last_updated'      : XendAPI.now(),
                }

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] Add a last_updated field to every metrics class., Xen patchbot-unstable <=