Merge "Some resource managers are not using the base underscore methods"
This commit is contained in:
commit
2f107a2115
|
@ -128,42 +128,54 @@ class ResourceManager(object):
|
|||
(self.resource_class.__name__, name)
|
||||
)
|
||||
|
||||
def _copy_if_defined(self, data, **kwargs):
|
||||
for name, value in kwargs.items():
|
||||
if value is not None:
|
||||
data[name] = value
|
||||
def _validate(self, url, data, response_key=None, dump_json=True,
|
||||
headers=None, is_iter_resp=False):
|
||||
return self._create(url, data, response_key, dump_json,
|
||||
headers, is_iter_resp, resp_status_ok=200,
|
||||
as_class=False)
|
||||
|
||||
def _create(self, url, data, response_key=None, dump_json=True):
|
||||
def _create(self, url, data, response_key=None, dump_json=True,
|
||||
headers=None, is_iter_resp=False, resp_status_ok=201,
|
||||
as_class=True):
|
||||
if dump_json:
|
||||
data = jsonutils.dumps(data)
|
||||
|
||||
try:
|
||||
resp = self.http_client.post(url, data)
|
||||
resp = self.http_client.post(url, data, headers)
|
||||
except exceptions.HttpError as ex:
|
||||
self._raise_api_exception(ex.response)
|
||||
|
||||
if resp.status_code != 201:
|
||||
if resp.status_code != resp_status_ok:
|
||||
self._raise_api_exception(resp)
|
||||
|
||||
return self.resource_class(self, extract_json(resp, response_key))
|
||||
resource = extract_json(resp, response_key)
|
||||
if is_iter_resp:
|
||||
return [self.resource_class(self, resource_data)
|
||||
for resource_data in resource]
|
||||
return self.resource_class(self, resource) if as_class else resource
|
||||
|
||||
def _update(self, url, data, response_key=None, dump_json=True):
|
||||
def _update(self, url, data, response_key=None, dump_json=True,
|
||||
headers=None, is_iter_resp=False):
|
||||
if dump_json:
|
||||
data = jsonutils.dumps(data)
|
||||
|
||||
try:
|
||||
resp = self.http_client.put(url, data)
|
||||
resp = self.http_client.put(url, data, headers)
|
||||
except exceptions.HttpError as ex:
|
||||
self._raise_api_exception(ex.response)
|
||||
|
||||
if resp.status_code != 200:
|
||||
self._raise_api_exception(resp)
|
||||
|
||||
return self.resource_class(self, extract_json(resp, response_key))
|
||||
resource = extract_json(resp, response_key)
|
||||
if is_iter_resp:
|
||||
return [self.resource_class(self, resource_data)
|
||||
for resource_data in resource]
|
||||
return self.resource_class(self, resource)
|
||||
|
||||
def _list(self, url, response_key=None):
|
||||
def _list(self, url, response_key=None, headers=None):
|
||||
try:
|
||||
resp = self.http_client.get(url)
|
||||
resp = self.http_client.get(url, headers)
|
||||
except exceptions.HttpError as ex:
|
||||
self._raise_api_exception(ex.response)
|
||||
|
||||
|
@ -173,9 +185,9 @@ class ResourceManager(object):
|
|||
return [self.resource_class(self, resource_data)
|
||||
for resource_data in extract_json(resp, response_key)]
|
||||
|
||||
def _get(self, url, response_key=None):
|
||||
def _get(self, url, response_key=None, headers=None):
|
||||
try:
|
||||
resp = self.http_client.get(url)
|
||||
resp = self.http_client.get(url, headers)
|
||||
except exceptions.HttpError as ex:
|
||||
self._raise_api_exception(ex.response)
|
||||
|
||||
|
@ -184,19 +196,17 @@ class ResourceManager(object):
|
|||
else:
|
||||
self._raise_api_exception(resp)
|
||||
|
||||
def _delete(self, url):
|
||||
def _delete(self, url, headers=None):
|
||||
try:
|
||||
resp = self.http_client.delete(url)
|
||||
resp = self.http_client.delete(url, headers)
|
||||
except exceptions.HttpError as ex:
|
||||
self._raise_api_exception(ex.response)
|
||||
|
||||
if resp.status_code != 204:
|
||||
self._raise_api_exception(resp)
|
||||
|
||||
def _plurify_resource_name(self):
|
||||
return self.resource_class.resource_name + 's'
|
||||
|
||||
def _raise_api_exception(self, resp):
|
||||
@staticmethod
|
||||
def _raise_api_exception(resp):
|
||||
try:
|
||||
error_data = (resp.headers.get("Server-Error-Message", None) or
|
||||
get_json(resp).get("faultstring"))
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from keystoneauth1 import exceptions
|
||||
from mistralclient.api import base
|
||||
from mistralclient import utils
|
||||
|
||||
|
@ -31,20 +30,14 @@ class ActionManager(base.ResourceManager):
|
|||
# definition file
|
||||
definition = utils.get_contents_if_file(definition)
|
||||
|
||||
try:
|
||||
resp = self.http_client.post(
|
||||
'/actions?scope=%s' % scope,
|
||||
definition,
|
||||
headers={'content-type': 'text/plain'}
|
||||
)
|
||||
except exceptions.HttpError as ex:
|
||||
self._raise_api_exception(ex.response)
|
||||
|
||||
if resp.status_code != 201:
|
||||
self._raise_api_exception(resp)
|
||||
|
||||
return [self.resource_class(self, resource_data)
|
||||
for resource_data in base.extract_json(resp, 'actions')]
|
||||
return self._create(
|
||||
'/actions?scope=%s' % scope,
|
||||
definition,
|
||||
response_key='actions',
|
||||
dump_json=False,
|
||||
headers={'content-type': 'text/plain'},
|
||||
is_iter_resp=True
|
||||
)
|
||||
|
||||
def update(self, definition, scope='private', id=None):
|
||||
self._ensure_not_empty(definition=definition)
|
||||
|
@ -55,20 +48,14 @@ class ActionManager(base.ResourceManager):
|
|||
# definition file
|
||||
definition = utils.get_contents_if_file(definition)
|
||||
|
||||
try:
|
||||
resp = self.http_client.put(
|
||||
'%s?scope=%s' % (url_pre, scope),
|
||||
definition,
|
||||
headers={'content-type': 'text/plain'}
|
||||
)
|
||||
except exceptions.HttpError as ex:
|
||||
self._raise_api_exception(ex.response)
|
||||
|
||||
if resp.status_code != 200:
|
||||
self._raise_api_exception(resp)
|
||||
|
||||
return [self.resource_class(self, resource_data)
|
||||
for resource_data in base.extract_json(resp, 'actions')]
|
||||
return self._update(
|
||||
'%s?scope=%s' % (url_pre, scope),
|
||||
definition,
|
||||
response_key='actions',
|
||||
dump_json=False,
|
||||
headers={'content-type': 'text/plain'},
|
||||
is_iter_resp=True
|
||||
)
|
||||
|
||||
def list(self, marker='', limit=None, sort_keys='', sort_dirs='',
|
||||
fields='', **filters):
|
||||
|
@ -104,16 +91,9 @@ class ActionManager(base.ResourceManager):
|
|||
# definition file
|
||||
definition = utils.get_contents_if_file(definition)
|
||||
|
||||
try:
|
||||
resp = self.http_client.post(
|
||||
'/actions/validate',
|
||||
definition,
|
||||
headers={'content-type': 'text/plain'}
|
||||
)
|
||||
except exceptions.HttpError as ex:
|
||||
self._raise_api_exception(ex.response)
|
||||
|
||||
if resp.status_code != 200:
|
||||
self._raise_api_exception(resp)
|
||||
|
||||
return base.extract_json(resp, None)
|
||||
return self._validate(
|
||||
'/actions/validate',
|
||||
definition,
|
||||
dump_json=False,
|
||||
headers={'content-type': 'text/plain'}
|
||||
)
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from keystoneauth1 import exceptions
|
||||
from mistralclient.api import base
|
||||
from mistralclient import utils
|
||||
|
||||
|
@ -47,19 +46,12 @@ class WorkbookManager(base.ResourceManager):
|
|||
# definition file
|
||||
definition = utils.get_contents_if_file(definition)
|
||||
|
||||
try:
|
||||
resp = self.http_client.post(
|
||||
self._get_workbooks_url(None, namespace, scope),
|
||||
definition,
|
||||
headers={'content-type': 'text/plain'}
|
||||
)
|
||||
except exceptions.HttpError as ex:
|
||||
self._raise_api_exception(ex.response)
|
||||
|
||||
if resp.status_code != 201:
|
||||
self._raise_api_exception(resp)
|
||||
|
||||
return self.resource_class(self, base.extract_json(resp, None))
|
||||
return self._create(
|
||||
self._get_workbooks_url(None, namespace, scope),
|
||||
definition,
|
||||
dump_json=False,
|
||||
headers={'content-type': 'text/plain'}
|
||||
)
|
||||
|
||||
def update(self, definition, namespace='', scope='private'):
|
||||
self._ensure_not_empty(definition=definition)
|
||||
|
@ -68,19 +60,12 @@ class WorkbookManager(base.ResourceManager):
|
|||
# definition file
|
||||
definition = utils.get_contents_if_file(definition)
|
||||
|
||||
try:
|
||||
resp = self.http_client.put(
|
||||
self._get_workbooks_url(None, namespace, scope),
|
||||
definition,
|
||||
headers={'content-type': 'text/plain'}
|
||||
)
|
||||
except exceptions.HttpError as ex:
|
||||
self._raise_api_exception(ex.response)
|
||||
|
||||
if resp.status_code != 200:
|
||||
self._raise_api_exception(resp)
|
||||
|
||||
return self.resource_class(self, base.extract_json(resp, None))
|
||||
return self._update(
|
||||
self._get_workbooks_url(None, namespace, scope),
|
||||
definition,
|
||||
dump_json=False,
|
||||
headers={'content-type': 'text/plain'}
|
||||
)
|
||||
|
||||
def list(self, namespace='', marker='', limit=None, sort_keys='',
|
||||
sort_dirs='', fields='', **filters):
|
||||
|
@ -115,16 +100,9 @@ class WorkbookManager(base.ResourceManager):
|
|||
# definition file
|
||||
definition = utils.get_contents_if_file(definition)
|
||||
|
||||
try:
|
||||
resp = self.http_client.post(
|
||||
'/workbooks/validate',
|
||||
definition,
|
||||
headers={'content-type': 'text/plain'}
|
||||
)
|
||||
except exceptions.HttpError as ex:
|
||||
self._raise_api_exception(ex.response)
|
||||
|
||||
if resp.status_code != 200:
|
||||
self._raise_api_exception(resp)
|
||||
|
||||
return base.extract_json(resp, None)
|
||||
return self._validate(
|
||||
'/workbooks/validate',
|
||||
definition,
|
||||
dump_json=False,
|
||||
headers={'content-type': 'text/plain'}
|
||||
)
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from keystoneauth1 import exceptions
|
||||
from mistralclient.api import base
|
||||
from mistralclient import utils
|
||||
|
||||
|
@ -32,20 +31,14 @@ class WorkflowManager(base.ResourceManager):
|
|||
# definition file
|
||||
definition = utils.get_contents_if_file(definition)
|
||||
|
||||
try:
|
||||
resp = self.http_client.post(
|
||||
'/workflows?scope=%s&namespace=%s' % (scope, namespace),
|
||||
definition,
|
||||
headers={'content-type': 'text/plain'}
|
||||
)
|
||||
except exceptions.HttpError as ex:
|
||||
self._raise_api_exception(ex.response)
|
||||
|
||||
if resp.status_code != 201:
|
||||
self._raise_api_exception(resp)
|
||||
|
||||
return [self.resource_class(self, resource_data)
|
||||
for resource_data in base.extract_json(resp, 'workflows')]
|
||||
return self._create(
|
||||
'/workflows?scope=%s&namespace=%s' % (scope, namespace),
|
||||
definition,
|
||||
response_key='workflows',
|
||||
dump_json=False,
|
||||
headers={'content-type': 'text/plain'},
|
||||
is_iter_resp=True
|
||||
)
|
||||
|
||||
def update(self, definition, namespace='', scope='private', id=None):
|
||||
self._ensure_not_empty(definition=definition)
|
||||
|
@ -56,23 +49,21 @@ class WorkflowManager(base.ResourceManager):
|
|||
# definition file
|
||||
definition = utils.get_contents_if_file(definition)
|
||||
|
||||
try:
|
||||
resp = self.http_client.put(
|
||||
'%s?namespace=%s&scope=%s' % (url_pre, namespace, scope),
|
||||
definition,
|
||||
headers={'content-type': 'text/plain'}
|
||||
)
|
||||
except exceptions.HttpError as ex:
|
||||
self._raise_api_exception(ex.response)
|
||||
|
||||
if resp.status_code != 200:
|
||||
self._raise_api_exception(resp)
|
||||
is_iter_resp = True
|
||||
response_key = 'workflows'
|
||||
|
||||
if id:
|
||||
return self.resource_class(self, base.extract_json(resp, None))
|
||||
is_iter_resp = False
|
||||
response_key = None
|
||||
|
||||
return [self.resource_class(self, resource_data)
|
||||
for resource_data in base.extract_json(resp, 'workflows')]
|
||||
return self._update(
|
||||
'%s?namespace=%s&scope=%s' % (url_pre, namespace, scope),
|
||||
definition,
|
||||
response_key=response_key,
|
||||
dump_json=False,
|
||||
headers={'content-type': 'text/plain'},
|
||||
is_iter_resp=is_iter_resp,
|
||||
)
|
||||
|
||||
def list(self, namespace='', marker='', limit=None, sort_keys='',
|
||||
sort_dirs='', fields='', **filters):
|
||||
|
@ -117,16 +108,9 @@ class WorkflowManager(base.ResourceManager):
|
|||
# definition file
|
||||
definition = utils.get_contents_if_file(definition)
|
||||
|
||||
try:
|
||||
resp = self.http_client.post(
|
||||
'/workflows/validate',
|
||||
definition,
|
||||
headers={'content-type': 'text/plain'}
|
||||
)
|
||||
except exceptions.HttpError as ex:
|
||||
self._raise_api_exception(ex.response)
|
||||
|
||||
if resp.status_code != 200:
|
||||
self._raise_api_exception(resp)
|
||||
|
||||
return base.extract_json(resp, None)
|
||||
return self._validate(
|
||||
'/workflows/validate',
|
||||
definition,
|
||||
dump_json=False,
|
||||
headers={'content-type': 'text/plain'}
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue