API Client represents a low level interface for Service API. All API operation can be performed using this.
abeja.services.
APIClient
(credential: typing.Union[dict, NoneType] = None, timeout: typing.Union[int, NoneType] = None, max_retry_count: typing.Union[int, NoneType] = None)¶A low-level client for Service API
from abeja.services import APIClient
api_client = APIClient()
create_service
(organization_id: str, deployment_id: str, version_id: str, instance_number: int = 1, min_instance_number: typing.Union[int, NoneType] = None, max_instance_number: typing.Union[int, NoneType] = None, enable_autoscale: typing.Union[bool, NoneType] = None, instance_type: str = 'cpu-0.25', environment: typing.Union[typing.Dict[str, str], NoneType] = None, model_id: typing.Union[str, NoneType] = None) → dict¶create a service
API reference: POST /organizations/{organization_id}/deployments/{deployment_id}/services
organization_id = "1111111111111"
deployment_id = "9999999999999"
version_id = "ver-abc3333333333333"
model_id = "3333333333333"
environment = {
"EXAMPLE_ENV": "abc"
}
response = api_client.create_service(
organization_id, deployment_id, version_id,
model_id=model_id, environment=environment)
{
"service_id": "ser-abc1111111111111",
"deployment_id": "9999999999999",
"models": {
"alias": "3333333333333"
},
"model_version": "0.0.1",
"model_version_id": "ver-abc1111111111111",
"status": "IN_PROGRESS",
"instance_number": 1,
"min_instance_number": 1,
"max_instance_number": 2,
"enable_autoscale": true,
"instance_type": "cpu-0.25",
"metrics_url": "https://p.datadoghq.com/sb/aaaaaaaaa-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"user_env_vars": {
"EXAMPLE_ENV": "abc"
},
"created_at": "2018-06-05T13:07:49.602076Z",
"modified_at": "2018-06-05T13:07:50.771671Z",
}
delete_service
(organization_id: str, deployment_id: str, service_id: str) → dict¶delete a service
API reference: DELETE /organizations/<organization_id>/deployments/<deployment_id>/services/<service_id>
response = api_client.delete_service(organization_id='1111111111111',
deployment_id='9999999999999', service_id='ser-abc1111111111111')
{
"message": "ser-abc1111111111111 deleted"
}
get_service
(organization_id: str, deployment_id: str, service_id: str) → dict¶get a service
API reference: GET /organizations/<organization_id>/deployments/<deployment_id>/services/<service_id>
response = api_client.get_service(organization_id='1111111111111', deployment_id='9999999999999',
service_id='ser-abc1111111111111')
{
"service_id": "ser-abc1111111111111",
"deployment_id": "9999999999999",
"models": {
"alias": "3333333333333"
},
"model_version": "0.0.1",
"model_version_id": "ver-abc1111111111111",
"status": "READY",
"instance_number": 1,
"instance_type": "cpu-0.25",
"metrics_url": "https://p.datadoghq.com/sb/aaaaaaaaa-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"user_env_vars": {
"EXAMPLE_ENV": "abc"
},
"created_at": "2018-06-05T12:34:33.485329Z",
"modified_at": "2018-06-05T12:34:34.568985Z"
}
get_service_recent_logs
(organization_id: str, deployment_id: str, service_id: str, next_forward_token: typing.Union[str, NoneType] = None, next_backward_token: typing.Union[str, NoneType] = None, start_time: typing.Union[datetime.datetime, NoneType] = None, end_time: typing.Union[datetime.datetime, NoneType] = None) → dict¶get recent logs of the service
API reference: GET /organizations/<organization_id>/deployments/<deployment_id>/services/<service_id>/recentlogs
organization_id = "1234567890123"
deployment_id = "1111111111111"
service_id = "ser-3333333333333333"
response = api_client.get_service_recent_logs(organization_id, deployment_id, service_id)
Response Syntax:
{
"events": [
{
"message": "...",
"timestamp": "2018-01-01T00:00:00.000000Z"
}
],
"next_backward_token": "...",
"next_forward_token": "..."
}
Response Structure:
get_services
(organization_id: str, deployment_id: str) → dict¶Get services entries
API reference: GET /organizations/<organization_id>/deployments/<deployment_id>/services
response = api_client.list_services(organization_id='1111111111111', deployment_id='9999999999999')
{
"entries": [
{
"service_id": "ser-abc1111111111111",
"deployment_id": "9999999999999",
"models": {
"alias": "3333333333333"
},
"model_version": "0.0.1",
"model_version_id": "ver-abc1111111111111",
"status": "READY",
"instance_number": 1,
"instance_type": "cpu-0.25",
"metrics_url": "https://p.datadoghq.com/sb/aaaaaaaaa-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"user_env_vars": {
"EXAMPLE_ENV": "abc"
},
"created_at": "2018-06-05T12:34:33.485329Z",
"modified_at": "2018-06-05T12:34:34.568985Z"
}
]
}
request_service
(organization_id: str, deployment_id: str, service_id: str, data: typing.Union[NoneType, str, bytes, typing.IO] = None, json: typing.Union[typing.Any, NoneType] = None, content_type: typing.Union[str, NoneType] = None) → requests.models.Response¶post request to the service
API reference: POST https://<organization_id>.api.abeja.io/deployments/<deployment_id>/services/<service_id>
organization_id = "1234567890123"
deployment_id = "1111111111111"
service_id = "ser-3333333333333333"
# send json data
json_data = {
"foo": "bar",
"baz": "qux"
}
response = api_client.request_service(organization_id, deployment_id, service_id, json=json_data)
# send image data
with open('./foo.png', 'rb') as f:
response = api_client.request_service(organization_id, deployment_id, service_id, data=f, content_type='image/png')
start_service
(organization_id: str, deployment_id: str, service_id: str) → dict¶start a service
API reference: POST /organizations/<organization_id>/deployments/<deployment_id>/services/<service_id>/start
response = api_client.stop_service(organization_id='1111111111111',
deployment_id='9999999999999', service_id='ser-abc1111111111111')
{
"message": "ser-abc1111111111111 started"
}
stop_service
(organization_id: str, deployment_id: str, service_id: str) → dict¶stop a service
API reference: POST /organizations/<organization_id>/deployments/<deployment_id>/services/<service_id>/stop
response = api_client.stop_service(organization_id='1111111111111',
deployment_id='9999999999999', service_id='ser-abc1111111111111')
{
"message": "ser-abc1111111111111 stopped"
}
update_service
(organization_id: str, deployment_id: str, service_id: str, payload: typing.Union[dict, NoneType] = None) → dict¶update a service
API reference: PATCH /organizations/<organization_id>/deployments/<deployment_id>/services/<service_id>
payload = {
"instance_number": 4,
"min_instance_number": 2,
"max_instance_number": 6,
"enable_autoscale": 'true'
}
response = api_client.update_service(organization_id='1111111111111', deployment_id='9999999999999',
service_id='ser-abc1111111111111', payload=payload)
{
"deployment_id": "1408443944117",
"instance_number": 1,
"instance_type": "cpu-1",
"metrics_url": "https://p.datadoghq.com/sb/xxxxxxxxx-yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
"models": {
"alias": "3333333333333"
},
"model_version": "1.0.0",
"model_version_id": "ver-1cfab7455c8e43a7",
"service_id": "ser-abc1111111111111",
"status": "IN_PROGRESS",
"record_channel_id": "5678901234567",
"user_env_vars": {
"EXAMPLE_ENV2": "exmaple2"
},
"merged_env_vars": {
"EXAMPLE_ENV": "deployment_example",
"EXAMPLE_ENV2": "exmaple2"
},
"service_process_type": "multi",
"modified_at": "2018-01-01T00:00:00.102289Z",
"created_at": "2018-01-01T00:00:00.102289Z"
}