Untitled
unknown
plain_text
2 years ago
2.3 kB
9
Indexable
def update_polling_counts_for_batch(aggregated_values, timestamp):
client = boto3.client('dynamodb', region_name='us-east-1')
table_name = os.getenv("MEGLO_DEVICE_HEALTH_TABLE_NAME", default=None)
polling_type = os.getenv("LAMBDA_TYPE", default=None)
current_month_attributes = __get_current_month_ddb_attributes()
polling_attribute = current_month_attributes["POLLING_COUNT"]
err_attribute = current_month_attributes["POLLING_ERROR"]
conn_err_attribute = current_month_attributes["CONNECTION_ERROR"]
# These are all Counter type
aggregated_polling_count = aggregated_values["POLLING_COUNT"]
aggregated_polling_errors = aggregated_values["POLLING_ERROR"]
aggregated_connection_errors = aggregated_values["CONNECTION_ERROR"]
data_centers = aggregated_polling_count.keys()
write_requests = []
for data_center in data_centers:
polling_count = aggregated_polling_count[data_center]
polling_errors = aggregated_polling_errors[data_center]
connection_errors = aggregated_connection_errors[data_center]
write_request = {
"Update": {
"TableName": table_name,
"Key": {
"DATA_CENTER": {"S": data_center.lower()},
"POLLING_TYPE": {"S": polling_type.lower()}
},
"UpdateExpression": (
f"SET {polling_attribute} = {polling_attribute} + :count, "
f"{err_attribute} = {err_attribute} + :errors, "
f"{conn_err_attribute} = {conn_err_attribute} + :conn_errors, "
f"{POLLING_COUNT_CURRENT_MIN} = :count, "
f"{ERROR_COUNT_CURRENT_MIN} = :errors, "
f"{LAST_PROCESSED} = :last_processed"
),
"ExpressionAttributeValues": {
":count": {"N": str(polling_count)},
":errors": {"N": str(polling_errors)},
":conn_errors": {"N": str(connection_errors)},
":last_processed": {"N": str(timestamp)}
}
}
}
write_requests.append(write_request)
# Execute batch write operations
response = client.batch_write_item(RequestItems={table_name: write_requests})
return responseEditor is loading...