I tried it again today and found below:

1. I can create 2 templates with the same volume of iSCSI storage pool.
2. I can create 2 guests with the same template configured against a volume of iSCSI storage pool.

I think both the design and implementation have problems

1. For template, as it need to be used to create multiple guests, resources there must be collection like network/storage pool, should not be a volume.
2. As volume need to support both read/write, we need to avoid 2 guests use the same volume as boot disk.

Recommended design:

1. In template, when edit, only list storage pool, remove iscsi pool volumes there.
2. When create guest, once user selected the template, if it is iscsi, add a section with a dropdown list for user to select volume, for volume already in use, filter them out.
   

On 9/19/2014 10:48 AM, Aline Manera wrote:

On 09/18/2014 08:07 AM, Yu Xin Huo wrote:
I got a iSCSI target to work on my redhat with a USB disk to test iSCSI storage pool and found below:

1. When create a iSCSI storage pool, I selected a target in dropdown list.
2. Once the pool is created, I see a volume named 'unit:0:0:1'.
3. When edit template, in the 'storage pool' dropdown, 'unit:0:0:1' is listed there.

So 'unit:0:0:1' which indeed is a volume but listed as a pool in template?  or something I am misunderstanding?

The "Storage pool" on Template represents where the guest disk will be created.
So if I specify "default" pool and size 10GB my guest will have a 10GB disk created on the default pool (under /var/lib/libvirt/images, for example)

But it is not true for iSCSI and SCSI pools.
We call the iSCSI and SCSI pools as read-only because we can not create new files on it.
The volumes are pre-configured by the system. Because that while using those pools you also need to select the volume as are represented by <pool_name>/<vol_name> in the combo box.

When a iSCSI or SCSI pool/volume is selected on Template the user can not edit its size, as the volume already exists and has a size.