# HG changeset patch
# User root@xxxxxxxxxxxxxxx
# Node ID 25962bc0d49ad3a8d13ad221a9c291dadbb90530
# Parent  c37b7ff52b4f4b0e876f16c48f92ede5a90ab2e5
This patch moves the providers to the changeset 14542. 
There are two open problems. I have not updated the providers to make use of the vdi structure. These places have been commented out with VBD<->VDI issues. 
The second issue is that the upstream has not yet accepted the model field for networkport 
With these patches, I am able to compile and enumerate with the providers.
Signed-off-by: Raj Subrahmanian <raj.subrahmanian@xxxxxxxxxx>
diff -r c37b7ff52b4f -r 25962bc0d49a 
src/Xen_ComputerSystemSettingData_Resource.c
--- a/src/Xen_ComputerSystemSettingData_Resource.c      Thu Mar 29 16:09:37 
2007 -0600
+++ b/src/Xen_ComputerSystemSettingData_Resource.c      Wed Apr 04 22:46:28 
2007 -0400
@@ -157,18 +157,18 @@ int Xen_ComputerSystemSettingData_setIns
    char inst_id[1024];
    int prop_bool_val;
    char *prop_string_val;
-
+   char hvm_boot_order[1024];
    if (resource == NULL) return 0;
    if (CMIsNullObject(instance)) return 0;
 
    /* Set the CMPIInstance properties from the resource data. */
    snprintf(inst_id, 1024, "Xen:%s", resource->name_label);
    CMSetProperty(instance, "InstanceID",(CMPIValue *)inst_id, CMPI_chars);
-
-   if (resource->hvm_boot && (resource->hvm_boot[0] != '\0')) {
+// There must be an easier way of figuring out pv/hvm, but, until we figure 
that out, we will keep this - Raj
+   if (xen_utils_get_value_from_map(resource->hvm_boot_params, "order", 
hvm_boot_order)&& (hvm_boot_order[0] != '\0')) {
       /* HVM settings */
       CMSetProperty(instance, "VirtualSystemType", (CMPIValue 
*)"hvm-3.0-unknown", CMPI_chars);
-      CMSetProperty(instance, "BootOrder", (CMPIValue *)resource->hvm_boot, 
CMPI_chars);
+      CMSetProperty(instance, "BootOrder", (CMPIValue *)hvm_boot_order, 
CMPI_chars);
       prop_bool_val = get_platform_bool_val(resource, "stdvga");
       CMSetProperty(instance, "stdvga", (CMPIValue *)&prop_bool_val, 
CMPI_boolean);
 
diff -r c37b7ff52b4f -r 25962bc0d49a src/Xen_ComputerSystem_Resource.c
--- a/src/Xen_ComputerSystem_Resource.c Thu Mar 29 16:09:37 2007 -0600
+++ b/src/Xen_ComputerSystem_Resource.c Wed Apr 04 22:46:28 2007 -0400
@@ -170,13 +170,13 @@ int Xen_ComputerSystem_setInstanceFromRe
          CMSetProperty(instance, "Status",(CMPIValue *)"Suspended", 
CMPI_chars);
          break;
       
-      case XEN_VM_POWER_STATE_SHUTTINGDOWN:
+/*      case :
          statusvalue = 9; // "Stopping"
          enabledStateVal = 4; // "Shutting Down"
          requestedStateVal = 3; // "Disabled"
          CMSetProperty(instance, "Status",(CMPIValue *)"Stopping", CMPI_chars);
          break;
-
+*/
       default:
          statusvalue = 0; // "Unknown"
          enabledStateVal = 0; // "Unknown"
@@ -212,8 +212,9 @@ int Xen_ComputerSystem_deleteResource(xe
     * For now we'll treat this operation as synchronous and not wait
     * for shutdown before removing the domain.
     */
-   if ((resource->power_state !=  XEN_VM_POWER_STATE_HALTED) ||
-       (resource->power_state !=  XEN_VM_POWER_STATE_SHUTTINGDOWN))   {
+   if (resource->power_state !=  XEN_VM_POWER_STATE_HALTED)
+//       (resource->power_state !=  XEN_VM_POWER_STATE_SHUTTINGDOWN))   
+   {
       /* Initiate an asynchronous graceful shutdown of the domain's OS.
          Note - this will also eventually destroy the domain! */
       if (!xen_vm_clean_shutdown(session->xen, resource->handle)) {
diff -r c37b7ff52b4f -r 25962bc0d49a src/Xen_DiskSettingData_Resource.c
--- a/src/Xen_DiskSettingData_Resource.c        Thu Mar 29 16:09:37 2007 -0600
+++ b/src/Xen_DiskSettingData_Resource.c        Wed Apr 04 22:46:28 2007 -0400
@@ -257,9 +257,10 @@ int Xen_DiskSettingData_setInstanceFromR
    else
       mode = "r";
 
-   snprintf(buf, MAX_INSTANCEID_LEN, "%s,%s,%s", resource->image, resource->device, mode);
+/*   snprintf(buf, MAX_INSTANCEID_LEN, "%s,%s,%s", resource->image, 
resource->device, mode);
    CMSetProperty(instance, "DiskConfigInfo",(CMPIValue *)buf, CMPI_chars);
-
+       VDI<->VBD issue
+*/
    /*
     * TODO:
     * PoolID, Weight, HostResource (mapped device in dom0)
diff -r c37b7ff52b4f -r 25962bc0d49a src/Xen_Disk_Resource.c
--- a/src/Xen_Disk_Resource.c   Thu Mar 29 16:09:37 2007 -0600
+++ b/src/Xen_Disk_Resource.c   Wed Apr 04 22:46:28 2007 -0400
@@ -241,7 +241,7 @@ int Xen_Disk_setInstanceFromResource(xen
 
    CMSetProperty(instance, "Name",(CMPIValue *)resource->device, CMPI_chars);
 
-   CMSetProperty(instance, "Device",(CMPIValue *)resource->image, CMPI_chars);
+   //CMSetProperty(instance, "Device",(CMPIValue *)resource->image, CMPI_chars); VDI 
<-> VBD issue
    CMSetProperty(instance, "DeviceName",(CMPIValue *)resource->device, 
CMPI_chars);
 
    char *mode;
@@ -259,7 +259,7 @@ int Xen_Disk_setInstanceFromResource(xen
    CMSetProperty(instance, "Access",(CMPIValue *)&access, CMPI_uint16);
 
    char diskinfo[1024];
-   snprintf(diskinfo, 1024, "%s,%s,%s", resource->image, resource->device, 
mode);
+   //snprintf(diskinfo, 1024, "%s,%s,%s", resource->image, resource->device, mode); 
VDI<->VBD issue
    CMSetProperty(instance, "DiskConfigInfo",(CMPIValue *)diskinfo, CMPI_chars);
 
    if (vm_rec->power_state != XEN_VM_POWER_STATE_HALTED) {
diff -r c37b7ff52b4f -r 25962bc0d49a src/Xen_Memory.c
--- a/src/Xen_Memory.c  Thu Mar 29 16:09:37 2007 -0600
+++ b/src/Xen_Memory.c  Wed Apr 04 22:46:28 2007 -0400
@@ -133,7 +133,7 @@ static CMPIStatus EnumInstanceNames(
       }
 
       /* Set the instance property values from the resource data. */
-      if (!Xen_Memory_setInstanceFromResource(resource, instance, _BROKER)) {
+      if (!Xen_Memory_setInstanceFromResource(session, resource, instance, 
_BROKER)) {
          _SBLIM_TRACE(1,("--- _setInstanceFromResource() failed"));
          CMSetStatusWithChars(_BROKER, &status, CMPI_RC_ERR_FAILED, "Failed to set 
property values from resource data");
          goto exit;
@@ -227,7 +227,7 @@ static CMPIStatus EnumInstances(
       }
 
       /* Set the instance property values from the resource data. */
-      if (!Xen_Memory_setInstanceFromResource(resource, instance, _BROKER)) {
+      if (!Xen_Memory_setInstanceFromResource(session, resource, instance, 
_BROKER)) {
          _SBLIM_TRACE(1,("--- _setInstanceFromResource() failed"));
          CMSetStatusWithChars(_BROKER, &status, CMPI_RC_ERR_FAILED, "Failed to set 
property values from resource data");
          goto exit;
@@ -319,7 +319,7 @@ static CMPIStatus GetInstance(
    }
 
    /* Set the instance property values from the resource data. */
-   if (!Xen_Memory_setInstanceFromResource(resource, instance, _BROKER)) {
+   if (!Xen_Memory_setInstanceFromResource(session, resource, instance, 
_BROKER)) {
       _SBLIM_TRACE(1,("--- _setInstanceFromResource() failed"));
       CMSetStatusWithChars(_BROKER, &status, CMPI_RC_ERR_FAILED, "Failed to set 
property values from resource data");
       goto exit;
diff -r c37b7ff52b4f -r 25962bc0d49a src/Xen_MemorySettingData.c
--- a/src/Xen_MemorySettingData.c       Thu Mar 29 16:09:37 2007 -0600
+++ b/src/Xen_MemorySettingData.c       Wed Apr 04 22:46:28 2007 -0400
@@ -132,7 +132,7 @@ static CMPIStatus EnumInstanceNames(
       }
 
       /* Set the instance property values from the resource data. */
-      if (!Xen_MemorySettingData_setInstanceFromResource(resource, instance, 
_BROKER)) {
+      if (!Xen_MemorySettingData_setInstanceFromResource(session, resource, 
instance, _BROKER)) {
          _SBLIM_TRACE(1,("--- _setInstanceFromResource() failed"));
          CMSetStatusWithChars(_BROKER, &status, CMPI_RC_ERR_FAILED, "Failed to set 
property values from resource data");
          goto exit;
@@ -226,7 +226,7 @@ static CMPIStatus EnumInstances(
       }
 
       /* Set the instance property values from the resource data. */
-      if (!Xen_MemorySettingData_setInstanceFromResource(resource, instance, 
_BROKER)) {
+      if (!Xen_MemorySettingData_setInstanceFromResource(session, resource, 
instance, _BROKER)) {
          _SBLIM_TRACE(1,("--- _setInstanceFromResource() failed"));
          CMSetStatusWithChars(_BROKER, &status, CMPI_RC_ERR_FAILED, "Failed to set 
property values from resource data");
          goto exit;
@@ -318,7 +318,7 @@ static CMPIStatus GetInstance(
    }
 
    /* Set the instance property values from the resource data. */
-   if (!Xen_MemorySettingData_setInstanceFromResource(resource, instance, 
_BROKER)) {
+   if (!Xen_MemorySettingData_setInstanceFromResource(session, resource, 
instance, _BROKER)) {
       _SBLIM_TRACE(1,("--- _setInstanceFromResource() failed"));
       CMSetStatusWithChars(_BROKER, &status, CMPI_RC_ERR_FAILED, "Failed to set 
property values from resource data");
       goto exit;
diff -r c37b7ff52b4f -r 25962bc0d49a src/Xen_MemorySettingData_Resource.c
--- a/src/Xen_MemorySettingData_Resource.c      Thu Mar 29 16:09:37 2007 -0600
+++ b/src/Xen_MemorySettingData_Resource.c      Wed Apr 04 22:46:28 2007 -0400
@@ -16,7 +16,8 @@
 // ============================================================================
 // Authors:       Dr. Gareth S. Bestor, <bestor@xxxxxxxxxx>
 // Contributors:  Jim Fehlig, <jfehlig@xxxxxxxxxx>
-// Description:
+//               Raj Subrahmanian <raj.subrahmanian@xxxxxxxxxx>
+// Description:   
 // ============================================================================
 
 #include <stdlib.h>
@@ -25,7 +26,7 @@
 
 #include <xen_common.h>
 #include <xen_vm.h>
-
+#include <xen_vm_metrics.h>
 #include "Xen_MemorySettingData_Resource.h"
 
 /* Include the required CMPI data types, function headers, and macros. */
@@ -125,7 +126,8 @@ int Xen_MemorySettingData_freeResource(_
 // ---------------------------------------------------------------------------- 
 
 /* Set the property values of a CMPI instance from a specific resource. */
-int Xen_MemorySettingData_setInstanceFromResource(_RESOURCE * resource,
+int Xen_MemorySettingData_setInstanceFromResource(xen_utils_session *session,
+                                                 _RESOURCE * resource,
                                                   const CMPIInstance * 
instance,
                                                   const CMPIBroker * broker)
 {
@@ -146,8 +148,12 @@ int Xen_MemorySettingData_setInstanceFro
    int consumerVisibility = 2; /* 2 == Passed-Through */
    CMSetProperty(instance, "ConsumerVisibility" , (CMPIValue 
*)&consumerVisibility, CMPI_uint16);
 
-   unsigned long long memory;
-   memory = resource->memory_actual;
+   int64_t memory;
+   // Get the memory_actual
+   if (resource->metrics->is_record)
+       memory=resource->metrics->u.record->memory_actual;
+   else        
+       xen_vm_metrics_get_memory_actual(session, &memory, 
resource->metrics->u.handle);;
    CMSetProperty(instance, "Reservation",(CMPIValue *)&memory, CMPI_uint64);
    CMSetProperty(instance, "VirtualQuantity",(CMPIValue *)&memory, 
CMPI_uint64);
    memory = resource->memory_dynamic_max;
diff -r c37b7ff52b4f -r 25962bc0d49a src/Xen_MemorySettingData_Resource.h
--- a/src/Xen_MemorySettingData_Resource.h      Thu Mar 29 16:09:37 2007 -0600
+++ b/src/Xen_MemorySettingData_Resource.h      Wed Apr 04 22:46:28 2007 -0400
@@ -77,7 +77,8 @@ int Xen_MemorySettingData_freeResource(_
 int Xen_MemorySettingData_freeResource(_RESOURCE * resource);
 
 /* Set the property values of a CMPI instance from a specific resource. */
-int Xen_MemorySettingData_setInstanceFromResource(_RESOURCE * resource,
+int Xen_MemorySettingData_setInstanceFromResource(xen_utils_session *session,
+                                                 _RESOURCE * resource,
                                                   const CMPIInstance * 
instance,
                                                   const CMPIBroker * broker);
 
diff -r c37b7ff52b4f -r 25962bc0d49a src/Xen_Memory_Resource.c
--- a/src/Xen_Memory_Resource.c Thu Mar 29 16:09:37 2007 -0600
+++ b/src/Xen_Memory_Resource.c Wed Apr 04 22:46:28 2007 -0400
@@ -17,11 +17,13 @@
 // Authors:       Dr. Gareth S. Bestor, <bestor@xxxxxxxxxx>
 //                Tokunbo Adeshiyan, <tokunbo@xxxxxxxxxx>
 // Contributors:  Jim Fehlig, <jfehlig@xxxxxxxxxx>
+//               Raj Subrahmanian <raj.subrahmanian@xxxxxxxxxx>
 // Description:
 // ============================================================================
 
 #include <xen_common.h>
 #include <xen_vm.h>
+#include <xen_vm_metrics.h>
 
 #include <stdlib.h>
 #include <assert.h>
@@ -142,8 +144,10 @@ int Xen_Memory_freeResource(_RESOURCE * 
 
 // ---------------------------------------------------------------------------- 
 
-/* Set the property values of a CMPI instance from a specific resource. */
-int Xen_Memory_setInstanceFromResource(_RESOURCE * resource,
+/* Set the property values of a CMPI instance from a specific resource. 
+   Added session parameter so that the memory_actual value can be picked up from xen_vm_metrics : Raj Subrahmanian 04/04/2007*/
+int Xen_Memory_setInstanceFromResource(xen_utils_session *session,
+                                      _RESOURCE * resource,
                                        const CMPIInstance * instance,
                                        const CMPIBroker * broker)
 {
@@ -165,13 +169,17 @@ int Xen_Memory_setInstanceFromResource(_
    uint64_t blocksize = 1;
    CMSetProperty(instance, "BlockSize", (CMPIValue *)&blocksize, CMPI_uint64);
 
-   unsigned long long blocks = resource->memory_dynamic_max;
+   int64_t blocks = resource->memory_dynamic_max;
    CMSetProperty(instance, "NumberOfBlocks", (CMPIValue *)&blocks, 
CMPI_uint64);
-   blocks = resource->memory_actual;
+   
+   // Get the memory_actual
+   if (resource->metrics->is_record)
+       blocks=resource->metrics->u.record->memory_actual;
+   else        
+       xen_vm_metrics_get_memory_actual(session, &blocks, 
resource->metrics->u.handle);
    CMSetProperty(instance, "ConsumableBlocks", (CMPIValue *)&blocks, 
CMPI_uint64);
 
-   if ((resource->power_state == XEN_VM_POWER_STATE_RUNNING) ||
-       (resource->power_state == XEN_VM_POWER_STATE_SHUTTINGDOWN))
+   if (resource->power_state == XEN_VM_POWER_STATE_RUNNING) 
       CMSetProperty(instance, "Status", (CMPIValue *)"OK", CMPI_chars);
    else
       CMSetProperty(instance, "Status", (CMPIValue *)"No Contact", CMPI_chars);
diff -r c37b7ff52b4f -r 25962bc0d49a src/Xen_Memory_Resource.h
--- a/src/Xen_Memory_Resource.h Thu Mar 29 16:09:37 2007 -0600
+++ b/src/Xen_Memory_Resource.h Wed Apr 04 22:46:28 2007 -0400
@@ -78,7 +78,8 @@ int Xen_Memory_freeResource(_RESOURCE * 
 int Xen_Memory_freeResource(_RESOURCE * resource);
 
 /* Set the property values of a CMPI instance from a specific resource. */
-int Xen_Memory_setInstanceFromResource(_RESOURCE * resource,
+int Xen_Memory_setInstanceFromResource(xen_utils_session *session,
+                                      _RESOURCE * resource,
                                        const CMPIInstance * instance,
                                        const CMPIBroker * broker);
 
diff -r c37b7ff52b4f -r 25962bc0d49a src/Xen_NetworkPortSettingData_Resource.c
--- a/src/Xen_NetworkPortSettingData_Resource.c Thu Mar 29 16:09:37 2007 -0600
+++ b/src/Xen_NetworkPortSettingData_Resource.c Wed Apr 04 22:46:28 2007 -0400
@@ -251,10 +251,10 @@ int Xen_NetworkPortSettingData_setInstan
    nic_config_info[0] = '\0';
    if (resource->mac)
       snprintf(nic_config_info, 512, "mac=%s", resource->mac);
-   if (resource->model) {
+/*   if (resource->model) {
       strncat(nic_config_info, ",model=", 512 - strlen(nic_config_info));
       strncat(nic_config_info, resource->model, 512 - strlen(nic_config_info));
-   }
+   }Nic config info does have model*/
    if (nic_config_info[0] != '\0')
       CMSetProperty(instance, "NICConfigInfo" , (CMPIValue *)nic_config_info, 
CMPI_chars);
    
diff -r c37b7ff52b4f -r 25962bc0d49a src/Xen_NetworkPort_Resource.c
--- a/src/Xen_NetworkPort_Resource.c    Thu Mar 29 16:09:37 2007 -0600
+++ b/src/Xen_NetworkPort_Resource.c    Wed Apr 04 22:46:28 2007 -0400
@@ -262,10 +262,10 @@ int Xen_NetworkPort_setInstanceFromResou
    nic_config_info[0] = '\0';
    if (resource->mac)
       snprintf(nic_config_info, 512, "mac=%s", resource->mac);
-   if (resource->model) {
+   /*if (resource->model) {
       strncat(nic_config_info, ",model=", 512 - strlen(nic_config_info));
       strncat(nic_config_info, resource->model, 512 - strlen(nic_config_info));
-   }
+   } NIC config info does not have model*/
    if (nic_config_info[0] != '\0')
       CMSetProperty(instance, "NICConfigInfo" , (CMPIValue *)nic_config_info, 
CMPI_chars);
 
diff -r c37b7ff52b4f -r 25962bc0d49a src/Xen_OperatingSystem.c
--- a/src/Xen_OperatingSystem.c Thu Mar 29 16:09:37 2007 -0600
+++ b/src/Xen_OperatingSystem.c Wed Apr 04 22:46:28 2007 -0400
@@ -134,7 +134,7 @@ static CMPIStatus EnumInstanceNames(
       }
 
       /* Set the instance property values from the resource data. */
-      if (!Xen_OperatingSystem_setInstanceFromResource(resource, instance, 
_BROKER)) {
+      if (!Xen_OperatingSystem_setInstanceFromResource(session,resource, 
instance, _BROKER)) {
          _SBLIM_TRACE(1,("--- _setInstanceFromResource() failed"));
          CMSetStatusWithChars(_BROKER, &status, CMPI_RC_ERR_FAILED, "Failed to set 
property values from resource data");
          goto exit;
@@ -228,7 +228,7 @@ static CMPIStatus EnumInstances(
       }
 
       /* Set the instance property values from the resource data. */
-      if (!Xen_OperatingSystem_setInstanceFromResource(resource, instance, 
_BROKER)) {
+      if (!Xen_OperatingSystem_setInstanceFromResource(session, resource, 
instance, _BROKER)) {
          _SBLIM_TRACE(1,("--- _setInstanceFromResource() failed"));
          CMSetStatusWithChars(_BROKER, &status, CMPI_RC_ERR_FAILED, "Failed to set 
property values from resource data");
          goto exit;
@@ -320,7 +320,7 @@ static CMPIStatus GetInstance(
    }
 
    /* Set the instance property values from the resource data. */
-   if (!Xen_OperatingSystem_setInstanceFromResource(resource, instance, 
_BROKER)) {
+   if (!Xen_OperatingSystem_setInstanceFromResource(session,resource, 
instance, _BROKER)) {
       _SBLIM_TRACE(1,("--- _setInstanceFromResource() failed"));
       CMSetStatusWithChars(_BROKER, &status, CMPI_RC_ERR_FAILED, "Failed to set 
property values from resource data");
       goto exit;
diff -r c37b7ff52b4f -r 25962bc0d49a src/Xen_OperatingSystem_Resource.c
--- a/src/Xen_OperatingSystem_Resource.c        Thu Mar 29 16:09:37 2007 -0600
+++ b/src/Xen_OperatingSystem_Resource.c        Wed Apr 04 22:46:28 2007 -0400
@@ -26,6 +26,7 @@
 
 #include <xen_common.h>
 #include <xen_vm.h>
+#include <xen_vm_metrics.h>
 
 #include "Xen_OperatingSystem_Resource.h"
 
@@ -116,7 +117,8 @@ int Xen_OperatingSystem_freeResource(_RE
 // ---------------------------------------------------------------------------- 
 
 /* Set the property values of a CMPI instance from a specific resource. */
-int Xen_OperatingSystem_setInstanceFromResource(_RESOURCE * resource,
+int Xen_OperatingSystem_setInstanceFromResource(xen_utils_session *session,
+                                               _RESOURCE * resource,
                                                 const CMPIInstance * instance,
                                                 const CMPIBroker * broker)
 {
@@ -171,12 +173,12 @@ int Xen_OperatingSystem_setInstanceFromR
          // Status is just a string (and deprecated), so just say Suspended
          CMSetProperty(instance, "Status",(CMPIValue *)"Suspended", 
CMPI_chars);
          break;
-      
+/*      
       case XEN_VM_POWER_STATE_SHUTTINGDOWN:
          statusvalue = 9; // "Stopping"
          CMSetProperty(instance, "Status",(CMPIValue *)"Stopping", CMPI_chars);
          break;
-
+*/
       default:
          statusvalue = 0; // "Unknown"
          CMSetProperty(instance, "Status",(CMPIValue *)"No Contact", 
CMPI_chars);
@@ -192,8 +194,15 @@ int Xen_OperatingSystem_setInstanceFromR
    /*
     * TODO:
     * What memory_* field of xen_vm_record should we use here?
-    */
-   CMSetProperty(instance, "TotalVisibleMemorySize", (CMPIValue 
*)&(resource->memory_actual), CMPI_uint64);
+   */
+   int64_t memory=0;
+   // Get the memory_actual
+   if (resource->metrics->is_record)
+       memory=resource->metrics->u.record->memory_actual;
+   else        
+       xen_vm_metrics_get_memory_actual(session, &memory, 
resource->metrics->u.handle);
+   
+   CMSetProperty(instance, "TotalVisibleMemorySize", (CMPIValue *)&(memory), CMPI_uint64);
 
    return 1;
 }
diff -r c37b7ff52b4f -r 25962bc0d49a src/Xen_OperatingSystem_Resource.h
--- a/src/Xen_OperatingSystem_Resource.h        Thu Mar 29 16:09:37 2007 -0600
+++ b/src/Xen_OperatingSystem_Resource.h        Wed Apr 04 22:46:28 2007 -0400
@@ -77,7 +77,8 @@ int Xen_OperatingSystem_freeResource(_RE
 int Xen_OperatingSystem_freeResource(_RESOURCE * resource);
 
 /* Set the property values of a CMPI instance from a specific resource. */
-int Xen_OperatingSystem_setInstanceFromResource(_RESOURCE * resource,
+int Xen_OperatingSystem_setInstanceFromResource(xen_utils_session *session,
+                                               _RESOURCE * resource,
                                                 const CMPIInstance * instance,
                                                 const CMPIBroker * broker);
 
diff -r c37b7ff52b4f -r 25962bc0d49a src/Xen_ProcessorSettingData.c
--- a/src/Xen_ProcessorSettingData.c    Thu Mar 29 16:09:37 2007 -0600
+++ b/src/Xen_ProcessorSettingData.c    Wed Apr 04 22:46:28 2007 -0400
@@ -16,6 +16,7 @@
 // ============================================================================
 // Authors:       Dr. Gareth S. Bestor, <bestor@xxxxxxxxxx>
 // Contributors:  Jim Fehlig, <jfehlig@xxxxxxxxxx>
+//               Raj Subrahmanian <raj.subrahmanian@xxxxxxxxxx>
 // Description:
 // ============================================================================
 
@@ -132,7 +133,7 @@ static CMPIStatus EnumInstanceNames(
       }
 
       /* Set the instance property values from the resource data. */
-      if (!Xen_ProcessorSettingData_setInstanceFromResource(resource, 
instance, _BROKER)) {
+      if (!Xen_ProcessorSettingData_setInstanceFromResource(session, resource, 
instance, _BROKER)) {
          _SBLIM_TRACE(1,("--- _setInstanceFromResource() failed"));
          CMSetStatusWithChars(_BROKER, &status, CMPI_RC_ERR_FAILED, "Failed to set 
property values from resource data");
          goto exit;
@@ -226,7 +227,7 @@ static CMPIStatus EnumInstances(
       }
 
       /* Set the instance property values from the resource data. */
-      if (!Xen_ProcessorSettingData_setInstanceFromResource(resource, 
instance, _BROKER)) {
+      if (!Xen_ProcessorSettingData_setInstanceFromResource(session, resource, 
instance, _BROKER)) {
          _SBLIM_TRACE(1,("--- _setInstanceFromResource() failed"));
          CMSetStatusWithChars(_BROKER, &status, CMPI_RC_ERR_FAILED, "Failed to set 
property values from resource data");
          goto exit;
@@ -318,7 +319,7 @@ static CMPIStatus GetInstance(
    }
 
    /* Set the instance property values from the resource data. */
-   if (!Xen_ProcessorSettingData_setInstanceFromResource(resource, instance, 
_BROKER)) {
+   if (!Xen_ProcessorSettingData_setInstanceFromResource(session, resource, 
instance, _BROKER)) {
       _SBLIM_TRACE(1,("--- _setInstanceFromResource() failed"));
       CMSetStatusWithChars(_BROKER, &status, CMPI_RC_ERR_FAILED, "Failed to set 
property values from resource data");
       goto exit;
diff -r c37b7ff52b4f -r 25962bc0d49a src/Xen_ProcessorSettingData_Resource.c
--- a/src/Xen_ProcessorSettingData_Resource.c   Thu Mar 29 16:09:37 2007 -0600
+++ b/src/Xen_ProcessorSettingData_Resource.c   Wed Apr 04 22:46:28 2007 -0400
@@ -16,6 +16,7 @@
 // ============================================================================
 // Authors:       Dr. Gareth S. Bestor, <bestor@xxxxxxxxxx>
 // Contributors:  Jim Fehlig, <jfehlig@xxxxxxxxxx>
+//               Raj Subrahmanian <raj.subrahmanian@xxxxxxxxxx>
 // Description:
 // ============================================================================
 
@@ -25,6 +26,7 @@
 
 #include <xen_common.h>
 #include <xen_vm.h>
+#include <xen_vm_metrics.h>
 
 #include "Xen_ProcessorSettingData_Resource.h"
 
@@ -121,8 +123,11 @@ int Xen_ProcessorSettingData_freeResourc
 
 // ---------------------------------------------------------------------------- 
 
-/* Set the property values of a CMPI instance from a specific resource. */
-int Xen_ProcessorSettingData_setInstanceFromResource(_RESOURCE * resource,
+/* Set the property values of a CMPI instance from a specific resource. 
+   We also pass in the session object so that the metrics class can be accessed when required.
+*/
+int Xen_ProcessorSettingData_setInstanceFromResource(xen_utils_session 
*session,
+                                                    _RESOURCE * resource,
                                                      const CMPIInstance * 
instance,
                                                      const CMPIBroker * broker)
 {
@@ -143,12 +148,15 @@ int Xen_ProcessorSettingData_setInstance
    int consumerVisibility = 3; /* 3 == Virtualized */
    CMSetProperty(instance, "ConsumerVisibility" , (CMPIValue 
*)&consumerVisibility, CMPI_uint16);
 
-   unsigned long long cpus = 1;
+   int64_t cpus = 1;
    CMSetProperty(instance, "Reservation",(CMPIValue *)&cpus, CMPI_uint64);
    CMSetProperty(instance, "Limit",(CMPIValue *)&cpus, CMPI_uint64);
    CMSetProperty(instance, "AllocationUnits",(CMPIValue *)"Cores", CMPI_chars);
-   cpus = resource->vcpus_number;
-   CMSetProperty(instance, "VirtualQuantity",(CMPIValue *)&cpus, CMPI_uint64);
+   if (resource->metrics->is_record)
+       cpus=resource->metrics->u.record->vcpus_number;
+   else        
+       xen_vm_metrics_get_vcpus_number(session, &cpus, 
resource->metrics->u.handle);
+      CMSetProperty(instance, "VirtualQuantity",(CMPIValue *)&cpus, 
CMPI_uint64);
 
    int alloctype = 1;
    CMSetProperty(instance, "AutomaticAllocation" , (CMPIValue *)&alloctype, 
CMPI_boolean);
diff -r c37b7ff52b4f -r 25962bc0d49a src/Xen_ProcessorSettingData_Resource.h
--- a/src/Xen_ProcessorSettingData_Resource.h   Thu Mar 29 16:09:37 2007 -0600
+++ b/src/Xen_ProcessorSettingData_Resource.h   Wed Apr 04 22:46:28 2007 -0400
@@ -76,7 +76,8 @@ int Xen_ProcessorSettingData_freeResourc
 int Xen_ProcessorSettingData_freeResource(_RESOURCE * resource);
 
 /* Set the property values of a CMPI instance from a specific resource. */
-int Xen_ProcessorSettingData_setInstanceFromResource(_RESOURCE * resource,
+int Xen_ProcessorSettingData_setInstanceFromResource(xen_utils_session 
*session,
+                                                    _RESOURCE * resource,
                                                      const CMPIInstance * 
instance,
                                                      const CMPIBroker * 
broker);
 
diff -r c37b7ff52b4f -r 25962bc0d49a src/Xen_Processor_Resource.c
--- a/src/Xen_Processor_Resource.c      Thu Mar 29 16:09:37 2007 -0600
+++ b/src/Xen_Processor_Resource.c      Wed Apr 04 22:46:28 2007 -0400
@@ -17,6 +17,7 @@
 // Authors:       Dr. Gareth S. Bestor, <bestor@xxxxxxxxxx>
 //                Tokunbo Adeshiyan, <tokunbo@xxxxxxxxxx>
 // Contributors:  Jim Fehlig, <jfehlig@xxxxxxxxxx>
+//               Raj Subrahmanian <raj.subrahmanian@xxxxxxxxxx>
 // Description:
 // ============================================================================
 
@@ -25,6 +26,7 @@
 
 #include <xen_common.h>
 #include <xen_vm.h>
+#include <xen_vm_metrics.h>
 
 #include "Xen_Processor_Resource.h"
 
@@ -72,12 +74,14 @@ int Xen_Processor_freeResources(_RESOURC
 }
 
 // ----------------------------------------------------------------------------
-
+// This function was changed to extract the vcpus_number value from the 
metrics structure rather
+// Raj - 04/04/2007
 /* Iterator to get the next resource from the resources list. */
 int Xen_Processor_getNextResource(xen_utils_session *session,
                                   _RESOURCES * resources,
                                   _RESOURCE ** resource)
 {
+   int64_t vcpus_number;
    if (resources == NULL) return 0;
 
    /* Check if reached the end of the list of Xen domain names. */
@@ -97,8 +101,13 @@ int Xen_Processor_getNextResource(xen_ut
    resources->currentprocessornum++;
 
    /* Return success while there are still processor devices for this domain. */
-   if (resources->currentprocessornum <= (*resource)->vcpus_number)
-      return 1;
+   // Get the vcpus_number
+   if ((*resource)->metrics->is_record)
+       vcpus_number=(*resource)->metrics->u.record->vcpus_number;
+   else        
+       xen_vm_metrics_get_vcpus_number(session, &vcpus_number, 
(*resource)->metrics->u.handle);
+   if (resources->currentprocessornum <= vcpus_number)
+      return 1; 
 
  NextDomain:
    /* All processors in this domain have been exhausted. */
diff -r c37b7ff52b4f -r 25962bc0d49a 
src/Xen_VirtualSystemManagementCapabilities.c
--- a/src/Xen_VirtualSystemManagementCapabilities.c     Thu Mar 29 16:09:37 
2007 -0600
+++ b/src/Xen_VirtualSystemManagementCapabilities.c     Wed Apr 04 22:46:28 
2007 -0400
@@ -15,7 +15,7 @@
 //    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  
USA
 // ============================================================================
 // Authors:       Jim Fehlig, <jfehlig@xxxxxxxxxx>
-// Contributors:
+// Contributors:  
 // Description:   A class used to represent the capabilities of 
 //                Xen_VirtualSystemManagementService, e.g. which
 //                methods are supported.
diff -r c37b7ff52b4f -r 25962bc0d49a src/Xen_VirtualSystemManagementService.c
--- a/src/Xen_VirtualSystemManagementService.c  Thu Mar 29 16:09:37 2007 -0600
+++ b/src/Xen_VirtualSystemManagementService.c  Wed Apr 04 22:46:28 2007 -0400
@@ -16,6 +16,7 @@
 // ============================================================================
 // Authors:       Dr. Gareth S. Bestor, <bestor@xxxxxxxxxx>
 // Contributors:  Jim Fehlig, <jfehlig@xxxxxxxxxx>
+//               Raj Subrahmanian <raj.subrahmanian@xxxxxxxxxx>
 // Description:
 // ============================================================================
 
@@ -34,6 +35,7 @@
 #include <xen_vif.h>
 #include <xen_vbd.h>
 #include <xen_console.h>
+#include <xen_vm_metrics.h>
 #include <xen_string_string_map.h>
 
 /* Include utility functions */
@@ -1428,7 +1430,7 @@ static int add_resource_to_vm(xen_vm_rec
       }
       
       /* Adding cpus means just that - adding to existing amount */
-      uint64_t cpus = propertyvalue.value.uint64 + vmRec->vcpus_number;
+      uint64_t cpus = propertyvalue.value.uint64 + vmRec->vcpus_number; 
       /*
        * TODO:
        * 1. CPU weights and other scheduling parameters?
@@ -1688,8 +1690,8 @@ static int vssd2xenconfig(CMPIInstance *
                               "No BootOrder specified for HVM guest");
          return 0;
       }
-      vm_rec->hvm_boot = strdup(CMGetCharPtr(propertyvalue.value.string));
-      
+      //vm_rec->hvm_boot_params = strdup(CMGetCharPtr(propertyvalue.value.string));
+      add_strings_to_map("order", 
CMGetCharPtr(propertyvalue.value.string),&(vm_rec->hvm_boot_params ));
       /* Default stdvga to 0 */
       plat_val = "0";
       propertyvalue = CMGetProperty(vssd, "stdvga", status);
@@ -1794,7 +1796,7 @@ static int vssd2xenconfig(CMPIInstance *
    return 1;
 }
 
-
+// Look for vcpus_number in the metrics structure.
 static int proc_rasd2vmconfig(CMPIInstance *proc_rasd, xen_vm_record *vm_rec,
                               CMPIStatus *status)
 {
@@ -1806,10 +1808,13 @@ static int proc_rasd2vmconfig(CMPIInstan
        * TODO:
        * 1. Handle defaults if processors not specified.
        * 2. CPU weights and other scheduling parameters?
+       
        */
-      vm_rec->vcpus_number = propertyvalue.value.uint64;
-
-      return 1;
+   if (vm_rec->metrics->is_record)
+       vm_rec->metrics->u.record->vcpus_number=propertyvalue.value.uint64;
+   else        
+       xen_vm_metrics_set_vcpus_number(session, propertyvalue.value.uint64, 
vm_rec->metrics->u.handle);  
+    return 1;
    }
 
    return 0;
@@ -1866,7 +1871,7 @@ static int disk_rasd2vmconfig(CMPIInstan
          free(string);
          goto Error;
       }
-      (*vbd_rec)->image = strdup(tok);
+//      (*vbd_rec)->image = strdup(tok); VDI<->BBD issue
 
       if ((tok = strtok_r(NULL, ",", &next_tok)) == NULL) {
          _SBLIM_TRACE(1,("--- Malformed DiskConfigInfo property in disk setting 
data"));
@@ -1888,7 +1893,7 @@ static int disk_rasd2vmconfig(CMPIInstan
          (*vbd_rec)->mode = XEN_VBD_MODE_RO;
 
       free(string);
-      _SBLIM_TRACE(2,("--- uname = %s", (*vbd_rec)->image));
+      //_SBLIM_TRACE(2,("--- uname = %s", (*vbd_rec)->image));
       _SBLIM_TRACE(2,("--- dev = %s", (*vbd_rec)->device));
       _SBLIM_TRACE(2,("--- mode = %s",
                       (*vbd_rec)->mode == XEN_VBD_MODE_RW ? "RW" : "RO"));
@@ -1935,8 +1940,8 @@ static int nic_rasd2vmconfig(CMPIInstanc
    while (tok) {
       if (strncmp(tok, "mac", 3) == 0)
          (*vif_rec)->mac = strdup(tok + 4);
-      else if (strncmp(tok, "model", 5) == 0)
-         (*vif_rec)->model = strdup(tok + 6);
+/*      else if (strncmp(tok, "model", 5) == 0)
+         (*vif_rec)->model = strdup(tok + 6); Commented off to compile the code*/ 
       
       tok = strtok_r(NULL, ",", &next_tok);
    }
diff -r c37b7ff52b4f -r 25962bc0d49a 
src/Xen_VirtualSystemManagementService_Resource.c
--- a/src/Xen_VirtualSystemManagementService_Resource.c Thu Mar 29 16:09:37 
2007 -0600
+++ b/src/Xen_VirtualSystemManagementService_Resource.c Wed Apr 04 22:46:28 
2007 -0400
@@ -16,6 +16,7 @@
 // ============================================================================
 // Authors:       Dr. Gareth S. Bestor, <bestor@xxxxxxxxxx>
 // Contributors:  Jim Fehlig, <jfehlig@xxxxxxxxxx>
+
 // Description:
 // ============================================================================
 
diff -r c37b7ff52b4f -r 25962bc0d49a src/xen_utils.c
--- a/src/xen_utils.c   Thu Mar 29 16:09:37 2007 -0600
+++ b/src/xen_utils.c   Wed Apr 04 22:46:28 2007 -0400
@@ -15,7 +15,7 @@
 //    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  
USA
 // ============================================================================
 // Authors:       Jim Fehlig, <jfehlig@xxxxxxxxxx>
-// Contributors:
+// Contributors:  Raj Subrahmanian <raj.subrahmanian@xxxxxxxxxx>
 // Description:   Utilitiy functions built on top of libxen for use in all
 //                providers.
 // ============================================================================
@@ -682,3 +682,25 @@ int xen_utils_is_domain_active(xen_utils
    return 1;
 }
 
+/*
+ * Extract the value from a string map given a key
+ *
+*/
+int xen_utils_get_value_from_map(xen_string_string_map *map, const char *key, 
char *val)
+{
+   int i=0;
+   // Make sure you have a good value
+   if(!map) return 0;
+   // String map is empty
+   if (map->size==0) return 0;
+   while (i<map->size)
+   {   // Found key
+       if (strcmp(key, map->contents[i].key)==0)
+       {
+        val=strdup(map->contents[i].val);
+        return 1;
+       }
+       i++;
+   }
+   return 0;
+}
\ No newline at end of file
diff -r c37b7ff52b4f -r 25962bc0d49a src/xen_utils.h
--- a/src/xen_utils.h   Thu Mar 29 16:09:37 2007 -0600
+++ b/src/xen_utils.h   Wed Apr 04 22:46:28 2007 -0400
@@ -179,5 +179,12 @@ int xen_utils_is_domain_active(xen_utils
                                int *isActive);
 
 
+/*
+ * Extract the value from a string map given a key
+ *
+*/
+int xen_utils_get_value_from_map(xen_string_string_map *map, const char *key, 
char *val);
+
+
 
 #endif /* __XEN_UTILS_H__ */