[Kimchi-devel] [PATCH 2/2] List iSCSI targets available for initiator while creating iSCSI Pool

Royce Lv lvroyce at linux.vnet.ibm.com
Mon Jun 9 08:47:24 UTC 2014


On 2014年06月05日 22:54, Aline Manera wrote:
> On 05/28/2014 12:46 AM, Zhou Zheng Sheng wrote:
>> on 2014/05/27 23:33, shaohef at linux.vnet.ibm.com wrote:
>>> From: ShaoHe Feng <shaohef at linux.vnet.ibm.com>
>>>
>>> Here we call libvirt findStoragePoolSources to get the iSCSI targets.
>>>
>>> Zhou Zheng Sheng aslo provides a method to get the iSCSI targets in
>>> commit f163d22e.
>>>
>> If you mean kimchi.iscsi.TargetClient, it's handy. However it does not
>> handle NFS. It seems libvirt API can handle all the storage types, we
>> can stay with the API.
>
> If I remember correctly, Royce had problems while using the libvirt 
> API when she developed the NFS part.
> Some supported distro has different libvirt version that does not work 
> properly.
> Maybe it is the time to check it again.
https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1264955
This is the problem I documented. It is for ubuntu nfs.
After checked with iscsi, ubuntu pool target probe works well:

virsh # find-storage-pool-sources-as --type iscsi --host 9.115.122.152
<sources>
<source>
<host name='9.115.122.152' port='3260'/>
<device path='iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.ed2815d63e31'/>
</source>
</sources>

>
>
>>
>>> Test this patch by:
>>> $ curl -k -u shhfeng:123456 -H "Content-Type: application/json" \
>>>> -H "Accept: application/json" \
>>>> https://localhost:8001/storageservers/127.0.0.1/storagetargets?_target_type=iscsi 
>>>>
>>> [
>>> {
>>> "host":"127.0.0.1",
>>> "target":"iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.edb1a004dc57",
>>> "target_type":"iscsi"
>>> }
>>> ]
>>>
>>> Signed-off-by: ShaoHe Feng <shaohef at linux.vnet.ibm.com>
>>> ---
>>> src/kimchi/API.json | 2 +-
>>> src/kimchi/model/storagetargets.py | 13 ++++++++++---
>>> 2 files changed, 11 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/src/kimchi/API.json b/src/kimchi/API.json
>>> index 05a5866..cea4344 100644
>>> --- a/src/kimchi/API.json
>>> +++ b/src/kimchi/API.json
>>> @@ -428,7 +428,7 @@
>>> "_target_type": {
>>> "description": "List storage servers of given type",
>>> "type": "string",
>>> - "pattern": "^netfs$"
>>> + "pattern": "^netfs|iscsi$"
>>> }
>>> },
>>> "additionalProperties": false,
>>> diff --git a/src/kimchi/model/storagetargets.py 
>>> b/src/kimchi/model/storagetargets.py
>>> index caa8dbe..139da55 100644
>>> --- a/src/kimchi/model/storagetargets.py
>>> +++ b/src/kimchi/model/storagetargets.py
>>> @@ -64,8 +64,12 @@ class StorageTargetsModel(object):
>>> # server:
>>> # target_type:
>>> extra_args = []
>>> - if kwargs['target_type'] == 'netfs':
>>> + server_type = kwargs['target_type']
>>> + if server_type == 'netfs':
>>> extra_args.append(E.format(type='nfs'))
>>> + else:
>>> + extra_args.append(E.format(type=server_type))
>> I think it could be
>>
>> if server_type == 'netfs':
>> server_type = 'nfs'
>>
>> extra_args.append(E.format(type=server_type))
>>
>>> +
>>> obj = E.source(E.host(name=kwargs['server']), *extra_args)
>>> xml = ET.tostring(obj)
>>> return xml
>>> @@ -75,9 +79,12 @@ class StorageTargetsModel(object):
>>> ret = []
>>> for source in root.getchildren():
>>> if target_type == 'netfs':
>>> - host_name = source.host.get('name')
>>> target_path = source.dir.get('path')
>>> type = source.format.get('type')
>>> - ret.append(dict(host=host_name, target_type=type,
>>> + if target_type == 'iscsi':
>> It seems "elif" is better than "if" here.
>>
>>> + target_path = source.device.get('path')
>>> + type = target_type
>>> + host_name = source.host.get('name')
>>> + ret.append(dict(host=host_name, target_type=type,
>>> target=target_path))
>>> return ret
>>>
>>
>
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>




More information about the Kimchi-devel mailing list