[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