Skip to main content

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,0)
ports = storage.getport()
print(json.dumps(ports.view,indent=4))
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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

hiraid-1.0.22-py3-none-any.whl (153.6 kB view details)

Uploaded Python 3

File details

Details for the file hiraid-1.0.22-py3-none-any.whl.

File metadata

  • Download URL: hiraid-1.0.22-py3-none-any.whl
  • Upload date:
  • Size: 153.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.4

File hashes

Hashes for hiraid-1.0.22-py3-none-any.whl
Algorithm Hash digest
SHA256 2b95fee1743c5ab9fc0922aa63f9ecaf076c586a65c5074d5604c08d2b35e856
MD5 57589ba3c303f01699f3eb406adc90d6
BLAKE2b-256 10bfbaf9aaf53c433bf57019d630831f70bb3ba896cd1d3c552c8cceaee7c07a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page