Hitachi raidcom wrapper
Project description
Work in progress
hiraid is a Python raidcom wrapper for communicating with Hitachi enterprise storage arrays. raidcom output is parsed to json and also stored beneath storageobject.views.
The primary purpose of this library is to underpin the Hitachi Vantara opensource ansible project: https://github.com/hv-ps/Hitachi.Raidcom.Ansible
Install Latest
pip3 install git+https://github.com/hv-ps/hiraid.git
Quick start
from hiraid.raidcom import Raidcom
storage_serial = 53511
horcm_instance = 0
storage = Raidcom(storage_serial,horcm_instance)
ports = storage.getport()
print(json.dumps(ports.view,indent=4))
print(ports.data)
print(json.dumps(ports.stats))
Index your host groups, luns and associated ldevs
storage.getpool(key='basic')
ports = storage.getport().view.keys()
hostgroups = storage.concurrent_gethostgrps(ports=ports)
allhsds = [f"{port}-{gid}" for port in hostgroups.view for gid in hostgroups.view[port]['_GIDS']]
storage.concurrent_getportlogins(ports=ports)
storage.concurrent_gethbawwns(portgids=allhsds)
storage.concurrent_getluns(portgids=allhsds)
ldevlist = set([ self.raidcom.views['_ports'][port]['_GIDS'][gid]['_LUNS'][lun]['LDEV'] for port in self.raidcom.views['_ports'] for gid in self.raidcom.views['_ports'][port].get('_GIDS',{}) for lun in self.raidcom.views['_ports'][port]['_GIDS'][gid].get('LUNS',{}) ])
storage.concurrent_getldevs(ldevlist)
file = f"/var/tmp/{storage.serial}__{datetime.now().strftime('%d-%m-%Y%H.%M.%S')}.json"
with open(file,'w') as w:
w.write(json.dumps(storage.views,indent=4))
raidqry
rq = storage.raidqry()
rq = storage.raidqry(datafilter={'Serial#':'350147'})
rq = storage.raidqry(datafilter={'callable':lambda a : int(a['Cache(MB)']) > 50000})
print(rq.data)
print(rq.view)
print(rq.cmd)
print(rq.returncode)
print(rq.stdout)
print(rq.stderr)
getldev
l = storage.getldev(ldev_id=20000)
l = storage.getldev(ldev_id=20000-21000,datafilter={'LDEV_NAMING':'HAVING_THIS_LABEL'})
l = storage.getldev(ldev_id=20000-21000,datafilter={'callable':lambda a : float(a.get(Used_Block(GB)',0)) > 960000})
for ldev in l.data:
print(ldev['LDEV'])
getport
p = storage.getport()
p = storage.getport(datafilter={'callable':lambda a : a['TYPE'] == 'FIBRE' and 'TAR' in a['ATTR']})
gethostgrp
h = storage.gethostgrp(port="cl1-a")
h = storage.gethostgrp(port="cl1-a",datafilter={'HMD':''VMWARE_EX'})
h = storage.gethostgrp(port="cl1-a",datafilter={'callable':lambda a : 'TEST' in a['GROUP_NAME']})
gethostgrp_key_detail
h = storage.gethostgrp_key_detail(port="cl1-a")
h = storage.gethostgrp_key_detail(port="cl1-a",datafilter={'HMD':''VMWARE_EX'})
h = storage.gethostgrp_key_detail(port="cl1-a",datafilter={'callable':lambda a : 'TEST' in a['GROUP_NAME']})
getlun
l = storage.getlun(port="cl1-a-1")
l = storage.getlun(port="cl1-a-1",datafilter={'LDEV':['12001','12002']})
l = storage.getlun(port="cl1-e-1",datafilter={'callable':lambda a : int(a['LUN']) > 10})
l = storage.getlun(port="cl1-e-1",datafilter={'callable':lambda a : int(a['LDEV']) > 12000})
getpool
p = storage.getpool()
getcommandstatus
resetcommandstatus
lockresource
unlockresource
raidqry
getresource
getresourcebyname
getldevlist
gethbawwn
getportlogin
getcopygrp
getpath
getparitygrp
getlicense
getsnapshot
getsnapshotgroup
addsnapshotgroup
createsnapshot
unmapsnapshotsvol
resyncsnapshotmu
snapshotevtwait
snapshotgroupevtwait
deletesnapshotmu
addldev
extendldev
deleteldev
addresource
deleteresource
addhostgrpresource
deletehostgrpresourceid
addhostgrpresourceid
addldevresource
deleteldevresourceid
deleteldevresource
addhostgrp
deletehostgrp
resethostgrp
addlun
deletelun
unmapldev
mapldev
modifyldevname
modifyldevcapacitysaving
modifyhostgrp
adddevicegrp
addcopygrp
addhbawwn
addwwnnickname
setwwnnickname
gethostgrptcscan
raidscanremote
raidscanmu
getrcu
gethostgrprgid
concurrent_gethostgrps
concurrent_gethbawwns
concurrent_getluns
concurrent_getldevs
concurrent_getportlogins
concurrent_raidscanremote
concurrent_addluns
concurrent_addldevs
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
File details
Details for the file hiraid-1.0.46-py3-none-any.whl
.
File metadata
- Download URL: hiraid-1.0.46-py3-none-any.whl
- Upload date:
- Size: 163.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2b65c6c633306f5d5521377239adbb4c6d6171ef6cfac3a7948fd89e5f2fc53 |
|
MD5 | ca9db4e800a8cb24b3e3e1178eaeaf2f |
|
BLAKE2b-256 | f423e016ee9ec35a757cf61d447d52bee9826a92eb32054c089babd20233080e |