270 lines
8.1 KiB
Python

# Copyright (c) 2011 X.commerce, a business unit of eBay Inc.
# Copyright 2010 United States Government as represented by the
# Administrator of the National Aeronautics and Space Administration.
# Copyright 2011 Piston Cloud Computing, Inc.
# All Rights Reserved.
#
# 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 RDS-SDK.
"""
from json import JSONEncoder
from baidubce.bce_response import BceResponse
class Billing(object):
"""
This class define billing.
param: pay_method:
The pay time of the payment,
param: reservationLength:
The duration to buy in specified time unit,
param: reservationTimeUnit:
The time unit to specify the duration ,only "Month" can be used now.
"""
def __init__(self, pay_method='Prepaid', reservationLength=1, reservationTimeUnit='Month'):
self.paymentTiming = pay_method
self.reservation = {
'reservationLength': reservationLength,
'reservationTimeUnit': reservationTimeUnit
}
def get_pay_method(self):
"""
get instance current pay_method:Prepaid/Postpaid
"""
return self.paymentTiming
class SubnetMap(object):
"""
SubnetMap:contains zoneName and subnetId
"""
def __init__(self, zone_name, subnet_id):
super(SubnetMap, self).__init__()
self.zone_name = str(zone_name)
self.subnet_id = str(subnet_id)
class Tag(object):
"""
Tag model
"""
def __init__(self, key, value):
super(Tag, self).__init__()
self.tag_key = str(key)
self.tag_value = str(value)
def __repr__(self):
return repr((self.tag_key, self.tag_value))
class InitialDataReference(object):
"""
Initial Data Reference
"""
def __init__(self, instance_id, reference_type, datetime=None, snapshot_id=None):
super(InitialDataReference, self).__init__()
self.instance_id = instance_id
self.reference_type = reference_type
self.datetime = datetime
self.snapshot_id = snapshot_id
class RecoveryToSourceInstanceModel(object):
"""
RecoveryToSourceInstance model
"""
def __init__(self, restore_mode, db_name, new_dbname, tables=None):
super(RecoveryToSourceInstanceModel, self).__init__()
self.restore_mode = restore_mode
self.db_name = db_name
self.new_dbname = new_dbname
self.tables = tables
class Tables(object):
"""
Tables
"""
def __init__(self, table_name, new_tablename):
super(Tables, self).__init__()
self.table_name = table_name
self.new_tablename = new_tablename
class CreateInstanceResponse(BceResponse):
"""
Create Instance Response
"""
def __init__(self, bce_response):
super(CreateInstanceResponse, self).__init__()
self.instance_ids = bce_response.instance_ids
self.order_id = bce_response.order_id
class GetInstanceResponse(BceResponse):
"""
Get Instance Response
"""
def __init__(self, bce_response):
super(GetInstanceResponse, self).__init__()
self.instance_id = bce_response.instance_id
self.instance_name = bce_response.instance_name
self.engine = bce_response.engine
self.engine_version = bce_response.engine_version
self.category = bce_response.category
self.instance_status = bce_response.instance_status
self.cpu_count = bce_response.cpu_count
self.memory_capacity = bce_response.memory_capacity
self.volume_capacity = bce_response.volume_capacity
self.node_amount = bce_response.node_amount
self.used_storage = bce_response.used_storage
self.instance_create_time = bce_response.instance_create_time
self.instance_expire_time = bce_response.instance_expire_time
self.endpoint = bce_response.endpoint
self.public_access_status = bce_response.public_access_status
self.sync_mode = bce_response.sync_mode
self.backup_policy = bce_response.backup_policy
self.region = bce_response.region
self.instance_type = bce_response.instance_type
self.source_instance_id = bce_response.source_instance_id
self.source_region = bce_response.source_region
self.zone_names = bce_response.zone_names
self.vpc_id = bce_response.vpc_id
self.subnets = bce_response.subnets
self.topology = bce_response.topology
self.payment_timing = bce_response.payment_timing
self.character_set_name = bce_response.character_set_name
class ListInstanceResponse(BceResponse):
"""
List Instance Response
"""
def __init__(self, bce_response):
super(ListInstanceResponse, self).__init__()
self.max_keys = bce_response.max_keys
self.marker = str(bce_response.marker)
self.next_marker = str(bce_response.next_marker)
self.is_truncated = bce_response.is_truncated
self.instances = bce_response.instances
class ListZoneResponse(BceResponse):
"""
List zone.
"""
def __init__(self, bce_response):
super(ListZoneResponse, self).__init__()
self.zones = bce_response.zones
class ListSubnetResponse(BceResponse):
"""
List zone.
"""
def __init__(self, bce_response):
super(ListSubnetResponse, self).__init__()
self.subnets = bce_response.subnets
class Instance(object):
"""
instance.
"""
def __init__(self, engine, engine_version, cpu_count, allocated_memory_in_g_b, allocated_storage_in_g_b,
category, disk_io_type):
super(Instance, self).__init__()
self.engine = engine
self.engineVersion = engine_version
self.cpuCount = cpu_count
self.allocatedMemoryInGB = allocated_memory_in_g_b
self.allocatedStorageInGB = allocated_storage_in_g_b
self.category = category
self.diskIoType = disk_io_type
class PriceResponse(BceResponse):
"""
price response.
"""
def __init__(self, bce_response):
super(PriceResponse, self).__init__()
self.price = bce_response.price
class OrderStatusResponse(BceResponse):
"""
order status response.
"""
def __init__(self, bce_response):
super(OrderStatusResponse, self).__init__()
self.orderId = bce_response.orderId
self.status = bce_response.status
class JsonWrapper(JSONEncoder):
"""
custom json encoder for class
"""
def default(self, obj): # pylint: disable=E0202
if isinstance(obj, bytes):
return str(obj, encoding='utf-8')
if isinstance(obj, SubnetMap):
return {
'zoneName': obj.zone_name,
'subnetId': obj.subnet_id
}
if isinstance(obj, Tag):
return {
'tagKey': obj.tag_key,
'tagValue': obj.tag_value
}
if isinstance(obj, InitialDataReference):
return {
'instanceId': obj.instance_id,
'referenceType': obj.reference_type,
'datetime': obj.datetime,
'snapshotId': obj.snapshot_id
}
if isinstance(obj, RecoveryToSourceInstanceModel):
return {
'restoreMode': obj.restore_mode,
'dbName': obj.db_name,
'newDbname': obj.new_dbname,
'tables': obj.tables
}
if isinstance(obj, Tables):
return {
'tableName': obj.table_name,
'newTablename': obj.new_tablename
}
return JSONEncoder.default(self, obj)