220 lines
6.7 KiB
Python
220 lines
6.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
# Copyright (c) 2014 Baidu.com, 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 a client class for DDC.
|
|
"""
|
|
|
|
import copy
|
|
import json
|
|
|
|
from baidubce import utils
|
|
from baidubce.auth import bce_v1_signer
|
|
from baidubce.bce_base_client import BceBaseClient
|
|
from baidubce.http import bce_http_client
|
|
from baidubce.http import handler
|
|
from baidubce.http import http_methods
|
|
from baidubce.utils import required
|
|
|
|
|
|
class DdcClient(BceBaseClient):
|
|
"""
|
|
Ddc base sdk client
|
|
"""
|
|
version = '/v1'
|
|
prefix = '/ddc'
|
|
|
|
def __init__(self, config=None):
|
|
"""
|
|
:type config: baidubce.BceClientConfiguration
|
|
:param config:
|
|
"""
|
|
BceBaseClient.__init__(self, config)
|
|
|
|
@required(instance_id=(str), db_name=(str), table_name=(str))
|
|
def lazydrop_create_hard_link(self, instance_id=None, db_name=None, table_name=None, config=None):
|
|
"""
|
|
Create hard link.
|
|
|
|
:param instance_id:
|
|
The id of instance
|
|
:type instance_id: string
|
|
|
|
:param db_name:
|
|
The database name
|
|
:type db_name: string
|
|
|
|
:param table_name:
|
|
The table name
|
|
:type table_name: string
|
|
|
|
:param config:
|
|
:type config: baidubce.BceClientConfiguration
|
|
|
|
:return:
|
|
|
|
:rtype baidubce.bce_response.BceResponse
|
|
"""
|
|
path = DdcClient.version + DdcClient.prefix\
|
|
+ "/instance/" + instance_id + "/database/" + db_name + "/table/link"
|
|
body = {}
|
|
if table_name is not None:
|
|
body['tableName'] = table_name
|
|
|
|
return self._send_request(http_methods.POST, path, body=json.dumps(body), config=config)
|
|
|
|
@required(instance_id=(str), db_name=(str), table_name=(str))
|
|
def lazydrop_delete_hard_link(self, instance_id=None, db_name=None, table_name=None, config=None):
|
|
"""
|
|
Delete hard link.
|
|
|
|
:param instance_id:
|
|
The id of instance
|
|
:type instance_id: string
|
|
|
|
:param db_name:
|
|
The database name
|
|
:type db_name: string
|
|
|
|
:param table_name:
|
|
The table name
|
|
:type table_name: string
|
|
|
|
:param config:
|
|
:type config: baidubce.BceClientConfiguration
|
|
|
|
:return:
|
|
|
|
:rtype baidubce.bce_response.BceResponse
|
|
"""
|
|
path = DdcClient.version + DdcClient.prefix\
|
|
+ "/instance/" + instance_id + "/database/" + db_name + "/table/" + table_name + "/link"
|
|
|
|
return self._send_request(http_methods.DELETE, path, config=config)
|
|
|
|
@required(instance_id=(str), log_type=(str), datetime=(str))
|
|
def list_log_by_instance_id(self, instance_id=None, log_type=None, datetime=None, config=None):
|
|
"""
|
|
Delete hard link.
|
|
|
|
:param instance_id:
|
|
The id of instance
|
|
:type instance_id: string
|
|
|
|
:param log_type:
|
|
LogType
|
|
:type log_type: string
|
|
|
|
:param datetime:
|
|
Datetime
|
|
:type datetime: string
|
|
|
|
:param config:
|
|
:type config: baidubce.BceClientConfiguration
|
|
|
|
:return:
|
|
|
|
:rtype baidubce.bce_response.BceResponse
|
|
"""
|
|
path = '/v2' + DdcClient.prefix + '/instance/' + instance_id + '/logs'
|
|
params = {}
|
|
if log_type is not None:
|
|
params['logType'] = log_type
|
|
|
|
if datetime is not None:
|
|
params['datetime'] = datetime
|
|
return self._send_request(http_methods.GET, path, params=params, config=config)
|
|
|
|
@required(instance_id=(str), log_id=(str))
|
|
def get_log_by_id(self, instance_id=None, log_id=None, download_valid_time_in_sec=None, config=None):
|
|
"""
|
|
Delete hard link.
|
|
|
|
:param instance_id:
|
|
The id of instance
|
|
:type instance_id: string
|
|
|
|
:param log_id:
|
|
LogId
|
|
:type log_id: string
|
|
|
|
:param download_valid_time_in_sec:
|
|
downloadValidTimeInSec
|
|
:type download_valid_time_in_sec: Integer
|
|
|
|
:param config:
|
|
:type config: baidubce.BceClientConfiguration
|
|
|
|
:return:
|
|
|
|
:rtype baidubce.bce_response.BceResponse
|
|
"""
|
|
path = DdcClient.version + DdcClient.prefix + "/instance/" + instance_id + "/logs/" + log_id
|
|
params = {}
|
|
if download_valid_time_in_sec is not None:
|
|
params['downloadValidTimeInSec'] = download_valid_time_in_sec
|
|
return self._send_request(http_methods.GET, path, params=params, config=config)
|
|
|
|
@staticmethod
|
|
def _get_path(prefix=None):
|
|
"""
|
|
:type prefix: string
|
|
:param prefix: path prefix
|
|
"""
|
|
if prefix is None:
|
|
prefix = DdcClient.prefix
|
|
return utils.append_uri(DdcClient.version, prefix)
|
|
|
|
def _merge_config(self, config):
|
|
"""
|
|
|
|
:type config: baidubce.BceClientConfiguration
|
|
:param config:
|
|
:return:
|
|
"""
|
|
if config is None:
|
|
return self.config
|
|
else:
|
|
new_config = copy.copy(self.config)
|
|
new_config.merge_non_none_values(config)
|
|
return new_config
|
|
|
|
def _send_request(self, http_method, path, body=None, headers=None, params=None,
|
|
config=None, body_parser=None):
|
|
"""
|
|
|
|
:param http_method:
|
|
:param path:
|
|
:param body:
|
|
:param headers:
|
|
:param params:
|
|
|
|
:type config: baidubce.BceClientConfiguration
|
|
:param config:
|
|
|
|
:param body_parser:
|
|
|
|
:return: baidubce.BceResponse
|
|
"""
|
|
config = self._merge_config(config)
|
|
if body_parser is None:
|
|
body_parser = handler.parse_json
|
|
|
|
if headers is None:
|
|
headers = {b'Accept': b'*/*', b'Content-Type': b'application/json;charset=utf-8'}
|
|
|
|
return bce_http_client.send_request(config, bce_v1_signer.sign,
|
|
[handler.parse_error, body_parser],
|
|
http_method, path.encode(), body, headers, params)
|