221 lines
9.8 KiB
Diff
221 lines
9.8 KiB
Diff
From 016ebffad6c953cf51c538cc8c45edf56e681515 Mon Sep 17 00:00:00 2001
|
|
From: Robert Church <robert.church@windriver.com>
|
|
Date: Fri, 21 Aug 2015 13:05:18 -0500
|
|
Subject: [PATCH] US63903: Ceph Rebase - Update REST API to 0.94.2
|
|
|
|
This updates the existing REST APIs to correspond to what in required by
|
|
Ceph 0.94.2 (Hammer LTS)
|
|
---
|
|
cephclient/wrapper.py | 134 +++++++++++++++++++++++++++++++++++---------------
|
|
1 file changed, 95 insertions(+), 39 deletions(-)
|
|
|
|
diff --git a/cephclient/wrapper.py b/cephclient/wrapper.py
|
|
index 8f583a5..926eb7f 100644
|
|
--- a/cephclient/wrapper.py
|
|
+++ b/cephclient/wrapper.py
|
|
@@ -335,8 +335,12 @@ class CephWrapper(client.CephClient):
|
|
def osd_crush_dump(self, **kwargs):
|
|
return self.get('osd/crush/dump', **kwargs)
|
|
|
|
- def osd_crush_rule_dump(self, **kwargs):
|
|
- return self.get('osd/crush/rule/dump', **kwargs)
|
|
+ def osd_crush_rule_dump(self, name=None, **kwargs):
|
|
+ if name is not None:
|
|
+ return self.get('osd/crush/rule/dump?name={0}'
|
|
+ .format(name), **kwargs)
|
|
+ else:
|
|
+ return self.get('osd/crush/rule/dump', **kwargs)
|
|
|
|
def osd_crush_rule_list(self, **kwargs):
|
|
return self.get('osd/crush/rule/list', **kwargs)
|
|
@@ -450,7 +454,7 @@ class CephWrapper(client.CephClient):
|
|
.format(name, args), **kwargs)
|
|
|
|
def osd_crush_remove(self, name, ancestor=None, **kwargs):
|
|
- if ancestor:
|
|
+ if ancestor is not None:
|
|
return self.put('osd/crush/remove?name={0}&ancestor={1}'
|
|
.format(name, ancestor), **kwargs)
|
|
else:
|
|
@@ -462,29 +466,43 @@ class CephWrapper(client.CephClient):
|
|
.format(name, weight), **kwargs)
|
|
|
|
def osd_crush_rm(self, name, ancestor, **kwargs):
|
|
- return self.put('osd/crush/rm?name={0}&ancestor={1}'
|
|
- .format(name, ancestor), **kwargs)
|
|
+ if ancestor is not None:
|
|
+ return self.put('osd/crush/rm?name={0}&ancestor={1}'
|
|
+ .format(name, ancestor), **kwargs)
|
|
+ else:
|
|
+ return self.put('osd/crush/rm?name={0}'
|
|
+ .format(name), **kwargs)
|
|
|
|
- def osd_crush_rule_create_simple(self, name, root, type, **kwargs):
|
|
- return self.put(
|
|
- 'osd/crush/rule/create-simple?name={0}&root={1}&type={2}'
|
|
- .format(name, root, type), **kwargs)
|
|
+ def osd_crush_rule_create_simple(self, name, root,
|
|
+ type, mode=None, **kwargs):
|
|
+ if mode is not None:
|
|
+ return self.put(
|
|
+ 'osd/crush/rule/create-simple?name={0}&root={1}&type={2}'
|
|
+ '&mode={3}'.format(name, root, type, mode), **kwargs)
|
|
+ else:
|
|
+ return self.put(
|
|
+ 'osd/crush/rule/create-simple?name={0}&root={1}&type={2}'
|
|
+ .format(name, root, type), **kwargs)
|
|
|
|
def osd_crush_rule_rm(self, name, **kwargs):
|
|
return self.put('osd/crush/rule/rm?name={0}'
|
|
.format(name), **kwargs)
|
|
|
|
- def osd_crush_set(self, id, name, weight, args, **kwargs):
|
|
+ def osd_crush_set(self, id, weight, args, **kwargs):
|
|
return self.put('osd/crush/set?id={0}&weight={1}&args={2}'
|
|
- .format(id, name, weight, args), **kwargs)
|
|
+ .format(id, weight, args), **kwargs)
|
|
|
|
def osd_crush_tunables(self, profile, **kwargs):
|
|
return self.put('osd/crush/tunables?profile={0}'
|
|
.format(profile), **kwargs)
|
|
|
|
- def osd_crush_unlink(self, name, ancestor, **kwargs):
|
|
- return self.put('osd/crush/unlink?name={0}&ancestor={1}'
|
|
- .format(name, ancestor), **kwargs)
|
|
+ def osd_crush_unlink(self, name, ancestor=None, **kwargs):
|
|
+ if ancestor is not None:
|
|
+ return self.put('osd/crush/unlink?name={0}&ancestor={1}'
|
|
+ .format(name, ancestor), **kwargs)
|
|
+ else:
|
|
+ return self.put('osd/crush/unlink?name={0}'
|
|
+ .format(name), **kwargs)
|
|
|
|
def osd_deep_scrub(self, who, **kwargs):
|
|
return self.put('osd/deep-scrub?who={0}'
|
|
@@ -498,22 +516,44 @@ class CephWrapper(client.CephClient):
|
|
return self.put('osd/in?ids={0}'
|
|
.format(ids), **kwargs)
|
|
|
|
- def osd_lost(self, id, sure, **kwargs):
|
|
- return self.put('osd/lost?id={0}&sure={1}'
|
|
- .format(id, sure), **kwargs)
|
|
+ def osd_lost(self, id, sure=None, **kwargs):
|
|
+ if sure is not None:
|
|
+ return self.put('osd/lost?id={0}&sure={1}'
|
|
+ .format(id, sure), **kwargs)
|
|
+ else:
|
|
+ return self.put('osd/lost?id={0}'
|
|
+ .format(id), **kwargs)
|
|
|
|
def osd_out(self, ids, **kwargs):
|
|
return self.put('osd/out?ids={0}'
|
|
.format(ids), **kwargs)
|
|
|
|
- def osd_pool_create(self, pool, pg_num, pgp_num, properties, **kwargs):
|
|
- return self.put(
|
|
- 'osd/pool/create?pool={0}&pg_num={1}&pgp_num={2}&properties={3}'
|
|
- .format(pool, pg_num, pgp_num, properties), **kwargs)
|
|
-
|
|
- def osd_pool_delete(self, pool, sure, **kwargs):
|
|
- return self.put('osd/pool/delete?pool={0}&sure={1}'
|
|
- .format(pool, sure), **kwargs)
|
|
+ def osd_pool_create(self, pool, pg_num, pgp_num, pool_type=None,
|
|
+ erasure_code_profile=None, ruleset=None,
|
|
+ expected_num_objects=None, **kwargs):
|
|
+ request = []
|
|
+ request.append('osd/pool/create?pool={0}&pg_num={1}&pgp_num={2}'
|
|
+ .format(pool, pg_num, pgp_num))
|
|
+ if pool_type is not None:
|
|
+ request.append('&pool_type={0}'.format(pool_type))
|
|
+ if erasure_code_profile is not None:
|
|
+ request.append('&erasure_code_profile={0}'
|
|
+ .format(erasure_code_profile))
|
|
+ if ruleset is not None:
|
|
+ request.append('&ruleset={0}'.format(ruleset))
|
|
+ if expected_num_objects is not None:
|
|
+ request.append('&expected_num_objects={0}'
|
|
+ .format(expected_num_objects))
|
|
+ return self.put(''.join(request), **kwargs)
|
|
+
|
|
+ def osd_pool_delete(self, pool, pool2=None, sure=None, **kwargs):
|
|
+ request = []
|
|
+ request.append('osd/pool/delete?pool={0}'.format(pool))
|
|
+ if pool2 is not None:
|
|
+ request.append('&pool2={0}'.format(pool2))
|
|
+ if sure is not None:
|
|
+ request.append('&sure={0}'.format(sure))
|
|
+ return self.put(''.join(request), **kwargs)
|
|
|
|
def osd_pool_param(self, pool, var, **kwargs):
|
|
return self.put('osd/pool/get?pool={0}&var={1}'
|
|
@@ -531,13 +571,17 @@ class CephWrapper(client.CephClient):
|
|
return self.put('osd/pool/rmsnap?pool={0}&snap={1}'
|
|
.format(pool, snap), **kwargs)
|
|
|
|
- def osd_set_pool_param(self, pool, var, **kwargs):
|
|
- return self.put('osd/pool/set?pool={0}&var={1}'
|
|
- .format(pool, var), **kwargs)
|
|
+ def osd_set_pool_param(self, pool, var, val, force=None, **kwargs):
|
|
+ if force is not None:
|
|
+ return self.put('osd/pool/set?pool={0}&var={1}&val={2}&force={3}'
|
|
+ .format(pool, var, val, force), **kwargs)
|
|
+ else:
|
|
+ return self.put('osd/pool/set?pool={0}&var={1}&val={2}'
|
|
+ .format(pool, var, val), **kwargs)
|
|
|
|
- def osd_set_pool_quota(self, pool, field, **kwargs):
|
|
- return self.put('osd/pool/set-quota?pool={0}&field={1}'
|
|
- .format(pool, field), **kwargs)
|
|
+ def osd_set_pool_quota(self, pool, field, val, **kwargs):
|
|
+ return self.put('osd/pool/set-quota?pool={0}&field={1}&val={2}'
|
|
+ .format(pool, field, val), **kwargs)
|
|
|
|
def osd_repair(self, pool, who, **kwargs):
|
|
return self.put('osd/repair?who={0}'
|
|
@@ -571,9 +615,14 @@ class CephWrapper(client.CephClient):
|
|
return self.put('osd/thrash?num_epochs={0}'
|
|
.format(num_epochs), **kwargs)
|
|
|
|
- def osd_tier_add(self, pool, tierpool, **kwargs):
|
|
- return self.put('osd/tier/add?pool={0}&tierpool={1}'
|
|
- .format(pool, tierpool), **kwargs)
|
|
+ def osd_tier_add(self, pool, tierpool, force_notempty=None, **kwargs):
|
|
+ if force_notempty is not None:
|
|
+ return self.put('osd/tier/add?pool={0}&tierpool={1}'
|
|
+ '&force_notempty={2}'
|
|
+ .format(pool, tierpool, force_notempty), **kwargs)
|
|
+ else:
|
|
+ return self.put('osd/tier/add?pool={0}&tierpool={1}'
|
|
+ .format(pool, tierpool), **kwargs)
|
|
|
|
def osd_tier_cachemode(self, pool, mode, **kwargs):
|
|
return self.put('osd/tier/cache-mode?pool={0}&mode={1}'
|
|
@@ -621,12 +670,19 @@ class CephWrapper(client.CephClient):
|
|
def pg_dump_pools_json(self, **kwargs):
|
|
return self.get('pg/dump_pools_json', **kwargs)
|
|
|
|
- def pg_dump_stuck(self, stuckops=None, **kwargs):
|
|
+ def pg_dump_stuck(self, stuckops=None, threshold=None, **kwargs):
|
|
+ request = []
|
|
+ request.append('pg/dump_stuck')
|
|
if stuckops is not None:
|
|
- return self.get('pg/dump_stuck?stuckops={0}'
|
|
- .format(stuckops), **kwargs)
|
|
- else:
|
|
- return self.get('pg/dump_stuck', **kwargs)
|
|
+ request.append('?stuckops={0}'.format(stuckops))
|
|
+ if threshold is not None:
|
|
+ if stuckops is not None:
|
|
+ request.append('&')
|
|
+ else:
|
|
+ request.append('?')
|
|
+ request.append('threshold={0}'.format(threshold))
|
|
+
|
|
+ return self.get(''.join(request), **kwargs)
|
|
|
|
def pg_getmap(self, **kwargs):
|
|
kwargs['supported_body_types'] = ['binary']
|
|
--
|
|
2.5.0
|
|
|