on 2014/05/27 23:33, shaohef(a)linux.vnet.ibm.com wrote:
From: ShaoHe Feng <shaohef(a)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_ty...
[
{
"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(a)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(a)linux.vnet.ibm.com
Telephone: 86-10-82454397