[virt-tools-list] [virt-manager PATCH 2/2] cli: fix cpu secure option to actually work

Pavel Hrdina phrdina at redhat.com
Wed May 22 14:33:53 UTC 2019


On Wed, May 22, 2019 at 10:24:47AM -0400, Cole Robinson wrote:
> On 5/22/19 8:15 AM, Pavel Hrdina wrote:
> > The 'secure' option is processed after the model is already set.
> > CPU security options are resolved while setting CPU model so we need
> > to know the 'secure' option value before we set the CPU model.
> > 
> > Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
> > ---
> > 
> 
> The cli options are applied to the XMLBuilder object in the order they
> are listed in the parser class. So rather than peak into optdict, this
> works in my testing:
> 
> diff --git a/virtinst/cli.py b/virtinst/cli.py
> index e137fb14..7b27e390 100644
> --- a/virtinst/cli.py
> +++ b/virtinst/cli.py
> @@ -1923,9 +1923,6 @@ class ParserCPU(VirtCLIParser):
>          return cb(inst, *args, **kwargs)
> 
>      def set_model_cb(self, inst, val, virtarg):
> -        if "secure" in self.optdict:
> -            inst.secure = _on_off_convert("secure", self.optdict["secure"])
> -
>          if val == "host":
>              val = inst.SPECIAL_MODE_HOST_MODEL
>          if val == "none":
> @@ -1954,11 +1951,11 @@ class ParserCPU(VirtCLIParser):
>      @classmethod
>      def _init_class(cls, **kwargs):
>          VirtCLIParser._init_class(**kwargs)
> +        cls.add_arg("secure", "secure", is_onoff=True)
>          cls.add_arg("model", "model", cb=cls.set_model_cb)
>          cls.add_arg("mode", "mode")
>          cls.add_arg("match", "match")
>          cls.add_arg("vendor", "vendor")
> -        cls.add_arg("secure", "secure", is_onoff=True)
>          cls.add_arg("cache.mode", "cache.mode")
>          cls.add_arg("cache.level", "cache.level")

Perfect, I did not like my solution and hoped that you might have some
advice since you've been cleaning the CLI parser recently.  I'll go with
that.

> > The ideal fix would be to refactor CLI parsing to introduce some
> > post-parse callback where we could properly set everything based
> > on the user input.
> > 
> 
> Yeah in general option ordering can't fix all issues, we can use
> set_defaults to sort some complex deps out too. The big problem is using
> virt-xml, lots of our option interactions are really only correctly
> handled at XML build time and not XML edit time, but I haven't really
> figured out a general way to resolve that

We might need to look into that someday.

I'll change the patch and push it.

Thanks,
Pavel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/virt-tools-list/attachments/20190522/c77ca910/attachment.sig>


More information about the virt-tools-list mailing list