Failed loading flavors in instance launch under MSIE11
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Dashboard (Horizon) |
Fix Released
|
Critical
|
Radomir Dopieralski |
Bug Description
No flavors are shown in the "Launch Instance" dialog in Internet Explorer 11 (IE11).
Instead, the following alert message is displayed: "Error: Unable to retrieve the flavors."
The following error appears in the console:
TypeError: Object.keys: argument is not an Object
at forEachSorted (http://
at ngParamSerializer (http://
at sendReq (http://
at serverRequest (http://
at processQueue (http://
at Anonymous function (http://
at Scope.prototype
at Scope.prototype
at Scope.prototype
at Anonymous funct
With COMPRESS disabled, I was able to get a more readable traceback:
HTML1300: Navigation occurred.
File: instances
JQMIGRATE: Logging is active
TypeError: Object.keys: argument is not an Object
at forEachSorted (http://
at ngParamSerializer (http://
at sendReq (http://
at serverRequest (http://
at processQueue (http://
at Anonymous function (http://
at Scope.prototype
at Scope.prototype
at Scope.prototype
at Anonymous function (http://
JQMIGRATE: jQuery.
console.trace()
at migrateWarn (http://
at jQuery.attr (http://
at access (http://
at attr (http://
at renderEmptyOption (http://
at writeNgOptionsValue (http://
at ngModelCtrl.$render (http://
at ngModelWatch (http://
Unfortunately, MSIE truncates the callback just when it gets interesting...
Changed in horizon: | |
importance: | Undecided → Critical |
milestone: | none → pike-2 |
Changed in horizon: | |
assignee: | Radomir Dopieralski (deshipu) → Akihiro Motoki (amotoki) |
Changed in horizon: | |
assignee: | Akihiro Motoki (amotoki) → Radomir Dopieralski (deshipu) |
The problem seems to be in the dashboards/ project/ static/ dashboard/ project/ workflow/ launch- instance/ launch- instance- model.service. js file with this line:
it seems wrong, because novaAPI.getFlavos is defined as:
function getFlavors(params) {
var config = params ? { 'params' : params} : { 'params' : {} };
And the subsequent code expects "params" to be a dict, and not "true". It also seems wrong, because the second parameter is completely ignored...