<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>> Date: Sun, 5 Aug 2012 13:48:01 +0200<br><div>> From: matthias.bolte@googlemail.com<br>> To: libvir-list@redhat.com<br>> Subject: [libvirt] [PATCH] esx: Remove redundant checks for esxVI_LookupHostSystemProperties result<br>> <br>> esxVI_LookupHostSystemProperties guarantees that hostSystem is non-NULL.<br>> Remove redundant NULL checks from callers.<br>> <br>> Also prefer esxVI_GetStringValue over open-coding the logic.<br>> ---<br>>  src/esx/esx_driver.c   |   82 +++++++++---------------------------------------<br>>  src/esx/esx_vi.c       |    4 +-<br>>  src/esx/esx_vi_types.c |    3 +-<br>>  3 files changed, 19 insertions(+), 70 deletions(-)<br>> <br>> diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c<br>> index 47957cc..72a7acc 100644<br>> --- a/src/esx/esx_driver.c<br>> +++ b/src/esx/esx_driver.c<br>> @@ -3,7 +3,7 @@<br>>   * esx_driver.c: core driver functions for managing VMware ESX hosts<br>>   *<br>>   * Copyright (C) 2010-2012 Red Hat, Inc.<br>> - * Copyright (C) 2009-2011 Matthias Bolte <matthias.bolte@googlemail.com><br>> + * Copyright (C) 2009-2012 Matthias Bolte <matthias.bolte@googlemail.com><br>>   * Copyright (C) 2009 Maximilian Wilhelm <max@rfc2324.org><br>>   *<br>>   * This library is free software; you can redistribute it and/or<br>> @@ -467,12 +467,6 @@ esxSupportsLongMode(esxPrivate *priv)<br>>          goto cleanup;<br>>      }<br>>  <br>> -    if (hostSystem == NULL) {<br>> -        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",<br>> -                       _("Could not retrieve the HostSystem object"));<br>> -        goto cleanup;<br>> -    }<br>> -<br>>      for (dynamicProperty = hostSystem->propSet; dynamicProperty != NULL;<br>>           dynamicProperty = dynamicProperty->_next) {<br>>          if (STREQ(dynamicProperty->name, "hardware.cpuFeature")) {<br>> @@ -534,7 +528,7 @@ esxLookupHostSystemBiosUuid(esxPrivate *priv, unsigned char *uuid)<br>>      int result = -1;<br>>      esxVI_String *propertyNameList = NULL;<br>>      esxVI_ObjectContent *hostSystem = NULL;<br>> -    esxVI_DynamicProperty *dynamicProperty = NULL;<br>> +    char *uuid_string = NULL;<br>>  <br>>      if (esxVI_EnsureSession(priv->primary) < 0) {<br>>          return -1;<br>> @@ -543,41 +537,22 @@ esxLookupHostSystemBiosUuid(esxPrivate *priv, unsigned char *uuid)<br>>      if (esxVI_String_AppendValueToList(&propertyNameList,<br>>                                         "hardware.systemInfo.uuid") < 0 ||<br>>          esxVI_LookupHostSystemProperties(priv->primary, propertyNameList,<br>> -                                         &hostSystem) < 0) {<br>> -        goto cleanup;<br>> -    }<br>> -<br>> -    if (hostSystem == NULL) {<br>> -        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",<br>> -                       _("Could not retrieve the HostSystem object"));<br>> +                                         &hostSystem) < 0 ||<br>> +        esxVI_GetStringValue(hostSystem, "hardware.systemInfo.uuid",<br>> +                             &uuid_string, esxVI_Occurrence_RequiredItem) < 0) {<br>>          goto cleanup;<br>>      }<br>>  <br>> -    for (dynamicProperty = hostSystem->propSet; dynamicProperty != NULL;<br>> -         dynamicProperty = dynamicProperty->_next) {<br>> -        if (STREQ(dynamicProperty->name, "hardware.systemInfo.uuid")) {<br>> -            if (esxVI_AnyType_ExpectType(dynamicProperty->val,<br>> -                                         esxVI_Type_String) < 0) {<br>> -                goto cleanup;<br>> -            }<br>> -<br>> -            if (strlen(dynamicProperty->val->string) > 0) {<br>> -                if (virUUIDParse(dynamicProperty->val->string, uuid) < 0) {<br>> -                    VIR_WARN("Could not parse host UUID from string '%s'",<br>> -                             dynamicProperty->val->string);<br>> +    if (strlen(uuid_string) > 0) {<br>> +        if (virUUIDParse(uuid_string, uuid) < 0) {<br>> +            VIR_WARN("Could not parse host UUID from string '%s'", uuid_string);<br>>  <br>> -                    /* HostSystem has an invalid UUID, ignore it */<br>> -                    memset(uuid, 0, VIR_UUID_BUFLEN);<br>> -                }<br>> -            } else {<br>> -                /* HostSystem has an empty UUID */<br>> -                memset(uuid, 0, VIR_UUID_BUFLEN);<br>> -            }<br>> -<br>> -            break;<br>> -        } else {<br>> -            VIR_WARN("Unexpected '%s' property", dynamicProperty->name);<br>> +            /* HostSystem has an invalid UUID, ignore it */<br>> +            memset(uuid, 0, VIR_UUID_BUFLEN);<br>>          }<br>> +    } else {<br>> +        /* HostSystem has an empty UUID */<br>> +        memset(uuid, 0, VIR_UUID_BUFLEN);<br>>      }<br>>  <br>>      result = 0;<br>> @@ -1176,17 +1151,8 @@ esxSupportsVMotion(esxPrivate *priv)<br>>      if (esxVI_String_AppendValueToList(&propertyNameList,<br>>                                         "capability.vmotionSupported") < 0 ||<br>>          esxVI_LookupHostSystemProperties(priv->primary, propertyNameList,<br>> -                                         &hostSystem) < 0) {<br>> -        goto cleanup;<br>> -    }<br>> -<br>> -    if (hostSystem == NULL) {<br>> -        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",<br>> -                       _("Could not retrieve the HostSystem object"));<br>> -        goto cleanup;<br>> -    }<br>> -<br>> -    if (esxVI_GetBoolean(hostSystem, "capability.vmotionSupported",<br>> +                                         &hostSystem) < 0 ||<br>> +        esxVI_GetBoolean(hostSystem, "capability.vmotionSupported",<br>>                           &priv->supportsVMotion,<br>>                           esxVI_Occurrence_RequiredItem) < 0) {<br>>          goto cleanup;<br>> @@ -1281,12 +1247,6 @@ esxGetHostname(virConnectPtr conn)<br>>          goto cleanup;<br>>      }<br>>  <br>> -    if (hostSystem == NULL) {<br>> -        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",<br>> -                       _("Could not retrieve the HostSystem object"));<br>> -        goto cleanup;<br>> -    }<br>> -<br>>      for (dynamicProperty = hostSystem->propSet; dynamicProperty != NULL;<br>>           dynamicProperty = dynamicProperty->_next) {<br>>          if (STREQ(dynamicProperty->name,<br>> @@ -1379,12 +1339,6 @@ esxNodeGetInfo(virConnectPtr conn, virNodeInfoPtr nodeinfo)<br>>          goto cleanup;<br>>      }<br>>  <br>> -    if (hostSystem == NULL) {<br>> -        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",<br>> -                       _("Could not retrieve the HostSystem object"));<br>> -        goto cleanup;<br>> -    }<br>> -<br>>      for (dynamicProperty = hostSystem->propSet; dynamicProperty != NULL;<br>>           dynamicProperty = dynamicProperty->_next) {<br>>          if (STREQ(dynamicProperty->name, "hardware.cpuInfo.hz")) {<br>> @@ -2702,12 +2656,6 @@ esxDomainGetVcpusFlags(virDomainPtr domain, unsigned int flags)<br>>          goto cleanup;<br>>      }<br>>  <br>> -    if (hostSystem == NULL) {<br>> -        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",<br>> -                       _("Could not retrieve the HostSystem object"));<br>> -        goto cleanup;<br>> -    }<br>> -<br>>      for (dynamicProperty = hostSystem->propSet; dynamicProperty != NULL;<br>>           dynamicProperty = dynamicProperty->_next) {<br>>          if (STREQ(dynamicProperty->name, "capability.maxSupportedVcpus")) {<br>> diff --git a/src/esx/esx_vi.c b/src/esx/esx_vi.c<br>> index c4217c9..f3a9e91 100644<br>> --- a/src/esx/esx_vi.c<br>> +++ b/src/esx/esx_vi.c<br>> @@ -4570,8 +4570,8 @@ esxVI_ProductVersionToDefaultVirtualHWVersion(esxVI_ProductVersion productVersio<br>>          esxVI_DynamicProperty *dynamicProperty = NULL;                        \<br>>                                                                                \<br>>          if (ptrptr == NULL || *ptrptr != NULL) {                              \<br>> -            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",                        \<br>> -                           _("Invalid argument"));                      \<br>> +            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",                      \<br>> +                           _("Invalid argument"));                            \<br>>              return -1;                                                        \<br>>          }                                                                     \<br>>                                                                                \<br>> diff --git a/src/esx/esx_vi_types.c b/src/esx/esx_vi_types.c<br>> index 36f3196..2236751 100644<br>> --- a/src/esx/esx_vi_types.c<br>> +++ b/src/esx/esx_vi_types.c<br>> @@ -296,7 +296,8 @@<br>>               childNode = childNode->next) {                                   \<br>>              if (childNode->type != XML_ELEMENT_NODE) {                        \<br>>                  virReportError(VIR_ERR_INTERNAL_ERROR,                        \<br>> -                               _("Wrong XML element type %d"), childNode->type); \<br>> +                               _("Wrong XML element type %d"),                \<br>> +                               childNode->type);                              \<br>>                  goto failure;                                                 \<br>>              }                                                                 \<br>>                                                                                \<br>> -- <br>> 1.7.4.1<br>> <br>> --<br>> libvir-list mailing list<br>> libvir-list@redhat.com<br>> https://www.redhat.com/mailman/listinfo/libvir-list<br><br>ACK, Thanks for the cleanup.<br><br>Regards,<br>Ata<br></div>                                        </div></body>
</html>