in source/tools/iot-dr-shadow-cmp.py [0:0]
def compare_shadow(i, c_iot_s, thing_name, shadow_payload):
global NUM_SHADOWS_COMPARED, NUM_SHADOWS_NOTSYNCED, NUM_ERRORS
try:
logger.info('i: {} thing_name: {} shadow_payload: {}'.format(i, thing_name, shadow_payload))
NUM_SHADOWS_COMPARED += 1
shadow_payload_secondary = {}
retries = 5
wait = 2
n = 1
while not shadow_payload_secondary and n <= retries:
logger.info('n: {}: get_shadow for thing_name: {}'.format(n, thing_name))
n += 1
shadow_payload_secondary = get_shadow(i, c_iot_s, thing_name)
if not shadow_payload_secondary:
retry_in = wait*n
logger.info('n: {} thing_name: {}: no shadow payload, retrying in {} secs.'.format(n, thing_name, retry_in))
time.sleep(retry_in)
if not shadow_payload_secondary:
logger.error('replication: thing_name: {}: shadow not replicated to secondary region'.format(thing_name))
NUM_SHADOWS_NOTSYNCED += 1
return
logger.info('i: {} thing_name: {} shadow_payload: {} shadow_payload_secondary: {}'.format(i, thing_name, shadow_payload, shadow_payload_secondary))
errors = []
temperature = ""
temperature_secondary = ""
if 'temperature' in shadow_payload['state']['reported']:
temperature = shadow_payload['state']['reported']['temperature']
else:
errors.append('thing_name: {} temperature not in shadow_payload'.format(thing_name))
if 'temperature' in shadow_payload_secondary['state']['reported']:
temperature_secondary = shadow_payload_secondary['state']['reported']['temperature']
else:
errors.append('thing_name: {}: temperature not in shadow_payload_secondary'.format(thing_name))
if errors:
logger.error('replication: {}'.format(errors))
return
logger.info('temperature: {} temperature_secondary: {}'.format(temperature, temperature_secondary))
if temperature != temperature_secondary:
logger.error('replication: thing_name: {} shadows missmatch: temperature: {} temperature_secondary: {}'.format(thing_name, temperature, temperature_secondary))
return
logger.info('i: {} thing_name: {} shadows match: temperature: {} temperature_secondary: {}'.format(i, thing_name, temperature, temperature_secondary))
except Exception as e:
logger.error('{}'.format(e))