[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