Skip to content

Commit 03e11a6

Browse files
author
Matteo Cerutti
committed
fixed handling of exceptions
1 parent e4726d9 commit 03e11a6

File tree

3 files changed

+17
-5
lines changed

3 files changed

+17
-5
lines changed

README.md

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ Pull requests to add additional API features are very welcome. I only implemente
66
## Install
77
To install it simply issue the following command:
88

9-
```
9+
```shell
1010
pip install megacli
1111
```
1212

1313
## Usage
14-
```
15-
from megacli import MegaCLI
14+
```python
15+
from megacli import MegaCLI, MegaCLIError
1616
cli = MegaCLI()
1717
```
1818

@@ -22,7 +22,7 @@ Valid parameters are:
2222
| ------------- | ------------- | ------------- | ------------- | ------------- |
2323
| cli_path | Path to MegaCli executable | String | /opt/MegaRAID/MegaCli/MegaCli64 | False |
2424

25-
```
25+
```python
2626
>>> from megacli import MegaCLI
2727
>>> cli = MegaCLI()
2828
>>> cli.adapters()
@@ -37,5 +37,14 @@ Valid parameters are:
3737
[{'port_linkspeed': 6442450944.0, 'drive_temperature': '36c (96.80 f)', 'adapter_id': 0, 'needs_ekm_attention': False, 'device_firmware_level': '0a82', 'raw_size': 4000023301849.088, 'inquiry_data': 'wd-wcc4e2asxs5zwdc wd40efrx-68wt0n0 82.00a82', 'wwn': '50014ee262eb9643', 'drive_position': 'diskgroup:0, span:0, arm:0', 'sector_size': 512, 'fde_capable': 'not capable', 'pi_eligibility': False, 'secured': 'unsecured', 'pd_type': 'sata', 'device_speed': 6442450944.0, 'last_predictive_failure_event_seq_number': 0, 'drive_has_flagged_a_smart_alert': False, 'media_type': 'hard disk device', 'pi': 'no pi', 'logical_sector_size': 512, 'drive_is_formatted_for_pi_information': False, 'physical_sector_size': 4096, 'connected_port_number': '0(path0)', 'coerced_size': 3998923790221.312, 'predictive_failure_count': 0, 'fde_enable': 'disable', 'non_coerced_size': 3998923790221.312, 'successful_diagnostics_completion_on': None, 'port_status': 'active', 'media_error_count': 0, 'foreign_state': None, 'link_speed': 6442450944.0, 'firmware_state': 'online, spun up', 'slot_number': 0, 'shield_counter': 0, 'sas_address(0)': '0x500056b3186e7cc0', 'device_id': 0, 'locked': 'unlocked', 'enclosure_id': 32, 'drive': 'not certified', 'enclosure_position': 1, 'other_error_count': 0, 'sequence_number': 2, 'drive_ncq_setting': None}, {'port_linkspeed': 6442450944.0, 'drive_temperature': '36c (96.80 f)', 'adapter_id': 0, 'needs_ekm_attention': False, 'device_firmware_level': '0a82', 'raw_size': 4000023301849.088, 'inquiry_data': 'wd-wcc4e1nh06j4wdc wd40efrx-68wt0n0 82.00a82', 'wwn': '50014ee262eb927e', 'drive_position': 'diskgroup:0, span:0, arm:1', 'sector_size': 512, 'fde_capable': 'not capable', 'pi_eligibility': False, 'secured': 'unsecured', 'pd_type': 'sata', 'device_speed': 6442450944.0, 'last_predictive_failure_event_seq_number': 0, 'drive_has_flagged_a_smart_alert': False, 'media_type': 'hard disk device', 'pi': 'no pi', 'logical_sector_size': 512, 'drive_is_formatted_for_pi_information': False, 'physical_sector_size': 4096, 'connected_port_number': '0(path0)', 'coerced_size': 3998923790221.312, 'predictive_failure_count': 0, 'fde_enable': 'disable', 'non_coerced_size': 3998923790221.312, 'successful_diagnostics_completion_on': None, 'port_status': 'active', 'media_error_count': 0, 'foreign_state': None, 'link_speed': 6442450944.0, 'firmware_state': 'online, spun up', 'slot_number': 1, 'shield_counter': 0, 'sas_address(0)': '0x500056b3186e7cc1', 'device_id': 1, 'locked': 'unlocked', 'enclosure_id': 32, 'drive': 'not certified', 'enclosure_position': 1, 'other_error_count': 0, 'sequence_number': 2, 'drive_ncq_setting': None}, {'port_linkspeed': 6442450944.0, 'drive_temperature': '35c (95.00 f)', 'adapter_id': 0, 'needs_ekm_attention': False, 'device_firmware_level': '0a82', 'raw_size': 4000023301849.088, 'inquiry_data': 'wd-wcc4e4xp8pkvwdc wd40efrx-68wt0n0 82.00a82', 'wwn': '50014ee20d95e6c4', 'drive_position': 'diskgroup:1, span:0, arm:0', 'sector_size': 512, 'fde_capable': 'not capable', 'pi_eligibility': False, 'secured': 'unsecured', 'pd_type': 'sata', 'device_speed': 6442450944.0, 'last_predictive_failure_event_seq_number': 0, 'drive_has_flagged_a_smart_alert': False, 'media_type': 'hard disk device', 'pi': 'no pi', 'logical_sector_size': 512, 'drive_is_formatted_for_pi_information': False, 'physical_sector_size': 4096, 'connected_port_number': '0(path0)', 'coerced_size': 3998923790221.312, 'predictive_failure_count': 0, 'fde_enable': 'disable', 'non_coerced_size': 3998923790221.312, 'successful_diagnostics_completion_on': None, 'port_status': 'active', 'media_error_count': 0, 'foreign_state': None, 'link_speed': 6442450944.0, 'firmware_state': 'online, spun up', 'slot_number': 2, 'shield_counter': 0, 'sas_address(0)': '0x500056b3186e7cc2', 'device_id': 2, 'locked': 'unlocked', 'enclosure_id': 32, 'drive': 'not certified', 'enclosure_position': 1, 'other_error_count': 0, 'sequence_number': 2, 'drive_ncq_setting': None}, {'port_linkspeed': 6442450944.0, 'drive_temperature': '33c (91.40 f)', 'adapter_id': 0, 'needs_ekm_attention': False, 'device_firmware_level': '0a82', 'raw_size': 4000023301849.088, 'inquiry_data': 'wd-wcc4e6ryx384wdc wd40efrx-68wt0n0 82.00a82', 'wwn': '50014ee262eb80e8', 'drive_position': 'diskgroup:1, span:0, arm:1', 'sector_size': 512, 'fde_capable': 'not capable', 'pi_eligibility': False, 'secured': 'unsecured', 'pd_type': 'sata', 'device_speed': 6442450944.0, 'last_predictive_failure_event_seq_number': 0, 'drive_has_flagged_a_smart_alert': False, 'media_type': 'hard disk device', 'pi': 'no pi', 'logical_sector_size': 512, 'drive_is_formatted_for_pi_information': False, 'physical_sector_size': 4096, 'connected_port_number': '0(path0)', 'coerced_size': 3998923790221.312, 'predictive_failure_count': 0, 'fde_enable': 'disable', 'non_coerced_size': 3998923790221.312, 'successful_diagnostics_completion_on': None, 'port_status': 'active', 'media_error_count': 0, 'foreign_state': None, 'link_speed': 6442450944.0, 'firmware_state': 'online, spun up', 'slot_number': 3, 'shield_counter': 0, 'sas_address(0)': '0x500056b3186e7cc3', 'device_id': 3, 'locked': 'unlocked', 'enclosure_id': 32, 'drive': 'not certified', 'enclosure_position': 1, 'other_error_count': 0, 'sequence_number': 2, 'drive_ncq_setting': None}, {'port_linkspeed': 6442450944.0, 'drive_temperature': '33c (91.40 f)', 'adapter_id': 0, 'needs_ekm_attention': False, 'device_firmware_level': '0a82', 'raw_size': 4000023301849.088, 'inquiry_data': 'wd-wcc4e4xp89jlwdc wd40efrx-68wt0n0 82.00a82', 'wwn': '50014ee2b840b6cf', 'drive_position': 'diskgroup:1, span:0, arm:2', 'sector_size': 512, 'fde_capable': 'not capable', 'pi_eligibility': False, 'secured': 'unsecured', 'pd_type': 'sata', 'device_speed': 6442450944.0, 'last_predictive_failure_event_seq_number': 0, 'drive_has_flagged_a_smart_alert': False, 'media_type': 'hard disk device', 'pi': 'no pi', 'logical_sector_size': 512, 'drive_is_formatted_for_pi_information': False, 'physical_sector_size': 4096, 'connected_port_number': '0(path0)', 'coerced_size': 3998923790221.312, 'predictive_failure_count': 0, 'fde_enable': 'disable', 'non_coerced_size': 3998923790221.312, 'successful_diagnostics_completion_on': None, 'port_status': 'active', 'media_error_count': 0, 'foreign_state': None, 'link_speed': 6442450944.0, 'firmware_state': 'online, spun up', 'slot_number': 4, 'shield_counter': 0, 'sas_address(0)': '0x500056b3186e7cc4', 'device_id': 4, 'locked': 'unlocked', 'enclosure_id': 32, 'drive': 'not certified', 'enclosure_position': 1, 'other_error_count': 0, 'sequence_number': 2, 'drive_ncq_setting': None}, {'port_linkspeed': 6442450944.0, 'drive_temperature': '33c (91.40 f)', 'adapter_id': 0, 'needs_ekm_attention': False, 'device_firmware_level': '0a82', 'raw_size': 4000023301849.088, 'inquiry_data': 'wd-wcc4e4vkfputwdc wd40efrx-68wt0n0 82.00a82', 'wwn': '50014ee20d95f862', 'drive_position': 'diskgroup:1, span:0, arm:3', 'sector_size': 512, 'fde_capable': 'not capable', 'pi_eligibility': False, 'secured': 'unsecured', 'pd_type': 'sata', 'device_speed': 6442450944.0, 'last_predictive_failure_event_seq_number': 0, 'drive_has_flagged_a_smart_alert': False, 'media_type': 'hard disk device', 'pi': 'no pi', 'logical_sector_size': 512, 'drive_is_formatted_for_pi_information': False, 'physical_sector_size': 4096, 'connected_port_number': '0(path0)', 'coerced_size': 3998923790221.312, 'predictive_failure_count': 0, 'fde_enable': 'disable', 'non_coerced_size': 3998923790221.312, 'successful_diagnostics_completion_on': None, 'port_status': 'active', 'media_error_count': 0, 'foreign_state': None, 'link_speed': 6442450944.0, 'firmware_state': 'online, spun up', 'slot_number': 5, 'shield_counter': 0, 'sas_address(0)': '0x500056b3186e7cc5', 'device_id': 5, 'locked': 'unlocked', 'enclosure_id': 32, 'drive': 'not certified', 'enclosure_position': 1, 'other_error_count': 0, 'sequence_number': 2, 'drive_ncq_setting': None}, {'port_linkspeed': 6442450944.0, 'drive_temperature': '33c (91.40 f)', 'adapter_id': 0, 'needs_ekm_attention': False, 'device_firmware_level': '0a82', 'raw_size': 4000023301849.088, 'inquiry_data': 'wd-wcc4e2asxa4fwdc wd40efrx-68wt0n0 82.00a82', 'wwn': '50014ee262eb965f', 'drive_position': 'diskgroup:1, span:0, arm:4', 'sector_size': 512, 'fde_capable': 'not capable', 'pi_eligibility': False, 'secured': 'unsecured', 'pd_type': 'sata', 'device_speed': 6442450944.0, 'last_predictive_failure_event_seq_number': 0, 'drive_has_flagged_a_smart_alert': False, 'media_type': 'hard disk device', 'pi': 'no pi', 'logical_sector_size': 512, 'drive_is_formatted_for_pi_information': False, 'physical_sector_size': 4096, 'connected_port_number': '0(path0)', 'coerced_size': 3998923790221.312, 'predictive_failure_count': 0, 'fde_enable': 'disable', 'non_coerced_size': 3998923790221.312, 'successful_diagnostics_completion_on': None, 'port_status': 'active', 'media_error_count': 0, 'foreign_state': None, 'link_speed': 6442450944.0, 'firmware_state': 'online, spun up', 'slot_number': 6, 'shield_counter': 0, 'sas_address(0)': '0x500056b3186e7cc6', 'device_id': 6, 'locked': 'unlocked', 'enclosure_id': 32, 'drive': 'not certified', 'enclosure_position': 1, 'other_error_count': 0, 'sequence_number': 2, 'drive_ncq_setting': None}, {'port_linkspeed': 6442450944.0, 'drive_temperature': '34c (93.20 f)', 'adapter_id': 0, 'needs_ekm_attention': False, 'device_firmware_level': '0a82', 'raw_size': 4000023301849.088, 'inquiry_data': 'wd-wcc4e2taxrrswdc wd40efrx-68wt0n0 82.00a82', 'wwn': '50014ee2b8414797', 'drive_position': 'diskgroup:1, span:0, arm:5', 'sector_size': 512, 'fde_capable': 'not capable', 'pi_eligibility': False, 'secured': 'unsecured', 'pd_type': 'sata', 'device_speed': 6442450944.0, 'last_predictive_failure_event_seq_number': 0, 'drive_has_flagged_a_smart_alert': False, 'media_type': 'hard disk device', 'pi': 'no pi', 'logical_sector_size': 512, 'drive_is_formatted_for_pi_information': False, 'physical_sector_size': 4096, 'connected_port_number': '0(path0)', 'coerced_size': 3998923790221.312, 'predictive_failure_count': 0, 'fde_enable': 'disable', 'non_coerced_size': 3998923790221.312, 'successful_diagnostics_completion_on': None, 'port_status': 'active', 'media_error_count': 0, 'foreign_state': None, 'link_speed': 6442450944.0, 'firmware_state': 'online, spun up', 'slot_number': 7, 'shield_counter': 0, 'sas_address(0)': '0x500056b3186e7cc7', 'device_id': 7, 'locked': 'unlocked', 'enclosure_id': 32, 'drive': 'not certified', 'enclosure_position': 1, 'other_error_count': 0, 'sequence_number': 2, 'drive_ncq_setting': None}, {'port_linkspeed': 6442450944.0, 'drive_temperature': '35c (95.00 f)', 'adapter_id': 0, 'needs_ekm_attention': False, 'device_firmware_level': '0a82', 'raw_size': 4000023301849.088, 'inquiry_data': 'wd-wcc4e4vkffv8wdc wd40efrx-68wt0n0 82.00a82', 'wwn': '50014ee262eb900c', 'drive_position': 'diskgroup:1, span:0, arm:6', 'sector_size': 512, 'fde_capable': 'not capable', 'pi_eligibility': False, 'secured': 'unsecured', 'pd_type': 'sata', 'device_speed': 6442450944.0, 'last_predictive_failure_event_seq_number': 0, 'drive_has_flagged_a_smart_alert': False, 'media_type': 'hard disk device', 'pi': 'no pi', 'logical_sector_size': 512, 'drive_is_formatted_for_pi_information': False, 'physical_sector_size': 4096, 'connected_port_number': '0(path0)', 'coerced_size': 3998923790221.312, 'predictive_failure_count': 0, 'fde_enable': 'disable', 'non_coerced_size': 3998923790221.312, 'successful_diagnostics_completion_on': None, 'port_status': 'active', 'media_error_count': 0, 'foreign_state': None, 'link_speed': 6442450944.0, 'firmware_state': 'online, spun up', 'slot_number': 8, 'shield_counter': 0, 'sas_address(0)': '0x500056b3186e7cc8', 'device_id': 8, 'locked': 'unlocked', 'enclosure_id': 32, 'drive': 'not certified', 'enclosure_position': 1, 'other_error_count': 0, 'sequence_number': 2, 'drive_ncq_setting': None}, {'port_linkspeed': 6442450944.0, 'drive_temperature': '34c (93.20 f)', 'adapter_id': 0, 'needs_ekm_attention': False, 'device_firmware_level': '0a82', 'raw_size': 4000023301849.088, 'inquiry_data': 'wd-wcc4e1nh0xudwdc wd40efrx-68wt0n0 82.00a82', 'wwn': '50014ee2b84154fc', 'drive_position': 'diskgroup:1, span:0, arm:7', 'sector_size': 512, 'fde_capable': 'not capable', 'pi_eligibility': False, 'secured': 'unsecured', 'pd_type': 'sata', 'device_speed': 6442450944.0, 'last_predictive_failure_event_seq_number': 0, 'drive_has_flagged_a_smart_alert': False, 'media_type': 'hard disk device', 'pi': 'no pi', 'logical_sector_size': 512, 'drive_is_formatted_for_pi_information': False, 'physical_sector_size': 4096, 'connected_port_number': '0(path0)', 'coerced_size': 3998923790221.312, 'predictive_failure_count': 0, 'fde_enable': 'disable', 'non_coerced_size': 3998923790221.312, 'successful_diagnostics_completion_on': None, 'port_status': 'active', 'media_error_count': 0, 'foreign_state': None, 'link_speed': 6442450944.0, 'firmware_state': 'online, spun up', 'slot_number': 9, 'shield_counter': 0, 'sas_address(0)': '0x500056b3186e7cc9', 'device_id': 9, 'locked': 'unlocked', 'enclosure_id': 32, 'drive': 'not certified', 'enclosure_position': 1, 'other_error_count': 0, 'sequence_number': 2, 'drive_ncq_setting': None}, {'port_linkspeed': 6442450944.0, 'drive_temperature': '34c (93.20 f)', 'adapter_id': 0, 'needs_ekm_attention': False, 'device_firmware_level': '0a82', 'raw_size': 4000023301849.088, 'inquiry_data': 'wd-wcc4e0jyl397wdc wd40efrx-68wt0n0 82.00a82', 'wwn': '50014ee262eaff8a', 'drive_position': 'diskgroup:1, span:0, arm:8', 'sector_size': 512, 'fde_capable': 'not capable', 'pi_eligibility': False, 'secured': 'unsecured', 'pd_type': 'sata', 'device_speed': 6442450944.0, 'last_predictive_failure_event_seq_number': 0, 'drive_has_flagged_a_smart_alert': False, 'media_type': 'hard disk device', 'pi': 'no pi', 'logical_sector_size': 512, 'drive_is_formatted_for_pi_information': False, 'physical_sector_size': 4096, 'connected_port_number': '0(path0)', 'coerced_size': 3998923790221.312, 'predictive_failure_count': 0, 'fde_enable': 'disable', 'non_coerced_size': 3998923790221.312, 'successful_diagnostics_completion_on': None, 'port_status': 'active', 'media_error_count': 0, 'foreign_state': None, 'link_speed': 6442450944.0, 'firmware_state': 'online, spun up', 'slot_number': 10, 'shield_counter': 0, 'sas_address(0)': '0x500056b3186e7cca', 'device_id': 10, 'locked': 'unlocked', 'enclosure_id': 32, 'drive': 'not certified', 'enclosure_position': 1, 'other_error_count': 0, 'sequence_number': 2, 'drive_ncq_setting': None}]
3838
```
3939

40+
Handlig exceptions:
41+
42+
```python
43+
try:
44+
cli.bbu()
45+
except MegaCLIError as e:
46+
print("Exitcode: {0}, Message: {1}".format(e.exitcode, e.message))
47+
```
48+
4049
## Contact
4150
Matteo Cerutti - matteo.cerutti@hotmail.co.uk

megacli/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
import re
1010
import subprocess
1111

12+
class MegaCLIError(Exception):
13+
pass
14+
1215
class MegaCLI:
1316
def __init__(self, cli_path = '/opt/MegaRAID/MegaCli/MegaCli64'):
1417
self.cli_path = cli_path

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from distutils.core import setup
22

3-
version = '0.0.5'
3+
version = '0.0.6'
44

55
setup(
66
name = 'megacli',

0 commit comments

Comments
 (0)