2
0
mirror of https://opendev.org/x/pyghmi synced 2025-02-05 13:32:48 +00:00

Merge "Add support for configuring write and read policies when creating a volume."

This commit is contained in:
Zuul 2021-01-20 16:17:13 +00:00 committed by Gerrit Code Review
commit e0d284b404
3 changed files with 25 additions and 5 deletions

View File

@ -1302,10 +1302,18 @@ class XCCClient(IMMClient):
nameappend += 1
else:
name = vol.name
if vol.stripsize:
if vol.stripsize is not None:
stripsize = int(math.log(vol.stripsize * 2, 2))
else:
stripsize = props['stripsize']
if vol.read_policy is not None:
read_policy = vol.read_policy
else:
read_policy = props["cpra"]
if vol.write_policy is not None:
write_policy = vol.write_policy
else:
write_policy = props["cpwb"]
strsize = 'remainder' if vol.size is None else str(vol.size)
if strsize in ('all', '100%'):
volsize = params['capacity']
@ -1325,7 +1333,7 @@ class XCCClient(IMMClient):
raise pygexc.InvalidParameterValue(
'Requested sizes exceed available capacity')
vols.append('{0};{1};{2};{3};{4};{5};{6};{7};{8};|'.format(
name, volsize, stripsize, props['cpwb'], props['cpra'],
name, volsize, stripsize, write_policy, read_policy,
props['cpio'], props['ap'], props['dcp'], props['initstate']))
url = '/api/function'
cid = params['controller'].split(',')

View File

@ -358,10 +358,18 @@ class OEMHandler(generic.OEMHandler):
nameappend += 1
else:
name = vol.name
if vol.stripsize:
if vol.stripsize is not None:
stripsize = int(math.log(vol.stripsize * 2, 2))
else:
stripsize = props['stripsize']
if vol.read_policy is not None:
read_policy = vol.read_policy
else:
read_policy = props["cpra"]
if vol.write_policy is not None:
write_policy = vol.write_policy
else:
write_policy = props["cpwb"]
strsize = 'remainder' if vol.size is None else str(vol.size)
if strsize in ('all', '100%'):
volsize = params['capacity']
@ -382,7 +390,7 @@ class OEMHandler(generic.OEMHandler):
raise pygexc.InvalidParameterValue(
'Requested sizes exceed available capacity')
vols.append('{0};{1};{2};{3};{4};{5};{6};{7};{8};|'.format(
name, volsize, stripsize, props['cpwb'], props['cpra'],
name, volsize, stripsize, write_policy, read_policy,
props['cpio'], props['ap'], props['dcp'], props['initstate']))
url = '/api/function'
cid = params['controller'].split(',')

View File

@ -64,7 +64,7 @@ class Array(object):
class Volume(object):
def __init__(self, name=None, size=None, status=None, id=None,
stripsize=None):
stripsize=None, read_policy=None, write_policy=None):
"""Define a Volume as an object
:param name: Name of the volume
@ -72,6 +72,8 @@ class Volume(object):
:param status: Controller indicated status of the volume
:param id: Controller identifier of a given volume
:param stripsize: The stripsize of the volume in kibibytes
:param read_policy: The read policy of the volume
:param write_policy: The write policy of the volume
"""
self.name = name
if isinstance(size, int):
@ -89,6 +91,8 @@ class Volume(object):
self.status = status
self.id = id
self.stripsize = stripsize
self.read_policy = read_policy
self.write_policy = write_policy
class ConfigSpec(object):