From c20778fe6bead5aed4ceb541336f757d0d25fda6 Mon Sep 17 00:00:00 2001 From: Vipin Balachandran Date: Mon, 23 Nov 2015 16:54:13 +0530 Subject: [PATCH] VMware: Skip unsupported datastore types vCenter supports different types of datastores such as VMFS, NFS etc. Currently the VMDK driver supports only vSAN, VMFS and NFS datastores for storing volume vmdks. This patch adds a check to skip unsupported datastore types during volume creation. Closes-bug: #1519316 Change-Id: I314abbe0de09bb304859c72b27054784eeef9044 --- cinder/tests/unit/test_vmware_datastore.py | 15 +++++++++++++++ cinder/volume/drivers/vmware/datastore.py | 1 + 2 files changed, 16 insertions(+) diff --git a/cinder/tests/unit/test_vmware_datastore.py b/cinder/tests/unit/test_vmware_datastore.py index 56ee991bd..03468edc8 100644 --- a/cinder/tests/unit/test_vmware_datastore.py +++ b/cinder/tests/unit/test_vmware_datastore.py @@ -71,6 +71,21 @@ class DatastoreTest(test.TestCase): host.value = value return host + def test_filter_datastores_with_unsupported_type(self): + ds_1 = self._create_datastore('ds-1') + ds_2 = self._create_datastore('ds-2') + datastores = [ds_1, ds_2] + + self._vops.get_summary.side_effect = [ + self._create_summary(ds_1), + self._create_summary(ds_2, _type='foo')] + + res = self._ds_sel._filter_datastores( + datastores, units.Ki, None, None, None) + + self.assertEqual(1, len(res)) + self.assertEqual(ds_1, res[0].datastore) + @mock.patch('cinder.volume.drivers.vmware.datastore.DatastoreSelector.' '_filter_by_profile') def test_filter_datastores(self, filter_by_profile): diff --git a/cinder/volume/drivers/vmware/datastore.py b/cinder/volume/drivers/vmware/datastore.py index 3f5f126fb..e2a46a5a5 100644 --- a/cinder/volume/drivers/vmware/datastore.py +++ b/cinder/volume/drivers/vmware/datastore.py @@ -115,6 +115,7 @@ class DatastoreSelector(object): return [summary for summary in filtered_summaries if (summary.freeSpace > size_bytes and + summary.type.lower() in DatastoreType.get_all_types() and (hard_affinity_ds_types is None or summary.type.lower() in hard_affinity_ds_types))] -- 2.45.2