Hi Francesco,<div><br></div><div>that's great news. I'm glad it worked out. I understand it's a big task to integrate these drivers, so I'm happy to learn that you made it work.</div><div><br></div><div>In order to guide people if they have questions on this subject, we have created the "iSCSI datastore with Dell Equallogic arrays" article in <a href="http://wiki.opennebula.org/#images_and_storage" target="_blank">http://wiki.opennebula.org/#images_and_storage</a></div>


<div><br></div><div>Please feel free to modify it and improve it.</div><div><br></div><div>Regarding your question:</div><div><br></div><blockquote class="gmail_quote" style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


So far I had to hard-code the ip address of the equallogic arrays (TARGET_HOST). In the manuals I read that in the iscsi datastore definition is possible to pass the parameter: HOST which is described as follows "The tgt server host. Defaults to localhost". I am not sure how I can reference it in the /var/lib/one/remotes/tm/iscsi/ln script.</blockquote>


<div><br></div><div>This is a very good question actually. There's no simple way to do this in 3.4.0, but there's a really nice way to do this in the upcoming 3.4.1 release (it will be realeased next week or so) , because we realised it would be nice to be able to access template values of the datastore or of the VM from the TM scripts, which is exactly what you want. So what we did is to add the VM id and the DATASTORE id as parameters to all of the TM scripts, which means that in particular, for the 'ln' scripts $3 will be the VM_ID and $4, will be the DATASTORE_ID.</div>

<div><br></div><div>In your particular case you want to look up the 'TARGET_HOST' parameter of the datastore template, so you can use it inside your TM script. What you will need to do is from within the 'ln' script do 'onedatastore show $DATASTORE_ID' => process it and extract the "TARGET_HOST" attribute.</div>

<div><br></div><div>We have done something similar with the upcoming lvm drivers, so you may want to take a look:</div><div><a href="https://github.com/OpenNebula/one/blob/one-3.4/src/tm_mad/lvm/clone">https://github.com/OpenNebula/one/blob/one-3.4/src/tm_mad/lvm/clone</a></div>

<div>In that script you can see how we extracted 'SIZE' from "onevm show -x". You would need to do something similar replacing "SIZE" with "TARGET_HOST" and onevm with onedatastore.</div>

<div><br></div><div>However, if you only have a single TARGET_HOST for all the datastores, I reckon it's ok to keep it hardcoded :-)</div><div><br></div><div>Thank you for your feedback, it really helps us to know what difficulties or challenges people find when integrating OpenNebula to their infrastructure.</div>

<div><br></div><div>cheers,<br>Jaime</div><div><br></div><div><div class="gmail_quote">On Fri, Apr 20, 2012 at 7:01 AM, Francesco Camisa <span dir="ltr"><<a href="mailto:francesco.camisa@policlinicosanmarco.it" target="_blank">francesco.camisa@policlinicosanmarco.it</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
even though I am a bit ashamed for the inelegance here it is what I have done so far.<br>
<br>
I modified this relevant parts of /var/lib/one/remotes/tm/iscsi/ln:<br>
<br>
IQN=$SRC<br>
TARGET=`arg_path $SRC`<br>
DST_PATH=`arg_path $DST`<br>
DST_HOST=`arg_host $DST`<br>
DST_DIR=`dirname $DST_PATH`<br>
<br>
BASE_IQN=`echo $IQN|$CUT -d: -f1`<br>
TARGET=`echo $IQN|$CUT -d: -f2`<br>
#LV_NAME=`echo $TARGET|$AWK -F. '{print $(NF)}'`<br>
#VG_NAME=`echo $TARGET|$AWK -F. '{print $(NF-1)}'`<br>
#TARGET_DEV="/dev/$VG_NAME/$LV_NAME"<br>
TARGET_HOST=192.168.XXX.XXX<br>
<br>
DISCOVER_CMD=$(cat <<EOF<br>
    set -e<br>
    mkdir -p $DST_DIR<br>
    $SUDO $(iscsiadm_discovery "$TARGET_HOST")<br>
    $SUDO $(iscsiadm_login "$IQN" "$TARGET_HOST")<br>
    sleep 5<br>
    DISK_EQL_MULTIPATH=/dev/mapper/eql-$TARGET<br>
    ln -s "\$DISK_EQL_MULTIPATH" "$DST_PATH"<br>
EOF<br>
)<br>
<br>
I had to modify the DISK_BY_PATH with DISK_EQL_MULTIPATH since we use Equallogic Multipath Host Integration Tools for linux which dramaticalliy increase performance.<br>
<br>
So far I had to hard-code the ip address of the equallogic arrays (TARGET_HOST). In the manuals I read that in the iscsi datastore definition is possible to pass the parameter: HOST which is described as follows "The tgt server host. Defaults to localhost". I am not sure how I can reference it in the /var/lib/one/remotes/tm/iscsi/ln script.<br>



<br>
The other modifications applied so far are those suggested by Jaime Miles which I quote thanking him again for the input:<br>
<br>
Keep in mind that you need to be careful with the oneimage delete action. If you do oneimage delete, this snippet of code will get called:<br>
<a href="https://github.com/OpenNebula/one/blob/release-3.4/src/datastore_mad/remotes/iscsi/rm" target="_blank">https://github.com/OpenNebula/one/blob/release-3.4/src/datastore_mad/remotes/iscsi/rm</a><br>
RM_COMMAND=$(cat <<EOF<br>
   $SUDO $(tgtadm_target_delete "$TID")<br>
   $SUDO $LVREMOVE -f $VG_NAME/$LV_NAME<br>
EOF<br>
)<br>
log "Removing $DST_HOST:$DEV from the image repository"<br>
ssh_exec_and_log "$DST_HOST" "$RM_COMMAND" \<br>
   "Error removing $DST_HOST:$DEV"<br>
Which would fail. I suggest you can either substitute the iscsi/rm file with an a simple 'exit 0' and manually delete the image. Or you could modify it to really remove your device, which would be the best approach.<br>



<br>
Also, I think it would be wise to substitute iscsi/mkfs with 'exit 1' so it will always fail since it won't be supported either (this will be called when doing 'oneimage create' for a TYPE = DATABLOCK image). Or same as before you could modify the script to really create an empty datablock. The same applies for the iscsi/cp command ('oneimage create' when using PATH).<br>



<br>
With all this said I am happy to report that volumes are correctly linked and template instantiated.<br>
<br>
Francesco Camisa<br>
Vice Direttore Generale<br>
Policlinico San Marco<br>
via Zanotto 40<br>
30173 Mestre-VE<br>
Italy<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>
</blockquote></div><br></div>
<br clear="all"><div><br></div>-- <br>Jaime Melis<br>Project Engineer<br>OpenNebula - The Open Source Toolkit for Cloud Computing<br><a href="http://www.OpenNebula.org" target="_blank">www.OpenNebula.org</a> | <a href="mailto:jmelis@opennebula.org" target="_blank">jmelis@opennebula.org</a><br>