Skip to content

Owner Search

Dany Marcoux edited this page Aug 29, 2022 · 38 revisions

Owners are users/groups with the maintainer or bugowner roles in the given project/package.

There are 5 OwnerSearch classes with OwnerSearch::Base being the parent of the 4 other children classes. They have different behaviors depending on the hash key-value pairs passed to their initializer. The key-value pairs with possible effects are attribute, devel, filter, limit and project. Other key-value pairs are ignored.

Except for OwnerSearch::Container, all OwnerSearch classes look for projects with, by default, the attribute OBS:OwnerRootProject. This attribute has two values: BugownerOnly and DisableDevel. When the BugownerOnly value is set, the owner search will, by default, only find owners with the bugowner role. Setting the DisableDevel value will not consider devel packages when searching for owners.

Each OwnerSearch class returns instances of Owner, a ActiveModel model. It holds the information about the owners of a given project/package, their roles and what is the root project.

Owner has six attributes:

  • rootproject (the name of the project with the attribute OBS:OwnerRootProject or whatever was passed instead)
  • project (the name of the project owned by the users/groups)
  • package (the name of the package owned by the users/groups)
  • filter (the roles of the owners, example: bugowner or maintainer)
  • users (the users which are the owners of the project/package)
  • groups (the groups which are the owners of the project/package)

See below how each OwnerSearch children class works.

All Children OwnerSearch Classes

filter

By default, owners are either maintainers or bugowners, unless the BugownerOnly value is defined on the OBS:OwnerRootProject attribute. Specify in a comma-separated list which roles you are instead looking for (like bugowner,reviewer).

OwnerSearch::Assignee

Search for owners by looking at the binaries of packages in projects, including all their children. attribute, devel and project will considerably change how this is done.

attribute

By default when no attribute is provided, only consider projects with the attribute 'OBS:OwnerRootProject', including all their children. Using a different attribute is possible by providing it to this key-value pair.

devel

A value of '0' or 'false' will not consider devel packages when searching for owners.

limit

A value of -1 will return only the owner of the deepest package in terms of project levels (like home:Admin/ctris vs home:Admin/subproject1/ctris).

A value of 0 will return all owners.

A value of 1 or higher will return at most this amount of owners. There might not be even that many owners.

project

Only consider this project (like home:Admin), thus ignoring the attribute key-pair.

OwnerSearch::Container

When passing a package to #for, look for owners in the package's project and all its parent projects. When passing a project, look for owners in the project and all its parent projects.

attribute, devel, limit and project

They don't have any effect.

OwnerSearch::Missing

Search for projects without owners, while going recursively going through all their linked projects. attribute and project will considerably change how this is done.

attribute

By default when no attribute is provided, search for projects with the attribute 'OBS:OwnerRootProject' and recursively go through all their linked projects. Matching projects with a different attribute is possible by providing it to this key-value pair.

project

Only consider the given project (like home:Admin) and recursively go through all its linked projects.

devel, limit

They don't have any effect.

OwnerSearch::Owned

Search for packages/projects which are owned by a given user/group. In this context, owned means having a specific role in a package/project. attribute and filter will considerably affect what is returned. As for project, it will affect what is searched.

attribute

By default when no attribute is provided, search for projects with the attribute 'OBS:OwnerRootProject'. Search for projects with a different attribute by providing this key-value pair.

project

Only consider the given project (like home:Admin)

devel, limit

They don't have any effect.

Owner Search Fun Facts

  • Searching by user or group returns the projects/packages for which the user/group is the owner.
  • Doing the same search through WebUI and API doesn't return the same results. The difference is related to OwnerSearch::Owned which is not called from WebUI whereas OwnerSearch::Assignee is called from both.
  • The owner search will get results only if one of the ancestors or related projects of the searched package/project was set as the root of the search (it contains the OBS:OwnerRootProject attribute or equivalent). Or if the user specifies a project in the search.
  • In production, there is only one project with the attribute OBS:OwnerRootProject:
    • openSUSE in OBS
Clone this wiki locally