Skip to content

Commit 75dbf6d

Browse files
icywang86ruijnclt
authored andcommitted
Check if SecondaryStatusTransitions for previous DescribeTrainingJob call (aws#325)
1 parent 47c9469 commit 75dbf6d

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/sagemaker/utils.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,12 @@ def secondary_training_status_changed(current_job_description, prev_job_descript
146146
if current_secondary_status_transitions is None or len(current_secondary_status_transitions) == 0:
147147
return False
148148

149-
last_message = prev_job_description['SecondaryStatusTransitions'][-1]['StatusMessage']\
150-
if prev_job_description is not None else ''
149+
prev_job_secondary_status_transitions = prev_job_description.get('SecondaryStatusTransitions') \
150+
if prev_job_description is not None else None
151+
152+
last_message = prev_job_secondary_status_transitions[-1]['StatusMessage'] \
153+
if prev_job_secondary_status_transitions is not None and len(prev_job_secondary_status_transitions) > 0 else ''
154+
151155
message = current_job_description['SecondaryStatusTransitions'][-1]['StatusMessage']
152156

153157
return message != last_message

tests/unit/test_utils.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ def test_name_from_training_arn():
104104
TRAINING_JOB_DESCRIPTION_2 = {
105105
'SecondaryStatusTransitions': [{'StatusMessage': 'different message', 'Status': STATUS}]
106106
}
107+
107108
TRAINING_JOB_DESCRIPTION_EMPTY = {
108109
'SecondaryStatusTransitions': []
109110
}
@@ -119,6 +120,21 @@ def test_secondary_training_status_changed_false():
119120
assert changed is False
120121

121122

123+
def test_secondary_training_status_changed_prev_missing():
124+
changed = secondary_training_status_changed(TRAINING_JOB_DESCRIPTION_1, {})
125+
assert changed is True
126+
127+
128+
def test_secondary_training_status_changed_prev_none():
129+
changed = secondary_training_status_changed(TRAINING_JOB_DESCRIPTION_1, None)
130+
assert changed is True
131+
132+
133+
def test_secondary_training_status_changed_current_missing():
134+
changed = secondary_training_status_changed({}, TRAINING_JOB_DESCRIPTION_1)
135+
assert changed is False
136+
137+
122138
def test_secondary_training_status_changed_empty():
123139
changed = secondary_training_status_changed(TRAINING_JOB_DESCRIPTION_EMPTY, TRAINING_JOB_DESCRIPTION_1)
124140
assert changed is False

0 commit comments

Comments
 (0)