def get_jobflows_for_json(emr_conn, jobflow_ids=None, is_all=False): jobflows = [] if is_all: jobflows = emr_conn.describe_jobflows() elif jobflow_ids: jobflows = emr_conn.describe_jobflows(jobflow_ids=jobflow_ids) convert_local_datetime(jobflows) # FIXME: pass tzinfo res_jobflows = map(serialize_emr_obj, jobflows) return res_jobflows
def serialize_emr_obj(jobflow, attr_names=_SHOW_EMR_OBJECT_ATTRS): def serialize(attr_names, steps_or_args): return [serialize_emr_obj(attr, attr_names) for attr in steps_or_args] data = [] for name in attr_names: attr = getattr(jobflow, name, u"") if name == "steps": convert_local_datetime(attr) attr = serialize(_SHOW_EMR_STEPS_OBJECT_ATTRS, attr) elif name == "bootstrapactions": attr = serialize(_SHOW_EMR_BOOTSTRAPS_OBJECT_ATTRS, attr) elif name == "args": args = serialize(_SHOW_EMR_STEP_ARGS_OBJECT_ATTRS, attr) attr = u" ".join(map(itemgetter("value"), args)) data.append((name, attr)) return dict(data)