[ https://issues.apache.org/jira/browse/CLOUDSTACK-2126?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Chip Childers resolved CLOUDSTACK-2126. --------------------------------------- Resolution: Fixed Applied to 4.1. Please be sure to move to master. commit 6dbf3e7b35f92eadbe6f47a8df9e465a8373d7ac Author: Min Chen <min.c...@citrix.com> Date: Thu Apr 25 16:16:13 2013 -0700 CLOUDSTACK-2196 and CLOUDSTACK-2126: fix missing async job status in listXXX api and incorrect async job status in other async api. > Response objects of some entities contain inconsistent job related information > ------------------------------------------------------------------------------ > > Key: CLOUDSTACK-2126 > URL: https://issues.apache.org/jira/browse/CLOUDSTACK-2126 > Project: CloudStack > Issue Type: Bug > Security Level: Public(Anyone can view this level - this is the > default.) > Components: API > Affects Versions: 4.1.0, 4.2.0 > Reporter: Prasanna Santhanam > Assignee: Min Chen > Priority: Critical > Fix For: 4.1.0 > > > Response objects of various entities seem to have introduced jobstatus, > jobid, jobuuid into their responses. These belong to the > queryAsyncJobResponse and not the response of the entity itself: > Eg: deployVirtualMachineResponse: > https://gist.github.com/vogxn/5429546 > Snippet: > { > "queryasyncjobresultresponse": { > "accountid": "50b6647e-a8ca-11e2-8a60-0c06fde16e85", > "userid": "50b68bde-a8ca-11e2-8a60-0c06fde16e85", > "cmd": "org.apache.cloudstack.api.command.user.vm.DestroyVMCmd", > "jobstatus": 1, > "jobprocstatus": 0, > "jobresultcode": 0, > "jobresulttype": "object", > "jobresult": { > "virtualmachine": { > "id": "649663f7-3c8d-4e0d-b693-4b1ea6085a84", > "name": "649663f7-3c8d-4e0d-b693-4b1ea6085a84", > "account": "QX7KKV", > "domainid": "50b6593e-a8ca-11e2-8a60-0c06fde16e85", > "domain": "ROOT", > "created": "2013-04-21T18:36:58+0530", > "state": "Destroyed", > "haenable": false, > "zoneid": "6e301be1-8010-4b57-9638-c90761e40dc9", > "zonename": "Sandbox-simulator", > "templateid": "570c6828-a8ca-11e2-8a60-0c06fde16e85", > "templatename": "CentOS 5.3(64-bit) no GUI (Simulator)", > "templatedisplaytext": "CentOS 5.3(64-bit) no GUI > (Simulator)", > "passwordenabled": false, > "serviceofferingid": "b1ab015a-2e8e-4f42-a6c2-f652d097fbf6", > "serviceofferingname": "SmallServiceOffering0W2VOH", > "cpunumber": 1, > "cpuspeed": 100, > "memory": 100, > "guestosid": "5026c2c4-a8ca-11e2-8a60-0c06fde16e85", > "rootdeviceid": 0, > "rootdevicetype": "ROOT", > "securitygroup": [], > "nic": [ > { > "id": "11517c3a-da75-4743-b4f5-2271dd919df9", > "networkid": "7f7278dc-0352-44e6-b50d-56e59a7d19f3", > "networkname": "QX7KKV-network", > "netmask": "255.255.255.0", > "gateway": "10.1.1.1", > "ipaddress": "10.1.1.2", > "traffictype": "Guest", > "type": "Isolated", > "isdefault": true, > "macaddress": "02:00:3e:2e:00:01" > } > ], > "hypervisor": "Simulator", > "instancename": "i-232-35-QA", > "tags": [], > "affinitygroup": [], > "jobstatus": 0 ####INVALID ENTRY INSIDE VIRTUALMACHINE#### > } > }, > "created": "2013-04-21T18:37:04+0530", > "jobid": "340120e2-632b-4a03-b416-21c23b4e95d1" > } > } > This seems to have come through during the api refactoring. Ideally response > should stick to what is exposed by the docs and the associated response > class: In the case of DeployVM there is no response attribute for jobstatus. > jobstatus attribute makes no sense for virtualmachine. > This breaks deserializing the object into a VirtualMachine response when > consumed by Marvin. > Other entities that have similar issues: > server/src/com/cloud/api/query/dao/AccountJoinDaoImpl.java: > accountResponse.setJobStatus(account.getJobStatus()); > server/src/com/cloud/api/query/dao/AsyncJobJoinDaoImpl.java: > jobResponse.setJobStatus(job.getStatus()); > server/src/com/cloud/api/query/dao/DomainRouterJoinDaoImpl.java: > routerResponse.setJobStatus(router.getJobStatus()); > server/src/com/cloud/api/query/dao/HostJoinDaoImpl.java: > hostResponse.setJobStatus(host.getJobStatus()); > server/src/com/cloud/api/query/dao/HostJoinDaoImpl.java: > hostResponse.setJobStatus(host.getJobStatus()); > server/src/com/cloud/api/query/dao/SecurityGroupJoinDaoImpl.java: > sgResponse.setJobStatus(vsg.getJobStatus()); > server/src/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java: > poolResponse.setJobStatus(pool.getJobStatus()); > server/src/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java: > poolResponse.setJobStatus(pool.getJobStatus()); > server/src/com/cloud/api/query/dao/UserAccountJoinDaoImpl.java: > userResponse.setJobStatus(usr.getJobStatus()); > server/src/com/cloud/api/query/dao/UserVmJoinDaoImpl.java: > userVmResponse.setJobStatus(userVm.getJobStatus()); > server/src/com/cloud/api/query/dao/VolumeJoinDaoImpl.java: > volResponse.setJobStatus(volume.getJobStatus()); > server/src/com/cloud/api/query/vo/AccountJoinVO.java: public void > setJobStatus(int jobStatus) { > server/src/com/cloud/api/query/vo/DomainRouterJoinVO.java: public void > setJobStatus(int jobStatus) { > server/src/com/cloud/api/query/vo/HostJoinVO.java: public void > setJobStatus(int jobStatus) { > server/src/com/cloud/api/query/vo/SecurityGroupJoinVO.java: public void > setJobStatus(int jobStatus) { > server/src/com/cloud/api/query/vo/StoragePoolJoinVO.java: public void > setJobStatus(int jobStatus) { > server/src/com/cloud/api/query/vo/UserAccountJoinVO.java: public void > setJobStatus(int jobStatus) { > server/src/com/cloud/api/query/vo/UserVmJoinVO.java: public void > setJobStatus(int jobStatus) { > server/src/com/cloud/api/query/vo/VolumeJoinVO.java: public void > setJobStatus(int jobStatus) { > The associated views contain the response as well which is where they seem to > be coming from: > | job_id | bigint(20) unsigned | YES | | 0 | | > | job_uuid | varchar(40) | YES | | NULL | | > | job_status | int(1) | YES | | NULL | | > | job_account_id | bigint(20) unsigned | YES | | NULL | | > +-----------------------+---------------------+------+-----+---------+-------+ -- 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