DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.

DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
| Wiki Markup |
|---|
#!/ usr/bin/env python#python # By: Kelcey Damage, 2012 & Kraig Amador, 2012 api_url = 'your_stuff_here' apiKey = 'your_stuff_here' secret = 'your_stuff_here' import hashlib, hmac, string, base64, urllibimporturllib import json, urllib class SignedAPICall(object): def def __init__(self, api_url, apiKey, secret): self self.api_url = api_url selfurl self.apiKey = apiKey selfapiKey self.secret = secret def def request(self, args): args args['apiKey'] = self.apiKey selfapiKey self.params = [] self self._sort_request(args) self self._create_signature() self self._build_post_request() def def _sort_request(self, args): keys keys = sorted(args.keys()) for for key in keys: self self.params.append(key + '=' + urllib.quote_plus(args[key])) def def _create_signature(self): self self.query = '&'.join(self.params) digest digest = hmac.new( self self.secret, msg msg=self.query.lower(), digestmod digestmod=hashlib.sha1).digest() self self.signature = base64.b64encode(digest) def def _build_post_request(self): self self.query += '&signature=' + urllib.quote_plus(self.signature) self self.value = self.api_url + '?' + self.query class CloudStack(SignedAPICall): def def __getattr__(self, name): def def handlerFunction(*args, **kwargs): if if kwargs: return return self._make_request(name, kwargs) return return self._make_request(name, args[0]) return return handlerFunction def def _http_get(self, url): response response = urllib.urlopen(url) return return response.read() def def _make_request(self, command, args): args args['response'] = 'json' args args['command'] = command self command self.request(args) data data = self._http_get(self.value) # # The response is of the format {commandresponse: actual-data} key key = command.lower() + "response" return return json.loads(data)[key] api = CloudStack(api_url, apiKey, secret) request = {'listall': 'true'} result = api.listVirtualMachines(request) print "count", result['count'] print "api url", api.value |