All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nick Rosbrook <rosbrookn@gmail.com>
To: George Dunlap <george.dunlap@citrix.com>
Cc: Nick Rosbrook <rosbrookn@ainfosec.com>,
	Xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: [Xen-devel] [PATCH v3 8/8] RFC: Sketch constructors, DomainCreateNew
Date: Tue, 28 Jan 2020 15:41:27 -0500	[thread overview]
Message-ID: <CAEBZRSe8Hz7iu7B+2-X3BV8qS9sneRr8Qanb-y6uDh6vYbuk0Q@mail.gmail.com> (raw)
In-Reply-To: <4db0f4fa-98db-33d6-5be5-f6ea59096166@citrix.com>

> I think marshaling and unmarshalling should be fine, *as long as* the
> structure being unmarshalled actually went through the
> libxl_<type>_init() function first.
>
> In fact, I was kicking around the idea of adding a non-exported field to
> all the generated structs -- maybe "bool initalized" -- and having the
> .fromC() methods set this to 'true', and the .toC() methods return an
> error if it wasn't set.  But then we'd need to write custom JSON
> marshallers to handle these.

I *think* to guarantee that libxl_<type>_init() has been called when
unmarshaling, we would need to generate UnmarshalJSON functions to
implement json.Unmarshaler. E.g.,:

func (dd *DeviceDisk) UnmarshalJSON(data []byte) error {
        if dd == nil { // Or maybe this is the 'initialized' check you mentioned
                dd, err := NewDeviceDisk()
                if err != nil {
                        return err
                }
        }

        return json.Unmarshal(data, dd)
}

AFAICT, this would be required for someone to unmarshal a complete
domain configuration in one go.

> I'm not personally very interested in parsing xl.cfg files, but libxl
> has library functions to do that, so it should be something very easy to
> add if you want.  (Although in fact, it looks like a lot of the code to
> actually interpret the results of the parsing is in xl; we might want to
> see about moving some of that functionality into libxlu.)

Okay, noted.

> > If we stick with this outline for constructors, they will be easy to
> > generate. I'm happy to work on that, unless you were already planning
> > on it.
>
> I'm afraid my 1 day a week of coding is going to have to be diverted to
> something else for a month or so; so please go ahead if you have the time.

Okay, I think I can manage this fairly easily.

> As far as further steps -- do you have a clear idea what kind of
> functionality you'd like to see possible by the time of the feature
> freeze (probably in May)?  Do you have plans to use these bindings
> yourself, and if so, how?
>
> For my part, I want to start and reap guests.  The latter will require
> adding event callback functionality which will require more thought (and
> perhaps expose more libxl issues).  But I don't yet have a clear target
> beyond that.

Yes, I plan on using these bindings in redctl (our Redfield toolstack)
[1], to replace our os/exec calls to xl. To fully make that
transition, we would need domain start/stop, PCI and network
attach/detach, as well as some utilities (most of which are either
implemented, or would be easy to do). But, making that transition is
relatively low on the priority list right now, so I can't commit to a
timeline unfortunately.

> Re function calls -- do we want to just manually duplicate them as
> needed, or try to get some sort of IDL support?

I think it will make more sense to manually duplicate them as needed.
That way, we can be more particular about function signatures etc. to
ensure they are idiomatic Go. Also, I am of the opinion that a minimal
API is a better place to start. Which brings me to another question
and potential work item:

Do we want to re-evaluate what is currently implemented in the API? Do
you have plans to use everything that is currently there? If not, it
might be nice to trim off things we don't need right now.

> Other work items include:
>
> * modifying configure to detect the availability of go and enable the
> bindings if it's available
>
> * Enabling go build testing in the gitlab CI loop
>
> * Making `go get` work, which might involve having code to push
> post-generated code to a repo and tagging as appropriate

I was going to ask about this. You had a vanity URL in place at one
point, right? Did `go get` ever work with that? In any case, pushing
to another repo might be desirable.

Thanks,
-NR

[1] https://gitlab.com/redfield/redctl

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

  reply	other threads:[~2020-01-28 20:42 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-17 15:57 [Xen-devel] [PATCH v3 1/8] golang/xenlight: Don't try to marshall zero-length arrays in fromC George Dunlap
2020-01-17 15:57 ` [Xen-devel] [PATCH v3 2/8] go/xenlight: Fix CpuidPoliclyList conversion George Dunlap
2020-01-20 23:30   ` Nick Rosbrook
2020-01-17 15:57 ` [Xen-devel] [PATCH v3 3/8] go/xenlight: More informative error messages George Dunlap
2020-01-20 23:32   ` Nick Rosbrook
2020-01-17 15:57 ` [Xen-devel] [PATCH v3 4/8] golang/xenlight: Errors are negative George Dunlap
2020-01-20 23:40   ` Nick Rosbrook
2020-01-17 15:57 ` [Xen-devel] [PATCH v3 5/8] golang/xenlight: Default loglevel to DEBUG until we get everything working George Dunlap
2020-01-20 23:41   ` Nick Rosbrook
2020-01-21  9:55     ` George Dunlap
2020-01-24 19:51       ` Nick Rosbrook
2020-01-17 15:57 ` [Xen-devel] [PATCH v3 6/8] golang/xenlight: Don't leak memory on context open failure George Dunlap
2020-01-20 23:43   ` Nick Rosbrook
2020-01-17 15:57 ` [Xen-devel] [PATCH v3 7/8] golang/xenlight: Notify xenlight of SIGCHLD George Dunlap
2020-01-17 16:52   ` Ian Jackson
2020-01-17 17:33     ` George Dunlap
2020-01-17 18:12       ` [Xen-devel] [PATCH] libxl: event: Document lifetime API for libxl_childproc_setmode Ian Jackson
2020-01-20 12:06         ` Wei Liu
2020-01-17 18:13   ` [Xen-devel] [PATCH v3 7/8] golang/xenlight: Notify xenlight of SIGCHLD Nick Rosbrook
2020-01-17 18:28     ` George Dunlap
2020-01-17 15:57 ` [Xen-devel] [PATCH v3 8/8] RFC: Sketch constructors, DomainCreateNew George Dunlap
2020-01-17 18:38   ` George Dunlap
2020-01-22 10:32   ` George Dunlap
2020-01-24 19:32   ` Nick Rosbrook
2020-01-27 18:08     ` George Dunlap
2020-01-28 20:41       ` Nick Rosbrook [this message]
2020-01-29 14:17         ` Nick Rosbrook
2020-01-29 14:46         ` George Dunlap
2020-02-04 19:26           ` Nick Rosbrook
2020-01-17 16:04 ` [Xen-devel] [PATCH v3 1/8] golang/xenlight: Don't try to marshall zero-length arrays in fromC George Dunlap
2020-01-20 23:39 ` Nick Rosbrook
2020-01-21 17:35   ` George Dunlap

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAEBZRSe8Hz7iu7B+2-X3BV8qS9sneRr8Qanb-y6uDh6vYbuk0Q@mail.gmail.com \
    --to=rosbrookn@gmail.com \
    --cc=george.dunlap@citrix.com \
    --cc=rosbrookn@ainfosec.com \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.