You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cloudstack.apache.org by Ryan Lei <ry...@cht.com.tw> on 2013/10/25 10:57:36 UTC

[Cloudmonkey] assignVirtualMachine API causes index out of range error

I'm using Cloudmonkey 5.0.0 under CloudStack 4.2.0 + XenServer 6.2.
For now, the only way to change the ownership of a VM is by the
assignVirtualMachine API.

But executing this API using Cloudmonkey leads to the following error that
crashes the program:

> assign virtualmachine
virtualmachineid=7fe548bb-b2a7-4aec-92c5-5012ef9fd4f4 account=domain1-user1
domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f
Traceback (most recent call last):
  File "/usr/bin/cloudmonkey", line 9, in <module>
    load_entry_point('cloudmonkey==5.0.0', 'console_scripts',
'cloudmonkey')()
  File
"/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
line 536, in main
    shell.cmdloop()
  File
"/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
line 106, in cmdloop
    super(CloudMonkeyShell, self).cmdloop(intro="")
  File "/usr/lib64/python2.6/cmd.py", line 142, in cmdloop
    stop = self.onecmd(line)
  File "/usr/lib64/python2.6/cmd.py", line 219, in onecmd
    return func(arg)
  File
"/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
line 134, in grammar_closure
    self.default("%s %s" % (cmd, args))
  File
"/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
line 303, in default
    result = self.make_request(apiname, args_dict, isasync)
  File
"/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
line 257, in make_request
    self.timeout, self.protocol, self.path)
  File
"/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/requester.py",
line 121, in monkeyrequest
    responsekey = filter(lambda x: 'response' in x, response.keys())[0]
IndexError: list index out of range
[cs42]~#

However, the account of VM DOES change successfully, checked from both the
UI and API.
And after the change, only the new VM owner and their admins and see this
VM.

-------------------------------------------------------------------------------------------
Yu-Heng (Ryan) Lei, Associate Researcher
Chunghwa Telecom Laboratories / Cloud Computing Laboratory
ryanlei@cht.com.tw<https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw>
or
ryanlei750328@gmail.com

Re: [Cloudmonkey] assignVirtualMachine API causes index out of range error

Posted by Ryan Lei <ry...@cht.com.tw>.
I'm only using the RPMs to run my 4.2 environment. :(
We need some source code + Cloudmonkey people to verify this.

-------------------------------------------------------------------------------------------
Yu-Heng (Ryan) Lei, Associate Researcher
Chunghwa Telecom Laboratories / Cloud Computing Laboratory
ryanlei@cht.com.tw<https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw>
or
ryanlei750328@gmail.com



On Wed, Oct 30, 2013 at 4:11 PM, Sebastien Goasguen <ru...@gmail.com>wrote:

>
> On Oct 30, 2013, at 2:40 AM, Ryan Lei <ry...@cht.com.tw> wrote:
>
> > Ticket created:
> > https://issues.apache.org/jira/browse/CLOUDSTACK-4998
> >
>
> Ryan, I fixed it in master and 4.2. Any chance you can compile from source
> and check again ?
>
> thanks
>
>
> >
> -------------------------------------------------------------------------------------------
> > Yu-Heng (Ryan) Lei, Associate Researcher
> > Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> > ryanlei@cht.com.tw<
> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
> >
> > or
> > ryanlei750328@gmail.com
> >
> >
> >
> > On Wed, Oct 30, 2013 at 2:04 PM, Rohit Yadav <bh...@apache.org>
> wrote:
> >
> >> On Mon, Oct 28, 2013 at 1:52 PM, Sebastien Goasguen <runseb@gmail.com
> >>> wrote:
> >>
> >>> I think the error is in the java code of AssignVirtualMachine:
> >>> api/src/org/apache/cloudstack/api/command/admin/vm/AssignVMCmd.java:
> >>>
> >>> @APICommand(name = "assignVirtualMachine", description="Change
> ownership
> >>> of a VM from one account to another. This API is available for Basic
> >> zones
> >>> with security groups and Advanced zones with guest networks. A root
> >>> administrator can reassign a VM from any account to any other account
> in
> >>> any domain. A domain administrator can reassign a VM to any account in
> >> the
> >>> same domain.", responseObject=UserVmResponse.class, since="3.0.0")
> >>> public class AssignVMCmd extends BaseCmd  {
> >>>    public static final Logger s_logger =
> >>> Logger.getLogger(AssignVMCmd.class.getName());
> >>>
> >>>   private static final String s_name = "moveuservmresponse";
> >>>
> >>>
> >>> Shouldn't the string be "assignvirtualmachineresponse" ?
> >>>
> >>
> >> Thanks Ryan for the output, Sebastien is right the response string of
> >> AssignVMCmd
> >> should be fixed. Please open a bug ticket, patch contributions are most
> >> welcome :)
> >>
> >> Regards.
> >>
> >>
> >>>
> >>> On Oct 27, 2013, at 11:02 PM, Ryan Lei <ry...@cht.com.tw> wrote:
> >>>
> >>>> Here's the assignVirtualMachine response json from log:
> >>>>
> >>>> 2013-10-25 17:02:54,107 - cloudmonkey.py:83 - [DEBUG] Loaded config
> >>> fields:
> >>>> ['cache_file=/root/.cloudmonkey/cache',
> >>>> 'log_file=/root/.cloudmonkey/log', 'asyncblock=true',
> >>>> 'paramcompletion=false', 'history_file=/root/.cloudmonkey/history',
> >>>> 'color=true', 'prompt=> ', 'display=table',
> >>>>
> >>>
> >>
> 'secretkey=wOV6_F8BZXxXV0zfX_DLVscCtbGrZgV3h8AcWfQLIa-OBCddLJimXTIQaM9hFH5ggItwwIFcivjJ77zn7LjWCQ',
> >>>>
> >>>
> >>
> 'apikey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA',
> >>>> 'path=/client/api', 'host=localhost', 'protocol=http', 'port=8080',
> >>>> 'timeout=3600']
> >>>>
> >>>> 2013-10-25 17:03:19,839 - requester.py:45 - [DEBUG] ======== START
> >>>> Request ========
> >>>> 2013-10-25 17:03:19,840 - requester.py:45 - [DEBUG] Requesting
> >>>> command=assignVirtualMachine, args={'account': 'domain1-user2',
> >>>> 'domainid': 'cfc19b03-0858-4f39-9058-e0b67685bc2f',
> >>>> 'virtualmachineid': '939f1c53-91e8-47a1-92d1-9ec9c2c1802c'}
> >>>> 2013-10-25 17:03:19,841 - requester.py:45 - [DEBUG] Request sent:
> >>>>
> >>>
> >>
> http://localhost:8080/client/api?account=domain1-user2&apiKey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA&command=assignVirtualMachine&domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f&response=json&virtualmachineid=939f1c53-91e8-47a1-92d1-9ec9c2c1802c&signature=gcqky6emSpV08QHZuavLZFS6Pcg%3D
> >>>>
> >>>> 2013-10-25 17:03:20,107 - requester.py:45 - [DEBUG] Response received:
> >>>> { "virtualmachine" :  { "virtualmachine" :
> >>>>
> >>>
> >>
> {"id":"939f1c53-91e8-47a1-92d1-9ec9c2c1802c","name":"domain1-admin","displayname":"domain1-admin","account":"domain1-user2","domainid":"cfc19b03-0858-4f39-9058-e0b67685bc2f","domain":"domain1","created":"2013-10-25T15:15:03+0800","state":"Stopped","haenable":false,"zoneid":"6e0b2791-513e-49be-bbd8-62c2597640ef","zonename":"Zone-Xen","templateid":"855b7915-9739-4ad7-945e-8b8514040198","templatename":"CentOS-6.4-x86_64
> >>>> (scalable)","templatedisplaytext":"CentOS-6.4-x86_64
> >>>>
> >>>
> >>
> (scalable)","passwordenabled":false,"serviceofferingid":"32f7668c-5edd-4152-b927-c7b744281dc2","serviceofferingname":"Small
> >>>>
> >>>
> >>
> Instance","cpunumber":1,"cpuspeed":500,"memory":512,"cpuused":"0%","networkkbsread":0,"networkkbswrite":1,"diskkbsread":0,"diskkbswrite":0,"diskioread":0,"diskiowrite":0,"guestosid":"f70b6aaa-37da-11e3-9cb9-46ca9f9b4d97","rootdeviceid":0,"rootdevicetype":"ROOT","securitygroup":[],"nic":[{"id":"2f2a6ff3-ab11-4127-8991-2813a9a1c3ba","networkid":"aad53b98-3a6c-4cd3-a1e3-cbb84834d8c1","networkname":"domain1-user2-network","netmask":"255.255.255.0","gateway":"10.1.1.1","ipaddress":"10.1.1.204","traffictype":"Guest","type":"Isolated","isdefault":true,"macaddress":"02:00:17:61:00:01"}],"hypervisor":"XenServer","tags":[],"affinitygroup":[],"displayvm":true,"isdynamicallyscalable":true}
> >>>> }  }
> >>>> 2013-10-25 17:03:20,108 - requester.py:45 - [DEBUG] ======== END
> >>>> Request ========
> >>>>
> >>>>
> >>>> I'm using Cloudmonkey from git (corresponding to 5.0.0), and I have
> >> tried
> >>>> using root admin and domain admin to call this API. Both turned out to
> >>>> succeed but crash Cloudmonkey.
> >>>>
> >>>>
> >>>
> >>
> -------------------------------------------------------------------------------------------
> >>>> Yu-Heng (Ryan) Lei, Associate Researcher
> >>>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> >>>> ryanlei@cht.com.tw<
> >>>
> >>
> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
> >>>>
> >>>> or
> >>>> ryanlei750328@gmail.com
> >>>>
> >>>>
> >>>>
> >>>> On Fri, Oct 25, 2013 at 7:02 PM, Rohit Yadav <bh...@apache.org>
> >>> wrote:
> >>>>
> >>>>> Hi Ryan,
> >>>>>
> >>>>> Will check this next week, the issue is clearly with response which
> >>> lacks a
> >>>>> key with name 'response' in it, it could be a case issue as well. Can
> >>> you
> >>>>> share with us the response json from cloudmonkey's log in
> >>>>> ~/.cloudmonkey/log, you may confirm the keys from the json. Also,
> >> check
> >>> if
> >>>>> you're allowed to call the API as different user groups can have
> >> access
> >>> to
> >>>>> different set of APIs.
> >>>>>
> >>>>> Cheers.
> >>>>>
> >>>>>
> >>>>> On Fri, Oct 25, 2013 at 2:27 PM, Ryan Lei <ry...@cht.com.tw>
> wrote:
> >>>>>
> >>>>>> I'm using Cloudmonkey 5.0.0 under CloudStack 4.2.0 + XenServer 6.2.
> >>>>>> For now, the only way to change the ownership of a VM is by the
> >>>>>> assignVirtualMachine API.
> >>>>>>
> >>>>>> But executing this API using Cloudmonkey leads to the following
> error
> >>>>> that
> >>>>>> crashes the program:
> >>>>>>
> >>>>>>> assign virtualmachine
> >>>>>> virtualmachineid=7fe548bb-b2a7-4aec-92c5-5012ef9fd4f4
> >>>>> account=domain1-user1
> >>>>>> domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f
> >>>>>> Traceback (most recent call last):
> >>>>>> File "/usr/bin/cloudmonkey", line 9, in <module>
> >>>>>>   load_entry_point('cloudmonkey==5.0.0', 'console_scripts',
> >>>>>> 'cloudmonkey')()
> >>>>>> File
> >>>>>>
> >>>>>>
> >>>>>
> >>>
> >>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> >>>>>> line 536, in main
> >>>>>>   shell.cmdloop()
> >>>>>> File
> >>>>>>
> >>>>>>
> >>>>>
> >>>
> >>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> >>>>>> line 106, in cmdloop
> >>>>>>   super(CloudMonkeyShell, self).cmdloop(intro="")
> >>>>>> File "/usr/lib64/python2.6/cmd.py", line 142, in cmdloop
> >>>>>>   stop = self.onecmd(line)
> >>>>>> File "/usr/lib64/python2.6/cmd.py", line 219, in onecmd
> >>>>>>   return func(arg)
> >>>>>> File
> >>>>>>
> >>>>>>
> >>>>>
> >>>
> >>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> >>>>>> line 134, in grammar_closure
> >>>>>>   self.default("%s %s" % (cmd, args))
> >>>>>> File
> >>>>>>
> >>>>>>
> >>>>>
> >>>
> >>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> >>>>>> line 303, in default
> >>>>>>   result = self.make_request(apiname, args_dict, isasync)
> >>>>>> File
> >>>>>>
> >>>>>>
> >>>>>
> >>>
> >>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> >>>>>> line 257, in make_request
> >>>>>>   self.timeout, self.protocol, self.path)
> >>>>>> File
> >>>>>>
> >>>>>>
> >>>>>
> >>>
> >>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/requester.py",
> >>>>>> line 121, in monkeyrequest
> >>>>>>   responsekey = filter(lambda x: 'response' in x,
> >> response.keys())[0]
> >>>>>> IndexError: list index out of range
> >>>>>> [cs42]~#
> >>>>>>
> >>>>>> However, the account of VM DOES change successfully, checked from
> >> both
> >>>>> the
> >>>>>> UI and API.
> >>>>>> And after the change, only the new VM owner and their admins and see
> >>> this
> >>>>>> VM.
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>
> >>
> -------------------------------------------------------------------------------------------
> >>>>>> Yu-Heng (Ryan) Lei, Associate Researcher
> >>>>>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> >>>>>> ryanlei@cht.com.tw<
> >>>>>>
> >>>>>
> >>>
> >>
> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
> >>>>>>>
> >>>>>> or
> >>>>>> ryanlei750328@gmail.com
> >>>>>>
> >>>>>
> >>>
> >>>
> >>
>
>

Re: [Cloudmonkey] assignVirtualMachine API causes index out of range error

Posted by sebgoa <ru...@gmail.com>.
On Nov 8, 2013, at 10:29 AM, Ryan Lei <ry...@cht.com.tw> wrote:

> Super. The Cloudmonkey crash is fixed now. Thanks a a lot, Sebastien!!
> 
> You are right about this line:
> - response.setResponseName(DeployVMCmd.getResultObjectName());
> + response.setResponseName(getCommandName());
> 
> Please also commit this change to master.
> 

great thanks for testing it, I applied it to master.
Can you close the bug please.

> -------------------------------------------------------------------------------------------
> Yu-Heng (Ryan) Lei, Associate Researcher
> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> ryanlei@cht.com.tw or ryanlei750328@gmail.com
> 
> 
> 
> On Fri, Nov 8, 2013 at 4:50 PM, Sebastien Goasguen <ru...@gmail.com> wrote:
> 
>> Ryan,
>> 
>> I found another bug in that class, can you try again with a fresh pull of
>> 4.2 branch ?
>> 
>> thanks
>> 
>> On Nov 8, 2013, at 3:40 AM, Sebastien Goasguen <ru...@gmail.com> wrote:
>> 
>>> Can you get on IRC ?
>>> 
>>> On Nov 8, 2013, at 3:27 AM, Ryan Lei <ry...@cht.com.tw> wrote:
>>> 
>>>> Finally got a new environment to build from source code (4.2 branch).
>>>> Unfortunately, it still crashes Cloudmonkey. The error messages are
>> exactly
>>>> the same. Here's the new Cloudmonkey log:
>>>> 
>>>> 2013-11-08 16:15:34,242 - requester.py:45 - [DEBUG] ======== START
>> Request
>>>> ========
>>>> 2013-11-08 16:15:34,242 - requester.py:45 - [DEBUG] Requesting
>>>> command=assignVirtualMachine, args={'account': 'user', 'domainid':
>>>> 'e55f7756-4842-11e3-a696-f6180bef7a51', 'virtualmachineid':
>>>> 'd4da5cd7-9f68-4fd0-beda-c285e432911d'}
>>>> 2013-11-08 16:15:34,243 - requester.py:45 - [DEBUG] Request sent:
>>>> 
>> http://localhost:8080/client/api?account=user&apiKey=Jxqh9fiJhBVaXHoBKSvNvqhYl3j-qNW_04kDoyW27RgZMiJe0pduFfUuRP8cPnOEAFZnyIrrGoZaVUubWk9JQQ&command=assignVirtualMachine&domainid=e55f7756-4842-11e3-a696-f6180bef7a51&response=json&virtualmachineid=d4da5cd7-9f68-4fd0-beda-c285e432911d&signature=opZc9bQmW34AN1OcVps%2Fxb%2BKtVU%3D
>>>> 2013-11-08 16:15:34,488 - requester.py:45 - [DEBUG] Response received: {
>>>> "virtualmachine" :  { "virtualmachine" :
>>>> 
>> {"id":"d4da5cd7-9f68-4fd0-beda-c285e432911d","name":"assignVM-API","displayname":"assignVM-API","account":"user","domainid":"e55f7756-4842-11e3-a696-f6180bef7a51","domain":"ROOT","created":"2013-11-08T16:08:58+0800","state":"Stopping","haenable":false,"zoneid":"0c1268f1-efda-42a8-80a7-5e7d2a6aaf0a","zonename":"Zone","hostid":"24f982b3-3a9a-4fb5-ba78-9e44c04a2e39","hostname":"xenserver-205-15","templateid":"91050f5c-3212-4412-85d1-0035a0f754ef","templatename":"CentOS-6.4-x86_64-XS62","templatedisplaytext":"CentOS-6.4-x86_64-XS62","passwordenabled":false,"serviceofferingid":"1c081f6f-fa14-4db3-b5ec-34c203f6b9b5","serviceofferingname":"Medium
>>>> 
>> Instance","cpunumber":1,"cpuspeed":1000,"memory":1024,"cpuused":"0.01%","networkkbsread":0,"networkkbswrite":1,"diskkbsread":0,"diskkbswrite":0,"diskioread":0,"diskiowrite":0,"guestosid":"e4f94c9c-4842-11e3-a696-f6180bef7a51","rootdeviceid":0,"rootdevicetype":"ROOT","securitygroup":[],"nic":[{"id":"c18c7ef0-061f-404c-baab-4ffd585cbfec","networkid":"26642bfa-a037-40a0-bcaf-81aded2a4cf4","networkname":"user-1","netmask":"255.255.255.0","gateway":"10.1.1.1","ipaddress":"10.1.1.228","isolationuri":"vlan://850","broadcasturi":"vlan://850","traffictype":"Guest","type":"Isolated","isdefault":true,"macaddress":"02:00:47:3e:00:03"}],"hypervisor":"XenServer","instancename":"i-2-8-VM","tags":[],"affinitygroup":[],"displayvm":true,"isdynamicallyscalable":true,"details":{"hypervisortoolsversion":"xenserver56"},"jobid":"d9368add-bc64-45f7-83a7-de498cef730b","jobstatus":0}
>>>> }  }
>>>> 2013-11-08 16:15:34,488 - requester.py:45 - [DEBUG] ======== END Request
>>>> ========
>>>> 
>>>> Hence, I'm reopening the ticket:
>>>> https://issues.apache.org/jira/browse/CLOUDSTACK-4998
>>>> 
>>>> 
>>>> 
>> -------------------------------------------------------------------------------------------
>>>> Yu-Heng (Ryan) Lei, Associate Researcher
>>>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
>>>> ryanlei@cht.com.tw or ryanlei750328@gmail.com
>>>> 
>>>> 
>>>> 
>>>> On Wed, Oct 30, 2013 at 4:11 PM, Sebastien Goasguen <runseb@gmail.com
>>> wrote:
>>>> 
>>>>> 
>>>>> On Oct 30, 2013, at 2:40 AM, Ryan Lei <ry...@cht.com.tw> wrote:
>>>>> 
>>>>>> Ticket created:
>>>>>> https://issues.apache.org/jira/browse/CLOUDSTACK-4998
>>>>>> 
>>>>> 
>>>>> Ryan, I fixed it in master and 4.2. Any chance you can compile from
>> source
>>>>> and check again ?
>>>>> 
>>>>> thanks
>>>>> 
>>>>> 
>>>>>> 
>>>>> 
>> -------------------------------------------------------------------------------------------
>>>>>> Yu-Heng (Ryan) Lei, Associate Researcher
>>>>>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
>>>>>> ryanlei@cht.com.tw<
>>>>> 
>> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
>>>>>> 
>>>>>> or
>>>>>> ryanlei750328@gmail.com
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On Wed, Oct 30, 2013 at 2:04 PM, Rohit Yadav <bh...@apache.org>
>>>>> wrote:
>>>>>> 
>>>>>>> On Mon, Oct 28, 2013 at 1:52 PM, Sebastien Goasguen <
>> runseb@gmail.com
>>>>>>>> wrote:
>>>>>>> 
>>>>>>>> I think the error is in the java code of AssignVirtualMachine:
>>>>>>>> api/src/org/apache/cloudstack/api/command/admin/vm/AssignVMCmd.java:
>>>>>>>> 
>>>>>>>> @APICommand(name = "assignVirtualMachine", description="Change
>>>>> ownership
>>>>>>>> of a VM from one account to another. This API is available for Basic
>>>>>>> zones
>>>>>>>> with security groups and Advanced zones with guest networks. A root
>>>>>>>> administrator can reassign a VM from any account to any other
>> account
>>>>> in
>>>>>>>> any domain. A domain administrator can reassign a VM to any account
>> in
>>>>>>> the
>>>>>>>> same domain.", responseObject=UserVmResponse.class, since="3.0.0")
>>>>>>>> public class AssignVMCmd extends BaseCmd  {
>>>>>>>> public static final Logger s_logger =
>>>>>>>> Logger.getLogger(AssignVMCmd.class.getName());
>>>>>>>> 
>>>>>>>> private static final String s_name = "moveuservmresponse";
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Shouldn't the string be "assignvirtualmachineresponse" ?
>>>>>>>> 
>>>>>>> 
>>>>>>> Thanks Ryan for the output, Sebastien is right the response string of
>>>>>>> AssignVMCmd
>>>>>>> should be fixed. Please open a bug ticket, patch contributions are
>> most
>>>>>>> welcome :)
>>>>>>> 
>>>>>>> Regards.
>>>>>>> 
>>>>>>> 
>>>>>>>> 
>>>>>>>> On Oct 27, 2013, at 11:02 PM, Ryan Lei <ry...@cht.com.tw> wrote:
>>>>>>>> 
>>>>>>>>> Here's the assignVirtualMachine response json from log:
>>>>>>>>> 
>>>>>>>>> 2013-10-25 17:02:54,107 - cloudmonkey.py:83 - [DEBUG] Loaded config
>>>>>>>> fields:
>>>>>>>>> ['cache_file=/root/.cloudmonkey/cache',
>>>>>>>>> 'log_file=/root/.cloudmonkey/log', 'asyncblock=true',
>>>>>>>>> 'paramcompletion=false', 'history_file=/root/.cloudmonkey/history',
>>>>>>>>> 'color=true', 'prompt=> ', 'display=table',
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>> 'secretkey=wOV6_F8BZXxXV0zfX_DLVscCtbGrZgV3h8AcWfQLIa-OBCddLJimXTIQaM9hFH5ggItwwIFcivjJ77zn7LjWCQ',
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>> 'apikey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA',
>>>>>>>>> 'path=/client/api', 'host=localhost', 'protocol=http', 'port=8080',
>>>>>>>>> 'timeout=3600']
>>>>>>>>> 
>>>>>>>>> 2013-10-25 17:03:19,839 - requester.py:45 - [DEBUG] ======== START
>>>>>>>>> Request ========
>>>>>>>>> 2013-10-25 17:03:19,840 - requester.py:45 - [DEBUG] Requesting
>>>>>>>>> command=assignVirtualMachine, args={'account': 'domain1-user2',
>>>>>>>>> 'domainid': 'cfc19b03-0858-4f39-9058-e0b67685bc2f',
>>>>>>>>> 'virtualmachineid': '939f1c53-91e8-47a1-92d1-9ec9c2c1802c'}
>>>>>>>>> 2013-10-25 17:03:19,841 - requester.py:45 - [DEBUG] Request sent:
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>> http://localhost:8080/client/api?account=domain1-user2&apiKey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA&command=assignVirtualMachine&domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f&response=json&virtualmachineid=939f1c53-91e8-47a1-92d1-9ec9c2c1802c&signature=gcqky6emSpV08QHZuavLZFS6Pcg%3D
>>>>>>>>> 
>>>>>>>>> 2013-10-25 17:03:20,107 - requester.py:45 - [DEBUG] Response
>> received:
>>>>>>>>> { "virtualmachine" :  { "virtualmachine" :
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>> {"id":"939f1c53-91e8-47a1-92d1-9ec9c2c1802c","name":"domain1-admin","displayname":"domain1-admin","account":"domain1-user2","domainid":"cfc19b03-0858-4f39-9058-e0b67685bc2f","domain":"domain1","created":"2013-10-25T15:15:03+0800","state":"Stopped","haenable":false,"zoneid":"6e0b2791-513e-49be-bbd8-62c2597640ef","zonename":"Zone-Xen","templateid":"855b7915-9739-4ad7-945e-8b8514040198","templatename":"CentOS-6.4-x86_64
>>>>>>>>> (scalable)","templatedisplaytext":"CentOS-6.4-x86_64
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>> (scalable)","passwordenabled":false,"serviceofferingid":"32f7668c-5edd-4152-b927-c7b744281dc2","serviceofferingname":"Small
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>> Instance","cpunumber":1,"cpuspeed":500,"memory":512,"cpuused":"0%","networkkbsread":0,"networkkbswrite":1,"diskkbsread":0,"diskkbswrite":0,"diskioread":0,"diskiowrite":0,"guestosid":"f70b6aaa-37da-11e3-9cb9-46ca9f9b4d97","rootdeviceid":0,"rootdevicetype":"ROOT","securitygroup":[],"nic":[{"id":"2f2a6ff3-ab11-4127-8991-2813a9a1c3ba","networkid":"aad53b98-3a6c-4cd3-a1e3-cbb84834d8c1","networkname":"domain1-user2-network","netmask":"255.255.255.0","gateway":"10.1.1.1","ipaddress":"10.1.1.204","traffictype":"Guest","type":"Isolated","isdefault":true,"macaddress":"02:00:17:61:00:01"}],"hypervisor":"XenServer","tags":[],"affinitygroup":[],"displayvm":true,"isdynamicallyscalable":true}
>>>>>>>>> }  }
>>>>>>>>> 2013-10-25 17:03:20,108 - requester.py:45 - [DEBUG] ======== END
>>>>>>>>> Request ========
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> I'm using Cloudmonkey from git (corresponding to 5.0.0), and I have
>>>>>>> tried
>>>>>>>>> using root admin and domain admin to call this API. Both turned
>> out to
>>>>>>>>> succeed but crash Cloudmonkey.
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>> -------------------------------------------------------------------------------------------
>>>>>>>>> Yu-Heng (Ryan) Lei, Associate Researcher
>>>>>>>>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
>>>>>>>>> ryanlei@cht.com.tw<
>>>>>>>> 
>>>>>>> 
>>>>> 
>> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
>>>>>>>>> 
>>>>>>>>> or
>>>>>>>>> ryanlei750328@gmail.com
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On Fri, Oct 25, 2013 at 7:02 PM, Rohit Yadav <bh...@apache.org>
>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>>> Hi Ryan,
>>>>>>>>>> 
>>>>>>>>>> Will check this next week, the issue is clearly with response
>> which
>>>>>>>> lacks a
>>>>>>>>>> key with name 'response' in it, it could be a case issue as well.
>> Can
>>>>>>>> you
>>>>>>>>>> share with us the response json from cloudmonkey's log in
>>>>>>>>>> ~/.cloudmonkey/log, you may confirm the keys from the json. Also,
>>>>>>> check
>>>>>>>> if
>>>>>>>>>> you're allowed to call the API as different user groups can have
>>>>>>> access
>>>>>>>> to
>>>>>>>>>> different set of APIs.
>>>>>>>>>> 
>>>>>>>>>> Cheers.
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> On Fri, Oct 25, 2013 at 2:27 PM, Ryan Lei <ry...@cht.com.tw>
>>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>>> I'm using Cloudmonkey 5.0.0 under CloudStack 4.2.0 + XenServer
>> 6.2.
>>>>>>>>>>> For now, the only way to change the ownership of a VM is by the
>>>>>>>>>>> assignVirtualMachine API.
>>>>>>>>>>> 
>>>>>>>>>>> But executing this API using Cloudmonkey leads to the following
>>>>> error
>>>>>>>>>> that
>>>>>>>>>>> crashes the program:
>>>>>>>>>>> 
>>>>>>>>>>>> assign virtualmachine
>>>>>>>>>>> virtualmachineid=7fe548bb-b2a7-4aec-92c5-5012ef9fd4f4
>>>>>>>>>> account=domain1-user1
>>>>>>>>>>> domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f
>>>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>>> File "/usr/bin/cloudmonkey", line 9, in <module>
>>>>>>>>>>> load_entry_point('cloudmonkey==5.0.0', 'console_scripts',
>>>>>>>>>>> 'cloudmonkey')()
>>>>>>>>>>> File
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>>>>>>>>>> line 536, in main
>>>>>>>>>>> shell.cmdloop()
>>>>>>>>>>> File
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>>>>>>>>>> line 106, in cmdloop
>>>>>>>>>>> super(CloudMonkeyShell, self).cmdloop(intro="")
>>>>>>>>>>> File "/usr/lib64/python2.6/cmd.py", line 142, in cmdloop
>>>>>>>>>>> stop = self.onecmd(line)
>>>>>>>>>>> File "/usr/lib64/python2.6/cmd.py", line 219, in onecmd
>>>>>>>>>>> return func(arg)
>>>>>>>>>>> File
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>>>>>>>>>> line 134, in grammar_closure
>>>>>>>>>>> self.default("%s %s" % (cmd, args))
>>>>>>>>>>> File
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>>>>>>>>>> line 303, in default
>>>>>>>>>>> result = self.make_request(apiname, args_dict, isasync)
>>>>>>>>>>> File
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>>>>>>>>>> line 257, in make_request
>>>>>>>>>>> self.timeout, self.protocol, self.path)
>>>>>>>>>>> File
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/requester.py",
>>>>>>>>>>> line 121, in monkeyrequest
>>>>>>>>>>> responsekey = filter(lambda x: 'response' in x,
>>>>>>> response.keys())[0]
>>>>>>>>>>> IndexError: list index out of range
>>>>>>>>>>> [cs42]~#
>>>>>>>>>>> 
>>>>>>>>>>> However, the account of VM DOES change successfully, checked from
>>>>>>> both
>>>>>>>>>> the
>>>>>>>>>>> UI and API.
>>>>>>>>>>> And after the change, only the new VM owner and their admins and
>> see
>>>>>>>> this
>>>>>>>>>>> VM.
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>> -------------------------------------------------------------------------------------------
>>>>>>>>>>> Yu-Heng (Ryan) Lei, Associate Researcher
>>>>>>>>>>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
>>>>>>>>>>> ryanlei@cht.com.tw<
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
>>>>>>>>>>>> 
>>>>>>>>>>> or
>>>>>>>>>>> ryanlei750328@gmail.com
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>>>>> 
>>> 
>> 
>> 


Re: [Cloudmonkey] assignVirtualMachine API causes index out of range error

Posted by Ryan Lei <ry...@cht.com.tw>.
Super. The Cloudmonkey crash is fixed now. Thanks a a lot, Sebastien!!

You are right about this line:
- response.setResponseName(DeployVMCmd.getResultObjectName());
+ response.setResponseName(getCommandName());

Please also commit this change to master.

-------------------------------------------------------------------------------------------
Yu-Heng (Ryan) Lei, Associate Researcher
Chunghwa Telecom Laboratories / Cloud Computing Laboratory
ryanlei@cht.com.tw or ryanlei750328@gmail.com



On Fri, Nov 8, 2013 at 4:50 PM, Sebastien Goasguen <ru...@gmail.com> wrote:

> Ryan,
>
> I found another bug in that class, can you try again with a fresh pull of
> 4.2 branch ?
>
> thanks
>
> On Nov 8, 2013, at 3:40 AM, Sebastien Goasguen <ru...@gmail.com> wrote:
>
> > Can you get on IRC ?
> >
> > On Nov 8, 2013, at 3:27 AM, Ryan Lei <ry...@cht.com.tw> wrote:
> >
> >> Finally got a new environment to build from source code (4.2 branch).
> >> Unfortunately, it still crashes Cloudmonkey. The error messages are
> exactly
> >> the same. Here's the new Cloudmonkey log:
> >>
> >> 2013-11-08 16:15:34,242 - requester.py:45 - [DEBUG] ======== START
> Request
> >> ========
> >> 2013-11-08 16:15:34,242 - requester.py:45 - [DEBUG] Requesting
> >> command=assignVirtualMachine, args={'account': 'user', 'domainid':
> >> 'e55f7756-4842-11e3-a696-f6180bef7a51', 'virtualmachineid':
> >> 'd4da5cd7-9f68-4fd0-beda-c285e432911d'}
> >> 2013-11-08 16:15:34,243 - requester.py:45 - [DEBUG] Request sent:
> >>
> http://localhost:8080/client/api?account=user&apiKey=Jxqh9fiJhBVaXHoBKSvNvqhYl3j-qNW_04kDoyW27RgZMiJe0pduFfUuRP8cPnOEAFZnyIrrGoZaVUubWk9JQQ&command=assignVirtualMachine&domainid=e55f7756-4842-11e3-a696-f6180bef7a51&response=json&virtualmachineid=d4da5cd7-9f68-4fd0-beda-c285e432911d&signature=opZc9bQmW34AN1OcVps%2Fxb%2BKtVU%3D
> >> 2013-11-08 16:15:34,488 - requester.py:45 - [DEBUG] Response received: {
> >> "virtualmachine" :  { "virtualmachine" :
> >>
> {"id":"d4da5cd7-9f68-4fd0-beda-c285e432911d","name":"assignVM-API","displayname":"assignVM-API","account":"user","domainid":"e55f7756-4842-11e3-a696-f6180bef7a51","domain":"ROOT","created":"2013-11-08T16:08:58+0800","state":"Stopping","haenable":false,"zoneid":"0c1268f1-efda-42a8-80a7-5e7d2a6aaf0a","zonename":"Zone","hostid":"24f982b3-3a9a-4fb5-ba78-9e44c04a2e39","hostname":"xenserver-205-15","templateid":"91050f5c-3212-4412-85d1-0035a0f754ef","templatename":"CentOS-6.4-x86_64-XS62","templatedisplaytext":"CentOS-6.4-x86_64-XS62","passwordenabled":false,"serviceofferingid":"1c081f6f-fa14-4db3-b5ec-34c203f6b9b5","serviceofferingname":"Medium
> >>
> Instance","cpunumber":1,"cpuspeed":1000,"memory":1024,"cpuused":"0.01%","networkkbsread":0,"networkkbswrite":1,"diskkbsread":0,"diskkbswrite":0,"diskioread":0,"diskiowrite":0,"guestosid":"e4f94c9c-4842-11e3-a696-f6180bef7a51","rootdeviceid":0,"rootdevicetype":"ROOT","securitygroup":[],"nic":[{"id":"c18c7ef0-061f-404c-baab-4ffd585cbfec","networkid":"26642bfa-a037-40a0-bcaf-81aded2a4cf4","networkname":"user-1","netmask":"255.255.255.0","gateway":"10.1.1.1","ipaddress":"10.1.1.228","isolationuri":"vlan://850","broadcasturi":"vlan://850","traffictype":"Guest","type":"Isolated","isdefault":true,"macaddress":"02:00:47:3e:00:03"}],"hypervisor":"XenServer","instancename":"i-2-8-VM","tags":[],"affinitygroup":[],"displayvm":true,"isdynamicallyscalable":true,"details":{"hypervisortoolsversion":"xenserver56"},"jobid":"d9368add-bc64-45f7-83a7-de498cef730b","jobstatus":0}
> >> }  }
> >> 2013-11-08 16:15:34,488 - requester.py:45 - [DEBUG] ======== END Request
> >> ========
> >>
> >> Hence, I'm reopening the ticket:
> >> https://issues.apache.org/jira/browse/CLOUDSTACK-4998
> >>
> >>
> >>
> -------------------------------------------------------------------------------------------
> >> Yu-Heng (Ryan) Lei, Associate Researcher
> >> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> >> ryanlei@cht.com.tw or ryanlei750328@gmail.com
> >>
> >>
> >>
> >> On Wed, Oct 30, 2013 at 4:11 PM, Sebastien Goasguen <runseb@gmail.com
> >wrote:
> >>
> >>>
> >>> On Oct 30, 2013, at 2:40 AM, Ryan Lei <ry...@cht.com.tw> wrote:
> >>>
> >>>> Ticket created:
> >>>> https://issues.apache.org/jira/browse/CLOUDSTACK-4998
> >>>>
> >>>
> >>> Ryan, I fixed it in master and 4.2. Any chance you can compile from
> source
> >>> and check again ?
> >>>
> >>> thanks
> >>>
> >>>
> >>>>
> >>>
> -------------------------------------------------------------------------------------------
> >>>> Yu-Heng (Ryan) Lei, Associate Researcher
> >>>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> >>>> ryanlei@cht.com.tw<
> >>>
> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
> >>>>
> >>>> or
> >>>> ryanlei750328@gmail.com
> >>>>
> >>>>
> >>>>
> >>>> On Wed, Oct 30, 2013 at 2:04 PM, Rohit Yadav <bh...@apache.org>
> >>> wrote:
> >>>>
> >>>>> On Mon, Oct 28, 2013 at 1:52 PM, Sebastien Goasguen <
> runseb@gmail.com
> >>>>>> wrote:
> >>>>>
> >>>>>> I think the error is in the java code of AssignVirtualMachine:
> >>>>>> api/src/org/apache/cloudstack/api/command/admin/vm/AssignVMCmd.java:
> >>>>>>
> >>>>>> @APICommand(name = "assignVirtualMachine", description="Change
> >>> ownership
> >>>>>> of a VM from one account to another. This API is available for Basic
> >>>>> zones
> >>>>>> with security groups and Advanced zones with guest networks. A root
> >>>>>> administrator can reassign a VM from any account to any other
> account
> >>> in
> >>>>>> any domain. A domain administrator can reassign a VM to any account
> in
> >>>>> the
> >>>>>> same domain.", responseObject=UserVmResponse.class, since="3.0.0")
> >>>>>> public class AssignVMCmd extends BaseCmd  {
> >>>>>>  public static final Logger s_logger =
> >>>>>> Logger.getLogger(AssignVMCmd.class.getName());
> >>>>>>
> >>>>>> private static final String s_name = "moveuservmresponse";
> >>>>>>
> >>>>>>
> >>>>>> Shouldn't the string be "assignvirtualmachineresponse" ?
> >>>>>>
> >>>>>
> >>>>> Thanks Ryan for the output, Sebastien is right the response string of
> >>>>> AssignVMCmd
> >>>>> should be fixed. Please open a bug ticket, patch contributions are
> most
> >>>>> welcome :)
> >>>>>
> >>>>> Regards.
> >>>>>
> >>>>>
> >>>>>>
> >>>>>> On Oct 27, 2013, at 11:02 PM, Ryan Lei <ry...@cht.com.tw> wrote:
> >>>>>>
> >>>>>>> Here's the assignVirtualMachine response json from log:
> >>>>>>>
> >>>>>>> 2013-10-25 17:02:54,107 - cloudmonkey.py:83 - [DEBUG] Loaded config
> >>>>>> fields:
> >>>>>>> ['cache_file=/root/.cloudmonkey/cache',
> >>>>>>> 'log_file=/root/.cloudmonkey/log', 'asyncblock=true',
> >>>>>>> 'paramcompletion=false', 'history_file=/root/.cloudmonkey/history',
> >>>>>>> 'color=true', 'prompt=> ', 'display=table',
> >>>>>>>
> >>>>>>
> >>>>>
> >>>
> 'secretkey=wOV6_F8BZXxXV0zfX_DLVscCtbGrZgV3h8AcWfQLIa-OBCddLJimXTIQaM9hFH5ggItwwIFcivjJ77zn7LjWCQ',
> >>>>>>>
> >>>>>>
> >>>>>
> >>>
> 'apikey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA',
> >>>>>>> 'path=/client/api', 'host=localhost', 'protocol=http', 'port=8080',
> >>>>>>> 'timeout=3600']
> >>>>>>>
> >>>>>>> 2013-10-25 17:03:19,839 - requester.py:45 - [DEBUG] ======== START
> >>>>>>> Request ========
> >>>>>>> 2013-10-25 17:03:19,840 - requester.py:45 - [DEBUG] Requesting
> >>>>>>> command=assignVirtualMachine, args={'account': 'domain1-user2',
> >>>>>>> 'domainid': 'cfc19b03-0858-4f39-9058-e0b67685bc2f',
> >>>>>>> 'virtualmachineid': '939f1c53-91e8-47a1-92d1-9ec9c2c1802c'}
> >>>>>>> 2013-10-25 17:03:19,841 - requester.py:45 - [DEBUG] Request sent:
> >>>>>>>
> >>>>>>
> >>>>>
> >>>
> http://localhost:8080/client/api?account=domain1-user2&apiKey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA&command=assignVirtualMachine&domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f&response=json&virtualmachineid=939f1c53-91e8-47a1-92d1-9ec9c2c1802c&signature=gcqky6emSpV08QHZuavLZFS6Pcg%3D
> >>>>>>>
> >>>>>>> 2013-10-25 17:03:20,107 - requester.py:45 - [DEBUG] Response
> received:
> >>>>>>> { "virtualmachine" :  { "virtualmachine" :
> >>>>>>>
> >>>>>>
> >>>>>
> >>>
> {"id":"939f1c53-91e8-47a1-92d1-9ec9c2c1802c","name":"domain1-admin","displayname":"domain1-admin","account":"domain1-user2","domainid":"cfc19b03-0858-4f39-9058-e0b67685bc2f","domain":"domain1","created":"2013-10-25T15:15:03+0800","state":"Stopped","haenable":false,"zoneid":"6e0b2791-513e-49be-bbd8-62c2597640ef","zonename":"Zone-Xen","templateid":"855b7915-9739-4ad7-945e-8b8514040198","templatename":"CentOS-6.4-x86_64
> >>>>>>> (scalable)","templatedisplaytext":"CentOS-6.4-x86_64
> >>>>>>>
> >>>>>>
> >>>>>
> >>>
> (scalable)","passwordenabled":false,"serviceofferingid":"32f7668c-5edd-4152-b927-c7b744281dc2","serviceofferingname":"Small
> >>>>>>>
> >>>>>>
> >>>>>
> >>>
> Instance","cpunumber":1,"cpuspeed":500,"memory":512,"cpuused":"0%","networkkbsread":0,"networkkbswrite":1,"diskkbsread":0,"diskkbswrite":0,"diskioread":0,"diskiowrite":0,"guestosid":"f70b6aaa-37da-11e3-9cb9-46ca9f9b4d97","rootdeviceid":0,"rootdevicetype":"ROOT","securitygroup":[],"nic":[{"id":"2f2a6ff3-ab11-4127-8991-2813a9a1c3ba","networkid":"aad53b98-3a6c-4cd3-a1e3-cbb84834d8c1","networkname":"domain1-user2-network","netmask":"255.255.255.0","gateway":"10.1.1.1","ipaddress":"10.1.1.204","traffictype":"Guest","type":"Isolated","isdefault":true,"macaddress":"02:00:17:61:00:01"}],"hypervisor":"XenServer","tags":[],"affinitygroup":[],"displayvm":true,"isdynamicallyscalable":true}
> >>>>>>> }  }
> >>>>>>> 2013-10-25 17:03:20,108 - requester.py:45 - [DEBUG] ======== END
> >>>>>>> Request ========
> >>>>>>>
> >>>>>>>
> >>>>>>> I'm using Cloudmonkey from git (corresponding to 5.0.0), and I have
> >>>>> tried
> >>>>>>> using root admin and domain admin to call this API. Both turned
> out to
> >>>>>>> succeed but crash Cloudmonkey.
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>
> >>>
> -------------------------------------------------------------------------------------------
> >>>>>>> Yu-Heng (Ryan) Lei, Associate Researcher
> >>>>>>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> >>>>>>> ryanlei@cht.com.tw<
> >>>>>>
> >>>>>
> >>>
> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
> >>>>>>>
> >>>>>>> or
> >>>>>>> ryanlei750328@gmail.com
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> On Fri, Oct 25, 2013 at 7:02 PM, Rohit Yadav <bh...@apache.org>
> >>>>>> wrote:
> >>>>>>>
> >>>>>>>> Hi Ryan,
> >>>>>>>>
> >>>>>>>> Will check this next week, the issue is clearly with response
> which
> >>>>>> lacks a
> >>>>>>>> key with name 'response' in it, it could be a case issue as well.
> Can
> >>>>>> you
> >>>>>>>> share with us the response json from cloudmonkey's log in
> >>>>>>>> ~/.cloudmonkey/log, you may confirm the keys from the json. Also,
> >>>>> check
> >>>>>> if
> >>>>>>>> you're allowed to call the API as different user groups can have
> >>>>> access
> >>>>>> to
> >>>>>>>> different set of APIs.
> >>>>>>>>
> >>>>>>>> Cheers.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> On Fri, Oct 25, 2013 at 2:27 PM, Ryan Lei <ry...@cht.com.tw>
> >>> wrote:
> >>>>>>>>
> >>>>>>>>> I'm using Cloudmonkey 5.0.0 under CloudStack 4.2.0 + XenServer
> 6.2.
> >>>>>>>>> For now, the only way to change the ownership of a VM is by the
> >>>>>>>>> assignVirtualMachine API.
> >>>>>>>>>
> >>>>>>>>> But executing this API using Cloudmonkey leads to the following
> >>> error
> >>>>>>>> that
> >>>>>>>>> crashes the program:
> >>>>>>>>>
> >>>>>>>>>> assign virtualmachine
> >>>>>>>>> virtualmachineid=7fe548bb-b2a7-4aec-92c5-5012ef9fd4f4
> >>>>>>>> account=domain1-user1
> >>>>>>>>> domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f
> >>>>>>>>> Traceback (most recent call last):
> >>>>>>>>> File "/usr/bin/cloudmonkey", line 9, in <module>
> >>>>>>>>> load_entry_point('cloudmonkey==5.0.0', 'console_scripts',
> >>>>>>>>> 'cloudmonkey')()
> >>>>>>>>> File
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>>
> >>>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> >>>>>>>>> line 536, in main
> >>>>>>>>> shell.cmdloop()
> >>>>>>>>> File
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>>
> >>>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> >>>>>>>>> line 106, in cmdloop
> >>>>>>>>> super(CloudMonkeyShell, self).cmdloop(intro="")
> >>>>>>>>> File "/usr/lib64/python2.6/cmd.py", line 142, in cmdloop
> >>>>>>>>> stop = self.onecmd(line)
> >>>>>>>>> File "/usr/lib64/python2.6/cmd.py", line 219, in onecmd
> >>>>>>>>> return func(arg)
> >>>>>>>>> File
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>>
> >>>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> >>>>>>>>> line 134, in grammar_closure
> >>>>>>>>> self.default("%s %s" % (cmd, args))
> >>>>>>>>> File
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>>
> >>>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> >>>>>>>>> line 303, in default
> >>>>>>>>> result = self.make_request(apiname, args_dict, isasync)
> >>>>>>>>> File
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>>
> >>>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> >>>>>>>>> line 257, in make_request
> >>>>>>>>> self.timeout, self.protocol, self.path)
> >>>>>>>>> File
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>>
> >>>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/requester.py",
> >>>>>>>>> line 121, in monkeyrequest
> >>>>>>>>> responsekey = filter(lambda x: 'response' in x,
> >>>>> response.keys())[0]
> >>>>>>>>> IndexError: list index out of range
> >>>>>>>>> [cs42]~#
> >>>>>>>>>
> >>>>>>>>> However, the account of VM DOES change successfully, checked from
> >>>>> both
> >>>>>>>> the
> >>>>>>>>> UI and API.
> >>>>>>>>> And after the change, only the new VM owner and their admins and
> see
> >>>>>> this
> >>>>>>>>> VM.
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>>
> >>>
> -------------------------------------------------------------------------------------------
> >>>>>>>>> Yu-Heng (Ryan) Lei, Associate Researcher
> >>>>>>>>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> >>>>>>>>> ryanlei@cht.com.tw<
> >>>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>>
> >>>
> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
> >>>>>>>>>>
> >>>>>>>>> or
> >>>>>>>>> ryanlei750328@gmail.com
> >>>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>
> >>>
> >
>
>

Re: [Cloudmonkey] assignVirtualMachine API causes index out of range error

Posted by Sebastien Goasguen <ru...@gmail.com>.
Ryan,

I found another bug in that class, can you try again with a fresh pull of 4.2 branch ?

thanks

On Nov 8, 2013, at 3:40 AM, Sebastien Goasguen <ru...@gmail.com> wrote:

> Can you get on IRC ?
> 
> On Nov 8, 2013, at 3:27 AM, Ryan Lei <ry...@cht.com.tw> wrote:
> 
>> Finally got a new environment to build from source code (4.2 branch).
>> Unfortunately, it still crashes Cloudmonkey. The error messages are exactly
>> the same. Here's the new Cloudmonkey log:
>> 
>> 2013-11-08 16:15:34,242 - requester.py:45 - [DEBUG] ======== START Request
>> ========
>> 2013-11-08 16:15:34,242 - requester.py:45 - [DEBUG] Requesting
>> command=assignVirtualMachine, args={'account': 'user', 'domainid':
>> 'e55f7756-4842-11e3-a696-f6180bef7a51', 'virtualmachineid':
>> 'd4da5cd7-9f68-4fd0-beda-c285e432911d'}
>> 2013-11-08 16:15:34,243 - requester.py:45 - [DEBUG] Request sent:
>> http://localhost:8080/client/api?account=user&apiKey=Jxqh9fiJhBVaXHoBKSvNvqhYl3j-qNW_04kDoyW27RgZMiJe0pduFfUuRP8cPnOEAFZnyIrrGoZaVUubWk9JQQ&command=assignVirtualMachine&domainid=e55f7756-4842-11e3-a696-f6180bef7a51&response=json&virtualmachineid=d4da5cd7-9f68-4fd0-beda-c285e432911d&signature=opZc9bQmW34AN1OcVps%2Fxb%2BKtVU%3D
>> 2013-11-08 16:15:34,488 - requester.py:45 - [DEBUG] Response received: {
>> "virtualmachine" :  { "virtualmachine" :
>> {"id":"d4da5cd7-9f68-4fd0-beda-c285e432911d","name":"assignVM-API","displayname":"assignVM-API","account":"user","domainid":"e55f7756-4842-11e3-a696-f6180bef7a51","domain":"ROOT","created":"2013-11-08T16:08:58+0800","state":"Stopping","haenable":false,"zoneid":"0c1268f1-efda-42a8-80a7-5e7d2a6aaf0a","zonename":"Zone","hostid":"24f982b3-3a9a-4fb5-ba78-9e44c04a2e39","hostname":"xenserver-205-15","templateid":"91050f5c-3212-4412-85d1-0035a0f754ef","templatename":"CentOS-6.4-x86_64-XS62","templatedisplaytext":"CentOS-6.4-x86_64-XS62","passwordenabled":false,"serviceofferingid":"1c081f6f-fa14-4db3-b5ec-34c203f6b9b5","serviceofferingname":"Medium
>> Instance","cpunumber":1,"cpuspeed":1000,"memory":1024,"cpuused":"0.01%","networkkbsread":0,"networkkbswrite":1,"diskkbsread":0,"diskkbswrite":0,"diskioread":0,"diskiowrite":0,"guestosid":"e4f94c9c-4842-11e3-a696-f6180bef7a51","rootdeviceid":0,"rootdevicetype":"ROOT","securitygroup":[],"nic":[{"id":"c18c7ef0-061f-404c-baab-4ffd585cbfec","networkid":"26642bfa-a037-40a0-bcaf-81aded2a4cf4","networkname":"user-1","netmask":"255.255.255.0","gateway":"10.1.1.1","ipaddress":"10.1.1.228","isolationuri":"vlan://850","broadcasturi":"vlan://850","traffictype":"Guest","type":"Isolated","isdefault":true,"macaddress":"02:00:47:3e:00:03"}],"hypervisor":"XenServer","instancename":"i-2-8-VM","tags":[],"affinitygroup":[],"displayvm":true,"isdynamicallyscalable":true,"details":{"hypervisortoolsversion":"xenserver56"},"jobid":"d9368add-bc64-45f7-83a7-de498cef730b","jobstatus":0}
>> }  }
>> 2013-11-08 16:15:34,488 - requester.py:45 - [DEBUG] ======== END Request
>> ========
>> 
>> Hence, I'm reopening the ticket:
>> https://issues.apache.org/jira/browse/CLOUDSTACK-4998
>> 
>> 
>> -------------------------------------------------------------------------------------------
>> Yu-Heng (Ryan) Lei, Associate Researcher
>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
>> ryanlei@cht.com.tw or ryanlei750328@gmail.com
>> 
>> 
>> 
>> On Wed, Oct 30, 2013 at 4:11 PM, Sebastien Goasguen <ru...@gmail.com>wrote:
>> 
>>> 
>>> On Oct 30, 2013, at 2:40 AM, Ryan Lei <ry...@cht.com.tw> wrote:
>>> 
>>>> Ticket created:
>>>> https://issues.apache.org/jira/browse/CLOUDSTACK-4998
>>>> 
>>> 
>>> Ryan, I fixed it in master and 4.2. Any chance you can compile from source
>>> and check again ?
>>> 
>>> thanks
>>> 
>>> 
>>>> 
>>> -------------------------------------------------------------------------------------------
>>>> Yu-Heng (Ryan) Lei, Associate Researcher
>>>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
>>>> ryanlei@cht.com.tw<
>>> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
>>>> 
>>>> or
>>>> ryanlei750328@gmail.com
>>>> 
>>>> 
>>>> 
>>>> On Wed, Oct 30, 2013 at 2:04 PM, Rohit Yadav <bh...@apache.org>
>>> wrote:
>>>> 
>>>>> On Mon, Oct 28, 2013 at 1:52 PM, Sebastien Goasguen <runseb@gmail.com
>>>>>> wrote:
>>>>> 
>>>>>> I think the error is in the java code of AssignVirtualMachine:
>>>>>> api/src/org/apache/cloudstack/api/command/admin/vm/AssignVMCmd.java:
>>>>>> 
>>>>>> @APICommand(name = "assignVirtualMachine", description="Change
>>> ownership
>>>>>> of a VM from one account to another. This API is available for Basic
>>>>> zones
>>>>>> with security groups and Advanced zones with guest networks. A root
>>>>>> administrator can reassign a VM from any account to any other account
>>> in
>>>>>> any domain. A domain administrator can reassign a VM to any account in
>>>>> the
>>>>>> same domain.", responseObject=UserVmResponse.class, since="3.0.0")
>>>>>> public class AssignVMCmd extends BaseCmd  {
>>>>>>  public static final Logger s_logger =
>>>>>> Logger.getLogger(AssignVMCmd.class.getName());
>>>>>> 
>>>>>> private static final String s_name = "moveuservmresponse";
>>>>>> 
>>>>>> 
>>>>>> Shouldn't the string be "assignvirtualmachineresponse" ?
>>>>>> 
>>>>> 
>>>>> Thanks Ryan for the output, Sebastien is right the response string of
>>>>> AssignVMCmd
>>>>> should be fixed. Please open a bug ticket, patch contributions are most
>>>>> welcome :)
>>>>> 
>>>>> Regards.
>>>>> 
>>>>> 
>>>>>> 
>>>>>> On Oct 27, 2013, at 11:02 PM, Ryan Lei <ry...@cht.com.tw> wrote:
>>>>>> 
>>>>>>> Here's the assignVirtualMachine response json from log:
>>>>>>> 
>>>>>>> 2013-10-25 17:02:54,107 - cloudmonkey.py:83 - [DEBUG] Loaded config
>>>>>> fields:
>>>>>>> ['cache_file=/root/.cloudmonkey/cache',
>>>>>>> 'log_file=/root/.cloudmonkey/log', 'asyncblock=true',
>>>>>>> 'paramcompletion=false', 'history_file=/root/.cloudmonkey/history',
>>>>>>> 'color=true', 'prompt=> ', 'display=table',
>>>>>>> 
>>>>>> 
>>>>> 
>>> 'secretkey=wOV6_F8BZXxXV0zfX_DLVscCtbGrZgV3h8AcWfQLIa-OBCddLJimXTIQaM9hFH5ggItwwIFcivjJ77zn7LjWCQ',
>>>>>>> 
>>>>>> 
>>>>> 
>>> 'apikey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA',
>>>>>>> 'path=/client/api', 'host=localhost', 'protocol=http', 'port=8080',
>>>>>>> 'timeout=3600']
>>>>>>> 
>>>>>>> 2013-10-25 17:03:19,839 - requester.py:45 - [DEBUG] ======== START
>>>>>>> Request ========
>>>>>>> 2013-10-25 17:03:19,840 - requester.py:45 - [DEBUG] Requesting
>>>>>>> command=assignVirtualMachine, args={'account': 'domain1-user2',
>>>>>>> 'domainid': 'cfc19b03-0858-4f39-9058-e0b67685bc2f',
>>>>>>> 'virtualmachineid': '939f1c53-91e8-47a1-92d1-9ec9c2c1802c'}
>>>>>>> 2013-10-25 17:03:19,841 - requester.py:45 - [DEBUG] Request sent:
>>>>>>> 
>>>>>> 
>>>>> 
>>> http://localhost:8080/client/api?account=domain1-user2&apiKey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA&command=assignVirtualMachine&domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f&response=json&virtualmachineid=939f1c53-91e8-47a1-92d1-9ec9c2c1802c&signature=gcqky6emSpV08QHZuavLZFS6Pcg%3D
>>>>>>> 
>>>>>>> 2013-10-25 17:03:20,107 - requester.py:45 - [DEBUG] Response received:
>>>>>>> { "virtualmachine" :  { "virtualmachine" :
>>>>>>> 
>>>>>> 
>>>>> 
>>> {"id":"939f1c53-91e8-47a1-92d1-9ec9c2c1802c","name":"domain1-admin","displayname":"domain1-admin","account":"domain1-user2","domainid":"cfc19b03-0858-4f39-9058-e0b67685bc2f","domain":"domain1","created":"2013-10-25T15:15:03+0800","state":"Stopped","haenable":false,"zoneid":"6e0b2791-513e-49be-bbd8-62c2597640ef","zonename":"Zone-Xen","templateid":"855b7915-9739-4ad7-945e-8b8514040198","templatename":"CentOS-6.4-x86_64
>>>>>>> (scalable)","templatedisplaytext":"CentOS-6.4-x86_64
>>>>>>> 
>>>>>> 
>>>>> 
>>> (scalable)","passwordenabled":false,"serviceofferingid":"32f7668c-5edd-4152-b927-c7b744281dc2","serviceofferingname":"Small
>>>>>>> 
>>>>>> 
>>>>> 
>>> Instance","cpunumber":1,"cpuspeed":500,"memory":512,"cpuused":"0%","networkkbsread":0,"networkkbswrite":1,"diskkbsread":0,"diskkbswrite":0,"diskioread":0,"diskiowrite":0,"guestosid":"f70b6aaa-37da-11e3-9cb9-46ca9f9b4d97","rootdeviceid":0,"rootdevicetype":"ROOT","securitygroup":[],"nic":[{"id":"2f2a6ff3-ab11-4127-8991-2813a9a1c3ba","networkid":"aad53b98-3a6c-4cd3-a1e3-cbb84834d8c1","networkname":"domain1-user2-network","netmask":"255.255.255.0","gateway":"10.1.1.1","ipaddress":"10.1.1.204","traffictype":"Guest","type":"Isolated","isdefault":true,"macaddress":"02:00:17:61:00:01"}],"hypervisor":"XenServer","tags":[],"affinitygroup":[],"displayvm":true,"isdynamicallyscalable":true}
>>>>>>> }  }
>>>>>>> 2013-10-25 17:03:20,108 - requester.py:45 - [DEBUG] ======== END
>>>>>>> Request ========
>>>>>>> 
>>>>>>> 
>>>>>>> I'm using Cloudmonkey from git (corresponding to 5.0.0), and I have
>>>>> tried
>>>>>>> using root admin and domain admin to call this API. Both turned out to
>>>>>>> succeed but crash Cloudmonkey.
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>> -------------------------------------------------------------------------------------------
>>>>>>> Yu-Heng (Ryan) Lei, Associate Researcher
>>>>>>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
>>>>>>> ryanlei@cht.com.tw<
>>>>>> 
>>>>> 
>>> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
>>>>>>> 
>>>>>>> or
>>>>>>> ryanlei750328@gmail.com
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> On Fri, Oct 25, 2013 at 7:02 PM, Rohit Yadav <bh...@apache.org>
>>>>>> wrote:
>>>>>>> 
>>>>>>>> Hi Ryan,
>>>>>>>> 
>>>>>>>> Will check this next week, the issue is clearly with response which
>>>>>> lacks a
>>>>>>>> key with name 'response' in it, it could be a case issue as well. Can
>>>>>> you
>>>>>>>> share with us the response json from cloudmonkey's log in
>>>>>>>> ~/.cloudmonkey/log, you may confirm the keys from the json. Also,
>>>>> check
>>>>>> if
>>>>>>>> you're allowed to call the API as different user groups can have
>>>>> access
>>>>>> to
>>>>>>>> different set of APIs.
>>>>>>>> 
>>>>>>>> Cheers.
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On Fri, Oct 25, 2013 at 2:27 PM, Ryan Lei <ry...@cht.com.tw>
>>> wrote:
>>>>>>>> 
>>>>>>>>> I'm using Cloudmonkey 5.0.0 under CloudStack 4.2.0 + XenServer 6.2.
>>>>>>>>> For now, the only way to change the ownership of a VM is by the
>>>>>>>>> assignVirtualMachine API.
>>>>>>>>> 
>>>>>>>>> But executing this API using Cloudmonkey leads to the following
>>> error
>>>>>>>> that
>>>>>>>>> crashes the program:
>>>>>>>>> 
>>>>>>>>>> assign virtualmachine
>>>>>>>>> virtualmachineid=7fe548bb-b2a7-4aec-92c5-5012ef9fd4f4
>>>>>>>> account=domain1-user1
>>>>>>>>> domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f
>>>>>>>>> Traceback (most recent call last):
>>>>>>>>> File "/usr/bin/cloudmonkey", line 9, in <module>
>>>>>>>>> load_entry_point('cloudmonkey==5.0.0', 'console_scripts',
>>>>>>>>> 'cloudmonkey')()
>>>>>>>>> File
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>> 
>>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>>>>>>>> line 536, in main
>>>>>>>>> shell.cmdloop()
>>>>>>>>> File
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>> 
>>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>>>>>>>> line 106, in cmdloop
>>>>>>>>> super(CloudMonkeyShell, self).cmdloop(intro="")
>>>>>>>>> File "/usr/lib64/python2.6/cmd.py", line 142, in cmdloop
>>>>>>>>> stop = self.onecmd(line)
>>>>>>>>> File "/usr/lib64/python2.6/cmd.py", line 219, in onecmd
>>>>>>>>> return func(arg)
>>>>>>>>> File
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>> 
>>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>>>>>>>> line 134, in grammar_closure
>>>>>>>>> self.default("%s %s" % (cmd, args))
>>>>>>>>> File
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>> 
>>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>>>>>>>> line 303, in default
>>>>>>>>> result = self.make_request(apiname, args_dict, isasync)
>>>>>>>>> File
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>> 
>>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>>>>>>>> line 257, in make_request
>>>>>>>>> self.timeout, self.protocol, self.path)
>>>>>>>>> File
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>> 
>>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/requester.py",
>>>>>>>>> line 121, in monkeyrequest
>>>>>>>>> responsekey = filter(lambda x: 'response' in x,
>>>>> response.keys())[0]
>>>>>>>>> IndexError: list index out of range
>>>>>>>>> [cs42]~#
>>>>>>>>> 
>>>>>>>>> However, the account of VM DOES change successfully, checked from
>>>>> both
>>>>>>>> the
>>>>>>>>> UI and API.
>>>>>>>>> And after the change, only the new VM owner and their admins and see
>>>>>> this
>>>>>>>>> VM.
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>> 
>>> -------------------------------------------------------------------------------------------
>>>>>>>>> Yu-Heng (Ryan) Lei, Associate Researcher
>>>>>>>>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
>>>>>>>>> ryanlei@cht.com.tw<
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>> 
>>> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
>>>>>>>>>> 
>>>>>>>>> or
>>>>>>>>> ryanlei750328@gmail.com
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>> 
>>> 
> 


Re: [Cloudmonkey] assignVirtualMachine API causes index out of range error

Posted by Sebastien Goasguen <ru...@gmail.com>.
Can you get on IRC ?

On Nov 8, 2013, at 3:27 AM, Ryan Lei <ry...@cht.com.tw> wrote:

> Finally got a new environment to build from source code (4.2 branch).
> Unfortunately, it still crashes Cloudmonkey. The error messages are exactly
> the same. Here's the new Cloudmonkey log:
> 
> 2013-11-08 16:15:34,242 - requester.py:45 - [DEBUG] ======== START Request
> ========
> 2013-11-08 16:15:34,242 - requester.py:45 - [DEBUG] Requesting
> command=assignVirtualMachine, args={'account': 'user', 'domainid':
> 'e55f7756-4842-11e3-a696-f6180bef7a51', 'virtualmachineid':
> 'd4da5cd7-9f68-4fd0-beda-c285e432911d'}
> 2013-11-08 16:15:34,243 - requester.py:45 - [DEBUG] Request sent:
> http://localhost:8080/client/api?account=user&apiKey=Jxqh9fiJhBVaXHoBKSvNvqhYl3j-qNW_04kDoyW27RgZMiJe0pduFfUuRP8cPnOEAFZnyIrrGoZaVUubWk9JQQ&command=assignVirtualMachine&domainid=e55f7756-4842-11e3-a696-f6180bef7a51&response=json&virtualmachineid=d4da5cd7-9f68-4fd0-beda-c285e432911d&signature=opZc9bQmW34AN1OcVps%2Fxb%2BKtVU%3D
> 2013-11-08 16:15:34,488 - requester.py:45 - [DEBUG] Response received: {
> "virtualmachine" :  { "virtualmachine" :
> {"id":"d4da5cd7-9f68-4fd0-beda-c285e432911d","name":"assignVM-API","displayname":"assignVM-API","account":"user","domainid":"e55f7756-4842-11e3-a696-f6180bef7a51","domain":"ROOT","created":"2013-11-08T16:08:58+0800","state":"Stopping","haenable":false,"zoneid":"0c1268f1-efda-42a8-80a7-5e7d2a6aaf0a","zonename":"Zone","hostid":"24f982b3-3a9a-4fb5-ba78-9e44c04a2e39","hostname":"xenserver-205-15","templateid":"91050f5c-3212-4412-85d1-0035a0f754ef","templatename":"CentOS-6.4-x86_64-XS62","templatedisplaytext":"CentOS-6.4-x86_64-XS62","passwordenabled":false,"serviceofferingid":"1c081f6f-fa14-4db3-b5ec-34c203f6b9b5","serviceofferingname":"Medium
> Instance","cpunumber":1,"cpuspeed":1000,"memory":1024,"cpuused":"0.01%","networkkbsread":0,"networkkbswrite":1,"diskkbsread":0,"diskkbswrite":0,"diskioread":0,"diskiowrite":0,"guestosid":"e4f94c9c-4842-11e3-a696-f6180bef7a51","rootdeviceid":0,"rootdevicetype":"ROOT","securitygroup":[],"nic":[{"id":"c18c7ef0-061f-404c-baab-4ffd585cbfec","networkid":"26642bfa-a037-40a0-bcaf-81aded2a4cf4","networkname":"user-1","netmask":"255.255.255.0","gateway":"10.1.1.1","ipaddress":"10.1.1.228","isolationuri":"vlan://850","broadcasturi":"vlan://850","traffictype":"Guest","type":"Isolated","isdefault":true,"macaddress":"02:00:47:3e:00:03"}],"hypervisor":"XenServer","instancename":"i-2-8-VM","tags":[],"affinitygroup":[],"displayvm":true,"isdynamicallyscalable":true,"details":{"hypervisortoolsversion":"xenserver56"},"jobid":"d9368add-bc64-45f7-83a7-de498cef730b","jobstatus":0}
> }  }
> 2013-11-08 16:15:34,488 - requester.py:45 - [DEBUG] ======== END Request
> ========
> 
> Hence, I'm reopening the ticket:
> https://issues.apache.org/jira/browse/CLOUDSTACK-4998
> 
> 
> -------------------------------------------------------------------------------------------
> Yu-Heng (Ryan) Lei, Associate Researcher
> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> ryanlei@cht.com.tw or ryanlei750328@gmail.com
> 
> 
> 
> On Wed, Oct 30, 2013 at 4:11 PM, Sebastien Goasguen <ru...@gmail.com>wrote:
> 
>> 
>> On Oct 30, 2013, at 2:40 AM, Ryan Lei <ry...@cht.com.tw> wrote:
>> 
>>> Ticket created:
>>> https://issues.apache.org/jira/browse/CLOUDSTACK-4998
>>> 
>> 
>> Ryan, I fixed it in master and 4.2. Any chance you can compile from source
>> and check again ?
>> 
>> thanks
>> 
>> 
>>> 
>> -------------------------------------------------------------------------------------------
>>> Yu-Heng (Ryan) Lei, Associate Researcher
>>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
>>> ryanlei@cht.com.tw<
>> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
>>> 
>>> or
>>> ryanlei750328@gmail.com
>>> 
>>> 
>>> 
>>> On Wed, Oct 30, 2013 at 2:04 PM, Rohit Yadav <bh...@apache.org>
>> wrote:
>>> 
>>>> On Mon, Oct 28, 2013 at 1:52 PM, Sebastien Goasguen <runseb@gmail.com
>>>>> wrote:
>>>> 
>>>>> I think the error is in the java code of AssignVirtualMachine:
>>>>> api/src/org/apache/cloudstack/api/command/admin/vm/AssignVMCmd.java:
>>>>> 
>>>>> @APICommand(name = "assignVirtualMachine", description="Change
>> ownership
>>>>> of a VM from one account to another. This API is available for Basic
>>>> zones
>>>>> with security groups and Advanced zones with guest networks. A root
>>>>> administrator can reassign a VM from any account to any other account
>> in
>>>>> any domain. A domain administrator can reassign a VM to any account in
>>>> the
>>>>> same domain.", responseObject=UserVmResponse.class, since="3.0.0")
>>>>> public class AssignVMCmd extends BaseCmd  {
>>>>>   public static final Logger s_logger =
>>>>> Logger.getLogger(AssignVMCmd.class.getName());
>>>>> 
>>>>>  private static final String s_name = "moveuservmresponse";
>>>>> 
>>>>> 
>>>>> Shouldn't the string be "assignvirtualmachineresponse" ?
>>>>> 
>>>> 
>>>> Thanks Ryan for the output, Sebastien is right the response string of
>>>> AssignVMCmd
>>>> should be fixed. Please open a bug ticket, patch contributions are most
>>>> welcome :)
>>>> 
>>>> Regards.
>>>> 
>>>> 
>>>>> 
>>>>> On Oct 27, 2013, at 11:02 PM, Ryan Lei <ry...@cht.com.tw> wrote:
>>>>> 
>>>>>> Here's the assignVirtualMachine response json from log:
>>>>>> 
>>>>>> 2013-10-25 17:02:54,107 - cloudmonkey.py:83 - [DEBUG] Loaded config
>>>>> fields:
>>>>>> ['cache_file=/root/.cloudmonkey/cache',
>>>>>> 'log_file=/root/.cloudmonkey/log', 'asyncblock=true',
>>>>>> 'paramcompletion=false', 'history_file=/root/.cloudmonkey/history',
>>>>>> 'color=true', 'prompt=> ', 'display=table',
>>>>>> 
>>>>> 
>>>> 
>> 'secretkey=wOV6_F8BZXxXV0zfX_DLVscCtbGrZgV3h8AcWfQLIa-OBCddLJimXTIQaM9hFH5ggItwwIFcivjJ77zn7LjWCQ',
>>>>>> 
>>>>> 
>>>> 
>> 'apikey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA',
>>>>>> 'path=/client/api', 'host=localhost', 'protocol=http', 'port=8080',
>>>>>> 'timeout=3600']
>>>>>> 
>>>>>> 2013-10-25 17:03:19,839 - requester.py:45 - [DEBUG] ======== START
>>>>>> Request ========
>>>>>> 2013-10-25 17:03:19,840 - requester.py:45 - [DEBUG] Requesting
>>>>>> command=assignVirtualMachine, args={'account': 'domain1-user2',
>>>>>> 'domainid': 'cfc19b03-0858-4f39-9058-e0b67685bc2f',
>>>>>> 'virtualmachineid': '939f1c53-91e8-47a1-92d1-9ec9c2c1802c'}
>>>>>> 2013-10-25 17:03:19,841 - requester.py:45 - [DEBUG] Request sent:
>>>>>> 
>>>>> 
>>>> 
>> http://localhost:8080/client/api?account=domain1-user2&apiKey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA&command=assignVirtualMachine&domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f&response=json&virtualmachineid=939f1c53-91e8-47a1-92d1-9ec9c2c1802c&signature=gcqky6emSpV08QHZuavLZFS6Pcg%3D
>>>>>> 
>>>>>> 2013-10-25 17:03:20,107 - requester.py:45 - [DEBUG] Response received:
>>>>>> { "virtualmachine" :  { "virtualmachine" :
>>>>>> 
>>>>> 
>>>> 
>> {"id":"939f1c53-91e8-47a1-92d1-9ec9c2c1802c","name":"domain1-admin","displayname":"domain1-admin","account":"domain1-user2","domainid":"cfc19b03-0858-4f39-9058-e0b67685bc2f","domain":"domain1","created":"2013-10-25T15:15:03+0800","state":"Stopped","haenable":false,"zoneid":"6e0b2791-513e-49be-bbd8-62c2597640ef","zonename":"Zone-Xen","templateid":"855b7915-9739-4ad7-945e-8b8514040198","templatename":"CentOS-6.4-x86_64
>>>>>> (scalable)","templatedisplaytext":"CentOS-6.4-x86_64
>>>>>> 
>>>>> 
>>>> 
>> (scalable)","passwordenabled":false,"serviceofferingid":"32f7668c-5edd-4152-b927-c7b744281dc2","serviceofferingname":"Small
>>>>>> 
>>>>> 
>>>> 
>> Instance","cpunumber":1,"cpuspeed":500,"memory":512,"cpuused":"0%","networkkbsread":0,"networkkbswrite":1,"diskkbsread":0,"diskkbswrite":0,"diskioread":0,"diskiowrite":0,"guestosid":"f70b6aaa-37da-11e3-9cb9-46ca9f9b4d97","rootdeviceid":0,"rootdevicetype":"ROOT","securitygroup":[],"nic":[{"id":"2f2a6ff3-ab11-4127-8991-2813a9a1c3ba","networkid":"aad53b98-3a6c-4cd3-a1e3-cbb84834d8c1","networkname":"domain1-user2-network","netmask":"255.255.255.0","gateway":"10.1.1.1","ipaddress":"10.1.1.204","traffictype":"Guest","type":"Isolated","isdefault":true,"macaddress":"02:00:17:61:00:01"}],"hypervisor":"XenServer","tags":[],"affinitygroup":[],"displayvm":true,"isdynamicallyscalable":true}
>>>>>> }  }
>>>>>> 2013-10-25 17:03:20,108 - requester.py:45 - [DEBUG] ======== END
>>>>>> Request ========
>>>>>> 
>>>>>> 
>>>>>> I'm using Cloudmonkey from git (corresponding to 5.0.0), and I have
>>>> tried
>>>>>> using root admin and domain admin to call this API. Both turned out to
>>>>>> succeed but crash Cloudmonkey.
>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>> -------------------------------------------------------------------------------------------
>>>>>> Yu-Heng (Ryan) Lei, Associate Researcher
>>>>>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
>>>>>> ryanlei@cht.com.tw<
>>>>> 
>>>> 
>> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
>>>>>> 
>>>>>> or
>>>>>> ryanlei750328@gmail.com
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On Fri, Oct 25, 2013 at 7:02 PM, Rohit Yadav <bh...@apache.org>
>>>>> wrote:
>>>>>> 
>>>>>>> Hi Ryan,
>>>>>>> 
>>>>>>> Will check this next week, the issue is clearly with response which
>>>>> lacks a
>>>>>>> key with name 'response' in it, it could be a case issue as well. Can
>>>>> you
>>>>>>> share with us the response json from cloudmonkey's log in
>>>>>>> ~/.cloudmonkey/log, you may confirm the keys from the json. Also,
>>>> check
>>>>> if
>>>>>>> you're allowed to call the API as different user groups can have
>>>> access
>>>>> to
>>>>>>> different set of APIs.
>>>>>>> 
>>>>>>> Cheers.
>>>>>>> 
>>>>>>> 
>>>>>>> On Fri, Oct 25, 2013 at 2:27 PM, Ryan Lei <ry...@cht.com.tw>
>> wrote:
>>>>>>> 
>>>>>>>> I'm using Cloudmonkey 5.0.0 under CloudStack 4.2.0 + XenServer 6.2.
>>>>>>>> For now, the only way to change the ownership of a VM is by the
>>>>>>>> assignVirtualMachine API.
>>>>>>>> 
>>>>>>>> But executing this API using Cloudmonkey leads to the following
>> error
>>>>>>> that
>>>>>>>> crashes the program:
>>>>>>>> 
>>>>>>>>> assign virtualmachine
>>>>>>>> virtualmachineid=7fe548bb-b2a7-4aec-92c5-5012ef9fd4f4
>>>>>>> account=domain1-user1
>>>>>>>> domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f
>>>>>>>> Traceback (most recent call last):
>>>>>>>> File "/usr/bin/cloudmonkey", line 9, in <module>
>>>>>>>>  load_entry_point('cloudmonkey==5.0.0', 'console_scripts',
>>>>>>>> 'cloudmonkey')()
>>>>>>>> File
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>>>>>>> line 536, in main
>>>>>>>>  shell.cmdloop()
>>>>>>>> File
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>>>>>>> line 106, in cmdloop
>>>>>>>>  super(CloudMonkeyShell, self).cmdloop(intro="")
>>>>>>>> File "/usr/lib64/python2.6/cmd.py", line 142, in cmdloop
>>>>>>>>  stop = self.onecmd(line)
>>>>>>>> File "/usr/lib64/python2.6/cmd.py", line 219, in onecmd
>>>>>>>>  return func(arg)
>>>>>>>> File
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>>>>>>> line 134, in grammar_closure
>>>>>>>>  self.default("%s %s" % (cmd, args))
>>>>>>>> File
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>>>>>>> line 303, in default
>>>>>>>>  result = self.make_request(apiname, args_dict, isasync)
>>>>>>>> File
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>>>>>>> line 257, in make_request
>>>>>>>>  self.timeout, self.protocol, self.path)
>>>>>>>> File
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/requester.py",
>>>>>>>> line 121, in monkeyrequest
>>>>>>>>  responsekey = filter(lambda x: 'response' in x,
>>>> response.keys())[0]
>>>>>>>> IndexError: list index out of range
>>>>>>>> [cs42]~#
>>>>>>>> 
>>>>>>>> However, the account of VM DOES change successfully, checked from
>>>> both
>>>>>>> the
>>>>>>>> UI and API.
>>>>>>>> And after the change, only the new VM owner and their admins and see
>>>>> this
>>>>>>>> VM.
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>>>> 
>> -------------------------------------------------------------------------------------------
>>>>>>>> Yu-Heng (Ryan) Lei, Associate Researcher
>>>>>>>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
>>>>>>>> ryanlei@cht.com.tw<
>>>>>>>> 
>>>>>>> 
>>>>> 
>>>> 
>> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
>>>>>>>>> 
>>>>>>>> or
>>>>>>>> ryanlei750328@gmail.com
>>>>>>>> 
>>>>>>> 
>>>>> 
>>>>> 
>>>> 
>> 
>> 


Re: [Cloudmonkey] assignVirtualMachine API causes index out of range error

Posted by Ryan Lei <ry...@cht.com.tw>.
Finally got a new environment to build from source code (4.2 branch).
Unfortunately, it still crashes Cloudmonkey. The error messages are exactly
the same. Here's the new Cloudmonkey log:

2013-11-08 16:15:34,242 - requester.py:45 - [DEBUG] ======== START Request
========
2013-11-08 16:15:34,242 - requester.py:45 - [DEBUG] Requesting
command=assignVirtualMachine, args={'account': 'user', 'domainid':
'e55f7756-4842-11e3-a696-f6180bef7a51', 'virtualmachineid':
'd4da5cd7-9f68-4fd0-beda-c285e432911d'}
2013-11-08 16:15:34,243 - requester.py:45 - [DEBUG] Request sent:
http://localhost:8080/client/api?account=user&apiKey=Jxqh9fiJhBVaXHoBKSvNvqhYl3j-qNW_04kDoyW27RgZMiJe0pduFfUuRP8cPnOEAFZnyIrrGoZaVUubWk9JQQ&command=assignVirtualMachine&domainid=e55f7756-4842-11e3-a696-f6180bef7a51&response=json&virtualmachineid=d4da5cd7-9f68-4fd0-beda-c285e432911d&signature=opZc9bQmW34AN1OcVps%2Fxb%2BKtVU%3D
2013-11-08 16:15:34,488 - requester.py:45 - [DEBUG] Response received: {
"virtualmachine" :  { "virtualmachine" :
{"id":"d4da5cd7-9f68-4fd0-beda-c285e432911d","name":"assignVM-API","displayname":"assignVM-API","account":"user","domainid":"e55f7756-4842-11e3-a696-f6180bef7a51","domain":"ROOT","created":"2013-11-08T16:08:58+0800","state":"Stopping","haenable":false,"zoneid":"0c1268f1-efda-42a8-80a7-5e7d2a6aaf0a","zonename":"Zone","hostid":"24f982b3-3a9a-4fb5-ba78-9e44c04a2e39","hostname":"xenserver-205-15","templateid":"91050f5c-3212-4412-85d1-0035a0f754ef","templatename":"CentOS-6.4-x86_64-XS62","templatedisplaytext":"CentOS-6.4-x86_64-XS62","passwordenabled":false,"serviceofferingid":"1c081f6f-fa14-4db3-b5ec-34c203f6b9b5","serviceofferingname":"Medium
Instance","cpunumber":1,"cpuspeed":1000,"memory":1024,"cpuused":"0.01%","networkkbsread":0,"networkkbswrite":1,"diskkbsread":0,"diskkbswrite":0,"diskioread":0,"diskiowrite":0,"guestosid":"e4f94c9c-4842-11e3-a696-f6180bef7a51","rootdeviceid":0,"rootdevicetype":"ROOT","securitygroup":[],"nic":[{"id":"c18c7ef0-061f-404c-baab-4ffd585cbfec","networkid":"26642bfa-a037-40a0-bcaf-81aded2a4cf4","networkname":"user-1","netmask":"255.255.255.0","gateway":"10.1.1.1","ipaddress":"10.1.1.228","isolationuri":"vlan://850","broadcasturi":"vlan://850","traffictype":"Guest","type":"Isolated","isdefault":true,"macaddress":"02:00:47:3e:00:03"}],"hypervisor":"XenServer","instancename":"i-2-8-VM","tags":[],"affinitygroup":[],"displayvm":true,"isdynamicallyscalable":true,"details":{"hypervisortoolsversion":"xenserver56"},"jobid":"d9368add-bc64-45f7-83a7-de498cef730b","jobstatus":0}
}  }
2013-11-08 16:15:34,488 - requester.py:45 - [DEBUG] ======== END Request
========

Hence, I'm reopening the ticket:
https://issues.apache.org/jira/browse/CLOUDSTACK-4998


-------------------------------------------------------------------------------------------
Yu-Heng (Ryan) Lei, Associate Researcher
Chunghwa Telecom Laboratories / Cloud Computing Laboratory
ryanlei@cht.com.tw or ryanlei750328@gmail.com



On Wed, Oct 30, 2013 at 4:11 PM, Sebastien Goasguen <ru...@gmail.com>wrote:

>
> On Oct 30, 2013, at 2:40 AM, Ryan Lei <ry...@cht.com.tw> wrote:
>
> > Ticket created:
> > https://issues.apache.org/jira/browse/CLOUDSTACK-4998
> >
>
> Ryan, I fixed it in master and 4.2. Any chance you can compile from source
> and check again ?
>
> thanks
>
>
> >
> -------------------------------------------------------------------------------------------
> > Yu-Heng (Ryan) Lei, Associate Researcher
> > Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> > ryanlei@cht.com.tw<
> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
> >
> > or
> > ryanlei750328@gmail.com
> >
> >
> >
> > On Wed, Oct 30, 2013 at 2:04 PM, Rohit Yadav <bh...@apache.org>
> wrote:
> >
> >> On Mon, Oct 28, 2013 at 1:52 PM, Sebastien Goasguen <runseb@gmail.com
> >>> wrote:
> >>
> >>> I think the error is in the java code of AssignVirtualMachine:
> >>> api/src/org/apache/cloudstack/api/command/admin/vm/AssignVMCmd.java:
> >>>
> >>> @APICommand(name = "assignVirtualMachine", description="Change
> ownership
> >>> of a VM from one account to another. This API is available for Basic
> >> zones
> >>> with security groups and Advanced zones with guest networks. A root
> >>> administrator can reassign a VM from any account to any other account
> in
> >>> any domain. A domain administrator can reassign a VM to any account in
> >> the
> >>> same domain.", responseObject=UserVmResponse.class, since="3.0.0")
> >>> public class AssignVMCmd extends BaseCmd  {
> >>>    public static final Logger s_logger =
> >>> Logger.getLogger(AssignVMCmd.class.getName());
> >>>
> >>>   private static final String s_name = "moveuservmresponse";
> >>>
> >>>
> >>> Shouldn't the string be "assignvirtualmachineresponse" ?
> >>>
> >>
> >> Thanks Ryan for the output, Sebastien is right the response string of
> >> AssignVMCmd
> >> should be fixed. Please open a bug ticket, patch contributions are most
> >> welcome :)
> >>
> >> Regards.
> >>
> >>
> >>>
> >>> On Oct 27, 2013, at 11:02 PM, Ryan Lei <ry...@cht.com.tw> wrote:
> >>>
> >>>> Here's the assignVirtualMachine response json from log:
> >>>>
> >>>> 2013-10-25 17:02:54,107 - cloudmonkey.py:83 - [DEBUG] Loaded config
> >>> fields:
> >>>> ['cache_file=/root/.cloudmonkey/cache',
> >>>> 'log_file=/root/.cloudmonkey/log', 'asyncblock=true',
> >>>> 'paramcompletion=false', 'history_file=/root/.cloudmonkey/history',
> >>>> 'color=true', 'prompt=> ', 'display=table',
> >>>>
> >>>
> >>
> 'secretkey=wOV6_F8BZXxXV0zfX_DLVscCtbGrZgV3h8AcWfQLIa-OBCddLJimXTIQaM9hFH5ggItwwIFcivjJ77zn7LjWCQ',
> >>>>
> >>>
> >>
> 'apikey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA',
> >>>> 'path=/client/api', 'host=localhost', 'protocol=http', 'port=8080',
> >>>> 'timeout=3600']
> >>>>
> >>>> 2013-10-25 17:03:19,839 - requester.py:45 - [DEBUG] ======== START
> >>>> Request ========
> >>>> 2013-10-25 17:03:19,840 - requester.py:45 - [DEBUG] Requesting
> >>>> command=assignVirtualMachine, args={'account': 'domain1-user2',
> >>>> 'domainid': 'cfc19b03-0858-4f39-9058-e0b67685bc2f',
> >>>> 'virtualmachineid': '939f1c53-91e8-47a1-92d1-9ec9c2c1802c'}
> >>>> 2013-10-25 17:03:19,841 - requester.py:45 - [DEBUG] Request sent:
> >>>>
> >>>
> >>
> http://localhost:8080/client/api?account=domain1-user2&apiKey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA&command=assignVirtualMachine&domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f&response=json&virtualmachineid=939f1c53-91e8-47a1-92d1-9ec9c2c1802c&signature=gcqky6emSpV08QHZuavLZFS6Pcg%3D
> >>>>
> >>>> 2013-10-25 17:03:20,107 - requester.py:45 - [DEBUG] Response received:
> >>>> { "virtualmachine" :  { "virtualmachine" :
> >>>>
> >>>
> >>
> {"id":"939f1c53-91e8-47a1-92d1-9ec9c2c1802c","name":"domain1-admin","displayname":"domain1-admin","account":"domain1-user2","domainid":"cfc19b03-0858-4f39-9058-e0b67685bc2f","domain":"domain1","created":"2013-10-25T15:15:03+0800","state":"Stopped","haenable":false,"zoneid":"6e0b2791-513e-49be-bbd8-62c2597640ef","zonename":"Zone-Xen","templateid":"855b7915-9739-4ad7-945e-8b8514040198","templatename":"CentOS-6.4-x86_64
> >>>> (scalable)","templatedisplaytext":"CentOS-6.4-x86_64
> >>>>
> >>>
> >>
> (scalable)","passwordenabled":false,"serviceofferingid":"32f7668c-5edd-4152-b927-c7b744281dc2","serviceofferingname":"Small
> >>>>
> >>>
> >>
> Instance","cpunumber":1,"cpuspeed":500,"memory":512,"cpuused":"0%","networkkbsread":0,"networkkbswrite":1,"diskkbsread":0,"diskkbswrite":0,"diskioread":0,"diskiowrite":0,"guestosid":"f70b6aaa-37da-11e3-9cb9-46ca9f9b4d97","rootdeviceid":0,"rootdevicetype":"ROOT","securitygroup":[],"nic":[{"id":"2f2a6ff3-ab11-4127-8991-2813a9a1c3ba","networkid":"aad53b98-3a6c-4cd3-a1e3-cbb84834d8c1","networkname":"domain1-user2-network","netmask":"255.255.255.0","gateway":"10.1.1.1","ipaddress":"10.1.1.204","traffictype":"Guest","type":"Isolated","isdefault":true,"macaddress":"02:00:17:61:00:01"}],"hypervisor":"XenServer","tags":[],"affinitygroup":[],"displayvm":true,"isdynamicallyscalable":true}
> >>>> }  }
> >>>> 2013-10-25 17:03:20,108 - requester.py:45 - [DEBUG] ======== END
> >>>> Request ========
> >>>>
> >>>>
> >>>> I'm using Cloudmonkey from git (corresponding to 5.0.0), and I have
> >> tried
> >>>> using root admin and domain admin to call this API. Both turned out to
> >>>> succeed but crash Cloudmonkey.
> >>>>
> >>>>
> >>>
> >>
> -------------------------------------------------------------------------------------------
> >>>> Yu-Heng (Ryan) Lei, Associate Researcher
> >>>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> >>>> ryanlei@cht.com.tw<
> >>>
> >>
> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
> >>>>
> >>>> or
> >>>> ryanlei750328@gmail.com
> >>>>
> >>>>
> >>>>
> >>>> On Fri, Oct 25, 2013 at 7:02 PM, Rohit Yadav <bh...@apache.org>
> >>> wrote:
> >>>>
> >>>>> Hi Ryan,
> >>>>>
> >>>>> Will check this next week, the issue is clearly with response which
> >>> lacks a
> >>>>> key with name 'response' in it, it could be a case issue as well. Can
> >>> you
> >>>>> share with us the response json from cloudmonkey's log in
> >>>>> ~/.cloudmonkey/log, you may confirm the keys from the json. Also,
> >> check
> >>> if
> >>>>> you're allowed to call the API as different user groups can have
> >> access
> >>> to
> >>>>> different set of APIs.
> >>>>>
> >>>>> Cheers.
> >>>>>
> >>>>>
> >>>>> On Fri, Oct 25, 2013 at 2:27 PM, Ryan Lei <ry...@cht.com.tw>
> wrote:
> >>>>>
> >>>>>> I'm using Cloudmonkey 5.0.0 under CloudStack 4.2.0 + XenServer 6.2.
> >>>>>> For now, the only way to change the ownership of a VM is by the
> >>>>>> assignVirtualMachine API.
> >>>>>>
> >>>>>> But executing this API using Cloudmonkey leads to the following
> error
> >>>>> that
> >>>>>> crashes the program:
> >>>>>>
> >>>>>>> assign virtualmachine
> >>>>>> virtualmachineid=7fe548bb-b2a7-4aec-92c5-5012ef9fd4f4
> >>>>> account=domain1-user1
> >>>>>> domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f
> >>>>>> Traceback (most recent call last):
> >>>>>> File "/usr/bin/cloudmonkey", line 9, in <module>
> >>>>>>   load_entry_point('cloudmonkey==5.0.0', 'console_scripts',
> >>>>>> 'cloudmonkey')()
> >>>>>> File
> >>>>>>
> >>>>>>
> >>>>>
> >>>
> >>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> >>>>>> line 536, in main
> >>>>>>   shell.cmdloop()
> >>>>>> File
> >>>>>>
> >>>>>>
> >>>>>
> >>>
> >>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> >>>>>> line 106, in cmdloop
> >>>>>>   super(CloudMonkeyShell, self).cmdloop(intro="")
> >>>>>> File "/usr/lib64/python2.6/cmd.py", line 142, in cmdloop
> >>>>>>   stop = self.onecmd(line)
> >>>>>> File "/usr/lib64/python2.6/cmd.py", line 219, in onecmd
> >>>>>>   return func(arg)
> >>>>>> File
> >>>>>>
> >>>>>>
> >>>>>
> >>>
> >>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> >>>>>> line 134, in grammar_closure
> >>>>>>   self.default("%s %s" % (cmd, args))
> >>>>>> File
> >>>>>>
> >>>>>>
> >>>>>
> >>>
> >>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> >>>>>> line 303, in default
> >>>>>>   result = self.make_request(apiname, args_dict, isasync)
> >>>>>> File
> >>>>>>
> >>>>>>
> >>>>>
> >>>
> >>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> >>>>>> line 257, in make_request
> >>>>>>   self.timeout, self.protocol, self.path)
> >>>>>> File
> >>>>>>
> >>>>>>
> >>>>>
> >>>
> >>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/requester.py",
> >>>>>> line 121, in monkeyrequest
> >>>>>>   responsekey = filter(lambda x: 'response' in x,
> >> response.keys())[0]
> >>>>>> IndexError: list index out of range
> >>>>>> [cs42]~#
> >>>>>>
> >>>>>> However, the account of VM DOES change successfully, checked from
> >> both
> >>>>> the
> >>>>>> UI and API.
> >>>>>> And after the change, only the new VM owner and their admins and see
> >>> this
> >>>>>> VM.
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>
> >>
> -------------------------------------------------------------------------------------------
> >>>>>> Yu-Heng (Ryan) Lei, Associate Researcher
> >>>>>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> >>>>>> ryanlei@cht.com.tw<
> >>>>>>
> >>>>>
> >>>
> >>
> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
> >>>>>>>
> >>>>>> or
> >>>>>> ryanlei750328@gmail.com
> >>>>>>
> >>>>>
> >>>
> >>>
> >>
>
>

Re: [Cloudmonkey] assignVirtualMachine API causes index out of range error

Posted by Sebastien Goasguen <ru...@gmail.com>.
On Oct 30, 2013, at 2:40 AM, Ryan Lei <ry...@cht.com.tw> wrote:

> Ticket created:
> https://issues.apache.org/jira/browse/CLOUDSTACK-4998
> 

Ryan, I fixed it in master and 4.2. Any chance you can compile from source and check again ?

thanks


> -------------------------------------------------------------------------------------------
> Yu-Heng (Ryan) Lei, Associate Researcher
> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> ryanlei@cht.com.tw<https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw>
> or
> ryanlei750328@gmail.com
> 
> 
> 
> On Wed, Oct 30, 2013 at 2:04 PM, Rohit Yadav <bh...@apache.org> wrote:
> 
>> On Mon, Oct 28, 2013 at 1:52 PM, Sebastien Goasguen <runseb@gmail.com
>>> wrote:
>> 
>>> I think the error is in the java code of AssignVirtualMachine:
>>> api/src/org/apache/cloudstack/api/command/admin/vm/AssignVMCmd.java:
>>> 
>>> @APICommand(name = "assignVirtualMachine", description="Change ownership
>>> of a VM from one account to another. This API is available for Basic
>> zones
>>> with security groups and Advanced zones with guest networks. A root
>>> administrator can reassign a VM from any account to any other account in
>>> any domain. A domain administrator can reassign a VM to any account in
>> the
>>> same domain.", responseObject=UserVmResponse.class, since="3.0.0")
>>> public class AssignVMCmd extends BaseCmd  {
>>>    public static final Logger s_logger =
>>> Logger.getLogger(AssignVMCmd.class.getName());
>>> 
>>>   private static final String s_name = "moveuservmresponse";
>>> 
>>> 
>>> Shouldn't the string be "assignvirtualmachineresponse" ?
>>> 
>> 
>> Thanks Ryan for the output, Sebastien is right the response string of
>> AssignVMCmd
>> should be fixed. Please open a bug ticket, patch contributions are most
>> welcome :)
>> 
>> Regards.
>> 
>> 
>>> 
>>> On Oct 27, 2013, at 11:02 PM, Ryan Lei <ry...@cht.com.tw> wrote:
>>> 
>>>> Here's the assignVirtualMachine response json from log:
>>>> 
>>>> 2013-10-25 17:02:54,107 - cloudmonkey.py:83 - [DEBUG] Loaded config
>>> fields:
>>>> ['cache_file=/root/.cloudmonkey/cache',
>>>> 'log_file=/root/.cloudmonkey/log', 'asyncblock=true',
>>>> 'paramcompletion=false', 'history_file=/root/.cloudmonkey/history',
>>>> 'color=true', 'prompt=> ', 'display=table',
>>>> 
>>> 
>> 'secretkey=wOV6_F8BZXxXV0zfX_DLVscCtbGrZgV3h8AcWfQLIa-OBCddLJimXTIQaM9hFH5ggItwwIFcivjJ77zn7LjWCQ',
>>>> 
>>> 
>> 'apikey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA',
>>>> 'path=/client/api', 'host=localhost', 'protocol=http', 'port=8080',
>>>> 'timeout=3600']
>>>> 
>>>> 2013-10-25 17:03:19,839 - requester.py:45 - [DEBUG] ======== START
>>>> Request ========
>>>> 2013-10-25 17:03:19,840 - requester.py:45 - [DEBUG] Requesting
>>>> command=assignVirtualMachine, args={'account': 'domain1-user2',
>>>> 'domainid': 'cfc19b03-0858-4f39-9058-e0b67685bc2f',
>>>> 'virtualmachineid': '939f1c53-91e8-47a1-92d1-9ec9c2c1802c'}
>>>> 2013-10-25 17:03:19,841 - requester.py:45 - [DEBUG] Request sent:
>>>> 
>>> 
>> http://localhost:8080/client/api?account=domain1-user2&apiKey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA&command=assignVirtualMachine&domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f&response=json&virtualmachineid=939f1c53-91e8-47a1-92d1-9ec9c2c1802c&signature=gcqky6emSpV08QHZuavLZFS6Pcg%3D
>>>> 
>>>> 2013-10-25 17:03:20,107 - requester.py:45 - [DEBUG] Response received:
>>>> { "virtualmachine" :  { "virtualmachine" :
>>>> 
>>> 
>> {"id":"939f1c53-91e8-47a1-92d1-9ec9c2c1802c","name":"domain1-admin","displayname":"domain1-admin","account":"domain1-user2","domainid":"cfc19b03-0858-4f39-9058-e0b67685bc2f","domain":"domain1","created":"2013-10-25T15:15:03+0800","state":"Stopped","haenable":false,"zoneid":"6e0b2791-513e-49be-bbd8-62c2597640ef","zonename":"Zone-Xen","templateid":"855b7915-9739-4ad7-945e-8b8514040198","templatename":"CentOS-6.4-x86_64
>>>> (scalable)","templatedisplaytext":"CentOS-6.4-x86_64
>>>> 
>>> 
>> (scalable)","passwordenabled":false,"serviceofferingid":"32f7668c-5edd-4152-b927-c7b744281dc2","serviceofferingname":"Small
>>>> 
>>> 
>> Instance","cpunumber":1,"cpuspeed":500,"memory":512,"cpuused":"0%","networkkbsread":0,"networkkbswrite":1,"diskkbsread":0,"diskkbswrite":0,"diskioread":0,"diskiowrite":0,"guestosid":"f70b6aaa-37da-11e3-9cb9-46ca9f9b4d97","rootdeviceid":0,"rootdevicetype":"ROOT","securitygroup":[],"nic":[{"id":"2f2a6ff3-ab11-4127-8991-2813a9a1c3ba","networkid":"aad53b98-3a6c-4cd3-a1e3-cbb84834d8c1","networkname":"domain1-user2-network","netmask":"255.255.255.0","gateway":"10.1.1.1","ipaddress":"10.1.1.204","traffictype":"Guest","type":"Isolated","isdefault":true,"macaddress":"02:00:17:61:00:01"}],"hypervisor":"XenServer","tags":[],"affinitygroup":[],"displayvm":true,"isdynamicallyscalable":true}
>>>> }  }
>>>> 2013-10-25 17:03:20,108 - requester.py:45 - [DEBUG] ======== END
>>>> Request ========
>>>> 
>>>> 
>>>> I'm using Cloudmonkey from git (corresponding to 5.0.0), and I have
>> tried
>>>> using root admin and domain admin to call this API. Both turned out to
>>>> succeed but crash Cloudmonkey.
>>>> 
>>>> 
>>> 
>> -------------------------------------------------------------------------------------------
>>>> Yu-Heng (Ryan) Lei, Associate Researcher
>>>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
>>>> ryanlei@cht.com.tw<
>>> 
>> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
>>>> 
>>>> or
>>>> ryanlei750328@gmail.com
>>>> 
>>>> 
>>>> 
>>>> On Fri, Oct 25, 2013 at 7:02 PM, Rohit Yadav <bh...@apache.org>
>>> wrote:
>>>> 
>>>>> Hi Ryan,
>>>>> 
>>>>> Will check this next week, the issue is clearly with response which
>>> lacks a
>>>>> key with name 'response' in it, it could be a case issue as well. Can
>>> you
>>>>> share with us the response json from cloudmonkey's log in
>>>>> ~/.cloudmonkey/log, you may confirm the keys from the json. Also,
>> check
>>> if
>>>>> you're allowed to call the API as different user groups can have
>> access
>>> to
>>>>> different set of APIs.
>>>>> 
>>>>> Cheers.
>>>>> 
>>>>> 
>>>>> On Fri, Oct 25, 2013 at 2:27 PM, Ryan Lei <ry...@cht.com.tw> wrote:
>>>>> 
>>>>>> I'm using Cloudmonkey 5.0.0 under CloudStack 4.2.0 + XenServer 6.2.
>>>>>> For now, the only way to change the ownership of a VM is by the
>>>>>> assignVirtualMachine API.
>>>>>> 
>>>>>> But executing this API using Cloudmonkey leads to the following error
>>>>> that
>>>>>> crashes the program:
>>>>>> 
>>>>>>> assign virtualmachine
>>>>>> virtualmachineid=7fe548bb-b2a7-4aec-92c5-5012ef9fd4f4
>>>>> account=domain1-user1
>>>>>> domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f
>>>>>> Traceback (most recent call last):
>>>>>> File "/usr/bin/cloudmonkey", line 9, in <module>
>>>>>>   load_entry_point('cloudmonkey==5.0.0', 'console_scripts',
>>>>>> 'cloudmonkey')()
>>>>>> File
>>>>>> 
>>>>>> 
>>>>> 
>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>>>>> line 536, in main
>>>>>>   shell.cmdloop()
>>>>>> File
>>>>>> 
>>>>>> 
>>>>> 
>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>>>>> line 106, in cmdloop
>>>>>>   super(CloudMonkeyShell, self).cmdloop(intro="")
>>>>>> File "/usr/lib64/python2.6/cmd.py", line 142, in cmdloop
>>>>>>   stop = self.onecmd(line)
>>>>>> File "/usr/lib64/python2.6/cmd.py", line 219, in onecmd
>>>>>>   return func(arg)
>>>>>> File
>>>>>> 
>>>>>> 
>>>>> 
>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>>>>> line 134, in grammar_closure
>>>>>>   self.default("%s %s" % (cmd, args))
>>>>>> File
>>>>>> 
>>>>>> 
>>>>> 
>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>>>>> line 303, in default
>>>>>>   result = self.make_request(apiname, args_dict, isasync)
>>>>>> File
>>>>>> 
>>>>>> 
>>>>> 
>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>>>>> line 257, in make_request
>>>>>>   self.timeout, self.protocol, self.path)
>>>>>> File
>>>>>> 
>>>>>> 
>>>>> 
>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/requester.py",
>>>>>> line 121, in monkeyrequest
>>>>>>   responsekey = filter(lambda x: 'response' in x,
>> response.keys())[0]
>>>>>> IndexError: list index out of range
>>>>>> [cs42]~#
>>>>>> 
>>>>>> However, the account of VM DOES change successfully, checked from
>> both
>>>>> the
>>>>>> UI and API.
>>>>>> And after the change, only the new VM owner and their admins and see
>>> this
>>>>>> VM.
>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>> 
>> -------------------------------------------------------------------------------------------
>>>>>> Yu-Heng (Ryan) Lei, Associate Researcher
>>>>>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
>>>>>> ryanlei@cht.com.tw<
>>>>>> 
>>>>> 
>>> 
>> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
>>>>>>> 
>>>>>> or
>>>>>> ryanlei750328@gmail.com
>>>>>> 
>>>>> 
>>> 
>>> 
>> 


Re: [Cloudmonkey] assignVirtualMachine API causes index out of range error

Posted by Ryan Lei <ry...@cht.com.tw>.
Ticket created:
https://issues.apache.org/jira/browse/CLOUDSTACK-4998

-------------------------------------------------------------------------------------------
Yu-Heng (Ryan) Lei, Associate Researcher
Chunghwa Telecom Laboratories / Cloud Computing Laboratory
ryanlei@cht.com.tw<https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw>
or
ryanlei750328@gmail.com



On Wed, Oct 30, 2013 at 2:04 PM, Rohit Yadav <bh...@apache.org> wrote:

> On Mon, Oct 28, 2013 at 1:52 PM, Sebastien Goasguen <runseb@gmail.com
> >wrote:
>
> > I think the error is in the java code of AssignVirtualMachine:
> > api/src/org/apache/cloudstack/api/command/admin/vm/AssignVMCmd.java:
> >
> > @APICommand(name = "assignVirtualMachine", description="Change ownership
> > of a VM from one account to another. This API is available for Basic
> zones
> > with security groups and Advanced zones with guest networks. A root
> > administrator can reassign a VM from any account to any other account in
> > any domain. A domain administrator can reassign a VM to any account in
> the
> > same domain.", responseObject=UserVmResponse.class, since="3.0.0")
> > public class AssignVMCmd extends BaseCmd  {
> >     public static final Logger s_logger =
> > Logger.getLogger(AssignVMCmd.class.getName());
> >
> >    private static final String s_name = "moveuservmresponse";
> >
> >
> > Shouldn't the string be "assignvirtualmachineresponse" ?
> >
>
> Thanks Ryan for the output, Sebastien is right the response string of
> AssignVMCmd
> should be fixed. Please open a bug ticket, patch contributions are most
> welcome :)
>
> Regards.
>
>
> >
> > On Oct 27, 2013, at 11:02 PM, Ryan Lei <ry...@cht.com.tw> wrote:
> >
> > > Here's the assignVirtualMachine response json from log:
> > >
> > > 2013-10-25 17:02:54,107 - cloudmonkey.py:83 - [DEBUG] Loaded config
> > fields:
> > > ['cache_file=/root/.cloudmonkey/cache',
> > > 'log_file=/root/.cloudmonkey/log', 'asyncblock=true',
> > > 'paramcompletion=false', 'history_file=/root/.cloudmonkey/history',
> > > 'color=true', 'prompt=> ', 'display=table',
> > >
> >
> 'secretkey=wOV6_F8BZXxXV0zfX_DLVscCtbGrZgV3h8AcWfQLIa-OBCddLJimXTIQaM9hFH5ggItwwIFcivjJ77zn7LjWCQ',
> > >
> >
> 'apikey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA',
> > > 'path=/client/api', 'host=localhost', 'protocol=http', 'port=8080',
> > > 'timeout=3600']
> > >
> > > 2013-10-25 17:03:19,839 - requester.py:45 - [DEBUG] ======== START
> > > Request ========
> > > 2013-10-25 17:03:19,840 - requester.py:45 - [DEBUG] Requesting
> > > command=assignVirtualMachine, args={'account': 'domain1-user2',
> > > 'domainid': 'cfc19b03-0858-4f39-9058-e0b67685bc2f',
> > > 'virtualmachineid': '939f1c53-91e8-47a1-92d1-9ec9c2c1802c'}
> > > 2013-10-25 17:03:19,841 - requester.py:45 - [DEBUG] Request sent:
> > >
> >
> http://localhost:8080/client/api?account=domain1-user2&apiKey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA&command=assignVirtualMachine&domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f&response=json&virtualmachineid=939f1c53-91e8-47a1-92d1-9ec9c2c1802c&signature=gcqky6emSpV08QHZuavLZFS6Pcg%3D
> > >
> > > 2013-10-25 17:03:20,107 - requester.py:45 - [DEBUG] Response received:
> > > { "virtualmachine" :  { "virtualmachine" :
> > >
> >
> {"id":"939f1c53-91e8-47a1-92d1-9ec9c2c1802c","name":"domain1-admin","displayname":"domain1-admin","account":"domain1-user2","domainid":"cfc19b03-0858-4f39-9058-e0b67685bc2f","domain":"domain1","created":"2013-10-25T15:15:03+0800","state":"Stopped","haenable":false,"zoneid":"6e0b2791-513e-49be-bbd8-62c2597640ef","zonename":"Zone-Xen","templateid":"855b7915-9739-4ad7-945e-8b8514040198","templatename":"CentOS-6.4-x86_64
> > > (scalable)","templatedisplaytext":"CentOS-6.4-x86_64
> > >
> >
> (scalable)","passwordenabled":false,"serviceofferingid":"32f7668c-5edd-4152-b927-c7b744281dc2","serviceofferingname":"Small
> > >
> >
> Instance","cpunumber":1,"cpuspeed":500,"memory":512,"cpuused":"0%","networkkbsread":0,"networkkbswrite":1,"diskkbsread":0,"diskkbswrite":0,"diskioread":0,"diskiowrite":0,"guestosid":"f70b6aaa-37da-11e3-9cb9-46ca9f9b4d97","rootdeviceid":0,"rootdevicetype":"ROOT","securitygroup":[],"nic":[{"id":"2f2a6ff3-ab11-4127-8991-2813a9a1c3ba","networkid":"aad53b98-3a6c-4cd3-a1e3-cbb84834d8c1","networkname":"domain1-user2-network","netmask":"255.255.255.0","gateway":"10.1.1.1","ipaddress":"10.1.1.204","traffictype":"Guest","type":"Isolated","isdefault":true,"macaddress":"02:00:17:61:00:01"}],"hypervisor":"XenServer","tags":[],"affinitygroup":[],"displayvm":true,"isdynamicallyscalable":true}
> > > }  }
> > > 2013-10-25 17:03:20,108 - requester.py:45 - [DEBUG] ======== END
> > > Request ========
> > >
> > >
> > > I'm using Cloudmonkey from git (corresponding to 5.0.0), and I have
> tried
> > > using root admin and domain admin to call this API. Both turned out to
> > > succeed but crash Cloudmonkey.
> > >
> > >
> >
> -------------------------------------------------------------------------------------------
> > > Yu-Heng (Ryan) Lei, Associate Researcher
> > > Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> > > ryanlei@cht.com.tw<
> >
> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
> > >
> > > or
> > > ryanlei750328@gmail.com
> > >
> > >
> > >
> > > On Fri, Oct 25, 2013 at 7:02 PM, Rohit Yadav <bh...@apache.org>
> > wrote:
> > >
> > >> Hi Ryan,
> > >>
> > >> Will check this next week, the issue is clearly with response which
> > lacks a
> > >> key with name 'response' in it, it could be a case issue as well. Can
> > you
> > >> share with us the response json from cloudmonkey's log in
> > >> ~/.cloudmonkey/log, you may confirm the keys from the json. Also,
> check
> > if
> > >> you're allowed to call the API as different user groups can have
> access
> > to
> > >> different set of APIs.
> > >>
> > >> Cheers.
> > >>
> > >>
> > >> On Fri, Oct 25, 2013 at 2:27 PM, Ryan Lei <ry...@cht.com.tw> wrote:
> > >>
> > >>> I'm using Cloudmonkey 5.0.0 under CloudStack 4.2.0 + XenServer 6.2.
> > >>> For now, the only way to change the ownership of a VM is by the
> > >>> assignVirtualMachine API.
> > >>>
> > >>> But executing this API using Cloudmonkey leads to the following error
> > >> that
> > >>> crashes the program:
> > >>>
> > >>>> assign virtualmachine
> > >>> virtualmachineid=7fe548bb-b2a7-4aec-92c5-5012ef9fd4f4
> > >> account=domain1-user1
> > >>> domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f
> > >>> Traceback (most recent call last):
> > >>>  File "/usr/bin/cloudmonkey", line 9, in <module>
> > >>>    load_entry_point('cloudmonkey==5.0.0', 'console_scripts',
> > >>> 'cloudmonkey')()
> > >>>  File
> > >>>
> > >>>
> > >>
> >
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> > >>> line 536, in main
> > >>>    shell.cmdloop()
> > >>>  File
> > >>>
> > >>>
> > >>
> >
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> > >>> line 106, in cmdloop
> > >>>    super(CloudMonkeyShell, self).cmdloop(intro="")
> > >>>  File "/usr/lib64/python2.6/cmd.py", line 142, in cmdloop
> > >>>    stop = self.onecmd(line)
> > >>>  File "/usr/lib64/python2.6/cmd.py", line 219, in onecmd
> > >>>    return func(arg)
> > >>>  File
> > >>>
> > >>>
> > >>
> >
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> > >>> line 134, in grammar_closure
> > >>>    self.default("%s %s" % (cmd, args))
> > >>>  File
> > >>>
> > >>>
> > >>
> >
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> > >>> line 303, in default
> > >>>    result = self.make_request(apiname, args_dict, isasync)
> > >>>  File
> > >>>
> > >>>
> > >>
> >
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> > >>> line 257, in make_request
> > >>>    self.timeout, self.protocol, self.path)
> > >>>  File
> > >>>
> > >>>
> > >>
> >
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/requester.py",
> > >>> line 121, in monkeyrequest
> > >>>    responsekey = filter(lambda x: 'response' in x,
> response.keys())[0]
> > >>> IndexError: list index out of range
> > >>> [cs42]~#
> > >>>
> > >>> However, the account of VM DOES change successfully, checked from
> both
> > >> the
> > >>> UI and API.
> > >>> And after the change, only the new VM owner and their admins and see
> > this
> > >>> VM.
> > >>>
> > >>>
> > >>>
> > >>
> >
> -------------------------------------------------------------------------------------------
> > >>> Yu-Heng (Ryan) Lei, Associate Researcher
> > >>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> > >>> ryanlei@cht.com.tw<
> > >>>
> > >>
> >
> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
> > >>>>
> > >>> or
> > >>> ryanlei750328@gmail.com
> > >>>
> > >>
> >
> >
>

Re: [Cloudmonkey] assignVirtualMachine API causes index out of range error

Posted by Rohit Yadav <bh...@apache.org>.
On Mon, Oct 28, 2013 at 1:52 PM, Sebastien Goasguen <ru...@gmail.com>wrote:

> I think the error is in the java code of AssignVirtualMachine:
> api/src/org/apache/cloudstack/api/command/admin/vm/AssignVMCmd.java:
>
> @APICommand(name = "assignVirtualMachine", description="Change ownership
> of a VM from one account to another. This API is available for Basic zones
> with security groups and Advanced zones with guest networks. A root
> administrator can reassign a VM from any account to any other account in
> any domain. A domain administrator can reassign a VM to any account in the
> same domain.", responseObject=UserVmResponse.class, since="3.0.0")
> public class AssignVMCmd extends BaseCmd  {
>     public static final Logger s_logger =
> Logger.getLogger(AssignVMCmd.class.getName());
>
>    private static final String s_name = "moveuservmresponse";
>
>
> Shouldn't the string be "assignvirtualmachineresponse" ?
>

Thanks Ryan for the output, Sebastien is right the response string of
AssignVMCmd
should be fixed. Please open a bug ticket, patch contributions are most
welcome :)

Regards.


>
> On Oct 27, 2013, at 11:02 PM, Ryan Lei <ry...@cht.com.tw> wrote:
>
> > Here's the assignVirtualMachine response json from log:
> >
> > 2013-10-25 17:02:54,107 - cloudmonkey.py:83 - [DEBUG] Loaded config
> fields:
> > ['cache_file=/root/.cloudmonkey/cache',
> > 'log_file=/root/.cloudmonkey/log', 'asyncblock=true',
> > 'paramcompletion=false', 'history_file=/root/.cloudmonkey/history',
> > 'color=true', 'prompt=> ', 'display=table',
> >
> 'secretkey=wOV6_F8BZXxXV0zfX_DLVscCtbGrZgV3h8AcWfQLIa-OBCddLJimXTIQaM9hFH5ggItwwIFcivjJ77zn7LjWCQ',
> >
> 'apikey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA',
> > 'path=/client/api', 'host=localhost', 'protocol=http', 'port=8080',
> > 'timeout=3600']
> >
> > 2013-10-25 17:03:19,839 - requester.py:45 - [DEBUG] ======== START
> > Request ========
> > 2013-10-25 17:03:19,840 - requester.py:45 - [DEBUG] Requesting
> > command=assignVirtualMachine, args={'account': 'domain1-user2',
> > 'domainid': 'cfc19b03-0858-4f39-9058-e0b67685bc2f',
> > 'virtualmachineid': '939f1c53-91e8-47a1-92d1-9ec9c2c1802c'}
> > 2013-10-25 17:03:19,841 - requester.py:45 - [DEBUG] Request sent:
> >
> http://localhost:8080/client/api?account=domain1-user2&apiKey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA&command=assignVirtualMachine&domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f&response=json&virtualmachineid=939f1c53-91e8-47a1-92d1-9ec9c2c1802c&signature=gcqky6emSpV08QHZuavLZFS6Pcg%3D
> >
> > 2013-10-25 17:03:20,107 - requester.py:45 - [DEBUG] Response received:
> > { "virtualmachine" :  { "virtualmachine" :
> >
> {"id":"939f1c53-91e8-47a1-92d1-9ec9c2c1802c","name":"domain1-admin","displayname":"domain1-admin","account":"domain1-user2","domainid":"cfc19b03-0858-4f39-9058-e0b67685bc2f","domain":"domain1","created":"2013-10-25T15:15:03+0800","state":"Stopped","haenable":false,"zoneid":"6e0b2791-513e-49be-bbd8-62c2597640ef","zonename":"Zone-Xen","templateid":"855b7915-9739-4ad7-945e-8b8514040198","templatename":"CentOS-6.4-x86_64
> > (scalable)","templatedisplaytext":"CentOS-6.4-x86_64
> >
> (scalable)","passwordenabled":false,"serviceofferingid":"32f7668c-5edd-4152-b927-c7b744281dc2","serviceofferingname":"Small
> >
> Instance","cpunumber":1,"cpuspeed":500,"memory":512,"cpuused":"0%","networkkbsread":0,"networkkbswrite":1,"diskkbsread":0,"diskkbswrite":0,"diskioread":0,"diskiowrite":0,"guestosid":"f70b6aaa-37da-11e3-9cb9-46ca9f9b4d97","rootdeviceid":0,"rootdevicetype":"ROOT","securitygroup":[],"nic":[{"id":"2f2a6ff3-ab11-4127-8991-2813a9a1c3ba","networkid":"aad53b98-3a6c-4cd3-a1e3-cbb84834d8c1","networkname":"domain1-user2-network","netmask":"255.255.255.0","gateway":"10.1.1.1","ipaddress":"10.1.1.204","traffictype":"Guest","type":"Isolated","isdefault":true,"macaddress":"02:00:17:61:00:01"}],"hypervisor":"XenServer","tags":[],"affinitygroup":[],"displayvm":true,"isdynamicallyscalable":true}
> > }  }
> > 2013-10-25 17:03:20,108 - requester.py:45 - [DEBUG] ======== END
> > Request ========
> >
> >
> > I'm using Cloudmonkey from git (corresponding to 5.0.0), and I have tried
> > using root admin and domain admin to call this API. Both turned out to
> > succeed but crash Cloudmonkey.
> >
> >
> -------------------------------------------------------------------------------------------
> > Yu-Heng (Ryan) Lei, Associate Researcher
> > Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> > ryanlei@cht.com.tw<
> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
> >
> > or
> > ryanlei750328@gmail.com
> >
> >
> >
> > On Fri, Oct 25, 2013 at 7:02 PM, Rohit Yadav <bh...@apache.org>
> wrote:
> >
> >> Hi Ryan,
> >>
> >> Will check this next week, the issue is clearly with response which
> lacks a
> >> key with name 'response' in it, it could be a case issue as well. Can
> you
> >> share with us the response json from cloudmonkey's log in
> >> ~/.cloudmonkey/log, you may confirm the keys from the json. Also, check
> if
> >> you're allowed to call the API as different user groups can have access
> to
> >> different set of APIs.
> >>
> >> Cheers.
> >>
> >>
> >> On Fri, Oct 25, 2013 at 2:27 PM, Ryan Lei <ry...@cht.com.tw> wrote:
> >>
> >>> I'm using Cloudmonkey 5.0.0 under CloudStack 4.2.0 + XenServer 6.2.
> >>> For now, the only way to change the ownership of a VM is by the
> >>> assignVirtualMachine API.
> >>>
> >>> But executing this API using Cloudmonkey leads to the following error
> >> that
> >>> crashes the program:
> >>>
> >>>> assign virtualmachine
> >>> virtualmachineid=7fe548bb-b2a7-4aec-92c5-5012ef9fd4f4
> >> account=domain1-user1
> >>> domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f
> >>> Traceback (most recent call last):
> >>>  File "/usr/bin/cloudmonkey", line 9, in <module>
> >>>    load_entry_point('cloudmonkey==5.0.0', 'console_scripts',
> >>> 'cloudmonkey')()
> >>>  File
> >>>
> >>>
> >>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> >>> line 536, in main
> >>>    shell.cmdloop()
> >>>  File
> >>>
> >>>
> >>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> >>> line 106, in cmdloop
> >>>    super(CloudMonkeyShell, self).cmdloop(intro="")
> >>>  File "/usr/lib64/python2.6/cmd.py", line 142, in cmdloop
> >>>    stop = self.onecmd(line)
> >>>  File "/usr/lib64/python2.6/cmd.py", line 219, in onecmd
> >>>    return func(arg)
> >>>  File
> >>>
> >>>
> >>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> >>> line 134, in grammar_closure
> >>>    self.default("%s %s" % (cmd, args))
> >>>  File
> >>>
> >>>
> >>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> >>> line 303, in default
> >>>    result = self.make_request(apiname, args_dict, isasync)
> >>>  File
> >>>
> >>>
> >>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> >>> line 257, in make_request
> >>>    self.timeout, self.protocol, self.path)
> >>>  File
> >>>
> >>>
> >>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/requester.py",
> >>> line 121, in monkeyrequest
> >>>    responsekey = filter(lambda x: 'response' in x, response.keys())[0]
> >>> IndexError: list index out of range
> >>> [cs42]~#
> >>>
> >>> However, the account of VM DOES change successfully, checked from both
> >> the
> >>> UI and API.
> >>> And after the change, only the new VM owner and their admins and see
> this
> >>> VM.
> >>>
> >>>
> >>>
> >>
> -------------------------------------------------------------------------------------------
> >>> Yu-Heng (Ryan) Lei, Associate Researcher
> >>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> >>> ryanlei@cht.com.tw<
> >>>
> >>
> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
> >>>>
> >>> or
> >>> ryanlei750328@gmail.com
> >>>
> >>
>
>

Re: [Cloudmonkey] assignVirtualMachine API causes index out of range error

Posted by Sebastien Goasguen <ru...@gmail.com>.
I think the error is in the java code of AssignVirtualMachine:
api/src/org/apache/cloudstack/api/command/admin/vm/AssignVMCmd.java:

@APICommand(name = "assignVirtualMachine", description="Change ownership of a VM from one account to another. This API is available for Basic zones with security groups and Advanced zones with guest networks. A root administrator can reassign a VM from any account to any other account in any domain. A domain administrator can reassign a VM to any account in the same domain.", responseObject=UserVmResponse.class, since="3.0.0")
public class AssignVMCmd extends BaseCmd  {
    public static final Logger s_logger = Logger.getLogger(AssignVMCmd.class.getName());

   private static final String s_name = "moveuservmresponse";


Shouldn't the string be "assignvirtualmachineresponse" ?

On Oct 27, 2013, at 11:02 PM, Ryan Lei <ry...@cht.com.tw> wrote:

> Here's the assignVirtualMachine response json from log:
> 
> 2013-10-25 17:02:54,107 - cloudmonkey.py:83 - [DEBUG] Loaded config fields:
> ['cache_file=/root/.cloudmonkey/cache',
> 'log_file=/root/.cloudmonkey/log', 'asyncblock=true',
> 'paramcompletion=false', 'history_file=/root/.cloudmonkey/history',
> 'color=true', 'prompt=> ', 'display=table',
> 'secretkey=wOV6_F8BZXxXV0zfX_DLVscCtbGrZgV3h8AcWfQLIa-OBCddLJimXTIQaM9hFH5ggItwwIFcivjJ77zn7LjWCQ',
> 'apikey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA',
> 'path=/client/api', 'host=localhost', 'protocol=http', 'port=8080',
> 'timeout=3600']
> 
> 2013-10-25 17:03:19,839 - requester.py:45 - [DEBUG] ======== START
> Request ========
> 2013-10-25 17:03:19,840 - requester.py:45 - [DEBUG] Requesting
> command=assignVirtualMachine, args={'account': 'domain1-user2',
> 'domainid': 'cfc19b03-0858-4f39-9058-e0b67685bc2f',
> 'virtualmachineid': '939f1c53-91e8-47a1-92d1-9ec9c2c1802c'}
> 2013-10-25 17:03:19,841 - requester.py:45 - [DEBUG] Request sent:
> http://localhost:8080/client/api?account=domain1-user2&apiKey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA&command=assignVirtualMachine&domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f&response=json&virtualmachineid=939f1c53-91e8-47a1-92d1-9ec9c2c1802c&signature=gcqky6emSpV08QHZuavLZFS6Pcg%3D
> 
> 2013-10-25 17:03:20,107 - requester.py:45 - [DEBUG] Response received:
> { "virtualmachine" :  { "virtualmachine" :
> {"id":"939f1c53-91e8-47a1-92d1-9ec9c2c1802c","name":"domain1-admin","displayname":"domain1-admin","account":"domain1-user2","domainid":"cfc19b03-0858-4f39-9058-e0b67685bc2f","domain":"domain1","created":"2013-10-25T15:15:03+0800","state":"Stopped","haenable":false,"zoneid":"6e0b2791-513e-49be-bbd8-62c2597640ef","zonename":"Zone-Xen","templateid":"855b7915-9739-4ad7-945e-8b8514040198","templatename":"CentOS-6.4-x86_64
> (scalable)","templatedisplaytext":"CentOS-6.4-x86_64
> (scalable)","passwordenabled":false,"serviceofferingid":"32f7668c-5edd-4152-b927-c7b744281dc2","serviceofferingname":"Small
> Instance","cpunumber":1,"cpuspeed":500,"memory":512,"cpuused":"0%","networkkbsread":0,"networkkbswrite":1,"diskkbsread":0,"diskkbswrite":0,"diskioread":0,"diskiowrite":0,"guestosid":"f70b6aaa-37da-11e3-9cb9-46ca9f9b4d97","rootdeviceid":0,"rootdevicetype":"ROOT","securitygroup":[],"nic":[{"id":"2f2a6ff3-ab11-4127-8991-2813a9a1c3ba","networkid":"aad53b98-3a6c-4cd3-a1e3-cbb84834d8c1","networkname":"domain1-user2-network","netmask":"255.255.255.0","gateway":"10.1.1.1","ipaddress":"10.1.1.204","traffictype":"Guest","type":"Isolated","isdefault":true,"macaddress":"02:00:17:61:00:01"}],"hypervisor":"XenServer","tags":[],"affinitygroup":[],"displayvm":true,"isdynamicallyscalable":true}
> }  }
> 2013-10-25 17:03:20,108 - requester.py:45 - [DEBUG] ======== END
> Request ========
> 
> 
> I'm using Cloudmonkey from git (corresponding to 5.0.0), and I have tried
> using root admin and domain admin to call this API. Both turned out to
> succeed but crash Cloudmonkey.
> 
> -------------------------------------------------------------------------------------------
> Yu-Heng (Ryan) Lei, Associate Researcher
> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> ryanlei@cht.com.tw<https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw>
> or
> ryanlei750328@gmail.com
> 
> 
> 
> On Fri, Oct 25, 2013 at 7:02 PM, Rohit Yadav <bh...@apache.org> wrote:
> 
>> Hi Ryan,
>> 
>> Will check this next week, the issue is clearly with response which lacks a
>> key with name 'response' in it, it could be a case issue as well. Can you
>> share with us the response json from cloudmonkey's log in
>> ~/.cloudmonkey/log, you may confirm the keys from the json. Also, check if
>> you're allowed to call the API as different user groups can have access to
>> different set of APIs.
>> 
>> Cheers.
>> 
>> 
>> On Fri, Oct 25, 2013 at 2:27 PM, Ryan Lei <ry...@cht.com.tw> wrote:
>> 
>>> I'm using Cloudmonkey 5.0.0 under CloudStack 4.2.0 + XenServer 6.2.
>>> For now, the only way to change the ownership of a VM is by the
>>> assignVirtualMachine API.
>>> 
>>> But executing this API using Cloudmonkey leads to the following error
>> that
>>> crashes the program:
>>> 
>>>> assign virtualmachine
>>> virtualmachineid=7fe548bb-b2a7-4aec-92c5-5012ef9fd4f4
>> account=domain1-user1
>>> domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f
>>> Traceback (most recent call last):
>>>  File "/usr/bin/cloudmonkey", line 9, in <module>
>>>    load_entry_point('cloudmonkey==5.0.0', 'console_scripts',
>>> 'cloudmonkey')()
>>>  File
>>> 
>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>> line 536, in main
>>>    shell.cmdloop()
>>>  File
>>> 
>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>> line 106, in cmdloop
>>>    super(CloudMonkeyShell, self).cmdloop(intro="")
>>>  File "/usr/lib64/python2.6/cmd.py", line 142, in cmdloop
>>>    stop = self.onecmd(line)
>>>  File "/usr/lib64/python2.6/cmd.py", line 219, in onecmd
>>>    return func(arg)
>>>  File
>>> 
>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>> line 134, in grammar_closure
>>>    self.default("%s %s" % (cmd, args))
>>>  File
>>> 
>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>> line 303, in default
>>>    result = self.make_request(apiname, args_dict, isasync)
>>>  File
>>> 
>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
>>> line 257, in make_request
>>>    self.timeout, self.protocol, self.path)
>>>  File
>>> 
>>> 
>> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/requester.py",
>>> line 121, in monkeyrequest
>>>    responsekey = filter(lambda x: 'response' in x, response.keys())[0]
>>> IndexError: list index out of range
>>> [cs42]~#
>>> 
>>> However, the account of VM DOES change successfully, checked from both
>> the
>>> UI and API.
>>> And after the change, only the new VM owner and their admins and see this
>>> VM.
>>> 
>>> 
>>> 
>> -------------------------------------------------------------------------------------------
>>> Yu-Heng (Ryan) Lei, Associate Researcher
>>> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
>>> ryanlei@cht.com.tw<
>>> 
>> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
>>>> 
>>> or
>>> ryanlei750328@gmail.com
>>> 
>> 


Re: [Cloudmonkey] assignVirtualMachine API causes index out of range error

Posted by Ryan Lei <ry...@cht.com.tw>.
Here's the assignVirtualMachine response json from log:

2013-10-25 17:02:54,107 - cloudmonkey.py:83 - [DEBUG] Loaded config fields:
['cache_file=/root/.cloudmonkey/cache',
'log_file=/root/.cloudmonkey/log', 'asyncblock=true',
'paramcompletion=false', 'history_file=/root/.cloudmonkey/history',
'color=true', 'prompt=> ', 'display=table',
'secretkey=wOV6_F8BZXxXV0zfX_DLVscCtbGrZgV3h8AcWfQLIa-OBCddLJimXTIQaM9hFH5ggItwwIFcivjJ77zn7LjWCQ',
'apikey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA',
'path=/client/api', 'host=localhost', 'protocol=http', 'port=8080',
'timeout=3600']

2013-10-25 17:03:19,839 - requester.py:45 - [DEBUG] ======== START
Request ========
2013-10-25 17:03:19,840 - requester.py:45 - [DEBUG] Requesting
command=assignVirtualMachine, args={'account': 'domain1-user2',
'domainid': 'cfc19b03-0858-4f39-9058-e0b67685bc2f',
'virtualmachineid': '939f1c53-91e8-47a1-92d1-9ec9c2c1802c'}
2013-10-25 17:03:19,841 - requester.py:45 - [DEBUG] Request sent:
http://localhost:8080/client/api?account=domain1-user2&apiKey=KbvOOFTETTNL8RbmSmA0d-zOw8BxRW1msmKTVj_2T8b42KrpMb5DoVwNrc2aKRonFFTZ7W6GsSeL2hvReek4WA&command=assignVirtualMachine&domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f&response=json&virtualmachineid=939f1c53-91e8-47a1-92d1-9ec9c2c1802c&signature=gcqky6emSpV08QHZuavLZFS6Pcg%3D

2013-10-25 17:03:20,107 - requester.py:45 - [DEBUG] Response received:
{ "virtualmachine" :  { "virtualmachine" :
{"id":"939f1c53-91e8-47a1-92d1-9ec9c2c1802c","name":"domain1-admin","displayname":"domain1-admin","account":"domain1-user2","domainid":"cfc19b03-0858-4f39-9058-e0b67685bc2f","domain":"domain1","created":"2013-10-25T15:15:03+0800","state":"Stopped","haenable":false,"zoneid":"6e0b2791-513e-49be-bbd8-62c2597640ef","zonename":"Zone-Xen","templateid":"855b7915-9739-4ad7-945e-8b8514040198","templatename":"CentOS-6.4-x86_64
(scalable)","templatedisplaytext":"CentOS-6.4-x86_64
(scalable)","passwordenabled":false,"serviceofferingid":"32f7668c-5edd-4152-b927-c7b744281dc2","serviceofferingname":"Small
Instance","cpunumber":1,"cpuspeed":500,"memory":512,"cpuused":"0%","networkkbsread":0,"networkkbswrite":1,"diskkbsread":0,"diskkbswrite":0,"diskioread":0,"diskiowrite":0,"guestosid":"f70b6aaa-37da-11e3-9cb9-46ca9f9b4d97","rootdeviceid":0,"rootdevicetype":"ROOT","securitygroup":[],"nic":[{"id":"2f2a6ff3-ab11-4127-8991-2813a9a1c3ba","networkid":"aad53b98-3a6c-4cd3-a1e3-cbb84834d8c1","networkname":"domain1-user2-network","netmask":"255.255.255.0","gateway":"10.1.1.1","ipaddress":"10.1.1.204","traffictype":"Guest","type":"Isolated","isdefault":true,"macaddress":"02:00:17:61:00:01"}],"hypervisor":"XenServer","tags":[],"affinitygroup":[],"displayvm":true,"isdynamicallyscalable":true}
}  }
2013-10-25 17:03:20,108 - requester.py:45 - [DEBUG] ======== END
Request ========


I'm using Cloudmonkey from git (corresponding to 5.0.0), and I have tried
using root admin and domain admin to call this API. Both turned out to
succeed but crash Cloudmonkey.

-------------------------------------------------------------------------------------------
Yu-Heng (Ryan) Lei, Associate Researcher
Chunghwa Telecom Laboratories / Cloud Computing Laboratory
ryanlei@cht.com.tw<https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw>
or
ryanlei750328@gmail.com



On Fri, Oct 25, 2013 at 7:02 PM, Rohit Yadav <bh...@apache.org> wrote:

> Hi Ryan,
>
> Will check this next week, the issue is clearly with response which lacks a
> key with name 'response' in it, it could be a case issue as well. Can you
> share with us the response json from cloudmonkey's log in
> ~/.cloudmonkey/log, you may confirm the keys from the json. Also, check if
> you're allowed to call the API as different user groups can have access to
> different set of APIs.
>
> Cheers.
>
>
> On Fri, Oct 25, 2013 at 2:27 PM, Ryan Lei <ry...@cht.com.tw> wrote:
>
> > I'm using Cloudmonkey 5.0.0 under CloudStack 4.2.0 + XenServer 6.2.
> > For now, the only way to change the ownership of a VM is by the
> > assignVirtualMachine API.
> >
> > But executing this API using Cloudmonkey leads to the following error
> that
> > crashes the program:
> >
> > > assign virtualmachine
> > virtualmachineid=7fe548bb-b2a7-4aec-92c5-5012ef9fd4f4
> account=domain1-user1
> > domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f
> > Traceback (most recent call last):
> >   File "/usr/bin/cloudmonkey", line 9, in <module>
> >     load_entry_point('cloudmonkey==5.0.0', 'console_scripts',
> > 'cloudmonkey')()
> >   File
> >
> >
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> > line 536, in main
> >     shell.cmdloop()
> >   File
> >
> >
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> > line 106, in cmdloop
> >     super(CloudMonkeyShell, self).cmdloop(intro="")
> >   File "/usr/lib64/python2.6/cmd.py", line 142, in cmdloop
> >     stop = self.onecmd(line)
> >   File "/usr/lib64/python2.6/cmd.py", line 219, in onecmd
> >     return func(arg)
> >   File
> >
> >
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> > line 134, in grammar_closure
> >     self.default("%s %s" % (cmd, args))
> >   File
> >
> >
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> > line 303, in default
> >     result = self.make_request(apiname, args_dict, isasync)
> >   File
> >
> >
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> > line 257, in make_request
> >     self.timeout, self.protocol, self.path)
> >   File
> >
> >
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/requester.py",
> > line 121, in monkeyrequest
> >     responsekey = filter(lambda x: 'response' in x, response.keys())[0]
> > IndexError: list index out of range
> > [cs42]~#
> >
> > However, the account of VM DOES change successfully, checked from both
> the
> > UI and API.
> > And after the change, only the new VM owner and their admins and see this
> > VM.
> >
> >
> >
> -------------------------------------------------------------------------------------------
> > Yu-Heng (Ryan) Lei, Associate Researcher
> > Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> > ryanlei@cht.com.tw<
> >
> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
> > >
> > or
> > ryanlei750328@gmail.com
> >
>

Re: [Cloudmonkey] assignVirtualMachine API causes index out of range error

Posted by Rohit Yadav <bh...@apache.org>.
Hi Ryan,

Will check this next week, the issue is clearly with response which lacks a
key with name 'response' in it, it could be a case issue as well. Can you
share with us the response json from cloudmonkey's log in
~/.cloudmonkey/log, you may confirm the keys from the json. Also, check if
you're allowed to call the API as different user groups can have access to
different set of APIs.

Cheers.


On Fri, Oct 25, 2013 at 2:27 PM, Ryan Lei <ry...@cht.com.tw> wrote:

> I'm using Cloudmonkey 5.0.0 under CloudStack 4.2.0 + XenServer 6.2.
> For now, the only way to change the ownership of a VM is by the
> assignVirtualMachine API.
>
> But executing this API using Cloudmonkey leads to the following error that
> crashes the program:
>
> > assign virtualmachine
> virtualmachineid=7fe548bb-b2a7-4aec-92c5-5012ef9fd4f4 account=domain1-user1
> domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f
> Traceback (most recent call last):
>   File "/usr/bin/cloudmonkey", line 9, in <module>
>     load_entry_point('cloudmonkey==5.0.0', 'console_scripts',
> 'cloudmonkey')()
>   File
>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> line 536, in main
>     shell.cmdloop()
>   File
>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> line 106, in cmdloop
>     super(CloudMonkeyShell, self).cmdloop(intro="")
>   File "/usr/lib64/python2.6/cmd.py", line 142, in cmdloop
>     stop = self.onecmd(line)
>   File "/usr/lib64/python2.6/cmd.py", line 219, in onecmd
>     return func(arg)
>   File
>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> line 134, in grammar_closure
>     self.default("%s %s" % (cmd, args))
>   File
>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> line 303, in default
>     result = self.make_request(apiname, args_dict, isasync)
>   File
>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> line 257, in make_request
>     self.timeout, self.protocol, self.path)
>   File
>
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/requester.py",
> line 121, in monkeyrequest
>     responsekey = filter(lambda x: 'response' in x, response.keys())[0]
> IndexError: list index out of range
> [cs42]~#
>
> However, the account of VM DOES change successfully, checked from both the
> UI and API.
> And after the change, only the new VM owner and their admins and see this
> VM.
>
>
> -------------------------------------------------------------------------------------------
> Yu-Heng (Ryan) Lei, Associate Researcher
> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> ryanlei@cht.com.tw<
> https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw
> >
> or
> ryanlei750328@gmail.com
>

Re: [Cloudmonkey] assignVirtualMachine API causes index out of range error

Posted by sebgoa <ru...@gmail.com>.
On Oct 25, 2013, at 10:57 AM, Ryan Lei <ry...@cht.com.tw> wrote:

> I'm using Cloudmonkey 5.0.0 under CloudStack 4.2.0 + XenServer 6.2.
> For now, the only way to change the ownership of a VM is by the
> assignVirtualMachine API.
> 
> But executing this API using Cloudmonkey leads to the following error that
> crashes the program:
> 
>> assign virtualmachine
> virtualmachineid=7fe548bb-b2a7-4aec-92c5-5012ef9fd4f4 account=domain1-user1
> domainid=cfc19b03-0858-4f39-9058-e0b67685bc2f
> Traceback (most recent call last):
>  File "/usr/bin/cloudmonkey", line 9, in <module>
>    load_entry_point('cloudmonkey==5.0.0', 'console_scripts',
> 'cloudmonkey')()
>  File
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> line 536, in main
>    shell.cmdloop()
>  File
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> line 106, in cmdloop
>    super(CloudMonkeyShell, self).cmdloop(intro="")
>  File "/usr/lib64/python2.6/cmd.py", line 142, in cmdloop
>    stop = self.onecmd(line)
>  File "/usr/lib64/python2.6/cmd.py", line 219, in onecmd
>    return func(arg)
>  File
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> line 134, in grammar_closure
>    self.default("%s %s" % (cmd, args))
>  File
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> line 303, in default
>    result = self.make_request(apiname, args_dict, isasync)
>  File
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/cloudmonkey.py",
> line 257, in make_request
>    self.timeout, self.protocol, self.path)
>  File
> "/usr/lib/python2.6/site-packages/cloudmonkey-5.0.0-py2.6.egg/cloudmonkey/requester.py",
> line 121, in monkeyrequest
>    responsekey = filter(lambda x: 'response' in x, response.keys())[0]
> IndexError: list index out of range
> [cs42]~#
> 
> However, the account of VM DOES change successfully, checked from both the
> UI and API.
> And after the change, only the new VM owner and their admins and see this
> VM.
> 

I am guessing this is an issue with the response object of the assignVirtualMachine API call.
Can you check the java code for this API ?

> -------------------------------------------------------------------------------------------
> Yu-Heng (Ryan) Lei, Associate Researcher
> Chunghwa Telecom Laboratories / Cloud Computing Laboratory
> ryanlei@cht.com.tw<https://email.cht.com.tw/owa/redir.aspx?C=-wE1FEC3G0SWYpVkiWo8SsDdf3ZqO9AIuAPTzRnFYCUi-z4YljtI_hyVKkNHfn9F1Bn-vUWJnQ4.&URL=mailto%3aryanlei%40cht.com.tw>
> or
> ryanlei750328@gmail.com