Code Duplication    Length = 28-35 lines in 4 locations

buildtimetrend/keenio.py 4 locations

@@ 373-407 (lines=35) @@
370
        return -1
371
372
373
def get_passed_build_jobs(repo=None, interval=None):
374
    """
375
    Query Keen.io database and retrieve total number of build jobs that passed.
376
377
    Parameters :
378
    - repo : repo name (fe. buildtimetrend/service)
379
    - interval : timeframe, possible values : 'week', 'month', 'year',
380
                 anything else defaults to 'week'
381
    """
382
    if repo is None or not is_readable():
383
        return -1
384
385
    interval_data = check_time_interval(interval)
386
387
    try:
388
        return keen.count_unique(
389
            "build_jobs",
390
            target_property="job.job",
391
            timeframe=interval_data['timeframe'],
392
            max_age=interval_data['max_age'],
393
            filters=[
394
                get_repo_filter(repo),
395
                {
396
                    "property_name": "job.result",
397
                    "operator": "eq",
398
                    "property_value": "passed"
399
                }
400
            ]
401
        )
402
    except requests.ConnectionError:
403
        logger.error("Connection to Keen.io API failed")
404
        return -1
405
    except keen.exceptions.KeenApiError as msg:
406
        logger.error("Error in keenio.get_passed_build_jobs() : " + str(msg))
407
        return -1
408
409
410
def get_pct_passed_build_jobs(repo=None, interval=None):
@@ 455-482 (lines=28) @@
452
        return "red"
453
454
455
def get_total_builds(repo=None, interval=None):
456
    """
457
    Query Keen.io database and retrieve total number of builds.
458
459
    Parameters :
460
    - repo : repo name (fe. buildtimetrend/service)
461
    - interval : timeframe, possible values : 'week', 'month', 'year',
462
                 anything else defaults to 'week'
463
    """
464
    if repo is None or not is_readable():
465
        return -1
466
467
    interval_data = check_time_interval(interval)
468
469
    try:
470
        return keen.count_unique(
471
            "build_jobs",
472
            target_property="job.build",
473
            timeframe=interval_data['timeframe'],
474
            max_age=interval_data['max_age'],
475
            filters=[get_repo_filter(repo)]
476
        )
477
    except requests.ConnectionError:
478
        logger.error("Connection to Keen.io API failed")
479
        return -1
480
    except keen.exceptions.KeenApiError as msg:
481
        logger.error("Error in keenio.get_total_builds() : " + str(msg))
482
        return -1
483
484
485
def get_latest_buildtime(repo=None):
@@ 343-370 (lines=28) @@
340
        return -1
341
342
343
def get_total_build_jobs(repo=None, interval=None):
344
    """
345
    Query Keen.io database and retrieve total number of build jobs.
346
347
    Parameters :
348
    - repo : repo name (fe. buildtimetrend/service)
349
    - interval : timeframe, possible values : 'week', 'month', 'year',
350
                 anything else defaults to 'week'
351
    """
352
    if repo is None or not is_readable():
353
        return -1
354
355
    interval_data = check_time_interval(interval)
356
357
    try:
358
        return keen.count_unique(
359
            "build_jobs",
360
            target_property="job.job",
361
            timeframe=interval_data['timeframe'],
362
            max_age=interval_data['max_age'],
363
            filters=[get_repo_filter(repo)]
364
        )
365
    except requests.ConnectionError:
366
        logger.error("Connection to Keen.io API failed")
367
        return -1
368
    except keen.exceptions.KeenApiError as msg:
369
        logger.error("Error in keenio.get_total_build_jobs() : " + str(msg))
370
        return -1
371
372
373
def get_passed_build_jobs(repo=None, interval=None):
@@ 313-340 (lines=28) @@
310
    return keen_config
311
312
313
def get_avg_buildtime(repo=None, interval=None):
314
    """
315
    Query Keen.io database and retrieve average build time.
316
317
    Parameters :
318
    - repo : repo name (fe. buildtimetrend/service)
319
    - interval : timeframe, possible values : 'week', 'month', 'year',
320
                 anything else defaults to 'week'
321
    """
322
    if repo is None or not is_readable():
323
        return -1
324
325
    interval_data = check_time_interval(interval)
326
327
    try:
328
        return keen.average(
329
            "build_jobs",
330
            target_property="job.duration",
331
            timeframe=interval_data['timeframe'],
332
            max_age=interval_data['max_age'],
333
            filters=[get_repo_filter(repo)]
334
        )
335
    except requests.ConnectionError:
336
        logger.error("Connection to Keen.io API failed")
337
        return -1
338
    except keen.exceptions.KeenApiError as msg:
339
        logger.error("Error in keenio.get_avg_buildtime() : " + str(msg))
340
        return -1
341
342
343
def get_total_build_jobs(repo=None, interval=None):