[libvirt] [PATCH v2 8/8] domain: Keep assigned class_id in domstatus XML

Laine Stump laine at laine.org
Tue Dec 11 15:13:58 UTC 2012


On 12/11/2012 08:14 AM, Michal Privoznik wrote:
> On 11.12.2012 13:03, Laine Stump wrote:
>> On 12/04/2012 02:19 PM, Michal Privoznik wrote:
>>> Interfaces keeps a class_id, which is an ID from which bridge
>>> part of QoS settings is derived. We need to store class_id
>>> in domain status file, so we can later pass it to
>>> virNetDevBandwidthUnplug.
>>> ---
>>>  src/conf/domain_conf.c |   13 +++++++++++++
>>>  1 files changed, 13 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
>>> index 99aa08d..9f6d1e9 100644
>>> --- a/src/conf/domain_conf.c
>>> +++ b/src/conf/domain_conf.c
>>> @@ -4777,6 +4777,17 @@ virDomainActualNetDefParseXML(xmlNodePtr node,
>>>                                         hostdev, flags) < 0) {
>>>              goto error;
>>>          }
>>> +    } else if (actual->type == VIR_DOMAIN_NET_TYPE_NETWORK) {
>>> +        char *class_id = virXPathString("string(./class/@id)", ctxt);
>>> +        if (class_id &&
>>> +            virStrToLong_ui(class_id, NULL, 10, &actual->class_id) < 0) {
>>> +            virReportError(VIR_ERR_INTERNAL_ERROR,
>>> +                           _("Unable to parse class id '%s'"),
>>> +                           class_id);
>>> +            VIR_FREE(class_id);
>>> +            goto error;
>>> +        }
>>> +        VIR_FREE(class_id);
>>>      }
>>>  
>>>      bandwidth_node = virXPathNode("./bandwidth", ctxt);
>>> @@ -12467,6 +12478,8 @@ virDomainActualNetDefFormat(virBufferPtr buf,
>>>          break;
>>>  
>>>      case VIR_DOMAIN_NET_TYPE_NETWORK:
>>> +        if (def->class_id)
>>> +            virBufferAsprintf(buf, "<class id='%u'/>", def->class_id);
>>>          break;
>>>      default:
>>>          virReportError(VIR_ERR_INTERNAL_ERROR,
>> I just added a comment to 6/8 - I think this patch should be done prior
>> to 6/8, and include the addition of class_id to the actualNetDef (well,
>> really I think that the class_id would be better added to
>> virNetDevBandwidth instead).
>>
>> ACK with class_id moved into the bandwidth object (unless there's some
>> reason you didn't do that), and a preference for re-ordering/re-grouping
>> as I mentioned in the previous paragraph.
> My motive is to keep virNetDevBandwidth clean, so it contains just
> bandwidth definition. Class ID should be part of network object itself.
> Something similar to domain definition and domain object. Definition
> should keep defined values, while an object should contain runtime info.
> In this case: Class ID is not something from user. It's rather generated
> piece of information which - moreover - is dependent on current
> implementation. I mean, it just keeps track of assigned ID so we can
> talk to /sbin/tc (=current impl).

Okay, I can see where that makes sense - the bandwidth element is also
present in user config, and you don't want to pollute it there. Fine
with me then :-)




More information about the libvir-list mailing list