From a5d4836e1280e62daed73c3aa825b660ee0a4f36 Mon Sep 17 00:00:00 2001 From: Andrew Melton Date: Wed, 5 Mar 2014 13:52:49 -0500 Subject: [PATCH] Pulling UMS fencepost offset into script argument --- reports/nova_usage_audit.py | 18 ++++++++++++++---- reports/usage_audit.py | 6 +++--- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/reports/nova_usage_audit.py b/reports/nova_usage_audit.py index a690e13..ca11475 100644 --- a/reports/nova_usage_audit.py +++ b/reports/nova_usage_audit.py @@ -65,6 +65,8 @@ select stacktach_instancereconcile.id, stacktach_instancereconcile.deleted_at > %s) ) and stacktach_instancereconcile.launched_at < %s;""" +DEFAULT_UMS_OFFSET = 4 * 60 * 60 # 4 Hours + reconciler = None @@ -190,12 +192,14 @@ def _launch_audit_for_period(beginning, ending): return launch_to_exists_fails, new_launches.count(), len(old_launches_dict) -def audit_for_period(beginning, ending, ums=False): +def audit_for_period(beginning, ending, ums=False, ums_offset=0): beginning_decimal = dt.dt_to_decimal(beginning) ending_decimal = dt.dt_to_decimal(ending) if ums: - verifier_audit_func = usage_audit._verifier_audit_for_day_ums + def verifier_audit_func(start, end, model): + return usage_audit._verifier_audit_for_day_ums(start, end, model, + ums_offset) else: verifier_audit_func = usage_audit._verifier_audit_for_day @@ -272,8 +276,13 @@ if __name__ == '__main__': type=str, default='/etc/stacktach/reconciler-config.json') parser.add_argument('--ums', - help="Use query to match UMS", + help="Use query to match UMS, " + "period length of 'day' required.", action='store_true') + parser.add_argument('--ums-offset', + help="UMS' fencepost offset in seconds. Default: 4 days", + type=int, + default=DEFAULT_UMS_OFFSET) args = parser.parse_args() if args.ums and args.period_length != 'day': @@ -297,7 +306,8 @@ if __name__ == '__main__': start, end = usage_audit.get_previous_period(time, args.period_length) - summary, details = audit_for_period(start, end, ums=args.ums) + summary, details = audit_for_period(start, end, ums=args.ums, + ums_offset=args.ums_offset) if not args.store: print make_json_report(summary, details) diff --git a/reports/usage_audit.py b/reports/usage_audit.py index 94f9921..9b606b5 100644 --- a/reports/usage_audit.py +++ b/reports/usage_audit.py @@ -103,7 +103,7 @@ def _verifier_audit_for_day(beginning, ending, exists_model): return summary, detail -def _verifier_audit_for_day_ums(beginning, ending, exists_model): +def _verifier_audit_for_day_ums(beginning, ending, exists_model, ums_offset): summary = {} # NOTE(apmelton): @@ -114,9 +114,9 @@ def _verifier_audit_for_day_ums(beginning, ending, exists_model): # audit_period_begin_timestamp >= sysdate-1||'12.00.00.000000000 AM') # OR (created_date > sysdate-1||'04.00.00.000000000 AM' and # audit_period_begin_timestamp < sysdate||'12.00.00.000000000 AM' )) - ums = (Q(raw__when__gte=beginning, raw__when__lte=beginning + (4*60*60), + ums = (Q(raw__when__gte=beginning, raw__when__lte=beginning + ums_offset, audit_period_beginning__gte=beginning) | - Q(raw__when__gt=beginning + (4*60*60), + Q(raw__when__gt=beginning + ums_offset, audit_period_beginning__lt=ending)) periodic_range = Q(audit_period_ending=(F('audit_period_beginning') +