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