On 03/12/2018 06:47 AM, Kevin Wolf wrote:
+##
+{ 'struct': 'BlockdevCreateOptionsLUKS',
+ 'data': { 'file': 'BlockdevRef',
+ 'qcrypto': 'QCryptoBlockCreateOptionsLUKS',
+ 'size': 'size' } }
s/qcrypto/crypto/ in this field.
I do wonder about whether instead of embedding QCryptoBlockCreateOptionsLUKS
as a field, we could instead use QCryptoBlockCreateOptionsLUKS as the
base struct and just inherit from it to add file/size.
I'm not really fussed, but I wonder if you/Eric have any thoughts on the pros
or cons of inheritance vs embedding in this case.
I don't think QAPI has a way to embed it in JSON, but still provide a
QCryptoBlockCreateOptionsLUKS C object. Originally I wanted to use
inheritance, but instead of having the struct type reused, you get all
field definitions copied. I guess you could then manually cast to the
base type and it would still work, but it didn't really feel clean.
The QAPI generators generate a function (qapi_NAME_base()) which will
convert any derived type back to the parent class, which is cleaner than
manually casting; if that makes the decision to use inheritance any easier.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org