Beispiel #1
0
    def run(self, args, logger):
        log_region('ALL')

        archiver = DataArchiver(args.now)
        archiver.archive_rankings(check_stop=self.check_stop)

        return 0
Beispiel #2
0
    def run(self, args, logger):
        log_region('ALL')

        data_deleter = DataDeleter(dry_run=args.dry_run)
        data_deleter.delete_rankings()
        data_deleter.delete_cache_data()

        return 0
Beispiel #3
0
    def run(self, args, logger):
        log_region('ALL')

        rankings = Ranking.objects.order_by('-id')

        status = OK

        if rankings[0].season.near_start(utcnow(), days=5):
            print(f"{TEXT[status]} - skipping check, close to season start")
            return status

        latest_time_by_region = {}
        latest_count_by_region = {}
        diff_time_by_region = {}

        get = sc2.Get(settings.DATABASES['default']['NAME'], Enums.INFO, 0)

        regions = {r for r in args.regions}

        for ranking in rankings:
            counts = get.games_played(ranking.id)
            if not latest_count_by_region:
                latest_time_by_region = {
                    region: ranking.data_time
                    for region in regions
                }
                latest_count_by_region = {
                    region: counts.get(region, 0)
                    for region in regions
                }
                logger.info(f"start at {ranking.data_time}")
            else:
                for region in list(regions):
                    if latest_count_by_region[region] != counts.get(region):
                        diff_time_by_region[region] = ranking.data_time
                        regions.remove(region)
                        logger.info(
                            f"region {region} differs in ranking {ranking.id} at {ranking.data_time}"
                        )

            if not regions:
                break

        ages = {}

        for region in args.regions:
            age = (latest_time_by_region[region] -
                   diff_time_by_region[region]).days
            logger.info(f"region {region} age {age} days")
            ages[Region.key_by_ids[region]] = age
            if age > 4:
                status = max(status, CRITICAL)
            elif age > 1:
                status = max(status, WARNING)

        print(f"{TEXT[status]} - age by region in days: {ages}")
        return status
Beispiel #4
0
    def run(self, args, logger):
        log_region('ALL')

        rankings = Ranking.objects.order_by('-id')

        latest_time_by_region = {}
        latest_count_by_region = {}
        diff_time_by_region = {}

        get = sc2.Get(settings.DATABASES['default']['NAME'], Enums.INFO, 0)

        regions = {r for r in args.regions}

        for ranking in rankings:
            counts = get.games_played(ranking.id)
            if not latest_count_by_region:
                latest_time_by_region = {
                    region: ranking.data_time
                    for region in regions
                }
                latest_count_by_region = {
                    region: counts.get(region, 0)
                    for region in regions
                }
                print(f"start at {ranking.data_time}")
            else:
                for region in list(regions):
                    if latest_count_by_region[region] != counts.get(region):
                        diff_time_by_region[region] = ranking.data_time
                        regions.remove(region)
                        print(
                            f"region {region} differs in ranking {ranking.id} at {ranking.data_time}"
                        )

            if not regions:
                break

        for region in args.regions:
            age = latest_time_by_region[region] - diff_time_by_region[region]
            print(f"region {region} age {age.days} days")

        return 0
 def run(self, args, logger):
     log_region('ALL')
     purge_player_data(check_stop=self.check_stop)
     return 0