[
https://issues.apache.org/jira/browse/CLOUDSTACK-2126?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13642253#comment-13642253
]
Min Chen commented on CLOUDSTACK-2126:
--------------------------------------
Based on ML discussion, we cannot simply remove async job information from
UserVmResponse, since some customers request to include these information for
these pending VMs. This bug actually reflected another issue caused by
CLOUDSTACK-2196, for deployVMCmd, if queryAsyncJob returns jobStatus =
1(completed), then the embedded UserVmResponse should not include jobStatus at
all. The embedded UserVmResponse should only include jobStatus for those
pending VMs, this should be reasonable to me. Based on this analysis, the fix
should be minimal and can be put into 4.1.0.
> 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
> 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