Add support for failover states in opencas.conf
Signed-off-by: Jan Musial <jan.musial@intel.com>
This commit is contained in:
parent
a187813d13
commit
fa167c267f
@ -60,8 +60,9 @@ class casadm:
|
|||||||
return cls.run_cmd(cmd)
|
return cls.run_cmd(cmd)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def start_cache(cls, device, cache_id=None, cache_mode=None,
|
def start_cache(
|
||||||
cache_line_size=None, load=False, force=False):
|
cls, device, cache_id=None, cache_mode=None, cache_line_size=None, load=False, force=False
|
||||||
|
):
|
||||||
cmd = [cls.casadm_path,
|
cmd = [cls.casadm_path,
|
||||||
'--start-cache',
|
'--start-cache',
|
||||||
'--cache-device', device]
|
'--cache-device', device]
|
||||||
@ -77,6 +78,22 @@ class casadm:
|
|||||||
cmd += ['--force']
|
cmd += ['--force']
|
||||||
return cls.run_cmd(cmd)
|
return cls.run_cmd(cmd)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def start_standby_cache(
|
||||||
|
cls, device, cache_id=None, cache_line_size=None, load=False, force=False
|
||||||
|
):
|
||||||
|
cmd = [cls.casadm_path,
|
||||||
|
'--standby',
|
||||||
|
'--init' if not load else '--load',
|
||||||
|
'--cache-device', device]
|
||||||
|
if cache_id:
|
||||||
|
cmd += ['--cache-id', str(cache_id)]
|
||||||
|
if cache_line_size:
|
||||||
|
cmd += ['--cache-line-size', str(cache_line_size)]
|
||||||
|
if force:
|
||||||
|
cmd += ['--force']
|
||||||
|
return cls.run_cmd(cmd)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def add_core(cls, device, cache_id, core_id=None, try_add=False):
|
def add_core(cls, device, cache_id, core_id=None, try_add=False):
|
||||||
cmd = [cls.casadm_path,
|
cmd = [cls.casadm_path,
|
||||||
@ -250,6 +267,8 @@ class cas_config(object):
|
|||||||
self.check_cache_line_size_valid(param_value)
|
self.check_cache_line_size_valid(param_value)
|
||||||
elif param_name == "lazy_startup":
|
elif param_name == "lazy_startup":
|
||||||
self.check_lazy_startup_valid(param_value)
|
self.check_lazy_startup_valid(param_value)
|
||||||
|
elif param_name == "target_failover_state":
|
||||||
|
self.check_failover_state_valid(param_value)
|
||||||
else:
|
else:
|
||||||
raise ValueError(f'{param_name} is invalid parameter name')
|
raise ValueError(f'{param_name} is invalid parameter name')
|
||||||
|
|
||||||
@ -284,6 +303,10 @@ class cas_config(object):
|
|||||||
if lazy_startup not in ["true", "false"]:
|
if lazy_startup not in ["true", "false"]:
|
||||||
raise ValueError('{0} is invalid lazy_startup value'.format(lazy_startup))
|
raise ValueError('{0} is invalid lazy_startup value'.format(lazy_startup))
|
||||||
|
|
||||||
|
def check_failover_state_valid(self, failover_state):
|
||||||
|
if failover_state not in ["active", "standby"]:
|
||||||
|
raise ValueError(f"{failover_state} is invalid target_failover_state value")
|
||||||
|
|
||||||
def check_promotion_policy_valid(self, promotion_policy):
|
def check_promotion_policy_valid(self, promotion_policy):
|
||||||
if promotion_policy not in ['always', 'nhit']:
|
if promotion_policy not in ['always', 'nhit']:
|
||||||
raise ValueError(f'{promotion_policy} is invalid promotion policy name')
|
raise ValueError(f'{promotion_policy} is invalid promotion policy name')
|
||||||
@ -545,13 +568,24 @@ class cas_config(object):
|
|||||||
|
|
||||||
|
|
||||||
def start_cache(cache, load, force=False):
|
def start_cache(cache, load, force=False):
|
||||||
casadm.start_cache(
|
target_state = cache.params.get("target_failover_state")
|
||||||
|
if target_state is not None and target_state == "standby":
|
||||||
|
casadm.start_standby_cache(
|
||||||
device=cache.device,
|
device=cache.device,
|
||||||
cache_id=cache.cache_id,
|
cache_id=cache.cache_id if not load else None,
|
||||||
cache_mode=cache.cache_mode,
|
cache_line_size=cache.params.get("cache_line_size") if not load else None,
|
||||||
cache_line_size=cache.params.get('cache_line_size'),
|
|
||||||
load=load,
|
load=load,
|
||||||
force=force)
|
force=force
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
casadm.start_cache(
|
||||||
|
device=cache.device,
|
||||||
|
cache_id=cache.cache_id if not load else None,
|
||||||
|
cache_mode=cache.cache_mode if not load else None,
|
||||||
|
cache_line_size=cache.params.get('cache_line_size') if not load else None,
|
||||||
|
load=load,
|
||||||
|
force=force
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def configure_cache(cache):
|
def configure_cache(cache):
|
||||||
|
Loading…
Reference in New Issue
Block a user