Beispiel #1
0
class VnxBlockStorDriver(driver.StorageDriver):
    """VnxBlockStorDriver implement EMC VNX Stor driver"""
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.navi_handler = NaviHandler(**kwargs)
        self.version = self.navi_handler.login()
        self.com_handler = ComponentHandler(self.navi_handler)
        self.alert_handler = AlertHandler(self.navi_handler)

    def reset_connection(self, context, **kwargs):
        self.navi_handler.remove_cer()
        self.navi_handler.verify = kwargs.get('verify', False)
        self.navi_handler.login()

    def close_connection(self):
        pass

    def get_storage(self, context):
        return self.com_handler.get_storage()

    def list_storage_pools(self, context):
        return self.com_handler.list_storage_pools(self.storage_id)

    def list_volumes(self, context):
        return self.com_handler.list_volumes(self.storage_id)

    def list_alerts(self, context, query_para=None):
        return self.alert_handler.list_alerts(query_para)

    def list_controllers(self, context):
        """List all storage controllers from storage system."""
        pass

    def list_ports(self, context):
        """List all ports from storage system."""
        pass

    def list_disks(self, context):
        """List all disks from storage system."""
        pass

    def add_trap_config(self, context, trap_config):
        pass

    def remove_trap_config(self, context, trap_config):
        pass

    @staticmethod
    def parse_alert(context, alert):
        return AlertHandler.parse_alert(alert)

    def clear_alert(self, context, sequence_number):
        pass

    @staticmethod
    def get_access_url():
        return 'https://{ip}'
Beispiel #2
0
 def test_analyse_cer(self):
     re_map = {
         '1.1.1.1': {
             'subject': 'CN=TrustedRoot,C=US,ST=MA,L=Hopkinton,'
             '[email protected],OU=CSP,O=RSA',
             'issuer': '1.1.1.1',
             'serial#': '00d8280b0c863f6d4e',
             'valid_from': '20090407135111Z',
             'valid_to': '20190405135111Z'
         }
     }
     navi_handler = NaviHandler(**ACCESS_INFO)
     cer_map = navi_handler.analyse_cer(CER_INFOS, host_ip='1.1.1.1')
     self.assertDictEqual(cer_map, re_map)
Beispiel #3
0
 def __init__(self, **kwargs):
     super().__init__(**kwargs)
     self.navi_handler = NaviHandler(**kwargs)
     self.version = self.navi_handler.login()
     self.com_handler = ComponentHandler(self.navi_handler)
Beispiel #4
0
 def test_get_resources_info_exception(self):
     with self.assertRaises(Exception) as exc:
         NaviClient.exec = mock.Mock(side_effect=[LUN_INFOS])
         navi_handler = NaviHandler(**ACCESS_INFO)
         navi_handler.get_resources_info('abc', None)
     self.assertIn('object is not callable', str(exc.exception))
Beispiel #5
0
 def test_analyse_cer_exception(self):
     with self.assertRaises(Exception) as exc:
         navi_handler = NaviHandler(**ACCESS_INFO)
         navi_handler.analyse_cer(CER_INFOS)
     self.assertIn('arrange cer info error', str(exc.exception))
Beispiel #6
0
 def test_err_cli_res_to_list(self):
     with self.assertRaises(Exception) as exc:
         navi_handler = NaviHandler(**ACCESS_INFO)
         navi_handler.cli_res_to_list({})
     self.assertIn('cli resource to list error', str(exc.exception))
Beispiel #7
0
 def test_err_cli_res_to_dict(self):
     with self.assertRaises(Exception) as exc:
         navi_handler = NaviHandler(**ACCESS_INFO)
         navi_handler.cli_res_to_dict({})
     self.assertIn('arrange resource info error', str(exc.exception))
Beispiel #8
0
 def test_remove_cer(self, mock_exec):
     navi_handler = NaviHandler(**ACCESS_INFO)
     navi_handler.remove_cer()
     self.assertEqual(mock_exec.call_count, 1)
Beispiel #9
0
 def test_init_cli(self, mock_exec):
     mock_exec.return_value = 'test'
     navi_handler = NaviHandler(**ACCESS_INFO)
     re = navi_handler.navi_exe('abc')
     self.assertEqual(re, 'test')
     self.assertEqual(mock_exec.call_count, 1)
Beispiel #10
0
 def test_cli_lun_to_list(self):
     navi_handler = NaviHandler(**ACCESS_INFO)
     re_list = navi_handler.cli_lun_to_list(GET_ALL_LUN_INFOS)
     self.assertDictEqual(re_list[0], ALL_LUN_RESULT[0])
Beispiel #11
0
 def test_cli_domain_to_dict(self):
     navi_handler = NaviHandler(**ACCESS_INFO)
     re_list = navi_handler.cli_domain_to_dict(DOMAIN_INFOS)
     self.assertDictEqual(re_list[0], DOMAIN_RESULT[0])
Beispiel #12
0
 def test_cli_res_to_list(self):
     navi_handler = NaviHandler(**ACCESS_INFO)
     re_list = navi_handler.cli_res_to_list(POOL_INFOS)
     self.assertDictEqual(re_list[0], POOLS_ANALYSE_RESULT[0])
Beispiel #13
0
 def test_cli_res_to_dict(self):
     navi_handler = NaviHandler(**ACCESS_INFO)
     agent_re = navi_handler.cli_res_to_dict(AGENT_INFOS)
     self.assertDictEqual(agent_re, AGENT_RESULT)
Beispiel #14
0
class VnxBlockStorDriver(driver.StorageDriver):
    """VnxBlockStorDriver implement EMC VNX Stor driver"""
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.navi_handler = NaviHandler(**kwargs)
        self.version = self.navi_handler.login()
        self.com_handler = ComponentHandler(self.navi_handler)

    def reset_connection(self, context, **kwargs):
        self.navi_handler.remove_cer()
        self.navi_handler.verify = kwargs.get('verify', False)
        self.navi_handler.login()

    def close_connection(self):
        pass

    def get_storage(self, context):
        return self.com_handler.get_storage()

    def list_storage_pools(self, context):
        return self.com_handler.list_storage_pools(self.storage_id)

    def list_volumes(self, context):
        return self.com_handler.list_volumes(self.storage_id)

    def list_alerts(self, context, query_para=None):
        raise NotImplementedError(
            "Driver API list_alerts() is not Implemented")

    def list_controllers(self, context):
        return self.com_handler.list_controllers(self.storage_id)

    def list_ports(self, context):
        return self.com_handler.list_ports(self.storage_id)

    def list_disks(self, context):
        return self.com_handler.list_disks(self.storage_id)

    def add_trap_config(self, context, trap_config):
        pass

    def remove_trap_config(self, context, trap_config):
        pass

    @staticmethod
    def parse_alert(context, alert):
        return AlertHandler.parse_alert(alert)

    def clear_alert(self, context, sequence_number):
        pass

    @staticmethod
    def get_access_url():
        return 'https://{ip}'

    def list_storage_host_initiators(self, context):
        return self.com_handler.list_storage_host_initiators(self.storage_id)

    def list_storage_hosts(self, context):
        return self.com_handler.list_storage_hosts(self.storage_id)

    def list_masking_views(self, context):
        return self.com_handler.list_masking_views(self.storage_id)

    def collect_perf_metrics(self, context, storage_id, resource_metrics,
                             start_time, end_time):
        return self.com_handler.collect_perf_metrics(storage_id,
                                                     resource_metrics,
                                                     start_time, end_time)

    @staticmethod
    def get_capabilities(context, filters=None):
        """Get capability of supported driver"""
        return {
            'is_historic': True,
            'resource_metrics': {
                constants.ResourceType.CONTROLLER: consts.CONTROLLER_CAP,
                constants.ResourceType.VOLUME: consts.VOLUME_CAP,
                constants.ResourceType.PORT: consts.PORT_CAP,
                constants.ResourceType.DISK: consts.DISK_CAP
            }
        }

    def get_latest_perf_timestamp(self, context):
        return self.com_handler.get_latest_perf_timestamp(self.storage_id)
Beispiel #15
0
 def test_cli_log_to_list(self):
     navi_handler = NaviHandler(**ACCESS_INFO)
     re_list = navi_handler.cli_log_to_list(LOG_INFOS)
     LOG_RESULT[0]['log_time_stamp'] = re_list[0]['log_time_stamp']
     self.assertDictEqual(re_list[0], LOG_RESULT[0])