Skip to content

Commit bee8cb8

Browse files
authored
Print secondary status with status message (aws#78)
1 parent aff5a2f commit bee8cb8

File tree

3 files changed

+23
-16
lines changed

3 files changed

+23
-16
lines changed

src/sagemaker/session.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -796,7 +796,7 @@ def logs_for_job(self, job_name, wait=False, poll=10): # noqa: C901 - suppress
796796
"""
797797

798798
description = self.sagemaker_client.describe_training_job(TrainingJobName=job_name)
799-
print(secondary_training_status_message(description, None))
799+
print(secondary_training_status_message(description, None), end='')
800800
instance_count = description['ResourceConfig']['InstanceCount']
801801
status = description['TrainingJobStatus']
802802

src/sagemaker/utils.py

+9-10
Original file line numberDiff line numberDiff line change
@@ -173,18 +173,17 @@ def secondary_training_status_message(job_description, prev_description):
173173
current_transitions = job_description['SecondaryStatusTransitions']
174174

175175
if len(current_transitions) == prev_transitions_num:
176-
transitions_to_print = current_transitions[-1:]
176+
return current_transitions[-1]['StatusMessage']
177177
else:
178178
transitions_to_print = current_transitions[prev_transitions_num - len(current_transitions):]
179-
180-
status_strs = []
181-
for transition in transitions_to_print:
182-
message = transition['StatusMessage']
183-
time_str = datetime.utcfromtimestamp(
184-
time.mktime(transition['StartTime'].timetuple())).strftime('%Y-%m-%d %H:%M:%S')
185-
status_strs.append('{} {}'.format(time_str, message))
186-
187-
return '\n'.join(status_strs)
179+
status_strs = []
180+
for transition in transitions_to_print:
181+
message = transition['StatusMessage']
182+
time_str = datetime.utcfromtimestamp(
183+
time.mktime(transition['StartTime'].timetuple())).strftime('%Y-%m-%d %H:%M:%S')
184+
status_strs.append('{} {} - {}'.format(time_str, transition['Status'], message))
185+
186+
return '\n'.join(status_strs)
188187

189188

190189
class DeferredError(object):

tests/unit/test_utils.py

+13-5
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,12 @@ def test_name_from_training_arn():
9797

9898

9999
MESSAGE = 'message'
100+
STATUS = 'status'
100101
TRAINING_JOB_DESCRIPTION_1 = {
101-
'SecondaryStatusTransitions': [{'StatusMessage': MESSAGE}]
102+
'SecondaryStatusTransitions': [{'StatusMessage': MESSAGE, 'Status': STATUS}]
102103
}
103104
TRAINING_JOB_DESCRIPTION_2 = {
104-
'SecondaryStatusTransitions': [{'StatusMessage': 'different message'}]
105+
'SecondaryStatusTransitions': [{'StatusMessage': 'different message', 'Status': STATUS}]
105106
}
106107
TRAINING_JOB_DESCRIPTION_EMPTY = {
107108
'SecondaryStatusTransitions': []
@@ -123,11 +124,18 @@ def test_secondary_training_status_changed_empty():
123124
assert changed is False
124125

125126

126-
def test_secondary_training_status_message():
127+
def test_secondary_training_status_message_status_changed():
127128
now = datetime.now()
128129
TRAINING_JOB_DESCRIPTION_1['SecondaryStatusTransitions'][-1]['StartTime'] = now
129-
expected = '{} {}'.format(
130+
expected = '{} {} - {}'.format(
130131
datetime.utcfromtimestamp(time.mktime(now.timetuple())).strftime('%Y-%m-%d %H:%M:%S'),
132+
STATUS,
131133
MESSAGE
132134
)
133-
assert secondary_training_status_message(TRAINING_JOB_DESCRIPTION_1, TRAINING_JOB_DESCRIPTION_2) == expected
135+
assert secondary_training_status_message(TRAINING_JOB_DESCRIPTION_1, TRAINING_JOB_DESCRIPTION_EMPTY) == expected
136+
137+
138+
def test_secondary_training_status_message_status_not_changed():
139+
now = datetime.now()
140+
TRAINING_JOB_DESCRIPTION_1['SecondaryStatusTransitions'][-1]['StartTime'] = now
141+
assert secondary_training_status_message(TRAINING_JOB_DESCRIPTION_1, TRAINING_JOB_DESCRIPTION_2) == MESSAGE

0 commit comments

Comments
 (0)