48 Commits

Author SHA1 Message Date
2d13b11783 adi: place :NonFree requests in separate adi with :NonFree path. 2018-01-31 01:34:00 -06:00
Jimmy Berry
b1fd3ad49a osclib/core: request_age() return delta and handle Request object.
In #1370 devel-project.py was broken since it need delta.days and uses
Request class.
2018-01-29 03:14:24 -06:00
Jimmy Berry
b84beb6958 osclib/request_splitter: utilize osclib.core.request_age(). 2018-01-25 21:27:29 -06:00
Jimmy Berry
5e73e9498f osclib/request_splitter: replace devel_project_get() with core.devel_project_fallback(). 2018-01-17 18:12:42 -06:00
Ludwig Nussel
ad449c6d2c
Merge pull request #1344 from jberry-suse/request_splitter-special-config
osclib/request_splitter: allow special packages to be empty.
2018-01-15 14:57:45 +01:00
Jimmy Berry
55191625e8 osclib/request_splitter: rework quick strategy to handle Leap 15.0 workflow.
The addition of factory-auto and repo-checker reviews need to be allowed
since they are always present and do not constitute a non-quick review.
In an attempt to future proof the strategy the allowed review groups are
taken from the project configuration and repo-checker from config.
2018-01-12 16:52:49 -06:00
Jimmy Berry
3d43985d19 osclib/request_splitter: allow special packages to be empty. 2018-01-12 15:40:56 -06:00
Jimmy Berry
facb6fecf6 osclib/stagingapi: provide is_staging_bootstrapped() from request_splitter. 2017-12-21 00:31:01 -06:00
Jimmy Berry
e8c2799156 osclib/request_splitter: reduce default list of special packages. 2017-10-16 16:48:45 -05:00
Jimmy Berry
c9743b5df0 osclib/request_splitter: provide splitter-special-packages config variable. 2017-10-16 16:48:17 -05:00
Jimmy Berry
de586a664f osclib/request_splitter: for SLE, fallback to openSUSE:Factory devel projects. 2017-08-31 15:43:18 -05:00
Jimmy Berry
d873e16356 request_splitter: fallback to source project when devel is not present. 2017-06-14 22:18:10 -05:00
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