You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bf...@apache.org on 2013/04/19 00:19:10 UTC
[13/31] git commit: updated refs/heads/ui-mixed-zone-management to
e044303
pep8 compliance for cloudstackConnection
Signed-off-by: Prasanna Santhanam <ts...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/b12905b7
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/b12905b7
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/b12905b7
Branch: refs/heads/ui-mixed-zone-management
Commit: b12905b7a828a0766a521ca9859158d4356405ed
Parents: e03176c
Author: Prasanna Santhanam <ts...@apache.org>
Authored: Thu Apr 18 07:44:25 2013 +0530
Committer: Prasanna Santhanam <ts...@apache.org>
Committed: Thu Apr 18 07:44:25 2013 +0530
----------------------------------------------------------------------
test/integration/smoke/test_public_ip_range.py | 2 +-
tools/marvin/marvin/cloudstackConnection.py | 92 ++++++++++++-------
2 files changed, 58 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b12905b7/test/integration/smoke/test_public_ip_range.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_public_ip_range.py b/test/integration/smoke/test_public_ip_range.py
index a7aad6b..7c965ea 100644
--- a/test/integration/smoke/test_public_ip_range.py
+++ b/test/integration/smoke/test_public_ip_range.py
@@ -49,7 +49,7 @@ class Services:
"endip": "10.102.197.73",
"zoneid": "1",
"podid": "",
- "vlan": "101",
+ "vlan": "4444",
}
class TesDedicatePublicIPRange(cloudstackTestCase):
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b12905b7/tools/marvin/marvin/cloudstackConnection.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/cloudstackConnection.py b/tools/marvin/marvin/cloudstackConnection.py
index 5fd3e12..14b12e7 100644
--- a/tools/marvin/marvin/cloudstackConnection.py
+++ b/tools/marvin/marvin/cloudstackConnection.py
@@ -5,9 +5,9 @@
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -22,16 +22,20 @@ import hmac
import hashlib
import time
import cloudstackException
-from cloudstackAPI import *
+from cloudstackAPI import *
import jsonHelper
from requests import ConnectionError
from requests import HTTPError
from requests import Timeout
from requests import RequestException
+
class cloudConnection(object):
- def __init__(self, mgtSvr, port=8096, apiKey=None, securityKey=None, asyncTimeout=3600, logging=None,
- scheme='http', path='client/api'):
+ """ Connections to make API calls to the cloudstack management server
+ """
+ def __init__(self, mgtSvr, port=8096, apiKey=None, securityKey=None,
+ asyncTimeout=3600, logging=None, scheme='http',
+ path='client/api'):
self.apiKey = apiKey
self.securityKey = securityKey
self.mgtSvr = mgtSvr
@@ -42,16 +46,18 @@ class cloudConnection(object):
self.asyncTimeout = asyncTimeout
self.auth = True
if port == 8096 or \
- (self.apiKey == None and self.securityKey == None):
+ (self.apiKey is None and self.securityKey is None):
self.auth = False
if scheme not in ['http', 'https']:
raise RequestException("Protocol must be HTTP")
self.protocol = scheme
- self.baseurl = "%s://%s:%d/%s"%(self.protocol, self.mgtSvr, self.port, self.path)
+ self.baseurl = "%s://%s:%d/%s"\
+ % (self.protocol, self.mgtSvr, self.port, self.path)
def __copy__(self):
- return cloudConnection(self.mgtSvr, self.port, self.apiKey, self.securityKey, self.asyncTimeout,
- self.logging, self.protocol, self.path)
+ return cloudConnection(self.mgtSvr, self.port, self.apiKey,
+ self.securityKey, self.asyncTimeout,
+ self.logging, self.protocol, self.path)
def poll(self, jobid, response):
"""
@@ -68,16 +74,19 @@ class cloudConnection(object):
asyncResonse = self.marvin_request(cmd, response_type=response)
if asyncResonse.jobstatus == 2:
- raise cloudstackException.cloudstackAPIException("asyncquery", asyncResonse.jobresult)
+ raise cloudstackException.cloudstackAPIException(
+ "asyncquery", asyncResonse.jobresult)
elif asyncResonse.jobstatus == 1:
return asyncResonse
time.sleep(5)
if self.logging is not None:
- self.logging.debug("job: %s still processing, will timeout in %ds"%(jobid, timeout))
+ self.logging.debug("job: %s still processing,"
+ " will timeout in %ds" % (jobid, timeout))
timeout = timeout - 5
- raise cloudstackException.cloudstackAPIException("asyncquery", "Async job timeout %s"%jobid)
+ raise cloudstackException.cloudstackAPIException(
+ "asyncquery", "Async job timeout %s" % jobid)
def sign(self, payload):
"""
@@ -90,19 +99,26 @@ class cloudConnection(object):
params.sort(key=lambda k: str.lower(k[0]))
hashStr = "&".join(
["=".join(
- [str.lower(r[0]), str.lower(urllib.quote_plus(str(r[1]))).replace("+", "%20")]
+ [str.lower(r[0]),
+ str.lower(
+ urllib.quote_plus(str(r[1]))
+ ).replace("+", "%20")]
) for r in params]
)
- signature = base64.encodestring(hmac.new(self.securityKey, hashStr, hashlib.sha1).digest()).strip()
- self.logging.info("Computed Signature by Marvin: %s"%signature)
+ signature = base64.encodestring(hmac.new(
+ self.securityKey, hashStr, hashlib.sha1).digest()).strip()
+ self.logging.info("Computed Signature by Marvin: %s" % signature)
return signature
def request(self, command, auth=True, payload={}, data={}):
"""
- Makes requests on the `integration.api.port`
- @param command: cloudstack API command name eg: deployVirtualMachineCommand
- @param auth: Authentication (apikey,secretKey) => True, else False
- @param payload: GET param data composed as a dictionary of key,value pairs
+ Makes requests using auth or over integration port
+ @param command: cloudstack API command name
+ eg: deployVirtualMachineCommand
+ @param auth: Authentication (apikey,secretKey) => True
+ else False for integration.api.port
+ @param payload: GET param data composed as a dictionary
+ of key,value pairs
@param data: POST data as a dictionary
@return:
"""
@@ -114,23 +130,24 @@ class cloudConnection(object):
signature = self.sign(payload)
payload["signature"] = signature
-
try:
if data:
- response = requests.get(self.baseurl, params=payload, data=data)
+ response = requests.get(self.baseurl, params=payload,
+ data=data)
else:
response = requests.get(self.baseurl, params=payload)
except ConnectionError, c:
- self.logging.debug("Connection refused. Reason: %s"%(self.baseurl, c))
+ self.logging.debug("Connection refused. Reason: %s" %
+ (self.baseurl, c))
raise c
except HTTPError, h:
- self.logging.debug("Server returned error code: %s"%h)
+ self.logging.debug("Server returned error code: %s" % h)
raise h
except Timeout, t:
- self.logging.debug("Connection timed out with %s"%t)
+ self.logging.debug("Connection timed out with %s" % t)
raise t
- except RequestException,r:
- self.logging.debug("Error returned by server %s"%r)
+ except RequestException, r:
+ self.logging.debug("Error returned by server %s" % r)
raise r
else:
return response
@@ -144,7 +161,8 @@ class cloudConnection(object):
requests = {}
required = []
for attribute in dir(cmd):
- if attribute != "__doc__" and attribute != "__init__" and attribute != "__module__":
+ if attribute != "__doc__" and attribute != "__init__" and \
+ attribute != "__module__":
if attribute == "isAsync":
isAsync = getattr(cmd, attribute)
elif attribute == "required":
@@ -155,7 +173,8 @@ class cloudConnection(object):
cmdname = cmd.__class__.__name__.replace("Cmd", "")
for requiredPara in required:
if requests[requiredPara] is None:
- raise cloudstackException.cloudstackAPIException(cmdname, "%s is required"%requiredPara)
+ raise cloudstackException.cloudstackAPIException(
+ cmdname, "%s is required" % requiredPara)
for param, value in requests.items():
if value is None:
requests.pop(param)
@@ -169,8 +188,8 @@ class cloudConnection(object):
requests.pop(param)
i = 0
for val in value:
- for k,v in val.iteritems():
- requests["%s[%d].%s"%(param,i,k)] = v
+ for k, v in val.iteritems():
+ requests["%s[%d].%s" % (param, i, k)] = v
i = i + 1
return cmdname, isAsync, requests
@@ -184,14 +203,17 @@ class cloudConnection(object):
@return:
"""
cmdname, isAsync, payload = self.sanitize_command(cmd)
- self.logging.info("sending command: %s %s"%(cmdname, str(payload)))
+ self.logging.info("sending command: %s %s" % (cmdname, str(payload)))
if self.auth:
- response = self.request(cmdname, auth=True, payload=payload, data=data)
+ response = self.request(
+ cmdname, auth=True, payload=payload, data=data)
else:
- response = self.request(cmdname, auth=False, payload=payload, data=data)
+ response = self.request(
+ cmdname, auth=False, payload=payload, data=data)
- self.logging.info("Request: %s Response: %s"%(response.url, response.text))
- response = jsonHelper.getResultObj(response.json, response_type)
+ self.logging.info("Request: %s Response: %s" %
+ (response.url, response.text))
+ response = jsonHelper.getResultObj(response.json(), response_type)
if isAsync == "false":
return response