[RFC 1/1] virxml: Accept 'default' for virTristate* properties

Michal Prívozník mprivozn at redhat.com
Thu Mar 24 09:14:18 UTC 2022


On 3/24/22 10:00, Peter Krempa wrote:
> On Wed, Mar 23, 2022 at 19:04:20 +0100, Andrea Bolognani wrote:
>> The _ABSENT value of each enumeration has 'default' as string
>> representation, and when that's been formatted to XML we should
>> parse it back successfully, so we can't just treat encountering
>> it as an error.
>>
>> Callers of virXMLPropTristate*() can of course still pass
>> VIR_XML_PROP_NONZERO explicitly to the helpers if the current
>> behavior is the one they want.
>>
>> After this change, libvirtd no longer logs
>>
>>   error : virXMLPropEnumInternal:516 : XML error: Invalid value
>>   for attribute 'value' in element 'allowReboot': 'default'.
>>
>> when it gets restarted while there are running guests.
>>
>> Fixes: 8861d96c880d25c940456c5997a2ac93fc073c78
>> Fixes: c8726ede83ac117cb18c0b0a1fbfeeac8b80384b

I wouldn't say Fixes, because this is basically an RFE, not a bugfix.

>> Signed-off-by: Andrea Bolognani <abologna at redhat.com>
>> ---
>>  src/util/virxml.c | 4 ----
>>  1 file changed, 4 deletions(-)
>>
>> diff --git a/src/util/virxml.c b/src/util/virxml.c
>> index 8ff59e7cda..db5212de20 100644
>> --- a/src/util/virxml.c
>> +++ b/src/util/virxml.c
>> @@ -545,8 +545,6 @@ virXMLPropTristateBool(xmlNodePtr node,
>>                         virXMLPropFlags flags,
>>                         virTristateBool *result)
>>  {
>> -    flags |= VIR_XML_PROP_NONZERO;
>> -
>>      return virXMLPropEnumInternal(node, name, virTristateBoolTypeFromString,
>>                                    flags, result, VIR_TRISTATE_BOOL_ABSENT);
>>  }
>> @@ -573,8 +571,6 @@ virXMLPropTristateSwitch(xmlNodePtr node,
>>                           virXMLPropFlags flags,
>>                           virTristateSwitch *result)
>>  {
>> -    flags |= VIR_XML_PROP_NONZERO;
>> -
>>      return virXMLPropEnumInternal(node, name, virTristateSwitchTypeFromString,
>>                                    flags, result, VIR_TRISTATE_SWITCH_ABSENT);
>>  }
> 
> You can't do this without further consideration:
> 
> At least the usage in 'virDomainDiskSourceNetworkParse' where 'tls'
> attribute is parsed declared in the schema as 'virYesNo' which allows
> only 'yes' and 'no'.
> 
> If you want to do this you must fix all callers to pass
> VIR_XML_PROP_NONZERO explicitly and then remove it from those you care
> about.
> 

Don't forget about RNG change. I don't see much value in doing this
change without corresponding RNG update.

Michal



More information about the libvir-list mailing list