[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:31:07 UTC 2013
The following commit has been merged in the master branch:
commit 853c6b15ae6bcebdc30c5126b994cd50effd94e4
Author: Garrett Holmstrom <gholms at fedoraproject.org>
Date: Thu Apr 25 23:00:16 2013 -0700
Port to requestbuilder alpha 9
diff --git a/bin/euca-version b/bin/euca-version
index 2bef120..33bbc34 100755
--- a/bin/euca-version
+++ b/bin/euca-version
@@ -31,5 +31,6 @@
# POSSIBILITY OF SUCH DAMAGE.
import euca2ools.commands
+import sys
-euca2ools.commands.Euca2ools().print_version_and_exit()
+print >> sys.stderr, euca2ools.commands.Euca2ools().format_version()
diff --git a/euca2ools/commands/__init__.py b/euca2ools/commands/__init__.py
index 5772272..25cad7f 100644
--- a/euca2ools/commands/__init__.py
+++ b/euca2ools/commands/__init__.py
@@ -50,17 +50,17 @@ class Euca2ools(object):
self.__user_agent = None
@staticmethod
- def print_version_and_exit():
- print >> sys.stderr, 'euca2ools', __version__, '(Sparta)'
+ def format_version():
+ version_lines = ['euca2ools {0} (Sparta)'.format(__version__)]
try:
if os.path.isfile('/etc/eucalyptus/eucalyptus-version'):
with open('/etc/eucalyptus/eucalyptus-version') as ver_file:
euca_version = ver_file.readline().strip()
- print >> sys.stderr, 'eucalyptus', euca_version
+ version_lines.append('eucalyptus {0}'.format(euca_version))
except:
# Those were just more crunchy bits. If they don't work, oh well!
pass
- sys.exit()
+ return '\n'.join(version_lines)
def list_config_files(self):
config_files = []
diff --git a/euca2ools/commands/bundle/bundleimage.py b/euca2ools/commands/bundle/bundleimage.py
index 389a38c..615ae08 100644
--- a/euca2ools/commands/bundle/bundleimage.py
+++ b/euca2ools/commands/bundle/bundleimage.py
@@ -104,7 +104,8 @@ class BundleImage(BaseCommand, FileTransferProgressBarMixin):
Arg('--part-size', type=filesize, default=10485760, # 10m
help=argparse.SUPPRESS),
Arg('--image-type', choices=('machine', 'kernel', 'ramdisk'),
- default='machine', help=argparse.SUPPRESS)]
+ default='machine', help=argparse.SUPPRESS),
+ Arg('--progressbar-label', help=argparse.SUPPRESS)]
def configure(self):
BaseCommand.configure(self)
@@ -168,11 +169,12 @@ class BundleImage(BaseCommand, FileTransferProgressBarMixin):
path_prefix = os.path.join(tempdir, prefix)
self.log.debug('bundle path prefix: %s', path_prefix)
- bar = self.get_progressbar(label='Bundling image',
+ label = self.args.get('progressbar_label', 'Bundling image')
+ bar = self.get_progressbar(label=label,
maxval=os.path.getsize(self.args['image']))
bundle = Bundle.create_from_image(
- self.args['image'], path_prefix, part_size=self.args['part_size'],
- progressbar=bar)
+ self.args['image'], path_prefix,
+ part_size=self.args.get('part_size'), progressbar=bar)
manifest = self.generate_manifest_xml(bundle)
manifest_filename = path_prefix + '.manifest.xml'
with open(manifest_filename, 'w') as manifest_file:
diff --git a/euca2ools/commands/bundle/uploadbundle.py b/euca2ools/commands/bundle/uploadbundle.py
index 6fa5921..166ba3f 100644
--- a/euca2ools/commands/bundle/uploadbundle.py
+++ b/euca2ools/commands/bundle/uploadbundle.py
@@ -29,7 +29,7 @@
# POSSIBILITY OF SUCH DAMAGE.
from euca2ools.commands import Euca2ools
-from euca2ools.commands.walrus import Walrus
+from euca2ools.commands.walrus import WalrusRequest
from euca2ools.commands.walrus.checkbucket import CheckBucket
from euca2ools.commands.walrus.createbucket import CreateBucket
from euca2ools.commands.walrus.putobject import PutObject
@@ -38,25 +38,19 @@ import lxml.etree
import lxml.objectify
import os.path
from requestbuilder import Arg, MutuallyExclusiveArgList
+from requestbuilder.auth import S3RestAuth
from requestbuilder.command import BaseCommand
from requestbuilder.exceptions import ServerError
+from requestbuilder.mixins import FileTransferProgressBarMixin
+from requestbuilder.util import set_userregion
-class UploadBundle(BaseCommand):
+class UploadBundle(WalrusRequest, FileTransferProgressBarMixin):
DESCRIPTION = 'Upload a bundle prepared by euca-bundle-image to the cloud'
- SUITE = Euca2ools
ARGS = [Arg('-b', '--bucket', metavar='BUCKET[/PREFIX]', required=True,
help='bucket to upload the bundle to (required)'),
Arg('-m', '--manifest', metavar='FILE', required=True,
help='manifest for the bundle to upload (required)'),
- MutuallyExclusiveArgList(
- Arg('--region', dest='userregion', metavar='USER at REGION',
- help='''name of the region and/or user in config files to
- use for connection and credential info'''),
- Arg('-U', '--url', help='storage service endpoint URL')),
- Arg('-I', '-a', '--access-key-id', '--access-key', dest='key_id',
- metavar='KEY_ID'),
- Arg('-S', '-s', '--secret-key', metavar='KEY'),
Arg('--acl', choices=('public-read', 'aws-exec-read'),
default='aws-exec-read', help='''canned ACL policy to apply
to the bundle (default: aws-exec-read)'''),
@@ -71,39 +65,26 @@ class UploadBundle(BaseCommand):
Arg('--retry', dest='retries', action='store_const', const=5,
default=1, help='retry failed uploads up to 5 times'),
Arg('--skipmanifest', action='store_true',
- help='do not upload the manifest'),
- Arg('--progress', action='store_true',
- help='show upload progress')]
-
- def configure(self):
- BaseCommand.configure(self)
- ## FIXME
- if self.args.get('userregion'):
- self.process_userregion(self.args['userregion'])
+ help='do not upload the manifest')]
def main(self):
(bucket, __, prefix) = self.args['bucket'].partition('/')
if prefix and not prefix.endswith('/'):
prefix += '/'
full_prefix = bucket + '/' + prefix
- walrus = Walrus(userregion=self.args['userregion'],
- url=self.args['url'], config=self.config,
- loglevel=self.log.level)
+
# First make sure the bucket exists
try:
- req = CheckBucket(bucket=bucket, service=walrus,
- config=self.config, key_id=self.args['key_id'],
- secret_key=self.args['secret_key'])
+ req = CheckBucket(bucket=bucket, service=self.service,
+ config=self.config)
req.main()
except AWSError as err:
if err.status_code == 404:
# No such bucket
self.log.info("creating bucket '%s'", bucket)
req = CreateBucket(bucket=bucket,
- location=self.args['location'],
- config=self.config, service=walrus,
- key_id=self.args['key_id'],
- secret_key=self.args['secret_key'])
+ location=self.args.get('location'),
+ config=self.config, service=self.service)
req.main()
else:
raise
@@ -122,22 +103,22 @@ class UploadBundle(BaseCommand):
for part in manifest.image.parts.part:
parts[int(part.get('index'))] = part.filename.text
part_paths = [os.path.join(part_dir, path) for (index, path) in
- sorted(parts.items()) if index >= self.args['part']]
+ sorted(parts.items())
+ if index >= self.args.get('part', 0)]
req = PutObject(sources=part_paths, dest=full_prefix,
acl=self.args['acl'],
- retries=self.args['retries'],
- progress=self.args['progress'],
- config=self.config, service=walrus,
- key_id=self.args['key_id'],
- secret_key=self.args['secret_key'])
+ retries=self.args.get('retries', 1),
+ progress=self.args.get('show_progress', False),
+ config=self.config, service=self.service)
+
req.main()
- if not self.args['skipmanifest']:
+ if not self.args.get('skipmanifest', False):
req = PutObject(sources=[self.args['manifest']],
- dest=full_prefix, retries=self.args['retries'],
+ dest=full_prefix,
acl=self.args['acl'],
- progress=self.args['progress'], config=self.config,
- service=walrus, key_id=self.args['key_id'],
- secret_key=self.args['secret_key'])
+ retries=self.args.get('retries', 1),
+ progress=self.args.get('show_progress', False),
+ config=self.config, service=self.service)
req.main()
manifest_loc = full_prefix + os.path.basename(self.args['manifest'])
return manifest_loc
diff --git a/euca2ools/commands/euca/__init__.py b/euca2ools/commands/euca/__init__.py
index f088a08..c07c163 100644
--- a/euca2ools/commands/euca/__init__.py
+++ b/euca2ools/commands/euca/__init__.py
@@ -37,6 +37,7 @@ from requestbuilder import Arg, MutuallyExclusiveArgList, AUTH, SERVICE
from requestbuilder.auth import QuerySigV2Auth
from requestbuilder.exceptions import AuthError
from requestbuilder.mixins import TabifyingCommand
+from requestbuilder.util import set_userregion
import requestbuilder.request
import requestbuilder.service
import requests
@@ -152,8 +153,7 @@ class Eucalyptus(requestbuilder.service.BaseService):
def configure(self):
# self.args gets highest precedence for self.endpoint and user/region
self.process_url(self.args.get('url'))
- if self.args.get('userregion'):
- self.process_userregion(self.args['userregion'])
+ set_userregion(self.config, self.args.get('userregion'))
# Shell-style config file given at the CLI
# Deprecated; should be removed in 3.2
if os.path.isfile(self.args['shell_configfile']):
@@ -165,8 +165,7 @@ class Eucalyptus(requestbuilder.service.BaseService):
if self.URL_ENVVAR in config:
self.process_url(config[self.URL_ENVVAR])
# Environment
- if self.REGION_ENVVAR in os.environ:
- self.process_userregion(os.getenv(self.REGION_ENVVAR))
+ set_userregion(self.config, os.getenv(self.REGION_ENVVAR))
self.process_url(os.getenv(self.URL_ENVVAR))
# Regular config file
self.process_url(self.config.get_region_option(self.NAME + '-url'))
diff --git a/euca2ools/commands/eustore/__init__.py b/euca2ools/commands/eustore/__init__.py
index c22f2c0..335842d 100644
--- a/euca2ools/commands/eustore/__init__.py
+++ b/euca2ools/commands/eustore/__init__.py
@@ -46,7 +46,4 @@ class EuStore(BaseService):
class EuStoreRequest(BaseRequest):
SUITE = Euca2ools
SERVICE_CLASS = EuStore
-
- @property
- def default_routes(self):
- return ()
+ DEFAULT_ROUTES = ()
--
managing cloud instances for Eucalyptus
More information about the pkg-eucalyptus-commits
mailing list