]>
git.proxmox.com Git - ceph.git/blob - ceph/qa/tasks/util/rados.py
3 from teuthology
import misc
as teuthology
5 log
= logging
.getLogger(__name__
)
7 def rados(ctx
, remote
, cmd
, wait
=True, check_status
=False):
8 testdir
= teuthology
.get_testdir(ctx
)
9 log
.info("rados %s" % ' '.join(cmd
))
13 '{tdir}/archive/coverage'.format(tdir
=testdir
),
19 check_status
=check_status
,
23 return proc
.exitstatus
27 def create_ec_pool(remote
, name
, profile_name
, pgnum
, profile
={}, cluster_name
="ceph", application
=None):
28 remote
.run(args
=['sudo', 'ceph'] +
29 cmd_erasure_code_profile(profile_name
, profile
) + ['--cluster', cluster_name
])
31 'sudo', 'ceph', 'osd', 'pool', 'create', name
,
32 str(pgnum
), str(pgnum
), 'erasure', profile_name
, '--cluster', cluster_name
36 'sudo', 'ceph', 'osd', 'pool', 'application', 'enable', name
, application
, '--cluster', cluster_name
39 def create_replicated_pool(remote
, name
, pgnum
, cluster_name
="ceph", application
=None):
41 'sudo', 'ceph', 'osd', 'pool', 'create', name
, str(pgnum
), str(pgnum
), '--cluster', cluster_name
45 'sudo', 'ceph', 'osd', 'pool', 'application', 'enable', name
, application
, '--cluster', cluster_name
48 def create_cache_pool(remote
, base_name
, cache_name
, pgnum
, size
, cluster_name
="ceph", application
=None):
50 'sudo', 'ceph', 'osd', 'pool', 'create', cache_name
, str(pgnum
), '--cluster', cluster_name
53 'sudo', 'ceph', 'osd', 'tier', 'add-cache', base_name
, cache_name
,
54 str(size
), '--cluster', cluster_name
58 'sudo', 'ceph', 'osd', 'pool', 'application', 'enable', name
, application
, '--cluster', cluster_name
61 def cmd_erasure_code_profile(profile_name
, profile
):
63 Return the shell command to run to create the erasure code profile
64 described by the profile parameter.
66 :param profile_name: a string matching [A-Za-z0-9-_.]+
67 :param profile: a map whose semantic depends on the erasure code plugin
68 :returns: a shell command as an array suitable for Remote.run
70 If profile is {}, it is replaced with
72 { 'k': '2', 'm': '1', 'crush-failure-domain': 'osd'}
74 for backward compatibility. In previous versions of teuthology,
75 these values were hardcoded as function arguments and some yaml
76 files were designed with these implicit values. The teuthology
77 code should not know anything about the erasure code profile
78 content or semantic. The valid values and parameters are outside
86 'crush-failure-domain': 'osd'
89 'osd', 'erasure-code-profile', 'set',
91 ] + [ str(key
) + '=' + str(value
) for key
, value
in profile
.iteritems() ]