208 lines
5.6 KiB
Python
208 lines
5.6 KiB
Python
# Copyright 2014 Baidu, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
|
|
# except in compliance with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software distributed under the
|
|
# License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
|
# either express or implied. See the License for the specific language governing permissions
|
|
# and limitations under the License.
|
|
"""
|
|
This module provides models for CFC-SDK.
|
|
"""
|
|
|
|
import json
|
|
|
|
DUEDGE_TRIGGER = 'duedge'
|
|
|
|
DUEROS_TRIGGER = 'dueros'
|
|
|
|
CRONTAB_TRIGGER = 'cfc-crontab-trigger/v1/'
|
|
|
|
HTTP_TRIGGER = 'cfc-http-trigger/v1/CFCAPI'
|
|
|
|
CDN_TRIGGER = 'cdn'
|
|
|
|
BOS_TRIGGER = 'bos'
|
|
|
|
|
|
class AbstractTriggerDataModel(object):
|
|
"""Base class for all trigger data."""
|
|
|
|
def serialize(self):
|
|
"""
|
|
serialize
|
|
|
|
:return
|
|
:rtype dict
|
|
"""
|
|
d = vars(self)
|
|
ret = {}
|
|
for k in d:
|
|
if d[k] is not None:
|
|
ret[k] = d[k]
|
|
return ret
|
|
|
|
def get_trigger_source(self):
|
|
"""
|
|
trigger source
|
|
|
|
:return
|
|
:rtype string
|
|
"""
|
|
return ''
|
|
|
|
def __repr__(self):
|
|
return '%s' % json.dumps(self.serialize())
|
|
|
|
|
|
class CrontabTriggerData(AbstractTriggerDataModel):
|
|
"""
|
|
Crontab Trigger Data
|
|
:param brn (required) The url path.
|
|
:type brn string
|
|
:param name (required) The trigger name. 1-30 length.Pattern: ^[a-zA-Z0-9-_]+$
|
|
:type name string.The name of the trigger that you are creating or updating
|
|
:param schedule_expression (required) Schedule expression.The details see
|
|
https://cloud.baidu.com/doc/CFC/s/Zjxl9lbed.
|
|
For example, "cron(0 * * * *)" or "rate(10 minutes)".
|
|
:type schedule_expression string.
|
|
:param enabled.
|
|
:type enabled bool. Enables the trigger.
|
|
:param custom_input.
|
|
:type custom_input json.
|
|
"""
|
|
|
|
def __init__(self, brn=None, name=None, schedule_expression=None, enabled=False, custom_input=None):
|
|
self.Input = custom_input
|
|
self.Brn = brn
|
|
self.Name = name
|
|
self.ScheduleExpression = schedule_expression
|
|
self.UUID = None
|
|
if enabled:
|
|
self.Enabled = 'Enabled'
|
|
else:
|
|
self.Enabled = 'Disabled'
|
|
|
|
def set_status(self, enabled=False):
|
|
"""
|
|
set crontab status
|
|
|
|
:param enabled.
|
|
:type enabled bool. Enables the trigger.
|
|
:return
|
|
:rtype string
|
|
"""
|
|
if enabled:
|
|
self.Enabled = 'Enabled'
|
|
else:
|
|
self.Enabled = 'Disabled'
|
|
|
|
def get_trigger_source(self):
|
|
return CRONTAB_TRIGGER
|
|
|
|
|
|
class HttpTriggerData(AbstractTriggerDataModel):
|
|
"""
|
|
Http Trigger Data
|
|
:param resource_path (required) The url path.
|
|
:type resource_path string
|
|
:param method (required) The http method. eg "GET,HEAD"
|
|
:type method string
|
|
:param auth_type (required) Authentication type.
|
|
:type auth_type string. eg anonymous | iam
|
|
"""
|
|
|
|
def __init__(self, resource_path=None, method=None, auth_type=None):
|
|
self.ResourcePath = resource_path
|
|
self.Method = method
|
|
self.AuthType = auth_type
|
|
|
|
def get_trigger_source(self):
|
|
return HTTP_TRIGGER
|
|
|
|
|
|
class CdnTriggerData(AbstractTriggerDataModel):
|
|
"""
|
|
Cdn Trigger Data
|
|
:param event_type (required) Cdn event type. The details see
|
|
https://cloud.baidu.com/doc/CFC/s/Kjwvz47o9/#relationconfiguration.
|
|
:type event_type string
|
|
:param domains. Domain list.
|
|
:type domains list of string
|
|
:param remark.
|
|
:type remark string.
|
|
:param status. Enables the trigger.
|
|
:type status bool.
|
|
"""
|
|
|
|
def __init__(self, event_type=None, domains=None, remark=None, status=False):
|
|
self.EventType = event_type
|
|
self.Domains = domains
|
|
self.Remark = remark
|
|
if status:
|
|
self.Status = 'enabled'
|
|
else:
|
|
self.Status = 'disabled'
|
|
|
|
def set_status(self, enabled=False):
|
|
"""
|
|
set cdn trigger status
|
|
|
|
:param enabled.
|
|
:type enabled bool. Enables the trigger.
|
|
:return
|
|
:rtype string
|
|
"""
|
|
if enabled:
|
|
self.Status = 'enabled'
|
|
else:
|
|
self.Status = 'disabled'
|
|
|
|
def get_trigger_source(self):
|
|
return CDN_TRIGGER
|
|
|
|
|
|
class BOSTriggerData(AbstractTriggerDataModel):
|
|
"""
|
|
BOS Trigger Data
|
|
:param event_type (required) BOS event type. The details see
|
|
https://cloud.baidu.com/doc/CFC/s/Kjwvz47o9/#relationconfiguration.
|
|
:type event_type list of string
|
|
:param resource. For example, /prefix*suffix /my.img /my*img
|
|
:type resource string
|
|
:param name. The name of the trigger that you are creating or updating
|
|
:type name string
|
|
:param status. Enables the trigger.
|
|
:type status bool.
|
|
"""
|
|
|
|
def __init__(self, bucket=None, event_type=None, resource=None, name=None, status=False):
|
|
self.Resource = resource
|
|
self.EventType = event_type
|
|
self.Name = name
|
|
self.Bucket = bucket
|
|
if status:
|
|
self.Status = 'enabled'
|
|
else:
|
|
self.Status = 'disabled'
|
|
|
|
def set_status(self, enabled=False):
|
|
"""
|
|
set bos trigger status
|
|
|
|
:param enabled.
|
|
:type enabled bool. Enables the trigger.
|
|
:return
|
|
:rtype string
|
|
"""
|
|
if enabled:
|
|
self.Status = 'enabled'
|
|
else:
|
|
self.Status = 'disabled'
|
|
|
|
def get_trigger_source(self):
|
|
return BOS_TRIGGER + '/' + self.Bucket
|