pytest/lib/palo_job.py (793 lines of code) (raw):
#!/bin/env python
# -*- coding: utf-8 -*-
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
############################################################################
#
# @file palo_job.py
# @date 2018-05-08 14:42:27
# @brief 记录palo元数据中的job信息
#
#############################################################################
"""Palo meta info"""
import socket
class RepoInfo(object):
"""
show repositories
RepoId: 唯一的仓库ID
RepoName: 仓库名称
CreateTime: 第一次创建该仓库的时间
IsReadOnly: 是否为只读仓库
Location: 仓库中用于备份数据的根目录
Broker: 依赖的 Broker
ErrMsg: Palo 会定期检查仓库的连通性,如果出现问题,这里会显示错误信息
"""
RepoId = 0
RepoName = 1
CreateTime = 2
IsReadOnly = 3
Location = 4
Broker = 5
Type = 6
ErrMsg = 7
def __init__(self, repo_info):
self.repo_info = repo_info
def get_repo_id(self):
"""get repoid"""
return self.repo_info[RepoInfo.RepoId]
def get_repo_name(self):
"""get repo name"""
return self.repo_info[RepoInfo.RepoName]
def get_isReadOnly(self):
"""get isreadonly"""
return self.repo_info[RepoInfo.IsReadOnly]
def get_location(self):
"""get repo location"""
return self.repo_info[RepoInfo.Location]
def get_broker(self):
"""get broker"""
return self.repo_info[RepoInfo.Broker]
def get_errmsg(self):
"""get errmsg"""
return self.repo_info[RepoInfo.ErrMsg]
def get_create_time(self):
"""get create time"""
return self.repo_info[RepoInfo.CreateTime]
class BackupJob(object):
"""
JobId: 唯一作业id
SnapshotName: 备份的名称
DbName: 所属数据库
State: 当前阶段
PENDING: 提交作业后的初始状态
SNAPSHOTING: 执行快照中
UPLOAD_SNAPSHOT:快照完成,准备上传
UPLOADING: 快照上传中
SAVE_META: 将作业元信息保存为本地文件
UPLOAD_INFO: 上传作业元信息
FINISHED: 作业成功
CANCELLED: 作业失败
BackupObjs: 备份的表和分区
CreateTime: 任务提交时间
SnapshotFinishedTime: 快照完成时间
UploadFinishedTime: 快照上传完成时间
FinishedTime: 作业结束时间
UnfinishedTasks: 在 SNAPSHOTING 和 UPLOADING 阶段会显示还未完成的子任务id
Status: 如果作业失败,显示失败信息
Timeout: 作业超时时间,单位秒
"""
JobId = 0
SnapshotName = 1
DbName = 2
State = 3
BackupObjs = 4
CreateTime = 5
SnapshotFinishedTime = 6
UploadFinishedTime = 7
FinishedTime = 8
UnfinishedTasks = 9
Progress = 10
TaskErrMsg = 11
Status = 12
Timeout = 13
def __init__(self, backup_job):
self.backup_job = backup_job
def get_state(self):
"""get state"""
return self.backup_job[BackupJob.State]
def get_dbName(self):
"""get dbname"""
return self.backup_job[BackupJob.DbName]
def get_snapshotName(self):
"""get snapshot name"""
return self.backup_job[BackupJob.SnapshotName]
def get_create_time(self):
"""get_create_time"""
return self.backup_job[BackupJob.CreateTime]
def get_snap_finish_time(self):
"""get_snap_finish_time"""
return self.backup_job[BackupJob.SnapshotFinishedTime]
def get_upload_finish_time(self):
"""get_upload_finish_time"""
return self.backup_job[BackupJob.UploadFinishedTime]
def get_finished_time(self):
"""get_finished_time"""
return self.backup_job[BackupJob.FinishedTime]
class RestoreJob(object):
"""
show restore
JobId: 唯一作业id
Label: 要恢复的备份的名称
Timestamp: 要恢复的备份的时间版本
DbName: 所属数据库
State: 当前阶段
PENDING: 提交作业后的初始状态
SNAPSHOTING: 执行快照中
DOWNLOAD: 快照完成,准备下载仓库中的快照
DOWNLOADING: 快照下载中
COMMIT: 快照下载完成,准备生效
COMMITING: 生效中
FINISHED: 作业成功
CANCELLED: 作业失败
AllowLoad: 恢复时是否允许导入(当前不支持)
ReplicationNum: 指定恢复的副本数
ReplicaAllocation
RestoreJobs: 要恢复的表和分区
CreateTime: 任务提交时间
MetaPreparedTime: 元数据准备完成时间
SnapshotFinishedTime: 快照完成时间
DownloadFinishedTime: 快照下载完成时间
FinishedTime: 作业结束时间
UnfinishedTasks: 在 SNAPSHOTING、DOWNLOADING 和 COMMITING 阶段会显示还未完成的子任务id
Status: 如果作业失败,显示失败信息
Timeout: 作业超时时间,单位秒
"""
JobId = 0
Label = 1
Timestamp = 2
DbName = 3
State = 4
AllowLoad = 5
ReplicationNum = 6
ReplicaAllocation = 7
ReserveReplica = 8
RestoreObjs = 9
CreateTime = 10
MetaPreparedTime = 11
SnapshotFinishedTime = 12
DownloadFinishedTime = 13
FinishedTime = 14
UnfinishedTaskes = 15
Progress = 16
TaskErrMsg = 17
Status = 18
Timout = 19
def __init__(self, restore_job):
self.restore_job = restore_job
def get_dbName(self):
"""get dbname"""
return self.restore_job[RestoreJob.DbName]
def get_state(self):
"""get state"""
return self.restore_job[RestoreJob.State]
def get_allowLoad(self):
"""get allowload"""
return self.restore_job[RestoreJob.AllowLoad]
def get_create_time(self):
"""get_create_time"""
return self.restore_job[RestoreJob.CreateTime]
def get_meta_prepare_time(self):
"""get MetaPreparedTime"""
return self.restore_job[RestoreJob.MetaPreparedTime]
def get_snapshot_finished_time(self):
"""get SnapshotFinishedTime"""
return self.restore_job[RestoreJob.SnapshotFinishedTime]
def get_down_load_finished(self):
"""get DownloadFinishedTime"""
return self.restore_job[RestoreJob.DownloadFinishedTime]
def get_finished(self):
"""get FinishedTime"""
return self.restore_job[RestoreJob.FinishedTime]
class SnapshotInfo(object):
"""show snapshot on repo"""
Snapshot = 0
Timestamp = 1
Status = 2
def __init__(self, snapshot):
self.snapshot = snapshot
def get_snapshot_name(self):
"""get snapshot name"""
return self.snapshot[SnapshotInfo.Snapshot]
def get_timestamp(self):
"""get backup timestamp"""
return self.snapshot[SnapshotInfo.Timestamp]
class SchemaChangeJob(object):
"""show alter table column same with show proc '/jobs/dbid/schema_change'"""
JobId = 0
TableName = 1
CreateTime = 2
FinishTime = 3
IndexName = 4
IndexId = 5
OriginIndexId = 6
SchemaVersion = 7
TransactionId = 8
State = 9
Msg = 10
Progress = 11
Timeout = 12
def __init__(self, schemachange_job):
self.schema_change_job = schemachange_job
def get_state(self):
"""get state"""
return self.schema_change_job[SchemaChangeJob.State]
def get_table_name(self):
"""get table name"""
return self.schema_change_job[SchemaChangeJob.TableName]
def get_msg(self):
"""get msg"""
return self.schema_change_job[SchemaChangeJob.Msg]
def get_create_time(self):
"""get CreateTime"""
return self.schema_change_job[SchemaChangeJob.CreateTime]
def get_finish_time(self):
"""get FinishTime"""
return self.schema_change_job[SchemaChangeJob.FinishTime]
class RollupJob(object):
"""show alter table rolllup same with show proc '/jobs/dbid/rollup'"""
JobId = 0
TableName = 1
CreateTime = 2
FinishedTime = 3
BaseIndexName = 4
RollupIndexName = 5
RollupId = 6
TransactionId = 7
State = 8
Msg = 9
Progress = 10
Timeout = 11
def __init__(self, rollup_job):
self.rollup_job = rollup_job
def get_state(self):
"""get state"""
return self.rollup_job[RollupJob.State]
def get_table_name(self):
"""get table name"""
return self.rollup_job[RollupJob.TableName]
def get_index_name(self):
"""get index name"""
return self.rollup_job[RollupJob.RollupIndexName]
def get_msg(self):
"""get msg"""
return self.rollup_job[RollupJob.Msg]
class DeleteJob(object):
"""show delete different with show proc '/jobs/dbid/delete', this show delete result"""
TableName = 0
PartitionName = 1
CreateTime = 2
DeleteCondition = 3
State = 4
def __init__(self, delete_job):
self.delete_job = delete_job
def get_table_name(self):
"""get table name"""
return self.delete_job[DeleteJob.TableName]
def get_partition_name(self):
"""get partition name"""
return self.delete_job[DeleteJob.PartitionName]
def get_create_time(self):
"""get CreateTime"""
return self.delete_job[DeleteJob.CreateTime]
def get_state(self):
"""get state"""
return self.delete_job[DeleteJob.State]
class LoadJob(object):
"""show load same with show proc '/jobs/dbid/load'"""
JobId = 0
Label = 1
State = 2
Progress = 3
Type = 4
EtlInfo = 5
TaskInfo = 6
Errormsg = 7
CreateTime = 8
EtlStartTime = 9
EtlFinishTime = 10
LoadStartTime = 11
LoadFinishTime = 12
URL = 13
JobDetails = 14
def __init__(self, load_job):
self.load_job = load_job
def get_label(self):
"""get label"""
return self.load_job[self.Label]
def get_state(self):
"""get state"""
return self.load_job[self.State]
def get_errormsg(self):
"""get errormsg"""
return self.load_job[self.Errormsg]
def get_url(self):
"""get url"""
return self.load_job[self.URL]
def get_etlinfo(self):
"""get etl info"""
return self.load_job[self.EtlInfo]
def get_taskinfo(self):
"""get task info"""
return self.load_job[self.TaskInfo]
class ExportJob(object):
"""show export same with show proc '/jobs/dbid/export'"""
JobId = 0
Label = 1
State = 2
Progress = 3
TaskInfo = 4
Path = 5
CreateTime = 6
StartTime = 7
FinishTime = 8
Timeout = 9
ErrorMsg = 10
def __init__(self, export_job):
self.export_job = export_job
def get_state(self):
"""get state"""
return self.export_job[self.State]
def get_label(self):
"""get label"""
return self.export_job[self.Label]
def get_timeout(self):
"""get timeout"""
return self.export_job[self.Timeout]
def get_error_msg(self):
"""get error msg"""
return self.export_job[self.ErrorMsg]
def get_task_info(self):
"""get statistic"""
statistic = self.export_job[self.TaskInfo]
return eval(statistic)
def get_exec_mem_limit(self):
"""get exec mem limit"""
return self.get_task_info()["exec mem limit"]
def get_column_separator(self):
"""get column separator"""
return self.get_task_info()["column separator"]
def get_line_delimiter(self):
"""get line delimiter"""
return self.get_task_info()["line delimiter"]
def get_tablet_num(self):
"""get tablet num"""
return self.get_task_info()["tablet num"]
def get_coord_num(self):
"""get coord num"""
return self.get_task_info()["coord num"]
class SelectIntoInfo(object):
"""select into """
FileNumber = 0
TotalRows= 1
FileSize = 2
URL = 3
def __init__(self, info):
self.select_into_info = info
def get_file_number(self):
"""get file number"""
return self.select_into_info[self.FileNumber]
def get_total_rows(self):
"""get file number"""
return self.select_into_info[self.TotalRows]
def get_url(self):
"""get file number"""
return self.select_into_info[self.URL]
class BackendShowInfo(object):
"""show backends different with show proc '/backends';"""
BackendId = 0
Host = 1
HeartbeatPort = 2
BePort = 3
HttpPort = 4
BrpcPort = 5
LastStartTime = 6
LastHeartbeat = 7
Alive = 8
SystemDecommissioned = 9
TabletNum = 10
DataUsedCapacity = 11
AvailCapacity = 12
TotalCapacity = 13
UsedPct = 14
MaxDiskUsedPct = 15
RemoteUsedCapacity = 16
Tag = 17
ErrMsg = 18
Version = 19
Status = 20
HeartbeatFailureCounter = 21
NodeRole = 22
def __init__(self, be_info):
self.be_info = be_info
def get_backend_id(self):
"""get backend id"""
return self.be_info[self.BackendId]
def get_ip(self):
"""get ip"""
return socket.gethostbyname(self.be_info[self.Host])
def get_alive(self):
"""get be state """
return self.be_info[self.Alive]
class BackendProcInfo(object):
"""show proc '/backends' info different with show backends"""
BackendId = 0
Host = 1
HeartbeatPort = 2
BePort = 3
HttpPort = 4
BrpcPort = 5
LastStartTime = 6
LastHeartbeat = 7
Alive = 8
SystemDecommissioned = 9
TabletNum = 10
DataUsedCapacity = 11
AvailCapacity = 12
TotalCapacity = 13
UsedPct = 14
MaxDiskUsedPct = 15
RemoteUsedCapacity = 16
Tag = 17
ErrMsg = 18
Version = 19
Status = 20
HeartbeatFailureCounter = 21
NodeRole = 22
def __init__(self, be_info):
self.be_info = be_info
def get_backend_id(self):
"""get backend_id"""
return self.be_info[self.BackendId]
def get_ip(self):
"""get ip"""
return socket.gethostbyname(self.be_info[self.Host])
def get_hostname(self):
"""get hostname"""
return self.be_info[self.Host]
def get_alive(self):
"""get alive"""
return self.be_info[self.Alive]
def get_httpport(self):
"""get httpport"""
return self.be_info[self.HttpPort]
def get_heartbeatport(self):
"""get heartbeatport"""
return self.be_info[self.HeartbeatPort]
def get_backend_start_time(self):
"""get start time"""
return self.be_info[self.LastStartTime]
def get_tag(self):
"""get tag"""
tag_json = eval(self.be_info[self.Tag])
tags = tag_json['location']
return tags
class FrontendInfo(object):
"""show proc '/frontends'"""
Name = 0
Host = 1
EditLogPort = 2
HttpPort = 3
QueryPort = 4
RpcPort = 5
Role = 6
IsMaster = 7
ClusterId = 8
Join = 9
Alive = 10
ReplayedJournalId = 11
LastHeartbeat = 12
IsHelper = 13
ErrMsg = 14
Version = 15
CurrentConnected =16
def __init__(self, frontend):
self.frontend = frontend
def get_ismaster(self):
"""get ismaster"""
return self.frontend[self.IsMaster]
def get_host(self):
"""get host"""
return self.frontend[self.Host]
def get_httpport(self):
"""get port"""
return self.frontend[self.HttpPort]
def get_role(self):
"""get role"""
return self.frontend[self.Role]
def get_alive(self):
"""get alive"""
return self.frontend[self.Alive]
def get_IP(self):
"""get IP"""
return socket.gethostbyname(self.frontend[self.Host])
def get_LastHeartbeat(self):
"""get LastUpdateTime"""
return self.frontend[self.LastHeartbeat]
class FrontendShowInfo(object):
"""show frontends """
Name = 0
Host = 1
EditLogPort = 2
HttpPort = 3
QueryPort = 4
RpcPort = 5
Role = 6
IsMaster = 7
ClusterId = 8
Join = 9
Alive = 10
ReplayedJournalId = 11
LastHeartbeat = 12
IsHelper = 13
ErrMsg = 14
Version = 15
CurrentConnected = 16
def __init__(self, frontend):
self.frontend = frontend
def get_ismaster(self):
"""get ismaster"""
return self.frontend[self.IsMaster]
def get_ip(self):
"""get ip"""
return socket.gethostbyname(self.frontend[self.Host])
class BrokerInfo(object):
"""
show proc '/brokers'
Name: broker 名字
Host: broker host
Port:端口
Alive:是否活着
LastStartTime:上一次启动时间
LastUpdateTime:上一次心跳时间,随时变
ErrMsg: Palo 会定期检查仓库的连通性,如果出现问题,这里会显示错误信息
"""
Name = 0
Host = 1
Port = 2
Alive = 3
LastStartTime = 4
LastUpdateTime = 5
ErrMsg = 6
def __init__(self, broker_info):
self.broker_info = broker_info
def get_name(self):
"""get Name"""
return self.broker_info[BrokerInfo.Name]
def get_ip(self):
"""get IP"""
return socket.gethostbyname(self.broker_info[self.Host])
def get_port(self):
"""get Port"""
return self.broker_info[BrokerInfo.Port]
def get_alive(self):
"""get Alive"""
return self.broker_info[BrokerInfo.Alive]
def get_last_start_time(self):
"""get LastStartTime"""
return self.broker_info[BrokerInfo.LastStartTime]
def get_last_update_time(self):
"""get LastUpdateTime"""
return self.broker_info[BrokerInfo.LastUpdateTime]
def get_errmsg(self):
"""get ErrMsg"""
return self.broker_info[BrokerInfo.ErrMsg]
class GrantInfo(object):
"""show grants ; show proc '/auth'"""
UserIdentity = 0
Password = 1
Roles = 2
GlobalPrivs = 3
CatalogPrivs = 4
DatabasePrivs = 5
TablePrivs = 6
ResourcePrivs = 7
def __init__(self, grant):
self.grant = grant
def get_user_identity(self):
"""get user identity"""
return self.grant[self.UserIdentity]
def get_password(self):
"""get password"""
return self.grant[self.Password]
def get_global_privs(self):
"""get global privs"""
return self.grant[self.GlobalPrivs]
def get_database_privs(self):
"""get database privs"""
return self.grant[self.DatabasePrivs]
def get_table_privs(self):
"""get table privs"""
return self.grant[self.TablePrivs]
class DescInfo(object):
"""desc table_name"""
Field = 0
Type = 1
Null = 2
Key = 3
Default = 4
Extra = 5
def __init__(self, column_info):
self.column_info = column_info
def get_field(self):
"""get column filed name"""
return self.column_info[self.Field]
def get_type(self):
"""get column type"""
return self.column_info[self.Type]
def get_null(self):
"""get column is null"""
return self.column_info[self.Null]
def get_key(self):
"""get column is key"""
return self.column_info[self.Key]
def get_default(self):
"""get column is key"""
return self.column_info[self.Key]
def get_extra(self):
"""get extra"""
return self.column_info[self.Extra]
class DescInfoAll(object):
"""desc all"""
IndexName = 0
IndexKeyType = 1
Field = 2
Type = 3
Null = 4
Key = 5
Default = 6
Extra = 7
def __init__(self, column_info):
self.column_info = column_info
def get_index_name(self):
"""get index name"""
return self.column_info[self.IndexName]
def get_field(self):
"""get column filed name"""
return self.column_info[self.Field]
def get_type(self):
"""get column type"""
return self.column_info[self.Type]
def get_null(self):
"""get column is null"""
return self.column_info[self.Null]
def get_key(self):
"""get column is key"""
return self.column_info[self.Key]
def get_default(self):
"""get column is key"""
return self.column_info[self.Key]
def get_extra(self):
"""get extra"""
return self.column_info[self.Extra]
class PartitionInfo(object):
"""show partitions"""
PartitionId = 0
PartitionName = 1
VisibleVersion = 2
VisibleVersionTime = 3
State = 4
PartitionKey = 5
Range = 6
DistributionKey = 7
Buckets = 8
ReplicationNum = 9
StorageMedium = 10
CooldownTime = 11
RemoteStoragePolicy = 12
LastConsistencyCheckTime = 13
DataSize = 14
IsInMemory = 15
ReplicaAllocation = 16
IsMutable = 17
def __init__(self, partition):
self.partition = partition
def get_partition_name(self):
"""get partition name"""
return self.partition[self.PartitionName]
def get_replication_num(self):
"""get replication num"""
return self.partition[self.ReplicationNum]
def get_buckets(self):
"""get buckets"""
return self.partition[self.Buckets]
def get_is_in_memory(self):
"""get is in memory"""
return self.partition[self.IsInMemory]
def get_replica_allocation(self):
"""get replica allocation"""
return self.partition[self.ReplicaAllocation]
class RoutineLoadJob(object):
"""show routine load """
Id = 0
Name = 1
CreateTime = 2
PauseTime = 3
EndTime = 4
DbName = 5
TableName = 6
IsMultiTable = 7
State = 8
DataSourceType = 9
CurrentTaskNum = 10
JobProperties = 11
DataSourceProperties = 12
CustomProperties = 13
Statistic = 14
Progress = 15
Lag = 16
ReasonOfStateChanged = 17
ErrorLogUrls = 18
OtherMsg = 19
User = 20
Comment = 21
def __init__(self, routine_job):
self.routine_job = routine_job
def get_state(self):
"""get routine job state"""
return self.routine_job[self.State]
def get_name(self):
"""get routine job name"""
return self.routine_job[self.Name]
def get_progress(self):
"""get progress"""
return self.routine_job[self.Progress]
def get_statistic(self):
"""get statistic"""
statistic = self.routine_job[self.Statistic]
return eval(statistic)
def get_error_log_urls(self):
"""get errorlogurls"""
return self.routine_job[self.ErrorLogUrls]
def get_job_properties(self):
"""get job properties"""
property = self.routine_job[self.JobProperties]
return eval(property)
def get_current_task_num(self):
"""get current task num"""
return self.routine_job[self.CurrentTaskNum]
def get_reason_of_state_changed(self):
"""get reason of state changed"""
return self.routine_job[self.ReasonOfStateChanged]
def get_received_bytes_rate(self):
"""get received bytes rate"""
return self.get_statistic()["receivedBytesRate"]
def get_loaded_rows(self):
"""get loaded rows"""
return self.get_statistic()["loadedRows"]
def get_error_rows(self):
"""get error rows"""
return self.get_statistic()["errorRows"]
def get_total_rows(self):
"""get total rows"""
return self.get_statistic()["totalRows"]
def get_unselected_rows(self):
"""get unselected rows"""
return self.get_statistic()["unselectedRows"]
def get_task_execute_time_ms(self):
"""get task execute time ms"""
return self.get_statistic()["taskExecuteTimeMs"]
def get_task_committed_task_num(self):
"""get task committed task num"""
return self.get_statistic()["committedTaskNum"]
def get_task_aborted_task_num(self):
"""get task aborted task num"""
return self.get_statistic()["abortedTaskNum"]
def get_table_name(self):
"""get table name"""
return self.routine_job[self.TableName]
def get_db_name(self):
"""get database name"""
return self.routine_job[self.DbName]
def get_merge_type(self):
"""get merge type"""
return self.get_job_properties()["mergeType"]
class RoutineLoadTask(object):
"""show routine load task"""
TaskId = 0
TxnId = 1
JobId = 2
CreateTime = 3
ExecuteStartTime = 4
BeId = 5
DataSourceProperties = 6
def __init__(self, routine_task):
self.routine_task = routine_task
def get_taskid(self):
"""get taskid"""
return self.routine_task[self.TaskId]
def get_jobid(self):
"""get jobid"""
return self.routine_task[self.JobId]
def get_beid(self):
"""get beid"""
return self.routine_task[self.BeId]
class TabletsInfo(object):
"""
show tablets from table_name
SHOW PROC '/dbs/db_id/table_id/partitions/partition_id/index_id/tablet_id'
"""
TabletId = 0
ReplicaId = 1
BackendId = 2
SchemaHash = 3
Version = 4
LstSuccessVersion = 5
LstFailedVersion = 6
LstFailedTime = 7
LocalDataSize = 8
RemoteDataSize = 9
RowCount = 10
State = 11
LstConsistencyCheckTime = 12
CheckVersion = 13
VersionCount = 14
QueryHits = 15
PathHash = 16
MetaUrl = 17
CompactionStatus = 18
CooldownReplicaId = 19
CooldownMetaId = 20
def __init__(self, tablet_info):
self.tablet_info = tablet_info
def get_tablet_id(self):
"""get tablet id"""
return self.tablet_info[self.TabletId]
def get_replica_id(self):
"""get replica id"""
return self.tablet_info[self.ReplicaId]
def get_backend_id(self):
"""get backend id"""
return self.tablet_info[self.BackendId]
def get_state(self):
"""get state"""
return self.tablet_info[self.State]
def get_compaction_status(self):
"""get compaction status"""
return self.tablet_info[self.CompactionStatus]
class TabletIdInfo(object):
"""show tablet tablet_id"""
DbName = 0
TableName = 1
PartitionName = 2
IndexName = 3
DbId = 4
TableId = 5
PartitionId = 6
IndexId = 7
IsSync = 8
Order = 9
QueryHits = 10
DetailCmd = 11
def __init__(self, tablet_id_info):
self.tablet_id_info = tablet_id_info
def get_db_name(self):
"""get db name"""
return self.tablet_id_info[self.DbName]
def get_table_name(self):
"""get table name"""
return self.tablet_id_info[self.TableName]
def get_partition_name(self):
"""get partition name"""
return self.tablet_id_info[self.PartitionName]
def get_index_name(self):
"""get index name"""
return self.tablet_id_info[self.IndexName]
def get_db_id(self):
"""get db id"""
return self.tablet_id_info[self.DbId]
def get_table_id(self):
"""get table id"""
return self.tablet_id_info[self.TableId]
def get_partition_id(self):
"""get partition id"""
return self.tablet_id_info[self.PartitionId]
def get_index_id(self):
"""get index id"""
return self.tablet_id_info[self.IndexId]
def get_is_sync(self):
"""get is sync"""
return self.tablet_id_info[self.IsSync]
def get_detail_cmd(self):
"""get detail cmd"""
return self.tablet_id_info[self.DetailCmd]
class TransactionInfo(object):
"""show transcation"""
TransactionId = 0
Label = 1
Coordinator = 2
TransactionStatus = 3
LoadJobSourceType = 4
PrepareTime = 5
PreCommitTime = 6
CommitTime = 7
PublishTime = 8
FinishTime = 9
Reason = 10
ErrorReplicasCount = 11
ListenerId = 12
TimeoutMs = 13
ErrMsg = 14
def __init__(self, txn):
self.txn = txn
def get_transaction_id(self):
"""get transaction id"""
return self.txn[self.TransactionId]
def get_label(self):
"""get label"""
return self.txn[self.Label]
def get_transaction_status(self):
"""get txn status"""
return self.txn[self.TransactionStatus]
def get_timeout_ms(self):
"""get txn timeout ms"""
return self.txn[self.TimeoutMs]
class TableIndexInfo(object):
"""show index from database.table"""
TableName = 0
NonUnique = 1
KeyName = 2
SeqInIndex = 3
ColumnName = 4
Collation = 5
Cardinality = 6
SubPart = 7
Packed = 8
IsNull = 9
IndexType = 10
Comment = 11
def __init__(self, table_index_info):
self.table_index_info = table_index_info
def get_table_name(self):
"""get table name"""
return self.table_index_info[self.TableName]
def get_key_name(self):
"""get index key name"""
return self.table_index_info[self.KeyName]
def get_column_name(self):
"""get column name"""
return self.table_index_info[self.ColumnName]
def get_index_type(self):
"""get column name"""
return self.table_index_info[self.IndexType]
class AdminShowConfig(object):
"""ADMIN SHOW FRONTEND CONFIG [LIKE "pattern"]"""
Key = 0
Value = 1
Type = 2
IsMutable = 3
MasterOnly = 4
Comment = 5
def __init__(self, key_config):
self.key_config = key_config
def get_key(self):
"""get key"""
return self.key_config[self.Key]
def get_value(self):
"""get value"""
return self.key_config[self.Value]
class DynamicPartitionInfo(object):
"""show dynamic partition tables"""
TableName = 0
Enable = 1
TimeUnit = 2
Start = 3
End = 4
Prefix = 5
Buckets = 6
ReplicationNum = 7
ReplicaAllocation = 8
StartOf = 9
LastUpdatetime = 10
LastSchedulerTime = 11
State = 12
LastCreatePartitionMsg = 13
LastDropPartitionMsg = 14
def __init__(self, dynamic_partition_info):
self.dynamic_partition_info = dynamic_partition_info
def get_enable(self):
"""get enable"""
return self.dynamic_partition_info[self.Enable]
def get_time_unit(self):
"""get time unit"""
return self.dynamic_partition_info[self.TimeUnit]
def get_start(self):
"""get start"""
return self.dynamic_partition_info[self.Start]
def get_end(self):
"""get end"""
return self.dynamic_partition_info[self.End]
def get_prefix(self):
"""get prefix"""
return self.dynamic_partition_info[self.Prefix]
def get_buckets(self):
"""get buckets"""
return self.dynamic_partition_info[self.Buckets]
def get_replication_num(self):
"""get replication num"""
return self.dynamic_partition_info[self.ReplicationNum]
def get_start_of(self):
"""get start of"""
return self.dynamic_partition_info[self.StartOf]
class SyncJobInfo(object):
"""show sync job"""
JobId = 0
JobName = 1
Type = 2
State = 3
Channel = 4
Status = 5
JobConfig = 6
CreateTime = 7
LastStartTime = 8
LastStopTime = 9
FinishTime = 10
Msg = 11
def __init__(self, sync_job_info):
self.sync_job_info = sync_job_info
def get_job_name(self):
"""get job name"""
return self.sync_job_info[self.JobName]
def get_state(self):
"""get state"""
return self.sync_job_info[self.State]
def get_channel(self):
"""get channel"""
return self.sync_job_info[self.Channel]
def get_job_config(self):
"""get job config"""
return self.sync_job_info[self.JobConfig]
class ReplicaStatus(object):
"""admin show replica status"""
TabletId = 0
ReplicaId = 1
BackendId = 2
Version = 3
LastFailedVersion = 4
LastSuccessVersion = 5
CommittedVersion = 6
SchemaHash = 7
VersionNum = 8
IsBad = 9
State = 10
Status = 11
def __init__(self, replica_status):
self.replica_status = replica_status
def get_backend_id(self):
"""get backend id"""
return self.replica_status[self.BackendId]
if __name__ == '__main__':
print(ReplicaStatus.__name__)