Hi Marco,

Are you using the latest version, CloudMonkey 5.3.1?

Can you try using double quotes? Like: assign virtualmachine account=“string1 
string2”
(CloudMonkey using shlex, fyi)

The account parameter for the API should be provided as is (in case you were 
trying to do wild card search using a star - *).

Hope this helps.

On 08-Jul-2015, at 7:34 pm, Marco Giovannini 
<[email protected]<mailto:[email protected]>> wrote:

Hi

after a deeper investigation I think the  issue is in the cloudmonkey.py
in the following function as it is using space as delimiter for the options
of the command.

I will install a cloudmonkey in my test environment and I'll see if I'm
right and able to fix it.

   def default(self, args):
       if self.pipe_runner(args):
           return

       apiname = args.partition(' ')[0]
       verb, subject = splitverbsubject(apiname)

       lexp = shlex.shlex(args.strip())
       lexp.whitespace = " "
*        lexp.whitespace_split = True*
       lexp.posix = True
       args = []
       while True:
           next_val = lexp.next()
           if next_val is None:
               break
           args.append(next_val.replace('\x00', ''))

       args_dict = dict(map(lambda x: [x.partition("=")[0],
                                       x.partition("=")[2]],
                            args[1:])[x] for x in range(len(args) - 1))
       field_filter = None
       if 'filter' in args_dict:
           field_filter = filter(lambda x: x is not '',
                                 map(lambda x: x.strip(),
                                     args_dict.pop('filter').split(',')))

       missing = []
       if verb in self.apicache and subject in self.apicache[verb]:
           missing = filter(lambda x: x not in [key.split('[')[0]
                                                for key in args_dict],
                            self.apicache[verb][subject]['requiredparams'])

       if len(missing) > 0:
           self.monkeyprint("Missing arguments: ", ' '.join(missing))
           return

       isasync = False
       if 'asyncapis' in self.apicache:
           isasync = apiname in self.apicache['asyncapis']

       result = self.make_request(apiname, args_dict, isasync)

       if result is None:
           return
       try:
           responsekeys = filter(lambda x: 'response' in x, result.keys())
           for responsekey in responsekeys:
               self.print_result(result[responsekey], field_filter)
           print
       except Exception as e:
           self.monkeyprint("🙈  Error on parsing and printing", e)



Regards,
Marco

On Tue, Jul 7, 2015 at 7:44 PM, Nick Brody 
<[email protected]<mailto:[email protected]>> wrote:

thanks mate

On Tue, Jul 7, 2015 at 4:06 AM, Marco Giovannini 
<[email protected]<mailto:[email protected]>>
wrote:

Hi

I'm using Cloudstack 4.3.X. and  I need to  use cloudmonkey to perform the
task of assigning the vm instance to another user (I did not find a way to
do from the web interface in one step)

I'm using the following command:

assign virtualmachine *account='Part1 Part2 Part3*'
domainid=9f33d216-cd9e-485a-9858-e5805afe8097
virtualmachineid=96aa0da7-29ca-48a7-b928-b73052933e21
networkids=ff1567f0-0820-4116-98b1-c79a55120356

This command is giving me back the following error


nt/api', 'expires=600',

'secretkey=g_fBs2UpAJQSu0CfL8s5hVhC0wTaEkYfQITT1v81fW87wSXduZvBqOKAgJsq_Y4Q48JXnfUD9Cjn9SerbaoprA',
'timeout=3600', 'password=password']
2015-07-07 10:47:37,578 - requester.py:41 - [DEBUG] ======== START Request
========
2015-07-07 10:47:37,579 - requester.py:41 - [DEBUG] Requesting
command=assignVirtualMachine, args={'networkids':
'ff1567f0-0820-4116-98b1-c79a55120356',* 'Part3': ''*, 'virtualmachineid':
'96aa0da7-29ca-48a7-b928-b73052933e21', *'account': 'Part1', 'Part2':* '',
'domainid': '9f33d216-cd9e-485a-9858-e5805afe8097'}
2015-07-07 10:47:37,579 - requester.py:41 - [DEBUG] Request sent:

http://inth1-vdc-pcpman2.pargar.cp.vdc:8080/client/api?account=Interoute&apiKey=YpMzLF_JyICbhmHKTlhW16B0NntlX210T5XAZlILM8L85qYDaNaRKdNBIQp-hniVPFkMjeQuLQxjynrUplBp8Q&command=assignVirtualMachine&domainid=9f33d216-cd9e-485a-9858-e5805afe8097&expires=2015-07-07T10%3A57%3A37%2B0000&Management=&networkids=ff1567f0-0820-4116-98b1-c79a55120356&response=json&signatureversion=3&VDC=&virtualmachineid=96aa0da7-29ca-48a7-b928-b73052933e21&signature=el38MIugRpFdSatTT9FU93rfrr8%3D
2015-07-07
<http://inth1-vdc-pcpman2.pargar.cp.vdc:8080/client/api?account=Interoute&apiKey=YpMzLF_JyICbhmHKTlhW16B0NntlX210T5XAZlILM8L85qYDaNaRKdNBIQp-hniVPFkMjeQuLQxjynrUplBp8Q&command=assignVirtualMachine&domainid=9f33d216-cd9e-485a-9858-e5805afe8097&expires=2015-07-07T10%3A57%3A37%2B0000&Management=&networkids=ff1567f0-0820-4116-98b1-c79a55120356&response=json&signatureversion=3&VDC=&virtualmachineid=96aa0da7-29ca-48a7-b928-b73052933e21&signature=el38MIugRpFdSatTT9FU93rfrr8%3D2015-07-07>
10:47:37,675 - requester.py:41 - [DEBUG] Response received: None
2015-07-07 10:47:37,675 - requester.py:41 -* [DEBUG] Error:
Error:Unauthorized None*

As  you  can see the account name with spaces is messing up the account
name used in the call and this is the reason I get the unauthorized error.

I tried different way to put the account name, with quote  without quote
or
substitute the space with %20 but nothing worked.

Is the any known workaround  to get rid of this issue?

Regards,
Marco




Regards,
Rohit Yadav
Software Architect, ShapeBlue


[cid:9DD97B41-04C5-45F0-92A7-951F3E962F7A]


M. +91 88 262 30892 | 
[email protected]<mailto:[email protected]>
Blog: bhaisaab.org<http://bhaisaab.org> | Twitter: @_bhaisaab




Find out more about ShapeBlue and our range of CloudStack related services

IaaS Cloud Design & Build<http://shapeblue.com/iaas-cloud-design-and-build//>
CSForge – rapid IaaS deployment framework<http://shapeblue.com/csforge/>
CloudStack Consulting<http://shapeblue.com/cloudstack-consultancy/>
CloudStack Software 
Engineering<http://shapeblue.com/cloudstack-software-engineering/>
CloudStack Infrastructure 
Support<http://shapeblue.com/cloudstack-infrastructure-support/>
CloudStack Bootcamp Training Courses<http://shapeblue.com/cloudstack-training/>

This email and any attachments to it may be confidential and are intended 
solely for the use of the individual to whom it is addressed. Any views or 
opinions expressed are solely those of the author and do not necessarily 
represent those of Shape Blue Ltd or related companies. If you are not the 
intended recipient of this email, you must neither take any action based upon 
its contents, nor copy or show it to anyone. Please contact the sender if you 
believe you have received this email in error. Shape Blue Ltd is a company 
incorporated in England & Wales. ShapeBlue Services India LLP is a company 
incorporated in India and is operated under license from Shape Blue Ltd. Shape 
Blue Brasil Consultoria Ltda is a company incorporated in Brasil and is 
operated under license from Shape Blue Ltd. ShapeBlue SA Pty Ltd is a company 
registered by The Republic of South Africa and is traded under license from 
Shape Blue Ltd. ShapeBlue is a registered trademark.

Reply via email to