summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2018-11-17 18:11:07 +0200
committerLars Wirzenius <liw@liw.fi>2018-11-17 18:11:07 +0200
commit808e642e224fa7a46f06baf8e30de979b02c2048 (patch)
tree2bff85b29f6a1daef72e852b977b7259a8cf0d92
parent1435cecaa7113f931d36a8caa70ee21a3bca6d6a (diff)
downloadeffi-reg-808e642e224fa7a46f06baf8e30de979b02c2048.tar.gz
Change: use separate URL for tokens, list resources
-rwxr-xr-xeffitool40
1 files changed, 30 insertions, 10 deletions
diff --git a/effitool b/effitool
index f6cd0d2..1e304f5 100755
--- a/effitool
+++ b/effitool
@@ -117,9 +117,9 @@ class HttpAPI:
if 'auth' in kwargs:
del kwargs['auth']
- logging.info(
- 'Request: %s url=%s headers=%s verify=%s kwargs=%s',
- func.__func__.__name__, url, headers, self._verify, kwargs)
+# logging.info(
+# 'Request: %s url=%s headers=%s verify=%s kwargs=%s',
+# func.__func__.__name__, url, headers, self._verify, kwargs)
r = func(url, headers=headers, verify=self._verify, **kwargs)
if not r.ok:
raise HttpError('{}: {}'.format(r.status_code, r.text))
@@ -128,9 +128,9 @@ class HttpAPI:
class EffiAPI:
- def __init__(self, url, client_id, client_secret, fake=False):
+ def __init__(self, url, token_url, client_id, client_secret, fake=False):
self._url = url
- self._auth_url = '{}/token'.format(url)
+ self._auth_url = '{}/token'.format(token_url)
self._http_api = HttpAPI()
self._client_id = client_id
self._client_secret = client_secret
@@ -164,6 +164,13 @@ class EffiAPI:
obj = r.json()
return obj['access_token']
+ def get_member(self, rid):
+ url = self.url('/mem')
+ headers = {
+ 'Muck-Id': rid,
+ }
+ return self._http_api.get_dict(url, headers)
+
def get_status(self):
url = self.url('/status')
return self._http_api.get_dict(url)
@@ -188,8 +195,18 @@ class EffiAPI:
},
]
}
- obj = self._http_api.get_dict(url, body=cond)
- return obj['resources']
+ headers = {
+ 'Content-Type': 'application/json',
+ }
+ obj = self._http_api.get_dict(
+ url, body=json.dumps(cond), headers=headers)
+ rids = obj['resources']
+ members = []
+ for rid in rids:
+ logging.info('Retrieving member %s', rid)
+ mem = self.get_member(rid)
+ members.append(mem)
+ return members
def find_member_by_email(self, email):
objs = self.list_members()
@@ -207,14 +224,13 @@ class EffiTool:
p = self._create_command_line_parser()
args = vars(p.parse_args())
self._setup_logging(args['logfile'])
- self._api = self._new_api(args, True)
func = args.pop('func')
if func is None:
logging.error('missing command on command line')
sys.exit('ERROR: Missing command')
- api = self._new_api(args, True)
+ api = self._new_api(args, args['fake'])
try:
logging.debug('calling %r with %r', func.__name__, args)
value = func(args, api)
@@ -277,6 +293,7 @@ class EffiTool:
parser = argparse.ArgumentParser(description='Manage Effi members')
parser.add_argument('-u', '--url', dest='url', required=True)
+ parser.add_argument('-t', '--token-url', dest='token_url', required=True)
parser.add_argument('-i', '--client-id', dest='client_id', required=True)
parser.add_argument(
'-s', '--client-secret', dest='client_secret', required=True)
@@ -294,7 +311,10 @@ class EffiTool:
return parser
def _new_api(self, args, fake):
- return EffiAPI(args['url'], args['client_id'], args['client_secret'], fake=fake)
+ return EffiAPI(
+ args['url'], args['token_url'],
+ args['client_id'], args['client_secret'],
+ fake=fake)
def _setup_logging(self, filename):
logging.basicConfig(