<div dir="ltr">Hi Daniel,<div><br></div><div>We'll consider the inclusion of this feature for 4.6....</div><div><br></div><div><a href="http://dev.opennebula.org/issues/2566">http://dev.opennebula.org/issues/2566</a><br>

</div><div><br></div><div>Cheers</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Nov 5, 2013 at 11:26 AM, Daniel Dehennin <span dir="ltr"><<a href="mailto:daniel.dehennin@baby-gnu.org" target="_blank">daniel.dehennin@baby-gnu.org</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">"Ruben S. Montero" <<a href="mailto:rsmontero@opennebula.org">rsmontero@opennebula.org</a>> writes:<br>


<br>
> So, your proposal is to have, all messages as in:<br>
><br>
>     [TM][I]: clone: Cloning<br>
> /var/lib/one/datastores/1/e72972d1dc14203d83520f9ae6395d94 in<br>
> yggdrasil:/var/lib/one//datastores/0/15/disk.1<br>
><br>
> This is pre-pend with the "clone:" string, right? If this is the case, this<br>
> could be done in the core as:<br>
><br>
>    [TM][I]: <<<<<< ERROR IN CLONE >>>>>>>>><br>
>    [TM][I]: Command execution fail: /var/lib/one/remotes/tm/qcow2/clone<br>
> yggdrasil:/var/lib/one/datastores/1/e72972d1dc14203d83520f9ae6395d94<br>
> yggdrasil:/var/lib/one//datastores/0/15/disk.1 15 1<br>
>     [TM][I]: clone: Cloning<br>
> /var/lib/one/datastores/1/e72972d1dc14203d83520f9ae6395d94 in<br>
> yggdrasil:/var/lib/one//datastores/0/15/disk.1<br>
> ...<br>
>    [TM][I]: <<<<<< ERROR IN CLONE >>>>>>>>><br>
><br>
><br>
> What do you think?<br>
<br>
I thought about wrapping all executed commands to log:<br>
<br>
- INFO: the description of the command, like<br>
  “Cloning /var/lib/one/datastores/1/e72972d1dc14203d83520f9ae6395d94<br>
   in yggdrasil:/var/lib/one//datastores/0/15/disk.1”<br>
<br>
- DEBUG: the command to execute, like: “ssh@yggdrasil: <COMMAND>”<br>
<br>
This could output something like the following (line wrapped to ease reading):<br>
<br>
    [TM][I]: Command: /var/lib/one/remotes/tm/qcow2/clone<br>
             yggdrasil:/var/lib/one/datastores/1/e72972d1dc14203d83520f9ae6395d94<br>
             yggdrasil:/var/lib/one//datastores/0/15/disk.1<br>
             15 1<br>
    [TM][I]: clone: Cloning /var/lib/one/datastores/1/e72972d1dc14203d83520f9ae6395d94<br>
             in yggdrasil:/var/lib/one//datastores/0/15/disk.1<br>
    [TM][D]: clone: ssh@yggdrasil "cd /var/lib/one/datastores/0/15;<br>
             qemu-img create -b /var/lib/one/datastores/1/e72972d1dc14203d83520f9ae6395d94<br>
             -f qcow2 /var/lib/one/datastores/0/15/disk.1"<br>
    [TM][E]: <<<<<< ERROR IN CLONE >>>>>>>>><br>
    [TM][E]: Command execution fail: "/var/lib/one/remotes/tm/qcow2/clone<br>
             yggdrasil:/var/lib/one/datastores/1/e72972d1dc14203d83520f9ae6395d94<br>
             yggdrasil:/var/lib/one//datastores/0/15/disk.1<br>
             15 1": qemu-img: Could not open '/var/lib/one/datastores/1/e72972d1dc14203d83520f9ae6395d94'<br>
    [TM][E]: Error copying yggdrasil:/var/lib/one/datastores/1/e72972d1dc14203d83520f9ae6395d94<br>
             to yggdrasil:/var/lib/one//datastores/0/15/disk.1<br>
    [TM][I]: ExitCode: 1<br>
    [TM][E]: <<<<<< ERROR IN CLONE >>>>>>>>><br>
<br>
So, we can follow the execution path until the error:<br>
<br>
1. the “qcow2 clone” is called with specified arguments<br>
2. the “clone” script informs what it does<br>
3. in debug mode[1] we see the command that will be executed: an SSH to<br>
   yggdrasil running “cd” and “qemu-img”<br>
4. an error occurs and we see the command and it's output<br>
<br>
Actually, the point 4 is already OK for me, but 1 to 3 are missing.<br>
<br>
The point 2 is already done by the script[2] but is not present in the<br>
logs and I don't know why.<br>
<br>
The point 3 can be done by common wrappers[3].<br>
<br>
The point 1 is from core, I think.<br>
<br>
This could be generalized as:<br>
<br>
1. the core log state changes<br>
2. for each step to setup a VM, the core log what need to be done, like<br>
   “setting up network”, “setting up storage”, etc.<br>
3. the core log which script it will call with its arguments<br>
4. the script log informative messages of what it does<br>
5. before a command is executed, a log of what will be executed and<br>
   where<br>
6. after the command is executed, log the result<br>
<br>
Looking at my log files, not everything is logged, mostly the “what ONE wants to/will do”.<br>
<br>
I hope it will help understand what I would like.<br>
<br>
Regards.<br>
<br>
Footnotes:<br>
[1]  or info I don't know what's the best<br>
<br>
[2]  <a href="http://dev.opennebula.org/projects/opennebula/repository/revisions/release-4.2/entry/src/tm_mad/qcow2/clone#L69" target="_blank">http://dev.opennebula.org/projects/opennebula/repository/revisions/release-4.2/entry/src/tm_mad/qcow2/clone#L69</a><br>


<br>
[3]  <a href="http://dev.opennebula.org/projects/opennebula/repository/revisions/release-4.2/entry/src/mad/sh/scripts_common.sh" target="_blank">http://dev.opennebula.org/projects/opennebula/repository/revisions/release-4.2/entry/src/mad/sh/scripts_common.sh</a><br>


<span class="HOEnZb"><font color="#888888"><br>
--<br>
Daniel Dehennin<br>
Récupérer ma clef GPG:<br>
gpg --keyserver <a href="http://pgp.mit.edu" target="_blank">pgp.mit.edu</a> --recv-keys 0x7A6FE2DF<br>
</font></span><br>_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.opennebula.org">Users@lists.opennebula.org</a><br>
<a href="http://lists.opennebula.org/listinfo.cgi/users-opennebula.org" target="_blank">http://lists.opennebula.org/listinfo.cgi/users-opennebula.org</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><div><div>-- <br></div></div>Ruben S. Montero, PhD<br>Project co-Lead and Chief Architect<div>OpenNebula - Flexible Enterprise Cloud Made Simple<br>

<a href="http://www.OpenNebula.org" target="_blank">www.OpenNebula.org</a> | <a href="mailto:rsmontero@opennebula.org" target="_blank">rsmontero@opennebula.org</a> | @OpenNebula</div></div>
</div>