[Kimchi-devel] [PATCH 2/2] List iSCSI targets available for initiator while creating iSCSI Pool
Zhou Zheng Sheng
zhshzhou at linux.vnet.ibm.com
Wed May 28 03:46:31 UTC 2014
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.
> 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
>
--
Zhou Zheng Sheng / 周征晟
E-mail: zhshzhou at linux.vnet.ibm.com
Telephone: 86-10-82454397
More information about the Kimchi-devel
mailing list