Skip to content

Commit c0e0625

Browse files
feat(deployments): add logs to python package (#382)
This hijacks some old crufty log machinery to enable log streaming from the new Deployments V3. This exposes two new methods, one generator and one that just dumps a buttload of logs in your lap. By way of example: ``` >>> from gradient import gradient_deployments >>> import json >>> >>> >>> logs = gradient_deployments.get_deployment_logs( ... deployment_id='6753a6cc-393a-478d-bc29-9e8828a0aa2f', ... limit=5, ... api_key='<REDACTED>') >>> print(json.dumps(logs, indent=4)) [ [ 2, "", "2021-12-13T21:41:39.711Z" ], [ 3, " Welcome to Streamlit. Check out our demo in your browser.", "2021-12-13T21:41:39.711Z" ], [ 4, "", "2021-12-13T21:41:39.711Z" ], [ 5, " Network URL: http://10.42.40.230:8501", "2021-12-13T21:41:39.711Z" ], [ 6, " External URL: http://172.83.13.4:8501", "2021-12-13T21:41:39.711Z" ] ] >>> >>> logs = gradient_deployments.yield_deployment_logs( ... deployment_id='6753a6cc-393a-478d-bc29-9e8828a0aa2f', ... limit=5, ... api_key='<REDACTED>') >>> next(logs) LogRow(line=2, message='', timestamp='2021-12-13T21:41:39.711Z') ```
1 parent 0daa2c7 commit c0e0625

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

gradient/api_sdk/repositories/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@
4141
list_deployments,
4242
delete_deployment,
4343
get_deployment,
44-
update_deployment
44+
update_deployment,
45+
get_deployment_logs,
46+
yield_deployment_logs
4547
)
4648
from .experiments import (
4749
ListExperiments,

gradient/api_sdk/repositories/gradient_deployments.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from gql import gql
22
from ..graphql import graphql_client
3+
from .common import ListLogs
4+
from .. import logger as sdk_logger
35

46

57
def create_deployment(name, project_id, spec, cluster_id=None, api_key=None):
@@ -215,3 +217,29 @@ def delete_deployment(id, api_key=None):
215217
}
216218
}
217219
return client.execute(query, variable_values=params)['deleteDeployment']
220+
221+
222+
# my disappointment is immeasurable
223+
# and my day is ruined
224+
class ListDeploymentV3Logs(ListLogs):
225+
def _get_request_params(self, kwargs):
226+
params = {
227+
'gradientDeploymentId': kwargs['id'],
228+
'line': kwargs['line'],
229+
'limit': kwargs['limit']
230+
}
231+
return params
232+
233+
234+
def get_deployment_logs(deployment_id, line=1, limit=10000, api_key=None):
235+
DeploymentLogs = ListDeploymentV3Logs(
236+
api_key=api_key,
237+
logger=sdk_logger.MuteLogger())
238+
return DeploymentLogs.list(id=deployment_id, line=line, limit=limit)
239+
240+
241+
def yield_deployment_logs(deployment_id, line=1, limit=10000, api_key=None):
242+
DeploymentLogs = ListDeploymentV3Logs(
243+
api_key=api_key,
244+
logger=sdk_logger.MuteLogger())
245+
return DeploymentLogs.yield_logs(id=deployment_id, line=line, limit=limit)

0 commit comments

Comments
 (0)