physical disks

This commit is contained in:
Solvik Blum 2019-08-20 16:55:29 +02:00
parent 6a9593f33d
commit b90cee6b35
No known key found for this signature in database
GPG key ID: CC12B3DC262B6C47
3 changed files with 68 additions and 11 deletions

View file

@ -4,8 +4,9 @@ import json
from netbox_agent.raid.base import Raid, RaidController
class StorcliController(RaidController):
def __init__(self, data):
def __init__(self, controller_index, data):
self.data = data
self.controller_index = controller_index
def get_product_name(self):
return self.data['Product Name']
@ -19,6 +20,25 @@ class StorcliController(RaidController):
def get_firmware_version(self):
return self.data['FW Package Build']
def get_physical_disks(self):
ret = []
output = subprocess.getoutput('storcli /c{}/eall/sall show all J'.format(self.controller_index))
drive_infos = json.loads(output)['Controllers'][self.controller_index]['Response Data']
for physical_drive in self.data['PD LIST']:
enclosure = physical_drive.get('EID:Slt').split(':')[0]
slot = physical_drive.get('EID:Slt').split(':')[1]
size = physical_drive.get('Size').strip()
drive_identifier = 'Drive /c{}/e{}/s{}'.format(str(self.controller_index), str(enclosure), str(slot))
drive_attr = drive_infos['{} - Detailed Information'.format(drive_identifier)]\
['{} Device attributes'.format(drive_identifier)]
ret.append({
'Model': drive_attr.get('Model Number', '').strip(),
'SN': drive_attr.get('SN', '').strip(),
'Size': size,
})
return ret
class StorcliRaid(Raid):
def __init__(self):
self.output = subprocess.getoutput('storcli /call show J')
@ -31,7 +51,10 @@ class StorcliRaid(Raid):
]) > 0:
for controller in self.data['Controllers']:
self.controllers.append(
StorcliController(controller['Response Data'])
StorcliController(
controller['Command Status']['Controller'],
controller['Response Data']
)
)
def get_controllers(self):