]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Adds support for pool/image names with dots 26503/head
authorRicardo Marques <rimarques@suse.com>
Tue, 19 Feb 2019 09:32:27 +0000 (09:32 +0000)
committerRicardo Marques <rimarques@suse.com>
Tue, 12 Mar 2019 09:39:32 +0000 (09:39 +0000)
According to https://github.com/ceph/ceph-iscsi/pull/29

Signed-off-by: Ricardo Marques <rimarques@suse.com>
src/pybind/mgr/dashboard/controllers/iscsi.py
src/pybind/mgr/dashboard/services/iscsi_client.py
src/pybind/mgr/dashboard/tests/test_iscsi.py

index f67037cab0b304b46122ef924f01479be6cc57d7..993b979110a0d17a5ba50a9facc1c0e3bda633ea 100644 (file)
@@ -214,7 +214,8 @@ class IscsiTarget(RESTController):
                                                          new_disks, image_id):
                 IscsiClient.instance(gateway_name=gateway_name).delete_target_lun(target_iqn,
                                                                                   image_id)
-                IscsiClient.instance(gateway_name=gateway_name).delete_disk(image_id)
+                pool, image = image_id.split('/', 1)
+                IscsiClient.instance(gateway_name=gateway_name).delete_disk(pool, image)
             TaskManager.current_task().inc_progress(task_progress_inc)
         if IscsiTarget._target_deletion_required(target, new_target_iqn, new_target_controls,
                                                  new_portals):
@@ -396,16 +397,19 @@ class IscsiTarget(RESTController):
             for disk in disks:
                 pool = disk['pool']
                 image = disk['image']
-                image_id = '{}.{}'.format(pool, image)
+                image_id = '{}/{}'.format(pool, image)
                 if image_id not in config['disks']:
                     backstore = disk['backstore']
-                    IscsiClient.instance(gateway_name=gateway_name).create_disk(image_id, backstore)
+                    IscsiClient.instance(gateway_name=gateway_name).create_disk(pool,
+                                                                                image,
+                                                                                backstore)
                 if not target_config or image_id not in target_config['disks']:
                     IscsiClient.instance(gateway_name=gateway_name).create_target_lun(target_iqn,
                                                                                       image_id)
                     controls = disk['controls']
                     if controls:
-                        IscsiClient.instance(gateway_name=gateway_name).reconfigure_disk(image_id,
+                        IscsiClient.instance(gateway_name=gateway_name).reconfigure_disk(pool,
+                                                                                         image,
                                                                                          controls)
                 TaskManager.current_task().inc_progress(task_progress_inc)
             for client in clients:
@@ -416,7 +420,7 @@ class IscsiTarget(RESTController):
                     for lun in client['luns']:
                         pool = lun['pool']
                         image = lun['image']
-                        image_id = '{}.{}'.format(pool, image)
+                        image_id = '{}/{}'.format(pool, image)
                         IscsiClient.instance(gateway_name=gateway_name).create_client_lun(
                             target_iqn, client_iqn, image_id)
                     user = client['auth']['user']
@@ -433,7 +437,7 @@ class IscsiTarget(RESTController):
                 members = group['members']
                 image_ids = []
                 for disk in group['disks']:
-                    image_ids.append('{}.{}'.format(disk['pool'], disk['image']))
+                    image_ids.append('{}/{}'.format(disk['pool'], disk['image']))
                 if not target_config or group_id not in target_config['groups']:
                     IscsiClient.instance(gateway_name=gateway_name).create_group(
                         target_iqn, group_id, members, image_ids)
@@ -480,7 +484,7 @@ class IscsiTarget(RESTController):
         for client_iqn, client_config in target_config['clients'].items():
             luns = []
             for client_lun in client_config['luns'].keys():
-                pool, image = client_lun.split('.', 1)
+                pool, image = client_lun.split('/', 1)
                 lun = {
                     'pool': pool,
                     'image': image
@@ -510,7 +514,7 @@ class IscsiTarget(RESTController):
         for group_id, group_config in target_config['groups'].items():
             group_disks = []
             for group_disk_key, _ in group_config['disks'].items():
-                pool, image = group_disk_key.split('.', 1)
+                pool, image = group_disk_key.split('/', 1)
                 group_disk = {
                     'pool': pool,
                     'image': image
index cbbc14af3bd6d5ec350948039c1117eb512ff47e..906d0e2412249efe63b300e8be53c31efb2f0460 100644 (file)
@@ -90,24 +90,24 @@ class IscsiClient(RestClient):
             'skipchecks': 'true'
         })
 
-    @RestClient.api_put('/api/disk/{image_id}')
-    def create_disk(self, image_id, backstore, request=None):
-        logger.debug("iSCSI: Creating disk: %s", image_id)
+    @RestClient.api_put('/api/disk/{pool}/{image}')
+    def create_disk(self, pool, image, backstore, request=None):
+        logger.debug("iSCSI: Creating disk: %s/%s", pool, image)
         return request({
             'mode': 'create',
             'backstore': backstore
         })
 
-    @RestClient.api_delete('/api/disk/{image_id}')
-    def delete_disk(self, image_id, request=None):
-        logger.debug("iSCSI: Deleting disk: %s", image_id)
+    @RestClient.api_delete('/api/disk/{pool}/{image}')
+    def delete_disk(self, pool, image, request=None):
+        logger.debug("iSCSI: Deleting disk: %s/%s", pool, image)
         return request({
             'preserve_image': 'true'
         })
 
-    @RestClient.api_put('/api/disk/{image_id}')
-    def reconfigure_disk(self, image_id, controls, request=None):
-        logger.debug("iSCSI: Reconfiguring disk: %s", image_id)
+    @RestClient.api_put('/api/disk/{pool}/{image}')
+    def reconfigure_disk(self, pool, image, controls, request=None):
+        logger.debug("iSCSI: Reconfiguring disk: %s/%s", pool, image)
         return request({
             'controls': json.dumps(controls),
             'mode': 'reconfigure'
index dd37547e2aa55a65e72283dafbaf001f45f185ee..3c70589abcc66acfbc8a4760fbb6349e882509c6 100644 (file)
@@ -480,8 +480,8 @@ class IscsiClientMock(object):
             "portal_ip_address": ip_address[0]
         }
 
-    def create_disk(self, image_id, backstore):
-        pool, image = image_id.split('.')
+    def create_disk(self, pool, image, backstore):
+        image_id = '{}/{}'.format(pool, image)
         self.config['disks'][image_id] = {
             "pool": pool,
             "image": image,
@@ -494,7 +494,8 @@ class IscsiClientMock(object):
         target_config['disks'].append(image_id)
         self.config['disks'][image_id]['owner'] = list(target_config['portals'].keys())[0]
 
-    def reconfigure_disk(self, image_id, controls):
+    def reconfigure_disk(self, pool, image, controls):
+        image_id = '{}/{}'.format(pool, image)
         self.config['disks'][image_id]['controls'] = controls
 
     def create_client(self, target_iqn, client_iqn):
@@ -540,7 +541,8 @@ class IscsiClientMock(object):
         target_config['disks'].remove(image_id)
         del self.config['disks'][image_id]['owner']
 
-    def delete_disk(self, image_id):
+    def delete_disk(self, pool, image):
+        image_id = '{}/{}'.format(pool, image)
         del self.config['disks'][image_id]
 
     def delete_target(self, target_iqn):