Write empty string instead of None in text output
Not sure how I failed to notice this in testing, but for the cases where there is no data to output, the common layers pass up a None python object, and the text output was sometimes turning that into "None", whereas for CVS output, at least, just omitting any value in the field would be more appropriate. Oddly, the bulk data path did have logic for turning None into empty string, but not the status or history stats code paths. This makes it so all text output has the same transformation logic.
This commit is contained in:
parent
d603272d90
commit
74b0a98ffa
1 changed files with 11 additions and 6 deletions
|
@ -133,22 +133,27 @@ def loop_body(opts, gstate):
|
||||||
else:
|
else:
|
||||||
csv_data = [datetime.utcnow().replace(microsecond=0).isoformat()]
|
csv_data = [datetime.utcnow().replace(microsecond=0).isoformat()]
|
||||||
|
|
||||||
|
def xform(val):
|
||||||
|
return "" if val is None else str(val)
|
||||||
|
|
||||||
def cb_data_add_item(name, val, category):
|
def cb_data_add_item(name, val, category):
|
||||||
if opts.verbose:
|
if opts.verbose:
|
||||||
csv_data.append("{0:22} {1}".format(VERBOSE_FIELD_MAP.get(name, name) + ":", val))
|
csv_data.append("{0:22} {1}".format(
|
||||||
|
VERBOSE_FIELD_MAP.get(name, name) + ":", xform(val)))
|
||||||
else:
|
else:
|
||||||
# special case for get_status failure: this will be the lone item added
|
# special case for get_status failure: this will be the lone item added
|
||||||
if name == "state" and val == "DISH_UNREACHABLE":
|
if name == "state" and val == "DISH_UNREACHABLE":
|
||||||
csv_data.extend(["", "", "", val])
|
csv_data.extend(["", "", "", val])
|
||||||
else:
|
else:
|
||||||
csv_data.append(str(val))
|
csv_data.append(xform(val))
|
||||||
|
|
||||||
def cb_data_add_sequence(name, val, category, start):
|
def cb_data_add_sequence(name, val, category, start):
|
||||||
if opts.verbose:
|
if opts.verbose:
|
||||||
csv_data.append("{0:22} {1}".format(
|
csv_data.append("{0:22} {1}".format(
|
||||||
VERBOSE_FIELD_MAP.get(name, name) + ":", ", ".join(str(subval) for subval in val)))
|
VERBOSE_FIELD_MAP.get(name, name) + ":",
|
||||||
|
", ".join(xform(subval) for subval in val)))
|
||||||
else:
|
else:
|
||||||
csv_data.extend(str(subval) for subval in val)
|
csv_data.extend(xform(subval) for subval in val)
|
||||||
|
|
||||||
def cb_add_bulk(bulk, count, timestamp, counter):
|
def cb_add_bulk(bulk, count, timestamp, counter):
|
||||||
if opts.verbose:
|
if opts.verbose:
|
||||||
|
@ -156,14 +161,14 @@ def loop_body(opts, gstate):
|
||||||
datetime.utcfromtimestamp(timestamp).isoformat(),
|
datetime.utcfromtimestamp(timestamp).isoformat(),
|
||||||
datetime.utcfromtimestamp(timestamp + count).isoformat()))
|
datetime.utcfromtimestamp(timestamp + count).isoformat()))
|
||||||
for key, val in bulk.items():
|
for key, val in bulk.items():
|
||||||
print("{0:22} {1}".format(key + ":", ", ".join(str(subval) for subval in val)))
|
print("{0:22} {1}".format(key + ":", ", ".join(xform(subval) for subval in val)))
|
||||||
if opts.loop_interval > 0.0:
|
if opts.loop_interval > 0.0:
|
||||||
print()
|
print()
|
||||||
else:
|
else:
|
||||||
for i in range(count):
|
for i in range(count):
|
||||||
timestamp += 1
|
timestamp += 1
|
||||||
fields = [datetime.utcfromtimestamp(timestamp).isoformat()]
|
fields = [datetime.utcfromtimestamp(timestamp).isoformat()]
|
||||||
fields.extend(["" if val[i] is None else str(val[i]) for val in bulk.values()])
|
fields.extend([xform(val[i]) for val in bulk.values()])
|
||||||
print(",".join(fields))
|
print(",".join(fields))
|
||||||
|
|
||||||
rc = dish_common.get_data(opts,
|
rc = dish_common.get_data(opts,
|
||||||
|
|
Loading…
Reference in a new issue