[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 12/12] livepatch: Add python bindings for livepatch operations
On 11/14/19 1:06 PM, Pawel Wieczorkiewicz wrote: > Extend the XC python bindings library to support also all common > livepatch operations and actions. > > Add the python bindings for the following operations: > - status (pyxc_livepatch_status): > Requires a payload name as an input. > Returns a status dict containing a state string and a return code > integer. > - action (pyxc_livepatch_action): > Requires a payload name and an action id as an input. Timeout and > flags are optional parameters. > Returns None or throws an exception. > - upload (pyxc_livepatch_upload): > Requires a payload name and a module's filename as an input. > Returns None or throws an exception. > - list (pyxc_livepatch_list): > Takes no parameters. > Returns a list of dicts containing each payload's: > * name as a string > * state as a string > * return code as an integer > * list of metadata key=value strings > > Each functions throws an exception error based on the errno value > received from its corresponding libxc function call. > > Signed-off-by: Pawel Wieczorkiewicz <wipawel@xxxxxxxxx> > Reviewed-by: Martin Mazein <amazein@xxxxxxxxx> > Reviewed-by: Andra-Irina Paraschiv <andraprs@xxxxxxxxxx> > Reviewed-by: Leonard Foerster <foersleo@xxxxxxxxx> > Reviewed-by: Norbert Manthey <nmanthey@xxxxxxxxx> > Acked-by: Marek Marczykowski-Górecki <marmarek@xxxxxxxxxxxxxxxxxxxxxx> > --- snip > +static PyObject *pyxc_livepatch_upload(XcObject *self, > + PyObject *args, > + PyObject *kwds) > +{ > + unsigned char *fbuf = MAP_FAILED; > + char *name, *filename; > + struct stat buf; > + int fd = 0, rc = -1, saved_errno; Does fd actually need to be initialized here? Also, initializing it to 0 seems odd because 0 is a valid fd. > + ssize_t len; > + > + static char *kwd_list[] = { "name", "filename", NULL }; > + > + if ( !PyArg_ParseTupleAndKeywords(args, kwds, "ss", kwd_list, > + &name, &filename)) > + goto error; > + > + fd = open(filename, O_RDONLY); > + if ( fd < 0 ) > + goto error; > + > + if ( fstat(fd, &buf) != 0 ) > + goto error_fd; > + > + len = buf.st_size; > + fbuf = mmap(0, len, PROT_READ, MAP_PRIVATE, fd, 0); > + if ( fbuf == MAP_FAILED ) > + goto error_fd; > + > + rc = xc_livepatch_upload(self->xc_handle, name, fbuf, len); > + > + saved_errno = errno; > + munmap(fbuf, len); > + errno = saved_errno; > + > +error_fd: > + close(fd); > +error: > + return rc ? pyxc_error_to_exception(self->xc_handle) : Py_None; > +} snip> static PyMethodDef pyxc_methods[] = { > { "domain_create", > (PyCFunction)pyxc_domain_create, > @@ -2542,6 +2761,44 @@ static PyMethodDef pyxc_methods[] = { > "Returns: [int]: 0 on all permission granted; -1 if any permissions > are \ > denied\n" }, > > + { "livepatch_status", > + (PyCFunction)pyxc_livepatch_status, > + METH_KEYWORDS, "\n" > + "Gets current state and return code for a specified module.\n" > + " name [str]: Module name to be used\n" > + "Returns: [dict] on success; throwing an exception on error\n" > + " state [int]: Module current state: CHECKED or APPLIED\n" > + " rc [int]: Return code of last module's operation\n" }, > + > + { "livepatch_upload", > + (PyCFunction)pyxc_livepatch_upload, > + METH_KEYWORDS, "\n" > + "Uploads a module with specified name from filename.\n" > + " name [str]: Module name to be used\n" > + " filename [str]: Filename of a module to be uploaded\n" > + "Returns: None on success; throwing an exception on error\n" }, > + > + { "livepatch_action", > + (PyCFunction)pyxc_livepatch_action, > + METH_KEYWORDS, "\n" > + "Performs an action (unload, revert, apply or replace) on a specified \ > + module.\n" > + " name [str]: Module name to be used\n" > + " action [uint]: Action enum id\n" > + " timeout [uint]: Action scheduled execution timeout\n" > + " flags [ulong]: Flags specifying action's extra parameters\n" Should this be uint and not ulong? I expect these things could be fixed up on commit. Reviewed-by: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx> _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |