All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH][Xen API] Add model field to VIF class
@ 2007-03-27 17:13 Jim Fehlig
  0 siblings, 0 replies; only message in thread
From: Jim Fehlig @ 2007-03-27 17:13 UTC (permalink / raw)
  To: xen-devel

[-- Attachment #1: Type: text/plain, Size: 153 bytes --]

Currently there is no way to specify the model of VIF for HVM guests via
Xen API.  This patch introduces a 'model' field to the VIF class.

Regards,
Jim

[-- Attachment #2: xenapi-vif-model.patch --]
[-- Type: text/x-patch, Size: 6893 bytes --]

# HG changeset patch
# User Jim Fehlig <jfehlig@novell.com>
# Date 1175015367 21600
# Node ID 930d5ed35a66a4ed8a3fc27236309a680cb3577d
# Parent  10fcea8f51cd28bd7970efb561da9fba879b151f
Add 'model' field to VIF class, enabling specification of emulated vif model via Xen API.

Signed-off-by: Jim Fehlig <jfehlig@novell.com>

diff -r 10fcea8f51cd -r 930d5ed35a66 docs/xen-api/xenapi-datamodel.tex
--- a/docs/xen-api/xenapi-datamodel.tex	Mon Mar 26 14:10:19 2007 +0100
+++ b/docs/xen-api/xenapi-datamodel.tex	Tue Mar 27 11:09:27 2007 -0600
@@ -6979,6 +6979,7 @@ Quals & Field & Type & Description \\
 $\mathit{RO}_\mathit{ins}$ &  {\tt network} & network ref & virtual network to which this vif is connected \\
 $\mathit{RO}_\mathit{ins}$ &  {\tt VM} & VM ref & virtual machine to which this vif is connected \\
 $\mathit{RW}$ &  {\tt MAC} & string & ethernet MAC address of virtual interface, as exposed to guest \\
+$\mathit{RW}$ &  {\tt model} & string & emulated model of vif exposed to guest e.g. pcnet \\
 $\mathit{RW}$ &  {\tt MTU} & int & MTU in octets \\
 $\mathit{RO}_\mathit{run}$ &  {\tt currently\_attached} & bool & is the device currently attached (erased on reboot) \\
 $\mathit{RO}_\mathit{run}$ &  {\tt status\_code} & int & error/success code associated with last attach-operation (erased on reboot) \\
@@ -7277,6 +7278,72 @@ Set the MAC field of the given VIF.
 
  \noindent {\bf Signature:} 
 \begin{verbatim} void set_MAC (session_id s, VIF ref self, string value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+{\tt string } & value & New value to set \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_model}
+
+{\bf Overview:} 
+Get the model field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} string get_model (session_id s, VIF 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 ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~set\_model}
+
+{\bf Overview:} 
+Set the model field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void set_model (session_id s, VIF ref self, string value)\end{verbatim}
 
 
 \noindent{\bf Arguments:}
diff -r 10fcea8f51cd -r 930d5ed35a66 tools/libxen/include/xen_vif.h
--- a/tools/libxen/include/xen_vif.h	Mon Mar 26 14:10:19 2007 +0100
+++ b/tools/libxen/include/xen_vif.h	Tue Mar 27 11:09:27 2007 -0600
@@ -71,6 +71,7 @@ typedef struct xen_vif_record
     struct xen_network_record_opt *network;
     struct xen_vm_record_opt *vm;
     char *mac;
+    char *model;
     int64_t mtu;
     bool currently_attached;
     int64_t status_code;
@@ -224,6 +225,13 @@ xen_vif_get_mac(xen_session *session, ch
 
 
 /**
+ * Get the model field of the given VIF.
+ */
+extern bool
+xen_vif_get_model(xen_session *session, char **result, xen_vif vif);
+
+
+/**
  * Get the MTU field of the given VIF.
  */
 extern bool
@@ -291,6 +299,13 @@ xen_vif_set_device(xen_session *session,
  */
 extern bool
 xen_vif_set_mac(xen_session *session, xen_vif vif, char *mac);
+
+
+/**
+ * Set the model field of the given VIF.
+ */
+extern bool
+xen_vif_set_model(xen_session *session, xen_vif vif, char *model);
 
 
 /**
diff -r 10fcea8f51cd -r 930d5ed35a66 tools/libxen/src/xen_vif.c
--- a/tools/libxen/src/xen_vif.c	Mon Mar 26 14:10:19 2007 +0100
+++ b/tools/libxen/src/xen_vif.c	Tue Mar 27 11:09:27 2007 -0600
@@ -55,6 +55,9 @@ static const struct_member xen_vif_recor
         { .key = "MAC",
           .type = &abstract_type_string,
           .offset = offsetof(xen_vif_record, mac) },
+        { .key = "model",
+          .type = &abstract_type_string,
+          .offset = offsetof(xen_vif_record, model) },
         { .key = "MTU",
           .type = &abstract_type_int,
           .offset = offsetof(xen_vif_record, mtu) },
@@ -253,6 +256,23 @@ xen_vif_get_mac(xen_session *session, ch
 
 
 bool
+xen_vif_get_model(xen_session *session, char **result, xen_vif vif)
+{
+    abstract_value param_values[] =
+        {
+            { .type = &abstract_type_string,
+              .u.string_val = vif }
+        };
+
+    abstract_type result_type = abstract_type_string;
+
+    *result = NULL;
+    XEN_CALL_("VIF.get_model");
+    return session->ok;
+}
+
+
+bool
 xen_vif_get_mtu(xen_session *session, int64_t *result, xen_vif vif)
 {
     abstract_value param_values[] =
@@ -413,6 +433,22 @@ xen_vif_set_mac(xen_session *session, xe
         };
 
     xen_call_(session, "VIF.set_MAC", param_values, 2, NULL, NULL);
+    return session->ok;
+}
+
+
+bool
+xen_vif_set_model(xen_session *session, xen_vif vif, char *model)
+{
+    abstract_value param_values[] =
+        {
+            { .type = &abstract_type_string,
+              .u.string_val = vif },
+            { .type = &abstract_type_string,
+              .u.string_val = model }
+        };
+
+    xen_call_(session, "VIF.set_model", param_values, 2, NULL, NULL);
     return session->ok;
 }
 
diff -r 10fcea8f51cd -r 930d5ed35a66 tools/python/xen/xend/XendAPI.py
--- a/tools/python/xen/xend/XendAPI.py	Mon Mar 26 14:10:19 2007 +0100
+++ b/tools/python/xen/xend/XendAPI.py	Tue Mar 27 11:09:27 2007 -0600
@@ -1899,6 +1899,7 @@ class XendAPI(object):
                    'network',
                    'VM',
                    'MAC',
+                   'model',
                    'MTU']
 
     VIF_attr_inst = VIF_attr_rw
@@ -1969,6 +1970,9 @@ class XendAPI(object):
     
     def VIF_get_MAC(self, session, vif_ref):
         return self._VIF_get(vif_ref, 'MAC')
+
+    def VIF_get_model(self, session, vif_ref):
+        return self._VIF_get(vif_ref, 'model')
 
     def VIF_get_device(self, session, vif_ref):
         return self._VIF_get(vif_ref, 'device')
diff -r 10fcea8f51cd -r 930d5ed35a66 tools/python/xen/xend/XendConfig.py
--- a/tools/python/xen/xend/XendConfig.py	Mon Mar 26 14:10:19 2007 +0100
+++ b/tools/python/xen/xend/XendConfig.py	Tue Mar 27 11:09:27 2007 -0600
@@ -1043,6 +1043,8 @@ class XendConfig(dict):
                     dev_info['type'] = cfg_xenapi.get('type')
                 if cfg_xenapi.get('name'):
                     dev_info['name'] = cfg_xenapi.get('name')
+                if cfg_xenapi.get('model'):
+                    dev_info['model'] = cfg_xenapi.get('model')
                 
                 dev_uuid = cfg_xenapi.get('uuid', None)
                 if not dev_uuid:

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2007-03-27 17:13 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-03-27 17:13 [PATCH][Xen API] Add model field to VIF class Jim Fehlig

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.