Skip to content

Instantly share code, notes, and snippets.

@sebastian-philipp
Last active June 18, 2019 06:27
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sebastian-philipp/47c485c57dc9718f1e90bb3bbc0d0970 to your computer and use it in GitHub Desktop.
Save sebastian-philipp/47c485c57dc9718f1e90bb3bbc0d0970 to your computer and use it in GitHub Desktop.
#!/usr/bin/python
import json
import rados
import sys
from itertools import groupby
PY2 = False
def run_command(cluster_handle, cmd):
return cluster_handle.mon_command(json.dumps(cmd), b'', timeout=5)
header="""'''
This file is automatically generated.
Do not modify.
'''
import sys
import functools
import warnings
import json
if sys.version_info > (3, 0):
from typing import List, overload
def deprecated(func):
@functools.wraps(func)
def new_func(*args, **kwargs):
warnings.simplefilter('always', DeprecationWarning) # turn off filter
warnings.warn("Call to deprecated function {}.".format(func.__name__),
category=DeprecationWarning,
stacklevel=2)
warnings.simplefilter('default', DeprecationWarning) # reset filter
return func(*args, **kwargs)
return new_func
class MonCommandApi(object):
def __init__(self, cluster):
self._cluster = cluster
def _mon_command(self, cmd, inbuf=b'', target=None):
return self._cluster.mon_command(json.dumps(cmd), inbuf=inbuf, target=target)"""
func_template = '''
def {}({}):
"""
{}
{}
module={} perm={} flags={}
"""
prefix = '{}'
_args = {{'prefix': prefix, {}}}
return self._mon_command(_args)
'''
footer = """
if __name__ == '__main__':
import rados
with rados.Rados(conffile=sys.argv[1]) as cluster:
meth = getattr(MonCommandApi(cluster), sys.argv[2])
try:
print(meth(*sys.argv[3:]))
except TypeError:
help(meth)
"""
def indent(s):
return '\n'.join(' '*4 + l for l in s.splitlines())
def comment(s):
return '\n'.join('# ' + l for l in s.splitlines())
class Flags:
NOFORWARD = (1 << 0)
OBSOLETE = (1 << 1)
DEPRECATED = (1 << 2)
MGR = (1<<3)
POLL = (1 << 4)
HIDDEN = (1 << 5)
VALS = {
NOFORWARD: 'no_forward',
OBSOLETE: 'obsolete',
DEPRECATED: 'deprecated',
MGR: 'mgr',
POLL: 'poll',
HIDDEN: 'hidden',
}
def __init__(self, fs):
self.fs = fs
def __contains__(self, other):
return other in str(self)
def __str__(self):
keys = Flags.VALS.keys()
es = {Flags.VALS[k] for k in keys if self.fs & k == k}
return ', '.join(es)
class Param(object):
t = {
'CephInt': 'int',
'CephString': 'str',
'CephChoices': 'str',
'CephPgid': 'str',
'CephOsdName': 'str',
'CephPoolname': 'str',
'CephObjectname': 'str',
'CephUUID': 'str',
'CephEntityAddr': 'str',
'CephIPAddr': 'str',
'CephName': 'str',
'CephBool': 'bool',
'CephFloat': 'float',
}
def __init__(self, type, name, who=None, n=None, req=True, range=None, strings=None, goodchars=None):
self.type = type
self.name = name
self.who = who
self.n = n == 'N'
self.req = req != 'false'
self.range = range
self.strings = strings
self.goodchars = goodchars
assert who == None
def safe_name(self):
unsafe = ['from', 'class', 'id']
return self.name + '_' if self.name in unsafe else self.name
def help(self):
advanced = ''
if self.range:
advanced += 'ragne={} '.format(self.range)
if self.strings:
advanced += 'strings={} '.format(self.strings)
if self.goodchars:
advanced += 'goodchars={} '.format(self.goodchars)
return ' :param {}: {} {}'.format(self.safe_name(), self.type, advanced)
def mk_default(self):
if not self.req:
return '=None'
return ''
def mk_type(self):
if PY2:
return ''
inner = Param.t[self.type]
return ': List[{}]'.format(inner) if self.n else ': ' + inner
def mk_dict(self):
return "'{}': {}".format(self.name, self.safe_name())
def __str__(self):
return '{}{}{}'.format(self.safe_name(), self.mk_type(), self.mk_default())
class FuncSig(object):
def __init__(self, sig, help, module, perm, flags):
self.sig = [s for s in sig if isinstance(s, basestring)]
self.params = sorted([Param(**s) for s in sig if not isinstance(s, basestring)], key=lambda p: p.req, reverse=True)
self.help = help
self.module = module
self.perm = perm
self.flags = Flags(flags)
self.needs_overload = False
def name(self):
return '_'.join([e.replace('-', '_') for e in self.sig])
def prefix(self):
return ' '.join(self.sig)
def mk_params(self):
if self.params:
return 'self, ' + ', '.join([str(p) for p in self.params])
else:
return 'self'
def mk_param_help(self):
return '\n'.join([f.help() for f in self.params])
def mk_mk_dict(self):
return ', '.join([p.mk_dict() for p in self.params])
def __str__(self):
out = func_template.format(self.name(), self.mk_params(), self.help, self.mk_param_help(), self.module, self.perm, str(self.flags), self.prefix(), self.mk_mk_dict())
if self.needs_overload:
out = '\n@overload # Python 3 only' + out
if 'deprecated' in self.flags or 'obsolete' in self.flags:
out = '\n@deprecated' + out
if self.needs_overload and PY2:
out = comment(out)
return out
def set_overload(funcs):
for k, g in groupby(funcs, key=lambda f: f.name()):
g = list(g)
if len(g) > 1:
for f in g:
f.needs_overload = True
def mk_sigs(cluster):
all = json.loads(run_command(cluster, {"prefix": "get_command_descriptions"})[1])
#print(all)
sigs = [FuncSig(**e[1]) for e in all.items()]
sigs = sorted(sigs, key=lambda f: f.sig)
set_overload(sigs)
print(header)
print('\n'.join([indent(str(s)) for s in sigs]))
print(footer)
def main(conf, py_ver='3'):
cluster = rados.Rados(conffile=conf)
cluster.connect()
global PY2
PY2 = py_ver == '2'
mk_sigs(cluster)
if __name__ == '__main__':
main(*sys.argv[1:])
'''
This file is automatically generated.
Do not modify.
'''
import sys
import functools
import warnings
import json
if sys.version_info > (3, 0):
from typing import List, overload
def deprecated(func):
@functools.wraps(func)
def new_func(*args, **kwargs):
warnings.simplefilter('always', DeprecationWarning) # turn off filter
warnings.warn("Call to deprecated function {}.".format(func.__name__),
category=DeprecationWarning,
stacklevel=2)
warnings.simplefilter('default', DeprecationWarning) # reset filter
return func(*args, **kwargs)
return new_func
class MonCommandApi(object):
def __init__(self, cluster):
self._cluster = cluster
def _mon_command(self, cmd, inbuf=b'', target=None):
return self._cluster.mon_command(json.dumps(cmd), inbuf=inbuf, target=target)
def auth_add(self, entity: str, caps: List[str]=None):
"""
add auth info for <entity> from input file, or random key if no input is given, and/or any caps specified in the command
:param entity: CephString
:param caps: CephString
module=auth perm=rwx flags=
"""
prefix = 'auth add'
_args = {'prefix': prefix, 'entity': entity, 'caps': caps}
return self._mon_command(_args)
def auth_caps(self, entity: str, caps: List[str]):
"""
update caps for <name> from caps specified in the command
:param entity: CephString
:param caps: CephString
module=auth perm=rwx flags=
"""
prefix = 'auth caps'
_args = {'prefix': prefix, 'entity': entity, 'caps': caps}
return self._mon_command(_args)
@deprecated
def auth_del(self, entity: str):
"""
delete all caps for <name>
:param entity: CephString
module=auth perm=rwx flags=deprecated
"""
prefix = 'auth del'
_args = {'prefix': prefix, 'entity': entity}
return self._mon_command(_args)
def auth_export(self, entity: str=None):
"""
write keyring for requested entity, or master keyring if none given
:param entity: CephString
module=auth perm=rx flags=
"""
prefix = 'auth export'
_args = {'prefix': prefix, 'entity': entity}
return self._mon_command(_args)
def auth_get(self, entity: str):
"""
write keyring file with requested key
:param entity: CephString
module=auth perm=rx flags=
"""
prefix = 'auth get'
_args = {'prefix': prefix, 'entity': entity}
return self._mon_command(_args)
def auth_get_key(self, entity: str):
"""
display requested key
:param entity: CephString
module=auth perm=rx flags=
"""
prefix = 'auth get-key'
_args = {'prefix': prefix, 'entity': entity}
return self._mon_command(_args)
def auth_get_or_create(self, entity: str, caps: List[str]=None):
"""
add auth info for <entity> from input file, or random key if no input given, and/or any caps specified in the command
:param entity: CephString
:param caps: CephString
module=auth perm=rwx flags=
"""
prefix = 'auth get-or-create'
_args = {'prefix': prefix, 'entity': entity, 'caps': caps}
return self._mon_command(_args)
def auth_get_or_create_key(self, entity: str, caps: List[str]=None):
"""
get, or add, key for <name> from system/caps pairs specified in the command. If key already exists, any given caps must match the existing caps for that key.
:param entity: CephString
:param caps: CephString
module=auth perm=rwx flags=
"""
prefix = 'auth get-or-create-key'
_args = {'prefix': prefix, 'entity': entity, 'caps': caps}
return self._mon_command(_args)
def auth_import(self):
"""
auth import: read keyring file from -i <file>
module=auth perm=rwx flags=
"""
prefix = 'auth import'
_args = {'prefix': prefix, }
return self._mon_command(_args)
@deprecated
def auth_list(self):
"""
list authentication state
module=auth perm=rx flags=deprecated
"""
prefix = 'auth list'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def auth_ls(self):
"""
list authentication state
module=auth perm=rx flags=
"""
prefix = 'auth ls'
_args = {'prefix': prefix, }
return self._mon_command(_args)
@overload # Python 3 only
def auth_print_key(self, entity: str):
"""
display requested key
:param entity: CephString
module=auth perm=rx flags=
"""
prefix = 'auth print-key'
_args = {'prefix': prefix, 'entity': entity}
return self._mon_command(_args)
@overload # Python 3 only
def auth_print_key(self, entity: str):
"""
display requested key
:param entity: CephString
module=auth perm=rx flags=
"""
prefix = 'auth print_key'
_args = {'prefix': prefix, 'entity': entity}
return self._mon_command(_args)
def auth_rm(self, entity: str):
"""
remove all caps for <name>
:param entity: CephString
module=auth perm=rwx flags=
"""
prefix = 'auth rm'
_args = {'prefix': prefix, 'entity': entity}
return self._mon_command(_args)
def balancer_dump(self, plan: str):
"""
Show an optimization plan
:param plan: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'balancer dump'
_args = {'prefix': prefix, 'plan': plan}
return self._mon_command(_args)
def balancer_eval(self, option: str=None):
"""
Evaluate data distribution for the current cluster or specific pool or specific plan
:param option: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'balancer eval'
_args = {'prefix': prefix, 'option': option}
return self._mon_command(_args)
def balancer_eval_verbose(self, option: str=None):
"""
Evaluate data distribution for the current cluster or specific pool or specific plan (verbosely)
:param option: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'balancer eval-verbose'
_args = {'prefix': prefix, 'option': option}
return self._mon_command(_args)
def balancer_execute(self, plan: str):
"""
Execute an optimization plan
:param plan: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'balancer execute'
_args = {'prefix': prefix, 'plan': plan}
return self._mon_command(_args)
def balancer_ls(self):
"""
List all plans
module=mgr perm=r flags=mgr
"""
prefix = 'balancer ls'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def balancer_mode(self, mode: str):
"""
Set balancer mode
:param mode: CephChoices strings=none|crush-compat|upmap
module=mgr perm=rw flags=mgr
"""
prefix = 'balancer mode'
_args = {'prefix': prefix, 'mode': mode}
return self._mon_command(_args)
def balancer_off(self):
"""
Disable automatic balancing
module=mgr perm=rw flags=mgr
"""
prefix = 'balancer off'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def balancer_on(self):
"""
Enable automatic balancing
module=mgr perm=rw flags=mgr
"""
prefix = 'balancer on'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def balancer_optimize(self, plan: str, pools: List[str]=None):
"""
Run optimizer to create a new plan
:param plan: CephString
:param pools: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'balancer optimize'
_args = {'prefix': prefix, 'plan': plan, 'pools': pools}
return self._mon_command(_args)
def balancer_pool_add(self, pools: List[str]):
"""
Enable automatic balancing for specific pools
:param pools: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'balancer pool add'
_args = {'prefix': prefix, 'pools': pools}
return self._mon_command(_args)
def balancer_pool_ls(self):
"""
List automatic balancing pools. Note that empty list means all existing pools will be automatic balancing targets, which is the default behaviour of balancer.
module=mgr perm=r flags=mgr
"""
prefix = 'balancer pool ls'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def balancer_pool_rm(self, pools: List[str]):
"""
Disable automatic balancing for specific pools
:param pools: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'balancer pool rm'
_args = {'prefix': prefix, 'pools': pools}
return self._mon_command(_args)
def balancer_reset(self):
"""
Discard all optimization plans
module=mgr perm=rw flags=mgr
"""
prefix = 'balancer reset'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def balancer_rm(self, plan: str):
"""
Discard an optimization plan
:param plan: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'balancer rm'
_args = {'prefix': prefix, 'plan': plan}
return self._mon_command(_args)
def balancer_show(self, plan: str):
"""
Show details of an optimization plan
:param plan: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'balancer show'
_args = {'prefix': prefix, 'plan': plan}
return self._mon_command(_args)
def balancer_status(self):
"""
Show balancer status
module=mgr perm=r flags=mgr
"""
prefix = 'balancer status'
_args = {'prefix': prefix, }
return self._mon_command(_args)
@deprecated
def compact(self):
"""
cause compaction of monitor's leveldb/rocksdb storage
module=mon perm=rw flags=deprecated, no_forward
"""
prefix = 'compact'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def config_assimilate_conf(self):
"""
Assimilate options from a conf, and return a new, minimal conf file
module=config perm=rw flags=
"""
prefix = 'config assimilate-conf'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def config_dump(self):
"""
Show all configuration option(s)
module=mon perm=r flags=
"""
prefix = 'config dump'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def config_generate_minimal_conf(self):
"""
Generate a minimal ceph.conf file
module=config perm=r flags=
"""
prefix = 'config generate-minimal-conf'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def config_get(self, who: str, key: str):
"""
Show configuration option(s) for an entity
:param who: CephString
:param key: CephString
module=config perm=r flags=
"""
prefix = 'config get'
_args = {'prefix': prefix, 'who': who, 'key': key}
return self._mon_command(_args)
def config_help(self, key: str):
"""
Describe a configuration option
:param key: CephString
module=config perm=r flags=
"""
prefix = 'config help'
_args = {'prefix': prefix, 'key': key}
return self._mon_command(_args)
def config_log(self, num: int):
"""
Show recent history of config changes
:param num: CephInt
module=config perm=r flags=
"""
prefix = 'config log'
_args = {'prefix': prefix, 'num': num}
return self._mon_command(_args)
def config_ls(self):
"""
List available configuration options
module=config perm=r flags=
"""
prefix = 'config ls'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def config_reset(self, num: int):
"""
Revert configuration to a historical version specified by <num>
:param num: CephInt ragne=0
module=config perm=rw flags=
"""
prefix = 'config reset'
_args = {'prefix': prefix, 'num': num}
return self._mon_command(_args)
def config_rm(self, who: str, name: str):
"""
Clear a configuration option for one or more entities
:param who: CephString
:param name: CephString
module=config perm=rw flags=
"""
prefix = 'config rm'
_args = {'prefix': prefix, 'who': who, 'name': name}
return self._mon_command(_args)
def config_set(self, who: str, name: str, value: str, force: bool=None):
"""
Set a configuration option for one or more entities
:param who: CephString
:param name: CephString
:param value: CephString
:param force: CephBool
module=config perm=rw flags=
"""
prefix = 'config set'
_args = {'prefix': prefix, 'who': who, 'name': name, 'value': value, 'force': force}
return self._mon_command(_args)
def config_show(self, who: str, key: str):
"""
Show running configuration
:param who: CephString
:param key: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'config show'
_args = {'prefix': prefix, 'who': who, 'key': key}
return self._mon_command(_args)
def config_show_with_defaults(self, who: str):
"""
Show running configuration (including compiled-in defaults)
:param who: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'config show-with-defaults'
_args = {'prefix': prefix, 'who': who}
return self._mon_command(_args)
@deprecated
def config_key_del(self, key: str):
"""
delete <key>
:param key: CephString
module=config-key perm=rw flags=deprecated
"""
prefix = 'config-key del'
_args = {'prefix': prefix, 'key': key}
return self._mon_command(_args)
def config_key_dump(self, key: str=None):
"""
dump keys and values (with optional prefix)
:param key: CephString
module=config-key perm=r flags=
"""
prefix = 'config-key dump'
_args = {'prefix': prefix, 'key': key}
return self._mon_command(_args)
def config_key_exists(self, key: str):
"""
check for <key>'s existence
:param key: CephString
module=config-key perm=r flags=
"""
prefix = 'config-key exists'
_args = {'prefix': prefix, 'key': key}
return self._mon_command(_args)
def config_key_get(self, key: str):
"""
get <key>
:param key: CephString
module=config-key perm=r flags=
"""
prefix = 'config-key get'
_args = {'prefix': prefix, 'key': key}
return self._mon_command(_args)
@deprecated
def config_key_list(self):
"""
list keys
module=config-key perm=r flags=deprecated
"""
prefix = 'config-key list'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def config_key_ls(self):
"""
list keys
module=config-key perm=r flags=
"""
prefix = 'config-key ls'
_args = {'prefix': prefix, }
return self._mon_command(_args)
@deprecated
def config_key_put(self, key: str, val: str=None):
"""
put <key>, value <val>
:param key: CephString
:param val: CephString
module=config-key perm=rw flags=deprecated
"""
prefix = 'config-key put'
_args = {'prefix': prefix, 'key': key, 'val': val}
return self._mon_command(_args)
def config_key_rm(self, key: str):
"""
rm <key>
:param key: CephString
module=config-key perm=rw flags=
"""
prefix = 'config-key rm'
_args = {'prefix': prefix, 'key': key}
return self._mon_command(_args)
def config_key_set(self, key: str, val: str=None):
"""
set <key> to value <val>
:param key: CephString
:param val: CephString
module=config-key perm=rw flags=
"""
prefix = 'config-key set'
_args = {'prefix': prefix, 'key': key, 'val': val}
return self._mon_command(_args)
def crash_info(self, id_: str):
"""
show crash dump metadata
:param id_: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'crash info'
_args = {'prefix': prefix, 'id': id_}
return self._mon_command(_args)
def crash_json_report(self, hours: str):
"""
Crashes in the last <hours> hours
:param hours: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'crash json_report'
_args = {'prefix': prefix, 'hours': hours}
return self._mon_command(_args)
def crash_ls(self):
"""
Show saved crash dumps
module=mgr perm=r flags=mgr
"""
prefix = 'crash ls'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def crash_post(self):
"""
Add a crash dump (use -i <jsonfile>)
module=mgr perm=rw flags=mgr
"""
prefix = 'crash post'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def crash_prune(self, keep: str):
"""
Remove crashes older than <keep> days
:param keep: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'crash prune'
_args = {'prefix': prefix, 'keep': keep}
return self._mon_command(_args)
def crash_rm(self, id_: str):
"""
Remove a saved crash <id>
:param id_: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'crash rm'
_args = {'prefix': prefix, 'id': id_}
return self._mon_command(_args)
def crash_stat(self):
"""
Summarize recorded crashes
module=mgr perm=r flags=mgr
"""
prefix = 'crash stat'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_ac_role_add_scope_perms(self, rolename: str, scopename: str, permissions: List[str]):
"""
Add the scope permissions for a role
:param rolename: CephString
:param scopename: CephString
:param permissions: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard ac-role-add-scope-perms'
_args = {'prefix': prefix, 'rolename': rolename, 'scopename': scopename, 'permissions': permissions}
return self._mon_command(_args)
def dashboard_ac_role_create(self, rolename: str, description: str=None):
"""
Create a new access control role
:param rolename: CephString
:param description: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard ac-role-create'
_args = {'prefix': prefix, 'rolename': rolename, 'description': description}
return self._mon_command(_args)
def dashboard_ac_role_del_scope_perms(self, rolename: str, scopename: str):
"""
Delete the scope permissions for a role
:param rolename: CephString
:param scopename: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard ac-role-del-scope-perms'
_args = {'prefix': prefix, 'rolename': rolename, 'scopename': scopename}
return self._mon_command(_args)
def dashboard_ac_role_delete(self, rolename: str):
"""
Delete an access control role
:param rolename: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard ac-role-delete'
_args = {'prefix': prefix, 'rolename': rolename}
return self._mon_command(_args)
def dashboard_ac_role_show(self, rolename: str=None):
"""
Show role info
:param rolename: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard ac-role-show'
_args = {'prefix': prefix, 'rolename': rolename}
return self._mon_command(_args)
def dashboard_ac_user_add_roles(self, username: str, roles: List[str]):
"""
Add roles to user
:param username: CephString
:param roles: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard ac-user-add-roles'
_args = {'prefix': prefix, 'username': username, 'roles': roles}
return self._mon_command(_args)
def dashboard_ac_user_create(self, username: str, password: str=None, rolename: str=None, name: str=None, email: str=None):
"""
Create a user
:param username: CephString
:param password: CephString
:param rolename: CephString
:param name: CephString
:param email: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard ac-user-create'
_args = {'prefix': prefix, 'username': username, 'password': password, 'rolename': rolename, 'name': name, 'email': email}
return self._mon_command(_args)
def dashboard_ac_user_del_roles(self, username: str, roles: List[str]):
"""
Delete roles from user
:param username: CephString
:param roles: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard ac-user-del-roles'
_args = {'prefix': prefix, 'username': username, 'roles': roles}
return self._mon_command(_args)
def dashboard_ac_user_delete(self, username: str):
"""
Delete user
:param username: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard ac-user-delete'
_args = {'prefix': prefix, 'username': username}
return self._mon_command(_args)
def dashboard_ac_user_set_info(self, username: str, name: str, email: str):
"""
Set user info
:param username: CephString
:param name: CephString
:param email: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard ac-user-set-info'
_args = {'prefix': prefix, 'username': username, 'name': name, 'email': email}
return self._mon_command(_args)
def dashboard_ac_user_set_password(self, username: str, password: str):
"""
Set user password
:param username: CephString
:param password: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard ac-user-set-password'
_args = {'prefix': prefix, 'username': username, 'password': password}
return self._mon_command(_args)
def dashboard_ac_user_set_roles(self, username: str, roles: List[str]):
"""
Set user roles
:param username: CephString
:param roles: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard ac-user-set-roles'
_args = {'prefix': prefix, 'username': username, 'roles': roles}
return self._mon_command(_args)
def dashboard_ac_user_show(self, username: str=None):
"""
Show user info
:param username: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard ac-user-show'
_args = {'prefix': prefix, 'username': username}
return self._mon_command(_args)
def dashboard_create_self_signed_cert(self):
"""
Create self signed certificate
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard create-self-signed-cert'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_feature(self, action: str, features: List[str]=None):
"""
Enable or disable features in Ceph-Mgr Dashboard
:param action: CephChoices strings=disable|enable|status
:param features: CephChoices strings=cephfs|iscsi|mirroring|rbd|rgw
module=mgr perm=rw flags=mgr
"""
prefix = 'dashboard feature'
_args = {'prefix': prefix, 'action': action, 'features': features}
return self._mon_command(_args)
def dashboard_get_alertmanager_api_host(self):
"""
Get the ALERTMANAGER_API_HOST option value
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard get-alertmanager-api-host'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_get_audit_api_enabled(self):
"""
Get the AUDIT_API_ENABLED option value
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard get-audit-api-enabled'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_get_audit_api_log_payload(self):
"""
Get the AUDIT_API_LOG_PAYLOAD option value
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard get-audit-api-log-payload'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_get_enable_browsable_api(self):
"""
Get the ENABLE_BROWSABLE_API option value
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard get-enable-browsable-api'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_get_ganesha_clusters_rados_pool_namespace(self):
"""
Get the GANESHA_CLUSTERS_RADOS_POOL_NAMESPACE option value
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard get-ganesha-clusters-rados-pool-namespace'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_get_grafana_api_password(self):
"""
Get the GRAFANA_API_PASSWORD option value
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard get-grafana-api-password'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_get_grafana_api_url(self):
"""
Get the GRAFANA_API_URL option value
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard get-grafana-api-url'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_get_grafana_api_username(self):
"""
Get the GRAFANA_API_USERNAME option value
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard get-grafana-api-username'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_get_iscsi_api_ssl_verification(self):
"""
Get the ISCSI_API_SSL_VERIFICATION option value
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard get-iscsi-api-ssl-verification'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_get_jwt_token_ttl(self):
"""
Get the JWT token TTL in seconds
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard get-jwt-token-ttl'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_get_prometheus_api_host(self):
"""
Get the PROMETHEUS_API_HOST option value
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard get-prometheus-api-host'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_get_rest_requests_timeout(self):
"""
Get the REST_REQUESTS_TIMEOUT option value
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard get-rest-requests-timeout'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_get_rgw_api_access_key(self):
"""
Get the RGW_API_ACCESS_KEY option value
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard get-rgw-api-access-key'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_get_rgw_api_admin_resource(self):
"""
Get the RGW_API_ADMIN_RESOURCE option value
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard get-rgw-api-admin-resource'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_get_rgw_api_host(self):
"""
Get the RGW_API_HOST option value
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard get-rgw-api-host'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_get_rgw_api_port(self):
"""
Get the RGW_API_PORT option value
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard get-rgw-api-port'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_get_rgw_api_scheme(self):
"""
Get the RGW_API_SCHEME option value
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard get-rgw-api-scheme'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_get_rgw_api_secret_key(self):
"""
Get the RGW_API_SECRET_KEY option value
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard get-rgw-api-secret-key'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_get_rgw_api_ssl_verify(self):
"""
Get the RGW_API_SSL_VERIFY option value
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard get-rgw-api-ssl-verify'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_get_rgw_api_user_id(self):
"""
Get the RGW_API_USER_ID option value
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard get-rgw-api-user-id'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_iscsi_gateway_add(self, service_url: str):
"""
Add iSCSI gateway configuration
:param service_url: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard iscsi-gateway-add'
_args = {'prefix': prefix, 'service_url': service_url}
return self._mon_command(_args)
def dashboard_iscsi_gateway_list(self):
"""
List iSCSI gateways
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard iscsi-gateway-list'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_iscsi_gateway_rm(self, name: str):
"""
Remove iSCSI gateway configuration
:param name: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard iscsi-gateway-rm'
_args = {'prefix': prefix, 'name': name}
return self._mon_command(_args)
def dashboard_reset_alertmanager_api_host(self):
"""
Reset the ALERTMANAGER_API_HOST option to its default value
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard reset-alertmanager-api-host'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_reset_audit_api_enabled(self):
"""
Reset the AUDIT_API_ENABLED option to its default value
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard reset-audit-api-enabled'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_reset_audit_api_log_payload(self):
"""
Reset the AUDIT_API_LOG_PAYLOAD option to its default value
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard reset-audit-api-log-payload'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_reset_enable_browsable_api(self):
"""
Reset the ENABLE_BROWSABLE_API option to its default value
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard reset-enable-browsable-api'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_reset_ganesha_clusters_rados_pool_namespace(self):
"""
Reset the GANESHA_CLUSTERS_RADOS_POOL_NAMESPACE option to its default value
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard reset-ganesha-clusters-rados-pool-namespace'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_reset_grafana_api_password(self):
"""
Reset the GRAFANA_API_PASSWORD option to its default value
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard reset-grafana-api-password'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_reset_grafana_api_url(self):
"""
Reset the GRAFANA_API_URL option to its default value
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard reset-grafana-api-url'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_reset_grafana_api_username(self):
"""
Reset the GRAFANA_API_USERNAME option to its default value
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard reset-grafana-api-username'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_reset_iscsi_api_ssl_verification(self):
"""
Reset the ISCSI_API_SSL_VERIFICATION option to its default value
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard reset-iscsi-api-ssl-verification'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_reset_prometheus_api_host(self):
"""
Reset the PROMETHEUS_API_HOST option to its default value
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard reset-prometheus-api-host'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_reset_rest_requests_timeout(self):
"""
Reset the REST_REQUESTS_TIMEOUT option to its default value
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard reset-rest-requests-timeout'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_reset_rgw_api_access_key(self):
"""
Reset the RGW_API_ACCESS_KEY option to its default value
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard reset-rgw-api-access-key'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_reset_rgw_api_admin_resource(self):
"""
Reset the RGW_API_ADMIN_RESOURCE option to its default value
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard reset-rgw-api-admin-resource'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_reset_rgw_api_host(self):
"""
Reset the RGW_API_HOST option to its default value
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard reset-rgw-api-host'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_reset_rgw_api_port(self):
"""
Reset the RGW_API_PORT option to its default value
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard reset-rgw-api-port'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_reset_rgw_api_scheme(self):
"""
Reset the RGW_API_SCHEME option to its default value
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard reset-rgw-api-scheme'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_reset_rgw_api_secret_key(self):
"""
Reset the RGW_API_SECRET_KEY option to its default value
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard reset-rgw-api-secret-key'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_reset_rgw_api_ssl_verify(self):
"""
Reset the RGW_API_SSL_VERIFY option to its default value
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard reset-rgw-api-ssl-verify'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_reset_rgw_api_user_id(self):
"""
Reset the RGW_API_USER_ID option to its default value
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard reset-rgw-api-user-id'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_set_alertmanager_api_host(self, value: str):
"""
Set the ALERTMANAGER_API_HOST option value
:param value: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-alertmanager-api-host'
_args = {'prefix': prefix, 'value': value}
return self._mon_command(_args)
def dashboard_set_audit_api_enabled(self, value: str):
"""
Set the AUDIT_API_ENABLED option value
:param value: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-audit-api-enabled'
_args = {'prefix': prefix, 'value': value}
return self._mon_command(_args)
def dashboard_set_audit_api_log_payload(self, value: str):
"""
Set the AUDIT_API_LOG_PAYLOAD option value
:param value: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-audit-api-log-payload'
_args = {'prefix': prefix, 'value': value}
return self._mon_command(_args)
def dashboard_set_enable_browsable_api(self, value: str):
"""
Set the ENABLE_BROWSABLE_API option value
:param value: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-enable-browsable-api'
_args = {'prefix': prefix, 'value': value}
return self._mon_command(_args)
def dashboard_set_ganesha_clusters_rados_pool_namespace(self, value: str):
"""
Set the GANESHA_CLUSTERS_RADOS_POOL_NAMESPACE option value
:param value: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-ganesha-clusters-rados-pool-namespace'
_args = {'prefix': prefix, 'value': value}
return self._mon_command(_args)
def dashboard_set_grafana_api_password(self, value: str):
"""
Set the GRAFANA_API_PASSWORD option value
:param value: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-grafana-api-password'
_args = {'prefix': prefix, 'value': value}
return self._mon_command(_args)
def dashboard_set_grafana_api_url(self, value: str):
"""
Set the GRAFANA_API_URL option value
:param value: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-grafana-api-url'
_args = {'prefix': prefix, 'value': value}
return self._mon_command(_args)
def dashboard_set_grafana_api_username(self, value: str):
"""
Set the GRAFANA_API_USERNAME option value
:param value: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-grafana-api-username'
_args = {'prefix': prefix, 'value': value}
return self._mon_command(_args)
def dashboard_set_iscsi_api_ssl_verification(self, value: str):
"""
Set the ISCSI_API_SSL_VERIFICATION option value
:param value: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-iscsi-api-ssl-verification'
_args = {'prefix': prefix, 'value': value}
return self._mon_command(_args)
def dashboard_set_jwt_token_ttl(self, seconds: int):
"""
Set the JWT token TTL in seconds
:param seconds: CephInt
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-jwt-token-ttl'
_args = {'prefix': prefix, 'seconds': seconds}
return self._mon_command(_args)
def dashboard_set_login_credentials(self, username: str, password: str):
"""
Set the login credentials
:param username: CephString
:param password: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-login-credentials'
_args = {'prefix': prefix, 'username': username, 'password': password}
return self._mon_command(_args)
def dashboard_set_prometheus_api_host(self, value: str):
"""
Set the PROMETHEUS_API_HOST option value
:param value: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-prometheus-api-host'
_args = {'prefix': prefix, 'value': value}
return self._mon_command(_args)
def dashboard_set_rest_requests_timeout(self, value: int):
"""
Set the REST_REQUESTS_TIMEOUT option value
:param value: CephInt
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-rest-requests-timeout'
_args = {'prefix': prefix, 'value': value}
return self._mon_command(_args)
def dashboard_set_rgw_api_access_key(self, value: str):
"""
Set the RGW_API_ACCESS_KEY option value
:param value: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-rgw-api-access-key'
_args = {'prefix': prefix, 'value': value}
return self._mon_command(_args)
def dashboard_set_rgw_api_admin_resource(self, value: str):
"""
Set the RGW_API_ADMIN_RESOURCE option value
:param value: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-rgw-api-admin-resource'
_args = {'prefix': prefix, 'value': value}
return self._mon_command(_args)
def dashboard_set_rgw_api_host(self, value: str):
"""
Set the RGW_API_HOST option value
:param value: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-rgw-api-host'
_args = {'prefix': prefix, 'value': value}
return self._mon_command(_args)
def dashboard_set_rgw_api_port(self, value: int):
"""
Set the RGW_API_PORT option value
:param value: CephInt
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-rgw-api-port'
_args = {'prefix': prefix, 'value': value}
return self._mon_command(_args)
def dashboard_set_rgw_api_scheme(self, value: str):
"""
Set the RGW_API_SCHEME option value
:param value: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-rgw-api-scheme'
_args = {'prefix': prefix, 'value': value}
return self._mon_command(_args)
def dashboard_set_rgw_api_secret_key(self, value: str):
"""
Set the RGW_API_SECRET_KEY option value
:param value: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-rgw-api-secret-key'
_args = {'prefix': prefix, 'value': value}
return self._mon_command(_args)
def dashboard_set_rgw_api_ssl_verify(self, value: str):
"""
Set the RGW_API_SSL_VERIFY option value
:param value: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-rgw-api-ssl-verify'
_args = {'prefix': prefix, 'value': value}
return self._mon_command(_args)
def dashboard_set_rgw_api_user_id(self, value: str):
"""
Set the RGW_API_USER_ID option value
:param value: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard set-rgw-api-user-id'
_args = {'prefix': prefix, 'value': value}
return self._mon_command(_args)
def dashboard_sso_disable(self):
"""
Disable Single Sign-On
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard sso disable'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_sso_enable_saml2(self):
"""
Enable SAML2 Single Sign-On
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard sso enable saml2'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_sso_setup_saml2(self, ceph_dashboard_base_url: str, idp_metadata: str, idp_username_attribute: str=None, idp_entity_id: str=None, sp_x_509_cert: str=None, sp_private_key: str=None):
"""
Setup SAML2 Single Sign-On
:param ceph_dashboard_base_url: CephString
:param idp_metadata: CephString
:param idp_username_attribute: CephString
:param idp_entity_id: CephString
:param sp_x_509_cert: CephString
:param sp_private_key: CephString
module=mgr perm=w flags=mgr
"""
prefix = 'dashboard sso setup saml2'
_args = {'prefix': prefix, 'ceph_dashboard_base_url': ceph_dashboard_base_url, 'idp_metadata': idp_metadata, 'idp_username_attribute': idp_username_attribute, 'idp_entity_id': idp_entity_id, 'sp_x_509_cert': sp_x_509_cert, 'sp_private_key': sp_private_key}
return self._mon_command(_args)
def dashboard_sso_show_saml2(self):
"""
Show SAML2 configuration
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard sso show saml2'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def dashboard_sso_status(self):
"""
Get Single Sign-On status
module=mgr perm=r flags=mgr
"""
prefix = 'dashboard sso status'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def deepsea_config_set(self, key: str, value: str):
"""
Set a configuration value
:param key: CephString
:param value: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'deepsea config-set'
_args = {'prefix': prefix, 'key': key, 'value': value}
return self._mon_command(_args)
def deepsea_config_show(self):
"""
Show current configuration
module=mgr perm=r flags=mgr
"""
prefix = 'deepsea config-show'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def device_check_health(self):
"""
Check life expectancy of devices
module=mgr perm=rw flags=mgr
"""
prefix = 'device check-health'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def device_debug_metrics_forced(self):
"""
Run metrics agent forced
module=mgr perm=r flags=mgr
"""
prefix = 'device debug metrics-forced'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def device_debug_smart_forced(self):
"""
Run smart agent forced
module=mgr perm=r flags=mgr
"""
prefix = 'device debug smart-forced'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def device_get_health_metrics(self, devid: str, sample: str):
"""
Show stored device metrics for the device
:param devid: CephString
:param sample: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'device get-health-metrics'
_args = {'prefix': prefix, 'devid': devid, 'sample': sample}
return self._mon_command(_args)
def device_info(self, devid: str):
"""
Show information about a device
:param devid: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'device info'
_args = {'prefix': prefix, 'devid': devid}
return self._mon_command(_args)
def device_ls(self):
"""
Show devices
module=mgr perm=r flags=mgr
"""
prefix = 'device ls'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def device_ls_by_daemon(self, who: str):
"""
Show devices associated with a daemon
:param who: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'device ls-by-daemon'
_args = {'prefix': prefix, 'who': who}
return self._mon_command(_args)
def device_ls_by_host(self, host: str):
"""
Show devices on a host
:param host: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'device ls-by-host'
_args = {'prefix': prefix, 'host': host}
return self._mon_command(_args)
def device_monitoring_off(self):
"""
Disable device health monitoring
module=mgr perm=rw flags=mgr
"""
prefix = 'device monitoring off'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def device_monitoring_on(self):
"""
Enable device health monitoring
module=mgr perm=rw flags=mgr
"""
prefix = 'device monitoring on'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def device_predict_life_expectancy(self, devid: str):
"""
Predict life expectancy with local predictor
:param devid: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'device predict-life-expectancy'
_args = {'prefix': prefix, 'devid': devid}
return self._mon_command(_args)
def device_query_daemon_health_metrics(self, who: str):
"""
Get device health metrics for a given daemon
:param who: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'device query-daemon-health-metrics'
_args = {'prefix': prefix, 'who': who}
return self._mon_command(_args)
def device_rm_life_expectancy(self, devid: str):
"""
Clear predicted device life expectancy
:param devid: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'device rm-life-expectancy'
_args = {'prefix': prefix, 'devid': devid}
return self._mon_command(_args)
def device_scrape_daemon_health_metrics(self, who: str):
"""
Scrape and store device health metrics for a given daemon
:param who: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'device scrape-daemon-health-metrics'
_args = {'prefix': prefix, 'who': who}
return self._mon_command(_args)
def device_scrape_health_metrics(self, devid: str):
"""
Scrape and store health metrics
:param devid: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'device scrape-health-metrics'
_args = {'prefix': prefix, 'devid': devid}
return self._mon_command(_args)
def device_set_cloud_prediction_config(self, server: str, user: str, password: str, certfile: str, port: str=None):
"""
Configure Disk Prediction service
:param server: CephString
:param user: CephString
:param password: CephString
:param certfile: CephString
:param port: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'device set-cloud-prediction-config'
_args = {'prefix': prefix, 'server': server, 'user': user, 'password': password, 'certfile': certfile, 'port': port}
return self._mon_command(_args)
def device_set_life_expectancy(self, devid: str, from_: str, to: str):
"""
Set predicted device life expectancy
:param devid: CephString
:param from_: CephString
:param to: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'device set-life-expectancy'
_args = {'prefix': prefix, 'devid': devid, 'from': from_, 'to': to}
return self._mon_command(_args)
def device_show_prediction_config(self):
"""
Prints diskprediction configuration
module=mgr perm=r flags=mgr
"""
prefix = 'device show-prediction-config'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def df(self, detail: str=None):
"""
show cluster free space stats
:param detail: CephChoices strings=detail
module=mon perm=r flags=
"""
prefix = 'df'
_args = {'prefix': prefix, 'detail': detail}
return self._mon_command(_args)
def diskprediction_cloud_status(self):
"""
Check diskprediction_cloud status
module=mgr perm=r flags=mgr
"""
prefix = 'diskprediction_cloud status'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def features(self):
"""
report of connected features
module=mon perm=r flags=
"""
prefix = 'features'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def fs_add_data_pool(self, fs_name: str, pool: str):
"""
add data pool <pool>
:param fs_name: CephString
:param pool: CephString
module=mds perm=rw flags=
"""
prefix = 'fs add_data_pool'
_args = {'prefix': prefix, 'fs_name': fs_name, 'pool': pool}
return self._mon_command(_args)
def fs_authorize(self, filesystem: str, entity: str, caps: List[str]):
"""
add auth for <entity> to access file system <filesystem> based on following directory and permissions pairs
:param filesystem: CephString
:param entity: CephString
:param caps: CephString
module=auth perm=rwx flags=
"""
prefix = 'fs authorize'
_args = {'prefix': prefix, 'filesystem': filesystem, 'entity': entity, 'caps': caps}
return self._mon_command(_args)
def fs_dump(self, epoch: int=None):
"""
dump all CephFS status, optionally from epoch
:param epoch: CephInt ragne=0
module=mds perm=r flags=
"""
prefix = 'fs dump'
_args = {'prefix': prefix, 'epoch': epoch}
return self._mon_command(_args)
def fs_fail(self, fs_name: str):
"""
bring the file system down and all of its ranks
:param fs_name: CephString
module=fs perm=rw flags=
"""
prefix = 'fs fail'
_args = {'prefix': prefix, 'fs_name': fs_name}
return self._mon_command(_args)
def fs_flag_set(self, flag_name: str, val: str, yes_i_really_mean_it: bool=None):
"""
Set a global CephFS flag
:param flag_name: CephChoices strings=enable_multiple
:param val: CephString
:param yes_i_really_mean_it: CephBool
module=fs perm=rw flags=
"""
prefix = 'fs flag set'
_args = {'prefix': prefix, 'flag_name': flag_name, 'val': val, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
def fs_get(self, fs_name: str):
"""
get info about one filesystem
:param fs_name: CephString
module=fs perm=r flags=
"""
prefix = 'fs get'
_args = {'prefix': prefix, 'fs_name': fs_name}
return self._mon_command(_args)
def fs_ls(self):
"""
list filesystems
module=fs perm=r flags=
"""
prefix = 'fs ls'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def fs_new(self, fs_name: str, metadata: str, data: str, force: bool=None, allow_dangerous_metadata_overlay: bool=None):
"""
make new filesystem using named pools <metadata> and <data>
:param fs_name: CephString
:param metadata: CephString
:param data: CephString
:param force: CephBool
:param allow_dangerous_metadata_overlay: CephBool
module=fs perm=rw flags=
"""
prefix = 'fs new'
_args = {'prefix': prefix, 'fs_name': fs_name, 'metadata': metadata, 'data': data, 'force': force, 'allow_dangerous_metadata_overlay': allow_dangerous_metadata_overlay}
return self._mon_command(_args)
def fs_reset(self, fs_name: str, yes_i_really_mean_it: bool=None):
"""
disaster recovery only: reset to a single-MDS map
:param fs_name: CephString
:param yes_i_really_mean_it: CephBool
module=fs perm=rw flags=
"""
prefix = 'fs reset'
_args = {'prefix': prefix, 'fs_name': fs_name, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
def fs_rm(self, fs_name: str, yes_i_really_mean_it: bool=None):
"""
disable the named filesystem
:param fs_name: CephString
:param yes_i_really_mean_it: CephBool
module=fs perm=rw flags=
"""
prefix = 'fs rm'
_args = {'prefix': prefix, 'fs_name': fs_name, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
def fs_rm_data_pool(self, fs_name: str, pool: str):
"""
remove data pool <pool>
:param fs_name: CephString
:param pool: CephString
module=mds perm=rw flags=
"""
prefix = 'fs rm_data_pool'
_args = {'prefix': prefix, 'fs_name': fs_name, 'pool': pool}
return self._mon_command(_args)
def fs_set(self, fs_name: str, var: str, val: str, yes_i_really_mean_it: bool=None):
"""
set fs parameter <var> to <val>
:param fs_name: CephString
:param var: CephChoices strings=max_mds|max_file_size|allow_new_snaps|inline_data|cluster_down|allow_dirfrags|balancer|standby_count_wanted|session_timeout|session_autoclose|allow_standby_replay|down|joinable|min_compat_client
:param val: CephString
:param yes_i_really_mean_it: CephBool
module=mds perm=rw flags=
"""
prefix = 'fs set'
_args = {'prefix': prefix, 'fs_name': fs_name, 'var': var, 'val': val, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
@overload # Python 3 only
def fs_set_default(self, fs_name: str):
"""
set the default to the named filesystem
:param fs_name: CephString
module=fs perm=rw flags=
"""
prefix = 'fs set-default'
_args = {'prefix': prefix, 'fs_name': fs_name}
return self._mon_command(_args)
@deprecated
@overload # Python 3 only
def fs_set_default(self, fs_name: str):
"""
set the default to the named filesystem
:param fs_name: CephString
module=fs perm=rw flags=deprecated
"""
prefix = 'fs set_default'
_args = {'prefix': prefix, 'fs_name': fs_name}
return self._mon_command(_args)
def fs_status(self, fs: str=None):
"""
Show the status of a CephFS filesystem
:param fs: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'fs status'
_args = {'prefix': prefix, 'fs': fs}
return self._mon_command(_args)
def fs_subvolume_create(self, vol_name: str, sub_name: str, size: int=None, group_name: str=None):
"""
Create a CephFS subvolume in a volume, and optionally, with a specific size (in bytes) and in a specific subvolume group
:param vol_name: CephString
:param sub_name: CephString
:param size: CephInt
:param group_name: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'fs subvolume create'
_args = {'prefix': prefix, 'vol_name': vol_name, 'sub_name': sub_name, 'size': size, 'group_name': group_name}
return self._mon_command(_args)
def fs_subvolume_getpath(self, vol_name: str, sub_name: str, group_name: str=None):
"""
Get the mountpath of a CephFS subvolume in a volume, and optionally, in a specific subvolume group
:param vol_name: CephString
:param sub_name: CephString
:param group_name: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'fs subvolume getpath'
_args = {'prefix': prefix, 'vol_name': vol_name, 'sub_name': sub_name, 'group_name': group_name}
return self._mon_command(_args)
def fs_subvolume_rm(self, vol_name: str, sub_name: str, group_name: str=None, force: bool=None):
"""
Delete a CephFS subvolume in a volume, and optionally, in a specific subvolume group
:param vol_name: CephString
:param sub_name: CephString
:param group_name: CephString
:param force: CephBool
module=mgr perm=rw flags=mgr
"""
prefix = 'fs subvolume rm'
_args = {'prefix': prefix, 'vol_name': vol_name, 'sub_name': sub_name, 'group_name': group_name, 'force': force}
return self._mon_command(_args)
def fs_subvolume_snapshot_create(self, vol_name: str, sub_name: str, snap_name: str, group_name: str=None):
"""
Create a snapshot of a CephFS subvolume in a volume, and optionally, in a specific subvolume group
:param vol_name: CephString
:param sub_name: CephString
:param snap_name: CephString
:param group_name: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'fs subvolume snapshot create'
_args = {'prefix': prefix, 'vol_name': vol_name, 'sub_name': sub_name, 'snap_name': snap_name, 'group_name': group_name}
return self._mon_command(_args)
def fs_subvolume_snapshot_rm(self, vol_name: str, sub_name: str, snap_name: str, group_name: str=None, force: bool=None):
"""
Delete a snapshot of a CephFS subvolume in a volume, and optionally, in a specific subvolume group
:param vol_name: CephString
:param sub_name: CephString
:param snap_name: CephString
:param group_name: CephString
:param force: CephBool
module=mgr perm=rw flags=mgr
"""
prefix = 'fs subvolume snapshot rm'
_args = {'prefix': prefix, 'vol_name': vol_name, 'sub_name': sub_name, 'snap_name': snap_name, 'group_name': group_name, 'force': force}
return self._mon_command(_args)
def fs_subvolumegroup_create(self, vol_name: str, group_name: str):
"""
Create a CephFS subvolume group in a volume
:param vol_name: CephString
:param group_name: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'fs subvolumegroup create'
_args = {'prefix': prefix, 'vol_name': vol_name, 'group_name': group_name}
return self._mon_command(_args)
def fs_subvolumegroup_rm(self, vol_name: str, group_name: str, force: bool=None):
"""
Delete a CephFS subvolume group in a volume
:param vol_name: CephString
:param group_name: CephString
:param force: CephBool
module=mgr perm=rw flags=mgr
"""
prefix = 'fs subvolumegroup rm'
_args = {'prefix': prefix, 'vol_name': vol_name, 'group_name': group_name, 'force': force}
return self._mon_command(_args)
def fs_subvolumegroup_snapshot_create(self, vol_name: str, group_name: str, snap_name: str):
"""
Create a snapshot of a CephFS subvolume group in a volume
:param vol_name: CephString
:param group_name: CephString
:param snap_name: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'fs subvolumegroup snapshot create'
_args = {'prefix': prefix, 'vol_name': vol_name, 'group_name': group_name, 'snap_name': snap_name}
return self._mon_command(_args)
def fs_subvolumegroup_snapshot_rm(self, vol_name: str, group_name: str, snap_name: str, force: bool=None):
"""
Delete a snapshot of a CephFS subvolume group in a volume
:param vol_name: CephString
:param group_name: CephString
:param snap_name: CephString
:param force: CephBool
module=mgr perm=rw flags=mgr
"""
prefix = 'fs subvolumegroup snapshot rm'
_args = {'prefix': prefix, 'vol_name': vol_name, 'group_name': group_name, 'snap_name': snap_name, 'force': force}
return self._mon_command(_args)
def fs_volume_create(self, name: str, size: str=None):
"""
Create a CephFS volume
:param name: CephString
:param size: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'fs volume create'
_args = {'prefix': prefix, 'name': name, 'size': size}
return self._mon_command(_args)
def fs_volume_ls(self):
"""
List volumes
module=mgr perm=r flags=mgr
"""
prefix = 'fs volume ls'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def fs_volume_rm(self, vol_name: str):
"""
Delete a CephFS volume
:param vol_name: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'fs volume rm'
_args = {'prefix': prefix, 'vol_name': vol_name}
return self._mon_command(_args)
def fsid(self):
"""
show cluster FSID/UUID
module=mon perm=r flags=
"""
prefix = 'fsid'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def health(self, detail: str=None):
"""
show cluster health
:param detail: CephChoices strings=detail
module=mon perm=r flags=
"""
prefix = 'health'
_args = {'prefix': prefix, 'detail': detail}
return self._mon_command(_args)
def heap(self, heapcmd: str):
"""
show heap usage info (available only if compiled with tcmalloc)
:param heapcmd: CephChoices strings=dump|start_profiler|stop_profiler|release|stats
module=mon perm=rw flags=no_forward
"""
prefix = 'heap'
_args = {'prefix': prefix, 'heapcmd': heapcmd}
return self._mon_command(_args)
def hello(self, person_name: str=None):
"""
Prints hello world to mgr.x.log
:param person_name: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'hello'
_args = {'prefix': prefix, 'person_name': person_name}
return self._mon_command(_args)
def influx_config_set(self, key: str, value: str):
"""
Set a configuration value
:param key: CephString
:param value: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'influx config-set'
_args = {'prefix': prefix, 'key': key, 'value': value}
return self._mon_command(_args)
def influx_config_show(self):
"""
Show current configuration
module=mgr perm=r flags=mgr
"""
prefix = 'influx config-show'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def influx_send(self):
"""
Force sending data to Influx
module=mgr perm=rw flags=mgr
"""
prefix = 'influx send'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def injectargs(self, injected_args: List[str]):
"""
inject config arguments into monitor
:param injected_args: CephString
module=mon perm=rw flags=no_forward
"""
prefix = 'injectargs'
_args = {'prefix': prefix, 'injected_args': injected_args}
return self._mon_command(_args)
def insights(self):
"""
Retrieve insights report
module=mgr perm=r flags=mgr
"""
prefix = 'insights'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def insights_prune_health(self, hours: str):
"""
Remove health history older than <hours> hours
:param hours: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'insights prune-health'
_args = {'prefix': prefix, 'hours': hours}
return self._mon_command(_args)
def iostat(self):
"""
Get IO rates
module=mgr perm=r flags=mgr, poll
"""
prefix = 'iostat'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def log(self, logtext: List[str]):
"""
log supplied text to the monitor log
:param logtext: CephString
module=mon perm=rw flags=
"""
prefix = 'log'
_args = {'prefix': prefix, 'logtext': logtext}
return self._mon_command(_args)
def log_last(self, num: int=None, level: str=None, channel: str=None):
"""
print last few lines of the cluster log
:param num: CephInt ragne=1
:param level: CephChoices strings=debug|info|sec|warn|error
:param channel: CephChoices strings=*|cluster|audit
module=mon perm=r flags=
"""
prefix = 'log last'
_args = {'prefix': prefix, 'num': num, 'level': level, 'channel': channel}
return self._mon_command(_args)
@deprecated
def mds_add_data_pool(self, pool: str):
"""
add data pool <pool>
:param pool: CephString
module=mds perm=rw flags=obsolete
"""
prefix = 'mds add_data_pool'
_args = {'prefix': prefix, 'pool': pool}
return self._mon_command(_args)
@deprecated
def mds_cluster_down(self):
"""
take MDS cluster down
module=mds perm=rw flags=obsolete
"""
prefix = 'mds cluster_down'
_args = {'prefix': prefix, }
return self._mon_command(_args)
@deprecated
def mds_cluster_up(self):
"""
bring MDS cluster up
module=mds perm=rw flags=obsolete
"""
prefix = 'mds cluster_up'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def mds_compat_rm_compat(self, feature: int):
"""
remove compatible feature
:param feature: CephInt ragne=0
module=mds perm=rw flags=
"""
prefix = 'mds compat rm_compat'
_args = {'prefix': prefix, 'feature': feature}
return self._mon_command(_args)
def mds_compat_rm_incompat(self, feature: int):
"""
remove incompatible feature
:param feature: CephInt ragne=0
module=mds perm=rw flags=
"""
prefix = 'mds compat rm_incompat'
_args = {'prefix': prefix, 'feature': feature}
return self._mon_command(_args)
def mds_compat_show(self):
"""
show mds compatibility settings
module=mds perm=r flags=
"""
prefix = 'mds compat show'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def mds_count_metadata(self, property: str):
"""
count MDSs by metadata field property
:param property: CephString
module=mds perm=r flags=
"""
prefix = 'mds count-metadata'
_args = {'prefix': prefix, 'property': property}
return self._mon_command(_args)
@deprecated
def mds_deactivate(self, role: str):
"""
clean up specified MDS rank (use with `set max_mds` to shrink cluster)
:param role: CephString
module=mds perm=rw flags=obsolete
"""
prefix = 'mds deactivate'
_args = {'prefix': prefix, 'role': role}
return self._mon_command(_args)
@deprecated
def mds_dump(self, epoch: int=None):
"""
dump legacy MDS cluster info, optionally from epoch
:param epoch: CephInt ragne=0
module=mds perm=r flags=obsolete
"""
prefix = 'mds dump'
_args = {'prefix': prefix, 'epoch': epoch}
return self._mon_command(_args)
def mds_fail(self, role_or_gid: str):
"""
Mark MDS failed: trigger a failover if a standby is available
:param role_or_gid: CephString
module=mds perm=rw flags=
"""
prefix = 'mds fail'
_args = {'prefix': prefix, 'role_or_gid': role_or_gid}
return self._mon_command(_args)
def mds_freeze(self, role_or_gid: str, val: str):
"""
freeze MDS yes/no
:param role_or_gid: CephString
:param val: CephString
module=mds perm=rw flags=hidden
"""
prefix = 'mds freeze'
_args = {'prefix': prefix, 'role_or_gid': role_or_gid, 'val': val}
return self._mon_command(_args)
@deprecated
def mds_getmap(self, epoch: int=None):
"""
get MDS map, optionally from epoch
:param epoch: CephInt ragne=0
module=mds perm=r flags=obsolete
"""
prefix = 'mds getmap'
_args = {'prefix': prefix, 'epoch': epoch}
return self._mon_command(_args)
def mds_metadata(self, who: str=None):
"""
fetch metadata for mds <role>
:param who: CephString
module=mds perm=r flags=
"""
prefix = 'mds metadata'
_args = {'prefix': prefix, 'who': who}
return self._mon_command(_args)
@deprecated
def mds_newfs(self, metadata: int, data: int, yes_i_really_mean_it: bool=None):
"""
make new filesystem using pools <metadata> and <data>
:param metadata: CephInt ragne=0
:param data: CephInt ragne=0
:param yes_i_really_mean_it: CephBool
module=mds perm=rw flags=obsolete
"""
prefix = 'mds newfs'
_args = {'prefix': prefix, 'metadata': metadata, 'data': data, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
def mds_ok_to_stop(self, ids: List[str]):
"""
check whether stopping the specified MDS would reduce immediate availability
:param ids: CephString
module=mds perm=r flags=
"""
prefix = 'mds ok-to-stop'
_args = {'prefix': prefix, 'ids': ids}
return self._mon_command(_args)
@deprecated
def mds_remove_data_pool(self, pool: str):
"""
remove data pool <pool>
:param pool: CephString
module=mds perm=rw flags=obsolete
"""
prefix = 'mds remove_data_pool'
_args = {'prefix': prefix, 'pool': pool}
return self._mon_command(_args)
def mds_repaired(self, role: str):
"""
mark a damaged MDS rank as no longer damaged
:param role: CephString
module=mds perm=rw flags=
"""
prefix = 'mds repaired'
_args = {'prefix': prefix, 'role': role}
return self._mon_command(_args)
def mds_rm(self, gid: int):
"""
remove nonactive mds
:param gid: CephInt ragne=0
module=mds perm=rw flags=
"""
prefix = 'mds rm'
_args = {'prefix': prefix, 'gid': gid}
return self._mon_command(_args)
@deprecated
def mds_rm_data_pool(self, pool: str):
"""
remove data pool <pool>
:param pool: CephString
module=mds perm=rw flags=obsolete
"""
prefix = 'mds rm_data_pool'
_args = {'prefix': prefix, 'pool': pool}
return self._mon_command(_args)
def mds_rmfailed(self, role: str, yes_i_really_mean_it: bool=None):
"""
remove failed rank
:param role: CephString
:param yes_i_really_mean_it: CephBool
module=mds perm=rw flags=hidden
"""
prefix = 'mds rmfailed'
_args = {'prefix': prefix, 'role': role, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
@deprecated
def mds_set(self, var: str, val: str, yes_i_really_mean_it: bool=None):
"""
set mds parameter <var> to <val>
:param var: CephChoices strings=max_mds|max_file_size|inline_data|allow_new_snaps|allow_multimds|allow_multimds_snaps|allow_dirfrags
:param val: CephString
:param yes_i_really_mean_it: CephBool
module=mds perm=rw flags=obsolete
"""
prefix = 'mds set'
_args = {'prefix': prefix, 'var': var, 'val': val, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
@deprecated
def mds_set_max_mds(self, maxmds: int):
"""
set max MDS index
:param maxmds: CephInt ragne=0
module=mds perm=rw flags=obsolete
"""
prefix = 'mds set_max_mds'
_args = {'prefix': prefix, 'maxmds': maxmds}
return self._mon_command(_args)
def mds_set_state(self, gid: int, state: int):
"""
set mds state of <gid> to <numeric-state>
:param gid: CephInt ragne=0
:param state: CephInt ragne=0|20
module=mds perm=rw flags=hidden
"""
prefix = 'mds set_state'
_args = {'prefix': prefix, 'gid': gid, 'state': state}
return self._mon_command(_args)
def mds_stat(self):
"""
show MDS status
module=mds perm=r flags=hidden
"""
prefix = 'mds stat'
_args = {'prefix': prefix, }
return self._mon_command(_args)
@deprecated
def mds_stop(self, role: str):
"""
stop mds
:param role: CephString
module=mds perm=rw flags=obsolete
"""
prefix = 'mds stop'
_args = {'prefix': prefix, 'role': role}
return self._mon_command(_args)
@deprecated
def mds_tell(self, who: str, args: List[str]):
"""
send command to particular mds
:param who: CephString
:param args: CephString
module=mds perm=rw flags=obsolete
"""
prefix = 'mds tell'
_args = {'prefix': prefix, 'who': who, 'args': args}
return self._mon_command(_args)
def mds_versions(self):
"""
check running versions of MDSs
module=mds perm=r flags=
"""
prefix = 'mds versions'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def mgr_count_metadata(self, property: str):
"""
count ceph-mgr daemons by metadata field property
:param property: CephString
module=mgr perm=r flags=
"""
prefix = 'mgr count-metadata'
_args = {'prefix': prefix, 'property': property}
return self._mon_command(_args)
def mgr_dump(self, epoch: int=None):
"""
dump the latest MgrMap
:param epoch: CephInt ragne=0
module=mgr perm=r flags=
"""
prefix = 'mgr dump'
_args = {'prefix': prefix, 'epoch': epoch}
return self._mon_command(_args)
def mgr_fail(self, who: str):
"""
treat the named manager daemon as failed
:param who: CephString
module=mgr perm=rw flags=
"""
prefix = 'mgr fail'
_args = {'prefix': prefix, 'who': who}
return self._mon_command(_args)
def mgr_metadata(self, who: str=None):
"""
dump metadata for all daemons or a specific daemon
:param who: CephString
module=mgr perm=r flags=
"""
prefix = 'mgr metadata'
_args = {'prefix': prefix, 'who': who}
return self._mon_command(_args)
def mgr_module_disable(self, module: str):
"""
disable mgr module
:param module: CephString
module=mgr perm=rw flags=
"""
prefix = 'mgr module disable'
_args = {'prefix': prefix, 'module': module}
return self._mon_command(_args)
def mgr_module_enable(self, module: str, force: str=None):
"""
enable mgr module
:param module: CephString
:param force: CephChoices strings=--force
module=mgr perm=rw flags=
"""
prefix = 'mgr module enable'
_args = {'prefix': prefix, 'module': module, 'force': force}
return self._mon_command(_args)
def mgr_module_ls(self):
"""
list active mgr modules
module=mgr perm=r flags=
"""
prefix = 'mgr module ls'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def mgr_self_test_background_start(self, workload: str):
"""
Activate a background workload (one of command_spam, throw_exception)
:param workload: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'mgr self-test background start'
_args = {'prefix': prefix, 'workload': workload}
return self._mon_command(_args)
def mgr_self_test_background_stop(self):
"""
Stop background workload if any is running
module=mgr perm=rw flags=mgr
"""
prefix = 'mgr self-test background stop'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def mgr_self_test_cluster_log(self, channel: str, priority: str, message: str):
"""
Create an audit log record.
:param channel: CephString
:param priority: CephString
:param message: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'mgr self-test cluster-log'
_args = {'prefix': prefix, 'channel': channel, 'priority': priority, 'message': message}
return self._mon_command(_args)
def mgr_self_test_config_get(self, key: str):
"""
Peek at a configuration value
:param key: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'mgr self-test config get'
_args = {'prefix': prefix, 'key': key}
return self._mon_command(_args)
def mgr_self_test_config_get_localized(self, key: str):
"""
Peek at a configuration value (localized variant)
:param key: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'mgr self-test config get_localized'
_args = {'prefix': prefix, 'key': key}
return self._mon_command(_args)
def mgr_self_test_health_clear(self, checks: List[str]):
"""
Clear health checks by name. If no names provided, clear all.
:param checks: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'mgr self-test health clear'
_args = {'prefix': prefix, 'checks': checks}
return self._mon_command(_args)
def mgr_self_test_health_set(self, checks: str):
"""
Set a health check from a JSON-formatted description.
:param checks: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'mgr self-test health set'
_args = {'prefix': prefix, 'checks': checks}
return self._mon_command(_args)
def mgr_self_test_insights_set_now_offset(self, hours: str):
"""
Set the now time for the insights module.
:param hours: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'mgr self-test insights_set_now_offset'
_args = {'prefix': prefix, 'hours': hours}
return self._mon_command(_args)
def mgr_self_test_module(self, module: str):
"""
Run another module's self_test() method
:param module: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'mgr self-test module'
_args = {'prefix': prefix, 'module': module}
return self._mon_command(_args)
def mgr_self_test_remote(self):
"""
Test inter-module calls
module=mgr perm=rw flags=mgr
"""
prefix = 'mgr self-test remote'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def mgr_self_test_run(self):
"""
Run mgr python interface tests
module=mgr perm=rw flags=mgr
"""
prefix = 'mgr self-test run'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def mgr_services(self):
"""
list service endpoints provided by mgr modules
module=mgr perm=r flags=
"""
prefix = 'mgr services'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def mgr_versions(self):
"""
check running versions of ceph-mgr daemons
module=mgr perm=r flags=
"""
prefix = 'mgr versions'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def mon_add(self, name: str, addr: str):
"""
add new monitor named <name> at <addr>
:param name: CephString
:param addr: CephIPAddr
module=mon perm=rw flags=
"""
prefix = 'mon add'
_args = {'prefix': prefix, 'name': name, 'addr': addr}
return self._mon_command(_args)
def mon_compact(self):
"""
cause compaction of monitor's leveldb/rocksdb storage
module=mon perm=rw flags=no_forward
"""
prefix = 'mon compact'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def mon_count_metadata(self, property: str):
"""
count mons by metadata field property
:param property: CephString
module=mon perm=r flags=
"""
prefix = 'mon count-metadata'
_args = {'prefix': prefix, 'property': property}
return self._mon_command(_args)
def mon_dump(self, epoch: int=None):
"""
dump formatted monmap (optionally from epoch)
:param epoch: CephInt ragne=0
module=mon perm=r flags=
"""
prefix = 'mon dump'
_args = {'prefix': prefix, 'epoch': epoch}
return self._mon_command(_args)
def mon_enable_msgr2(self):
"""
enable the msgr2 protocol on port 3300
module=mon perm=rw flags=
"""
prefix = 'mon enable-msgr2'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def mon_feature_ls(self, with_value: str=None):
"""
list available mon map features to be set/unset
:param with_value: CephChoices strings=--with-value
module=mon perm=r flags=
"""
prefix = 'mon feature ls'
_args = {'prefix': prefix, 'with_value': with_value}
return self._mon_command(_args)
def mon_feature_set(self, feature_name: str, yes_i_really_mean_it: bool=None):
"""
set provided feature on mon map
:param feature_name: CephString
:param yes_i_really_mean_it: CephBool
module=mon perm=rw flags=
"""
prefix = 'mon feature set'
_args = {'prefix': prefix, 'feature_name': feature_name, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
def mon_getmap(self, epoch: int=None):
"""
get monmap
:param epoch: CephInt ragne=0
module=mon perm=r flags=
"""
prefix = 'mon getmap'
_args = {'prefix': prefix, 'epoch': epoch}
return self._mon_command(_args)
def mon_metadata(self, id_: str=None):
"""
fetch metadata for mon <id>
:param id_: CephString
module=mon perm=r flags=
"""
prefix = 'mon metadata'
_args = {'prefix': prefix, 'id': id_}
return self._mon_command(_args)
def mon_ok_to_add_offline(self):
"""
check whether adding a mon and not starting it would break quorum
module=mon perm=r flags=
"""
prefix = 'mon ok-to-add-offline'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def mon_ok_to_rm(self, id_: str):
"""
check whether removing the specified mon would break quorum
:param id_: CephString
module=mon perm=r flags=
"""
prefix = 'mon ok-to-rm'
_args = {'prefix': prefix, 'id': id_}
return self._mon_command(_args)
def mon_ok_to_stop(self, ids: List[str]):
"""
check whether mon(s) can be safely stopped without reducing immediate availability
:param ids: CephString
module=mon perm=r flags=
"""
prefix = 'mon ok-to-stop'
_args = {'prefix': prefix, 'ids': ids}
return self._mon_command(_args)
@deprecated
def mon_remove(self, name: str):
"""
remove monitor named <name>
:param name: CephString
module=mon perm=rw flags=deprecated
"""
prefix = 'mon remove'
_args = {'prefix': prefix, 'name': name}
return self._mon_command(_args)
def mon_rm(self, name: str):
"""
remove monitor named <name>
:param name: CephString
module=mon perm=rw flags=
"""
prefix = 'mon rm'
_args = {'prefix': prefix, 'name': name}
return self._mon_command(_args)
def mon_scrub(self):
"""
scrub the monitor stores
module=mon perm=rw flags=
"""
prefix = 'mon scrub'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def mon_set_addrs(self, name: str, addrs: str):
"""
set the addrs (IPs and ports) a specific monitor binds to
:param name: CephString
:param addrs: CephString
module=mon perm=rw flags=
"""
prefix = 'mon set-addrs'
_args = {'prefix': prefix, 'name': name, 'addrs': addrs}
return self._mon_command(_args)
def mon_set_rank(self, name: str, rank: int):
"""
set the rank for the specified mon
:param name: CephString
:param rank: CephInt
module=mon perm=rw flags=
"""
prefix = 'mon set-rank'
_args = {'prefix': prefix, 'name': name, 'rank': rank}
return self._mon_command(_args)
def mon_set_weight(self, name: str, weight: int):
"""
set the weight for the specified mon
:param name: CephString
:param weight: CephInt ragne=0|65535
module=mon perm=rw flags=
"""
prefix = 'mon set-weight'
_args = {'prefix': prefix, 'name': name, 'weight': weight}
return self._mon_command(_args)
def mon_stat(self):
"""
summarize monitor status
module=mon perm=r flags=
"""
prefix = 'mon stat'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def mon_sync_force(self, yes_i_really_mean_it: bool=None, i_know_what_i_am_doing: bool=None):
"""
force sync of and clear monitor store
:param yes_i_really_mean_it: CephBool
:param i_know_what_i_am_doing: CephBool
module=mon perm=rw flags=no_forward
"""
prefix = 'mon sync force'
_args = {'prefix': prefix, 'yes_i_really_mean_it': yes_i_really_mean_it, 'i_know_what_i_am_doing': i_know_what_i_am_doing}
return self._mon_command(_args)
def mon_versions(self):
"""
check running versions of monitors
module=mon perm=r flags=
"""
prefix = 'mon versions'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def mon_status(self):
"""
report status of monitors
module=mon perm=r flags=no_forward
"""
prefix = 'mon_status'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def node_ls(self, type: str=None):
"""
list all nodes in cluster [type]
:param type: CephChoices strings=all|osd|mon|mds|mgr
module=mon perm=r flags=
"""
prefix = 'node ls'
_args = {'prefix': prefix, 'type': type}
return self._mon_command(_args)
def orchestrator_device_ls(self, host: List[str]=None, format: str=None, refresh: bool=None):
"""
List devices on a node
:param host: CephString
:param format: CephChoices strings=json|plain
:param refresh: CephBool
module=mgr perm=r flags=mgr
"""
prefix = 'orchestrator device ls'
_args = {'prefix': prefix, 'host': host, 'format': format, 'refresh': refresh}
return self._mon_command(_args)
def orchestrator_host_add(self, host: str):
"""
Add a host
:param host: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'orchestrator host add'
_args = {'prefix': prefix, 'host': host}
return self._mon_command(_args)
def orchestrator_host_ls(self):
"""
List hosts
module=mgr perm=r flags=mgr
"""
prefix = 'orchestrator host ls'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def orchestrator_host_rm(self, host: str):
"""
Remove a host
:param host: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'orchestrator host rm'
_args = {'prefix': prefix, 'host': host}
return self._mon_command(_args)
def orchestrator_mds_add(self, svc_arg: str):
"""
Create an MDS service
:param svc_arg: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'orchestrator mds add'
_args = {'prefix': prefix, 'svc_arg': svc_arg}
return self._mon_command(_args)
def orchestrator_mds_rm(self, svc_id: str):
"""
Remove an MDS service
:param svc_id: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'orchestrator mds rm'
_args = {'prefix': prefix, 'svc_id': svc_id}
return self._mon_command(_args)
def orchestrator_mgr_update(self, num: int, hosts: List[str]=None):
"""
Update the number of manager instances
:param num: CephInt
:param hosts: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'orchestrator mgr update'
_args = {'prefix': prefix, 'num': num, 'hosts': hosts}
return self._mon_command(_args)
def orchestrator_mon_update(self, num: int, hosts: List[str]=None):
"""
Update the number of monitor instances
:param num: CephInt
:param hosts: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'orchestrator mon update'
_args = {'prefix': prefix, 'num': num, 'hosts': hosts}
return self._mon_command(_args)
def orchestrator_nfs_add(self, svc_arg: str, pool: str, namespace: str=None):
"""
Create an NFS service
:param svc_arg: CephString
:param pool: CephString
:param namespace: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'orchestrator nfs add'
_args = {'prefix': prefix, 'svc_arg': svc_arg, 'pool': pool, 'namespace': namespace}
return self._mon_command(_args)
def orchestrator_nfs_rm(self, svc_id: str):
"""
Remove an NFS service
:param svc_id: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'orchestrator nfs rm'
_args = {'prefix': prefix, 'svc_id': svc_id}
return self._mon_command(_args)
def orchestrator_nfs_update(self, svc_id: str, num: int):
"""
Scale an NFS service
:param svc_id: CephString
:param num: CephInt
module=mgr perm=rw flags=mgr
"""
prefix = 'orchestrator nfs update'
_args = {'prefix': prefix, 'svc_id': svc_id, 'num': num}
return self._mon_command(_args)
def orchestrator_osd_create(self, svc_arg: str=None):
"""
Create an OSD service. Either --svc_arg=host:drives or -i <drive_group>
:param svc_arg: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'orchestrator osd create'
_args = {'prefix': prefix, 'svc_arg': svc_arg}
return self._mon_command(_args)
def orchestrator_osd_rm(self, svc_id: List[str]):
"""
Remove OSD services
:param svc_id: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'orchestrator osd rm'
_args = {'prefix': prefix, 'svc_id': svc_id}
return self._mon_command(_args)
def orchestrator_rgw_add(self, svc_arg: str):
"""
Create an RGW service
:param svc_arg: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'orchestrator rgw add'
_args = {'prefix': prefix, 'svc_arg': svc_arg}
return self._mon_command(_args)
def orchestrator_rgw_rm(self, svc_id: str):
"""
Remove an RGW service
:param svc_id: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'orchestrator rgw rm'
_args = {'prefix': prefix, 'svc_id': svc_id}
return self._mon_command(_args)
def orchestrator_service(self, action: str, svc_type: str, svc_name: str):
"""
Start, stop or reload an entire service (i.e. all daemons)
:param action: CephChoices strings=start|stop|reload
:param svc_type: CephString
:param svc_name: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'orchestrator service'
_args = {'prefix': prefix, 'action': action, 'svc_type': svc_type, 'svc_name': svc_name}
return self._mon_command(_args)
def orchestrator_service_ls(self, host: str=None, svc_type: str=None, svc_id: str=None, format: str=None):
"""
List services known to orchestrator
:param host: CephString
:param svc_type: CephChoices strings=mon|mgr|osd|mds|nfs|rgw|rbd-mirror
:param svc_id: CephString
:param format: CephChoices strings=json|plain
module=mgr perm=r flags=mgr
"""
prefix = 'orchestrator service ls'
_args = {'prefix': prefix, 'host': host, 'svc_type': svc_type, 'svc_id': svc_id, 'format': format}
return self._mon_command(_args)
def orchestrator_service_instance(self, action: str, svc_type: str, svc_id: str):
"""
Start, stop or reload a specific service instance
:param action: CephChoices strings=start|stop|reload
:param svc_type: CephString
:param svc_id: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'orchestrator service-instance'
_args = {'prefix': prefix, 'action': action, 'svc_type': svc_type, 'svc_id': svc_id}
return self._mon_command(_args)
def orchestrator_set_backend(self, module_name: str):
"""
Select orchestrator module backend
:param module_name: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'orchestrator set backend'
_args = {'prefix': prefix, 'module_name': module_name}
return self._mon_command(_args)
def orchestrator_status(self):
"""
Report configured backend and its status
module=mgr perm=r flags=mgr
"""
prefix = 'orchestrator status'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_add_nodown(self, ids: List[str]):
"""
mark osd(s) <id> [<id>...] as nodown, or use <all|any> to mark all osds as nodown
:param ids: CephString
module=osd perm=rw flags=
"""
prefix = 'osd add-nodown'
_args = {'prefix': prefix, 'ids': ids}
return self._mon_command(_args)
def osd_add_noin(self, ids: List[str]):
"""
mark osd(s) <id> [<id>...] as noin, or use <all|any> to mark all osds as noin
:param ids: CephString
module=osd perm=rw flags=
"""
prefix = 'osd add-noin'
_args = {'prefix': prefix, 'ids': ids}
return self._mon_command(_args)
def osd_add_noout(self, ids: List[str]):
"""
mark osd(s) <id> [<id>...] as noout, or use <all|any> to mark all osds as noout
:param ids: CephString
module=osd perm=rw flags=
"""
prefix = 'osd add-noout'
_args = {'prefix': prefix, 'ids': ids}
return self._mon_command(_args)
def osd_add_noup(self, ids: List[str]):
"""
mark osd(s) <id> [<id>...] as noup, or use <all|any> to mark all osds as noup
:param ids: CephString
module=osd perm=rw flags=
"""
prefix = 'osd add-noup'
_args = {'prefix': prefix, 'ids': ids}
return self._mon_command(_args)
def osd_blacklist(self, blacklistop: str, addr: str, expire: float=None):
"""
add (optionally until <expire> seconds from now) or remove <addr> from blacklist
:param blacklistop: CephChoices strings=add|rm
:param addr: CephEntityAddr
:param expire: CephFloat ragne=0.0
module=osd perm=rw flags=
"""
prefix = 'osd blacklist'
_args = {'prefix': prefix, 'blacklistop': blacklistop, 'addr': addr, 'expire': expire}
return self._mon_command(_args)
def osd_blacklist_clear(self):
"""
clear all blacklisted clients
module=osd perm=rw flags=
"""
prefix = 'osd blacklist clear'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_blacklist_ls(self):
"""
show blacklisted clients
module=osd perm=r flags=
"""
prefix = 'osd blacklist ls'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_blocked_by(self):
"""
print histogram of which OSDs are blocking their peers
module=osd perm=r flags=mgr
"""
prefix = 'osd blocked-by'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_count_metadata(self, property: str):
"""
count OSDs by metadata field property
:param property: CephString
module=osd perm=r flags=
"""
prefix = 'osd count-metadata'
_args = {'prefix': prefix, 'property': property}
return self._mon_command(_args)
@deprecated
def osd_create(self, uuid: str=None, id_: str=None):
"""
create new osd (with optional UUID and ID)
:param uuid: CephUUID
:param id_: CephOsdName
module=osd perm=rw flags=deprecated
"""
prefix = 'osd create'
_args = {'prefix': prefix, 'uuid': uuid, 'id': id_}
return self._mon_command(_args)
def osd_crush_add(self, id_: str, weight: float, args: List[str]):
"""
add or update crushmap position and weight for <name> with <weight> and location <args>
:param id_: CephOsdName
:param weight: CephFloat ragne=0.0
:param args: CephString goodchars=[A-Za-z0-9-_.=]
module=osd perm=rw flags=
"""
prefix = 'osd crush add'
_args = {'prefix': prefix, 'id': id_, 'weight': weight, 'args': args}
return self._mon_command(_args)
def osd_crush_add_bucket(self, name: str, type: str, args: List[str]=None):
"""
add no-parent (probably root) crush bucket <name> of type <type> to location <args>
:param name: CephString goodchars=[A-Za-z0-9-_.]
:param type: CephString
:param args: CephString goodchars=[A-Za-z0-9-_.=]
module=osd perm=rw flags=
"""
prefix = 'osd crush add-bucket'
_args = {'prefix': prefix, 'name': name, 'type': type, 'args': args}
return self._mon_command(_args)
def osd_crush_class_create(self, class_: str):
"""
create crush device class <class>
:param class_: CephString goodchars=[A-Za-z0-9-_]
module=osd perm=rw flags=
"""
prefix = 'osd crush class create'
_args = {'prefix': prefix, 'class': class_}
return self._mon_command(_args)
def osd_crush_class_ls(self):
"""
list all crush device classes
module=osd perm=r flags=
"""
prefix = 'osd crush class ls'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_crush_class_ls_osd(self, class_: str):
"""
list all osds belonging to the specific <class>
:param class_: CephString goodchars=[A-Za-z0-9-_]
module=osd perm=r flags=
"""
prefix = 'osd crush class ls-osd'
_args = {'prefix': prefix, 'class': class_}
return self._mon_command(_args)
def osd_crush_class_rename(self, srcname: str, dstname: str):
"""
rename crush device class <srcname> to <dstname>
:param srcname: CephString goodchars=[A-Za-z0-9-_]
:param dstname: CephString goodchars=[A-Za-z0-9-_]
module=osd perm=rw flags=
"""
prefix = 'osd crush class rename'
_args = {'prefix': prefix, 'srcname': srcname, 'dstname': dstname}
return self._mon_command(_args)
def osd_crush_class_rm(self, class_: str):
"""
remove crush device class <class>
:param class_: CephString goodchars=[A-Za-z0-9-_]
module=osd perm=rw flags=
"""
prefix = 'osd crush class rm'
_args = {'prefix': prefix, 'class': class_}
return self._mon_command(_args)
def osd_crush_create_or_move(self, id_: str, weight: float, args: List[str]):
"""
create entry or move existing entry for <name> <weight> at/to location <args>
:param id_: CephOsdName
:param weight: CephFloat ragne=0.0
:param args: CephString goodchars=[A-Za-z0-9-_.=]
module=osd perm=rw flags=
"""
prefix = 'osd crush create-or-move'
_args = {'prefix': prefix, 'id': id_, 'weight': weight, 'args': args}
return self._mon_command(_args)
def osd_crush_dump(self):
"""
dump crush map
module=osd perm=r flags=
"""
prefix = 'osd crush dump'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_crush_get_device_class(self, ids: List[str]):
"""
get classes of specified osd(s) <id> [<id>...]
:param ids: CephString
module=osd perm=r flags=
"""
prefix = 'osd crush get-device-class'
_args = {'prefix': prefix, 'ids': ids}
return self._mon_command(_args)
def osd_crush_get_tunable(self, tunable: str):
"""
get crush tunable <tunable>
:param tunable: CephChoices strings=straw_calc_version
module=osd perm=r flags=
"""
prefix = 'osd crush get-tunable'
_args = {'prefix': prefix, 'tunable': tunable}
return self._mon_command(_args)
def osd_crush_link(self, name: str, args: List[str]):
"""
link existing entry for <name> under location <args>
:param name: CephString
:param args: CephString goodchars=[A-Za-z0-9-_.=]
module=osd perm=rw flags=
"""
prefix = 'osd crush link'
_args = {'prefix': prefix, 'name': name, 'args': args}
return self._mon_command(_args)
def osd_crush_ls(self, node: str):
"""
list items beneath a node in the CRUSH tree
:param node: CephString goodchars=[A-Za-z0-9-_.]
module=osd perm=r flags=
"""
prefix = 'osd crush ls'
_args = {'prefix': prefix, 'node': node}
return self._mon_command(_args)
def osd_crush_move(self, name: str, args: List[str]):
"""
move existing entry for <name> to location <args>
:param name: CephString goodchars=[A-Za-z0-9-_.]
:param args: CephString goodchars=[A-Za-z0-9-_.=]
module=osd perm=rw flags=
"""
prefix = 'osd crush move'
_args = {'prefix': prefix, 'name': name, 'args': args}
return self._mon_command(_args)
@deprecated
def osd_crush_remove(self, name: str, ancestor: str=None):
"""
remove <name> from crush map (everywhere, or just at <ancestor>)
:param name: CephString goodchars=[A-Za-z0-9-_.]
:param ancestor: CephString goodchars=[A-Za-z0-9-_.]
module=osd perm=rw flags=deprecated
"""
prefix = 'osd crush remove'
_args = {'prefix': prefix, 'name': name, 'ancestor': ancestor}
return self._mon_command(_args)
def osd_crush_rename_bucket(self, srcname: str, dstname: str):
"""
rename bucket <srcname> to <dstname>
:param srcname: CephString goodchars=[A-Za-z0-9-_.]
:param dstname: CephString goodchars=[A-Za-z0-9-_.]
module=osd perm=rw flags=
"""
prefix = 'osd crush rename-bucket'
_args = {'prefix': prefix, 'srcname': srcname, 'dstname': dstname}
return self._mon_command(_args)
def osd_crush_reweight(self, name: str, weight: float):
"""
change <name>'s weight to <weight> in crush map
:param name: CephString goodchars=[A-Za-z0-9-_.]
:param weight: CephFloat ragne=0.0
module=osd perm=rw flags=
"""
prefix = 'osd crush reweight'
_args = {'prefix': prefix, 'name': name, 'weight': weight}
return self._mon_command(_args)
def osd_crush_reweight_all(self):
"""
recalculate the weights for the tree to ensure they sum correctly
module=osd perm=rw flags=
"""
prefix = 'osd crush reweight-all'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_crush_reweight_subtree(self, name: str, weight: float):
"""
change all leaf items beneath <name> to <weight> in crush map
:param name: CephString goodchars=[A-Za-z0-9-_.]
:param weight: CephFloat ragne=0.0
module=osd perm=rw flags=
"""
prefix = 'osd crush reweight-subtree'
_args = {'prefix': prefix, 'name': name, 'weight': weight}
return self._mon_command(_args)
def osd_crush_rm(self, name: str, ancestor: str=None):
"""
remove <name> from crush map (everywhere, or just at <ancestor>)
:param name: CephString goodchars=[A-Za-z0-9-_.]
:param ancestor: CephString goodchars=[A-Za-z0-9-_.]
module=osd perm=rw flags=
"""
prefix = 'osd crush rm'
_args = {'prefix': prefix, 'name': name, 'ancestor': ancestor}
return self._mon_command(_args)
def osd_crush_rm_device_class(self, ids: List[str]):
"""
remove class of the osd(s) <id> [<id>...],or use <all|any> to remove all.
:param ids: CephString
module=osd perm=rw flags=
"""
prefix = 'osd crush rm-device-class'
_args = {'prefix': prefix, 'ids': ids}
return self._mon_command(_args)
def osd_crush_rule_create_erasure(self, name: str, profile: str=None):
"""
create crush rule <name> for erasure coded pool created with <profile> (default default)
:param name: CephString goodchars=[A-Za-z0-9-_.]
:param profile: CephString goodchars=[A-Za-z0-9-_.=]
module=osd perm=rw flags=
"""
prefix = 'osd crush rule create-erasure'
_args = {'prefix': prefix, 'name': name, 'profile': profile}
return self._mon_command(_args)
def osd_crush_rule_create_replicated(self, name: str, root: str, type: str, class_: str=None):
"""
create crush rule <name> for replicated pool to start from <root>, replicate across buckets of type <type>, use devices of type <class> (ssd or hdd)
:param name: CephString goodchars=[A-Za-z0-9-_.]
:param root: CephString goodchars=[A-Za-z0-9-_.]
:param type: CephString goodchars=[A-Za-z0-9-_.]
:param class_: CephString goodchars=[A-Za-z0-9-_.]
module=osd perm=rw flags=
"""
prefix = 'osd crush rule create-replicated'
_args = {'prefix': prefix, 'name': name, 'root': root, 'type': type, 'class': class_}
return self._mon_command(_args)
def osd_crush_rule_create_simple(self, name: str, root: str, type: str, mode: str=None):
"""
create crush rule <name> to start from <root>, replicate across buckets of type <type>, using a choose mode of <firstn|indep> (default firstn; indep best for erasure pools)
:param name: CephString goodchars=[A-Za-z0-9-_.]
:param root: CephString goodchars=[A-Za-z0-9-_.]
:param type: CephString goodchars=[A-Za-z0-9-_.]
:param mode: CephChoices strings=firstn|indep
module=osd perm=rw flags=
"""
prefix = 'osd crush rule create-simple'
_args = {'prefix': prefix, 'name': name, 'root': root, 'type': type, 'mode': mode}
return self._mon_command(_args)
def osd_crush_rule_dump(self, name: str=None):
"""
dump crush rule <name> (default all)
:param name: CephString goodchars=[A-Za-z0-9-_.]
module=osd perm=r flags=
"""
prefix = 'osd crush rule dump'
_args = {'prefix': prefix, 'name': name}
return self._mon_command(_args)
@deprecated
def osd_crush_rule_list(self):
"""
list crush rules
module=osd perm=r flags=deprecated
"""
prefix = 'osd crush rule list'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_crush_rule_ls(self):
"""
list crush rules
module=osd perm=r flags=
"""
prefix = 'osd crush rule ls'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_crush_rule_ls_by_class(self, class_: str):
"""
list all crush rules that reference the same <class>
:param class_: CephString goodchars=[A-Za-z0-9-_.]
module=osd perm=r flags=
"""
prefix = 'osd crush rule ls-by-class'
_args = {'prefix': prefix, 'class': class_}
return self._mon_command(_args)
def osd_crush_rule_rename(self, srcname: str, dstname: str):
"""
rename crush rule <srcname> to <dstname>
:param srcname: CephString goodchars=[A-Za-z0-9-_.]
:param dstname: CephString goodchars=[A-Za-z0-9-_.]
module=osd perm=rw flags=
"""
prefix = 'osd crush rule rename'
_args = {'prefix': prefix, 'srcname': srcname, 'dstname': dstname}
return self._mon_command(_args)
def osd_crush_rule_rm(self, name: str):
"""
remove crush rule <name>
:param name: CephString goodchars=[A-Za-z0-9-_.]
module=osd perm=rw flags=
"""
prefix = 'osd crush rule rm'
_args = {'prefix': prefix, 'name': name}
return self._mon_command(_args)
@overload # Python 3 only
def osd_crush_set(self, prior_version: int=None):
"""
set crush map from input file
:param prior_version: CephInt
module=osd perm=rw flags=
"""
prefix = 'osd crush set'
_args = {'prefix': prefix, 'prior_version': prior_version}
return self._mon_command(_args)
@overload # Python 3 only
def osd_crush_set(self, id_: str, weight: float, args: List[str]):
"""
update crushmap position and weight for <name> to <weight> with location <args>
:param id_: CephOsdName
:param weight: CephFloat ragne=0.0
:param args: CephString goodchars=[A-Za-z0-9-_.=]
module=osd perm=rw flags=
"""
prefix = 'osd crush set'
_args = {'prefix': prefix, 'id': id_, 'weight': weight, 'args': args}
return self._mon_command(_args)
def osd_crush_set_all_straw_buckets_to_straw2(self):
"""
convert all CRUSH current straw buckets to use the straw2 algorithm
module=osd perm=rw flags=
"""
prefix = 'osd crush set-all-straw-buckets-to-straw2'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_crush_set_device_class(self, class_: str, ids: List[str]):
"""
set the <class> of the osd(s) <id> [<id>...],or use <all|any> to set all.
:param class_: CephString
:param ids: CephString
module=osd perm=rw flags=
"""
prefix = 'osd crush set-device-class'
_args = {'prefix': prefix, 'class': class_, 'ids': ids}
return self._mon_command(_args)
def osd_crush_set_tunable(self, tunable: str, value: int):
"""
set crush tunable <tunable> to <value>
:param tunable: CephChoices strings=straw_calc_version
:param value: CephInt
module=osd perm=rw flags=
"""
prefix = 'osd crush set-tunable'
_args = {'prefix': prefix, 'tunable': tunable, 'value': value}
return self._mon_command(_args)
def osd_crush_show_tunables(self):
"""
show current crush tunables
module=osd perm=r flags=
"""
prefix = 'osd crush show-tunables'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_crush_swap_bucket(self, source: str, dest: str, yes_i_really_mean_it: bool=None):
"""
swap existing bucket contents from (orphan) bucket <source> and <target>
:param source: CephString goodchars=[A-Za-z0-9-_.]
:param dest: CephString goodchars=[A-Za-z0-9-_.]
:param yes_i_really_mean_it: CephBool
module=osd perm=rw flags=
"""
prefix = 'osd crush swap-bucket'
_args = {'prefix': prefix, 'source': source, 'dest': dest, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
def osd_crush_tree(self, shadow: str=None):
"""
dump crush buckets and items in a tree view
:param shadow: CephChoices strings=--show-shadow
module=osd perm=r flags=
"""
prefix = 'osd crush tree'
_args = {'prefix': prefix, 'shadow': shadow}
return self._mon_command(_args)
def osd_crush_tunables(self, profile: str):
"""
set crush tunables values to <profile>
:param profile: CephChoices strings=legacy|argonaut|bobtail|firefly|hammer|jewel|optimal|default
module=osd perm=rw flags=
"""
prefix = 'osd crush tunables'
_args = {'prefix': prefix, 'profile': profile}
return self._mon_command(_args)
def osd_crush_unlink(self, name: str, ancestor: str=None):
"""
unlink <name> from crush map (everywhere, or just at <ancestor>)
:param name: CephString goodchars=[A-Za-z0-9-_.]
:param ancestor: CephString goodchars=[A-Za-z0-9-_.]
module=osd perm=rw flags=
"""
prefix = 'osd crush unlink'
_args = {'prefix': prefix, 'name': name, 'ancestor': ancestor}
return self._mon_command(_args)
def osd_crush_weight_set_create(self, pool: str, mode: str):
"""
create a weight-set for a given pool
:param pool: CephPoolname
:param mode: CephChoices strings=flat|positional
module=osd perm=rw flags=
"""
prefix = 'osd crush weight-set create'
_args = {'prefix': prefix, 'pool': pool, 'mode': mode}
return self._mon_command(_args)
def osd_crush_weight_set_create_compat(self):
"""
create a default backward-compatible weight-set
module=osd perm=rw flags=
"""
prefix = 'osd crush weight-set create-compat'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_crush_weight_set_dump(self):
"""
dump crush weight sets
module=osd perm=r flags=
"""
prefix = 'osd crush weight-set dump'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_crush_weight_set_ls(self):
"""
list crush weight sets
module=osd perm=r flags=
"""
prefix = 'osd crush weight-set ls'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_crush_weight_set_reweight(self, pool: str, item: str, weight: List[float]):
"""
set weight for an item (bucket or osd) in a pool's weight-set
:param pool: CephPoolname
:param item: CephString
:param weight: CephFloat ragne=0.0
module=osd perm=rw flags=
"""
prefix = 'osd crush weight-set reweight'
_args = {'prefix': prefix, 'pool': pool, 'item': item, 'weight': weight}
return self._mon_command(_args)
def osd_crush_weight_set_reweight_compat(self, item: str, weight: List[float]):
"""
set weight for an item (bucket or osd) in the backward-compatible weight-set
:param item: CephString
:param weight: CephFloat ragne=0.0
module=osd perm=rw flags=
"""
prefix = 'osd crush weight-set reweight-compat'
_args = {'prefix': prefix, 'item': item, 'weight': weight}
return self._mon_command(_args)
def osd_crush_weight_set_rm(self, pool: str):
"""
remove the weight-set for a given pool
:param pool: CephPoolname
module=osd perm=rw flags=
"""
prefix = 'osd crush weight-set rm'
_args = {'prefix': prefix, 'pool': pool}
return self._mon_command(_args)
def osd_crush_weight_set_rm_compat(self):
"""
remove the backward-compatible weight-set
module=osd perm=rw flags=
"""
prefix = 'osd crush weight-set rm-compat'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_deep_scrub(self, who: str):
"""
initiate deep scrub on osd <who>, or use <all|any> to deep scrub all
:param who: CephString
module=osd perm=rw flags=mgr
"""
prefix = 'osd deep-scrub'
_args = {'prefix': prefix, 'who': who}
return self._mon_command(_args)
def osd_destroy(self, id_: str, force: bool=None, yes_i_really_mean_it: bool=None):
"""
mark osd as being destroyed. Keeps the ID intact (allowing reuse), but removes cephx keys, config-key data and lockbox keys, rendering data permanently unreadable.
:param id_: CephOsdName
:param force: CephBool
:param yes_i_really_mean_it: CephBool
module=osd perm=rw flags=mgr
"""
prefix = 'osd destroy'
_args = {'prefix': prefix, 'id': id_, 'force': force, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
def osd_destroy_actual(self, id_: str, yes_i_really_mean_it: bool=None):
"""
mark osd as being destroyed. Keeps the ID intact (allowing reuse), but removes cephx keys, config-key data and lockbox keys, rendering data permanently unreadable.
:param id_: CephOsdName
:param yes_i_really_mean_it: CephBool
module=osd perm=rw flags=hidden
"""
prefix = 'osd destroy-actual'
_args = {'prefix': prefix, 'id': id_, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
def osd_df(self, output_method: str=None, filter_by: str=None, filter: str=None):
"""
show OSD utilization
:param output_method: CephChoices strings=plain|tree
:param filter_by: CephChoices strings=class|name
:param filter: CephString
module=osd perm=r flags=mgr
"""
prefix = 'osd df'
_args = {'prefix': prefix, 'output_method': output_method, 'filter_by': filter_by, 'filter': filter}
return self._mon_command(_args)
def osd_down(self, ids: List[str]):
"""
set osd(s) <id> [<id>...] down, or use <any|all> to set all osds down
:param ids: CephString
module=osd perm=rw flags=
"""
prefix = 'osd down'
_args = {'prefix': prefix, 'ids': ids}
return self._mon_command(_args)
def osd_dump(self, epoch: int=None):
"""
print summary of OSD map
:param epoch: CephInt ragne=0
module=osd perm=r flags=
"""
prefix = 'osd dump'
_args = {'prefix': prefix, 'epoch': epoch}
return self._mon_command(_args)
def osd_erasure_code_profile_get(self, name: str):
"""
get erasure code profile <name>
:param name: CephString goodchars=[A-Za-z0-9-_.]
module=osd perm=r flags=
"""
prefix = 'osd erasure-code-profile get'
_args = {'prefix': prefix, 'name': name}
return self._mon_command(_args)
def osd_erasure_code_profile_ls(self):
"""
list all erasure code profiles
module=osd perm=r flags=
"""
prefix = 'osd erasure-code-profile ls'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_erasure_code_profile_rm(self, name: str):
"""
remove erasure code profile <name>
:param name: CephString goodchars=[A-Za-z0-9-_.]
module=osd perm=rw flags=
"""
prefix = 'osd erasure-code-profile rm'
_args = {'prefix': prefix, 'name': name}
return self._mon_command(_args)
def osd_erasure_code_profile_set(self, name: str, profile: List[str]=None, force: bool=None):
"""
create erasure code profile <name> with [<key[=value]> ...] pairs. Add a --force at the end to override an existing profile (VERY DANGEROUS)
:param name: CephString goodchars=[A-Za-z0-9-_.]
:param profile: CephString
:param force: CephBool
module=osd perm=rw flags=
"""
prefix = 'osd erasure-code-profile set'
_args = {'prefix': prefix, 'name': name, 'profile': profile, 'force': force}
return self._mon_command(_args)
def osd_find(self, id_: str):
"""
find osd <id> in the CRUSH map and show its location
:param id_: CephOsdName
module=osd perm=r flags=
"""
prefix = 'osd find'
_args = {'prefix': prefix, 'id': id_}
return self._mon_command(_args)
def osd_force_create_pg(self, pgid: str, yes_i_really_mean_it: bool=None):
"""
force creation of pg <pgid>
:param pgid: CephPgid
:param yes_i_really_mean_it: CephBool
module=osd perm=rw flags=
"""
prefix = 'osd force-create-pg'
_args = {'prefix': prefix, 'pgid': pgid, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
def osd_get_require_min_compat_client(self):
"""
get the minimum client version we will maintain compatibility with
module=osd perm=r flags=
"""
prefix = 'osd get-require-min-compat-client'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_getcrushmap(self, epoch: int=None):
"""
get CRUSH map
:param epoch: CephInt ragne=0
module=osd perm=r flags=
"""
prefix = 'osd getcrushmap'
_args = {'prefix': prefix, 'epoch': epoch}
return self._mon_command(_args)
def osd_getmap(self, epoch: int=None):
"""
get OSD map
:param epoch: CephInt ragne=0
module=osd perm=r flags=
"""
prefix = 'osd getmap'
_args = {'prefix': prefix, 'epoch': epoch}
return self._mon_command(_args)
def osd_getmaxosd(self):
"""
show largest OSD id
module=osd perm=r flags=
"""
prefix = 'osd getmaxosd'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_in(self, ids: List[str]):
"""
set osd(s) <id> [<id>...] in, can use <any|all> to automatically set all previously out osds in
:param ids: CephString
module=osd perm=rw flags=
"""
prefix = 'osd in'
_args = {'prefix': prefix, 'ids': ids}
return self._mon_command(_args)
def osd_last_stat_seq(self, id_: str):
"""
get the last pg stats sequence number reported for this osd
:param id_: CephOsdName
module=osd perm=r flags=
"""
prefix = 'osd last-stat-seq'
_args = {'prefix': prefix, 'id': id_}
return self._mon_command(_args)
def osd_lost(self, id_: str, yes_i_really_mean_it: bool=None):
"""
mark osd as permanently lost. THIS DESTROYS DATA IF NO MORE REPLICAS EXIST, BE CAREFUL
:param id_: CephOsdName
:param yes_i_really_mean_it: CephBool
module=osd perm=rw flags=
"""
prefix = 'osd lost'
_args = {'prefix': prefix, 'id': id_, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
def osd_ls(self, epoch: int=None):
"""
show all OSD ids
:param epoch: CephInt ragne=0
module=osd perm=r flags=
"""
prefix = 'osd ls'
_args = {'prefix': prefix, 'epoch': epoch}
return self._mon_command(_args)
def osd_ls_tree(self, name: str, epoch: int=None):
"""
show OSD ids under bucket <name> in the CRUSH map
:param name: CephString
:param epoch: CephInt ragne=0
module=osd perm=r flags=
"""
prefix = 'osd ls-tree'
_args = {'prefix': prefix, 'name': name, 'epoch': epoch}
return self._mon_command(_args)
@deprecated
def osd_lspools(self):
"""
list pools
module=osd perm=r flags=deprecated
"""
prefix = 'osd lspools'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_map(self, pool: str, object: str, nspace: str=None):
"""
find pg for <object> in <pool> with [namespace]
:param pool: CephPoolname
:param object: CephObjectname
:param nspace: CephString
module=osd perm=r flags=
"""
prefix = 'osd map'
_args = {'prefix': prefix, 'pool': pool, 'object': object, 'nspace': nspace}
return self._mon_command(_args)
def osd_metadata(self, id_: str=None):
"""
fetch metadata for osd {id} (default all)
:param id_: CephOsdName
module=osd perm=r flags=
"""
prefix = 'osd metadata'
_args = {'prefix': prefix, 'id': id_}
return self._mon_command(_args)
def osd_new(self, uuid: str, id_: str=None):
"""
Create a new OSD. If supplied, the `id` to be replaced needs to exist and have been previously destroyed. Reads secrets from JSON file via `-i <file>` (see man page).
:param uuid: CephUUID
:param id_: CephOsdName
module=osd perm=rw flags=
"""
prefix = 'osd new'
_args = {'prefix': prefix, 'uuid': uuid, 'id': id_}
return self._mon_command(_args)
def osd_numa_status(self):
"""
show NUMA status of OSDs
module=osd perm=r flags=
"""
prefix = 'osd numa-status'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_ok_to_stop(self, ids: List[str]):
"""
check whether osd(s) can be safely stopped without reducing immediate data availability
:param ids: CephString
module=osd perm=r flags=mgr
"""
prefix = 'osd ok-to-stop'
_args = {'prefix': prefix, 'ids': ids}
return self._mon_command(_args)
def osd_out(self, ids: List[str]):
"""
set osd(s) <id> [<id>...] out, or use <any|all> to set all osds out
:param ids: CephString
module=osd perm=rw flags=
"""
prefix = 'osd out'
_args = {'prefix': prefix, 'ids': ids}
return self._mon_command(_args)
def osd_pause(self):
"""
pause osd
module=osd perm=rw flags=
"""
prefix = 'osd pause'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_perf(self):
"""
print dump of OSD perf summary stats
module=osd perm=r flags=mgr
"""
prefix = 'osd perf'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_perf_counters_get(self, query_id: int):
"""
fetch osd perf counters
:param query_id: CephInt
module=mgr perm=w flags=mgr
"""
prefix = 'osd perf counters get'
_args = {'prefix': prefix, 'query_id': query_id}
return self._mon_command(_args)
def osd_perf_query_add(self, query: str):
"""
add osd perf query
:param query: CephChoices strings=client_id|rbd_image_id|all_subkeys
module=mgr perm=w flags=mgr
"""
prefix = 'osd perf query add'
_args = {'prefix': prefix, 'query': query}
return self._mon_command(_args)
def osd_perf_query_remove(self, query_id: int):
"""
remove osd perf query
:param query_id: CephInt
module=mgr perm=w flags=mgr
"""
prefix = 'osd perf query remove'
_args = {'prefix': prefix, 'query_id': query_id}
return self._mon_command(_args)
def osd_pg_temp(self, pgid: str, id_: List[str]=None):
"""
set pg_temp mapping pgid:[<id> [<id>...]] (developers only)
:param pgid: CephPgid
:param id_: CephOsdName
module=osd perm=rw flags=
"""
prefix = 'osd pg-temp'
_args = {'prefix': prefix, 'pgid': pgid, 'id': id_}
return self._mon_command(_args)
def osd_pg_upmap(self, pgid: str, id_: List[str]):
"""
set pg_upmap mapping <pgid>:[<id> [<id>...]] (developers only)
:param pgid: CephPgid
:param id_: CephOsdName
module=osd perm=rw flags=
"""
prefix = 'osd pg-upmap'
_args = {'prefix': prefix, 'pgid': pgid, 'id': id_}
return self._mon_command(_args)
def osd_pg_upmap_items(self, pgid: str, id_: List[str]):
"""
set pg_upmap_items mapping <pgid>:{<id> to <id>, [...]} (developers only)
:param pgid: CephPgid
:param id_: CephOsdName
module=osd perm=rw flags=
"""
prefix = 'osd pg-upmap-items'
_args = {'prefix': prefix, 'pgid': pgid, 'id': id_}
return self._mon_command(_args)
def osd_pool_application_disable(self, pool: str, app: str, yes_i_really_mean_it: bool=None):
"""
disables use of an application <app> on pool <poolname>
:param pool: CephPoolname
:param app: CephString
:param yes_i_really_mean_it: CephBool
module=osd perm=rw flags=
"""
prefix = 'osd pool application disable'
_args = {'prefix': prefix, 'pool': pool, 'app': app, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
def osd_pool_application_enable(self, pool: str, app: str, yes_i_really_mean_it: bool=None):
"""
enable use of an application <app> [cephfs,rbd,rgw] on pool <poolname>
:param pool: CephPoolname
:param app: CephString goodchars=[A-Za-z0-9-_.]
:param yes_i_really_mean_it: CephBool
module=osd perm=rw flags=
"""
prefix = 'osd pool application enable'
_args = {'prefix': prefix, 'pool': pool, 'app': app, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
def osd_pool_application_get(self, pool: str, app: str=None, key: str=None):
"""
get value of key <key> of application <app> on pool <poolname>
:param pool: CephPoolname
:param app: CephString
:param key: CephString
module=osd perm=r flags=
"""
prefix = 'osd pool application get'
_args = {'prefix': prefix, 'pool': pool, 'app': app, 'key': key}
return self._mon_command(_args)
def osd_pool_application_rm(self, pool: str, app: str, key: str):
"""
removes application <app> metadata key <key> on pool <poolname>
:param pool: CephPoolname
:param app: CephString
:param key: CephString
module=osd perm=rw flags=
"""
prefix = 'osd pool application rm'
_args = {'prefix': prefix, 'pool': pool, 'app': app, 'key': key}
return self._mon_command(_args)
def osd_pool_application_set(self, pool: str, app: str, key: str, value: str):
"""
sets application <app> metadata key <key> to <value> on pool <poolname>
:param pool: CephPoolname
:param app: CephString
:param key: CephString goodchars=[A-Za-z0-9-_.]
:param value: CephString goodchars=[A-Za-z0-9-_.=]
module=osd perm=rw flags=
"""
prefix = 'osd pool application set'
_args = {'prefix': prefix, 'pool': pool, 'app': app, 'key': key, 'value': value}
return self._mon_command(_args)
def osd_pool_autoscale_status(self):
"""
report on pool pg_num sizing recommendation and intent
module=mgr perm=r flags=mgr
"""
prefix = 'osd pool autoscale-status'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_pool_cancel_force_backfill(self, who: List[str]):
"""
restore normal recovery priority of specified pool <who>
:param who: CephPoolname
module=osd perm=rw flags=mgr
"""
prefix = 'osd pool cancel-force-backfill'
_args = {'prefix': prefix, 'who': who}
return self._mon_command(_args)
def osd_pool_cancel_force_recovery(self, who: List[str]):
"""
restore normal recovery priority of specified pool <who>
:param who: CephPoolname
module=osd perm=rw flags=mgr
"""
prefix = 'osd pool cancel-force-recovery'
_args = {'prefix': prefix, 'who': who}
return self._mon_command(_args)
def osd_pool_create(self, pool: str, pg_num: int, pgp_num: int=None, pool_type: str=None, erasure_code_profile: str=None, rule: str=None, expected_num_objects: int=None, size: int=None, pg_num_min: int=None, target_size_bytes: int=None, target_size_ratio: float=None):
"""
create pool
:param pool: CephPoolname
:param pg_num: CephInt ragne=0
:param pgp_num: CephInt ragne=0
:param pool_type: CephChoices strings=replicated|erasure
:param erasure_code_profile: CephString goodchars=[A-Za-z0-9-_.]
:param rule: CephString
:param expected_num_objects: CephInt
:param size: CephInt
:param pg_num_min: CephInt ragne=0
:param target_size_bytes: CephInt ragne=0
:param target_size_ratio: CephFloat ragne=0|1
module=osd perm=rw flags=
"""
prefix = 'osd pool create'
_args = {'prefix': prefix, 'pool': pool, 'pg_num': pg_num, 'pgp_num': pgp_num, 'pool_type': pool_type, 'erasure_code_profile': erasure_code_profile, 'rule': rule, 'expected_num_objects': expected_num_objects, 'size': size, 'pg_num_min': pg_num_min, 'target_size_bytes': target_size_bytes, 'target_size_ratio': target_size_ratio}
return self._mon_command(_args)
def osd_pool_deep_scrub(self, who: List[str]):
"""
initiate deep-scrub on pool <who>
:param who: CephPoolname
module=osd perm=rw flags=mgr
"""
prefix = 'osd pool deep-scrub'
_args = {'prefix': prefix, 'who': who}
return self._mon_command(_args)
@deprecated
def osd_pool_delete(self, pool: str, pool2: str=None, yes_i_really_really_mean_it: bool=None, yes_i_really_really_mean_it_not_faking: bool=None):
"""
delete pool
:param pool: CephPoolname
:param pool2: CephPoolname
:param yes_i_really_really_mean_it: CephBool
:param yes_i_really_really_mean_it_not_faking: CephBool
module=osd perm=rw flags=deprecated
"""
prefix = 'osd pool delete'
_args = {'prefix': prefix, 'pool': pool, 'pool2': pool2, 'yes_i_really_really_mean_it': yes_i_really_really_mean_it, 'yes_i_really_really_mean_it_not_faking': yes_i_really_really_mean_it_not_faking}
return self._mon_command(_args)
def osd_pool_force_backfill(self, who: List[str]):
"""
force backfill of specified pool <who> first
:param who: CephPoolname
module=osd perm=rw flags=mgr
"""
prefix = 'osd pool force-backfill'
_args = {'prefix': prefix, 'who': who}
return self._mon_command(_args)
def osd_pool_force_recovery(self, who: List[str]):
"""
force recovery of specified pool <who> first
:param who: CephPoolname
module=osd perm=rw flags=mgr
"""
prefix = 'osd pool force-recovery'
_args = {'prefix': prefix, 'who': who}
return self._mon_command(_args)
def osd_pool_get(self, pool: str, var: str):
"""
get pool parameter <var>
:param pool: CephPoolname
:param var: CephChoices strings=size|min_size|pg_num|pgp_num|crush_rule|hashpspool|nodelete|nopgchange|nosizechange|write_fadvise_dontneed|noscrub|nodeep-scrub|hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|use_gmt_hitset|target_max_objects|target_max_bytes|cache_target_dirty_ratio|cache_target_dirty_high_ratio|cache_target_full_ratio|cache_min_flush_age|cache_min_evict_age|erasure_code_profile|min_read_recency_for_promote|all|min_write_recency_for_promote|fast_read|hit_set_grade_decay_rate|hit_set_search_last_n|scrub_min_interval|scrub_max_interval|deep_scrub_interval|recovery_priority|recovery_op_priority|scrub_priority|compression_mode|compression_algorithm|compression_required_ratio|compression_max_blob_size|compression_min_blob_size|csum_type|csum_min_block|csum_max_block|allow_ec_overwrites|fingerprint_algorithm|pg_autoscale_mode|pg_autoscale_bias|pg_num_min|target_size_bytes|target_size_ratio
module=osd perm=r flags=
"""
prefix = 'osd pool get'
_args = {'prefix': prefix, 'pool': pool, 'var': var}
return self._mon_command(_args)
def osd_pool_get_quota(self, pool: str):
"""
obtain object or byte limits for pool
:param pool: CephPoolname
module=osd perm=r flags=
"""
prefix = 'osd pool get-quota'
_args = {'prefix': prefix, 'pool': pool}
return self._mon_command(_args)
def osd_pool_ls(self, detail: str=None):
"""
list pools
:param detail: CephChoices strings=detail
module=osd perm=r flags=
"""
prefix = 'osd pool ls'
_args = {'prefix': prefix, 'detail': detail}
return self._mon_command(_args)
def osd_pool_mksnap(self, pool: str, snap: str):
"""
make snapshot <snap> in <pool>
:param pool: CephPoolname
:param snap: CephString
module=osd perm=rw flags=
"""
prefix = 'osd pool mksnap'
_args = {'prefix': prefix, 'pool': pool, 'snap': snap}
return self._mon_command(_args)
def osd_pool_rename(self, srcpool: str, destpool: str):
"""
rename <srcpool> to <destpool>
:param srcpool: CephPoolname
:param destpool: CephPoolname
module=osd perm=rw flags=
"""
prefix = 'osd pool rename'
_args = {'prefix': prefix, 'srcpool': srcpool, 'destpool': destpool}
return self._mon_command(_args)
def osd_pool_repair(self, who: List[str]):
"""
initiate repair on pool <who>
:param who: CephPoolname
module=osd perm=rw flags=mgr
"""
prefix = 'osd pool repair'
_args = {'prefix': prefix, 'who': who}
return self._mon_command(_args)
def osd_pool_rm(self, pool: str, pool2: str=None, yes_i_really_really_mean_it: bool=None, yes_i_really_really_mean_it_not_faking: bool=None):
"""
remove pool
:param pool: CephPoolname
:param pool2: CephPoolname
:param yes_i_really_really_mean_it: CephBool
:param yes_i_really_really_mean_it_not_faking: CephBool
module=osd perm=rw flags=
"""
prefix = 'osd pool rm'
_args = {'prefix': prefix, 'pool': pool, 'pool2': pool2, 'yes_i_really_really_mean_it': yes_i_really_really_mean_it, 'yes_i_really_really_mean_it_not_faking': yes_i_really_really_mean_it_not_faking}
return self._mon_command(_args)
def osd_pool_rmsnap(self, pool: str, snap: str):
"""
remove snapshot <snap> from <pool>
:param pool: CephPoolname
:param snap: CephString
module=osd perm=rw flags=
"""
prefix = 'osd pool rmsnap'
_args = {'prefix': prefix, 'pool': pool, 'snap': snap}
return self._mon_command(_args)
def osd_pool_scrub(self, who: List[str]):
"""
initiate scrub on pool <who>
:param who: CephPoolname
module=osd perm=rw flags=mgr
"""
prefix = 'osd pool scrub'
_args = {'prefix': prefix, 'who': who}
return self._mon_command(_args)
def osd_pool_set(self, pool: str, var: str, val: str, yes_i_really_mean_it: bool=None):
"""
set pool parameter <var> to <val>
:param pool: CephPoolname
:param var: CephChoices strings=size|min_size|pg_num|pgp_num|pgp_num_actual|crush_rule|hashpspool|nodelete|nopgchange|nosizechange|write_fadvise_dontneed|noscrub|nodeep-scrub|hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|use_gmt_hitset|target_max_bytes|target_max_objects|cache_target_dirty_ratio|cache_target_dirty_high_ratio|cache_target_full_ratio|cache_min_flush_age|cache_min_evict_age|min_read_recency_for_promote|min_write_recency_for_promote|fast_read|hit_set_grade_decay_rate|hit_set_search_last_n|scrub_min_interval|scrub_max_interval|deep_scrub_interval|recovery_priority|recovery_op_priority|scrub_priority|compression_mode|compression_algorithm|compression_required_ratio|compression_max_blob_size|compression_min_blob_size|csum_type|csum_min_block|csum_max_block|allow_ec_overwrites|fingerprint_algorithm|pg_autoscale_mode|pg_autoscale_bias|pg_num_min|target_size_bytes|target_size_ratio
:param val: CephString
:param yes_i_really_mean_it: CephBool
module=osd perm=rw flags=
"""
prefix = 'osd pool set'
_args = {'prefix': prefix, 'pool': pool, 'var': var, 'val': val, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
def osd_pool_set_quota(self, pool: str, field: str, val: str):
"""
set object or byte limit on pool
:param pool: CephPoolname
:param field: CephChoices strings=max_objects|max_bytes
:param val: CephString
module=osd perm=rw flags=
"""
prefix = 'osd pool set-quota'
_args = {'prefix': prefix, 'pool': pool, 'field': field, 'val': val}
return self._mon_command(_args)
def osd_pool_stats(self, pool_name: str=None):
"""
obtain stats from all pools, or from specified pool
:param pool_name: CephPoolname
module=osd perm=r flags=mgr
"""
prefix = 'osd pool stats'
_args = {'prefix': prefix, 'pool_name': pool_name}
return self._mon_command(_args)
def osd_primary_affinity(self, id_: str, weight: float):
"""
adjust osd primary-affinity from 0.0 <= <weight> <= 1.0
:param id_: CephOsdName
:param weight: CephFloat ragne=0.0|1.0
module=osd perm=rw flags=
"""
prefix = 'osd primary-affinity'
_args = {'prefix': prefix, 'id': id_, 'weight': weight}
return self._mon_command(_args)
def osd_primary_temp(self, pgid: str, id_: str):
"""
set primary_temp mapping pgid:<id>|-1 (developers only)
:param pgid: CephPgid
:param id_: CephOsdName
module=osd perm=rw flags=
"""
prefix = 'osd primary-temp'
_args = {'prefix': prefix, 'pgid': pgid, 'id': id_}
return self._mon_command(_args)
def osd_purge(self, id_: str, force: bool=None, yes_i_really_mean_it: bool=None):
"""
purge all osd data from the monitors including the OSD id and CRUSH position
:param id_: CephOsdName
:param force: CephBool
:param yes_i_really_mean_it: CephBool
module=osd perm=rw flags=mgr
"""
prefix = 'osd purge'
_args = {'prefix': prefix, 'id': id_, 'force': force, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
def osd_purge_actual(self, id_: str, yes_i_really_mean_it: bool=None):
"""
purge all osd data from the monitors. Combines `osd destroy`, `osd rm`, and `osd crush rm`.
:param id_: CephOsdName
:param yes_i_really_mean_it: CephBool
module=osd perm=rw flags=hidden
"""
prefix = 'osd purge-actual'
_args = {'prefix': prefix, 'id': id_, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
def osd_purge_new(self, id_: str, yes_i_really_mean_it: bool=None):
"""
purge all traces of an OSD that was partially created but never started
:param id_: CephOsdName
:param yes_i_really_mean_it: CephBool
module=osd perm=rw flags=
"""
prefix = 'osd purge-new'
_args = {'prefix': prefix, 'id': id_, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
def osd_repair(self, who: str):
"""
initiate repair on osd <who>, or use <all|any> to repair all
:param who: CephString
module=osd perm=rw flags=mgr
"""
prefix = 'osd repair'
_args = {'prefix': prefix, 'who': who}
return self._mon_command(_args)
def osd_require_osd_release(self, release: str, yes_i_really_mean_it: bool=None):
"""
set the minimum allowed OSD release to participate in the cluster
:param release: CephChoices strings=luminous|mimic|nautilus|octopus
:param yes_i_really_mean_it: CephBool
module=osd perm=rw flags=
"""
prefix = 'osd require-osd-release'
_args = {'prefix': prefix, 'release': release, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
def osd_reweight(self, id_: str, weight: float):
"""
reweight osd to 0.0 < <weight> < 1.0
:param id_: CephOsdName
:param weight: CephFloat ragne=0.0|1.0
module=osd perm=rw flags=
"""
prefix = 'osd reweight'
_args = {'prefix': prefix, 'id': id_, 'weight': weight}
return self._mon_command(_args)
def osd_reweight_by_pg(self, oload: int=None, max_change: float=None, max_osds: int=None, pools: List[str]=None):
"""
reweight OSDs by PG distribution [overload-percentage-for-consideration, default 120]
:param oload: CephInt
:param max_change: CephFloat
:param max_osds: CephInt
:param pools: CephPoolname
module=osd perm=rw flags=mgr
"""
prefix = 'osd reweight-by-pg'
_args = {'prefix': prefix, 'oload': oload, 'max_change': max_change, 'max_osds': max_osds, 'pools': pools}
return self._mon_command(_args)
def osd_reweight_by_utilization(self, oload: int=None, max_change: float=None, max_osds: int=None, no_increasing: str=None):
"""
reweight OSDs by utilization [overload-percentage-for-consideration, default 120]
:param oload: CephInt
:param max_change: CephFloat
:param max_osds: CephInt
:param no_increasing: CephChoices strings=--no-increasing
module=osd perm=rw flags=mgr
"""
prefix = 'osd reweight-by-utilization'
_args = {'prefix': prefix, 'oload': oload, 'max_change': max_change, 'max_osds': max_osds, 'no_increasing': no_increasing}
return self._mon_command(_args)
def osd_reweightn(self, weights: str):
"""
reweight osds with {<id>: <weight>,...})
:param weights: CephString
module=osd perm=rw flags=
"""
prefix = 'osd reweightn'
_args = {'prefix': prefix, 'weights': weights}
return self._mon_command(_args)
@deprecated
def osd_rm(self, ids: List[str]):
"""
remove osd(s) <id> [<id>...], or use <any|all> to remove all osds
:param ids: CephString
module=osd perm=rw flags=deprecated
"""
prefix = 'osd rm'
_args = {'prefix': prefix, 'ids': ids}
return self._mon_command(_args)
def osd_rm_nodown(self, ids: List[str]):
"""
allow osd(s) <id> [<id>...] to be marked down (if they are currently marked as nodown), can use <all|any> to automatically filter out all nodown osds
:param ids: CephString
module=osd perm=rw flags=
"""
prefix = 'osd rm-nodown'
_args = {'prefix': prefix, 'ids': ids}
return self._mon_command(_args)
def osd_rm_noin(self, ids: List[str]):
"""
allow osd(s) <id> [<id>...] to be marked in (if they are currently marked as noin), can use <all|any> to automatically filter out all noin osds
:param ids: CephString
module=osd perm=rw flags=
"""
prefix = 'osd rm-noin'
_args = {'prefix': prefix, 'ids': ids}
return self._mon_command(_args)
def osd_rm_noout(self, ids: List[str]):
"""
allow osd(s) <id> [<id>...] to be marked out (if they are currently marked as noout), can use <all|any> to automatically filter out all noout osds
:param ids: CephString
module=osd perm=rw flags=
"""
prefix = 'osd rm-noout'
_args = {'prefix': prefix, 'ids': ids}
return self._mon_command(_args)
def osd_rm_noup(self, ids: List[str]):
"""
allow osd(s) <id> [<id>...] to be marked up (if they are currently marked as noup), can use <all|any> to automatically filter out all noup osds
:param ids: CephString
module=osd perm=rw flags=
"""
prefix = 'osd rm-noup'
_args = {'prefix': prefix, 'ids': ids}
return self._mon_command(_args)
def osd_rm_pg_upmap(self, pgid: str):
"""
clear pg_upmap mapping for <pgid> (developers only)
:param pgid: CephPgid
module=osd perm=rw flags=
"""
prefix = 'osd rm-pg-upmap'
_args = {'prefix': prefix, 'pgid': pgid}
return self._mon_command(_args)
def osd_rm_pg_upmap_items(self, pgid: str):
"""
clear pg_upmap_items mapping for <pgid> (developers only)
:param pgid: CephPgid
module=osd perm=rw flags=
"""
prefix = 'osd rm-pg-upmap-items'
_args = {'prefix': prefix, 'pgid': pgid}
return self._mon_command(_args)
def osd_safe_to_destroy(self, ids: List[str]):
"""
check whether osd(s) can be safely destroyed without reducing data durability
:param ids: CephString
module=osd perm=r flags=mgr
"""
prefix = 'osd safe-to-destroy'
_args = {'prefix': prefix, 'ids': ids}
return self._mon_command(_args)
def osd_scrub(self, who: str):
"""
initiate scrub on osd <who>, or use <all|any> to scrub all
:param who: CephString
module=osd perm=rw flags=mgr
"""
prefix = 'osd scrub'
_args = {'prefix': prefix, 'who': who}
return self._mon_command(_args)
def osd_set(self, key: str, yes_i_really_mean_it: bool=None):
"""
set <key>
:param key: CephChoices strings=full|pause|noup|nodown|noout|noin|nobackfill|norebalance|norecover|noscrub|nodeep-scrub|notieragent|nosnaptrim|pglog_hardlimit
:param yes_i_really_mean_it: CephBool
module=osd perm=rw flags=
"""
prefix = 'osd set'
_args = {'prefix': prefix, 'key': key, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
def osd_set_backfillfull_ratio(self, ratio: float):
"""
set usage ratio at which OSDs are marked too full to backfill
:param ratio: CephFloat ragne=0.0|1.0
module=osd perm=rw flags=
"""
prefix = 'osd set-backfillfull-ratio'
_args = {'prefix': prefix, 'ratio': ratio}
return self._mon_command(_args)
def osd_set_full_ratio(self, ratio: float):
"""
set usage ratio at which OSDs are marked full
:param ratio: CephFloat ragne=0.0|1.0
module=osd perm=rw flags=
"""
prefix = 'osd set-full-ratio'
_args = {'prefix': prefix, 'ratio': ratio}
return self._mon_command(_args)
def osd_set_nearfull_ratio(self, ratio: float):
"""
set usage ratio at which OSDs are marked near-full
:param ratio: CephFloat ragne=0.0|1.0
module=osd perm=rw flags=
"""
prefix = 'osd set-nearfull-ratio'
_args = {'prefix': prefix, 'ratio': ratio}
return self._mon_command(_args)
def osd_set_require_min_compat_client(self, version: str, yes_i_really_mean_it: bool=None):
"""
set the minimum client version we will maintain compatibility with
:param version: CephString
:param yes_i_really_mean_it: CephBool
module=osd perm=rw flags=
"""
prefix = 'osd set-require-min-compat-client'
_args = {'prefix': prefix, 'version': version, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
def osd_setcrushmap(self, prior_version: int=None):
"""
set crush map from input file
:param prior_version: CephInt
module=osd perm=rw flags=
"""
prefix = 'osd setcrushmap'
_args = {'prefix': prefix, 'prior_version': prior_version}
return self._mon_command(_args)
def osd_setmaxosd(self, newmax: int):
"""
set new maximum osd value
:param newmax: CephInt ragne=0
module=osd perm=rw flags=
"""
prefix = 'osd setmaxosd'
_args = {'prefix': prefix, 'newmax': newmax}
return self._mon_command(_args)
def osd_stat(self):
"""
print summary of OSD map
module=osd perm=r flags=
"""
prefix = 'osd stat'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_status(self, bucket: str=None):
"""
Show the status of OSDs within a bucket, or all
:param bucket: CephString
module=mgr perm=r flags=mgr
"""
prefix = 'osd status'
_args = {'prefix': prefix, 'bucket': bucket}
return self._mon_command(_args)
def osd_stop(self, ids: List[str]):
"""
stop the corresponding osd daemons and mark them as down
:param ids: CephString
module=osd perm=rw flags=
"""
prefix = 'osd stop'
_args = {'prefix': prefix, 'ids': ids}
return self._mon_command(_args)
def osd_test_reweight_by_pg(self, oload: int=None, max_change: float=None, max_osds: int=None, pools: List[str]=None):
"""
dry run of reweight OSDs by PG distribution [overload-percentage-for-consideration, default 120]
:param oload: CephInt
:param max_change: CephFloat
:param max_osds: CephInt
:param pools: CephPoolname
module=osd perm=r flags=mgr
"""
prefix = 'osd test-reweight-by-pg'
_args = {'prefix': prefix, 'oload': oload, 'max_change': max_change, 'max_osds': max_osds, 'pools': pools}
return self._mon_command(_args)
def osd_test_reweight_by_utilization(self, oload: int=None, max_change: float=None, max_osds: int=None, no_increasing: bool=None):
"""
dry run of reweight OSDs by utilization [overload-percentage-for-consideration, default 120]
:param oload: CephInt
:param max_change: CephFloat
:param max_osds: CephInt
:param no_increasing: CephBool
module=osd perm=r flags=mgr
"""
prefix = 'osd test-reweight-by-utilization'
_args = {'prefix': prefix, 'oload': oload, 'max_change': max_change, 'max_osds': max_osds, 'no_increasing': no_increasing}
return self._mon_command(_args)
def osd_tier_add(self, pool: str, tierpool: str, force_nonempty: str=None):
"""
add the tier <tierpool> (the second one) to base pool <pool> (the first one)
:param pool: CephPoolname
:param tierpool: CephPoolname
:param force_nonempty: CephChoices strings=--force-nonempty
module=osd perm=rw flags=
"""
prefix = 'osd tier add'
_args = {'prefix': prefix, 'pool': pool, 'tierpool': tierpool, 'force_nonempty': force_nonempty}
return self._mon_command(_args)
def osd_tier_add_cache(self, pool: str, tierpool: str, size: int):
"""
add a cache <tierpool> (the second one) of size <size> to existing pool <pool> (the first one)
:param pool: CephPoolname
:param tierpool: CephPoolname
:param size: CephInt ragne=0
module=osd perm=rw flags=
"""
prefix = 'osd tier add-cache'
_args = {'prefix': prefix, 'pool': pool, 'tierpool': tierpool, 'size': size}
return self._mon_command(_args)
def osd_tier_cache_mode(self, pool: str, mode: str, yes_i_really_mean_it: bool=None):
"""
specify the caching mode for cache tier <pool>
:param pool: CephPoolname
:param mode: CephChoices strings=none|writeback|forward|readonly|readforward|proxy|readproxy
:param yes_i_really_mean_it: CephBool
module=osd perm=rw flags=
"""
prefix = 'osd tier cache-mode'
_args = {'prefix': prefix, 'pool': pool, 'mode': mode, 'yes_i_really_mean_it': yes_i_really_mean_it}
return self._mon_command(_args)
@deprecated
def osd_tier_remove(self, pool: str, tierpool: str):
"""
remove the tier <tierpool> (the second one) from base pool <pool> (the first one)
:param pool: CephPoolname
:param tierpool: CephPoolname
module=osd perm=rw flags=deprecated
"""
prefix = 'osd tier remove'
_args = {'prefix': prefix, 'pool': pool, 'tierpool': tierpool}
return self._mon_command(_args)
@deprecated
def osd_tier_remove_overlay(self, pool: str):
"""
remove the overlay pool for base pool <pool>
:param pool: CephPoolname
module=osd perm=rw flags=deprecated
"""
prefix = 'osd tier remove-overlay'
_args = {'prefix': prefix, 'pool': pool}
return self._mon_command(_args)
def osd_tier_rm(self, pool: str, tierpool: str):
"""
remove the tier <tierpool> (the second one) from base pool <pool> (the first one)
:param pool: CephPoolname
:param tierpool: CephPoolname
module=osd perm=rw flags=
"""
prefix = 'osd tier rm'
_args = {'prefix': prefix, 'pool': pool, 'tierpool': tierpool}
return self._mon_command(_args)
def osd_tier_rm_overlay(self, pool: str):
"""
remove the overlay pool for base pool <pool>
:param pool: CephPoolname
module=osd perm=rw flags=
"""
prefix = 'osd tier rm-overlay'
_args = {'prefix': prefix, 'pool': pool}
return self._mon_command(_args)
def osd_tier_set_overlay(self, pool: str, overlaypool: str):
"""
set the overlay pool for base pool <pool> to be <overlaypool>
:param pool: CephPoolname
:param overlaypool: CephPoolname
module=osd perm=rw flags=
"""
prefix = 'osd tier set-overlay'
_args = {'prefix': prefix, 'pool': pool, 'overlaypool': overlaypool}
return self._mon_command(_args)
def osd_tree(self, epoch: int=None, states: List[str]=None):
"""
print OSD tree
:param epoch: CephInt ragne=0
:param states: CephChoices strings=up|down|in|out|destroyed
module=osd perm=r flags=
"""
prefix = 'osd tree'
_args = {'prefix': prefix, 'epoch': epoch, 'states': states}
return self._mon_command(_args)
def osd_tree_from(self, bucket: str, epoch: int=None, states: List[str]=None):
"""
print OSD tree in bucket
:param bucket: CephString
:param epoch: CephInt ragne=0
:param states: CephChoices strings=up|down|in|out|destroyed
module=osd perm=r flags=
"""
prefix = 'osd tree-from'
_args = {'prefix': prefix, 'bucket': bucket, 'epoch': epoch, 'states': states}
return self._mon_command(_args)
def osd_unpause(self):
"""
unpause osd
module=osd perm=rw flags=
"""
prefix = 'osd unpause'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_unset(self, key: str):
"""
unset <key>
:param key: CephChoices strings=full|pause|noup|nodown|noout|noin|nobackfill|norebalance|norecover|noscrub|nodeep-scrub|notieragent|nosnaptrim
module=osd perm=rw flags=
"""
prefix = 'osd unset'
_args = {'prefix': prefix, 'key': key}
return self._mon_command(_args)
def osd_utilization(self):
"""
get basic pg distribution stats
module=osd perm=r flags=
"""
prefix = 'osd utilization'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def osd_versions(self):
"""
check running versions of OSDs
module=osd perm=r flags=
"""
prefix = 'osd versions'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def pg_cancel_force_backfill(self, pgid: List[str]):
"""
restore normal backfill priority of <pgid>
:param pgid: CephPgid
module=pg perm=rw flags=mgr
"""
prefix = 'pg cancel-force-backfill'
_args = {'prefix': prefix, 'pgid': pgid}
return self._mon_command(_args)
def pg_cancel_force_recovery(self, pgid: List[str]):
"""
restore normal recovery priority of <pgid>
:param pgid: CephPgid
module=pg perm=rw flags=mgr
"""
prefix = 'pg cancel-force-recovery'
_args = {'prefix': prefix, 'pgid': pgid}
return self._mon_command(_args)
def pg_debug(self, debugop: str):
"""
show debug info about pgs
:param debugop: CephChoices strings=unfound_objects_exist|degraded_pgs_exist
module=pg perm=r flags=mgr
"""
prefix = 'pg debug'
_args = {'prefix': prefix, 'debugop': debugop}
return self._mon_command(_args)
def pg_deep_scrub(self, pgid: str):
"""
start deep-scrub on <pgid>
:param pgid: CephPgid
module=pg perm=rw flags=mgr
"""
prefix = 'pg deep-scrub'
_args = {'prefix': prefix, 'pgid': pgid}
return self._mon_command(_args)
def pg_dump(self, dumpcontents: List[str]=None):
"""
show human-readable versions of pg map (only 'all' valid with plain)
:param dumpcontents: CephChoices strings=all|summary|sum|delta|pools|osds|pgs|pgs_brief
module=pg perm=r flags=mgr
"""
prefix = 'pg dump'
_args = {'prefix': prefix, 'dumpcontents': dumpcontents}
return self._mon_command(_args)
def pg_dump_json(self, dumpcontents: List[str]=None):
"""
show human-readable version of pg map in json only
:param dumpcontents: CephChoices strings=all|summary|sum|pools|osds|pgs
module=pg perm=r flags=mgr
"""
prefix = 'pg dump_json'
_args = {'prefix': prefix, 'dumpcontents': dumpcontents}
return self._mon_command(_args)
def pg_dump_pools_json(self):
"""
show pg pools info in json only
module=pg perm=r flags=mgr
"""
prefix = 'pg dump_pools_json'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def pg_dump_stuck(self, stuckops: List[str]=None, threshold: int=None):
"""
show information about stuck pgs
:param stuckops: CephChoices strings=inactive|unclean|stale|undersized|degraded
:param threshold: CephInt
module=pg perm=r flags=mgr
"""
prefix = 'pg dump_stuck'
_args = {'prefix': prefix, 'stuckops': stuckops, 'threshold': threshold}
return self._mon_command(_args)
def pg_force_backfill(self, pgid: List[str]):
"""
force backfill of <pgid> first
:param pgid: CephPgid
module=pg perm=rw flags=mgr
"""
prefix = 'pg force-backfill'
_args = {'prefix': prefix, 'pgid': pgid}
return self._mon_command(_args)
def pg_force_recovery(self, pgid: List[str]):
"""
force recovery of <pgid> first
:param pgid: CephPgid
module=pg perm=rw flags=mgr
"""
prefix = 'pg force-recovery'
_args = {'prefix': prefix, 'pgid': pgid}
return self._mon_command(_args)
def pg_getmap(self):
"""
get binary pg map to -o/stdout
module=pg perm=r flags=mgr
"""
prefix = 'pg getmap'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def pg_ls(self, pool: int=None, states: List[str]=None):
"""
list pg with specific pool, osd, state
:param pool: CephInt
:param states: CephString
module=pg perm=r flags=mgr
"""
prefix = 'pg ls'
_args = {'prefix': prefix, 'pool': pool, 'states': states}
return self._mon_command(_args)
def pg_ls_by_osd(self, osd: str, pool: int=None, states: List[str]=None):
"""
list pg on osd [osd]
:param osd: CephOsdName
:param pool: CephInt
:param states: CephString
module=pg perm=r flags=mgr
"""
prefix = 'pg ls-by-osd'
_args = {'prefix': prefix, 'osd': osd, 'pool': pool, 'states': states}
return self._mon_command(_args)
def pg_ls_by_pool(self, poolstr: str, states: List[str]=None):
"""
list pg with pool = [poolname]
:param poolstr: CephString
:param states: CephString
module=pg perm=r flags=mgr
"""
prefix = 'pg ls-by-pool'
_args = {'prefix': prefix, 'poolstr': poolstr, 'states': states}
return self._mon_command(_args)
def pg_ls_by_primary(self, osd: str, pool: int=None, states: List[str]=None):
"""
list pg with primary = [osd]
:param osd: CephOsdName
:param pool: CephInt
:param states: CephString
module=pg perm=r flags=mgr
"""
prefix = 'pg ls-by-primary'
_args = {'prefix': prefix, 'osd': osd, 'pool': pool, 'states': states}
return self._mon_command(_args)
def pg_map(self, pgid: str):
"""
show mapping of pg to osds
:param pgid: CephPgid
module=pg perm=r flags=
"""
prefix = 'pg map'
_args = {'prefix': prefix, 'pgid': pgid}
return self._mon_command(_args)
def pg_repair(self, pgid: str):
"""
start repair on <pgid>
:param pgid: CephPgid
module=pg perm=rw flags=mgr
"""
prefix = 'pg repair'
_args = {'prefix': prefix, 'pgid': pgid}
return self._mon_command(_args)
def pg_repeer(self, pgid: str):
"""
force a PG to repeer
:param pgid: CephPgid
module=osd perm=rw flags=
"""
prefix = 'pg repeer'
_args = {'prefix': prefix, 'pgid': pgid}
return self._mon_command(_args)
def pg_scrub(self, pgid: str):
"""
start scrub on <pgid>
:param pgid: CephPgid
module=pg perm=rw flags=mgr
"""
prefix = 'pg scrub'
_args = {'prefix': prefix, 'pgid': pgid}
return self._mon_command(_args)
def pg_stat(self):
"""
show placement group status.
module=pg perm=r flags=mgr
"""
prefix = 'pg stat'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def progress(self):
"""
Show progress of recovery operations
module=mgr perm=r flags=mgr
"""
prefix = 'progress'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def progress_clear(self):
"""
Reset progress tracking
module=mgr perm=rw flags=mgr
"""
prefix = 'progress clear'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def progress_json(self):
"""
Show machine readable progress information
module=mgr perm=r flags=mgr
"""
prefix = 'progress json'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def prometheus_file_sd_config(self):
"""
Return file_sd compatible prometheus config for mgr cluster
module=mgr perm=r flags=mgr
"""
prefix = 'prometheus file_sd_config'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def quorum(self, quorumcmd: str):
"""
enter or exit quorum
:param quorumcmd: CephChoices strings=enter|exit
module=mon perm=rw flags=
"""
prefix = 'quorum'
_args = {'prefix': prefix, 'quorumcmd': quorumcmd}
return self._mon_command(_args)
def quorum_status(self):
"""
report status of monitor quorum
module=mon perm=r flags=
"""
prefix = 'quorum_status'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def rbd_perf_image_counters(self, pool_spec: str=None, sort_by: str=None):
"""
Retrieve current RBD IO performance counters
:param pool_spec: CephString
:param sort_by: CephChoices strings=write_ops|write_bytes|write_latency|read_ops|read_bytes|read_latency
module=mgr perm=r flags=mgr
"""
prefix = 'rbd perf image counters'
_args = {'prefix': prefix, 'pool_spec': pool_spec, 'sort_by': sort_by}
return self._mon_command(_args)
def rbd_perf_image_stats(self, pool_spec: str=None, sort_by: str=None):
"""
Retrieve current RBD IO performance stats
:param pool_spec: CephString
:param sort_by: CephChoices strings=write_ops|write_bytes|write_latency|read_ops|read_bytes|read_latency
module=mgr perm=r flags=mgr
"""
prefix = 'rbd perf image stats'
_args = {'prefix': prefix, 'pool_spec': pool_spec, 'sort_by': sort_by}
return self._mon_command(_args)
def report(self, tags: List[str]=None):
"""
report full status of cluster, optional title tag strings
:param tags: CephString
module=mon perm=r flags=
"""
prefix = 'report'
_args = {'prefix': prefix, 'tags': tags}
return self._mon_command(_args)
def restful_create_key(self, key_name: str):
"""
Create an API key with this name
:param key_name: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'restful create-key'
_args = {'prefix': prefix, 'key_name': key_name}
return self._mon_command(_args)
def restful_create_self_signed_cert(self):
"""
Create localized self signed certificate
module=mgr perm=rw flags=mgr
"""
prefix = 'restful create-self-signed-cert'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def restful_delete_key(self, key_name: str):
"""
Delete an API key with this name
:param key_name: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'restful delete-key'
_args = {'prefix': prefix, 'key_name': key_name}
return self._mon_command(_args)
def restful_list_keys(self):
"""
List all API keys
module=mgr perm=r flags=mgr
"""
prefix = 'restful list-keys'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def restful_restart(self):
"""
Restart API server
module=mgr perm=rw flags=mgr
"""
prefix = 'restful restart'
_args = {'prefix': prefix, }
return self._mon_command(_args)
@deprecated
def scrub(self):
"""
scrub the monitor stores
module=mon perm=rw flags=deprecated
"""
prefix = 'scrub'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def service_dump(self):
"""
dump service map
module=service perm=r flags=mgr
"""
prefix = 'service dump'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def service_status(self):
"""
dump service state
module=service perm=r flags=mgr
"""
prefix = 'service status'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def smart(self, devid: str=None):
"""
Query health metrics for underlying device
:param devid: CephString
module=mon perm=rw flags=hidden
"""
prefix = 'smart'
_args = {'prefix': prefix, 'devid': devid}
return self._mon_command(_args)
def ssh_clear_ssh_config(self):
"""
Clear the ssh_config file
module=mgr perm=rw flags=mgr
"""
prefix = 'ssh clear-ssh-config'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def ssh_set_ssh_config(self):
"""
Set the ssh_config file (use -i <ssh_config>)
module=mgr perm=rw flags=mgr
"""
prefix = 'ssh set-ssh-config'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def status(self):
"""
show cluster status
module=mon perm=r flags=
"""
prefix = 'status'
_args = {'prefix': prefix, }
return self._mon_command(_args)
@deprecated
def sync_force(self, yes_i_really_mean_it: bool=None, i_know_what_i_am_doing: bool=None):
"""
force sync of and clear monitor store
:param yes_i_really_mean_it: CephBool
:param i_know_what_i_am_doing: CephBool
module=mon perm=rw flags=deprecated, no_forward
"""
prefix = 'sync force'
_args = {'prefix': prefix, 'yes_i_really_mean_it': yes_i_really_mean_it, 'i_know_what_i_am_doing': i_know_what_i_am_doing}
return self._mon_command(_args)
def telegraf_config_set(self, key: str, value: str):
"""
Set a configuration value
:param key: CephString
:param value: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'telegraf config-set'
_args = {'prefix': prefix, 'key': key, 'value': value}
return self._mon_command(_args)
def telegraf_config_show(self):
"""
Show current configuration
module=mgr perm=r flags=mgr
"""
prefix = 'telegraf config-show'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def telegraf_send(self):
"""
Force sending data to Telegraf
module=mgr perm=rw flags=mgr
"""
prefix = 'telegraf send'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def telemetry_off(self):
"""
Disable telemetry reports from this cluster
module=mgr perm=rw flags=mgr
"""
prefix = 'telemetry off'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def telemetry_on(self):
"""
Enable telemetry reports from this cluster
module=mgr perm=rw flags=mgr
"""
prefix = 'telemetry on'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def telemetry_send(self):
"""
Force sending data to Ceph telemetry
module=mgr perm=rw flags=mgr
"""
prefix = 'telemetry send'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def telemetry_show(self):
"""
Show last report or report to be sent
module=mgr perm=r flags=mgr
"""
prefix = 'telemetry show'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def telemetry_status(self):
"""
Show current configuration
module=mgr perm=r flags=mgr
"""
prefix = 'telemetry status'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def tell(self, target: str, args: List[str]):
"""
send a command to a specific daemon
:param target: CephName
:param args: CephString
module=mon perm=rw flags=
"""
prefix = 'tell'
_args = {'prefix': prefix, 'target': target, 'args': args}
return self._mon_command(_args)
def time_sync_status(self):
"""
show time sync status
module=mon perm=r flags=
"""
prefix = 'time-sync-status'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def version(self):
"""
show mon daemon version
module=mon perm=r flags=no_forward
"""
prefix = 'version'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def versions(self):
"""
check running versions of ceph daemons
module=mon perm=r flags=
"""
prefix = 'versions'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def zabbix_config_set(self, key: str, value: str):
"""
Set a configuration value
:param key: CephString
:param value: CephString
module=mgr perm=rw flags=mgr
"""
prefix = 'zabbix config-set'
_args = {'prefix': prefix, 'key': key, 'value': value}
return self._mon_command(_args)
def zabbix_config_show(self):
"""
Show current configuration
module=mgr perm=r flags=mgr
"""
prefix = 'zabbix config-show'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def zabbix_discovery(self):
"""
Discovering Zabbix data
module=mgr perm=r flags=mgr
"""
prefix = 'zabbix discovery'
_args = {'prefix': prefix, }
return self._mon_command(_args)
def zabbix_send(self):
"""
Force sending data to Zabbix
module=mgr perm=rw flags=mgr
"""
prefix = 'zabbix send'
_args = {'prefix': prefix, }
return self._mon_command(_args)
if __name__ == '__main__':
import rados
with rados.Rados(conffile=sys.argv[1]) as cluster:
meth = getattr(MonCommandApi(cluster), sys.argv[2])
try:
print(meth(*sys.argv[3:]))
except TypeError:
help(meth)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment