hyperv: reformat WQL query strings

Signed-off-by: Matt Coleman <matt@datto.com>
Reviewed-by: Neal Gompa <ngompa13@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Matt Coleman 2020-10-22 12:38:19 -04:00 committed by Michal Privoznik
parent 42558a43f8
commit a3f6592e1e
2 changed files with 36 additions and 43 deletions

View File

@ -68,7 +68,7 @@ hypervGetProcessorsByName(hypervPrivate *priv, const char *name,
{ {
g_auto(virBuffer) query = VIR_BUFFER_INITIALIZER; g_auto(virBuffer) query = VIR_BUFFER_INITIALIZER;
virBufferEscapeSQL(&query, virBufferEscapeSQL(&query,
"ASSOCIATORS OF {Win32_ComputerSystem.Name=\"%s\"} " "ASSOCIATORS OF {Win32_ComputerSystem.Name='%s'} "
"WHERE AssocClass = Win32_ComputerSystemProcessor " "WHERE AssocClass = Win32_ComputerSystemProcessor "
"ResultClass = Win32_Processor", "ResultClass = Win32_Processor",
name); name);
@ -180,7 +180,7 @@ hypervGetVirtualSystemByUUID(hypervPrivate *priv, const char *uuid,
virBufferEscapeSQL(&query, virBufferEscapeSQL(&query,
MSVM_COMPUTERSYSTEM_WQL_SELECT MSVM_COMPUTERSYSTEM_WQL_SELECT
"WHERE " MSVM_COMPUTERSYSTEM_WQL_VIRTUAL "WHERE " MSVM_COMPUTERSYSTEM_WQL_VIRTUAL
"AND Name = \"%s\"", "AND Name = '%s'",
uuid); uuid);
if (hypervGetWmiClass(Msvm_ComputerSystem, computerSystemList) < 0) if (hypervGetWmiClass(Msvm_ComputerSystem, computerSystemList) < 0)
@ -204,7 +204,7 @@ hypervGetVirtualSystemByName(hypervPrivate *priv, const char *name,
virBufferEscapeSQL(&query, virBufferEscapeSQL(&query,
MSVM_COMPUTERSYSTEM_WQL_SELECT MSVM_COMPUTERSYSTEM_WQL_SELECT
"WHERE " MSVM_COMPUTERSYSTEM_WQL_VIRTUAL "WHERE " MSVM_COMPUTERSYSTEM_WQL_VIRTUAL
"AND ElementName = \"%s\"", "AND ElementName = '%s'",
name); name);
if (hypervGetWmiClass(Msvm_ComputerSystem, computerSystemList) < 0) if (hypervGetWmiClass(Msvm_ComputerSystem, computerSystemList) < 0)
@ -226,7 +226,7 @@ hypervGetVSSDFromUUID(hypervPrivate *priv, const char *uuid,
{ {
g_auto(virBuffer) query = VIR_BUFFER_INITIALIZER; g_auto(virBuffer) query = VIR_BUFFER_INITIALIZER;
virBufferEscapeSQL(&query, virBufferEscapeSQL(&query,
"ASSOCIATORS OF {Msvm_ComputerSystem.CreationClassName=\"Msvm_ComputerSystem\",Name=\"%s\"} " "ASSOCIATORS OF {Msvm_ComputerSystem.CreationClassName='Msvm_ComputerSystem',Name='%s'} "
"WHERE AssocClass = Msvm_SettingsDefineState " "WHERE AssocClass = Msvm_SettingsDefineState "
"ResultClass = Msvm_VirtualSystemSettingData", "ResultClass = Msvm_VirtualSystemSettingData",
uuid); uuid);
@ -251,7 +251,7 @@ hypervGetProcSDByVSSDInstanceId(hypervPrivate *priv, const char *id,
{ {
g_auto(virBuffer) query = VIR_BUFFER_INITIALIZER; g_auto(virBuffer) query = VIR_BUFFER_INITIALIZER;
virBufferEscapeSQL(&query, virBufferEscapeSQL(&query,
"ASSOCIATORS OF {Msvm_VirtualSystemSettingData.InstanceID=\"%s\"} " "ASSOCIATORS OF {Msvm_VirtualSystemSettingData.InstanceID='%s'} "
"WHERE AssocClass = Msvm_VirtualSystemSettingDataComponent " "WHERE AssocClass = Msvm_VirtualSystemSettingDataComponent "
"ResultClass = Msvm_ProcessorSettingData", "ResultClass = Msvm_ProcessorSettingData",
id); id);
@ -276,7 +276,7 @@ hypervGetMemSDByVSSDInstanceId(hypervPrivate *priv, const char *id,
{ {
g_auto(virBuffer) query = VIR_BUFFER_INITIALIZER; g_auto(virBuffer) query = VIR_BUFFER_INITIALIZER;
virBufferEscapeSQL(&query, virBufferEscapeSQL(&query,
"ASSOCIATORS OF {Msvm_VirtualSystemSettingData.InstanceID=\"%s\"} " "ASSOCIATORS OF {Msvm_VirtualSystemSettingData.InstanceID='%s'} "
"WHERE AssocClass = Msvm_VirtualSystemSettingDataComponent " "WHERE AssocClass = Msvm_VirtualSystemSettingDataComponent "
"ResultClass = Msvm_MemorySettingData", "ResultClass = Msvm_MemorySettingData",
id); id);
@ -346,10 +346,9 @@ static int
hypervLookupHostSystemBiosUuid(hypervPrivate *priv, unsigned char *uuid) hypervLookupHostSystemBiosUuid(hypervPrivate *priv, unsigned char *uuid)
{ {
Win32_ComputerSystemProduct *computerSystem = NULL; Win32_ComputerSystemProduct *computerSystem = NULL;
g_auto(virBuffer) query = VIR_BUFFER_INITIALIZER; g_auto(virBuffer) query = { g_string_new(WIN32_COMPUTERSYSTEMPRODUCT_WQL_SELECT), 0 };
int result = -1; int result = -1;
virBufferAddLit(&query, WIN32_COMPUTERSYSTEMPRODUCT_WQL_SELECT);
if (hypervGetWmiClass(Win32_ComputerSystemProduct, &computerSystem) < 0) if (hypervGetWmiClass(Win32_ComputerSystemProduct, &computerSystem) < 0)
goto cleanup; goto cleanup;
@ -459,18 +458,18 @@ hypervInitConnection(virConnectPtr conn, hypervPrivate *priv,
wqlQuery.info = Msvm_ComputerSystem_WmiInfo; wqlQuery.info = Msvm_ComputerSystem_WmiInfo;
wqlQuery.query = &query; wqlQuery.query = &query;
virBufferAddLit(&query, MSVM_COMPUTERSYSTEM_WQL_SELECT); virBufferAddLit(&query,
virBufferAddLit(&query, "WHERE "); MSVM_COMPUTERSYSTEM_WQL_SELECT
virBufferAddLit(&query, MSVM_COMPUTERSYSTEM_WQL_PHYSICAL); "WHERE " MSVM_COMPUTERSYSTEM_WQL_PHYSICAL);
/* try query using V2 namespace (for Hyper-V 2012+) */ /* try query using V2 namespace (for Hyper-V 2012+) */
priv->wmiVersion = HYPERV_WMI_VERSION_V2; priv->wmiVersion = HYPERV_WMI_VERSION_V2;
if (hypervEnumAndPull(priv, &wqlQuery, &computerSystem) < 0) { if (hypervEnumAndPull(priv, &wqlQuery, &computerSystem) < 0) {
/* rebuild query because hypervEnumAndPull consumes it */ /* rebuild query because hypervEnumAndPull consumes it */
virBufferAddLit(&query, MSVM_COMPUTERSYSTEM_WQL_SELECT); virBufferAddLit(&query,
virBufferAddLit(&query, "WHERE "); MSVM_COMPUTERSYSTEM_WQL_SELECT
virBufferAddLit(&query, MSVM_COMPUTERSYSTEM_WQL_PHYSICAL); "WHERE " MSVM_COMPUTERSYSTEM_WQL_PHYSICAL);
/* fall back to V1 namespace (for Hyper-V 2008) */ /* fall back to V1 namespace (for Hyper-V 2008) */
priv->wmiVersion = HYPERV_WMI_VERSION_V1; priv->wmiVersion = HYPERV_WMI_VERSION_V1;
@ -1390,7 +1389,7 @@ hypervDomainGetAutostart(virDomainPtr domain, int *autostart)
if (priv->wmiVersion == HYPERV_WMI_VERSION_V1) { if (priv->wmiVersion == HYPERV_WMI_VERSION_V1) {
virBufferEscapeSQL(&query, virBufferEscapeSQL(&query,
MSVM_VIRTUALSYSTEMGLOBALSETTINGDATA_WQL_SELECT MSVM_VIRTUALSYSTEMGLOBALSETTINGDATA_WQL_SELECT
"WHERE SystemName = \"%s\"", uuid_string); "WHERE SystemName = '%s'", uuid_string);
if (hypervGetWmiClass(Msvm_VirtualSystemGlobalSettingData, &vsgsd) < 0) if (hypervGetWmiClass(Msvm_VirtualSystemGlobalSettingData, &vsgsd) < 0)
goto cleanup; goto cleanup;
@ -1722,21 +1721,17 @@ hypervConnectListAllDomains(virConnectPtr conn,
goto cleanup; goto cleanup;
} }
virBufferAddLit(&query, MSVM_COMPUTERSYSTEM_WQL_SELECT); virBufferAddLit(&query, MSVM_COMPUTERSYSTEM_WQL_SELECT "WHERE " MSVM_COMPUTERSYSTEM_WQL_VIRTUAL);
virBufferAddLit(&query, "where ");
virBufferAddLit(&query, MSVM_COMPUTERSYSTEM_WQL_VIRTUAL);
/* construct query with filter depending on flags */ /* construct query with filter depending on flags */
if (!(MATCH(VIR_CONNECT_LIST_DOMAINS_ACTIVE) && if (!(MATCH(VIR_CONNECT_LIST_DOMAINS_ACTIVE) &&
MATCH(VIR_CONNECT_LIST_DOMAINS_INACTIVE))) { MATCH(VIR_CONNECT_LIST_DOMAINS_INACTIVE))) {
if (MATCH(VIR_CONNECT_LIST_DOMAINS_ACTIVE)) { if (MATCH(VIR_CONNECT_LIST_DOMAINS_ACTIVE)) {
virBufferAddLit(&query, "and "); virBufferAddLit(&query, "AND " MSVM_COMPUTERSYSTEM_WQL_ACTIVE);
virBufferAddLit(&query, MSVM_COMPUTERSYSTEM_WQL_ACTIVE);
} }
if (MATCH(VIR_CONNECT_LIST_DOMAINS_INACTIVE)) { if (MATCH(VIR_CONNECT_LIST_DOMAINS_INACTIVE)) {
virBufferAddLit(&query, "and "); virBufferAddLit(&query, "AND " MSVM_COMPUTERSYSTEM_WQL_INACTIVE);
virBufferAddLit(&query, MSVM_COMPUTERSYSTEM_WQL_INACTIVE);
} }
} }
@ -1840,10 +1835,8 @@ hypervDomainSendKey(virDomainPtr domain, unsigned int codeset,
goto cleanup; goto cleanup;
virBufferEscapeSQL(&query, virBufferEscapeSQL(&query,
"associators of " "ASSOCIATORS OF {Msvm_ComputerSystem.CreationClassName='Msvm_ComputerSystem',Name='%s'} "
"{Msvm_ComputerSystem.CreationClassName=\"Msvm_ComputerSystem\"," "WHERE ResultClass = Msvm_Keyboard",
"Name=\"%s\"} "
"where ResultClass = Msvm_Keyboard",
uuid_string); uuid_string);
if (hypervGetWmiClass(Msvm_Keyboard, &keyboard) < 0) if (hypervGetWmiClass(Msvm_Keyboard, &keyboard) < 0)
@ -1961,8 +1954,9 @@ hypervDomainSetMemoryFlags(virDomainPtr domain, unsigned long memory,
if (!params) if (!params)
goto cleanup; goto cleanup;
virBufferAddLit(&eprQuery, MSVM_COMPUTERSYSTEM_WQL_SELECT); virBufferEscapeSQL(&eprQuery,
virBufferEscapeSQL(&eprQuery, "where Name = \"%s\"", uuid_string); MSVM_COMPUTERSYSTEM_WQL_SELECT
"WHERE Name = '%s'", uuid_string);
if (hypervAddEprParam(params, "ComputerSystem", priv, &eprQuery, if (hypervAddEprParam(params, "ComputerSystem", priv, &eprQuery,
Msvm_ComputerSystem_WmiInfo) < 0) Msvm_ComputerSystem_WmiInfo) < 0)

View File

@ -914,8 +914,9 @@ hypervInvokeMethod(hypervPrivate *priv,
* side! That is up to Windows to control, we don't do anything about it. * side! That is up to Windows to control, we don't do anything about it.
*/ */
while (!completed && timeout >= 0) { while (!completed && timeout >= 0) {
virBufferAddLit(&query, MSVM_CONCRETEJOB_WQL_SELECT); virBufferEscapeSQL(&query,
virBufferEscapeSQL(&query, "where InstanceID = \"%s\"", instanceID); MSVM_CONCRETEJOB_WQL_SELECT
"WHERE InstanceID = '%s'", instanceID);
if (hypervGetWmiClassList(priv, Msvm_ConcreteJob_WmiInfo, &query, if (hypervGetWmiClassList(priv, Msvm_ConcreteJob_WmiInfo, &query,
(hypervObject **)&job) < 0 || job == NULL) (hypervObject **)&job) < 0 || job == NULL)
@ -1328,8 +1329,9 @@ hypervInvokeMsvmComputerSystemRequestStateChange(virDomainPtr domain,
/* FIXME: Poll every 100ms until the job completes or fails. There /* FIXME: Poll every 100ms until the job completes or fails. There
* seems to be no other way than polling. */ * seems to be no other way than polling. */
while (!completed) { while (!completed) {
virBufferAddLit(&query, MSVM_CONCRETEJOB_WQL_SELECT); virBufferAsprintf(&query,
virBufferAsprintf(&query, "where InstanceID = \"%s\"", instanceID); MSVM_CONCRETEJOB_WQL_SELECT
"WHERE InstanceID = '%s'", instanceID);
if (hypervGetWmiClassList(priv, Msvm_ConcreteJob_WmiInfo, &query, if (hypervGetWmiClassList(priv, Msvm_ConcreteJob_WmiInfo, &query,
(hypervObject **)&concreteJob) < 0) (hypervObject **)&concreteJob) < 0)
@ -1520,10 +1522,10 @@ hypervMsvmComputerSystemFromDomain(virDomainPtr domain,
virUUIDFormat(domain->uuid, uuid_string); virUUIDFormat(domain->uuid, uuid_string);
virBufferAddLit(&query, MSVM_COMPUTERSYSTEM_WQL_SELECT); virBufferAsprintf(&query,
virBufferAddLit(&query, "where "); MSVM_COMPUTERSYSTEM_WQL_SELECT
virBufferAddLit(&query, MSVM_COMPUTERSYSTEM_WQL_VIRTUAL); "WHERE " MSVM_COMPUTERSYSTEM_WQL_VIRTUAL
virBufferAsprintf(&query, "and Name = \"%s\"", uuid_string); "AND Name = '%s'", uuid_string);
if (hypervGetWmiClassList(priv, Msvm_ComputerSystem_WmiInfo, &query, if (hypervGetWmiClassList(priv, Msvm_ComputerSystem_WmiInfo, &query,
(hypervObject **)computerSystem) < 0) (hypervObject **)computerSystem) < 0)
@ -1550,10 +1552,8 @@ hypervGetMsvmVirtualSystemSettingDataFromUUID(hypervPrivate *priv,
g_auto(virBuffer) query = VIR_BUFFER_INITIALIZER; g_auto(virBuffer) query = VIR_BUFFER_INITIALIZER;
virBufferAsprintf(&query, virBufferAsprintf(&query,
"associators of " "ASSOCIATORS OF {Msvm_ComputerSystem.CreationClassName='Msvm_ComputerSystem',Name='%s'} "
"{Msvm_ComputerSystem.CreationClassName=\"Msvm_ComputerSystem\"," "WHERE AssocClass = Msvm_SettingsDefineState "
"Name=\"%s\"} "
"where AssocClass = Msvm_SettingsDefineState "
"ResultClass = Msvm_VirtualSystemSettingData", "ResultClass = Msvm_VirtualSystemSettingData",
uuid_string); uuid_string);
@ -1576,9 +1576,8 @@ hypervGetMsvmMemorySettingDataFromVSSD(hypervPrivate *priv,
g_auto(virBuffer) query = VIR_BUFFER_INITIALIZER; g_auto(virBuffer) query = VIR_BUFFER_INITIALIZER;
virBufferAsprintf(&query, virBufferAsprintf(&query,
"associators of " "ASSOCIATORS OF {Msvm_VirtualSystemSettingData.InstanceID='%s'} "
"{Msvm_VirtualSystemSettingData.InstanceID=\"%s\"} " "WHERE AssocClass = Msvm_VirtualSystemSettingDataComponent "
"where AssocClass = Msvm_VirtualSystemSettingDataComponent "
"ResultClass = Msvm_MemorySettingData", "ResultClass = Msvm_MemorySettingData",
vssd_instanceid); vssd_instanceid);