[libvirt] [PATCH 6/6] conf: Use virXMLFormatElement to format disk source network

John Ferlan posted 6 patches 8 years, 4 months ago
[libvirt] [PATCH 6/6] conf: Use virXMLFormatElement to format disk source network
Posted by John Ferlan 8 years, 4 months ago
Commit id 'e02ff020cac' neglected to use the attrBuf and childBuf
in the virDomainDiskSourceFormatNetwork call.

So make the necessary alterations to allow usage.

Signed-off-by: John Ferlan <jferlan@redhat.com>
---
 src/conf/domain_conf.c | 34 ++++++++++++++--------------------
 1 file changed, 14 insertions(+), 20 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 09c5bc1ae..a8771a3a4 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -21674,13 +21674,14 @@ virDomainSourceDefFormatSeclabel(virBufferPtr buf,
 
 
 static int
-virDomainDiskSourceFormatNetwork(virBufferPtr buf,
+virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf,
+                                 virBufferPtr childBuf,
                                  virStorageSourcePtr src)
 {
     size_t n;
     char *path = NULL;
 
-    virBufferAsprintf(buf, "<source protocol='%s'",
+    virBufferAsprintf(attrBuf, " protocol='%s'",
                       virStorageNetProtocolTypeToString(src->protocol));
 
     if (src->volume) {
@@ -21688,36 +21689,29 @@ virDomainDiskSourceFormatNetwork(virBufferPtr buf,
             return -1;
     }
 
-    virBufferEscapeString(buf, " name='%s'", path ? path : src->path);
+    virBufferEscapeString(attrBuf, " name='%s'", path ? path : src->path);
 
     VIR_FREE(path);
 
-    if (src->nhosts == 0 && !src->snapshot && !src->configFile) {
-        virBufferAddLit(buf, "/>\n");
-    } else {
-        virBufferAddLit(buf, ">\n");
-        virBufferAdjustIndent(buf, 2);
+    if (src->nhosts > 0 || src->snapshot || src->configFile) {
 
         for (n = 0; n < src->nhosts; n++) {
-            virBufferAddLit(buf, "<host");
-            virBufferEscapeString(buf, " name='%s'", src->hosts[n].name);
+            virBufferAddLit(childBuf, "<host");
+            virBufferEscapeString(childBuf, " name='%s'", src->hosts[n].name);
 
             if (src->hosts[n].port)
-                virBufferAsprintf(buf, " port='%u'", src->hosts[n].port);
+                virBufferAsprintf(childBuf, " port='%u'", src->hosts[n].port);
 
             if (src->hosts[n].transport)
-                virBufferAsprintf(buf, " transport='%s'",
+                virBufferAsprintf(childBuf, " transport='%s'",
                                   virStorageNetHostTransportTypeToString(src->hosts[n].transport));
 
-            virBufferEscapeString(buf, " socket='%s'", src->hosts[n].socket);
-            virBufferAddLit(buf, "/>\n");
+            virBufferEscapeString(childBuf, " socket='%s'", src->hosts[n].socket);
+            virBufferAddLit(childBuf, "/>\n");
         }
 
-        virBufferEscapeString(buf, "<snapshot name='%s'/>\n", src->snapshot);
-        virBufferEscapeString(buf, "<config file='%s'/>\n", src->configFile);
-
-        virBufferAdjustIndent(buf, -2);
-        virBufferAddLit(buf, "</source>\n");
+        virBufferEscapeString(childBuf, "<snapshot name='%s'/>\n", src->snapshot);
+        virBufferEscapeString(childBuf, "<config file='%s'/>\n", src->configFile);
     }
 
     return 0;
@@ -21766,7 +21760,7 @@ virDomainDiskSourceFormatInternal(virBufferPtr buf,
             break;
 
         case VIR_STORAGE_TYPE_NETWORK:
-            if (virDomainDiskSourceFormatNetwork(buf, src) < 0)
+            if (virDomainDiskSourceFormatNetwork(&attrBuf, &childBuf, src) < 0)
                 goto error;
             break;
 
-- 
2.13.5

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 6/6] conf: Use virXMLFormatElement to format disk source network
Posted by Peter Krempa 8 years, 4 months ago
On Thu, Sep 14, 2017 at 14:03:10 -0400, John Ferlan wrote:
> Commit id 'e02ff020cac' neglected to use the attrBuf and childBuf
> in the virDomainDiskSourceFormatNetwork call.
> 
> So make the necessary alterations to allow usage.
> 
> Signed-off-by: John Ferlan <jferlan@redhat.com>
> ---
>  src/conf/domain_conf.c | 34 ++++++++++++++--------------------
>  1 file changed, 14 insertions(+), 20 deletions(-)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 09c5bc1ae..a8771a3a4 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -21674,13 +21674,14 @@ virDomainSourceDefFormatSeclabel(virBufferPtr buf,
>  
>  
>  static int
> -virDomainDiskSourceFormatNetwork(virBufferPtr buf,
> +virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf,
> +                                 virBufferPtr childBuf,
>                                   virStorageSourcePtr src)
>  {
>      size_t n;
>      char *path = NULL;
>  
> -    virBufferAsprintf(buf, "<source protocol='%s'",
> +    virBufferAsprintf(attrBuf, " protocol='%s'",
>                        virStorageNetProtocolTypeToString(src->protocol));
>  
>      if (src->volume) {
> @@ -21688,36 +21689,29 @@ virDomainDiskSourceFormatNetwork(virBufferPtr buf,
>              return -1;
>      }
>  
> -    virBufferEscapeString(buf, " name='%s'", path ? path : src->path);
> +    virBufferEscapeString(attrBuf, " name='%s'", path ? path : src->path);
>  
>      VIR_FREE(path);
>  
> -    if (src->nhosts == 0 && !src->snapshot && !src->configFile) {
> -        virBufferAddLit(buf, "/>\n");
> -    } else {
> -        virBufferAddLit(buf, ">\n");
> -        virBufferAdjustIndent(buf, 2);
> +    if (src->nhosts > 0 || src->snapshot || src->configFile) {

This condition isn't necessary as well after these adjustments, drop it
and un-indent the block below.

>  
>          for (n = 0; n < src->nhosts; n++) {
> -            virBufferAddLit(buf, "<host");
> -            virBufferEscapeString(buf, " name='%s'", src->hosts[n].name);
> +            virBufferAddLit(childBuf, "<host");
> +            virBufferEscapeString(childBuf, " name='%s'", src->hosts[n].name);
>  
>              if (src->hosts[n].port)
> -                virBufferAsprintf(buf, " port='%u'", src->hosts[n].port);
> +                virBufferAsprintf(childBuf, " port='%u'", src->hosts[n].port);
>  
>              if (src->hosts[n].transport)
> -                virBufferAsprintf(buf, " transport='%s'",
> +                virBufferAsprintf(childBuf, " transport='%s'",
>                                    virStorageNetHostTransportTypeToString(src->hosts[n].transport));
>  
> -            virBufferEscapeString(buf, " socket='%s'", src->hosts[n].socket);
> -            virBufferAddLit(buf, "/>\n");
> +            virBufferEscapeString(childBuf, " socket='%s'", src->hosts[n].socket);
> +            virBufferAddLit(childBuf, "/>\n");
>          }
>  
> -        virBufferEscapeString(buf, "<snapshot name='%s'/>\n", src->snapshot);
> -        virBufferEscapeString(buf, "<config file='%s'/>\n", src->configFile);
> -
> -        virBufferAdjustIndent(buf, -2);
> -        virBufferAddLit(buf, "</source>\n");
> +        virBufferEscapeString(childBuf, "<snapshot name='%s'/>\n", src->snapshot);
> +        virBufferEscapeString(childBuf, "<config file='%s'/>\n", src->configFile);
>      }
>  
>      return 0;

ACK with the tweak above.
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 6/6] conf: Use virXMLFormatElement to format disk source network
Posted by John Ferlan 8 years, 4 months ago

On 09/15/2017 12:10 AM, Peter Krempa wrote:
> On Thu, Sep 14, 2017 at 14:03:10 -0400, John Ferlan wrote:
>> Commit id 'e02ff020cac' neglected to use the attrBuf and childBuf
>> in the virDomainDiskSourceFormatNetwork call.
>>
>> So make the necessary alterations to allow usage.
>>
>> Signed-off-by: John Ferlan <jferlan@redhat.com>
>> ---
>>  src/conf/domain_conf.c | 34 ++++++++++++++--------------------
>>  1 file changed, 14 insertions(+), 20 deletions(-)
>>
>> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
>> index 09c5bc1ae..a8771a3a4 100644
>> --- a/src/conf/domain_conf.c
>> +++ b/src/conf/domain_conf.c
>> @@ -21674,13 +21674,14 @@ virDomainSourceDefFormatSeclabel(virBufferPtr buf,
>>  
>>  
>>  static int
>> -virDomainDiskSourceFormatNetwork(virBufferPtr buf,
>> +virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf,
>> +                                 virBufferPtr childBuf,
>>                                   virStorageSourcePtr src)
>>  {
>>      size_t n;
>>      char *path = NULL;
>>  
>> -    virBufferAsprintf(buf, "<source protocol='%s'",
>> +    virBufferAsprintf(attrBuf, " protocol='%s'",
>>                        virStorageNetProtocolTypeToString(src->protocol));
>>  
>>      if (src->volume) {
>> @@ -21688,36 +21689,29 @@ virDomainDiskSourceFormatNetwork(virBufferPtr buf,
>>              return -1;
>>      }
>>  
>> -    virBufferEscapeString(buf, " name='%s'", path ? path : src->path);
>> +    virBufferEscapeString(attrBuf, " name='%s'", path ? path : src->path);
>>  
>>      VIR_FREE(path);
>>  
>> -    if (src->nhosts == 0 && !src->snapshot && !src->configFile) {
>> -        virBufferAddLit(buf, "/>\n");
>> -    } else {
>> -        virBufferAddLit(buf, ">\n");
>> -        virBufferAdjustIndent(buf, 2);
>> +    if (src->nhosts > 0 || src->snapshot || src->configFile) {
> 
> This condition isn't necessary as well after these adjustments, drop it
> and un-indent the block below.
> 

Oh yeah right... The EscapeString's won't format NULL


Tks-

John
>>  
>>          for (n = 0; n < src->nhosts; n++) {
>> -            virBufferAddLit(buf, "<host");
>> -            virBufferEscapeString(buf, " name='%s'", src->hosts[n].name);
>> +            virBufferAddLit(childBuf, "<host");
>> +            virBufferEscapeString(childBuf, " name='%s'", src->hosts[n].name);
>>  
>>              if (src->hosts[n].port)
>> -                virBufferAsprintf(buf, " port='%u'", src->hosts[n].port);
>> +                virBufferAsprintf(childBuf, " port='%u'", src->hosts[n].port);
>>  
>>              if (src->hosts[n].transport)
>> -                virBufferAsprintf(buf, " transport='%s'",
>> +                virBufferAsprintf(childBuf, " transport='%s'",
>>                                    virStorageNetHostTransportTypeToString(src->hosts[n].transport));
>>  
>> -            virBufferEscapeString(buf, " socket='%s'", src->hosts[n].socket);
>> -            virBufferAddLit(buf, "/>\n");
>> +            virBufferEscapeString(childBuf, " socket='%s'", src->hosts[n].socket);
>> +            virBufferAddLit(childBuf, "/>\n");
>>          }
>>  
>> -        virBufferEscapeString(buf, "<snapshot name='%s'/>\n", src->snapshot);
>> -        virBufferEscapeString(buf, "<config file='%s'/>\n", src->configFile);
>> -
>> -        virBufferAdjustIndent(buf, -2);
>> -        virBufferAddLit(buf, "</source>\n");
>> +        virBufferEscapeString(childBuf, "<snapshot name='%s'/>\n", src->snapshot);
>> +        virBufferEscapeString(childBuf, "<config file='%s'/>\n", src->configFile);
>>      }
>>  
>>      return 0;
> 
> ACK with the tweak above.
> 

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list