Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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")
Ejemplo n.º 3
0
    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')
Ejemplo n.º 4
0
    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 []
Ejemplo n.º 5
0
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