Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if self._job_descriptor:
items = providers_util.get_job_and_task_param(
self._job_descriptor.job_params,
self._job_descriptor.task_descriptors[0].task_params, field)
value = {item.name: item.value for item in items}
elif field == 'create-time':
ds = google_v2_operations.get_create_time(self._op)
value = google_base.parse_rfc3339_utc_string(ds)
elif field == 'start-time':
ds = google_v2_operations.get_start_time(self._op)
if ds:
value = google_base.parse_rfc3339_utc_string(ds)
elif field == 'end-time':
ds = google_v2_operations.get_end_time(self._op)
if ds:
value = google_base.parse_rfc3339_utc_string(ds)
elif field == 'status':
value = self._operation_status()
elif field == 'status-message':
msg, action = self._operation_status_message()
if msg.startswith('Execution failed:'):
# msg may look something like
# "Execution failed: action 2: pulling image..."
# Emit the actual message ("pulling image...")
msg = msg.split(': ', 2)[-1]
value = msg
elif field == 'status-detail':
msg, action = self._operation_status_message()
if action:
value = action.get('name') + ':\n' + msg
else:
value = msg
if msg.startswith('Execution failed:'):
# msg may look something like
# "Execution failed: action 2: pulling image..."
# Emit the actual message ("pulling image...")
msg = msg.split(': ', 2)[-1]
value = msg
elif field == 'status-detail':
msg, action = self._operation_status_message()
if action:
value = action.get('name') + ':\n' + msg
else:
value = msg
elif field == 'last-update':
last_update = google_v2_operations.get_last_update(self._op)
if last_update:
value = google_base.parse_rfc3339_utc_string(last_update)
elif field == 'provider':
return _PROVIDER_NAME
elif field == 'provider-attributes':
value = {}
# The VM instance name and zone can be found in the WorkerAssignedEvent.
# For a given operation, this may have occurred multiple times, so be
# sure to grab the most recent.
assigned_events = google_v2_operations.get_worker_assigned_events(
self._op)
if assigned_events:
details = assigned_events[0].get('details', {})
value['instance-name'] = details.get('instance')
value['zone'] = details.get('zone')
# The rest of the information comes from the request itself.
elif field == 'mounts':
value = None
elif field == 'create-time':
value = google_base.parse_rfc3339_utc_string(metadata['createTime'])
elif field == 'start-time':
# Look through the events list for all "start" events (only one expected).
start_events = [
e for e in metadata.get('events', []) if e['description'] == 'start'
]
# Get the startTime from the last "start" event.
if start_events:
value = google_base.parse_rfc3339_utc_string(
start_events[-1]['startTime'])
elif field == 'end-time':
if 'endTime' in metadata:
value = google_base.parse_rfc3339_utc_string(metadata['endTime'])
elif field == 'status':
value = self._operation_status()
elif field in ['status-message', 'status-detail']:
status, last_update = self._operation_status_message()
value = status
elif field == 'last-update':
status, last_update = self._operation_status_message()
value = last_update
elif field == 'provider':
return _PROVIDER_NAME
elif field == 'provider-attributes':
# Use soft getting of keys to address a race condition and to
# pull the null values found in jobs that fail prior to scheduling.
gce_data = metadata.get('runtimeMetadata', {}).get('computeEngine', {})
if 'machineType' in gce_data:
machine_type = gce_data.get('machineType').rpartition('/')[2]
]:
if self._job_descriptor:
value = {}
items = providers_util.get_job_and_task_param(
self._job_descriptor.job_params,
self._job_descriptor.task_descriptors[0].task_params, field)
value.update({item.name: item.value for item in items})
elif field == 'mounts':
if self._job_descriptor:
items = providers_util.get_job_and_task_param(
self._job_descriptor.job_params,
self._job_descriptor.task_descriptors[0].task_params, field)
value = {item.name: item.value for item in items}
elif field == 'create-time':
ds = google_v2_operations.get_create_time(self._op)
value = google_base.parse_rfc3339_utc_string(ds)
elif field == 'start-time':
ds = google_v2_operations.get_start_time(self._op)
if ds:
value = google_base.parse_rfc3339_utc_string(ds)
elif field == 'end-time':
ds = google_v2_operations.get_end_time(self._op)
if ds:
value = google_base.parse_rfc3339_utc_string(ds)
elif field == 'status':
value = self._operation_status()
elif field == 'status-message':
msg, action = self._operation_status_message()
if msg.startswith('Execution failed:'):
# msg may look something like
# "Execution failed: action 2: pulling image..."
# Emit the actual message ("pulling image...")
def _map(self, event):
"""Extract elements from an operation event and map to a named event."""
description = event.get('description', '')
start_time = google_base.parse_rfc3339_utc_string(
event.get('timestamp', ''))
for name, regex in _EVENT_REGEX_MAP.items():
match = regex.match(description)
if match:
return {'name': name, 'start-time': start_time}, match
return {'name': description, 'start-time': start_time}, None