Files
2025-11-27 11:01:26 +08:00

2299 lines
79 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# coding:utf-8
import json
import threading
from urllib.parse import urlparse
from volcengine.ApiInfo import ApiInfo
from volcengine.Credentials import Credentials
from volcengine.ServiceInfo import ServiceInfo
from volcengine.base.Service import Service
class BioOsService(Service):
_instance_lock = threading.Lock()
def __new__(cls, *args, **kwargs):
if not hasattr(BioOsService, '_instance'):
with BioOsService._instance_lock:
if not hasattr(BioOsService, '_instance'):
BioOsService._instance = object.__new__(cls)
return BioOsService._instance
def __init__(self, endpoint='https://open.volcengineapi.com', region='cn-beijing'):
self.service_info = BioOsService.get_service_info(endpoint, region)
self.api_info = BioOsService.get_api_info()
super(BioOsService, self).__init__(self.service_info, self.api_info)
@staticmethod
def get_service_info(endpoint, region):
parsed = urlparse(endpoint)
scheme, hostname = parsed.scheme, parsed.hostname
if not scheme or not hostname:
raise Exception(f'invalid endpoint format: {endpoint}')
service_info = ServiceInfo(hostname, {'Accept': 'application/json'},
Credentials('', '', 'bio', region), 5, 5, scheme=scheme)
return service_info
@staticmethod
def get_api_info():
api_info = {
'CreateWorkspace':
ApiInfo('POST', '/', {'Action': 'CreateWorkspace', 'Version': '2021-03-04'}, {}, {}),
'ListWorkspaces':
ApiInfo('POST', '/', {'Action': 'ListWorkspaces', 'Version': '2021-03-04'}, {}, {}),
'UpdateWorkspace':
ApiInfo('POST', '/', {'Action': 'UpdateWorkspace', 'Version': '2021-03-04'}, {}, {}),
'DeleteWorkspace':
ApiInfo('POST', '/', {'Action': 'DeleteWorkspace', 'Version': '2021-03-04'}, {}, {}),
'BindClusterToWorkspace':
ApiInfo('POST', '/', {'Action': 'BindClusterToWorkspace', 'Version': '2021-03-04'}, {}, {}),
'UnbindClusterAndWorkspace':
ApiInfo('POST', '/', {'Action': 'UnbindClusterAndWorkspace', 'Version': '2021-03-04'}, {}, {}),
'ListClustersOfWorkspace':
ApiInfo('POST', '/', {'Action': 'ListClustersOfWorkspace', 'Version': '2021-03-04'}, {}, {}),
'ListWorkspaceLabels':
ApiInfo('POST', '/', {'Action': "ListWorkspaceLabels", 'Version': '2021-03-04'}, {}, {}),
'ListClusters':
ApiInfo('POST', '/', {'Action': 'ListClusters', 'Version': '2021-03-04'}, {}, {}),
'DeleteCluster':
ApiInfo('POST', '/', {'Action': 'DeleteCluster', 'Version': '2021-03-04'}, {}, {}),
'UpdateAPIAccessKey':
ApiInfo('POST', '/', {'Action': 'UpdateAPIAccessKey', 'Version': '2021-03-04'}, {}, {}),
'GetAPIAccessKey':
ApiInfo('POST', '/', {'Action': 'GetAPIAccessKey', 'Version': '2021-03-04'}, {}, {}),
'CreateDataModel':
ApiInfo('POST', '/', {'Action': 'CreateDataModel', 'Version': '2021-03-04'}, {}, {}),
'ListDataModels':
ApiInfo('POST', '/', {'Action': 'ListDataModels', 'Version': '2021-03-04'}, {}, {}),
'ListDataModelRows':
ApiInfo('POST', '/', {'Action': 'ListDataModelRows', 'Version': '2021-03-04'}, {}, {}),
'DeleteDataModelRowsAndHeaders':
ApiInfo('POST', '/', {'Action': 'DeleteDataModelRowsAndHeaders', 'Version': '2021-03-04'}, {}, {}),
'CreateSubmission':
ApiInfo('POST', '/', {'Action': 'CreateSubmission', 'Version': '2021-03-04'}, {}, {}),
'ListSubmissions':
ApiInfo('POST', '/', {'Action': 'ListSubmissions', 'Version': '2021-03-04'}, {}, {}),
'ListOverviewSubmissions':
ApiInfo('POST', '/', {'Action': 'ListOverviewSubmissions', 'Version': '2021-03-04'}, {}, {}),
'DeleteSubmission':
ApiInfo('POST', '/', {'Action': 'DeleteSubmission', 'Version': '2021-03-04'}, {}, {}),
'CancelSubmission':
ApiInfo('POST', '/', {'Action': 'CancelSubmission', 'Version': '2021-03-04'}, {}, {}),
'ListRuns':
ApiInfo('POST', '/', {'Action': 'ListRuns', 'Version': '2021-03-04'}, {}, {}),
'CancelRun':
ApiInfo('POST', '/', {'Action': 'CancelRun', 'Version': '2021-03-04'}, {}, {}),
'ListTasks':
ApiInfo('POST', '/', {'Action': 'ListTasks', 'Version': '2021-03-04'}, {}, {}),
'CreateWorkflow':
ApiInfo('POST', '/', {'Action': 'CreateWorkflow', 'Version': '2021-03-04'}, {}, {}),
'ListWorkflows':
ApiInfo('POST', '/', {'Action': 'ListWorkflows', 'Version': '2021-03-04'}, {}, {}),
'UpdateWorkflow':
ApiInfo('POST', '/', {'Action': 'UpdateWorkflow', 'Version': '2021-03-04'}, {}, {}),
'DeleteWorkflow':
ApiInfo('POST', '/', {'Action': 'DeleteWorkflow', 'Version': '2021-03-04'}, {}, {}),
'GetNotebookEditInfo':
ApiInfo('POST', '/', {'Action': 'GetNotebookEditInfo', 'Version': '2021-03-04'}, {}, {}),
'GetNotebookServerSettings':
ApiInfo('POST', '/', {'Action': 'GetNotebookServerSettings', 'Version': '2021-03-04'}, {}, {}),
'GetNotebookServerStat':
ApiInfo('POST', '/', {'Action': 'GetNotebookServerStat', 'Version': '2021-03-04'}, {}, {}),
'ListNotebookServerImages':
ApiInfo('POST', '/', {'Action': 'ListNotebookServerImages', 'Version': '2021-03-04'}, {}, {}),
'ListNotebookServerResourceOpts':
ApiInfo('POST', '/', {'Action': 'ListNotebookServerResourceOpts', 'Version': '2021-03-04'}, {}, {}),
'StopNotebookServer':
ApiInfo('POST', '/', {'Action': 'StopNotebookServer', 'Version': '2021-03-04'}, {}, {}),
'UpdateNotebookServerSettings':
ApiInfo('POST', '/', {'Action': 'UpdateNotebookServerSettings', 'Version': '2021-03-04'}, {}, {}),
'CreateNotebookServerImage':
ApiInfo('POST', '/', {'Action': 'CreateNotebookServerImage', 'Version': '2021-03-04'}, {}, {}),
'ListNotebookServers':
ApiInfo('POST', '/', {'Action': 'ListNotebookServers', 'Version': '2021-03-04'}, {}, {}),
'DeleteNotebookServer':
ApiInfo('POST', '/', {'Action': 'DeleteNotebookServer', 'Version': '2021-03-04'}, {}, {}),
'DeleteNotebookServerSettings':
ApiInfo('POST', '/', {'Action': 'DeleteNotebookServerSettings', 'Version': '2021-03-04'}, {}, {}),
'GetNotebookServerExtraPackages':
ApiInfo('POST', '/', {'Action': 'GetNotebookServerExtraPackages', 'Version': '2021-03-04'}, {}, {}),
'ListDataFiles':
ApiInfo('POST', '/', {'Action': 'ListDataFiles', 'Version': '2021-03-04'}, {}, {}),
'ListDataSets':
ApiInfo('POST', '/', {'Action': 'ListDataSets', 'Version': '2021-03-04'}, {}, {}),
'CreateDataSet':
ApiInfo('POST', '/', {'Action': 'CreateDataSet', 'Version': '2021-03-04'}, {}, {}),
'DeleteDataSet':
ApiInfo('POST', '/', {'Action': 'DeleteDataSet', 'Version': '2021-03-04'}, {}, {}),
'GetTRSWorkflowInfo':
ApiInfo('POST', '/', {'Action': 'GetTRSWorkflowInfo', 'Version': '2021-03-04'}, {}, {}),
}
return api_info
def create_workspace(self, params):
""" 创建workspace
Args:
params (Dict):
`Name (str)`: 必选, 工作空间名称
示例值: name
`Description (str)`: 必选, 工作空间描述
示例值: description
`S3Bucket (str)`: 选填, 对象存储的存储桶名称, 为空表示自动创建
示例值: bioos-wcfxxxxxxxxxxx
`CopyPublicWorkspaceID (str)`: 选填, 需要复制其内容的公共工作空间ID
示例值: wcxxxxxxxxxxxxxxxxxxx
`CoverPath (str)`: 选填, 封面位于存储桶的路径, 为空表明使用官方第一张图片
示例值: template-cover/pic1.png
`Labels (List[str])`: 选填, 工作空间标签
示例值: ["DNA"]
Returns:
Dict:
`ID (str)`: 工作空间 ID
示例值: wcxxxxxxxxxxxxxxxxxxx
"""
return self.__request('CreateWorkspace', params)
def list_workspaces(self, params):
""" 查询符合条件的workspace列表
Args:
params (Dict):
`PageNumber (int)`: 选填, 分页页码
示例值: 1
`PageSize (int)`: 选填, 分页页长
示例值: 10
`Filter (Dict)`: 选填, 筛选条件
`Keyword (str)`: 选填, 根据名称筛选
示例值: test
`IDs (List[str])`: 选填, ID列表
示例值: ["test"]
`IsPublic (bool)`: 选填, 是否公开
示例值: False
`Labels (List[str])`: 选填, workspace标签
示例值: ["DNA"]
`SortBy (str)`: 选填, 按字段排序 取值有Name CreateTime VisitTime
示例值: CreateTime
`SortOrder (str)`: 选填, 指定排序顺序 取值有Asc Desc
示例值: Desc
Returns:
Dict:
`Items (List[Dict])`: Workspace列表
`ID (str)`: 工作空间ID
示例值: wcxxxxxxxxxxxxxxxxxxx
`Name (str)`: 工作空间名称
示例值: name
`Description (str)`: 工作空间描述
示例值: description
`CreateTime (int)`: 工作空间创建时间
示例值: 1673525239
`UpdateTime (int)`: 工作空间更新时间
示例值: 1673525239
`OwnerName (str)`: 创建者名字
示例值: owner
`CoverDownloadURL (str)`: 封面地址
示例值: template-cover/pic1.png
`Role (str)`: 当前用户对于工作空间角色
示例值: Admin
`S3Bucket (str)`: 当前工作空间存储桶
示例值: bioos-wcxxxxxxxxxxxx
`PublicMeta (Dict)`: 公共 Workspace 元数据
`TosBucketTotalStorage (int)`: 公共工作空间桶存储占用信息(Gb)
示例值: 20
`Labels (List[str])`: 工作空间标签
示例值: ["DNA"]
`PageNumber (int)`: 页码
示例值: 1
`PageSize (int)`: 页长
示例值: 10
`TotalCount (int)`: 总数量
示例值: 10
"""
return self.__request('ListWorkspaces', params)
def update_workspace(self, params):
""" 更新workspace
Args:
params (Dict):
`ID (str)`: 必选, 工作空间 ID
示例值: wcxxxxxxxxxxxxxxxxxxx
`Name (str)`: 必选, 工作空间名称
示例值: name
`Description (str)`: 必选, 工作空间描述
示例值: description
`CoverPath (str)`: 选填, 图片位于存储桶的位置, 为空表明使用官方第一张图片
示例值: template-cover/pic1.png
`Labels (List[str])`: 选填, 标签全量更新
示例值: ["DNA"]
Returns:
Dict:
`Updated (bool)`: 是否存在内容更新
示例值: False
"""
return self.__request('UpdateWorkspace', params)
def delete_workspace(self, params):
""" 删除workspace
Args:
params (Dict):
`ID (str)`: 必选, workspaceID
示例值: wcxxxxxxxxxxxxxxxxxxx
Returns:
Dict: empty dictionary
"""
return self.__request('DeleteWorkspace', params)
def bind_cluster_to_workspace(self, params):
""" 如果workspace内运行工作流,则需要绑定已纳管的集群,已被纳管的集群可通过ListClusters接口查询。
Args:
params (Dict):
`ID (str)`: 必选, workspaceID
示例值: wcxxxxxxxxxxxxxxxxxxx
`ClusterID (str)`: 必选, 已纳管集群的ID
示例值: ucxxxxxxxxxxxxxxxxxxx
`Type (str)`: 必选, 关联类型(workflow、notebook)
示例值: workspace
Returns:
Dict: empty dictionary
"""
return self.__request('BindClusterToWorkspace', params)
def unbind_cluster_and_workspace(self, params):
""" 该接口对已绑定的workspace和cluster进行解绑操作
Args:
params (Dict):
`ID (str)`: 必选, workspaceID
示例值: wcxxxxxxxxxxxxxxxxxxx
`ClusterID (str)`: 必选, 已纳管集群的ID
示例值: ucxxxxxxxxxxxxxxxxxxx
`Type (str)`: 必选, 关联类型(workflow、notebook)
示例值: workspace
Returns:
Dict: empty dictionary
"""
return self.__request('UnbindClusterAndWorkspace', params)
def list_clusters_of_workspace(self, params):
""" 查看workspace所绑定的集群列表
Args:
params (Dict):
ID (str): 必选, workspaceID
示例值: wcxxxxxxxxxxxxxxxxxxx
Type (str): 必选, 关联类型(workflow、notebook)
示例值: workflow
Returns:
Dict:
`Items (List[Dict])`: cluster列表
`ClusterInfo (Dict)`: 集群信息
`ID (str)`: 纳管集群ID
示例值: ucxxxxxxxxxxxxxxxxxxx
`Name (str)`: 纳管集群名称
示例值: name
`Status (str)`: 集群纳管状态(Creating、CreateFailed、Running、Error、Deleting、DeleteFailed、Updating、Stopped)
示例值: Creating
`StartTime (int)`: 起始时间
示例值: 1673525239
`Description (str)`: 投递记录描述
示例值: description
`ErrorMessage (str)`: 集群纳管过程中出现问题时的错误信息
示例值: err message
`Bound (bool)`: 是否存在绑定的 workspace
示例值: False
`Public (bool)`: 是否是公共集群
示例值: True
`VKEConfig (Dict)`: vke 集群信息
`ClusterID (str)`: vke集群的clusterID,通过https://www.volcengine.com/docs/6460/115190查询
示例值: ccexxxxxxxxxxxxxxxxxx
`StorageClass (str)`: vke集群已安装的 StorageClass 的名称
示例值: ebs-ssd
`VCIEnabled (bool)`: vke集群是否运行VCI
示例值: True
`ExternalConfig (Dict)`: 外部集群配置
`WESEndpoint (str)`: WES 地址
示例值: http://192.168.0.1:8002/ga4gh/wes/v1
`JupyterhubEndpoint (str)`: jupyterhub 地址
示例值: http://jupyterhub-hub:8081/jupyterhub
`ResourceScheduler (str)`: 外部资源调度程序
示例值: SGE
`Filesystem (str)`: 工作流计算引擎依赖的文件系统(tos, local)
示例值: tos
`ExecutionRootDir (str)`: 工作流计算引擎执行根路径, 当且仅当工作流计算引擎依赖的文件系统为 `local` 时会有
示例值: /root
`S3ProxyConfig (Dict)`: 文件系统存储的s3proxy代理信息
`Endpoint (str)`: 访问地址
示例值: http://192.168.0.3:8000
`Region (str)`: 区域
示例值: cn-beijing
`AccessKey (str)`: 访问s3proxy的AccessKey
示例值: AKxxxx
`SecretKey (str)`: 访问s3proxy的SecretKey
示例值: xxxxxx
`ForcePathStyle (bool)`: 是否强制使用path style, 还是使用virtual style
示例值: True
`SharedConfig (Dict)`: 共享集群配置,暂无具体配置信息
示例值: {}
`StoppedTime (int)`: 截止时间
示例值: 1673525239
`Type (str)`: 关联类型(workflow、notebook)
示例值: workflow
`BindTime (int)`: 绑定是时间
示例值: 1673525239
`PageNumber (int)`: 页码
示例值: 1
`PageSize (int)`: 页长
示例值: 10
`TotalCount (int)`: 总数量
示例值: 10
"""
return self.__request('ListClustersOfWorkspace', params)
def list_workspace_labels(self, params):
""" 获取工作空间的标签列表
Args:
params (Dict):
`Filter (Dict)`: 选填, 筛选条件
`Exact (bool)`: 选填, 是否精准匹配
示例值: True
`MatchPreset (bool)`: 选填, 是否匹配预设标签
示例值: True
`IsPublic (bool)`: 选填, 是否查询公开workspace
示例值: True
`Keywords (List[str])`: 选填, 匹配列表
示例值: ["DNA"]
Returns:
Dict:
`Items (List[Dict])`: 标签列表
`Name (str)`: 标签名称
示例值: name
`Count (int)`: 标签对应的workspace数目
示例值: 10
`TotalCount (int)`: 标签总数
示例值: 10
"""
return self.__request('ListWorkspaceLabels', params)
def list_clusters(self, params):
""" 查看所有集群
Args:
params (Dict):
`PageNumber (int)`: 选填, 页码
示例值: 1
`PageSize (int)`: 选填, 页长
示例值: 10
`Filter (Dict)`: 选填, 筛选条件
`IDs (List[str])`: 选填, ID列表
示例值: ["ucxxxxxxxxxxxxxxxxxxx"]
`Status (List[str])`: 选填, 集群状态列表
示例值: ["Running"]
`Type (List[str])`: 选填, 集群类型(volc-vke, external, shared)
示例值: ["shared"]
`Public (bool)`: 选填, 默认为False,若为True,则集群对所有人可见
示例值: True
`Keyword (str)`: 选填, 名称模糊匹配
示例值: "test"
Returns:
Dict:
`Items (List[Dict])`: cluster列表
`ID (str)`: 纳管集群ID
示例值: ucxxxxxxxxxxxxxxxxxxx
`Name (str)`: 纳管集群名称
示例值: name
`Status (str)`: 集群纳管状态(Creating、CreateFailed、Running、Error、Deleting、DeleteFailed、Updating、Stopped)
示例值: Creating
`StartTime (int)`: 起始时间
示例值: 1673525239
`Description (str)`: 投递记录描述
示例值: description
`ErrorMessage (str)`: 集群纳管过程中出现问题时的错误信息
示例值: err message
`Bound (bool)`: 是否存在绑定的 workspace
示例值: False
`Public (bool)`: 是否是公共集群
示例值: True
`VKEConfig (Dict)`: vke 集群信息
`ClusterID (str)`: vke集群的clusterID,通过https://www.volcengine.com/docs/6460/115190查询
示例值: ccexxxxxxxxxxxxxxxxxx
`StorageClass (str)`: vke集群已安装的 StorageClass 的名称
示例值: ebs-ssd
`VCIEnabled (bool)`: vke集群是否运行VCI
示例值: True
`ExternalConfig (Dict)`: 外部集群配置
`WESEndpoint (str)`: WES 地址
示例值: http://192.168.0.1:8002/ga4gh/wes/v1
`JupyterhubEndpoint (str)`: jupyterhub 地址
示例值: http://jupyterhub-hub:8081/jupyterhub
`ResourceScheduler (str)`: 外部资源调度程序
示例值: SGE
`Filesystem (str)`: 工作流计算引擎依赖的文件系统(tos, local)
示例值: tos
`ExecutionRootDir (str)`: 工作流计算引擎执行根路径, 当且仅当工作流计算引擎依赖的文件系统为 `local` 时会有
示例值: /root
`S3ProxyConfig (Dict)`: 文件系统存储的s3proxy代理信息
`Endpoint (str)`: 访问地址
示例值: http://192.168.0.3:8000
`Region (str)`: 区域
示例值: cn-beijing
`AccessKey (str)`: 访问s3proxy的AccessKey
示例值: AKxxxx
`SecretKey (str)`: 访问s3proxy的SecretKey
示例值: xxxxxx
`ForcePathStyle (bool)`: 是否强制使用path style, 还是使用virtual style
示例值: True
`SharedConfig (Dict)`: 共享集群配置,暂无具体配置信息
示例值: {}
`StoppedTime (int)`: 截止时间
示例值: 1673525239
`PageNumber (int)`: 页码
示例值: 1
`PageSize (int)`: 页长
示例值: 10
`TotalCount (int)`: 总数量
示例值: 10
"""
return self.__request('ListClusters', params)
def delete_cluster(self, params):
""" 删除集群
Args:
params (Dict):
`ID (str)`: 必选, 集群ID
示例值: ucxxxxxxxxxxxxxxxxxxx
Returns:
Dict: empty dictionary
"""
return self.__request('DeleteCluster', params)
def update_api_accesskey(self, params):
""" 创建或更新集群的API aksk
Args:
params (Dict):
`ClusterID (str)`: 必选, 集群ID
示例值: ucxxxxxxxxxxxxxxxxxxx
`AccessKeyID (str)`: 必选, 创建或更新的Access Key ID
示例值: AKxxxxxxxx
`SecretAccessKey (str)`: 必选, 创建或更新的Secret Access Key
示例值: xxxxxxxxxx
Returns:
Dict: empty dictionary
"""
return self.__request('UpdateAPIAccessKey', params)
def get_api_accesskey(self, params):
""" 获取集群配置的API aksk
Args:
params (Dict):
`ClusterID (str)`: 必选, 集群ID
示例值: ucxxxxxxxxxxxxxxxxxxx
Returns:
Dict:
`AccessKeyID (str)`: 已经配置的Access Key ID, 未配置则为空
"""
return self.__request('GetAPIAccessKey', params)
def create_data_model(self, params):
""" 创建数据模型
Args:
params (Dict):
`WorkspaceID (str)`: 必选, 工作空间 ID
示例值: wcxxxxxxxxxxxxxxxxxxx
`Name (str)`: 必选, 数据模型文件名
示例值: my_entity
`Headers (List[str])`: 必选, 表头列表
示例值: ["my_entity_id","aaa","bbb"]
`Rows (List[List[str]])`: 必选, 对象列表
示例值: [["your-sample-3-id","AAA","BBB"]]
Returns:
Dict:
`ID (str)`: 数据模型 ID
示例值: dcxxxxxxxxxxxxxxxxxxx
"""
return self.__request('CreateDataModel', params)
def list_data_models(self, params):
""" 查询实体数据模型列表
Args:
params (Dict):
`WorkspaceID (str)`: 必选, 数据模型所在的workspaceID
示例值: wcxxxxxxxxxxxxxxxxxxx
Returns:
Dict:
`TotalCount (int)`: 数据模型总数
示例值: 10
`Items (List[Dict])`: 列表项
`ID (str)`: 数据模型ID
示例值: dccc0ne5eig41ascop420
`Name (str)`: 数据模型文件名
示例值: test-datamodel
`RowCount (int)`: 数据模型行数
示例值: 100
`Type (str)`: 数据模型类型(normal、set、workspace)
示例值: normal
"""
return self.__request('ListDataModels', params)
def list_data_model_rows(self, params):
""" 分页查询实体数据模型的详细信息(行和列)
Args:
params (Dict):
`WorkspaceID (str)`: 必选, 数据模型所在的workspaceID
示例值: wcxxxxxxxxxxxxxxxxxxx
`ID (str)`: 必选, Datamodel ID
示例值: dcxxxxxxxxxxxxxxxxxxx
`PageNumber (int)`: 选填, 页码
示例值: 1
`PageSize (int)`: 选填, 页长
示例值: 10
`Filter (Dict)`: 选填, 筛选条件
`Keyword (str)`: 选填, 筛选数据查询
示例值: key
`InSetIDs (List[str])`: 选填, 集合表中的实体ID
示例值: ["dcxxxxxxxxxxxxxxxxxxx"]
`SortBy (str)`: 选填, 排序字段(默认为id)
示例值: CreateTime
`SortOrder (str)`: 选填, 排序顺序(Desc Asc)
示例值: Desc
Returns:
Dict:
`Headers (List[str])`: 表头列表
示例值: ["my_entity_id","aaa","bbb"]
`Rows (List[List[str]])`: 对象列表
示例值: [["your-sample-3-id","AAA","BBB"]]
`PageNumber (int)`: 分页页码
示例值: 1
`PageSize (int)`: 分页页长
示例值: 10
`TotalCount (int)`: 总条数
示例值: 100
"""
return self.__request('ListDataModelRows', params)
def delete_data_model_rows_and_headers(self, params):
""" 删除实体数据模型的具体行和列
Args:
params (Dict):
`WorkspaceID (str)`: 必选, 数据模型所在的workspaceID
示例值: wcxxxxxxxxxxxxxxxxxxx
`ID (str)`: 必选, Datamodel ID
示例值: dcxxxxxxxxxxxxxxxxxxx
`RowIDs (List[siring])`: 选填, 需要删除的数据模型行ID
示例值: ["0cafd453-e9fd-4147-bc39-0a16e3d4fedd"]
`Headers (List[str])`: 选填, 需要删除的数据模型列名
示例值: ["sample_id"]
Returns:
Dict: empty dictionary
"""
return self.__request('DeleteDataModelRowsAndHeaders', params)
def create_submission(self, params):
""" 投递工作流
Args:
params (Dict):
`WorkspaceID (str)`: 必选, 提交submussion的workspaceID
示例值: wcxxxxxxxxxxxxxxxxxxx
`WorkflowID (str)`: 必选, 提交submission所使用的workflow的ID
示例值: fcxxxxxxxxxxxxxxxxxxx
`Name (str)`: 必选, 投递名称
示例值: name
`Description (str)`: 选填, 投递描述
示例值: description
`DataModelID (str)`: 选填, 数据模型ID
示例值: dcxxxxxxxxxxxxxxxxxxx
`DataModelRowIDs (List[str])`: 选填, 数据模型行ID
示例值: ["0cafd453-e9fd-4147-bc39-0a16e3d4fedd"]
`Inputs (str)`: 必选, 输入配置,json序列化后的string
示例值: {"test.name1":"this.name1","test.name2":"this.name2","test.request":"this.requestFile"}
`Outputs (str)`: 必选, 输出配置,json序列化后的string
示例值: {"test.response1":"this.response1","test.response2":"this.response2"}
`ExposedOptions (Dict)`: 必选, 平台暴露的Workflow Options
`ReadFromCache (bool)`: 必选, 是否开启call-cache
示例值: True
`ExecutionRootDir (str)`: 必选, 工作流执行根路径,若为vke集群,则为s3:// + workspace所绑定的桶名,若为外部hpc集群,则为共享文件存储路径,如/share/data
示例值: s3://bioos-wcxxxxxxxxxxxxxxxxxxx
`ClusterID (str)`: 必选, 运行集群ID
示例值: ucxxxxxxxxxxxxxxxxxxx
Returns:
Dict:
`ID (str)`: Submission ID
示例值: scxxxxxxxxxxxxxxxxxxx
"""
return self.__request('CreateSubmission', params)
def list_submissions(self, params):
""" 查询工作流投递记录列表
Args:
params (Dict):
`WorkspaceID (str)`: 必选, submission所在的workspaceID
示例值: wcxxxxxxxxxxxxxxxxxxx
`Filter (Dict)`: 选填, 筛选条件
`WorkflowID (str)`: 选填, 根据工作流ID筛选
示例值: fcxxxxxxxxxxxxxxxxxxx
`Status (List[str])`: 选填, 根据状态筛选(Succeeded、Failed、Running、Cancelled、Cancelling)
示例值: ["Running","Cancelling"]
`ClusterID (str)`: 选填, 根据集群ID筛选
示例值: ucxxxxxxxxxxxxxxxxxxx
`Keyword (str)`: 选填, 根据名称筛选
示例值: key
`IDs (List[str])`: 选填, 根据submission ID筛选
示例值: ["scxxxxxxxxxxxxxxxxxxx"]
`PageNumber (int)`: 选填, 页码
示例值: 1
`PageSize (int)`: 选填, 页长
示例值: 10
Returns:
Dict:
`Items (List[Dict])`: Workflow 列表
`ID (str)`: 投递记录ID
示例值: scxxxxxxxxxxxxxxxxxxx
`Name (str)`: 投递记录名称
示例值: name
`Description (str)`: 投递记录描述
示例值: description
`Status (str)`: 投递记录状态(Succeeded、Failed、Running、Cancelled、Cancelling)
示例值: Running
`RunStatus (Dict)`: 工作流运行状态
`Count (int)`: 工作流运行统计
示例值: 120
`Succeeded (int)`: 运行成功的工作流运行总数
示例值: 90
`Failed (int)`: 运行失败的工作流运行总数
示例值: 5
`Running (int)`: 运行中的工作流运行总数
示例值: 5
`Pending (int)`: 启动中的工作流运行总数
示例值: 5
`Cancelling (int)`: 终止中的工作流运行总数
示例值: 5
`Cancelled (int)`: 已终止的工作流运行总数
示例值: 10
`StartTime(int)`: 起始时间
示例值: 1673525239
`FinishTime(int)`: 截止时间
示例值: 1673525239
`Duration(int)`: 分析耗时(单位为s)
示例值: 10
`WorkflowID (str)`: 工作流ID
示例值: fcxxxxxxxxxxxxxxxxxxx
`ClusterID (str)`: 集群ID
示例值: ucxxxxxxxxxxxxxxxxxxx
`ClusterType (str)`: 集群类型(volc-vke、external、shared)若集群不存在则为空
示例值: shared
`DataModelID (str)`: 数据实体ID
示例值: dcxxxxxxxxxxxxxxxxxxx
`Inputs (str)`: 输入配置, json序列化后的字符串
示例值: {"test.name1":"this.name1", "test.name2":"this.name2", "test.request":"this.requestFile"}
`Outputs (str)`: 输出配置, json序列化后的字符串
示例值: {"test.response1":"this.response1", "test.response2":"this.response2"}
`ExposeOptions (Dict)`: 平台暴露的Workflow Options
`ReadFromCache (bool)`: 是否开启读call-cache功能
示例值: False
`ExecutionRootDir (str)`: 工作流执行根路径
示例值: /root
`OwnerName (str)`: 创建者名称
示例值: name
`DataEntity (Dict)`: 数据实体统计
`ID (str)`: 数据实体ID
示例值: dcxxxxxxxxxxxxxxxxxxx
`Name (str)`: 数据实体名称
示例值: name
`RowIDs (List[str])`: 数据实体行IDs
示例值: ["1"]
`PageNumber (int)`: 页码
示例值: 1
`PageSize (int)`: 页长
示例值: 10
`TotalCount (int)`: 总数量
示例值: 10
"""
return self.__request('ListSubmissions', params)
def list_overview_submissions(self, params):
""" 获取全局投递列表
Args:
params (Dict):
`PageNumber (int)`: 选填, 分页页码
示例值: 1
`PageSize (int)`: 选填, 分页页长
示例值: 10
`SortBy (str)`: 选填, 按字段排序(OwnerName StartTime)
示例值: OwnerName
`SortOrder (str)`: 选填, 排序顺序
示例值: Desc
Returns:
Dict:
`Items (List[Dict])`: 投递记录列表
`ID (str)`: 投递记录 ID
示例值: scxxxxxxxxxxxxxxxxxxx
`Name (str)`: 投递记录名称
示例值: name
`WorkspaceID (str)`: 工作空间 ID
示例值: wcxxxxxxxxxxxxxxxxxxx
`WorkspaceName (str)`: 工作空间名称
示例值: name
`OwnerUserID (int)`: 创建者用户ID 仅子账号有值
示例值: 123456
`OwnerName (str)`: 创建者名称
示例值: name
`Description (str)`: 投递记录描述
示例值: description
`Status (str)`: 投递记录状态 Succeeded,Failed,Running,Cancelled,Cancelling
示例值: Succeeded
`StartTime (int)`: 起始时间
示例值: 1673525239
`Duration (int)`: 分析耗时(单位为s)
示例值: 10
`WorkflowID (str)`: 工作流 ID
示例值: fcxxxxxxxxxxxxxxxxxxx
`PageNumber (int)`: 分页页码
示例值: 1
`PageSize (int)`: 分页页长
示例值: 10
`TotalCount (int)`: 总条数
示例值: 100
"""
return self.__request('ListOverviewSubmissions', params)
def delete_submission(self, params):
""" 删除工作流投递记录
Args:
params (Dict):
`ID (str)`: 必选, 投递记录 ID
示例值: scxxxxxxxxxxxxxxxxxxx
`WorkspaceID (str)`: 必选, 工作空间 ID
示例值: wcxxxxxxxxxxxxxxxxxxx
Returns:
Dict: empty dictionary
"""
return self.__request('DeleteSubmission', params)
def cancel_submission(self, params):
""" 终止工作流投递记录
Args:
params (Dict):
`ID (str)`: 必选, 投递记录 ID
示例值: scxxxxxxxxxxxxxxxxxxx
`WorkspaceID (str)`: 必选, 工作空间 ID
示例值: wcxxxxxxxxxxxxxxxxxxx
Returns:
Dict: empty dictionary
"""
return self.__request('CancelSubmission', params)
def list_runs(self, params):
""" 查询工作流运行列表
Args:
params (Dict):
`WorkspaceID (str)`: 必选, submission所在的workspaceID
示例值: wcxxxxxxxxxxxxxxxxxxx
`SubmissionID (str)`: 必选, submission的ID
示例值: scxxxxxxxxxxxxxxxxxxx
`Filter (Dict)`: 选填, 筛选条件
`Keyword (str)`: 选填, 运行记录关键字
示例值: key
`IDs (List[str])`: 选填, 运行记录ID列表
示例值: ["rcxxxxxxxxxxxxxxxxxxx"]
`Status (List[str])`: 选填, 根据状态筛选(Pending、Running、Succeeded、Failed、Cancelling、Cancelled)
示例值: ["Pending","Running"]
`PageNumber (int)`: 选填, 页码
示例值: 1
`PageSize (int)`: 选填, 页长
示例值: 10
Returns:
Dict:
`Items (List[Dict])`: Run列表
`ID (str)`: 运行记录ID
示例值: rcxxxxxxxxxxxxxxxxxxx
`DataEntityRowID (str)`: 数据实体 RowID
示例值: 1
`Status (str)`: 投递记录状态(Succeeded、Failed、Running、Pending、Cancelling、Cancelled)
示例值: Running
`StartTime (int)`: 起始时间
示例值: 1673525239
`FinishTime (int)`: 截止时间
示例值: 1673525239
`Duration (int)`: 分析耗时(单位为s)
示例值: 10
`SubmissionID (str)`: 投递记录ID
示例值: scxxxxxxxxxxxxxxxxxxx
`EngineRunID (str)`: 工作流引擎内运行记录 ID
示例值: 05693535-dcf4-404f-8d18-2d3cac29916b
`Inputs (str)`: 运行记录输入参数,json 序列化后的 string
示例值: {"test.name1":"world","test.name2":"hello","test.request":"s3://vci-dev/jxc-test/aaa.txt"}
`Outpus (str)`: 运行记录输出参数,json 序列化后的 string
示例值: {"test.resp":"abc",
"test.response1":"s3://bioos-dev-wcb1e3v5eig4635iurevg/analysis/scb8gbtleig4f4jqjbtlg/test/d9ea2df5-b8d8-4603-9f62-496229e922c9/call-step21/execution/resp.txt",
"test.response2":"s3://bioos-dev-wcb1e3v5eig4635iurevg/analysis/scb8gbtleig4f4jqjbtlg/test/d9ea2df5-b8d8-4603-9f62-496229e922c9/call-step22/execution/resp.txt"}
`TaskStatus (Dict)`: 工作流运行详情状态统计
`Count (int)`: 任务运行统计
示例值: 120
`Succeeded (int)`: 运行成功的工作流运行总数
示例值: 90
`Failed (int)`: 运行失败的工作流运行总数
示例值: 5
`Running (int)`: 运行中的工作流运行总数
示例值: 5
`Queued (int)`: 排队中的工作流运行总数
示例值: 5
`Initializing (int)`: 启动中的工作流运行总数
示例值: 5
`Cancelled (int)`: 已终止的工作流运行总数
示例值: 10
`Log (str)`: 运行记录日志存储路径
示例值: s3://bioos-wcxxxxxxxxxxxxxxxxxxx/analysis/scxxxxxxxxxxxxxxxxxxx/workflow.941846fb-158d-4d49-82e0-f2f39372e9e3.log
`Message (str)`: 运行记录错误详情
示例值: error message
`PageNumber (int)`: 页码
示例值: 1
`PageSize (int)`: 页长
示例值: 10
`TotalCount (int)`: 总数量
示例值: 10
"""
return self.__request('ListRuns', params)
def cancel_run(self, params):
""" 取消工作流运行
Args:
params (Dict):
`ID (str)`: 必选, 运行记录 ID
示例值:
`WorkspaceID (str)`: 必选, 工作空间ID
示例值:
Returns:
Dict: empty dictionary
"""
return self.__request('CancelRun', params)
def list_tasks(self, params):
""" 查询工作流的task任务列表
Args:
params (Dict):
`WorkspaceID (str)`: 必选, submission所在的workspaceID
示例值: wcxxxxxxxxxxxxxxxxxxx
`RunID (str)`: 必选, 运行记录ID
示例值: rcxxxxxxxxxxxxxxxxxxx
`PageNumber (int)`: 选填, 页码
示例值: 1
`PageSize (int)`: 选填, 页长
示例值: 10
Returns:
Dict:
`Items (List[Dict])`: Task列表
`Name (str)`: 任务名称
示例值: name
`RunID (str)`: 运行记录 ID
示例值: rcxxxxxxxxxxxxxxxxxxx
`Status (str)`: 任务状态,Succeeded -> 分析成功, Failed -> 分析失败, Running -> 分析中, Queued -> 排队中, Initializing -> 启动中, Cancelled -> 已终止
示例值: Succeeded
`StartTime (int)`: 起始时间
示例值: 1687143483
`FinishTime (int)`: 截止时间
示例值: 1687143668
`Duration (int)`: 分析耗时(单位为s)
示例值: 185
`Log (str)`: 任务日志存储路径
示例值: s3://bioos-wcxxxxxxxxxxxxxxxxxxx/analysis/scxxxxxxxxxxxxxxxxxxx/workflow.941846fb-158d-4d49-82e0-f2f39372e9e3.log
`Stdout (str)`: 任务输出存储路径
示例值: s3://bioos-wcxxxxxxxxxxxxxxxxxxx/analysis/scxxxxxxxxxxxxxxxxxxx/melt/cd28ec5b-75df-4981-a7f5-90f1deba8a94/call-step1/shard-0/execution/stdout
`Stderr (str)`: 任务错误存储路径
示例值: s3://bioos-wcxxxxxxxxxxxxxxxxxxx/analysis/scxxxxxxxxxxxxxxxxxxx/melt/cd28ec5b-75df-4981-a7f5-90f1deba8a94/call-step1/shard-0/execution/stderr
`ExecuteDuration (int)`: 实际运行分析耗时(单位为s)
示例值: 0
`JobName (str)`: job名称
示例值: task-xxxxxxxx-ex-00
`resourceClaimed (Dict)`: 资源申领
`CPUCore (int)`: CPU 核数
示例值: 1
`MemoryGiB (int)`: 内存大小,单位GiB
示例值: 2
`StorageGiB (int)`: 存储大小,单位GiB
示例值: 2
`GPUGiB (int)`: GPU显存大小,单位GiB
示例值: 2
`resourceUsed (Dict)`: 资源消耗
`CPUCore (int)`: CPU 核数
示例值: 1
`MemoryGiB (int)`: 内存大小,单位GiB
示例值: 2
`StorageGiB (int)`: 存储大小,单位GiB
示例值: 2
`GPUGiB (int)`: GPU显存大小,单位GiB
示例值: 2
`PageNumber (int)`: 页码
示例值: 1
`PageSize (int)`: 页长
示例值: 10
`TotalCount (int)`: 总数量
示例值: 10
"""
return self.__request('ListTasks', params)
def create_workflow(self, params):
""" 此接口为异步接口,当此接口返回成功时,会返回导入的workflowID信息,此时并不代表workflow导入成功,
需要调用ListWorkflows接口查看workflow导入情况,其返回的参数WorkflowImportStatus如果为Succeeded则为导入成功。
Args:
params (Dict):
`WorkspaceID (str)`: 必选, 工作空间 ID
示例值: wcxxxxxxxxxxxxxxxxxxx
`Name (str)`: 必选, 工作流名称
示例值: name
`Description (str)`: 选填, 工作流描述
示例值: description
`Language (str)`: 必选, 语言类型, 包括 WDL/CWL/Nextflow
示例值: WDL
`Source (str)`: 选填, 来源, http(s) 开头的地址, 为 file 来源类型时不填
示例值: https://aaa.bbb.git
`Tag (str)`: 选填, tag, 为 dockstore 来源类型时对应 version, 为 file 来源类型时不填
示例值: v1.0.0
`Token (str)`: 选填, git token, 为 dockstore/file 来源类型时不填
示例值:
`MainWorkflowPath (str)`: 选填, 主工作流文件路径, 为 dockstore 来源时不填
示例值: main.wdl
`SourceType (str)`: 必选, 来源类型, 包括 git dockstore file
示例值: git
`Content (bytes)`: 选填, 文件导入的二进制 zip 包 base64 编码
示例值:
Returns:
Dict:
`ID (str)`: WorkflowID
示例值: wcxxxxxxxxxxxxxxxxxxx
"""
return self.__request('CreateWorkflow', params)
def list_workflows(self, params):
""" 查询符合条件的workflows列表
Args:
params (Dict):
`WorkspaceID (str)`: 必选, workflow所在的workspaceID
示例值: wcxxxxxxxxxxxxxxxxxxx
`PageNumber (int)`: 选填, 页码
示例值: 1
`PageSize (int)`: 选填, 页长
示例值: 10
`Filter (Dict)`: 选填, 筛选条件
`Keyword (str)`: 选填, 根据名称筛选
示例值: key
`IDs (List[str])`: 选填, ID列表
示例值: ["wcxxxxxxxxxxxxxxxxxxx"]
`SortBy (str)`: 选填, 排序字段(Name CreateTime)
示例值: CreateTime
`SortOrder (str)`: 选填, 排序顺序(Desc Asc)
示例值: Desc
Returns:
Dict:
`Items (List[Dict])`: Workflow 列表
`ID (str)`: 工作流 ID
示例值: fcxxxxxxxxxxxxxxxxxxx
`Name (str)`: 工作流名称
示例值: name
`Description (str)`: 工作流描述
示例值: description
`CreateTime (int)`: 创建时间
示例值: 1673525239
`UpdateTime (int)`: 更新时间
示例值: 1673525239
`Language (str)`: 语言类型
示例值: WDL
`Source (str)`: 来源, http(s) 开头的地址
示例值: https://aaa.bbb.git
`Tag (str)`: tag
示例值: master
`Token (str)`: token
示例值:
`MainWorkflowPath (str)`: 主工作流文件路径
示例值: main.wdl
`Status (Dict)`: workflow导入状态
`Phase (str)`: workflow导入状态(Importing、Succeeded、Failed)
示例值: Succeeded
`Message (str)`: 导入失败原因,Phase为Failed时有效
示例值:
`Inputs (Dict)`: wdl的intput信息
`Name (str)`: 参数名称
示例值: test
`Type (str)`: 参数类型
示例值: String
`Optional (bool)`: 是否是可选参数
示例值: True
`Default (str)`: 默认值
示例值: test
`Outputs (Dict)`: wdl的output信息
`Name (str)`: 参数名称
示例值: test
`Type (str)`: 参数类型
示例值: String
`Optional (bool)`: 是否是可选参数
示例值: True
`Default (str)`: 默认值
示例值: test
`OwnerName (str)`: 创建者名称
示例值: name
`Graph (str)`: wdl graph
示例值:
`SourceType (str)`: 来源类型, 包括git dockstore
示例值: git
`PageNumber (int)`: 页码
示例值: 1
`PageSize (int)`: 页长
示例值: 10
`TotalCount (int)`: 总数量
示例值: 10
"""
return self.__request('ListWorkflows', params)
def update_workflow(self, params):
""" 该接口的使用方式与CreateWorkflow类型一样,都需要ListWorkflows接口查看状态
Args:
params (Dict):
`WorkspaceID (str)`: 必选, 工作空间 ID
示例值: wcxxxxxxxxxxxxxxxxxxx
`ID (str)`: 必选, 工作流 ID
示例值: fcxxxxxxxxxxxxxxxxxxx
`Name (str)`: 必选, 工作流名称
示例值: name
`Description (str)`: 选填, 工作流描述
示例值: description
`Source (str)`: 选填, 来源, http(s) 开头的地址, 为 file 来源类型时不填
示例值: https://aaa.bbb.git
`Tag (str)`: 选填, tag, 为 dockstore 来源类型时对应 version, 为 file 来源类型时不填
示例值: master
`Token (str)`: 选填, token, 为 dockstore/file 来源类型时不填
示例值:
`MainWorkflowPath (str)`: 选填, 主工作流文件路径, 为 dockstore 来源时不填
示例值: main.wdl
`Content (bytes)`: 选填, 文件导入的二进制 zip 包
示例值:
Returns:
Dict: empty dictionary
"""
return self.__request('UpdateWorkflow', params)
def delete_workflow(self, params):
""" 删除工作流
Args:
params (Dict):
`WorkspaceID (str)`: 必选, 工作空间 ID
示例值: wcxxxxxxxxxxxxxxxxxxx
`ID (str)`: 必选, 工作流 ID
示例值: fcxxxxxxxxxxxxxxxxxxx
Returns:
Dict: empty dictionary
"""
return self.__request('DeleteWorkflow', params)
def get_notebook_edit_info(self, params):
""" 启动Notebook Server并获取访问链接
Args:
params (Dict):
`WorkspaceID (str)`: 必选, 工作空间 ID
示例值: wcxxxxxxxxxxxxxxxxxxx
`Name (str)`: 选填, Notebook文件名 对于Dashboard则为__dashboard__
示例值: __dashboard__
Returns:
Dict:
`URL (str)`: jupyter访问链接
示例值: https://bioos-xxx.xxx.volcanicengine.com/notebook-01/user/ucxxxxxxxxxxxxxxxxxxx/wcxxxxxxxxxxxxxxxxxxx
"""
return self.__request('GetNotebookEditInfo', params)
def get_notebook_server_settings(self, params):
""" 获取当前Notebook Server配置信息
Args:
params (Dict):
`WorkspaceID (str)`: 必选, 工作空间 ID
示例值: wcxxxxxxxxxxxxxxxxxxx
Returns:
Dict:
`ResourceSize (str)`: 资源规格,如果从未配置过返回"" small,middle,large等
示例值: small
`ImageID (str)`: 镜像 ID,如果从未配置过返回""
示例值: 1
`TempImageName (str)`: 临时镜像名,如果从未配置过返回""
示例值: jupyter/minimal-notebook
`MountTOSEnabled (bool)`: 是否挂载TOS桶
示例值: True
`StorageCapacity (int)`: 存储容量(byte)
示例值: 107374182400
"""
return self.__request('GetNotebookServerSettings', params)
def get_notebook_server_stat(self, params):
""" 获取当前Notebook Server状态
Args:
params (Dict):
`WorkspaceID (str)`: 必选, 工作空间 ID
示例值: wcxxxxxxxxxxxxxxxxxxx
Returns:
Dict:
`Status (str)`: Server当前状态, spawn,ready,stop,absent
示例值: spawn
`TOSAccessible (str)`: TOS挂载生效状态 取值有 OK ClusterNotSupport AccessKeyNotSet AccessKeyInvalid CSINotInstall CSINotReady BucketNotExist
示例值: OK
"""
return self.__request('GetNotebookServerStat', params)
def list_notebook_server_images(self, params):
""" 列举Notebook Server镜像信息
Args:
params (Dict):
`ImageIDs (List[str])`: 选填, 镜像ID,不传则返回所有
示例值: ["1","2"]
`Source (str)`: 选填, 镜像来源 official,customized
示例值: official
`Status (str)`: 选填, 镜像审核状态 pending,approve,reject
示例值: pending
`DisplayName (str)`: 选填, 镜像名
示例值:
`ImageName (str)`: 选填, 镜像地址
示例值: python:latest
`OwnByMe (bool)`: 选填, 是否仅查看当前登录者所建镜像
示例值: True
`PageNumber (int)`: 分页页码
示例值: 1
`PageSize (int)`: 分页页长
示例值: 10
`SortBy (str)`: 按字段排序, 取值有CreateTime ID
示例值: CreateTime
`SortOrder (str)`: 排序顺序, Desc Asc
示例值: Desc
Returns:
Dict:
`Images (List[Dict])`: 镜像信息列表
`ImageID (str)`: 镜像 ID
示例值: 1
`DisplayName (str)`: 镜像名称(展示用)
示例值: minimal-notebook
`ImageName (str)`: 镜像名称
示例值: jupyter/minimal-notebook
`Description (str)`: 描述
示例值: description
`AccountID (int)`: 创建者主账户ID
示例值: 0
`UserID (int)`: 创建者租户ID
示例值: 0
`Status (str)`: 镜像状态 pending,approve,building,failure
示例值: pending
`Source (str)`: 镜像来源 official,building
示例值: official
`Packages (Dict)`: 工具包
`Pip (Dict[str, str])`: pip工具包
示例值: {"numpy":"1.22.2"}
`Conda (Dict[str, str])`: conda工具包
示例值: {"numpy":"1.22.2"}
`R (Dict[str, str])`: R工具包
示例值: {"ggplot2":"3.4.4"}
`APT (Dict[str, str])`: apt工具包
示例值: {"python3-dev":"1.22.2"}
`BasicEnv (List[str])`: 基础环境参数,如python3.8等
示例值: ["Python3.9.10", "R 4.1.2", "Julia 1.7.2"]
`ImageVersion (str)`: 镜像版本
示例值: 1.0.0
`CreateTime (int)`: 创建时间
示例值: 1680554098
`UpdateTime (int)`: 更新时间
示例值: 1680554098
"""
return self.__request('ListNotebookServerImages', params)
def list_notebook_server_resource_opts(self, params):
""" 列举Notebook Server可用资源配置
Args:
params (Dict): empty dictionary
Returns:
Dict:
`ResourceSize (List[Dict])`: 资源规格
`ResourceSize (str)`: 资源规格枚举 small,middle,large等
示例值: small
`Cpu (int)`: 资源规格内容 cpu内核数(个)
示例值: 2
`Memory (int)`: 资源规格内容 memory大小(byte)
示例值: 8589934592
"""
return self.__request('ListNotebookServerResourceOpts', params)
def stop_notebook_server(self, params):
""" 即时暂停当前Notebook Server
Args:
params (Dict):
`WorkspaceID (str)`: 必选, 工作空间 ID
示例值: wcxxxxxxxxxxxxxxxxxxx
Returns:
Dict: empty dictionary
"""
return self.__request('StopNotebookServer', params)
def update_notebook_server_settings(self, params):
""" 更新Notebook Server配置并异步暂停当前Notebook Server
Args:
params (Dict):
`WorkspaceID (str)`: 必选, 工作空间 ID
示例值: wcxxxxxxxxxxxxxxxxxxx
`ResourceSize (str)`: 选填, 资源规格,没变化则不传 small,middle,large
示例值: small
`ImageID (str)`: 选填, 镜像 ID,没变化则不传,与临时镜像名字端互斥
示例值: 1
`MountTOSEnabled (bool)`: 选填, 是否挂载TOS桶,没变化则不传
示例值: False
`TempImageName (str)`: 选填, 临时镜像名,没变化则不传,与镜像ID字段互斥
示例值: jupyter/minimal-notebook
Returns:
Dict: empty dictionary
"""
return self.__request('UpdateNotebookServerSettings', params)
def create_notebook_server_image(self, params):
""" 创建Notebook Server镜像
Args:
params (Dict):
`BaseImage (str)`: 必选, 基础镜像。仅building镜像需要
示例值: python:latest
`ImageName (str)`: 必选, 镜像名称
示例值: custom:v1.0.0
`DisplayName (str)`: 必选, 镜像名称(展示用)
示例值: custom
`Description (str)`: 选填, 镜像描述
示例值: description
`BuildScript (str)`: 选填, 构建镜像中需要执行的shell脚本内容
示例值:
`Source (str)`: 必选, 镜像来源, 取值为building
示例值: building
`Packages (Dict)`: 必选, 工具包
`Pip (Dict[str, str])`: 选填, pip工具包
示例值: {"numpy":"1.22.2"}
`Conda (Dict[str, str])`: 选填, conda工具包
示例值: {"numpy":"1.22.2"}
`R (Dict[str, str])`: 选填, R工具包
示例值: {"ggplot2":"3.4.4"}
`APT (Dict[str, str])`: 选填, apt工具包
示例值: {"python3-dev":"1.22.2"}
`BasicEnv (List[str])`: 选填, 基础环境参数,如python3.8等
示例值: ["Python3.9.10", "R 4.1.2", "Julia 1.7.2"]
`ImageVersion (str)`: 必选, 镜像版本
示例值: 1.0.0
"""
return self.__request('CreateNotebookServerImage', params)
def list_notebook_servers(self, params):
""" 获取全局Notebook Server列表
Args:
params (Dict):
`PageNumber (int)`: 选填, 分页页码
示例值: 1
`PageSize (int)`: 选填, 分页页长
示例值: 10
`Filter (Dict)`: 选填, 筛选条件
`Status (List[str])`: 选填, 筛选状态(spawn,ready,stop,absent)
示例值: spawn
`WorkspaceID (str)`: 选填, 工作空间 ID
示例值: wcxxxxxxxxxxxxxxxxxxx
`UserID (int)`: 选填, 创建者用户ID 查主账号时则填0
示例值: 123456
`SortBy (str)`: 选填, 按字段排序(OwnerName StartTime StorageCapacity LastActivityTime)
示例值: OwnerName
`SortOrder (str)`: 选填, 排序顺序
示例值: Desc
Returns:
Dict:
List[Dict]: Items, 列表
`Name (str)`: 名称
示例值: name
`WorkspaceID (str)`: 工作空间 ID
示例值: wcxxxxxxxxxxxxxxxxxxx
`WorkspaceName (str)`: 工作空间名称
示例值: name
`UserID (int)`: 创建者用户ID 主账号则为空
示例值: 123456
`OwnerName (str)`: 创建者名称
示例值: ownerName
`StorageCapacity (int)`: 存储容量(byte)
示例值: 107374182400
`Status (str)`: Server当前状态(spawn,ready,stop,absent)
示例值: spawn
`LastActivityTime (int)`: 最近活跃时间
示例值: 1691493675
`StartTime (int)`: 创建时间
示例值: 1691493674
`Duration (int)`: 使用时长(单位为s)
示例值: 1
`TotalCount (int)`: 总条数
示例值: 10
"""
return self.__request('ListNotebookServers', params)
def delete_notebook_server(self, params):
""" 删除当成Notebook Server
Args:
params (Dict):
`WorkspaceID (str)`: 必选, 工作空间ID
示例值: wcxxxxxxxxxxxxxxxxxxx
`UserID (int)`: 选填, 子用户ID,不传代表操作主账号
示例值: 123456
Returns:
Dict: empty dictionary
"""
return self.__request('DeleteNotebookServer', params)
def delete_notebook_server_settings(self, params):
""" 删除当成Notebook Server配置信息
Args:
params (Dict):
`WorkspaceID (str)`: 必选, 工作空间ID
示例值: wcxxxxxxxxxxxxxxxxxxx
Returns:
Dict: empty dictionary
"""
return self.__request('DeleteNotebookServerSettings', params)
def get_notebook_server_extra_packages(self, params):
""" 获取当前Notebook Server安装的额外包信息
Args:
params (Dict):
`WorkspaceID (str)`: 必选, 工作空间ID
示例值: wcxxxxxxxxxxxxxxxxxxx
Returns:
Dict:
`ExtraPackages (Dict)`: 额外工具包
`Pip (Dict[str, str])`: 选填, pip工具包
示例值: {"numpy":"1.22.2"}
`Conda (Dict[str, str])`: 选填, conda工具包
示例值: {"numpy":"1.22.2"}
`R (Dict[str, str])`: 选填, R工具包
示例值: {"ggplot2":"3.4.4"}
`APT (Dict[str, str])`: 选填, apt工具包
示例值: {"python3-dev":"1.22.2"}
"""
return self.__request('GetNotebookServerExtraPackages', params)
def list_data_files(self, params):
""" 获取数据集文件列表
Args:
params (Dict):
`DataSetID (str)`: 必选, 数据集ID
示例值: tcxxxxxxxxxxxxxxxxxxx
`PageNumber (int)`: 选填, 分页页码
示例值: 1
`PageSize (int)`: 选填, 分页页长
示例值: 10
`Filter (Dict)`: 选填, 筛选条件
`IDs (List[str])`: 选填, 数据集ID
示例值: ["tcxxxxxxxxxxxxxxxxxxx"]
`FileType (List[str])`: 选填, 文件类型列表
示例值: ["csv"]
`Keyword (str)`: 选填, 模糊匹配名称/描述
示例值: key
`SortBy (str)`: 选填, 按字段排序(Name CreateTime UpdateTime FileSize)
示例值: Name
`SortOrder (str)`: 选填, 排序顺序
示例值: Desc
Returns:
Dict:
`Items (List[Dict])`: 数据文件列表
`ID (str)`: 数据文件ID
示例值: ecxxxxxxxxxxxxxxxxxxx
`Name (str)`: 名称
示例值: name
`Description (str)`: 描述
示例值: description
`CreateTime (int)`: 创建时间
示例值: 1691493674
`UpdateTime (int)`: 更新时间
示例值: 1691493674
`FileType (str)`: 文件类型
示例值: csv
`FileSize (int)`: 文件大小(byte)
示例值: 123
`Source (str)`: 数据来源
示例值: https://cromwell.tos-xxx.volces.com/xxx.csv
`DRSURL (str)`: DRS 路径
示例值: drs://drs.xxx.xxx.com/ecxxxxxxxxxxxxxxxxxxx
`SampleRow (List[str])`: 数据文件样本信息
示例值: ["test", "测试", "2011-01-02", "2011-01-02", "txt", "", "s3://xxx/test.txt"]
`PageNumber (int)`: 分页页码
示例值: 1
`PageSize (int)`: 分页页长
示例值: 10
`TotalCount (int)`: 总条数
示例值: 100
"""
return self.__request('ListDataFiles', params)
def list_data_sets(self, params):
""" 获取数据集列表
Args:
params (Dict):
`PageNumber (int)`: 选填, 分页页码
示例值: 1
`PageSize (int)`: 选填, 分页页长
示例值: 10
`Filter (Dict)`: 选填, 过滤条件
`IDs (List[str])`: 选填, 数据集ID
示例值: ["tcxxxxxxxxxxxxxxxxxxx"]
`ProjectDataTypes (List[str])`: 选填, 项目数据类型列表 ID
示例值:
`Categories (List[str])`: 选填, 项目数据类型 ID 列表
示例值: ["示例数据"]
`Keyword (str)`: 选填, 模糊匹配名称/描述/所有者
示例值: key
`Owner (str)`: 选填, 模糊匹配数据所有者
示例值: ownerName
`Catalogues (List[str])`: 选填, 数据集编目列表 ID
示例值: 【“OMICSDATA”】
`SortBy (str)`: 选填, 按字段排序(Name CreateTime)
示例值: Name
`SortOrder (str)`: 选填, 排序顺序
示例值: Desc
Returns:
Dict:
`Items (List[Dict])`: 数据集列表
`ID (str)`: 数据集ID
示例值: tcxxxxxxxxxxxxxxxxxxx
`Name (str)`: 名称
示例值: name
`Description (str)`: 描述
示例值: desc
`CreateTime (int)`: 创建时间
示例值: 1691493674
`UpdateTime (int)`: 更新时间
示例值: 1691493674
`Owners (List[str])`: 数据集所有者
示例值: ["owner1", "owner2"]
`Admin (str)`: 数据集管理员
示例值: admin
`Category (str)`: 领域 ID 列表
示例值: 示例数据
`Labels (List[str])`: 标签 ID 列表
示例值: ["demo"]
`DocURL (str)`: 帮助文档链接
示例值: https://console.volcengine.com/bioos/region:bioos+cn-beijing/public-workspace/wcxxxxxxxxxxxxxxxxxxx/dashboard
`Email (str)`: email
示例值: bioos@xxx.xxx
`Licence (str)`: 许可/使用条款
示例值: MIT
`ProjectDataTypes (List[str])`: 项目数据类型列表 ID
示例值:
`SampleScope (str)`: 样本范围
示例值: 111
`ExternalLink (str)`: 外部链接
示例值: https://bytedance.feishu.cn/docx/Mcxxxxxxxxxxxxxxxxxxxx
`ExternalLinkDescription (str)`: 外部链接描述
示例值: description
`ExampleTutorial (str)`: 示例教程
示例值: 111
`Tools (str)`: 工具/应用
示例值: https://bytedance.feishu.cn/docx/Mcxxxxxxxxxxxxxxxxxxxx
`Publications (List[Dict])`: 出版物
`ID (str)`: 出版物 ID
示例值: pcxxxxxxxxxxxxxxxxxxx
`Name (str)`: 名称
示例值: name
`AccessURL (str)`: 在线地址
示例值: http://222.com
`Authors (List[str])`: 作者
示例值: ["author1", "author2"]
`Quotation (str)`: 引文
示例值:
`SampleHeaders (List[str])`: 数据文件样本信息表头
示例值: ["文件名", "文件描述", "建立时间", "更新时间", "文件类型", "数据来源", "数据路径"]
`CustomHeaderOrders (Dict[str, str])`: 数据文件自定义表头顺序
示例值:
`CollectedBy (str)`: 被收藏的数据项目 ID
示例值: ocxxxxxxxxxxxxxxxxxxx
`Catalogue (str)`: 数据集编目 ID
示例值: OMICSDATA
`PageNumber (int)`: 分页页码
示例值: 1
`PageSize (int)`: 分页页长
示例值: 10
`TotalCount (int)`: 总条数
示例值: 100
"""
return self.__request('ListDataSets', params)
def create_data_set(self, params):
""" 创建数据集
Args:
params (Dict):
`Name (str)`: 必选, 名称
示例值: name
`Description (str)`: 必选, 描述
示例值: description
`CreateTime (int)`: 必选, 创建时间
示例值: 1691493674
`UpdateTime (int)`: 必选, 更新时间
示例值: 1691493674
`Owners (List[str])`: 必选, 用户
示例值: ["user1", "user2"]
`Category (str)`: 必选, 领域 ID 列表
示例值: 示例数据
`Labels (List[str])`: 选填, 标签 ID 列表
示例值: ["demo"]
`DocURL (str)`: 必选, 帮助文档链接
示例值: https://console.volcengine.com/bioos/region:bioos+cn-beijing/public-workspace/wcxxxxxxxxxxxxxxxxxxx/dashboard
`Email (str)`: 必选, email
示例值: bioos
`Licence (str)`: 选填, 许可/使用条款
示例值: MIT
`ProjectDataTypes (List[str])`: 选填, 项目数据类型列表
示例值:
`SampleScope (str)`: 选填, 样本范围
示例值: 111
`ExternalLink (str)`: 选填, 外部链接
示例值: https://bytedance.feishu.cn/docx/Mcxxxxxxxxxxxxxxxxxxxx
`ExternalLinkDescription (str)`: 选填, 外部链接描述
示例值: description
`ExampleTutorial (str)`: 选填, 示例教程
示例值:
`Tools (str)`: 选填, 工具/应用
示例值:
`Catalogue (str)`: 必选, 数据集编目 ID
示例值: OMICSDATA
`Publications (List[Dict])`: 选填, 出版物
`Name (str)`: 必选, 名称
示例值: name
`AccessURL (str)`: 选填, 在线地址
示例值: http://222.com
`Authors (List[str})`: 选填, 作者
示例值: ["author1", "author2"]
`Quotation (str)`: 选填, 引文
示例值:
`DataFilesAccessURL (str)`: 选填, 数据文件 csv 下载路径
示例值:
`DataFileSamplesAccessURL (str)`: 选填, 数据文件样本信息 csv 下载路径
示例值:
`DataFileAccessMethodURL (str)`: 选填, 数据文件访问方法文件下载路径
示例值:
Returns:
Dict:
`ID (str)`: 数据集ID
示例值: tcxxxxxxxxxxxxxxxxxxx
"""
return self.__request('CreateDataSet', params)
def delete_data_set(self, params):
""" 删除数据集
Args:
params (Dict):
`ID (str)`: 必选, 数据集 ID
示例值: tcxxxxxxxxxxxxxxxxxxx
Returns:
Dict: empty dictionary
"""
return self.__request('DeleteDataSet', params)
def get_trs_workflow_info(self, params):
""" 查询trs工作流信息
Args:
params (Dict):
`TRSServer (str)`: 必选, trs Server地址
示例值: https://dockstore.org
`ID (str)`: 必选, trs ID
示例值: #workflow/github.com/aaa/bbb/ccc
Returns:
Dict:
`Name (str)`: trs工作流名称
示例值: name
`Description (str)`: trs工作流描述
示例值: description
`VersionsInfo (List[Dict])`: trs工作流具体版本信息
`Name (str)`: 版本名称
示例值: master
`Language (str)`: 语言类型, 包括 WDL/CWL/Nextflow
示例值: WDL
"""
return self.__request('GetTRSWorkflowInfo', params)
def __request(self, action, params):
res = self.json(action, dict(), json.dumps(params))
if res == '':
raise Exception('empty response')
res_json = json.loads(res)
if 'Result' not in res_json.keys():
return res_json
return res_json['Result']