]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr: diskprediction_cloud Add nvme devcie support 25806/head
authorhsiang41 <rick.chen@prophetstor.com>
Fri, 4 Jan 2019 01:49:52 +0000 (09:49 +0800)
committerhsiang41 <rick.chen@prophetstor.com>
Mon, 7 Jan 2019 01:28:35 +0000 (09:28 +0800)
Parse nvme device information from the device health output.

Signed-off-by: Rick Chen <rick.chen@prophetstor.com>
src/pybind/mgr/diskprediction_cloud/agent/metrics/ceph_cluster.py
src/pybind/mgr/diskprediction_cloud/agent/metrics/ceph_mon_osd.py
src/pybind/mgr/diskprediction_cloud/agent/metrics/ceph_pool.py
src/pybind/mgr/diskprediction_cloud/agent/metrics/db_relay.py
src/pybind/mgr/diskprediction_cloud/agent/metrics/sai_agent.py
src/pybind/mgr/diskprediction_cloud/agent/metrics/sai_cluster.py
src/pybind/mgr/diskprediction_cloud/agent/metrics/sai_disk.py
src/pybind/mgr/diskprediction_cloud/agent/metrics/sai_disk_smart.py
src/pybind/mgr/diskprediction_cloud/agent/metrics/sai_host.py

index 4477802a0bada77380f36dce0df2febc2975b51d..7c13d10afb42c006c0a9dda32bec742b5d673ced 100644 (file)
@@ -54,8 +54,7 @@ class CephClusterAgent(MetricsAgent):
         c_data.tags['cluster_id'] = cluster_id\r
         c_data.fields['cluster_health'] = str(cluster_state)\r
         c_data.fields['agenthost'] = socket.gethostname()\r
-        c_data.tags['agenthost_domain_id'] = \\r
-            '%s_%s' % (cluster_id, c_data.fields['agenthost'])\r
+        c_data.tags['agenthost_domain_id'] = cluster_id\r
         c_data.fields['osd_epoch'] = obj_api.get_osd_epoch()\r
         c_data.fields['num_mon'] = len(obj_api.get_mons())\r
         c_data.fields['num_mon_quorum'] = \\r
@@ -86,7 +85,7 @@ class CephClusterAgent(MetricsAgent):
         c_data.fields['osd_bytes_avail'] = total_avail_bytes\r
         if total_bytes and total_avail_bytes:\r
             c_data.fields['osd_bytes_used_percentage'] = \\r
-                round(float(total_used_bytes) / float(total_bytes) * 100, 4)\r
+                round((float(total_used_bytes) / float(total_bytes)) * 100, 4)\r
         else:\r
             c_data.fields['osd_bytes_used_percentage'] = 0.0000\r
 \r
index c8d9ae92f70ce44de4843bbbf48f07f8c451ef4d..cbb0ef43719b2700a7b3b29885919486f5acc336 100644 (file)
@@ -117,7 +117,7 @@ class CephMonOsdAgent(MetricsAgent):
                 e_osd.fields['name'] = n\r
                 e_osd.tags['cluster_id'] = cluster_id\r
                 e_osd.fields['agenthost'] = socket.gethostname()\r
-                e_osd.tags['agenthost_domain_id'] = '%s_%s' % (cluster_id, socket.gethostname())\r
+                e_osd.tags['agenthost_domain_id'] = cluster_id\r
                 e_osd.tags['host_domain_id'] = '%s_%s' % (cluster_id, socket.gethostname())\r
                 for k in n_value.keys():\r
                     e_osd.fields[k] = str(n_value[k])\r
@@ -131,7 +131,7 @@ class CephMonOsdAgent(MetricsAgent):
                 n_node = CephOsdTree()\r
                 n_node.tags['cluster_id'] = cluster_id\r
                 n_node.fields['agenthost'] = socket.gethostname()\r
-                n_node.tags['agenthost_domain_id'] = '%s_%s' % (cluster_id, socket.gethostname())\r
+                n_node.tags['agenthost_domain_id'] = cluster_id\r
                 n_node.tags['host_domain_id'] = '%s_%s' % (cluster_id, socket.gethostname())\r
                 n_node.fields['children'] = ','.join(str(x) for x in node.get('children', []))\r
                 n_node.fields['type_id'] = str(node.get('type_id', ''))\r
@@ -153,8 +153,7 @@ class CephMonOsdAgent(MetricsAgent):
         d_osd.tags['cluster_id'] = cluster_id\r
         d_osd.tags['osd_id'] = service_name[4:]\r
         d_osd.fields['agenthost'] = socket.gethostname()\r
-        d_osd.tags['agenthost_domain_id'] = \\r
-            '%s_%s' % (cluster_id, d_osd.fields['agenthost'])\r
+        d_osd.tags['agenthost_domain_id'] = cluster_id\r
         d_osd.tags['host_domain_id'] = \\r
             '%s_%s' % (cluster_id,\r
                        obj_api.get_osd_hostname(d_osd.tags['osd_id']))\r
@@ -177,7 +176,7 @@ class CephMonOsdAgent(MetricsAgent):
 \r
         if stat_bytes and stat_bytes_used:\r
             d_osd.fields['stat_bytes_used_percentage'] = \\r
-                round(float(stat_bytes_used) / float(stat_bytes) * 100, 4)\r
+                round((float(stat_bytes_used) / float(stat_bytes)) * 100, 4)\r
         else:\r
             d_osd.fields['stat_bytes_used_percentage'] = 0.0000\r
         self.data.append(d_osd)\r
@@ -187,8 +186,7 @@ class CephMonOsdAgent(MetricsAgent):
         d_mon.tags['cluster_id'] = cluster_id\r
         d_mon.tags['mon_id'] = service_name[4:]\r
         d_mon.fields['agenthost'] = socket.gethostname()\r
-        d_mon.tags['agenthost_domain_id'] = \\r
-            '%s_%s' % (cluster_id, d_mon.fields['agenthost'])\r
+        d_mon.tags['agenthost_domain_id'] = cluster_id\r
         d_mon.fields['num_sessions'] = \\r
             perf_counts.get('mon.num_sessions', {}).get('value', 0)\r
         d_mon.fields['session_add'] = \\r
index b2aec5756bf27a19d2e2b832e96799099d91f773..e8b3956661f76faf6f95421b37107dd888496ba9 100644 (file)
@@ -39,8 +39,7 @@ class CephPoolAgent(MetricsAgent):
             d_pool.tags['cluster_id'] = cluster_id\r
             d_pool.tags['pool_id'] = p_id\r
             d_pool.fields['agenthost'] = socket.gethostname()\r
-            d_pool.tags['agenthost_domain_id'] = \\r
-                '%s_%s' % (cluster_id, d_pool.fields['agenthost'])\r
+            d_pool.tags['agenthost_domain_id'] = cluster_id\r
             d_pool.fields['bytes_used'] = \\r
                 pool.get('stats', {}).get('bytes_used', 0)\r
             d_pool.fields['max_avail'] = \\r
index 4a92a079a01f58d0629bd22b2236085f3d96edc4..2f5d60dbd90e07b9ad55eb4da763e88e75f30f6a 100644 (file)
@@ -501,8 +501,7 @@ class DBRelayAgent(MetricsAgent):
             )\r
             cluster_host = socket.gethostname()\r
             data.fields['agenthost'] = cluster_host\r
-            data.tags['agenthost_domain_id'] = \\r
-                str('%s_%s' % (cluster_id, data.fields['agenthost']))\r
+            data.tags['agenthost_domain_id'] = cluster_id\r
             data.tags['host'] = cluster_host\r
             data.fields['cmd'] = str(cypher_cmd)\r
             self.data.append(data)\r
@@ -521,8 +520,7 @@ class DBRelayAgent(MetricsAgent):
             )\r
             cluster_host = socket.gethostname()\r
             data.fields['agenthost'] = cluster_host\r
-            data.tags['agenthost_domain_id'] = \\r
-                str('%s_%s' % (self._cluster_id, data.fields['agenthost']))\r
+            data.tags['agenthost_domain_id'] = self._cluster_id\r
             data.tags['host'] = cluster_host\r
             data.fields['cmd'] = str(cypher_cmd)\r
             self.data.append(data)\r
@@ -542,8 +540,7 @@ class DBRelayAgent(MetricsAgent):
             )\r
             cluster_host = socket.gethostname()\r
             data.fields['agenthost'] = cluster_host\r
-            data.tags['agenthost_domain_id'] = \\r
-                str('%s_%s' % (cluster_id, data.fields['agenthost']))\r
+            data.tags['agenthost_domain_id'] = cluster_id, data\r
             data.tags['host'] = cluster_host\r
             data.fields['cmd'] = str(cypher_cmd)\r
             self.data.append(data)\r
@@ -563,8 +560,7 @@ class DBRelayAgent(MetricsAgent):
             )\r
             cluster_host = socket.gethostname()\r
             data.fields['agenthost'] = cluster_host\r
-            data.tags['agenthost_domain_id'] = \\r
-                str('%s_%s' % (cluster_id, data.fields['agenthost']))\r
+            data.tags['agenthost_domain_id'] = cluster_id\r
             data.tags['host'] = cluster_host\r
             data.fields['cmd'] = str(cypher_cmd)\r
             self.data.append(data)\r
@@ -591,8 +587,7 @@ class DBRelayAgent(MetricsAgent):
                         d_node,\r
                         v)\r
                     data.fields['agenthost'] = cluster_host\r
-                    data.tags['agenthost_domain_id'] = \\r
-                        str('%s_%s' % (cluster_id, data.fields['agenthost']))\r
+                    data.tags['agenthost_domain_id'] = cluster_id\r
                     data.tags['host'] = cluster_host\r
                     data.fields['cmd'] = str(cypher_cmd)\r
                     self.data.append(data)\r
@@ -611,8 +606,7 @@ class DBRelayAgent(MetricsAgent):
                 'VmHostContainsVmDisk'\r
             )\r
             data.fields['agenthost'] = cluster_host\r
-            data.tags['agenthost_domain_id'] = \\r
-                str('%s_%s' % (cluster_id, data.fields['agenthost']))\r
+            data.tags['agenthost_domain_id'] = cluster_id\r
             data.tags['host'] = cluster_host\r
             data.fields['cmd'] = str(cypher_cmd)\r
             self.data.append(data)\r
@@ -632,8 +626,7 @@ class DBRelayAgent(MetricsAgent):
                     'OsdContainsPool'\r
                 )\r
                 data.fields['agenthost'] = cluster_host\r
-                data.tags['agenthost_domain_id'] = \\r
-                    str('%s_%s' % (cluster_id, data.fields['agenthost']))\r
+                data.tags['agenthost_domain_id'] = cluster_id\r
                 data.tags['host'] = cluster_host\r
                 data.fields['cmd'] = str(cypher_cmd)\r
                 self.data.append(data)\r
@@ -652,8 +645,7 @@ class DBRelayAgent(MetricsAgent):
                     'PoolContainsRBD'\r
                 )\r
                 data.fields['agenthost'] = cluster_host\r
-                data.tags['agenthost_domain_id'] = \\r
-                    str('%s_%s' % (cluster_id, data.fields['agenthost']))\r
+                data.tags['agenthost_domain_id'] = cluster_id\r
                 data.tags['host'] = cluster_host\r
                 data.fields['cmd'] = str(cypher_cmd)\r
                 self.data.append(data)\r
@@ -675,8 +667,7 @@ class DBRelayAgent(MetricsAgent):
                             'MetadataPoolContainsFS' if p_attr == 'metadata_pool' else 'DataPoolContainsFS'\r
                         )\r
                         data.fields['agenthost'] = cluster_host\r
-                        data.tags['agenthost_domain_id'] = \\r
-                            str('%s_%s' % (cluster_id, data.fields['agenthost']))\r
+                        data.tags['agenthost_domain_id'] = cluster_id\r
                         data.tags['host'] = cluster_host\r
                         data.fields['cmd'] = str(cypher_cmd)\r
                         self.data.append(data)\r
@@ -691,8 +682,7 @@ class DBRelayAgent(MetricsAgent):
                     'MDSContainsFS'\r
                 )\r
                 data.fields['agenthost'] = cluster_host\r
-                data.tags['agenthost_domain_id'] = \\r
-                    str('%s_%s' % (cluster_id, data.fields['agenthost']))\r
+                data.tags['agenthost_domain_id'] = cluster_id\r
                 data.tags['host'] = cluster_host\r
                 data.fields['cmd'] = str(cypher_cmd)\r
                 self.data.append(data)\r
index 63c8e870f712df0ceacf0ad5688236d84123f13a..81fbdf96c88902e1cc28588ccdd93dac91788f29 100644 (file)
@@ -50,8 +50,7 @@ class SAIAgent(MetricsAgent):
             cluster_id = obj_api.get_cluster_id()
             c_data.fields['cluster_domain_id'] = str(cluster_id)
             c_data.fields['agenthost'] = str(socket.gethostname())
-            c_data.tags['agenthost_domain_id'] = \
-                str('%s_%s' % (cluster_id, c_data.fields['agenthost']))
+            c_data.tags['agenthost_domain_id'] = cluster_id
             c_data.fields['heartbeat_interval'] = \
                 int(obj_api.get_configuration('diskprediction_upload_metrics_interval'))
             c_data.fields['host_ip'] = str(mgr_meta.get('addr', '127.0.0.1'))
index f1f23beec523d370c3b40b4c9049208d43903553..d444f9a26770e8da328ca30b8e052b25d03d23d5 100644 (file)
@@ -30,7 +30,6 @@ class SAICluserAgent(MetricsAgent):
         c_data.tags['domain_id'] = str(cluster_id)
         c_data.tags['host_domain_id'] = '%s_%s' % (str(cluster_id), str(socket.gethostname()))
         c_data.fields['agenthost'] = str(socket.gethostname())
-        c_data.tags['agenthost_domain_id'] = \
-            str('%s_%s' % (cluster_id, c_data.fields['agenthost']))
+        c_data.tags['agenthost_domain_id'] = cluster_id
         c_data.fields['name'] = 'Ceph mgr plugin'
         self.data.append(c_data)
index 1f3e1e54d9911e88f03f7d2333df455ced839a1b..3b177e6939419be486b393a5a80a0e8f32cbbf3d 100644 (file)
@@ -92,8 +92,7 @@ class SAIDiskAgent(MetricsAgent):
                     str('%s_%s'\r
                         % (cluster_id, osds_meta.get('hostname', 'None')))\r
                 d_data.fields['agenthost'] = str(socket.gethostname())\r
-                d_data.tags['agenthost_domain_id'] = \\r
-                    str('%s_%s' % (cluster_id, d_data.fields['agenthost']))\r
+                d_data.tags['agenthost_domain_id'] = cluster_id\r
                 serial_number = s_val.get('serial_number')\r
                 wwn = s_val.get('wwn', {})\r
                 wwpn = ''\r
index 0f03a82526ba7d2d61ef1dc55872a11e2695ff0e..1ad34784aaaae68f9817ac1ba80c9224dd6fafe2 100644 (file)
@@ -61,62 +61,88 @@ class SAIDiskSmartAgent(MetricsAgent):
                             str('%s_%s'\r
                                 % (cluster_id, osds_meta.get('hostname', 'None')))\r
                         smart_data.fields['agenthost'] = str(socket.gethostname())\r
-                        smart_data.tags['agenthost_domain_id'] = \\r
-                            str('%s_%s' % (cluster_id, smart_data.fields['agenthost']))\r
+                        smart_data.tags['agenthost_domain_id'] = cluster_id\r
                         # parse attributes\r
-                        ata_smart = s_val.get('ata_smart_attributes', {})\r
-                        for attr in ata_smart.get('table', []):\r
-                            if attr.get('raw', {}).get('string'):\r
-                                if str(attr.get('raw', {}).get('string', '0')).isdigit():\r
-                                    smart_data.fields['%s_raw' % attr.get('id')] = \\r
-                                        int(attr.get('raw', {}).get('string', '0'))\r
+                        protocol = s_val.get('device', {}).get('protocol', '')\r
+                        if str(protocol).lower() == 'nvme':\r
+                            nvme_info = s_val.get('nvme_smart_health_information_log', {})\r
+                            smart_data['CriticalWarniing_raw'] = int(nvme_info.get('critical_warning', 0))\r
+                            smart_data['CurrentDriveTemperature_raw'] = int(nvme_info.get('temperature', 0))\r
+                            smart_data['AvailableSpare_raw'] = int(nvme_info.get('available_spare', 0))\r
+                            smart_data['AvailableSpareThreshold_raw'] = int(nvme_info.get('available_spare_threshold', 0))\r
+                            smart_data['PercentageUsed_raw'] = int(nvme_info.get('percentage_used', 0))\r
+                            smart_data['DataUnitsRead_raw'] = int(nvme_info.get('data_units_read', 0))\r
+                            smart_data['DataUnitsRead'] = int(nvme_info.get('data_units_written', 0))\r
+                            smart_data['HostReadCommands_raw'] = int(nvme_info.get('host_reads', 0))\r
+                            smart_data['HostWriteCommands_raw'] = int(nvme_info.get('host_writes', 0))\r
+                            smart_data['ControllerBusyTime_raw'] = int(nvme_info.get('controller_busy_time', 0))\r
+                            smart_data['PowerCycles_raw'] = int(nvme_info.get('power_cycles', 0))\r
+                            smart_data['PowerOnHours_raw'] = int(nvme_info.get('power_on_hours', 0))\r
+                            smart_data['UnsafeShutdowns_raw'] = int(nvme_info.get('unsafe_shutdowns', 0))\r
+                            smart_data['MediaandDataIntegrityErrors_raw'] = int(nvme_info.get('media_errors', 0))\r
+                            smart_data['ErrorInformationLogEntries'] = int(nvme_info.get('num_err_log_entries'))\r
+                            nvme_addition = s_val.get('nvme_smart_health_information_add_log', {})\r
+                            for k, v in nvme_addition.get("Device stats", {}).items():\r
+                                if v.get('raw') is None:\r
+                                    continue\r
+                                if isinstance(v.get('raw'), int):\r
+                                    smart_data[k] = int(v['raw'])\r
                                 else:\r
-                                    if str(attr.get('raw', {}).get('string', '0')).split(' ')[0].isdigit():\r
+                                    smart_data[k] = str(v.get('raw'))\r
+                        else:\r
+                            ata_smart = s_val.get('ata_smart_attributes', {})\r
+                            for attr in ata_smart.get('table', []):\r
+                                if attr.get('raw', {}).get('string'):\r
+                                    if str(attr.get('raw', {}).get('string', '0')).isdigit():\r
                                         smart_data.fields['%s_raw' % attr.get('id')] = \\r
-                                            int(attr.get('raw', {}).get('string', '0').split(' ')[0])\r
+                                            int(attr.get('raw', {}).get('string', '0'))\r
                                     else:\r
-                                        smart_data.fields['%s_raw' % attr.get('id')] = \\r
-                                            attr.get('raw', {}).get('value', 0)\r
-                        smart_data.fields['raw_data'] = str(json.dumps(osds_smart[s_date]).replace("\"", "\'"))\r
-                        if s_val.get('temperature', {}).get('current') is not None:\r
-                            smart_data.fields['CurrentDriveTemperature_raw'] = \\r
-                                int(s_val['temperature']['current'])\r
-                        if s_val.get('temperature', {}).get('drive_trip') is not None:\r
-                            smart_data.fields['DriveTripTemperature_raw'] = \\r
-                                int(s_val['temperature']['drive_trip'])\r
-                        if s_val.get('elements_grown_list') is not None:\r
-                            smart_data.fields['ElementsInGrownDefectList_raw'] = int(s_val['elements_grown_list'])\r
-                        if s_val.get('power_on_time', {}).get('hours') is not None:\r
-                            smart_data.fields['9_raw'] = int(s_val['power_on_time']['hours'])\r
-                        if s_val.get('scsi_percentage_used_endurance_indicator') is not None:\r
-                            smart_data.fields['PercentageUsedEnduranceIndicator_raw'] = \\r
-                                int(s_val['scsi_percentage_used_endurance_indicator'])\r
-                        if s_val.get('scsi_error_counter_log') is not None:\r
-                            s_err_counter = s_val['scsi_error_counter_log']\r
-                            for s_key in s_err_counter.keys():\r
-                                if s_key.lower() in ['read', 'write']:\r
-                                    for s1_key in s_err_counter[s_key].keys():\r
-                                        if s1_key.lower() == 'errors_corrected_by_eccfast':\r
-                                            smart_data.fields['ErrorsCorrectedbyECCFast%s_raw' % s_key.capitalize()] = \\r
-                                                int(s_err_counter[s_key]['errors_corrected_by_eccfast'])\r
-                                        elif s1_key.lower() == 'errors_corrected_by_eccdelayed':\r
-                                            smart_data.fields['ErrorsCorrectedbyECCDelayed%s_raw' % s_key.capitalize()] = \\r
-                                                int(s_err_counter[s_key]['errors_corrected_by_eccdelayed'])\r
-                                        elif s1_key.lower() == 'errors_corrected_by_rereads_rewrites':\r
-                                            smart_data.fields['ErrorCorrectedByRereadsRewrites%s_raw' % s_key.capitalize()] = \\r
-                                                int(s_err_counter[s_key]['errors_corrected_by_rereads_rewrites'])\r
-                                        elif s1_key.lower() == 'total_errors_corrected':\r
-                                            smart_data.fields['TotalErrorsCorrected%s_raw' % s_key.capitalize()] = \\r
-                                                int(s_err_counter[s_key]['total_errors_corrected'])\r
-                                        elif s1_key.lower() == 'correction_algorithm_invocations':\r
-                                            smart_data.fields['CorrectionAlgorithmInvocations%s_raw' % s_key.capitalize()] = \\r
-                                                int(s_err_counter[s_key]['correction_algorithm_invocations'])\r
-                                        elif s1_key.lower() == 'gigabytes_processed':\r
-                                            smart_data.fields['GigaBytesProcessed%s_raw' % s_key.capitalize()] = \\r
-                                                float(s_err_counter[s_key]['gigabytes_processed'])\r
-                                        elif s1_key.lower() == 'total_uncorrected_errors':\r
-                                            smart_data.fields['TotalUncorrectedErrors%s_raw' % s_key.capitalize()] = \\r
-                                                int(s_err_counter[s_key]['total_uncorrected_errors'])\r
+                                        if str(attr.get('raw', {}).get('string', '0')).split(' ')[0].isdigit():\r
+                                            smart_data.fields['%s_raw' % attr.get('id')] = \\r
+                                                int(attr.get('raw', {}).get('string', '0').split(' ')[0])\r
+                                        else:\r
+                                            smart_data.fields['%s_raw' % attr.get('id')] = \\r
+                                                attr.get('raw', {}).get('value', 0)\r
+                            smart_data.fields['raw_data'] = str(json.dumps(osds_smart[s_date]).replace("\"", "\'"))\r
+                            if s_val.get('temperature', {}).get('current') is not None:\r
+                                smart_data.fields['CurrentDriveTemperature_raw'] = \\r
+                                    int(s_val['temperature']['current'])\r
+                            if s_val.get('temperature', {}).get('drive_trip') is not None:\r
+                                smart_data.fields['DriveTripTemperature_raw'] = \\r
+                                    int(s_val['temperature']['drive_trip'])\r
+                            if s_val.get('elements_grown_list') is not None:\r
+                                smart_data.fields['ElementsInGrownDefectList_raw'] = int(s_val['elements_grown_list'])\r
+                            if s_val.get('power_on_time', {}).get('hours') is not None:\r
+                                smart_data.fields['9_raw'] = int(s_val['power_on_time']['hours'])\r
+                            if s_val.get('scsi_percentage_used_endurance_indicator') is not None:\r
+                                smart_data.fields['PercentageUsedEnduranceIndicator_raw'] = \\r
+                                    int(s_val['scsi_percentage_used_endurance_indicator'])\r
+                            if s_val.get('scsi_error_counter_log') is not None:\r
+                                s_err_counter = s_val['scsi_error_counter_log']\r
+                                for s_key in s_err_counter.keys():\r
+                                    if s_key.lower() in ['read', 'write']:\r
+                                        for s1_key in s_err_counter[s_key].keys():\r
+                                            if s1_key.lower() == 'errors_corrected_by_eccfast':\r
+                                                smart_data.fields['ErrorsCorrectedbyECCFast%s_raw' % s_key.capitalize()] = \\r
+                                                    int(s_err_counter[s_key]['errors_corrected_by_eccfast'])\r
+                                            elif s1_key.lower() == 'errors_corrected_by_eccdelayed':\r
+                                                smart_data.fields['ErrorsCorrectedbyECCDelayed%s_raw' % s_key.capitalize()] = \\r
+                                                    int(s_err_counter[s_key]['errors_corrected_by_eccdelayed'])\r
+                                            elif s1_key.lower() == 'errors_corrected_by_rereads_rewrites':\r
+                                                smart_data.fields['ErrorCorrectedByRereadsRewrites%s_raw' % s_key.capitalize()] = \\r
+                                                    int(s_err_counter[s_key]['errors_corrected_by_rereads_rewrites'])\r
+                                            elif s1_key.lower() == 'total_errors_corrected':\r
+                                                smart_data.fields['TotalErrorsCorrected%s_raw' % s_key.capitalize()] = \\r
+                                                    int(s_err_counter[s_key]['total_errors_corrected'])\r
+                                            elif s1_key.lower() == 'correction_algorithm_invocations':\r
+                                                smart_data.fields['CorrectionAlgorithmInvocations%s_raw' % s_key.capitalize()] = \\r
+                                                    int(s_err_counter[s_key]['correction_algorithm_invocations'])\r
+                                            elif s1_key.lower() == 'gigabytes_processed':\r
+                                                smart_data.fields['GigaBytesProcessed%s_raw' % s_key.capitalize()] = \\r
+                                                    float(s_err_counter[s_key]['gigabytes_processed'])\r
+                                            elif s1_key.lower() == 'total_uncorrected_errors':\r
+                                                smart_data.fields['TotalUncorrectedErrors%s_raw' % s_key.capitalize()] = \\r
+                                                    int(s_err_counter[s_key]['total_uncorrected_errors'])\r
 \r
                         serial_number = s_val.get('serial_number')\r
                         wwn = s_val.get('wwn', {})\r
index ec1e4cb6a9b3ba584eda93fce3d5115ebddc2aed..0f3698ad69774b4ead82fb87af5f19acf536d678 100644 (file)
@@ -48,8 +48,7 @@ class SAIHostAgent(MetricsAgent):
                 if osd_host not in hosts:\r
                     data = SAIHostFields()\r
                     data.fields['agenthost'] = str(socket.gethostname())\r
-                    data.tags['agenthost_domain_id'] = \\r
-                        str('%s_%s' % (cluster_id, data.fields['agenthost']))\r
+                    data.tags['agenthost_domain_id'] = cluster_id\r
                     data.tags['domain_id'] = \\r
                         str('%s_%s' % (cluster_id, osd_host))\r
                     data.fields['cluster_domain_id'] = str(cluster_id)\r
@@ -72,8 +71,7 @@ class SAIHostAgent(MetricsAgent):
             if mon_host not in hosts:\r
                 data = SAIHostFields()\r
                 data.fields['agenthost'] = str(socket.gethostname())\r
-                data.tags['agenthost_domain_id'] = \\r
-                    str('%s_%s' % (cluster_id, data.fields['agenthost']))\r
+                data.tags['agenthost_domain_id'] = cluster_id\r
                 data.tags['domain_id'] = \\r
                     str('%s_%s' % (cluster_id, mon_host))\r
                 data.fields['cluster_domain_id'] = str(cluster_id)\r
@@ -95,8 +93,7 @@ class SAIHostAgent(MetricsAgent):
                 if mds_host not in hosts:\r
                     data = SAIHostFields()\r
                     data.fields['agenthost'] = str(socket.gethostname())\r
-                    data.tags['agenthost_domain_id'] = \\r
-                        str('%s_%s' % (cluster_id, data.fields['agenthost']))\r
+                    data.tags['agenthost_domain_id'] = cluster_id\r
                     data.tags['domain_id'] = \\r
                         str('%s_%s' % (cluster_id, mds_host))\r
                     data.fields['cluster_domain_id'] = str(cluster_id)\r