From 7b0d2a49f7d6401034398f51d5ce8b9d33347b42 Mon Sep 17 00:00:00 2001 From: yuanyu Date: Wed, 16 Nov 2022 11:02:17 +0800 Subject: [PATCH 1/8] hpe 3par add cpu count vnx block add cpu count --- .../vnx/vnx_block/component_handler.py | 6 ++-- .../drivers/hpe/hpe_3par/component_handler.py | 4 +++ delfin/drivers/hpe/hpe_3par/consts.py | 4 +-- delfin/drivers/hpe/hpe_3par/ssh_handler.py | 32 ++++++++++++------- .../dell_emc/vnx/vnx_block/test_vnx_block.py | 1 + .../drivers/hpe/hpe_3par/test_hpe_3parstor.py | 1 + 6 files changed, 33 insertions(+), 15 deletions(-) diff --git a/delfin/drivers/dell_emc/vnx/vnx_block/component_handler.py b/delfin/drivers/dell_emc/vnx/vnx_block/component_handler.py index fe3dbf6a3..c9e5c09c2 100644 --- a/delfin/drivers/dell_emc/vnx/vnx_block/component_handler.py +++ b/delfin/drivers/dell_emc/vnx/vnx_block/component_handler.py @@ -306,18 +306,20 @@ def list_controllers(self, storage_id): memory_size = int(controller.get('memory_size_for_the_sp', '0')) * units.Mi cpu_info = '' + cpu_count = None if cpus: cpu_info = cpus.get( controller.get('serial_number_for_the_sp', ''), '') + cpu_count = 1 controller_model = { 'name': controller.get('sp_name'), 'storage_id': storage_id, 'native_controller_id': controller.get('signature_for_the_sp'), 'status': constants.ControllerStatus.NORMAL, 'location': None, - 'soft_version': controller.get( - 'revision_number_for_the_sp'), + 'soft_version': controller.get('revision_number_for_the_sp'), 'cpu_info': cpu_info, + 'cpu_count': cpu_count, 'memory_size': str(memory_size) } controller_list.append(controller_model) diff --git a/delfin/drivers/hpe/hpe_3par/component_handler.py b/delfin/drivers/hpe/hpe_3par/component_handler.py index 66dd7ff82..e8542a306 100644 --- a/delfin/drivers/hpe/hpe_3par/component_handler.py +++ b/delfin/drivers/hpe/hpe_3par/component_handler.py @@ -233,7 +233,9 @@ def list_controllers(self, storage_id): '0')) * units.Mi + int( controller.get('datamem(mb)', '0')) * units.Mi cpu_info = '' + cpu_count = None if node_cpu_map and node_cpu_map.get(node_id): + cpu_count = 0 cpu_info_map = node_cpu_map.get(node_id) cpu_info_keys = list(cpu_info_map.keys()) for cpu_key in cpu_info_keys: @@ -241,6 +243,7 @@ def list_controllers(self, storage_id): cpu_info = '%s%s' % (cpu_info, ',') cpu_info = '%s%s * %s MHz' % ( cpu_info, cpu_info_map.get(cpu_key), cpu_key) + cpu_count += cpu_info_map.get(cpu_key) soft_version = None if node_version_map: soft_version = node_version_map.get(node_id, '') @@ -254,6 +257,7 @@ def list_controllers(self, storage_id): 'location': None, 'soft_version': soft_version, 'cpu_info': cpu_info, + 'cpu_count': cpu_count, 'memory_size': str(memory_size) } controller_list.append(controller_model) diff --git a/delfin/drivers/hpe/hpe_3par/consts.py b/delfin/drivers/hpe/hpe_3par/consts.py index 8cabc8957..b3f3b56ed 100644 --- a/delfin/drivers/hpe/hpe_3par/consts.py +++ b/delfin/drivers/hpe/hpe_3par/consts.py @@ -631,8 +631,8 @@ '0x0a50001': 'File Access Auditing Alerts' } NODE_PATTERN = "^\\s*Node\\s+[-]*Name[-]*\\s+[-]*State[-]*\\s+" -CPU_PATTERN = "^\\s*Node\\s+CPU\\s+[-]*Manufacturer[-]*\\s+[-]*Serial[-]*" \ - "\\s+CPUSpeed" +CPU_PATTERN = "^\\s*Node\\s+CPU" + DISK_PATTERN = "^\\s*Id\\s+[-]*CagePos[-]*\\s+[-]*Type[-]*\\s+RPM\\s+State\\s+" DISK_I_PATTERN = "^\\s*Id\\s+[-]*CagePos[-]*\\s+[-]*State[-]*\\s+" \ "[-]*Node_WWN[-]*\\s+[-]*MFR[-]*\\s+[-]*Model[-]*\\s+" \ diff --git a/delfin/drivers/hpe/hpe_3par/ssh_handler.py b/delfin/drivers/hpe/hpe_3par/ssh_handler.py index 47003de22..648a570b9 100644 --- a/delfin/drivers/hpe/hpe_3par/ssh_handler.py +++ b/delfin/drivers/hpe/hpe_3par/ssh_handler.py @@ -57,7 +57,6 @@ class SSHHandler(object): HPE3PAR_COMMAND_SHOWVV = 'showvv' HPE3PAR_COMMAND_SHOWVLUN_T = 'showvlun -t' - HPE3PAR_COMMAND_SHOWVV = 'showvv' HPE3PAR_COMMAND_SRSTATPORT = 'srstatport -attime -groupby ' \ 'PORT_N,PORT_S,PORT_P -btsecs %d -etsecs %d' HPE3PAR_COMMAND_SRSTATPD = 'srstatpd -attime -btsecs %d -etsecs %d' @@ -355,6 +354,7 @@ def parse_datas_to_list(self, resource_info, pattern_str, para_map=None): def parse_datas_to_map(self, resource_info, pattern_str, para_map=None): obj_model = {} + titles = [] titles_size = 9999 try: pattern = re.compile(pattern_str) @@ -374,7 +374,8 @@ def parse_datas_to_map(self, resource_info, pattern_str, para_map=None): obj_model = self.parse_node_cpu(cols_size, titles_size, str_info, - obj_model) + obj_model, + titles) else: if cols_size >= titles_size: key_position = para_map.get('key_position') @@ -421,17 +422,26 @@ def parse_node_table(self, cols_size, titles_size, str_info, obj_list, obj_list.append(obj_model) return obj_list - def parse_node_cpu(self, cols_size, titles_size, str_info, obj_map): + def parse_node_cpu(self, cols_size, titles_size, str_info, obj_map, + titles): if cols_size >= titles_size: - node_id = str_info[0] - cpu_info = str_info[4] - if obj_map.get(node_id): - obj_map[node_id][cpu_info] = obj_map.get(node_id).get( - cpu_info, 0) + 1 + if 'Cores' in titles: + node_id = str_info[0] + cpu_info = ' '.join(str_info[5:]) + if obj_map.get(node_id): + obj_map[node_id][cpu_info] = int(str_info[2]) + else: + obj_map[node_id] = {cpu_info: int(str_info[2])} else: - cpu_info_map = {} - cpu_info_map[cpu_info] = 1 - obj_map[node_id] = cpu_info_map + node_id = str_info[0] + cpu_info = str_info[4] + if obj_map.get(node_id): + obj_map[node_id][cpu_info] = obj_map.get(node_id).get( + cpu_info, 0) + 1 + else: + cpu_info_map = {} + cpu_info_map[cpu_info] = 1 + obj_map[node_id] = cpu_info_map return obj_map def parse_metric_table(self, cols_size, titles_size, str_info, diff --git a/delfin/tests/unit/drivers/dell_emc/vnx/vnx_block/test_vnx_block.py b/delfin/tests/unit/drivers/dell_emc/vnx/vnx_block/test_vnx_block.py index 0bbdfcefa..7ba49d4c1 100644 --- a/delfin/tests/unit/drivers/dell_emc/vnx/vnx_block/test_vnx_block.py +++ b/delfin/tests/unit/drivers/dell_emc/vnx/vnx_block/test_vnx_block.py @@ -577,6 +577,7 @@ 'location': None, 'soft_version': '05.33.000.5.038', 'cpu_info': 'JFSP 1.8GHZ 4C CPU GEN3', + 'cpu_count': 1, 'memory_size': '17179869184' }, { diff --git a/delfin/tests/unit/drivers/hpe/hpe_3par/test_hpe_3parstor.py b/delfin/tests/unit/drivers/hpe/hpe_3par/test_hpe_3parstor.py index a5686aa04..c56546950 100644 --- a/delfin/tests/unit/drivers/hpe/hpe_3par/test_hpe_3parstor.py +++ b/delfin/tests/unit/drivers/hpe/hpe_3par/test_hpe_3parstor.py @@ -1983,6 +1983,7 @@ def __init__(self): 'location': None, 'soft_version': '3.2.2.204', 'cpu_info': '4 * 2327 MHz', + 'cpu_count': 4, 'memory_size': '10737418240' }] DISK_RESULT = [ From 3e0125c8bb74155b91329eb6d293e91ad89c789b Mon Sep 17 00:00:00 2001 From: tanjy Date: Thu, 17 Nov 2022 10:41:06 +0800 Subject: [PATCH 2/8] svc add controller cpu count --- delfin/drivers/ibm/storwize_svc/ssh_handler.py | 4 +++- .../unit/drivers/ibm/storwize_svc/test_ibm_storwize_svc.py | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/delfin/drivers/ibm/storwize_svc/ssh_handler.py b/delfin/drivers/ibm/storwize_svc/ssh_handler.py index 7f00bed35..83f07363f 100644 --- a/delfin/drivers/ibm/storwize_svc/ssh_handler.py +++ b/delfin/drivers/ibm/storwize_svc/ssh_handler.py @@ -519,6 +519,7 @@ def list_controllers(self, storage_id): cpu_info = self.exec_ssh_command(cpu_cmd) self.handle_detail(cpu_info, cpu_map, split=',') cpu_actual = cpu_map.get('cpu_actual') + cpu_count = cpu_map.get('cpu_count') status = SSHHandler.CONTRL_STATUS_MAP.get( control_map.get('status'), constants.ControllerStatus.UNKNOWN) @@ -530,7 +531,8 @@ def list_controllers(self, storage_id): 'soft_version': control_map.get('code_level', '').split(' ')[0], 'location': control_map.get('name'), - 'cpu_info': cpu_actual + 'cpu_info': cpu_actual, + 'cpu_count': int(cpu_count) } controller_list.append(controller_result) return controller_list diff --git a/delfin/tests/unit/drivers/ibm/storwize_svc/test_ibm_storwize_svc.py b/delfin/tests/unit/drivers/ibm/storwize_svc/test_ibm_storwize_svc.py index 67f1be9c1..7016e43e0 100644 --- a/delfin/tests/unit/drivers/ibm/storwize_svc/test_ibm_storwize_svc.py +++ b/delfin/tests/unit/drivers/ibm/storwize_svc/test_ibm_storwize_svc.py @@ -527,7 +527,8 @@ def __init__(self): 'status': 'normal', 'soft_version': '7.8.1.11', 'location': 'node_165084', - 'cpu_info': '6 core Intel(R) Xeon(R) CPU E5645 @ 2.40GHz' + 'cpu_info': '6 core Intel(R) Xeon(R) CPU E5645 @ 2.40GHz', + 'cpu_count': 1 } ] From e7579dd8847cb9188b83383620b4b8f9134e95cc Mon Sep 17 00:00:00 2001 From: yuanyu Date: Thu, 17 Nov 2022 15:31:09 +0800 Subject: [PATCH 3/8] modified --- .../dell_emc/vnx/vnx_block/component_handler.py | 5 +++-- delfin/drivers/hpe/hpe_3par/ssh_handler.py | 10 +++------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/delfin/drivers/dell_emc/vnx/vnx_block/component_handler.py b/delfin/drivers/dell_emc/vnx/vnx_block/component_handler.py index c9e5c09c2..dbc09560c 100644 --- a/delfin/drivers/dell_emc/vnx/vnx_block/component_handler.py +++ b/delfin/drivers/dell_emc/vnx/vnx_block/component_handler.py @@ -306,11 +306,12 @@ def list_controllers(self, storage_id): memory_size = int(controller.get('memory_size_for_the_sp', '0')) * units.Mi cpu_info = '' - cpu_count = None + cpu_count = 1 if cpus: cpu_info = cpus.get( controller.get('serial_number_for_the_sp', ''), '') - cpu_count = 1 + if not cpu_info: + cpu_count = None controller_model = { 'name': controller.get('sp_name'), 'storage_id': storage_id, diff --git a/delfin/drivers/hpe/hpe_3par/ssh_handler.py b/delfin/drivers/hpe/hpe_3par/ssh_handler.py index 648a570b9..cf64a47b6 100644 --- a/delfin/drivers/hpe/hpe_3par/ssh_handler.py +++ b/delfin/drivers/hpe/hpe_3par/ssh_handler.py @@ -428,10 +428,8 @@ def parse_node_cpu(self, cols_size, titles_size, str_info, obj_map, if 'Cores' in titles: node_id = str_info[0] cpu_info = ' '.join(str_info[5:]) - if obj_map.get(node_id): - obj_map[node_id][cpu_info] = int(str_info[2]) - else: - obj_map[node_id] = {cpu_info: int(str_info[2])} + cpu_map = obj_map.setdefault(node_id, {}) + cpu_map[cpu_info] = int(str_info[2]) else: node_id = str_info[0] cpu_info = str_info[4] @@ -439,9 +437,7 @@ def parse_node_cpu(self, cols_size, titles_size, str_info, obj_map, obj_map[node_id][cpu_info] = obj_map.get(node_id).get( cpu_info, 0) + 1 else: - cpu_info_map = {} - cpu_info_map[cpu_info] = 1 - obj_map[node_id] = cpu_info_map + obj_map[node_id] = {cpu_info: 1} return obj_map def parse_metric_table(self, cols_size, titles_size, str_info, From 5f229d83daa083c8d9fd970e971353751e999b2f Mon Sep 17 00:00:00 2001 From: "jiagen.luo" Date: Thu, 17 Nov 2022 16:08:54 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9MSA=E7=9A=84CPU=E4=B8=AA?= =?UTF-8?q?=E6=95=B0=E4=B8=BA=E9=BB=98=E8=AE=A4=E5=80=BC1=E4=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- delfin/drivers/hpe/hpe_msa/ssh_handler.py | 1 + 1 file changed, 1 insertion(+) diff --git a/delfin/drivers/hpe/hpe_msa/ssh_handler.py b/delfin/drivers/hpe/hpe_msa/ssh_handler.py index b922dbf11..f8dda9487 100644 --- a/delfin/drivers/hpe/hpe_msa/ssh_handler.py +++ b/delfin/drivers/hpe/hpe_msa/ssh_handler.py @@ -213,6 +213,7 @@ def list_storage_controller(self, storage_id): 'location': data.get('position'), 'soft_version': data.get('sc-fw'), 'cpu_info': cpu_info, + 'cpu_count': 1, 'memory_size': int(system_memory_size) } controller_arr.append(data_map) From ae5935a341f96cd753bcd6ea09852fc81fa8dd8c Mon Sep 17 00:00:00 2001 From: Administrator Date: Thu, 17 Nov 2022 16:12:41 +0800 Subject: [PATCH 5/8] add fujitsu cpu_count --- delfin/drivers/fujitsu/eternus/eternus_stor.py | 1 + delfin/tests/unit/drivers/fujitsu/eternus/test_eternus_stor.py | 1 + 2 files changed, 2 insertions(+) diff --git a/delfin/drivers/fujitsu/eternus/eternus_stor.py b/delfin/drivers/fujitsu/eternus/eternus_stor.py index 0f1778e7d..8f4d438b9 100644 --- a/delfin/drivers/fujitsu/eternus/eternus_stor.py +++ b/delfin/drivers/fujitsu/eternus/eternus_stor.py @@ -207,6 +207,7 @@ def list_controllers(self, context): 'location': controller.get('name'), 'soft_version': controller.get('Hard Revision'), 'cpu_info': controller.get('CPU Clock'), + 'cpu_count': consts.DIGITAL_CONSTANT.ONE_INT, 'memory_size': str(int( Tools.get_capacity_size(controller.get('Memory Size')))) } diff --git a/delfin/tests/unit/drivers/fujitsu/eternus/test_eternus_stor.py b/delfin/tests/unit/drivers/fujitsu/eternus/test_eternus_stor.py index b17daec33..7c2a17555 100644 --- a/delfin/tests/unit/drivers/fujitsu/eternus/test_eternus_stor.py +++ b/delfin/tests/unit/drivers/fujitsu/eternus/test_eternus_stor.py @@ -510,6 +510,7 @@ def __init__(self): 'location': 'CM#0', 'soft_version': 'AA', 'cpu_info': '1.40GHz', + 'cpu_count': 1, 'memory_size': '4294967296' }] POOL_RESULT = [ From c14263f18f1f841e0134aa809de3ab7dcd1f4da7 Mon Sep 17 00:00:00 2001 From: "jiagen.luo" Date: Thu, 17 Nov 2022 16:16:51 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9MSA=E7=9A=84CPU=E4=B8=AA?= =?UTF-8?q?=E6=95=B0=E4=B8=BA=E9=BB=98=E8=AE=A4=E5=80=BC1=E4=B8=AA,?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B5=8B=E8=AF=95=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- delfin/tests/unit/drivers/hpe/hpe_msa/test_constans.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/delfin/tests/unit/drivers/hpe/hpe_msa/test_constans.py b/delfin/tests/unit/drivers/hpe/hpe_msa/test_constans.py index bb750fd74..c31319b3e 100644 --- a/delfin/tests/unit/drivers/hpe/hpe_msa/test_constans.py +++ b/delfin/tests/unit/drivers/hpe/hpe_msa/test_constans.py @@ -10,6 +10,7 @@ 6144 GLS210R04-01 Gladden + 1 OK Top @@ -22,6 +23,7 @@ 6144 GLS210R04-01 Gladden + 1 OK Bottom @@ -1114,6 +1116,7 @@ 'location': 'Top', 'soft_version': 'GLS210R04-01', 'cpu_info': 'Gladden', + 'cpu_count': 1, 'memory_size': 6442450944 }, { @@ -1124,6 +1127,7 @@ 'location': 'Bottom', 'soft_version': 'GLS210R04-01', 'cpu_info': 'Gladden', + 'cpu_count': 1, 'memory_size': 6442450944 } ] From f663c08eb3b8d519ebf35605761f19cadee118f7 Mon Sep 17 00:00:00 2001 From: "jiagen.luo" Date: Thu, 17 Nov 2022 16:59:55 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B2=A1=E6=9C=89CPU?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=97=B6,CPU=E6=95=B0=E9=87=8F=E4=B8=BANone?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- delfin/drivers/hpe/hpe_msa/ssh_handler.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/delfin/drivers/hpe/hpe_msa/ssh_handler.py b/delfin/drivers/hpe/hpe_msa/ssh_handler.py index f8dda9487..9d58b20d6 100644 --- a/delfin/drivers/hpe/hpe_msa/ssh_handler.py +++ b/delfin/drivers/hpe/hpe_msa/ssh_handler.py @@ -200,6 +200,9 @@ def list_storage_controller(self, storage_id): if health == 'OK': status = constants.StoragePoolStatus.NORMAL cpu_info = data.get('sc-cpu-type') + cpu_count = None + if cpu_info: + cpu_count = 1 memory_size = data.get('system-memory-size') if memory_size is not None: memory_size += "MB" @@ -213,7 +216,7 @@ def list_storage_controller(self, storage_id): 'location': data.get('position'), 'soft_version': data.get('sc-fw'), 'cpu_info': cpu_info, - 'cpu_count': 1, + 'cpu_count': cpu_count, 'memory_size': int(system_memory_size) } controller_arr.append(data_map) From 2fb119ac641bfa4a5c89e0132a6841f7230e1dc9 Mon Sep 17 00:00:00 2001 From: yuanyu Date: Thu, 17 Nov 2022 17:10:46 +0800 Subject: [PATCH 8/8] modified --- delfin/drivers/dell_emc/vnx/vnx_block/component_handler.py | 6 +++--- delfin/drivers/hpe/hpe_3par/ssh_handler.py | 7 ++----- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/delfin/drivers/dell_emc/vnx/vnx_block/component_handler.py b/delfin/drivers/dell_emc/vnx/vnx_block/component_handler.py index dbc09560c..fa002cf79 100644 --- a/delfin/drivers/dell_emc/vnx/vnx_block/component_handler.py +++ b/delfin/drivers/dell_emc/vnx/vnx_block/component_handler.py @@ -306,12 +306,12 @@ def list_controllers(self, storage_id): memory_size = int(controller.get('memory_size_for_the_sp', '0')) * units.Mi cpu_info = '' - cpu_count = 1 + cpu_count = None if cpus: cpu_info = cpus.get( controller.get('serial_number_for_the_sp', ''), '') - if not cpu_info: - cpu_count = None + if cpu_info: + cpu_count = 1 controller_model = { 'name': controller.get('sp_name'), 'storage_id': storage_id, diff --git a/delfin/drivers/hpe/hpe_3par/ssh_handler.py b/delfin/drivers/hpe/hpe_3par/ssh_handler.py index cf64a47b6..e650370c5 100644 --- a/delfin/drivers/hpe/hpe_3par/ssh_handler.py +++ b/delfin/drivers/hpe/hpe_3par/ssh_handler.py @@ -433,11 +433,8 @@ def parse_node_cpu(self, cols_size, titles_size, str_info, obj_map, else: node_id = str_info[0] cpu_info = str_info[4] - if obj_map.get(node_id): - obj_map[node_id][cpu_info] = obj_map.get(node_id).get( - cpu_info, 0) + 1 - else: - obj_map[node_id] = {cpu_info: 1} + cpu_map = obj_map.setdefault(node_id, {}) + cpu_map[cpu_info] = cpu_map.get(cpu_info, 0) + 1 return obj_map def parse_metric_table(self, cols_size, titles_size, str_info,