Commit Graph

89 Commits

Author SHA1 Message Date
Jan Kaluza
f2a236bc74 Pass buildrequired modules built against all compatible base module streams to MMDResolver.
Imagine we have "platform:f29.0.0" and "platform:f29.1.0" base modules.
We also have "DBI" module we want to build agaisnt "platform:f29.1.0".
This "DBI" module depends on "perl" module which is only build against
"platform:f29.0.0".

Currently, DBI build would fail to resolve the dependencies, because
it wouldn't find "perl" module, because it is built against different
platform stream.

This PR changes the MSE code to include buildrequired module builds built
against all the compatible platform streams.

It does so by introducing following changes:

- MSE code uses new get_base_module_mmds() method to find out all the
  compatible platform modules. This needed new methods in DBResolver
  and MBSResolver.
- For each buildrequired module defined by name:stream, the MSE code then
  finds particular NSVC built against each compatible platform module.

Side effect of these code changes is that every module now must buildrequire
some base module.
2018-10-26 14:02:36 +02:00
mprahl
599c881714 Add the ability to query by the base modules a module build buildrequires
Future use cases will require the ability to find compatible module builds
to buildrequire based on the base module the module used to build. This
commit adds an association table that will contain module build IDs
and the base module they buildrequire.

Addresses FACTORY-3353
2018-10-17 07:47:31 -04:00
mprahl
4f9fffff3b Move some of the logic in get_prefixed_version to a ModuleBuild static method
The logic used to parse the stream version will need to be reused elsewhere
to support the filtering and ordering of a base module stream version.
2018-10-16 10:26:39 -04:00
Chenxiong Qi
cf4e5f47c0 Avoid repeating default context with literal text
Signed-off-by: Chenxiong Qi <cqi@redhat.com>
2018-09-13 10:08:17 +08:00
Jan Kaluza
78f94d117b Cast 'version' in get_build_from_nsvc to str. 2018-08-22 09:45:00 +02:00
mprahl
f08135352a Use the NVR instead of the component name when responding to a tag message
This addresses an issue when a module contains builds that have different
names in their NVR than the component name in MBS. This happens with
SCLs for instance. MBS wouldn't be able to find the component to mark
as tagged in the database since it was searching by the wrong name, so the
build would just stall. This uses the NVR now to find the correct build
in the database.
2018-08-07 11:54:28 -04:00
mprahl
3969b2fb1e Expose the component batch in the API to help in future debugging 2018-08-07 10:33:56 -04:00
mprahl
8a54b26fd7 Expose the NVR of component builds in the API to help future debugging 2018-08-07 10:33:14 -04:00
mprahl
a78c564073 Revert "Store the component's build ID and use that to identify the build when acting on a tag message"
This reverts commit 9bd16beeef.
2018-08-07 10:32:50 -04:00
mprahl
9bd16beeef Store the component's build ID and use that to identify the build when acting on a tag message
This resolves an issue where the component name is different than the
package being tagged due to a macro such as those used for SCLs.
2018-08-03 20:45:00 -04:00
mprahl
36a9026ca8 Remove references to COPR 2018-06-28 10:00:06 -04:00
Owen W. Taylor
19bf94f0ea Load 'context' for local builds
'context' needed to be stored into the in-memory database and then
propagated for builds added to a MockModuleBuild with --add-local-build.
2018-05-30 15:47:14 -04:00
mprahl
574c3eae92 Query by the context directly 2018-05-21 13:33:39 -04:00
mprahl
b0728b1080 Make the published messages smaller 2018-05-10 11:49:02 -04:00
mprahl
00e46c205b Show siblings and component_builds in the standard modules API 2018-05-10 11:48:00 -04:00
Ralph Bean
d0ae77c324 py3: Unicode strings must be encoded to bytes before hashing. 2018-05-08 14:17:36 -04:00
Qixiang Wan
d83e6897ca Change ModuleBuild.context to db column
1. Changed ModuleBuild's context property to db column, it's
non-nullable and default value is '00000000' to keep it consistent
with previous behaviour.

2. Changed ModuleBuild.contexts_from_mmd to return a tuple of
(ref_build_context, build_context, runtime_context, context).

3. Updated tests affected by this change.
2018-04-28 11:46:31 +08:00
Jan Kaluza
8d1d439737 Generate 'context' from hash based on buildrequires/requires stream. Reuse components only from module with the same stream_build_context. 2018-04-24 15:45:26 +02:00
mprahl
19db295795 Fix flake8 errors 2018-04-03 09:58:57 -04:00
Jan Kaluza
bf873dbaea Do not set app.config['SERVER_NAME'] if app_context exists. 2018-04-03 09:58:57 -04:00
mprahl
5b278211e6 Add API v2 which will return a list of modules on build submissions based on module stream expansion 2018-04-03 09:58:57 -04:00
mprahl
41814b42de Add siblings to the extended JSON output of module builds 2018-04-03 09:58:57 -04:00
Jan Kaluza
e5e9a24fce Allow adding bool to XMD. Fix flake8 issues. 2018-04-03 09:58:57 -04:00
Jan Kaluza
2482e47c07 Fix issues from review. Drop xmd['mbs']['requires']. Do not allow building MSE builds against non-MSE builds. 2018-04-03 09:58:57 -04:00
Jan Kaluza
31ddbe51a5 Add generate_expanded_mmds which returns list of MMDs which can be submitted as MSE builds and submit them. 2018-04-03 09:58:57 -04:00
Jan Kaluza
253d29bcef Rewrite ModuleBuild methods to get all streams and all builds using the latest version, not build id. 2018-04-03 09:58:57 -04:00
Jan Kaluza
1bbe8d69f1 Add ModuleBuild methods for getting list of streams, last build in a name:stream and all builds in name:stream:version. 2018-04-03 09:58:57 -04:00
mprahl
f0852d9009 Port to libmodulemd and support v2 modulemd without module stream expansion 2018-04-03 09:58:57 -04:00
Yash Nanavati
ed25afd9ec Code changes for Python 3 support 2018-03-04 03:22:38 -05:00
Jan Kaluza
4001d3c488 Use in-memory SQLite database in tests to make them 40% faster. 2018-02-08 08:01:24 +01:00
mprahl
f16bf5f5a5 Add a SQLAlchemy hook to modify "time_modified" on module build entries 2018-02-06 10:45:07 -05:00
mprahl
0f13164ac8 Use a set instead of a list when making sure the buildrequires match on a modulemd 2018-02-05 22:11:31 -05:00
mprahl
a67b53f5c3 Add a "context" field on component and module releases in Koji for uniqueness for when Module Stream Expansion is implemented 2018-01-16 10:36:09 -05:00
Jan Kaluza
7de120c17b Get the weight of Koji tasks and use it to sort the components in a batch instead of builds time. 2017-11-28 10:52:17 -05:00
mprahl
0e7dd2dad3 Add a "short" query parameter to show less detail on the "module-builds" API 2017-11-17 13:19:48 -05:00
mprahl
ef5dc64f2b Transition stale failed builds to the "garbage" state and untag their components 2017-11-17 12:07:51 -05:00
mprahl
9890277620 Make "state_url" optional in the "extended_json" function since creating an app context causes SQLAlchemy issues on the backend 2017-11-17 12:07:51 -05:00
mprahl
243e8873d5 Don't trigger init handler when importing a local build and mark the build as done after import 2017-11-10 08:33:53 -05:00
mprahl
3ccbb3dd57 Fix duplicate state traces 2017-11-08 10:18:47 -05:00
mprahl
18e7f608b1 Solidify how the previous module state is determined when resuming a failed module build 2017-11-06 16:54:10 -05:00
mprahl
d8f126e978 Allow resuming from a failure during the "init" phase
This also shifts build failure transitions from individual functions
in utils.py to the init module handler.
2017-11-06 14:15:12 -05:00
mprahl
089a0c3db4 Fix typo 2017-11-02 08:37:59 -04:00
mprahl
45cce653eb Add the ability to specify different rebuild methods 2017-11-01 15:39:43 -04:00
Martin Curlej
1eb3c653dd Changed the filters so they execute when everything is build
Signed-off-by: Martin Curlej <mcurlej@redhat.com>
2017-10-31 16:04:31 -04:00
Martin Curlej
60b3d97c97 flake8 cleanup
Signed-off-by: Martin Curlej <mcurlej@redhat.com>

removed some noqa tags
2017-10-25 12:13:59 +02:00
mprahl
eedf0a1684 Default verbose to false but present a lot more information when verbose is false 2017-10-23 20:19:51 -04:00
mprahl
2de4b592d6 Set 'time_modified' at module creation 2017-10-16 14:45:04 -04:00
Jan Kaluza
ad6874b0e6 Fix #670 - Tag Content Generator Koji build to special tag based on the base module stream 2017-09-25 08:36:29 +02:00
Ralph Bean
3b93dc7143 Restore the old message format.
The message format broke in 3cb41aa5dc

The resulted in tracebacks in pdc-updater when it tried to learn things
about a module that was just submitted.  It relied on certain fields
(`stream`) being in the message body.  This change restores those fields
to get things working again.
2017-09-15 23:34:57 +02:00
Jan Kaluza
999baa2992 Wait for components to be tagged also in final tag before marking module as done. 2017-09-15 15:25:29 +02:00