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}'
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)
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 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))
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))
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))
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))
def test_remove_cer(self, mock_exec): navi_handler = NaviHandler(**ACCESS_INFO) navi_handler.remove_cer() self.assertEqual(mock_exec.call_count, 1)
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)
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])
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])
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])
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)
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)
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])