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,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


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.47-py3-none-any.whl (163.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hiraid-1.0.47-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

Hashes for hiraid-1.0.47-py3-none-any.whl
Algorithm Hash digest
SHA256 d1220ebedf75cadc9dd29fe52986a2ac1f99193fdc2ddbca6807fcc412a4a3c8
MD5 45a718ea3e6148df9db03658c3498afe
BLAKE2b-256 92187a802dd97e7862b53a24a875f899c49203b0022fa365f4ec048a69f1ab7a

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