[libvirt] [libvirt-go-xml PATCH 1/2] Add support for domain launch security

Daniel P. Berrangé berrange at redhat.com
Thu Jun 14 16:12:42 UTC 2018


On Thu, Jun 14, 2018 at 04:54:43PM +0100, Daniel P. Berrangé wrote:
> On Thu, Jun 14, 2018 at 04:30:29PM +0200, Erik Skultety wrote:
> > Signed-off-by: Erik Skultety <eskultet at redhat.com>
> > ---
> >  domain.go | 135 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
> >  1 file changed, 134 insertions(+), 1 deletion(-)
> > 
> > diff --git a/domain.go b/domain.go
> > index aeeb24a..27e2fdc 100644
> > --- a/domain.go
> > +++ b/domain.go
> > @@ -1863,6 +1863,15 @@ type DomainFeatureCapability struct {
> >  	State string `xml:"state,attr,omitempty"`
> >  }
> >  
> > +type DomainLaunchSecurity struct {
> > +	Sectype         string `xml:"type,attr"`

Oh, actually I forgot that I aim to avoid ever exposing "type" attributes
in the XML - they are a sign that we need to use a union.

IOW, we would want

  type DomainLaunchSecurity struct {
      SEV *DomainLaunchSecuritySEV
  }

And DomainLaunchSecuritySEV would contain the rest of the fields
below - this requires more magic MarshalXML/UnmarshalXML helpers
to create/serialize the SEV struct depending on 'type' value.


If you want a simple example of how this is done which is a good
fit with DomainLaunchSecurity, take a look at NetworkForwardAddress
and NetworkForwardAddressPCI structs, in the network.go file, and
their corresponding MarshalXML/UnmarshalXML methods.

> > +	Cbitpos         *uint  `xml:"cbitpos"`
> 
> s/Cbitpos/CBitPos/
> 
> > +	ReducedPhysBits *uint  `xml:"reducedPhysBits"`
> > +	Policy          *uint  `xml:"policy"`
> > +	DhCert          string `xml:"dhCert"`
> 
> s/DhCert/DHCert/  since 'dh' is an acronym
> 
> > +	Session         string `xml:"sesion"`
> > +}
> > +
> >  type DomainFeatureCapabilities struct {
> >  	Policy         string                   `xml:"policy,attr,omitempty"`
> >  	AuditControl   *DomainFeatureCapability `xml:"audit_control"`
> > @@ -2182,7 +2191,8 @@ type Domain struct {
> >  	QEMUCommandline      *DomainQEMUCommandline
> >  	LXCNamespace         *DomainLXCNamespace
> >  	VMWareDataCenterPath *DomainVMWareDataCenterPath
> > -	KeyWrap              *DomainKeyWrap `xml:"keywrap"`
> > +	KeyWrap              *DomainKeyWrap        `xml:"keywrap"`
> > +	LaunchSecurity       *DomainLaunchSecurity `xml:"launchSecurity"`
> >  }
> >  
> >  func (d *Domain) Unmarshal(doc string) error {
> 
> 
> Reviewed-by: Daniel P. Berrangé <berrange at redhat.com>
> 
> 
> Regards,
> Daniel
> -- 
> |: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
> |: https://libvirt.org         -o-            https://fstop138.berrange.com :|
> |: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
> 
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list