diff --git a/cinder/tests/unit/volume/drivers/dell_emc/test_vmax.py b/cinder/tests/unit/volume/drivers/dell_emc/test_vmax.py index 58735365f..355fe5202 100644 --- a/cinder/tests/unit/volume/drivers/dell_emc/test_vmax.py +++ b/cinder/tests/unit/volume/drivers/dell_emc/test_vmax.py @@ -293,6 +293,7 @@ class VMAXCommonData(object): storage_system = 'SYMMETRIX+000195900551' storage_system_v3 = 'SYMMETRIX-+-000197200056' port_group = 'OS-portgroup-PG' + port_group_instance = {'ElementName': 'OS-portgroup-PG'} lunmaskctrl_id = ( 'SYMMETRIX+000195900551+OS-fakehost-gold-I-MV') lunmaskctrl_name = ( @@ -8325,6 +8326,57 @@ class VMAXMaskingTest(test.TestCase): self.assertIsNone(sgFromMvInstanceName) self.assertIsNotNone(msg) + @mock.patch.object( + masking.VMAXMasking, + '_get_port_group_from_masking_view', + return_value=VMAXCommonData.port_group) + def test_get_port_group_name_from_mv_success(self, mock_pg_name): + masking = self.driver.common.masking + conn = self.fake_ecom_connection() + mv_name = self.data.lunmaskctrl_name + system_name = self.data.storage_system + + conn.GetInstance = mock.Mock( + return_value=self.data.port_group_instance) + pg_name, err_msg = ( + masking._get_port_group_name_from_mv(conn, mv_name, system_name)) + + self.assertIsNone(err_msg) + self.assertIsNotNone(pg_name) + + @mock.patch.object( + masking.VMAXMasking, + '_get_port_group_from_masking_view', + return_value=None) + def test_get_port_group_name_from_mv_fail_1(self, mock_pg_name): + masking = self.driver.common.masking + conn = self.fake_ecom_connection() + mv_name = self.data.lunmaskctrl_name + system_name = self.data.storage_system + + pg_name, err_msg = ( + masking._get_port_group_name_from_mv(conn, mv_name, system_name)) + + self.assertIsNone(pg_name) + self.assertIsNotNone(err_msg) + + @mock.patch.object( + masking.VMAXMasking, + '_get_port_group_from_masking_view', + return_value=VMAXCommonData.port_group) + def test_get_port_group_name_from_mv_fail_2(self, mock_pg_name): + masking = self.driver.common.masking + conn = self.fake_ecom_connection() + mv_name = self.data.lunmaskctrl_name + system_name = self.data.storage_system + + conn.GetInstance = mock.Mock(return_value={}) + pg_name, err_msg = ( + masking._get_port_group_name_from_mv(conn, mv_name, system_name)) + + self.assertIsNone(pg_name) + self.assertIsNotNone(err_msg) + class VMAXFCTest(test.TestCase): def setUp(self): diff --git a/cinder/volume/drivers/dell_emc/vmax/masking.py b/cinder/volume/drivers/dell_emc/vmax/masking.py index 3264e72e9..cc3361180 100644 --- a/cinder/volume/drivers/dell_emc/vmax/masking.py +++ b/cinder/volume/drivers/dell_emc/vmax/masking.py @@ -2816,10 +2816,10 @@ class VMAXMasking(object): self._get_port_group_from_masking_view( conn, maskingViewName, storageSystemName)) if portGroupInstanceName is None: - LOG.error( - "Cannot get port group from masking view: " - "%(maskingViewName)s.", - {'maskingViewName': maskingViewName}) + errorMessage = ("Cannot get port group from masking view: " + "%(maskingViewName)s." % + {'maskingViewName': maskingViewName}) + LOG.error(errorMessage) else: try: portGroupInstance = ( @@ -2827,8 +2827,8 @@ class VMAXMasking(object): portGroupName = ( portGroupInstance['ElementName']) except Exception: - LOG.error( - "Cannot get port group name.") + errorMessage = ("Cannot get port group name.") + LOG.error(errorMessage) return portGroupName, errorMessage @coordination.synchronized('emc-sg-'