Re: [PATCH 1/1] Partial fixes for Issue #7 titled 'Move validation checks out of domain XML parsing'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 4/3/23 11:34, Peter Krempa wrote:
> In the summary line please shortly describe the change itself e.g.:
> 
>  conf: Move validation of graphics transport out of parser
> 
> Any further description can be in the body, including mentioning issues
> and other less-relevant information.
> 
> Additionally in my reply to your application where I've pointed you to
> our guidance of how to send patches I've pointed you to:
> 
> https://www.libvirt.org/hacking.html#submitting-patches
> 
> The very next paragraph (direct anchor link:
> https://www.libvirt.org/hacking.html#developer-certificate-of-origin )
> states:
> 
>   Developer Certificate of Origin
>   ===============================
> 
>   Contributors to libvirt projects **must** assert that they are
>   in compliance with the `Developer Certificate of Origin
>   1.1 <https://developercertificate.org/>`__. This is achieved by
>   adding a "Signed-off-by" line containing the contributor's name
>   and e-mail to every commit message. The presence of this line
>   attests that the contributor has read the above lined DCO and
>   agrees with its statements.
> 
> Make sure to follow that guidance too. Also note that pseudonyms are not
> accepted.
> 
> On Mon, Apr 03, 2023 at 13:05:53 +0530, skran wrote:
>> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
>> index 3ab7cd2666..2a94566047 100644
>> --- a/src/conf/domain_conf.c
>> +++ b/src/conf/domain_conf.c
>> @@ -5840,14 +5840,14 @@ virDomainStorageNetworkParseHost(xmlNodePtr hostnode,
>>      host->socket = virXMLPropString(hostnode, "socket");
>>  
>>      if (host->transport == VIR_STORAGE_NET_HOST_TRANS_UNIX &&
>> -        host->socket == NULL) {
>> +        virDomainStorageNetHostSocketValidate(host)) {
>>          virReportError(VIR_ERR_XML_ERROR, "%s",
>>                         _("missing socket for unix transport"));
>>          goto cleanup;
>>      }
>>  
>>      if (host->transport != VIR_STORAGE_NET_HOST_TRANS_UNIX &&
>> -        host->socket != NULL) {
>> +        !virDomainStorageNetHostSocketValidate(host)) {
>>          virReportError(VIR_ERR_XML_ERROR,
>>                         _("transport '%1$s' does not support socket attribute"),
>>                         transport);
> 
> 
> Both hunks above don't really move the validation anywhere. It just
> moves one condition to different file which in fact decreases
> readability of the code.

Just for the record: I highly suggest you take a look how XML parsing is
done. The virDomainDefParseNode() looks like a good start.

Long story short, XML parsing is done in three steps:

1) the actual parsing, when virDomainDef (or any other definition struct
for other objects, like virNetwork, virNodeDev, etc.) is filled with
data from given XML document,

2) PostParse - when missing information is filled in (e.g. MAC addresses
are filled to vNICs), and finally

3) Validate - when the whole definition struct is checked for errors
(e.g. there are no devices with duplicitous alias).

Now, we have a lot of old code which combined these three steps into one
and we are working slowly to get rid of it, but hopefully now you see
why this hunk in particual isn't step in the right direction.

Michal




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux