cloudstack-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF subversion and git services (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CLOUDSTACK-2126) Response objects of some entities contain job related information
Date Sun, 21 Apr 2013 14:13:15 GMT

    [ https://issues.apache.org/jira/browse/CLOUDSTACK-2126?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13637564#comment-13637564
] 

ASF subversion and git services commented on CLOUDSTACK-2126:
-------------------------------------------------------------

Commit 23dd00b04a92926c937adc51f3af24c36a91d1b0 in branch refs/heads/marvin_refactor from
[~tsp]
[ https://git-wip-us.apache.org/repos/asf?p=cloudstack.git;h=23dd00b ]

Working around CLOUDSTACK-2126

Marvin deserializes by matching attributes of the response with the
responseObject expected. In case the object's attributes don't mirror
the response Marvin assumes the response is invalid and can't return a
proper first class entity. This makes it difficult for tests to
reference the object's attributes in a sensible way.

Signed-off-by: Prasanna Santhanam <tsp@apache.org>

                
> 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

Mime
View raw message