pulp / pulp/pulp_ansible

As a user, fulltext search includes "content match" in the search results

Open
#701 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Migrated from Redmine Story
Dominant language
Python
Stars
68
Forks
62
Avg merge
1d 14h
Merged PRs (30d)
37

Description

Author: @bmbouter (bmbouter)

Redmine Issue: 5788, https://pulp.plan.io/issues/5788


Return a content_match object similar to that found in v2 API search results.

As an example, if the user searches for the keyword "dynatrace", the v2 API currently returns the following object for each item contained in collections.results[]:

content_match": {
    "total_count": 4,
    "contents": {
        "module": [
            "dynatrace_deployment",
            "dynatrace_comment"
            ],
        "role": [
            "dynatrace_custom_deployment",
            "dynatrace_problem_comment"
            ],
        "plugin": []
        }
   }

From the above, the UI knows that 2 modules and 2 roles matched.

Another thing we talked about fixing in Community Galaxy, and that we do not want to proliferate in AH, is the lack of a total count being displayed in the UI for each content type. In other words, from the above, the UI knows that 2 modules matched. However, it does not know (or at least does not display) that the collection contains a total of 2 modules. What we want to see in the UI is something like, "Matching modules: 2/2".

If you look at the response object returned in the v2 API, you will find a content_summary object. As part of this story, let's verify with the UI team that returning this object is sufficient or if something else is preferred. If something else, then add that. Otherwise, make sure content_summary is returned.

Here's an example of the content_summary object:

"content_summary": {
    "total_count": 4,
    "contents": {
        "module": [
            "dynatrace_deployment",
            "dynatrace_comment"
            ],
        "role": [
            "dynatrace_custom_deployment",
            "dynatrace_problem_comment"
            ],
        "plugin": []
        }
},

You can view the full response object from the Galaxy v2 API that includes the above examples here:

https://galaxy.ansible.com/api/internal/ui/search/?deprecated=false&keywords=dynatrace&order_by=-relevance&page=1

The code behind content_match can be viewed here:
https://github.com/ansible/galaxy/blob/devel/galaxy/api/internal/search.py#L177

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the linked galaxy/api/internal/search.py around line 177 and compare the linked Galaxy v2 search response. Confirm with the UI team whether content_summary is sufficient, then verify that search results expose the agreed content_match and summary fields; no test file is named in the issue.

Written by the indexing model from the issue text.

Assessment

Tech stack
ansible, python
Domain
api, backend-api-design
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.