Rather than using raw strings, create definitions for each subtype
string so that they can be re-used without needing to know the exact
string format.

Signed-off-by: Jonathon Jongsma <[email protected]>
---

Note: I originally intended to use these constants in the next patch, but
later changed my approach and didn't actually use these in the blockinfo
implementation. Nevertheless it seems like a useful change.

 src/hyperv/hyperv_driver.c | 29 +++++++++++++++--------------
 src/hyperv/hyperv_driver.h | 11 +++++++++++
 2 files changed, 26 insertions(+), 14 deletions(-)

diff --git a/src/hyperv/hyperv_driver.c b/src/hyperv/hyperv_driver.c
index eb28093028..3cebab305b 100644
--- a/src/hyperv/hyperv_driver.c
+++ b/src/hyperv/hyperv_driver.c
@@ -447,7 +447,7 @@ hypervDomainCreateSCSIController(virDomainPtr domain, 
virDomainControllerDef *de
         return -1;
 
     if (hypervSetEmbeddedProperty(scsiResource, "ResourceSubType",
-                                  "Microsoft:Hyper-V:Synthetic SCSI 
Controller") < 0)
+                                  HYPERV_RESOURCE_SUBTYPE_SCSI_CONTROLLER) < 0)
         return -1;
 
     /* perform the settings change */
@@ -493,7 +493,7 @@ hypervDomainAddVirtualDiskParent(virDomainPtr domain,
         return -1;
 
     if (hypervSetEmbeddedProperty(controllerResource, "ResourceSubType",
-                                  "Microsoft:Hyper-V:Synthetic Disk Drive") < 
0)
+                                  HYPERV_RESOURCE_SUBTYPE_DISK_DRIVE) < 0)
         return -1;
 
     if (hypervMsvmVSMSAddResourceSettings(domain, &controllerResource,
@@ -537,7 +537,7 @@ hypervDomainAddVirtualHardDisk(virDomainPtr domain,
         return -1;
 
     if (hypervSetEmbeddedProperty(volumeResource, "ResourceSubType",
-                                  "Microsoft:Hyper-V:Virtual Hard Disk") < 0)
+                                  HYPERV_RESOURCE_SUBTYPE_VIRTUAL_HARD_DISK) < 
0)
         return -1;
 
     if (hypervMsvmVSMSAddResourceSettings(domain, &volumeResource,
@@ -615,10 +615,11 @@ hypervDomainAttachPhysicalDisk(virDomainPtr domain,
     /* prepare HostResource */
 
     /* get Msvm_DiskDrive root device ID */
-    virBufferAddLit(&query,
-                    MSVM_RESOURCEALLOCATIONSETTINGDATA_WQL_SELECT
-                    "WHERE ResourceSubType = 'Microsoft:Hyper-V:Physical Disk 
Drive' "
-                    "AND InstanceID LIKE '%%Default%%'");
+    virBufferEscapeSQL(&query,
+                       MSVM_RESOURCEALLOCATIONSETTINGDATA_WQL_SELECT
+                       "WHERE ResourceSubType = '%s' "
+                       "AND InstanceID LIKE '%%Default%%'",
+                       HYPERV_RESOURCE_SUBTYPE_PHYSICAL_DISK_DRIVE);
 
     if (hypervGetWmiClass(Msvm_ResourceAllocationSettingData, &diskdefault) < 
0)
         return -1;
@@ -666,7 +667,7 @@ hypervDomainAttachPhysicalDisk(virDomainPtr domain,
         return -1;
 
     if (hypervSetEmbeddedProperty(diskResource, "ResourceSubType",
-                                  "Microsoft:Hyper-V:Physical Disk Drive") < 0)
+                                  HYPERV_RESOURCE_SUBTYPE_PHYSICAL_DISK_DRIVE) 
< 0)
         return -1;
 
     if (hypervSetEmbeddedProperty(diskResource, "HostResource", hostResource) 
< 0)
@@ -715,7 +716,7 @@ hypervDomainAddOpticalDrive(virDomainPtr domain,
         return -1;
 
     if (hypervSetEmbeddedProperty(driveResource, "ResourceSubType",
-                                  "Microsoft:Hyper-V:Synthetic DVD Drive") < 0)
+                                  HYPERV_RESOURCE_SUBTYPE_DVD_DRIVE) < 0)
         return -1;
 
     if (hypervMsvmVSMSAddResourceSettings(domain, &driveResource,
@@ -758,7 +759,7 @@ hypervDomainAddOpticalDisk(virDomainPtr domain,
         return -1;
 
     if (hypervSetEmbeddedProperty(volumeResource, "ResourceSubType",
-                                  "Microsoft:Hyper-V:Virtual CD/DVD Disk") < 0)
+                                  HYPERV_RESOURCE_SUBTYPE_VIRTUAL_DVD_DISK) < 
0)
         return -1;
 
     if (hypervMsvmVSMSAddResourceSettings(domain, &volumeResource,
@@ -828,7 +829,7 @@ hypervDomainAttachFloppy(virDomainPtr domain,
         return -1;
 
     if (hypervSetEmbeddedProperty(volumeResource, "ResourceSubType",
-                                  "Microsoft:Hyper-V:Virtual Floppy Disk") < 0)
+                                  HYPERV_RESOURCE_SUBTYPE_VIRTUAL_FLOPPY_DISK) 
< 0)
         return -1;
 
     if (hypervMsvmVSMSAddResourceSettings(domain, &volumeResource,
@@ -1087,7 +1088,7 @@ hypervDomainAttachSyntheticEthernetAdapter(virDomainPtr 
domain,
         return -1;
 
     if (hypervSetEmbeddedProperty(portResource, "ResourceSubType",
-                                  "Microsoft:Hyper-V:Synthetic Ethernet Port") 
< 0)
+                                  HYPERV_RESOURCE_SUBTYPE_ETHERNET_PORT) < 0)
         return -1;
 
     if (hypervSetEmbeddedProperty(portResource,
@@ -1156,7 +1157,7 @@ hypervDomainAttachSyntheticEthernetAdapter(virDomainPtr 
domain,
         return -1;
 
     if (hypervSetEmbeddedProperty(connectionResource,
-                                  "ResourceSubType", 
"Microsoft:Hyper-V:Ethernet Connection") < 0)
+                                  "ResourceSubType", 
HYPERV_RESOURCE_SUBTYPE_ETHERNET_CONNECTION) < 0)
         return -1;
 
     if (hypervMsvmVSMSAddResourceSettings(domain, &connectionResource,
@@ -1294,7 +1295,7 @@ hypervDomainDefParseVirtualExtent(hypervPrivate *priv,
     disk->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE;
 
     /* note if it's a CDROM disk */
-    if (STREQ(disk_entry->data->ResourceSubType, "Microsoft:Hyper-V:Virtual 
CD/DVD Disk"))
+    if (STREQ(disk_entry->data->ResourceSubType, 
HYPERV_RESOURCE_SUBTYPE_VIRTUAL_DVD_DISK))
         disk->device = VIR_DOMAIN_DISK_DEVICE_CDROM;
     else
         disk->device = VIR_DOMAIN_DISK_DEVICE_DISK;
diff --git a/src/hyperv/hyperv_driver.h b/src/hyperv/hyperv_driver.h
index 3764844494..27be81ea1c 100644
--- a/src/hyperv/hyperv_driver.h
+++ b/src/hyperv/hyperv_driver.h
@@ -27,4 +27,15 @@
 #define HYPERV_MAX_IDE_CHANNELS 2
 #define HYPERV_MAX_DRIVES_PER_IDE_CHANNEL 2
 
+/* ResourceSubType values for Msvm_*AllocationSettingData */
+#define HYPERV_RESOURCE_SUBTYPE_SCSI_CONTROLLER "Microsoft:Hyper-V:Synthetic 
SCSI Controller"
+#define HYPERV_RESOURCE_SUBTYPE_DISK_DRIVE "Microsoft:Hyper-V:Synthetic Disk 
Drive"
+#define HYPERV_RESOURCE_SUBTYPE_VIRTUAL_HARD_DISK "Microsoft:Hyper-V:Virtual 
Hard Disk"
+#define HYPERV_RESOURCE_SUBTYPE_PHYSICAL_DISK_DRIVE 
"Microsoft:Hyper-V:Physical Disk Drive"
+#define HYPERV_RESOURCE_SUBTYPE_DVD_DRIVE "Microsoft:Hyper-V:Synthetic DVD 
Drive"
+#define HYPERV_RESOURCE_SUBTYPE_VIRTUAL_DVD_DISK "Microsoft:Hyper-V:Virtual 
CD/DVD Disk"
+#define HYPERV_RESOURCE_SUBTYPE_VIRTUAL_FLOPPY_DISK "Microsoft:Hyper-V:Virtual 
Floppy Disk"
+#define HYPERV_RESOURCE_SUBTYPE_ETHERNET_PORT "Microsoft:Hyper-V:Synthetic 
Ethernet Port"
+#define HYPERV_RESOURCE_SUBTYPE_ETHERNET_CONNECTION 
"Microsoft:Hyper-V:Ethernet Connection"
+
 int hypervRegister(void);
-- 
2.53.0

Reply via email to