Channels repeated for branches across architectures when asking for channel map

Bug #1994613 reported by Facundo Batista
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Snap Store Server
New
Undecided
Unassigned

Bug Description

After creating a branch, the response for a channel map has that branch repeated several times in the packages.channels key.

How to reproduce the problem:

# starting here:

$ charmcraft status testfacu-charm
Track Base Channel Version Revision
latest ubuntu 18.04 (amd64) stable - -
                                 candidate - -
                                 beta - -
                                 edge 1 1
         ubuntu 18.04 (arm64) stable - -
                                 candidate - -
                                 beta - -
                                 edge 1 1
         ubuntu 18.04 (armhf) stable - -
                                 candidate - -
                                 beta - -
                                 edge 1 1
         ubuntu 18.04 (i386) stable - -
                                 candidate - -
                                 beta - -
                                 edge 1 1
         ubuntu 18.04 (powerpc) stable - -
                                 candidate - -
                                 beta - -
                                 edge 1 1
         ubuntu 18.04 (ppc64el) stable - -
                                 candidate - -
                                 beta - -
                                 edge 1 1
         ubuntu 18.04 (riscv64) stable - -
                                 candidate - -
                                 beta - -
                                 edge 1 1
         ubuntu 18.04 (s390x) stable - -
                                 candidate - -
                                 beta - -
                                 edge 1 1

# then release:

$ charmcraft release testfacu-charm -r 1 --channel=edge/branch123 --resource=otherstuff:1 --resource=testresource:1
Revision 1 of charm 'testfacu-charm' released to edge/branch123 (attaching resources: 'otherstuff' r1, 'testresource' r1)

# then get the status ("charmcraft status testfacu-charm") which ends up hitting a GET on "/v1/charm/testfacu-charm/releases", and the raw response is:

{'channel-map': [{'base': {'architecture': 'amd64', 'channel': '18.04', 'name': 'ubuntu'}, 'channel': 'latest/edge/branch123', 'expiration-date': '2022-11-25T00:00:00Z', 'progressive': {'paused': None, 'percentage': None}, 'resources': [{'name': 'otherstuff', 'revision': 1, 'type': 'file'}, {'name': 'testresource', 'revision': 1, 'type': 'file'}], 'revision': 1, 'when': '2022-10-26T14:01:19Z'}, {'base': {'architecture': 'amd64', 'channel': '18.04', 'name': 'ubuntu'}, 'channel': 'latest/edge', 'expiration-date': None, 'progressive': {'paused': None, 'percentage': None}, 'resources': [], 'revision': 1, 'when': '2022-08-18T18:40:13Z'}, {'base': {'architecture': 'arm64', 'channel': '18.04', 'name': 'ubuntu'}, 'channel': 'latest/edge/branch123', 'expiration-date': '2022-11-25T00:00:00Z', 'progressive': {'paused': None, 'percentage': None}, 'resources': [{'name': 'otherstuff', 'revision': 1, 'type': 'file'}, {'name': 'testresource', 'revision': 1, 'type': 'file'}], 'revision': 1, 'when': '2022-10-26T14:01:19Z'}, {'base': {'architecture': 'arm64', 'channel': '18.04', 'name': 'ubuntu'}, 'channel': 'latest/edge', 'expiration-date': None, 'progressive': {'paused': None, 'percentage': None}, 'resources': [], 'revision': 1, 'when': '2022-08-18T18:40:13Z'}, {'base': {'architecture': 'armhf', 'channel': '18.04', 'name': 'ubuntu'}, 'channel': 'latest/edge/branch123', 'expiration-date': '2022-11-25T00:00:00Z', 'progressive': {'paused': None, 'percentage': None}, 'resources': [{'name': 'otherstuff', 'revision': 1, 'type': 'file'}, {'name': 'testresource', 'revision': 1, 'type': 'file'}], 'revision': 1, 'when': '2022-10-26T14:01:19Z'}, {'base': {'architecture': 'armhf', 'channel': '18.04', 'name': 'ubuntu'}, 'channel': 'latest/edge', 'expiration-date': None, 'progressive': {'paused': None, 'percentage': None}, 'resources': [], 'revision': 1, 'when': '2022-08-18T18:40:13Z'}, {'base': {'architecture': 'i386', 'channel': '18.04', 'name': 'ubuntu'}, 'channel': 'latest/edge/branch123', 'expiration-date': '2022-11-25T00:00:00Z', 'progressive': {'paused': None, 'percentage': None}, 'resources': [{'name': 'otherstuff', 'revision': 1, 'type': 'file'}, {'name': 'testresource', 'revision': 1, 'type': 'file'}], 'revision': 1, 'when': '2022-10-26T14:01:19Z'}, {'base': {'architecture': 'i386', 'channel': '18.04', 'name': 'ubuntu'}, 'channel': 'latest/edge', 'expiration-date': None, 'progressive': {'paused': None, 'percentage': None}, 'resources': [], 'revision': 1, 'when': '2022-08-18T18:40:13Z'}, {'base': {'architecture': 'powerpc', 'channel': '18.04', 'name': 'ubuntu'}, 'channel': 'latest/edge/branch123', 'expiration-date': '2022-11-25T00:00:00Z', 'progressive': {'paused': None, 'percentage': None}, 'resources': [{'name': 'otherstuff', 'revision': 1, 'type': 'file'}, {'name': 'testresource', 'revision': 1, 'type': 'file'}], 'revision': 1, 'when': '2022-10-26T14:01:19Z'}, {'base': {'architecture': 'powerpc', 'channel': '18.04', 'name': 'ubuntu'}, 'channel': 'latest/edge', 'expiration-date': None, 'progressive': {'paused': None, 'percentage': None}, 'resources': [], 'revision': 1, 'when': '2022-08-18T18:40:13Z'}, {'base': {'architecture': 'ppc64el', 'channel': '18.04', 'name': 'ubuntu'}, 'channel': 'latest/edge/branch123', 'expiration-date': '2022-11-25T00:00:00Z', 'progressive': {'paused': None, 'percentage': None}, 'resources': [{'name': 'otherstuff', 'revision': 1, 'type': 'file'}, {'name': 'testresource', 'revision': 1, 'type': 'file'}], 'revision': 1, 'when': '2022-10-26T14:01:19Z'}, {'base': {'architecture': 'ppc64el', 'channel': '18.04', 'name': 'ubuntu'}, 'channel': 'latest/edge', 'expiration-date': None, 'progressive': {'paused': None, 'percentage': None}, 'resources': [], 'revision': 1, 'when': '2022-08-18T18:40:13Z'}, {'base': {'architecture': 'riscv64', 'channel': '18.04', 'name': 'ubuntu'}, 'channel': 'latest/edge/branch123', 'expiration-date': '2022-11-25T00:00:00Z', 'progressive': {'paused': None, 'percentage': None}, 'resources': [{'name': 'otherstuff', 'revision': 1, 'type': 'file'}, {'name': 'testresource', 'revision': 1, 'type': 'file'}], 'revision': 1, 'when': '2022-10-26T14:01:19Z'}, {'base': {'architecture': 'riscv64', 'channel': '18.04', 'name': 'ubuntu'}, 'channel': 'latest/edge', 'expiration-date': None, 'progressive': {'paused': None, 'percentage': None}, 'resources': [], 'revision': 1, 'when': '2022-08-18T18:40:13Z'}, {'base': {'architecture': 's390x', 'channel': '18.04', 'name': 'ubuntu'}, 'channel': 'latest/edge/branch123', 'expiration-date': '2022-11-25T00:00:00Z', 'progressive': {'paused': None, 'percentage': None}, 'resources': [{'name': 'otherstuff', 'revision': 1, 'type': 'file'}, {'name': 'testresource', 'revision': 1, 'type': 'file'}], 'revision': 1, 'when': '2022-10-26T14:01:19Z'}, {'base': {'architecture': 's390x', 'channel': '18.04', 'name': 'ubuntu'}, 'channel': 'latest/edge', 'expiration-date': None, 'progressive': {'paused': None, 'percentage': None}, 'resources': [], 'revision': 1, 'when': '2022-08-18T18:40:13Z'}], 'package': {'channels': [{'branch': None, 'fallback': None, 'name': 'latest/stable', 'risk': 'stable', 'track': 'latest'}, {'branch': None, 'fallback': 'latest/stable', 'name': 'latest/candidate', 'risk': 'candidate', 'track': 'latest'}, {'branch': None, 'fallback': 'latest/candidate', 'name': 'latest/beta', 'risk': 'beta', 'track': 'latest'}, {'branch': None, 'fallback': 'latest/beta', 'name': 'latest/edge', 'risk': 'edge', 'track': 'latest'}, {'branch': 'branch123', 'fallback': 'latest/edge', 'name': 'latest/edge/branch123', 'risk': 'edge', 'track': 'latest'}, {'branch': 'branch123', 'fallback': 'latest/edge', 'name': 'latest/edge/branch123', 'risk': 'edge', 'track': 'latest'}, {'branch': 'branch123', 'fallback': 'latest/edge', 'name': 'latest/edge/branch123', 'risk': 'edge', 'track': 'latest'}, {'branch': 'branch123', 'fallback': 'latest/edge', 'name': 'latest/edge/branch123', 'risk': 'edge', 'track': 'latest'}, {'branch': 'branch123', 'fallback': 'latest/edge', 'name': 'latest/edge/branch123', 'risk': 'edge', 'track': 'latest'}, {'branch': 'branch123', 'fallback': 'latest/edge', 'name': 'latest/edge/branch123', 'risk': 'edge', 'track': 'latest'}, {'branch': 'branch123', 'fallback': 'latest/edge', 'name': 'latest/edge/branch123', 'risk': 'edge', 'track': 'latest'}, {'branch': 'branch123', 'fallback': 'latest/edge', 'name': 'latest/edge/branch123', 'risk': 'edge', 'track': 'latest'}]}, 'revisions': [{'bases': [{'architecture': 'all', 'channel': '18.04', 'name': 'ubuntu'}], 'created-at': '2021-02-11T14:32:58.411347', 'errors': None, 'revision': 1, 'sha3-384': '60fbab27bd5d100cb8e0539cef2b6e5b1507e5da4ac50beaa78a7793fbae5ccce4b3b093a498d476f2a54d71757f5ec1', 'size': 1907, 'status': 'released', 'version': '1'}]}

Check ["package"]["channels"] there ^, it has branches repeated too many times:

[
{'branch': None, 'fallback': None, 'name': 'latest/stable', 'risk': 'stable', 'track': 'latest'},
{'branch': None, 'fallback': 'latest/stable', 'name': 'latest/candidate', 'risk': 'candidate', 'track': 'latest'},
{'branch': None, 'fallback': 'latest/candidate', 'name': 'latest/beta', 'risk': 'beta', 'track': 'latest'},
{'branch': None, 'fallback': 'latest/beta', 'name': 'latest/edge', 'risk': 'edge', 'track': 'latest'},
{'branch': 'branch123', 'fallback': 'latest/edge', 'name': 'latest/edge/branch123', 'risk': 'edge', 'track': 'latest'},
{'branch': 'branch123', 'fallback': 'latest/edge', 'name': 'latest/edge/branch123', 'risk': 'edge', 'track': 'latest'},
{'branch': 'branch123', 'fallback': 'latest/edge', 'name': 'latest/edge/branch123', 'risk': 'edge', 'track': 'latest'},
{'branch': 'branch123', 'fallback': 'latest/edge', 'name': 'latest/edge/branch123', 'risk': 'edge', 'track': 'latest'},
{'branch': 'branch123', 'fallback': 'latest/edge', 'name': 'latest/edge/branch123', 'risk': 'edge', 'track': 'latest'},
{'branch': 'branch123', 'fallback': 'latest/edge', 'name': 'latest/edge/branch123', 'risk': 'edge', 'track': 'latest'},
{'branch': 'branch123', 'fallback': 'latest/edge', 'name': 'latest/edge/branch123', 'risk': 'edge', 'track': 'latest'},
{'branch': 'branch123', 'fallback': 'latest/edge', 'name': 'latest/edge/branch123', 'risk': 'edge', 'track': 'latest'},
]

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.