mirror of
https://git.launchpad.net/~ubuntu-release/britney/+git/britney2-ubuntu
synced 2025-06-12 18:21:40 +00:00
Let the age policy register its own hints
Signed-off-by: Niels Thykier <niels@thykier.net>
This commit is contained in:
parent
d43311be03
commit
29ecbd80d0
25
hints.py
25
hints.py
@ -118,27 +118,6 @@ class Hint(object):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
class AgeDayHint(Hint):
|
|
||||||
|
|
||||||
def __init__(self, user, hint_type, days, packages):
|
|
||||||
super().__init__(user, hint_type, packages)
|
|
||||||
self._days = days
|
|
||||||
|
|
||||||
def __eq__(self, other):
|
|
||||||
if self.type != other.type or self.days != other.days:
|
|
||||||
return False
|
|
||||||
return super.__eq__(other)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def days(self):
|
|
||||||
return self._days
|
|
||||||
|
|
||||||
|
|
||||||
def age_day_hint(hints, who, hint_name, new_age, *args):
|
|
||||||
for package in args:
|
|
||||||
hints.add_hint(AgeDayHint(who, hint_name, int(new_age), package))
|
|
||||||
|
|
||||||
|
|
||||||
def split_into_one_hint_per_package(hints, who, hint_name, *args):
|
def split_into_one_hint_per_package(hints, who, hint_name, *args):
|
||||||
for package in args:
|
for package in args:
|
||||||
hints.add_hint(Hint(who, hint_name, package))
|
hints.add_hint(Hint(who, hint_name, package))
|
||||||
@ -161,10 +140,6 @@ class HintParser(object):
|
|||||||
'force-hint': (1, single_hint_taking_list_of_packages),
|
'force-hint': (1, single_hint_taking_list_of_packages),
|
||||||
'hint': (1, single_hint_taking_list_of_packages),
|
'hint': (1, single_hint_taking_list_of_packages),
|
||||||
|
|
||||||
# Age / urgent
|
|
||||||
'urgent': (1, split_into_one_hint_per_package),
|
|
||||||
'age-days': (2, age_day_hint),
|
|
||||||
|
|
||||||
# Block / freeze related hints
|
# Block / freeze related hints
|
||||||
'block': (1, split_into_one_hint_per_package),
|
'block': (1, split_into_one_hint_per_package),
|
||||||
'block-all': (1, split_into_one_hint_per_package),
|
'block-all': (1, split_into_one_hint_per_package),
|
||||||
|
@ -5,6 +5,7 @@ import os
|
|||||||
import time
|
import time
|
||||||
|
|
||||||
from consts import VERSION, BINARIES
|
from consts import VERSION, BINARIES
|
||||||
|
from hints import Hint, split_into_one_hint_per_package
|
||||||
|
|
||||||
|
|
||||||
@unique
|
@unique
|
||||||
@ -131,6 +132,35 @@ class BasePolicy(object):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class SimplePolicyHint(Hint):
|
||||||
|
|
||||||
|
def __init__(self, user, hint_type, policy_parameter, packages):
|
||||||
|
super().__init__(user, hint_type, packages)
|
||||||
|
self._policy_parameter = policy_parameter
|
||||||
|
|
||||||
|
def __eq__(self, other):
|
||||||
|
if self.type != other.type or self._policy_parameter != other._policy_parameter:
|
||||||
|
return False
|
||||||
|
return super.__eq__(other)
|
||||||
|
|
||||||
|
def str(self):
|
||||||
|
return '%s %s %s' % (self._type, str(self._policy_parameter), ' '.join(x.name for x in self._packages))
|
||||||
|
|
||||||
|
|
||||||
|
class AgeDayHint(SimplePolicyHint):
|
||||||
|
|
||||||
|
@property
|
||||||
|
def days(self):
|
||||||
|
return self._policy_parameter
|
||||||
|
|
||||||
|
|
||||||
|
def simple_policy_hint_parser_function(class_name, converter):
|
||||||
|
def f(hints, who, hint_name, policy_parameter, *args):
|
||||||
|
for package in args:
|
||||||
|
hints.add_hint(class_name(who, hint_name, converter(policy_parameter), package))
|
||||||
|
return f
|
||||||
|
|
||||||
|
|
||||||
class AgePolicy(BasePolicy):
|
class AgePolicy(BasePolicy):
|
||||||
"""Configurable Aging policy for source migrations
|
"""Configurable Aging policy for source migrations
|
||||||
|
|
||||||
@ -178,6 +208,10 @@ class AgePolicy(BasePolicy):
|
|||||||
self._dates = {}
|
self._dates = {}
|
||||||
self._urgencies = {}
|
self._urgencies = {}
|
||||||
|
|
||||||
|
def register_hints(self, hint_parser):
|
||||||
|
hint_parser.register_hint_type('age-days', simple_policy_hint_parser_function(AgeDayHint, int), min_args=2)
|
||||||
|
hint_parser.register_hint_type('urgent', split_into_one_hint_per_package)
|
||||||
|
|
||||||
def initialise(self, britney):
|
def initialise(self, britney):
|
||||||
super().initialise(britney)
|
super().initialise(britney)
|
||||||
self._read_dates_file()
|
self._read_dates_file()
|
||||||
@ -215,7 +249,7 @@ class AgePolicy(BasePolicy):
|
|||||||
|
|
||||||
for age_days_hint in self.hints.search('age-days', package=source_name,
|
for age_days_hint in self.hints.search('age-days', package=source_name,
|
||||||
version=source_data_srcdist[VERSION]):
|
version=source_data_srcdist[VERSION]):
|
||||||
new_req = int(age_days_hint.days)
|
new_req = age_days_hint.days
|
||||||
age_info['age-requirement-reduced'] = {
|
age_info['age-requirement-reduced'] = {
|
||||||
'new-requirement': new_req,
|
'new-requirement': new_req,
|
||||||
'changed-by': age_days_hint.user
|
'changed-by': age_days_hint.user
|
||||||
|
Loading…
x
Reference in New Issue
Block a user