← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1587893] Re: Infinity quota values are not parsed by JSON.parse for getAbsoluteLimits

 

[Expired for OpenStack Dashboard (Horizon) because there has been no
activity for 60 days.]

** Changed in: horizon
       Status: Incomplete => Expired

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Dashboard (Horizon).
https://bugs.launchpad.net/bugs/1587893

Title:
  Infinity quota values are not parsed by JSON.parse for
  getAbsoluteLimits

Status in OpenStack Dashboard (Horizon):
  Expired

Bug description:
  When some of the values for Cinder quota are set to -1 (which means,
  "infinity" quota), REST API call for getAbsoluteLimits [1] crashes.

  That JavaScript function makes a request to
  http://localshost/api/cinder/tenantabsolutelimits/

  That request, generates a response, like:

  {"totalSnapshotsUsed": 0, "total_volumes_standard": 10,
  "maxTotalBackups": 10, "totalBackupsUsed": 0,
  "maxTotalBackupGigabytes": 1000, "maxTotalVolumes": 10,
  "used_volumes_standard": 1, "maxTotalVolumeGigabytes": 1000,
  "totalVolumesUsed": 1, "total_gigabytes_standard": 1000,
  "totalBackupGigabytesUsed": 0, "maxTotalSnapshots": 0,
  "used_gigabytes_standard": 1, "totalGigabytesUsed": 1}

  So far, so good.

  Now, update the cinder quota for your project, for example, the
  snapshots quota, to -1. The response changes to:

  {"totalSnapshotsUsed": 0, "total_volumes_standard": 10,
  "maxTotalBackups": 10, "totalBackupsUsed": 0,
  "maxTotalBackupGigabytes": 1000, "maxTotalVolumes": 10,
  "used_volumes_standard": 1, "maxTotalVolumeGigabytes": 1000,
  "totalVolumesUsed": 1, "total_gigabytes_standard": 1000,
  "totalBackupGigabytesUsed": 0, "maxTotalSnapshots": Infinity,
  "used_gigabytes_standard": 1, "totalGigabytesUsed": 1}

  Please note that "maxTotalSnapshots": Infinity.

  That dictionary, for python, is not a problem. But, for the JavaScript
  parser, is a big issue.

  Now, please open your browser, for example, Firefox and open the
  Console (from Developers tool) and execute this in the console:

  >> JSON.parse('{"totalSnapshotsUsed": 0, "total_volumes_standard": 10,
  "maxTotalBackups": 10, "totalBackupsUsed": 0,
  "maxTotalBackupGigabytes": 1000, "maxTotalVolumes": 10,
  "used_volumes_standard": 1, "maxTotalVolumeGigabytes": 1000,
  "totalVolumesUsed": 1, "total_gigabytes_standard": 1000,
  "totalBackupGigabytesUsed": 0, "maxTotalSnapshots": 0,
  "used_gigabytes_standard": 1, "totalGigabytesUsed": 1}')

  That worked fine, no issues, but now try this (with infinity quota for
  snapshots):

  >> JSON.parse('{"totalSnapshotsUsed": 0, "total_volumes_standard": 10,
  "maxTotalBackups": 10, "totalBackupsUsed": 0,
  "maxTotalBackupGigabytes": 1000, "maxTotalVolumes": 10,
  "used_volumes_standard": 1, "maxTotalVolumeGigabytes": 1000,
  "totalVolumesUsed": 1, "total_gigabytes_standard": 1000,
  "totalBackupGigabytesUsed": 0, "maxTotalSnapshots": Infinity,
  "used_gigabytes_standard": 1, "totalGigabytesUsed": 1}')

  It fails raising this message: SyntaxError: JSON.parse: unexpected
  character at line 1 column 329 of the JSON data.

  Summarizing, the issue in Horizon is due to -1 values in cinder quota,
  which is translated to python to infinity values (see here [2]) and
  the "Infinity" values are not a proper value for JSON.parse function.

  [1] https://github.com/openstack/horizon/blob/e1f07e27944b505dec57dda20d3c3b13eb3bb4d7/openstack_dashboard/static/app/core/openstack-service-api/cinder.service.js#L284
  [2] https://github.com/openstack/horizon/blob/e1f07e27944b505dec57dda20d3c3b13eb3bb4d7/openstack_dashboard/api/cinder.py#L779

To manage notifications about this bug go to:
https://bugs.launchpad.net/horizon/+bug/1587893/+subscriptions


References