On 05/18/2012 06:48 AM, Michal Privoznik wrote:
Currently, we either generate some cmd*Edit commands (cmdPoolEdit
and cmdNetworkEdit) via sed script or copy the body of cmdEdit
(e.g. cmdInterfaceEdit, cmdNWFilterEdit, etc.). This fact makes
it harder to implement any new feature to our editing system.
Therefore switch to new implementation - define macros to:
- dump XML (EDIT_GET_XML)
- take an action if XML wasn't changed,
usually just vshPrint() (EDIT_NOT_CHANGED)
- define new object (EDIT_DEFINE) - the edited XML is in @doc_edited
and #include "virsh-edit.c"
+
+ /* Now re-read the domain XML. Did someone else change it while
+ * it was being edited? This also catches problems such as us
+ * losing a connection or the domain going away.
+ */
+ doc_reread = EDIT_GET_XML;
+ if (!doc_reread)
+ goto edit_cleanup;
Oh, I meant to add - in patch 2/2, this code should be made smarter. If
the session is interactive, then we should give the user a three-way
choice: force their edits (overwriting the changes in the meantime),
reedit by starting from the new definition, or quit. Right now, we are
just quitting without a choice.
--
Eric Blake eblake(a)redhat.com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org