1.10.2 API文档
简介
Xiaomi Cloud-ML项目暴露API访问接口,可以通过API、SDK或命令行工具访问Xiaomi Cloud-ML服务的完整功能。
Train Job API
查看所有训练任务(GET /cloud_ml/v1/train)
URL参数格式:无。
Header格式:
Header名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
X-Xiaomi-Timestamp | string | 是 | 请求的时间戳 |
X-Xiaomi-Content-MD5 | string | 是 | POST请求内容的MD5 |
X-Xiaomi-Secret-Key-Id | string | 是 | 用户Access key |
Authorization | string | 是 | 请求的签名 |
POST数据格式:无。
输入格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | 参见下面 |
认证失败 | 401 | {"error": True, "message": "Unauthorized: signature is wrong"} |
拒绝执行 | 403 | {"error": True, "message": "xxx"} |
资源不存在 | 404 | {"error": True, "message": "Train job doesn't exist"} |
成功返回结果:
{
"data": [
{
"org_id": self.org_id,
"org_name": self.org_name,
"job_name": self.job_name,
"module_name": self.module_name,
"trainer_uri": self.trainer_uri,
"job_args": self.job_args,
"cpu_limit": self.cpu_limit,
"memory_limit": self.memory_limit,
"gpu_limit": self.gpu_limit,
"cluster_name": self.cluster_name,
"cluster_env_var": self.cluster_env_var,
"service_port": str(self.service_port),
"software": self.software,
"version": self.version,
"state": self.state,
"create_time": str(self.create_time),
"update_time": str(self.update_time),
"volume_type": self.volume_type,
"volume_path": self.volume_path,
"mount_path": self.mount_path,
"mount_read_only": str(self.mount_read_only),
"prepare_command": self.prepare_command,
"finish_command": self.finish_command
}
]
}
创建训练任务(POST /cloud_ml/v1/train)
URL参数格式:同上。
Header格式:同上。
POST数据样例:
{
"job_name": "linear1",
"module_name": "tainer.task",
"trainer_uri": "fds://cloud-ml-test/linear/trainer-1.0.0.tar.gz",
"job_args": "--max_epochs=200 --optimizer ftrl", (optional)
"cpu_limit": 0.5, (optional)
"memory_limit": "100M", (optional)
"gpu_limit": 0, (optional)
"ps_count": 2, (optional)
"worker_count": 3 (optional)
}
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | 参见下面 |
认证失败 | 401 | { "error": True, "message": "Unauthorized: signature is wrong"} |
拒绝请求 | 403 | {"error": True, "message": "Invalid argument: xxx."} |
资源不足 | 413 | {"error": True, "message": "xxx"} |
成功返回结果:
{
"org_id": self.org_id,
"org_name": self.org_name,
"job_name": self.job_name,
"module_name": self.module_name,
"trainer_uri": self.trainer_uri,
"job_args": self.job_args,
"cpu_limit": self.cpu_limit,
"memory_limit": self.memory_limit,
"gpu_limit": self.gpu_limit,
"cluster_name": self.cluster_name,
"cluster_env_var": self.cluster_env_var,
"service_port": str(self.service_port),
"software": self.software,
"version": self.version,
"state": self.state,
"create_time": str(self.create_time),
"update_time": str(self.update_time),
"volume_type": self.volume_type,
"volume_path": self.volume_path,
"mount_path": self.mount_path,
"mount_read_only": str(self.mount_read_only),
"prepare_command": self.prepare_command,
"finish_command": self.finish_command
}
查看训练任务详情(GET /cloud_ml/v1/train/$job_name)
URL参数格式:同上。
Header格式:同上。
POST数据格式:无。
返回格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | 参见下面 |
认证失败 | 401 | {"error": True, "message": “xxx”} |
拒绝请求 | 403 | {"error": True, "message": "Invalid argument: xxx."} |
资源不存在 | 404 | { "error": True, "message": "TrainJob doesn't exist"} |
成功返回结果:
{
"org_id": self.org_id,
"org_name": self.org_name,
"job_name": self.job_name,
"module_name": self.module_name,
"trainer_uri": self.trainer_uri,
"job_args": self.job_args,
"cpu_limit": self.cpu_limit,
"memory_limit": self.memory_limit,
"gpu_limit": self.gpu_limit,
"cluster_name": self.cluster_name,
"cluster_env_var": self.cluster_env_var,
"service_port": str(self.service_port),
"software": self.software,
"version": self.version,
"state": self.state,
"create_time": str(self.create_time),
"update_time": str(self.update_time),
"volume_type": self.volume_type,
"volume_path": self.volume_path,
"mount_path": self.mount_path,
"mount_read_only": str(self.mount_read_only),
"prepare_command": self.prepare_command,
"finish_command": self.finish_command
}
删除训练任务(DELETE /cloud_ml/v1/train/$job_name)
URL参数格式:同上。
Header格式:同上。
POST数据格式:无。
返回格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | {"message": "Successfully request to delete train job."} |
认证失败 | 401 | {"error": True, "message": "Unauthorized: signature is wrong"} |
拒绝请求 | 403 | {"error": True, "message": "Need org_id parameter"} |
资源不存在 | 404 | {"error": True, "message": "TrainJob doesn't exist"} |
内部错误 | 503 | { "error": True, "message": "Exception: xxx"} |
查看训练任务日志(GET /cloud_ml/v1/train/$job_name/logs)
URL参数格式:无。
Header格式:同上。
POST数据格式:无。
返回格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | {"logs": "xxx"} |
认证失败 | 401 | {"error": True, "message": "Unauthorized: signature is wrong"} |
拒绝执行 | 403 | {"error": True, "message": "xxx"} |
资源不存在 | 404 | {"error": True, "message": "Train job doesn't exist"} |
查看训练任务事件信息(GET /cloud_ml/v1/train/$job_name/events)
URL参数格式:无。
Header格式:同上。
POST数据格式:无。
输入格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | 参见下面 |
认证失败 | 401 | {"error": True, "message": "Unauthorized: signature is wrong"} |
拒绝执行 | 403 | {"error": True, "message": "xxx"} |
资源不存在 | 404 | {"error": True, "message": "Train job doesn't exist"} |
成功返回结果:
{
"data": [
{
'count': 1,
'firstTimestamp': '2017-02-20T06:16:39Z',
'lastTimestamp': '2017-02-20T06:16:39Z',
'source':
{
'component': 'default-scheduler'
},
'reason': 'Scheduled',
'involvedObject':
{
'kind': 'Pod',
'uid': '23cbc120-f734-11e6-9702-02601838e5ba',
'namespace': 'default',
'apiVersion': 'v1',
'resourceVersion': '419556',
'name': 'de-999-dev4-061636-4150936070-5tgzu'
},
'message': 'Successfully assigned de-999-dev4-061636-4150936070-5tgzu to minikubevm',
'type': 'Normal',
'metadata':
{
'uid': '23cd70e3-f734-11e6-9702-02601838e5ba',
'namespace': 'default',
'resourceVersion': '419563',
'creationTimestamp': '2017-02-20T06:16:39Z',
'selfLink': '/api/v1/namespaces/default/events/de-999-dev4-061636-4150936070-5tgzu.14a4ea4e5db78045',
'name': 'de-999-dev4-061636-4150936070-5tgzu.14a4ea4e5db78045'
}
}
]
}
Model Service API
查看所有模型服务(GET /cloud_ml/v1/model)
URL参数格式:无。
Header格式:同上。
POST数据格式:无。
返回格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | 参见下面 |
认证失败 | 401 | { "error": True, "message": "Unauthorized: signature is wrong"} |
拒绝请求 | 403 | {"error": True, "message": "Need org_id parameter."} |
资源不存在 | 404 | {"error": True, "message": "ModelService doesn't exist"} |
成功返回结果:
{
"data": [
{
"org_id": self.org_id,
"org_name": self.org_name,
"model_name": self.model_name,
"model_version": self.model_version,
"model_uri": self.model_uri,
"service_port": str(self.service_port),
"cpu_limit": self.cpu_limit,
"memory_limit": self.memory_limit,
"replicas": self.replicas
"state": self.state,
"create_time": str(self.create_time),
"update_time": str(self.update_time),
"address": settings.K8S_NODEPORT_SERVER + ":" + str(self.service_port),
"prepare_command": self.prepare_command,
"finish_command": self.finish_command
}
]
}
创建模型服务(POST /cloud_ml/v1/model)
URL参数格式:同上。
Header格式:同上。
POST数据样例:
{
"model_name": "linear1",
"model_version": "v1",
"model_uri": "fds://cloud-ml-test/linear_model1/",
"cpu_limit": 0.5, (optional)
"memory_limit": "100M", (optional)
"gpu_limit": 0, (optional)
"replicas": 3, (optional)
}
返回格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | 参见下面 |
认证失败 | 401 | { "error": True, "message": "Unauthorized: signature is wrong"} |
拒绝请求 | 403 | {"error": True, "message": "Invalid argument: xxx."} |
资源不足 | 413 | {"error": True, "message": "xxx"} |
内部错误 | 503 | {"error": True, "message": "Failed to create model or consume quota in XX"} |
成功返回结果:
{
"org_id": self.org_id,
"org_name": self.org_name,
"model_name": self.model_name,
"model_version": self.model_version,
"model_uri": self.model_uri,
"service_port": str(self.service_port),
"cpu_limit": self.cpu_limit,
"memory_limit": self.memory_limit,
"replicas": self.replicas
"state": self.state,
"create_time": str(self.create_time),
"update_time": str(self.update_time),
"address": settings.K8S_NODEPORT_SERVER + ":" + str(self.service_port),
"prepare_command": self.prepare_command,
"finish_command": self.finish_command
}
查看模型服务详情(GET /cloud_ml/v1/model/$model_name/$model_version)
URL参数格式:同上。
Header格式:同上。
POST数据格式:无。
返回格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | 参见下面 |
认证失败 | 401 | { "error": True, "message": "Unauthorized: signature is wrong"} |
拒绝请求 | 403 | { "error": True, "message": "Need org_id parameter."} |
资源不存在 | 404 | {"error": True, "message": "ModelService doesn't exist"} |
成功返回结果:
{
"org_id": self.org_id,
"org_name": self.org_name,
"model_name": self.model_name,
"model_version": self.model_version,
"model_uri": self.model_uri,
"service_port": str(self.service_port),
"cpu_limit": self.cpu_limit,
"memory_limit": self.memory_limit,
"replicas": self.replicas
"state": self.state,
"create_time": str(self.create_time),
"update_time": str(self.update_time),
"address": settings.K8S_NODEPORT_SERVER + ":" + str(self.service_port),
"prepare_command": self.prepare_command,
"finish_command": self.finish_command
}
删除模型服务(DELETE /cloud_ml/v1/model/$model_name/$model_version)
URL参数格式:同上。
Header格式:同上。
POST数据格式:无。
返回格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | {"message": "Successfully request to delete model service."} |
认证失败 | 401 | {"error": True, "message": "Unauthorized: signature is wrong"} |
拒绝请求 | 403 | {"error": True, "message": "Need org_id parameter."} |
资源不存在 | 404 | {"error": True, "message": "ModelService doesn't exist"} |
内部错误 | 503 | {"error": True, "message": "Fail to delete model service: xxx, exception: xxx"} |
查看模型服务日志(GET /cloud_ml/v1/model/$model_name/$model_version/logs)
URL参数格式:无。
Header格式:同上。
POST数据格式:无。
返回格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | {"data": [{}] |
认证失败 | 401 | {"error": True, "message": "Unauthorized: signature is wrong"} |
拒绝执行 | 403 | {"error": True, "message": "xxx"} |
资源不存在 | 404 | {"error": True, "message": "Train job doesn't exist"} |
查看模型服务事件信息(GET /cloud_ml/v1/model/$model_name/$model_version/events)
URL参数格式:无。
Header格式:同上。
POST数据格式:无。
输入格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | 参见下面 |
认证失败 | 401 | {"error": True, "message": "Unauthorized: signature is wrong"} |
拒绝执行 | 403 | {"error": True, "message": "xxx"} |
资源不存在 | 404 | {"error": True, "message": "Train job doesn't exist"} |
成功返回结果:
{
"data": [
{
'count': 1,
'firstTimestamp': '2017-02-20T06:16:39Z',
'lastTimestamp': '2017-02-20T06:16:39Z',
'source':
{
'component': 'default-scheduler'
},
'reason': 'Scheduled',
'involvedObject':
{
'kind': 'Pod',
'uid': '23cbc120-f734-11e6-9702-02601838e5ba',
'namespace': 'default',
'apiVersion': 'v1',
'resourceVersion': '419556',
'name': 'de-999-dev4-061636-4150936070-5tgzu'
},
'message': 'Successfully assigned de-999-dev4-061636-4150936070-5tgzu to minikubevm',
'type': 'Normal',
'metadata':
{
'uid': '23cd70e3-f734-11e6-9702-02601838e5ba',
'namespace': 'default',
'resourceVersion': '419563',
'creationTimestamp': '2017-02-20T06:16:39Z',
'selfLink': '/api/v1/namespaces/default/events/de-999-dev4-061636-4150936070-5tgzu.14a4ea4e5db78045',
'name': 'de-999-dev4-061636-4150936070-5tgzu.14a4ea4e5db78045'
}
}
]
}
Dev environment API
查看所有开发环境(GET /cloud_ml/v1/dev)
URL参数格式:无。
Header格式:同上。
POST数据格式:无。
输出格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | 参见下面 |
认证失败 | 401 | {"error": True, "message": "Unauthorized: signature is wrong"} |
拒绝请求 | 403 | {"error": True, "message": "Need org_id parameter."} |
资源不存在 | 404 | {"error": True, "message": "DevEnv doesn't exist"} |
成功返回结果:
{
"data": [
{
"org_id": self.org_id,
"org_name": self.org_name,
"dev_name": self.dev_name,
"password": self.password,
"notebook_port": str(self.notebook_port),
"ssh_port": str(self.ssh_port),
"tensorboard_port": str(self.tensorboard_port),
"cpu_limit": self.cpu_limit,
"memory_limit": self.memory_limit,
"state": self.state,
"create_time": str(self.create_time),
"update_time": str(self.update_time),
"address": settings.K8S_NODEPORT_SERVER + ":" + str(self.notebook_port)},
"ssh_address": settings.K8S_NODEPORT_SERVER + ":" + str(self.ssh_port)
}
]
}
创建开发环境(POST /cloud_ml/v1/dev)
URL参数格式:同上。
Header格式:同上。
POST数据样例:
{
"dev_name": "dev1",
"password": "password1",
"cpu_limit": 0.5, (optional)
"memory_limit": "100M", (optional)
"gpu_limit": 0, (optional)
}
返回格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | 参见下面 |
认证失败 | 401 | {"error": True, "message": "Unauthorized: signature is wrong"} |
拒绝请求 | 403 | {"error": True, "message": "xxxX"} |
资源不存在 | 404 | {"error": True, "message": "DevEnv doesn't exist"} |
资源不足 | 413 | {"error": True, "message": "Quota not enough"} |
内部错误 | 503 | {"error": True, "message": "Failed to create dev or consume quota in XX, Except: XX"} |
成功返回结果:
{
"org_id": self.org_id,
"org_name": self.org_name,
"dev_name": self.dev_name,
"password": self.password,
"notebook_port": str(self.notebook_port),
"ssh_port": str(self.ssh_port),
"tensorboard_port": str(self.tensorboard_port),
"cpu_limit": self.cpu_limit,
"memory_limit": self.memory_limit,
"state": self.state,
"create_time": str(self.create_time),
"update_time": str(self.update_time),
"address": settings.K8S_NODEPORT_SERVER + ":" + str(self.notebook_port),
"ssh_address": settings.K8S_NODEPORT_SERVER + ":" + str(self.ssh_port)
}
查看开发环境详情(GET /cloud_ml/v1/dev/$dev_name)
URL参数格式:同上。
Header格式:同上。
POST数据格式:无。
返回格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | 参见下面 |
认证失败 | 401 | {"error": True, "message": "Unauthorized: signature is wrong"} |
拒绝请求 | 403 | {"error": True, "message": "Need org_id parameter."} |
资源不存在 | 404 | {"error": True, "message": "DevEnv doesn't exist"} |
成功返回结果:
{
"org_id": self.org_id,
"org_name": self.org_name,
"dev_name": self.dev_name,
"password": self.password,
"notebook_port": str(self.notebook_port),
"ssh_port": str(self.ssh_port),
"tensorboard_port": str(self.tensorboard_port),
"cpu_limit": self.cpu_limit,
"memory_limit": self.memory_limit,
"state": self.state,
"create_time": str(self.create_time),
"update_time": str(self.update_time),
"address": settings.K8S_NODEPORT_SERVER + ":" + str(self.notebook_port),
"ssh_address": settings.K8S_NODEPORT_SERVER + ":" + str(self.ssh_port)
}
删除开发环境(DELETE /cloud_ml/v1/dev/$dev_name)
URL参数格式:同上。
Header格式:同上。
POST数据格式:无。
返回格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | {"message": "Successfully request to delete train job."} |
认证失败 | 401 | {"error": True, "message": "Unauthorized: signature is wrong"} |
拒绝请求 | 403 | {"error": True, "message": "Need org_id parameter."} |
资源不存在 | 404 | {"error": True, "message": "DevEnv doesn't exist"} |
内部错误 | 503 | { "error": True, "message": "Fail to delete dev env: xxx, exception: xxx"} |
查看开发环境事件信息(GET /cloud_ml/v1/dev/$dev_name/events)
URL参数格式:无。
Header格式:同上。
POST数据格式:无。
返回格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | 参考下面 |
认证失败 | 401 | { "error": True, "message": "Unauthorized: signature is wrong"} |
拒绝执行 | 403 | {"error": True, "message": "xxx"} |
资源不存在 | 404 | {"error": True, "message": "Train job doesn't exist"} |
成功返回结果:
{
"data": [
{
'count': 1,
'firstTimestamp': '2017-02-20T06:16:39Z',
'lastTimestamp': '2017-02-20T06:16:39Z',
'source':
{
'component': 'default-scheduler'
},
'reason': 'Scheduled',
'involvedObject':
{
'kind': 'Pod',
'uid': '23cbc120-f734-11e6-9702-02601838e5ba',
'namespace': 'default',
'apiVersion': 'v1',
'resourceVersion': '419556',
'name': 'de-999-dev4-061636-4150936070-5tgzu'
},
'message': 'Successfully assigned de-999-dev4-061636-4150936070-5tgzu to minikubevm',
'type': 'Normal',
'metadata':
{
'uid': '23cd70e3-f734-11e6-9702-02601838e5ba',
'namespace': 'default',
'resourceVersion': '419563',
'creationTimestamp': '2017-02-20T06:16:39Z',
'selfLink': '/api/v1/namespaces/default/events/de-999-dev4-061636-4150936070-5tgzu.14a4ea4e5db78045',
'name': 'de-999-dev4-061636-4150936070-5tgzu.14a4ea4e5db78045'
}
}
]
}
Tensorboard Service API
查看所有模型服务(GET /cloud_ml/v1/tensorboard)
URL参数格式:无。
Header格式:同上。
POST数据格式:无。
返回格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | 参见下面 |
认证失败 | 401 | { "error": True, "message": "Unauthorized: signature is wrong"} |
资源不存在 | 404 | {"error": True, "message": "Train job doesn't exist"} |
成功返回结果:
{
"data": [
{
"org_id": self.org_id,
"org_name": self.org_name,
"tensorboard_name": self.tensorboard_name,
"logdir": self.logdir,
"service_port": str(self.service_port),
"state": self.state,
"create_time": str(self.create_time),
"update_time": str(self.update_time),
"address": settings.K8S_NODEPORT_SERVER + ":" + str(self.service_port)
}
]
}
创建模型服务(POST /cloud_ml/v1/tensorboard)
URL参数格式:同上。
Header格式:同上。
POST数据样例:
{
"tensorboard_name": "mnist",
"logdir": "fds://cloudml-tensorboard-test/mnist_logs",
}
返回格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | 参见下面 |
认证失败 | 401 | { "error": True, "message": "Unauthorized: signature is wrong"} |
拒绝请求 | 403 | {"error": True, "message": "Invalid argument: xxx."} |
资源不存在 | 404 | {"error": True, "message": "TensorboardService doesn't exist"} |
资源不足 | 413 | {"error": True, "message": "Quota not enough"} |
内部错误 | 503 | { "error": True, "message": "Failed to create tensorboard or consume quota in XX"} |
成功返回结果:
{
"org_id": self.org_id,
"org_name": self.org_name,
"tensorboard_name": self.tensorboard_name,
"logdir": self.logdir,
"service_port": str(self.service_port),
"state": self.state,
"create_time": str(self.create_time),
"update_time": str(self.update_time),
"address": settings.K8S_NODEPORT_SERVER + ":" + str(self.service_port)
}
查看模型服务详情(GET /cloud_ml/v1/tensorboard/$tensorboard_name)
URL参数格式:同上。
Header格式:同上。
POST数据格式:无。
返回格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | 参见下面 |
认证失败 | 401 | { "error": True, "message": "Unauthorized: signature is wrong"} |
拒绝请求 | 403 | {"error": True, "message": "Need org_id parameter."} |
资源不存在 | 404 | { "error": True, "message": "TensorboardService doesn't exist"} |
成功返回结果:
{
"org_id": self.org_id,
"org_name": self.org_name,
"tensorboard_name": self.tensorboard_name,
"logdir": self.logdir,
"service_port": str(self.service_port),
"state": self.state,
"create_time": str(self.create_time),
"update_time": str(self.update_time),
"address": settings.K8S_NODEPORT_SERVER + ":" + str(self.service_port)
}
删除模型服务(DELETE /cloud_ml/v1/tensorboard/$tensorboard_name)
URL参数格式:同上。
Header格式:同上。
POST数据格式:无。
返回格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | {"message": "Successfully request to delete tensorboard service."} |
认证失败 | 401 | { "error": True, "message": "Unauthorized: signature is wrong"} |
资源不存在 | 404 | { "error": True, "message": "TensorboardService doesn't exist"} |
内部错误 | 503 | { "error": True, "message": "Fail to delete tensorboard service: xxx, exception: xxx"} |
查看Tensorboard服务事件信息(GET /cloud_ml/v1/tensorboard/$tensorboard_name/events)
URL参数格式:无。
Header格式:同上。
POST数据格式:无。
输入格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | 参见下面 |
认证失败 | 401 | { "error": True, "message": "Unauthorized: signature is wrong"} |
拒绝执行 | 403 | {"error": True, "message": "xxx"} |
资源不存在 | 404 | {"error": True, "message": "Train job doesn't exist"} |
成功返回结果:
{
"data": [
{
'count': 1,
'firstTimestamp': '2017-02-20T06:16:39Z',
'lastTimestamp': '2017-02-20T06:16:39Z',
'source':
{
'component': 'default-scheduler'
},
'reason': 'Scheduled',
'involvedObject':
{
'kind': 'Pod',
'uid': '23cbc120-f734-11e6-9702-02601838e5ba',
'namespace': 'default',
'apiVersion': 'v1',
'resourceVersion': '419556',
'name': 'de-999-dev4-061636-4150936070-5tgzu'
},
'message': 'Successfully assigned de-999-dev4-061636-4150936070-5tgzu to minikubevm',
'type': 'Normal',
'metadata':
{
'uid': '23cd70e3-f734-11e6-9702-02601838e5ba',
'namespace': 'default',
'resourceVersion': '419563',
'creationTimestamp': '2017-02-20T06:16:39Z',
'selfLink': '/api/v1/namespaces/default/events/de-999-dev4-061636-4150936070-5tgzu.14a4ea4e5db78045',
'name': 'de-999-dev4-061636-4150936070-5tgzu.14a4ea4e5db78045'
}
}
]
}
Quota API
查看所有Quota信息(GET /cloud_ml/v1/quota)
URL参数格式:同上。
Header格式:同上。
POST数据格式:无。
返回格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | 参见下面 |
认证失败 | 401 | { "error": True, "message": "Unauthorized: signature is wrong"} |
拒绝请求 | 403 | {"error": True, "message": "Need org_id parameter."} |
资源不存在 | 404 | { "error": True, "message": "Quota of 999 doesn't exist!"} |
请求错误 | 405 | { "error": True, "Support POST/GET only"} |
成功返回结果:
[
{
'train_memory_quota': '10G 0M 0.0K',
'train_memory_used': '2G 952M 0.0K',
'train_cpu_quota': '2000.0',
'train_cpu_used': '14.4',
'train_gpu_quota': '0',
'train_gpu_used': '0',
'model_memory_quota': '1000G 0M 0.0K',
'model_memory_used': '1G 500M 0.0K',
'model_cpu_quota': '10.0',
'model_cpu_used': '3.5'
'model_gpu_quota': '0',
'model_gpu_used': '0',
'dev_memory_quota': '10G 0M 0.0K',
'dev_memory_used': '900M 0.0K',
'dev_cpu_quota': '10.0',
'dev_cpu_used': '2.5',
'dev_gpu_quota': '0',
'dev_gpu_used': '0',
}
]
Framework API
查看所有Framework信息(GET /cloud_ml/v1/framework)
URL参数格式:同上。
Header格式:同上。
POST数据格式:无。
返回格式:
描述 | 返回码 | 返回数据 |
---|---|---|
成功 | 200 | 参见下面 |
请求错误 | 405 | { "error": True, "Support POST/GET only"} |
成功返回结果:
{
'torch': ['master'],
'mxnet': ['0.9.0'],
'keras': ['1.1.1'],
'xgboost': ['0.60.0'],
'cntk': ['2.0.0'],
'caffe': ['0.9.0'],
'tensorflow': ['0.11.0-xm1.0.0', '0.11.0'],
'theano': ['0.8.2'],
'scikitlearn': ['0.17.0']
}