36 Commits

Author SHA1 Message Date
Jimmy Berry
dc40ec7ac4 request_splitter: only allow devel/super followup for non-bootstrapped. 2017-05-09 19:40:15 -05:00
Jimmy Berry
c78d98f9e6 request_splitter: should merge: allow devel and super if not ready. 2017-05-04 16:48:57 -05:00
Jimmy Berry
9ea9a50c35 request_splitter: expose age thresholds to config. 2017-05-01 17:40:33 -05:00
Jimmy Berry
7f9cc0f74c request_splitter: add staging whitelist config option.
For the initial Factory usage the bot will be allowed to stage on a subset
of the available stagings.
2017-04-28 15:42:09 -05:00
Jimmy Berry
3d503c1f2c request_splitter: provide quick strategy based on lack of reviews needed. 2017-04-18 13:36:40 -05:00
Jimmy Berry
2aa494aea3 request_splitter: provide Strategy.desirable() in base.
Default should be all groups are desirable which the strategy can override.
2017-04-18 13:33:05 -05:00
Jimmy Berry
959a8f7905 request_splitter: add super strategy for representing devel groups. 2017-04-17 23:06:24 -05:00
Jimmy Berry
59eda5d82d request_splitter: group_by(): provide required option and use in devel.
Staging packages with no devel project as a result of devel strategy seems
like the incorrect behavior.
2017-04-17 23:05:04 -05:00
Jimmy Berry
232219363c request_splitter: s/supliment/supplement/ in comment. 2017-04-17 22:55:41 -05:00
Jimmy Berry
446a30dde0 request_splitter: switch from build percentage to staging age for merge.
Using build percentage is sub-optimal since many events can reset the
percentage which can result in additional requests being merged into the
staging. A better metric is the time since the first request was added to
the staging (the age of the staging). Unfortunately, this is not trivial to
determine especially given that the original request may be superseded or
unstaged entirely. As such the datetime at which the staging was activated
is stored in the staging pseudometa. A max age is then used to allow for
merging up until that point.
2017-04-14 17:11:30 -05:00
Jimmy Berry
d8f7d03c33 request_splitter: allow user to override merge conditions. 2017-04-14 17:03:18 -05:00
Jimmy Berry
83f425f23a request_splitter: s/age_threshold/request_age_threshold/.
Makes room for more age related variables. My gut was to do this in the
first place which seems correct now.
2017-04-14 16:48:23 -05:00
Jimmy Berry
ef2bc90061 request_splitter: provide and utilize an aged attribute on requests. 2017-04-12 17:32:43 -05:00
Jimmy Berry
50a83d1108 request_splitter: use capital for boolean strings in supplement().
Given that str(boolean) is used a capital is sometimes present, but should
be consistent to remove the possibility for issues.
2017-04-12 17:32:43 -05:00
Jimmy Berry
4bea74ae3a request_splitter: s/suppliment/supplement/(). 2017-04-12 17:32:43 -05:00
Ludwig Nussel
e985d45cb3 Merge pull request #743 from jberry-suse/strategy-devel-min-map
request_splitter: add group min map to devel strategy.
2017-03-16 10:41:24 +01:00
Jimmy Berry
83acebb719 special strategy: drop python*. 2017-03-14 23:12:07 -05:00
Jimmy Berry
6e7c158df7 request_splitter: add group min map to devel strategy. 2017-03-14 01:22:13 -05:00
Ludwig Nussel
19a37c0553 Merge pull request #702 from jberry-suse/select-merge-and-strategies
Select automation: merge and strategies
2017-03-08 18:54:14 +01:00
Jimmy Berry
a6d7716eb0 osclib: wrap ignored request reason with str() to handle None. 2017-03-03 14:57:16 -06:00
Jimmy Berry
27a6772dce request_splitter: add strategy_do_non_bootstrapped().
Utilize in select command to fallback to none strategy and also excluded
packages that require bootstrapping.
2017-03-01 01:08:23 -06:00
Jimmy Berry
17147acb15 request_splitter: add @postponed concept.
This allows for high priority strategies that were unable to be staged
this round to be postponed until there is a staging available.
2017-03-01 01:08:23 -06:00
Jimmy Berry
ad4d93a5b4 request_splitter: rework internals to support merge and strategies.
- reworked internal representation of stagings to be more flexible
- new considerable staging state of mergeable based on set of conditions
- multiple proposal stages can be combined to create one proposal
- proposals may now fail to find every group a home without stopping
- splitter_info is stored when first request in an empty staging is staged
  to allow for automated merging into that staging
- strategy concept introduced along with several strategies
- strategy_try() concept for applying multiple strategies and keeping
  desirable groups which provides a solid basis for making smart decisions
- merge() introduced for merging new requests into existing stagings
- various internal cleanups along the way

functionality exposed via osc-staging:
- new options: --merge, --try-strategies, --strategy
- splitter info written when not merging

stagingapi: add set_splitter_info_in_prj_pseudometa().
2017-03-01 01:08:23 -06:00
Jimmy Berry
67d274e6eb request_splitter: extract is_staging_bootstrapped(). 2017-03-01 01:08:23 -06:00
Jimmy Berry
4d08331250 request_splitter: rework stagings_load() to be public facing.
Notify user and exit early if not stagings worth considering.
2017-03-01 01:08:23 -06:00
Jimmy Berry
3d3f0469a4 request_splitter: only supliment a request once. 2017-03-01 01:08:23 -06:00
Jimmy Berry
be31ce05e4 stagingapi: get_staging_projects_short() exclude non-letter stagings. 2017-03-01 01:05:51 -06:00
Jimmy Berry
ef5de87c5d request_splitter: delete requests should always be considered in a ring. 2017-02-08 13:54:01 -06:00
Jimmy Berry
9f28923ba5 request_splitter: non-ring projects consider all requests in rings. 2017-02-08 13:19:08 -06:00
Jimmy Berry
3de3cae13a request_splitter: utilize ring attribute rather then lookup again. 2017-02-08 13:18:21 -06:00
Jimmy Berry
404a3efe58 request_splitter: rather than an empty group name use 00.
Sorts to the top and is consistent with old behavior.
2017-02-08 13:15:52 -06:00
Jimmy Berry
38dbf5b99a request_splitter: refactor to remove target_package param for suppliment(). 2017-02-01 08:09:15 -06:00
Jimmy Berry
f42358eaad request_splitter: move @devel_project to action/target.
With the source no longer being checked for devel project and the fact
that delete requests and such will not have source, but make sense to
have a devel project moving to target makes more sense.
2017-02-01 08:09:01 -06:00
Jimmy Berry
550ab59e4e request_splitter: replace incorrect devel project lookup copied from adi.
Instead of checking action/source the action/target should be used.
2017-02-01 08:08:34 -06:00
Jimmy Berry
1fe9b5be19 Provide proposal based select using RequestSplitter.
See select documentation for usage details.
2017-01-24 22:34:15 -06:00
Jimmy Berry
69f662685c Add RequestSplitter for common filtering and grouping or requests.
- re-implement list and adi commands using RequestSplitter
- numerous small cleanups and clarity improvements
- notably, adi now prints similar output to select when adding requests
- lxml is needed to provide more fully-featured xpath implementation
2017-01-24 22:21:10 -06:00