mirror of
https://github.com/ceph/ceph
synced 2024-12-25 12:54:16 +00:00
dc7a2aaf7a
1) ruleset is an obsolete term, and 2) crush-{rule,failure-domain,...} is more descriptive. Note that we are changing the names of the erasure code profile keys from ruleset-* to crush-*. We will update this on upgrade when the luminous flag is set, but that means that during mon upgrade you cannot create EC pools that use these fields. When the upgrade completes (users sets require_osd_release = luminous) existing ec profiles are updated automatically. Signed-off-by: Sage Weil <sage@redhat.com>
80 lines
2.6 KiB
Python
80 lines
2.6 KiB
Python
import logging
|
|
|
|
from teuthology import misc as teuthology
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
def rados(ctx, remote, cmd, wait=True, check_status=False):
|
|
testdir = teuthology.get_testdir(ctx)
|
|
log.info("rados %s" % ' '.join(cmd))
|
|
pre = [
|
|
'adjust-ulimits',
|
|
'ceph-coverage',
|
|
'{tdir}/archive/coverage'.format(tdir=testdir),
|
|
'rados',
|
|
];
|
|
pre.extend(cmd)
|
|
proc = remote.run(
|
|
args=pre,
|
|
check_status=check_status,
|
|
wait=wait,
|
|
)
|
|
if wait:
|
|
return proc.exitstatus
|
|
else:
|
|
return proc
|
|
|
|
def create_ec_pool(remote, name, profile_name, pgnum, profile={}, cluster_name="ceph"):
|
|
remote.run(args=['sudo', 'ceph'] +
|
|
cmd_erasure_code_profile(profile_name, profile) + ['--cluster', cluster_name])
|
|
remote.run(args=[
|
|
'sudo', 'ceph', 'osd', 'pool', 'create', name,
|
|
str(pgnum), str(pgnum), 'erasure', profile_name, '--cluster', cluster_name
|
|
])
|
|
|
|
def create_replicated_pool(remote, name, pgnum, cluster_name="ceph"):
|
|
remote.run(args=[
|
|
'sudo', 'ceph', 'osd', 'pool', 'create', name, str(pgnum), str(pgnum), '--cluster', cluster_name
|
|
])
|
|
|
|
def create_cache_pool(remote, base_name, cache_name, pgnum, size, cluster_name="ceph"):
|
|
remote.run(args=[
|
|
'sudo', 'ceph', 'osd', 'pool', 'create', cache_name, str(pgnum), '--cluster', cluster_name
|
|
])
|
|
remote.run(args=[
|
|
'sudo', 'ceph', 'osd', 'tier', 'add-cache', base_name, cache_name,
|
|
str(size), '--cluster', cluster_name
|
|
])
|
|
|
|
def cmd_erasure_code_profile(profile_name, profile):
|
|
"""
|
|
Return the shell command to run to create the erasure code profile
|
|
described by the profile parameter.
|
|
|
|
:param profile_name: a string matching [A-Za-z0-9-_.]+
|
|
:param profile: a map whose semantic depends on the erasure code plugin
|
|
:returns: a shell command as an array suitable for Remote.run
|
|
|
|
If profile is {}, it is replaced with
|
|
|
|
{ 'k': '2', 'm': '1', 'crush-failure-domain': 'osd'}
|
|
|
|
for backward compatibility. In previous versions of teuthology,
|
|
these values were hardcoded as function arguments and some yaml
|
|
files were designed with these implicit values. The teuthology
|
|
code should not know anything about the erasure code profile
|
|
content or semantic. The valid values and parameters are outside
|
|
its scope.
|
|
"""
|
|
|
|
if profile == {}:
|
|
profile = {
|
|
'k': '2',
|
|
'm': '1',
|
|
'crush-failure-domain': 'osd'
|
|
}
|
|
return [
|
|
'osd', 'erasure-code-profile', 'set',
|
|
profile_name
|
|
] + [ str(key) + '=' + str(value) for key, value in profile.iteritems() ]
|