You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cloudstack.apache.org by "Min Chen (JIRA)" <ji...@apache.org> on 2013/04/25 23:44:15 UTC

[jira] [Updated] (CLOUDSTACK-2126) Response objects of some entities contain inconsistent job related information

     [ https://issues.apache.org/jira/browse/CLOUDSTACK-2126?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Min Chen updated CLOUDSTACK-2126:
---------------------------------

    Summary: Response objects of some entities contain inconsistent job related information  (was: Response objects of some entities contain job related information)

Update the bug title to reflect the real issue.
                
> 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