def info(self, acl_id): """Return a dict of information about the ACL :param str acl_id: The ACL id :rtype: dict :raises: consulate.exceptions.Forbidden :raises: consulate.exceptions.NotFound """ response = self._get(['info', acl_id], raise_on_404=True) if not response: raise exceptions.NotFound('ACL not found') return response
def read_role(self, id=None, name=None): """Read an existing role with the given ID or Name. :param str id: The ID of the role. :param str name: The name of the role. :param rtype: dict """ if id is not None: return self._get(["role", id]) elif name is not None: return self._get(["role", "name", name]) else: raise exceptions.NotFound("Either id or name must be specified")
def clone(self, acl_id): """Clone an existing ACL returning the new ACL ID :param str acl_id: The ACL id :rtype: bool :raises: consulate.exceptions.Forbidden :raises: consulate.exceptions.NotFound """ response = self._adapter.put(self._build_uri(['clone', acl_id])) # if response.status_code == 403: # raise exceptions.Forbidden(response.body) if response.status_code == 404: raise exceptions.NotFound(response.body) return response.body.get('ID')
def _get(self, params, query_params=None, raise_on_404=False): """Perform a GET request :param list params: List of path parts :param dict query_params: Build query parameters """ response = self._adapter.get(self._build_uri(params, query_params)) if response.status_code == 200: return response.body elif response.status_code == 401: raise exceptions.ACLDisabled(response.body) elif response.status_code == 403: raise exceptions.Forbidden(response.body) elif response.status_code == 404 and raise_on_404: raise exceptions.NotFound(response.body) return []
def response_ok(response, raise_on_404=False): """Evaluate the HTTP response and raise the appropriate exception if required. :param requests.response response: The HTTP response :param bool raise_on_404: Raise an exception on 404 error :rtype: bool :raises: consulate.exceptions.ConsulateException """ if response.status_code == 200: return True elif response.status_code == 400: raise exceptions.ClientError(_response_error(response)) elif response.status_code == 401: raise exceptions.ACLDisabled(_response_error(response)) elif response.status_code == 403: raise exceptions.Forbidden(_response_error(response)) elif response.status_code == 404 and raise_on_404: raise exceptions.NotFound(_response_error(response)) elif response.status_code == 500: raise exceptions.ServerError(_response_error(response)) return False