Incorrect URL when browsing Swift containers

Bug #2009724 reported by Zach Graber
14
This bug affects 3 people
Affects Status Importance Assigned to Milestone
OpenStack Dashboard (Horizon)
In Progress
Medium
Jeremy Boyle

Bug Description

When browsing through OpenStack Swift containers, sometimes Horizon will incorrectly encode part of the URL/URI of an object, and thus navigate to the wrong page. This has been reproducible for me by placing an object in a container more than about 3 pseudo-folders deep. For example, the structure might look like:

(Container) --> folder1 --> folder2 --> folder3

Upon clicking on folder3 in the Container browser window in Horizon, the site will try to navigate to "containers/container/containername/testfolder1%2Ftestfolder2/testfolder3" rather than the expected "containers/container/containername/testfolder1/testfolder2/testfolder3".

It appears that at some stage in the process, the path gets HTTP URL Encoded (encodeURIComponent) too many times. Note that the unexpected character "%2F" is the encoding of "/".

This is also evident by snooping on the GET request Horizon makes to the OpenStack Swift backend (see attached screenshot); the delimiter is set as "%2F", but the path requested has a "%252F" (this is just the double encoding of "%2F" since the encoding of "%" is "%25").

I'm guessing that there might be some recursive logic somewhere that results in the end-string being encoded multiple times.

Tags: swift
Revision history for this message
Zach Graber (zegraber) wrote :
Changed in horizon:
status: New → Confirmed
importance: Undecided → Medium
Revision history for this message
Jeremy Boyle (jeremy-boyle) wrote :
Revision history for this message
Jeremy Boyle (jeremy-boyle) wrote :

Hello I was able to fix this .

Line: https://github.com/openstack/horizon/blob/master/openstack_dashboard/dashboards/project/static/dashboard/project/containers/objects.controller.js#L63

needs to be updated to:

ctrl.currentURL = ctrl.containerURL + encodeURIComponent($routeParams.folder).replace(/%2F/g, '/') +

Changed in horizon:
assignee: nobody → Jeremy Boyle (jeremy-boyle)
status: Confirmed → In Progress
Revision history for this message
Jeremy Boyle (jeremy-boyle) wrote :
Revision history for this message
Jeremy Boyle (jeremy-boyle) wrote :
Revision history for this message
Jeremy Boyle (jeremy-boyle) wrote :
Revision history for this message
Jeremy Boyle (jeremy-boyle) wrote :
Revision history for this message
Jeremy Boyle (jeremy-boyle) wrote :
Revision history for this message
Jeremy Boyle (jeremy-boyle) wrote :
Revision history for this message
Jeremy Boyle (jeremy-boyle) wrote :
Revision history for this message
Jeremy Boyle (jeremy-boyle) wrote :
Revision history for this message
Jeremy Boyle (jeremy-boyle) wrote :
Revision history for this message
Jeremy Boyle (jeremy-boyle) wrote :
Revision history for this message
Jeremy Boyle (jeremy-boyle) wrote :
Revision history for this message
Jeremy Boyle (jeremy-boyle) wrote :

@Vishal Manchanda Are you able to review the changes?

tags: added: swift
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.