Make EC profiles immutable
Changing an existing EC profile can have some nasty side effects including crashing OSD's (which is why its guarded with a --force). Update the ceph helper to log a warning and return if an EC profile already exists, effectively making them immutable and avoiding any related issues. Reconfiguration of a pool would be undertaking using actions: - create new EC profile - create new pool using new EC profile - copy data from old pool to new pool - rename old pool - rename new pool to original pool name this obviously requires an outage in the consuming application. Change-Id: I630f6b6c5e3c6dd252a85cd373d7e204b9e77245 Closes-Bug: 1897517
This commit is contained in:
parent
12682da2fc
commit
8e74666ff3
@ -1074,7 +1074,10 @@ def create_erasure_profile(service, profile_name,
|
|||||||
erasure_plugin_technique=None):
|
erasure_plugin_technique=None):
|
||||||
"""Create a new erasure code profile if one does not already exist for it.
|
"""Create a new erasure code profile if one does not already exist for it.
|
||||||
|
|
||||||
Updates the profile if it exists. Please refer to [0] for more details.
|
Profiles are considered immutable so will not be updated if the named
|
||||||
|
profile already exists.
|
||||||
|
|
||||||
|
Please refer to [0] for more details.
|
||||||
|
|
||||||
0: http://docs.ceph.com/docs/master/rados/operations/erasure-code-profile/
|
0: http://docs.ceph.com/docs/master/rados/operations/erasure-code-profile/
|
||||||
|
|
||||||
@ -1110,6 +1113,11 @@ def create_erasure_profile(service, profile_name,
|
|||||||
:type erasure_plugin_technique: str
|
:type erasure_plugin_technique: str
|
||||||
:return: None. Can raise CalledProcessError, ValueError or AssertionError
|
:return: None. Can raise CalledProcessError, ValueError or AssertionError
|
||||||
"""
|
"""
|
||||||
|
if erasure_profile_exists(service, profile_name):
|
||||||
|
log('EC profile {} exists, skipping update'.format(profile_name),
|
||||||
|
level=WARNING)
|
||||||
|
return
|
||||||
|
|
||||||
plugin_techniques = {
|
plugin_techniques = {
|
||||||
'jerasure': [
|
'jerasure': [
|
||||||
'reed_sol_van',
|
'reed_sol_van',
|
||||||
@ -1209,9 +1217,6 @@ def create_erasure_profile(service, profile_name,
|
|||||||
if scalar_mds:
|
if scalar_mds:
|
||||||
cmd.append('scalar-mds={}'.format(scalar_mds))
|
cmd.append('scalar-mds={}'.format(scalar_mds))
|
||||||
|
|
||||||
if erasure_profile_exists(service, profile_name):
|
|
||||||
cmd.append('--force')
|
|
||||||
|
|
||||||
check_call(cmd)
|
check_call(cmd)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user