Wido den Hollander created CLOUDSTACK-974:
---------------------------------------------

             Summary: listServiceOfferings doesn't sort by sortKey if page 
and/or pagesize isn't set
                 Key: CLOUDSTACK-974
                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-974
             Project: CloudStack
          Issue Type: Bug
      Security Level: Public (Anyone can view this level - this is the default.)
          Components: API
    Affects Versions: 4.0.0, 4.0.1
            Reporter: Wido den Hollander
            Priority: Minor
             Fix For: 4.0.1


I was just notified by a colleague that there is different behaviour between 
the Admin UI and User UI.

When you list all Service Offerings in the Admin interface they get sorted by 
sortKey descending.

If you go and create an Instance as a user through the wizard the Service 
Offerings aren't sorted, they are in the order like they are in the database.

I logged the MySQL queries and they are:

** ADMIN **
SELECT disk_offering.id, disk_offering.domain_id, disk_offering.unique_name, 
disk_offering.name, disk_offering.display_text, disk_offering.disk_size, 
disk_offering.tags, disk_offering.type, disk_offering.removed, 
disk_offering.created, disk_offering.recreatable, 
disk_offering.use_local_storage, disk_offering.system_use, 
disk_offering.customized, disk_offering.uuid, disk_offering.sort_key, 
service_offering.cpu, service_offering.speed, service_offering.ram_size, 
service_offering.nw_rate, service_offering.mc_rate, 
service_offering.ha_enabled, service_offering.limit_cpu_use, 
service_offering.host_tag, service_offering.default_use, 
service_offering.vm_type, service_offering.sort_key
FROM service_offering INNER JOIN disk_offering ON 
service_offering.id=disk_offering.id
WHERE disk_offering.type='Service'
AND disk_offering.system_use = 0
AND disk_offering.system_use = 0
AND disk_offering.removed IS NULL
ORDER BY service_offering.sort_key DESC

** USER **
SELECT disk_offering.id, disk_offering.domain_id, disk_offering.unique_name, 
disk_offering.name, disk_offering.display_text, disk_offering.disk_size, 
disk_offering.tags, disk_offering.type, disk_offering.removed, 
disk_offering.created, disk_offering.recreatable, 
disk_offering.use_local_storage, disk_offering.system_use, 
disk_offering.customized, disk_offering.uuid, disk_offering.sort_key, 
service_offering.cpu, service_offering.speed, service_offering.ram_size, 
service_offering.nw_rate, service_offering.mc_rate, 
service_offering.ha_enabled, service_offering.limit_cpu_use, 
service_offering.host_tag, service_offering.default_use, 
service_offering.vm_type, service_offering.sort_key
FROM service_offering INNER JOIN disk_offering ON 
service_offering.id=disk_offering.id
WHERE disk_offering.type='Service'
AND disk_offering.domain_id IS NULL
AND disk_offering.system_use = 0
AND disk_offering.removed IS NULL

To me it seems this goes wrong in 
ManagementServerImpl.searchForServiceOfferings:

Filter searchFilter = new Filter(ServiceOfferingVO.class, "sortKey", 
isAscending, cmd.getStartIndex(), cmd.getPageSizeVal());

getStartIndex and getPageSizeVal are both NULL since the user UI doesn't add 
page nor pagesize to the API request.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to