dockercloud
This commit is contained in:
parent
86f4a232ff
commit
2d9586a8a1
41 changed files with 2701 additions and 2 deletions
102
dockercloud/api/trigger.py
Normal file
102
dockercloud/api/trigger.py
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
import json as json_parser
|
||||
|
||||
from .base import Triggerable, BasicObject
|
||||
from .exceptions import ApiError
|
||||
from .http import send_request
|
||||
|
||||
|
||||
class Trigger(BasicObject):
|
||||
def __init__(self):
|
||||
self.trigger = None
|
||||
|
||||
def add(self, name=None, operation=None):
|
||||
|
||||
if self.trigger is not None:
|
||||
raise ApiError("You must save the object before performing this operation")
|
||||
|
||||
trigger = {}
|
||||
if name:
|
||||
trigger['name'] = name
|
||||
if operation:
|
||||
trigger['operation'] = operation
|
||||
self.trigger = trigger
|
||||
|
||||
@classmethod
|
||||
def create(cls, **kwargs):
|
||||
"""Returns a new instance of the model (without saving it) with the attributes specified in ``kwargs``
|
||||
|
||||
:returns: trigger -- a new local instance of the Trigger
|
||||
"""
|
||||
return cls(**kwargs)
|
||||
|
||||
def delete(self, uuid):
|
||||
if not self.endpoint:
|
||||
raise ApiError("You must initialize the Trigger object before performing this operation")
|
||||
|
||||
action = "DELETE"
|
||||
url = "/".join([self.endpoint, uuid])
|
||||
send_request(action, url)
|
||||
return True
|
||||
|
||||
@classmethod
|
||||
def fetch(cls, triggerable):
|
||||
if not isinstance(triggerable, Triggerable):
|
||||
raise ApiError("The object does not support trigger")
|
||||
|
||||
if not triggerable._detail_uri:
|
||||
raise ApiError("You must save the triggerable object before performing this operation")
|
||||
|
||||
trigger = cls()
|
||||
trigger.endpoint = "/".join([triggerable._detail_uri, "trigger"])
|
||||
handlers = []
|
||||
for t in trigger.list():
|
||||
triggername = t.get("name", "")
|
||||
if triggername:
|
||||
handlers.append({"name": triggername})
|
||||
return trigger
|
||||
|
||||
def list(self, **kwargs):
|
||||
if not self.endpoint:
|
||||
raise ApiError("You must initialize the Trigger object before performing this operation")
|
||||
|
||||
objects = []
|
||||
while True:
|
||||
json = send_request('GET', self.endpoint, params=kwargs)
|
||||
objs = json.get('objects', [])
|
||||
meta = json.get('meta', {})
|
||||
next_url = meta.get('next', '')
|
||||
offset = meta.get('offset', 0)
|
||||
limit = meta.get('limit', 0)
|
||||
objects.extend(objs)
|
||||
if next_url:
|
||||
kwargs['offset'] = offset + limit
|
||||
kwargs['limit'] = limit
|
||||
else:
|
||||
break
|
||||
|
||||
return objects
|
||||
|
||||
def save(self):
|
||||
if not self.endpoint:
|
||||
raise ApiError("You must initialize the Trigger object before performing this operation")
|
||||
|
||||
if self.trigger is None:
|
||||
return True
|
||||
|
||||
json = send_request("POST", self.endpoint, data=json_parser.dumps(self.trigger))
|
||||
if json:
|
||||
self.clear()
|
||||
self.clear()
|
||||
return True
|
||||
|
||||
def call(self, uuid):
|
||||
if not self.endpoint:
|
||||
raise ApiError("You must initialize the Trigger object before performing this operation")
|
||||
|
||||
json = send_request("POST", "/".join([self.endpoint, uuid + "/call"]))
|
||||
if json:
|
||||
return True
|
||||
return False
|
||||
|
||||
def clear(self):
|
||||
self.trigger = None
|
||||
Loading…
Add table
Add a link
Reference in a new issue