Skip to content

Commit dcec854

Browse files
committed
Add action type to lineage object
1 parent 217e8c8 commit dcec854

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

src/sagemaker/lineage/query.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,11 @@ def __init__(
8383
self._session = sagemaker_session
8484

8585
def to_lineage_object(self):
86-
"""Convert the ``Vertex`` object to its corresponding ``Artifact`` or ``Context`` object."""
86+
"""Convert the ``Vertex`` object to its corresponding Artifact, Action, Context object."""
8787
from sagemaker.lineage.artifact import Artifact, ModelArtifact
8888
from sagemaker.lineage.context import Context, EndpointContext
8989
from sagemaker.lineage.artifact import DatasetArtifact
90+
from sagemaker.lineage.action import Action
9091

9192
if self.lineage_entity == LineageEntityEnum.CONTEXT.value:
9293
resource_name = get_resource_name_from_arn(self.arn)
@@ -103,6 +104,9 @@ def to_lineage_object(self):
103104
return DatasetArtifact.load(artifact_arn=self.arn, sagemaker_session=self._session)
104105
return Artifact.load(artifact_arn=self.arn, sagemaker_session=self._session)
105106

107+
if self.lineage_entity == LineageEntityEnum.ACTION.value:
108+
return Action.load(action_name=self.arn.split("/")[1], sagemaker_session=self._session)
109+
106110
raise ValueError("Vertex cannot be converted to a lineage object.")
107111

108112

tests/unit/sagemaker/lineage/test_query.py

+30-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from __future__ import absolute_import
1414
from sagemaker.lineage.artifact import DatasetArtifact, ModelArtifact, Artifact
1515
from sagemaker.lineage.context import EndpointContext, Context
16+
from sagemaker.lineage.action import Action
1617
from sagemaker.lineage.query import LineageEntityEnum, LineageSourceEnum, Vertex, LineageQuery
1718
import pytest
1819

@@ -240,10 +241,38 @@ def test_vertex_to_object_artifact(sagemaker_session):
240241
assert isinstance(artifact, Artifact)
241242

242243

244+
def test_vertex_to_object_action(sagemaker_session):
245+
vertex = Vertex(
246+
arn="arn:aws:sagemaker:us-west-2:0123456789012:action/cp-m5-20210424t041405868z-1619237657-1-aws-endpoint",
247+
lineage_entity=LineageEntityEnum.ACTION.value,
248+
lineage_source="A",
249+
sagemaker_session=sagemaker_session,
250+
)
251+
252+
sagemaker_session.sagemaker_client.describe_action.return_value = {
253+
"ActionName": "cp-m5-20210424t041405868z-1619237657-1-aws-endpoint",
254+
"Source": {
255+
"SourceUri": "246618743249.dkr.ecr.us-west-2.amazonaws.com/sagemaker-scikit-learn:0.23-1-cpu-py3",
256+
"SourceTypes": [],
257+
},
258+
"ActionType": "A",
259+
"Properties": {},
260+
"CreationTime": 1608224704.149,
261+
"CreatedBy": {},
262+
"LastModifiedTime": 1608224704.149,
263+
"LastModifiedBy": {},
264+
}
265+
266+
action = vertex.to_lineage_object()
267+
268+
assert action.action_name == "cp-m5-20210424t041405868z-1619237657-1-aws-endpoint"
269+
assert isinstance(action, Action)
270+
271+
243272
def test_vertex_to_object_unconvertable(sagemaker_session):
244273
vertex = Vertex(
245274
arn="arn:aws:sagemaker:us-west-2:0123456789012:artifact/e66eef7f19c05e75284089183491bd4f",
246-
lineage_entity=LineageEntityEnum.ACTION.value,
275+
lineage_entity=LineageEntityEnum.TRIAL_COMPONENT.value,
247276
lineage_source=LineageSourceEnum.TENSORBOARD.value,
248277
sagemaker_session=sagemaker_session,
249278
)

0 commit comments

Comments
 (0)