def _discard(self, label=None, return_label=False, raise_error=False):
     if not label:
         label = self._labels.pop()
     try:
         url = "{}/{}".format(self._url, smart_quote(label))
     except AttributeError:
         url = "{}/{}".format(self._url, smart_quote(label._label))
     response = Request(**self._auth).delete(url)
     if response.status_code == 204:
         _label = label
         if not isinstance(_label, Label):
             _label = Label(self._url, label)
         if _label in self._labels:
             self._labels.remove(_label)
         if return_label:
             return _label
     elif raise_error:
         if options.SMART_ERRORS:
             raise KeyError("'{}' not found".format(_label))
         else:
             msg = "Unable to remove label"
             try:
                 msg += ": " + response.json().get('message')
             except (ValueError, AttributeError, KeyError):
                 pass
             raise StatusException(response.status_code, msg)
Beispiel #2
0
 def get(self, **kwargs):
     data = u""
     if kwargs:
         data = []
         for k, v in kwargs.items():
             data.append("{}={}".format(smart_quote(k),
                                        smart_quote(json.dumps(v))))
         data = u"?{}".format(u"&".join(data))
     url = self._url.replace(
         u"labels",
         u"label/{}/nodes{}".format(smart_quote(self._label), data))
     response = Request(**self._auth).get(url)
     if response.status_code == 200:
         results_list = response.json()
         if not results_list:
             return []
         elif isinstance(results_list, (tuple, list)):
             return Iterable(self._node_cls, results_list, "self",
                             auth=self._auth)
     else:
         msg = "Unable to read label(s)"
         try:
             msg += ": " + response.json().get('message')
         except (ValueError, AttributeError, KeyError):
             pass
         raise StatusException(response.status_code, msg)
Beispiel #3
0
 def _discard(self, label=None, return_label=False, raise_error=False):
     if not label:
         label = self._labels.pop()
     try:
         url = "{}/{}".format(self._url, smart_quote(label))
     except AttributeError:
         url = "{}/{}".format(self._url, smart_quote(label._label))
     response = Request(**self._auth).delete(url)
     if response.status_code == 204:
         _label = label
         if not isinstance(_label, Label):
             _label = Label(self._url, label)
         if _label in self._labels:
             self._labels.remove(_label)
         if return_label:
             return _label
     elif raise_error:
         if options.SMART_ERRORS:
             raise KeyError("'{}' not found".format(_label))
         else:
             msg = "Unable to remove label"
             try:
                 msg += ": " + response.json().get('message')
             except (ValueError, AttributeError, KeyError):
                 pass
             raise StatusException(response.status_code, msg)