[pkg-eucalyptus-commits] [SCM] managing cloud instances for Eucalyptus branch, master, updated. 3.0.0-alpha3-257-g1da8e3a
Garrett Holmstrom
gholms at fedoraproject.org
Sun Jun 16 02:30:03 UTC 2013
The following commit has been merged in the master branch:
commit ad00b8c1167f4ae2fdba458493617af2be3b68f0
Author: Garrett Holmstrom <gholms at fedoraproject.org>
Date: Mon Feb 11 17:26:33 2013 -0800
Temporary request class refactor so walrus dev can begin
diff --git a/euca2ools/commands/__init__.py b/euca2ools/commands/__init__.py
index 89437aa..50df0bf 100644
--- a/euca2ools/commands/__init__.py
+++ b/euca2ools/commands/__init__.py
@@ -45,17 +45,16 @@ class Euca2oolsCommand(requestbuilder.command.BaseCommand):
@property
def config_files(self):
if self._config_files is None:
- self._config_files = ['/etc/euca2ools.ini']
- user_glob = os.path.join(os.path.expanduser('~/.euca'), '*.ini')
- self._config_files.extend(sorted(glob.glob(user_glob)))
+ self._config_files = _list_config_files()
return self._config_files
@staticmethod
def print_version_and_exit():
_print_version_and_exit()
-# FIXME: the base class should change
-class Euca2oolsRequest(requestbuilder.request.AWSQueryRequest):
+
+# FIXME: Duplicating requestbuilder's hierarchy is dumb
+class Euca2oolsRequest(requestbuilder.request.BaseRequest):
def __init__(self, **kwargs):
self._config_files = None
self.__user_agent = None
@@ -64,9 +63,7 @@ class Euca2oolsRequest(requestbuilder.request.AWSQueryRequest):
@property
def config_files(self):
if self._config_files is None:
- self._config_files = ['/etc/euca2ools.ini']
- user_glob = os.path.join(os.path.expanduser('~/.euca'), '*.ini')
- self._config_files.extend(sorted(glob.glob(user_glob)))
+ self._config_files = _list_config_files()
return self._config_files
@property
@@ -110,6 +107,68 @@ class Euca2oolsRequest(requestbuilder.request.AWSQueryRequest):
def print_version_and_exit():
_print_version_and_exit()
+
+class Euca2oolsQueryRequest(requestbuilder.request.AWSQueryRequest):
+ def __init__(self, **kwargs):
+ self._config_files = None
+ self.__user_agent = None
+ requestbuilder.request.AWSQueryRequest.__init__(self, **kwargs)
+
+ @property
+ def config_files(self):
+ if self._config_files is None:
+ self._config_files = _list_config_files()
+ return self._config_files
+
+ @property
+ def user_agent(self):
+ if self.__user_agent is None:
+ user_agent_bits = ['euca2ools/{0}'.format(__version__)]
+
+ tokens = []
+ impl = platform.python_implementation()
+ if impl == 'PyPy':
+ impl_version = '{0}.{1}.{2}'.format(
+ sys.pypy_version_info.major,
+ sys.pypy_version_info.minor,
+ sys.pypy_version_info.micro)
+ if sys.pypy_version_info.releaselevel != 'final':
+ impl_version += sys.pypy_version_info.releaselevel
+ else:
+ # I'm guessing for non-CPython implementations; feel free to
+ # submit patches or the needed implementation-specific API
+ # references.
+ impl_version = platform.python_version()
+ tokens.append('{0} {1}'.format(impl, impl_version))
+ plat = []
+ try:
+ plat.append(platform.system())
+ plat.append(platform.release())
+ except IOError:
+ pass
+ if plat:
+ tokens.append(' '.join(plat))
+ tokens.append(platform.machine())
+ user_agent_bits.append('({0})'.format('; '.join(tokens)))
+
+ user_agent_bits.append('requestbuilder/{0}'.format(
+ requestbuilder.__version__))
+ user_agent_bits.append('requests/{0}'.format(requests.__version__))
+ self.__user_agent = ' '.join(user_agent_bits)
+ return self.__user_agent
+
+ @staticmethod
+ def print_version_and_exit():
+ _print_version_and_exit()
+
+
+def _list_config_files():
+ sys_config_files = ['/etc/euca2ools.ini']
+ user_glob = os.path.join(os.path.expanduser('~/.euca'), '*.ini')
+ user_config_files = sorted(glob.glob(user_glob))
+ return sys_config_files + user_config_files
+
+
def _print_version_and_exit():
print >> sys.stderr, 'euca2ools {0} (Sparta)'.format(__version__)
if os.path.isfile('/etc/eucalyptus/eucalyptus-version'):
diff --git a/euca2ools/commands/euare/__init__.py b/euca2ools/commands/euare/__init__.py
index 433909f..9ec120e 100644
--- a/euca2ools/commands/euare/__init__.py
+++ b/euca2ools/commands/euare/__init__.py
@@ -31,7 +31,7 @@
from requestbuilder import Arg, SERVICE
import requestbuilder.auth
import requestbuilder.service
-from .. import Euca2oolsRequest
+from .. import Euca2oolsQueryRequest
class Euare(requestbuilder.service.BaseService):
NAME = 'iam'
@@ -40,13 +40,13 @@ class Euare(requestbuilder.service.BaseService):
AUTH_CLASS = requestbuilder.auth.QuerySigV2Auth
URL_ENVVAR = 'EUARE_URL'
-class EuareRequest(Euca2oolsRequest):
+class EuareRequest(Euca2oolsQueryRequest):
SERVICE_CLASS = Euare
ARGS = [Arg('-U', '--url', dest='url', metavar='URL', route_to=SERVICE,
help='identity service endpoint URL')]
def parse_response(self, response):
- response_dict = Euca2oolsRequest.parse_response(self, response)
+ response_dict = Euca2oolsQueryRequest.parse_response(self, response)
# EUARE responses enclose their useful data inside FooResponse
# elements. If that's all we have after stripping out ResponseMetadata
# then just return its contents.
diff --git a/euca2ools/commands/euca/__init__.py b/euca2ools/commands/euca/__init__.py
index c99208d..7d808ff 100644
--- a/euca2ools/commands/euca/__init__.py
+++ b/euca2ools/commands/euca/__init__.py
@@ -40,7 +40,7 @@ import requests
import shlex
from string import Template
import sys
-from .. import Euca2oolsRequest
+from .. import Euca2oolsQueryRequest
class EC2CompatibleQuerySigV2Auth(QuerySigV2Auth):
# -a and -s are deprecated; remove them in 3.2
@@ -157,15 +157,16 @@ class Eucalyptus(requestbuilder.service.BaseService):
self.auth.configure()
-class EucalyptusRequest(Euca2oolsRequest, TabifyingCommand):
+class EucalyptusRequest(Euca2oolsQueryRequest, TabifyingCommand):
SERVICE_CLASS = Eucalyptus
def __init__(self, **kwargs):
- Euca2oolsRequest.__init__(self, **kwargs)
+ Euca2oolsQueryRequest.__init__(self, **kwargs)
self.method = 'POST' ## FIXME
def parse_http_response(self, response_body):
- response = Euca2oolsRequest.parse_http_response(self, response_body)
+ response = Euca2oolsQueryRequest.parse_http_response(self,
+ response_body)
# Compute cloud controller responses enclose their useful data inside
# FooResponse elements. If that's all we have after stripping out
# RequestId then just return its contents.
--
managing cloud instances for Eucalyptus
More information about the pkg-eucalyptus-commits
mailing list