integ/ceph/python-cephclient/python-cephclient/0001-US63903-Ceph-Rebase-Up...

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