Prasanna Santhanam created CLOUDSTACK-2126:
----------------------------------------------
Summary: Response objects of some entities contain 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
Priority: Critical
Fix For: 4.1.0, 4.2.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