<div dir="ltr"><div class="gmail_extra">Hi,<br></div><div class="gmail_extra"><div><br></div><div><div class="gmail_extra"><div class="gmail_quote">On Tue, Nov 26, 2013 at 4:02 PM, Olivier Sallou <span dir="ltr"><<a href="mailto:olivier.sallou@irisa.fr" target="_blank">olivier.sallou@irisa.fr</a>></span> wrote:<br>



<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000"><div><br>
<div>On 11/26/2013 03:04 PM, Simon Boulet wrote:</div></div><div><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div>Perhaps that's the real problem here... I'm not very familiar with context.sh script. Is the entire VM template available (including the USER_TEMPLATE) or only the CONTEXT section?</div>



</div></div></div></blockquote><br></div>user_template is not set by itelf in the vm context file, only the context. But in my context, I add variables that refer to USER_TEMPLATE (but it is right that there are not set in first place, only after hooks). So it seems that we can refer to USER_TEMPLATE var, but only if there are predefined, not added in a hook (template not regenerated/calculated).<br>



<br>the best would be to have user_template vars added to the context.sh file in addition to the one in the vm template, AFTER the hooks.<br></div></blockquote></div></div></div></div><div class="gmail_extra"><br></div><div class="gmail_extra">



True, you can get the whole VM (XML format encoded in base64) with the pre-defined context attribute $TEMPLATE [1]. But that will be done the moment the VM is created, before the on create hooks can update the template.</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">
We should change the behaviour and parse the context when the VM is deployed, or at least the $TEMPLATE variable... A more generic approach could be to add a synchronized hook before the VM is created, to allow to edit it before it is parsed by oned.</div>


<div class="gmail_extra"><br></div><div class="gmail_extra">Meanwhile, I think you have to options:</div><div class="gmail_extra">- Edit the VMs before they are sent to OpenNebula, in the ruby API [2][3]</div><div class="gmail_extra">


- Edit the script that creates the cdrom iso [4] and insert your variables, or the onevm show -x output. It will be located in /var/lib/one/remotes/tm/shared/context</div><div class="gmail_extra"><br></div><div class="gmail_extra">

Regards</div><div class="gmail_extra"><br></div><div class="gmail_extra">
<div><div dir="ltr">[1] <a href="http://opennebula.org/documentation:rel4.2:cong" target="_blank">http://opennebula.org/documentation:rel4.2:cong</a><br></div><div dir="ltr">[2] <a href="http://opennebula.org/doc/4.2/oca/ruby/OpenNebula/Template.html#instantiate-instance_method" target="_blank">http://opennebula.org/doc/4.2/oca/ruby/OpenNebula/Template.html#instantiate-instance_method</a><br>


</div><div dir="ltr">[3] <a href="http://opennebula.org/doc/4.2/oca/ruby/OpenNebula/VirtualMachine.html#allocate-instance_method" target="_blank">http://opennebula.org/doc/4.2/oca/ruby/OpenNebula/VirtualMachine.html#allocate-instance_method</a></div>


<div dir="ltr">[4] <a href="https://github.com/OpenNebula/one/blob/master/src/tm_mad/common/context">https://github.com/OpenNebula/one/blob/master/src/tm_mad/common/context</a><br>--<br><div>Carlos Martín, MSc<br>Project Engineer</div>

<div>OpenNebula - Flexible Enterprise Cloud Made Simple<br><div><span style="border-collapse:collapse;color:rgb(136,136,136);font-family:arial,sans-serif;font-size:13px"><a href="http://www.opennebula.org/" target="_blank">www.OpenNebula.org</a> | <a href="mailto:cmartin@opennebula.org" target="_blank">cmartin@opennebula.org</a> | <a href="http://twitter.com/opennebula" target="_blank">@OpenNebula</a></span><span style="border-collapse:collapse;color:rgb(136,136,136);font-family:arial,sans-serif;font-size:13px"><a href="mailto:cmartin@opennebula.org" style="color:rgb(42,93,176)" target="_blank"></a></span></div>



</div></div></div><br></div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_quote">On Tue, Nov 26, 2013 at 4:02 PM, Olivier Sallou <span dir="ltr"><<a href="mailto:olivier.sallou@irisa.fr" target="_blank">olivier.sallou@irisa.fr</a>></span> wrote:<br>



<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000"><div>
    <br>
    <div>On 11/26/2013 03:04 PM, Simon Boulet
      wrote:<br>
    </div>
    <blockquote type="cite">
      <div dir="ltr">Bonjour Olivier,
        <div><br>
        </div>
        <div>I think there are two issues in your question.<br>
          <div><br>
          </div>
          <div class="gmail_extra">
            <div class="gmail_quote">On Tue, Nov 26, 2013 at 5:55 AM,
              Olivier Sallou <span dir="ltr"><<a href="mailto:olivier.sallou@irisa.fr" target="_blank">olivier.sallou@irisa.fr</a>></span>
              wrote:<br>
              <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
                <div bgcolor="#FFFFFF" text="#000000">
                  <div> <br>
                    <div>On 11/26/2013 11:51 AM, Olivier Sallou wrote:<br>
                    </div>
                    <blockquote type="cite"> <br>
                      <div>On 11/26/2013 11:14 AM, Carlos Martín Sánchez
                        wrote:<br>
                      </div>
                      <blockquote type="cite">
                        <div dir="ltr">
                          <div>stored in VM/USER_TEMPLATE. You can see
                            this with the onevm show -x command. The
                            onevm update action only allows to edit the
                            USER_TEMPLATE attributes, and as you
                            described, the create hook is triggered
                            after the VM has been correctly created.</div>
                          <div><br>
                          </div>
                        </div>
                      </blockquote>
                    </blockquote>
                  </div>
                </div>
              </blockquote>
              <div><br>
              </div>
              <div>First, yes, you can use the VM CREATE hooks to inject
                or change the USER_TEMPLATE attributes by issuing the
                onevm update action. To prevent VMs from being deployed
                before the hooks has run, you can set VM_SUBMIT_ON_HOLD
                = "YES", and have your hook do a onevm release at the
                end of its execution for the scheduler to pick and
                deploy the VM. This will make sure that when the VM is
                deployed, the template contains all the attributes you
                wanted.</div>
              <div>
                <div><br>
                </div>
                <div>You can also do some extra sanitization / filtering
                  and not allow the VM to be deployed if contains some
                  missing attributes, etc. by not calling the onevm
                  release at the end.</div>
              </div>
              <div><br>
              </div>
              <div>This works very well for us. In fact, we do some
                heavy stuff in the hooks, such as attaching additional
                IP addresses, attaching or detaching disks, etc.
                dynamically according to external sources, such as the
                OpenNebula user template (but also external databases,
                CRM, etc.)</div>
            </div>
          </div>
        </div>
      </div>
    </blockquote></div>
    My hook job is ok regarding vm user_template  update, I tried with
    and without VM_SUBMIT_ON_HOLD (thanks for the hint), but I have the
    same issue, my user_template variables are not set in the context.sh
    file.<div><br>
    <blockquote type="cite">
      <div dir="ltr">
        <div>
          <div class="gmail_extra">
            <div class="gmail_quote">
              <div><span style="color:rgb(80,0,80)"> </span><br>
              </div>
              <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
                <div bgcolor="#FFFFFF" text="#000000">
                  <div>
                    <blockquote type="cite"> What I expect is to get my
                      USER_TEMPLATE in the context.sh mounted in my VM.<br>
                      <br>
                      A basic use case is to generate a unique password
                      for a web application running in the VM. I'd like
                      to generate the passsword with a hook and send the
                      password to the user by mail (until here, this is
                      fine). The generated password is also in the VM
                      context/template so that it appears in the
                      context.sh of the VM. At startup, a specific init
                      script read the VM contextualization and init the
                      web application with the password provided.<br>
                    </blockquote>
                  </div>
                  The above example could be managed directly in the VM,
                  without specific contextualization, but there are
                  cases where some variables could be user dependent, so
                  those variables would need to be set dynamically on
                  opennebula server side.
                  <div>
                    <div><br>
                    </div>
                  </div>
                </div>
              </blockquote>
              <div><br>
              </div>
              <div><br>
              </div>
              <div>Perhaps that's the real problem here... I'm not very
                familiar with context.sh script. Is the entire VM
                template available (including the USER_TEMPLATE) or only
                the CONTEXT section?</div>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br></div>
    user_template is not set by itelf in the vm context file, only the
    context. But in my context, I add variables that refer to
    USER_TEMPLATE (but it is right that there are not set in first
    place, only after hooks). So it seems that we can refer to
    USER_TEMPLATE var, but only if there are predefined, not added in a
    hook (template not regenerated/calculated).<br>
    <br>
    the best would be to have user_template vars added to the context.sh
    file in addition to the one in the vm template, AFTER the hooks.<br>
    <br>
    Olivier<br>
    <blockquote type="cite">
      <div dir="ltr">
        <div>
          <div class="gmail_extra">
            <div class="gmail_quote">
              <div><br>
              </div>
              <div>Simon</div>
            </div>
            <br>
          </div>
        </div>
      </div>
    </blockquote><div>
    <br>
    <pre cols="72">-- 
Olivier Sallou
IRISA / University of Rennes 1
Campus de Beaulieu, 35000 RENNES - FRANCE
Tel: 02.99.84.71.95

gpg key id: 4096R/326D8438  (<a href="http://keyring.debian.org" target="_blank">keyring.debian.org</a>)
Key fingerprint = 5FB4 6F83 D3B9 5204 6335  D26D 78DC 68DB 326D 8438

</pre>
  </div></div>

<br>_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.opennebula.org" target="_blank">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></div></div>