From ed9aae73ec6a04e3f2beca9d39b03e0f81bfb516 Mon Sep 17 00:00:00 2001 From: Nikolay Mahotkin Date: Wed, 25 Dec 2013 17:06:25 +0400 Subject: [PATCH] Fix client for further patching Change-Id: Ibf0cd08049c54921af79236e036d58f1b8300ac6 --- mistralclient/api/client.py | 83 ++++++++++++++++++++++--------------- 1 file changed, 49 insertions(+), 34 deletions(-) diff --git a/mistralclient/api/client.py b/mistralclient/api/client.py index 452d33ea6..67f62042c 100644 --- a/mistralclient/api/client.py +++ b/mistralclient/api/client.py @@ -26,40 +26,63 @@ from mistralclient.api import listeners class Client(object): - - def __init__(self, username=None, api_key=None, project_id=None, - project_name=None, auth_url=None, mistral_url=None, + def __init__(self, mistral_url=None, username=None, api_key=None, + project_name=None, auth_url=None, project_id=None, endpoint_type='publicURL', service_type='workflow', input_auth_token=None): + + (mistral_url, + token, + project_id, + user_id) = self.authenticate(mistral_url, username, + api_key, project_name, + auth_url, project_id, + endpoint_type, service_type, + input_auth_token) + + self.http_client = httpclient.HTTPClient(mistral_url, + token, + project_id, + user_id) + # Create all resource managers. + self.workbooks = workbooks.WorkbookManager(self) + self.executions = executions.ExecutionManager(self) + self.tasks = tasks.TaskManager(self) + self.listeners = listeners.ListenerManager(self) + + def authenticate(self, mistral_url=None, username=None, api_key=None, + project_name=None, auth_url=None, project_id=None, + endpoint_type='publicURL', service_type='workflow', + input_auth_token=None): if mistral_url and not isinstance(mistral_url, six.string_types): raise RuntimeError('Mistral url should be string') if (isinstance(project_name, six.string_types) or - isinstance(project_id, six.string_types)): - if project_name and project_id: - raise RuntimeError('Only project name or ' - 'project id should be set') + isinstance(project_id, six.string_types)): + if project_name and project_id: + raise RuntimeError('Only project name or ' + 'project id should be set') - if "v2.0" in auth_url: - raise RuntimeError('Mistral support only v3 ' - 'kyestone api') + if "v2.0" in auth_url: + raise RuntimeError('Mistral support only v3 ' + 'kyestone api') - keystone = keystone_client.Client(username=username, - password=api_key, - token=input_auth_token, - tenant_id=project_id, - tenant_name=project_name, - auth_url=auth_url) + keystone = keystone_client.Client(username=username, + password=api_key, + token=input_auth_token, + tenant_id=project_id, + tenant_name=project_name, + auth_url=auth_url) - keystone.authenticate() - token = keystone.auth_token - user_id = keystone.user_id - if project_name and not project_id: - if keystone.tenants.find(name=project_name): - project_id = str(keystone.tenants.find( - name=project_name).id) + keystone.authenticate() + token = keystone.auth_token + user_id = keystone.user_id + if project_name and not project_id: + if keystone.tenants.find(name=project_name): + project_id = str(keystone.tenants.find( + name=project_name).id) else: - raise RuntimeError('Project name or project id should' - ' not be empty and should be string') + raise RuntimeError('Project name or project id should' + ' not be empty and should be string') if not mistral_url: catalog = keystone.service_catalog.get_endpoints(service_type) @@ -71,13 +94,5 @@ class Client(object): if not mistral_url: mistral_url = "http://localhost:8989/v1" - self.http_client = httpclient.HTTPClient(mistral_url, - token, - project_id, - user_id) - # Create all resource managers. - self.workbooks = workbooks.WorkbookManager(self) - self.executions = executions.ExecutionManager(self) - self.tasks = tasks.TaskManager(self) - self.listeners = listeners.ListenerManager(self) + return mistral_url, token, project_id, user_id