summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-05-25 21:15:09 +0000
committerGerrit Code Review <review@openstack.org>2015-05-25 21:15:09 +0000
commit0c244b24bd70c8ae54b0ed5e6096043f780a0eab (patch)
treefd0f1f7e507b9c7a972b203ea239e0d4d97431ae
parent048e763b75c5c1a0f18bf461577751386043c2d0 (diff)
parent583adc34f8cd4abd1048c57c058e88b8c68d5780 (diff)
downloadpython-glanceclient-0c244b24bd70c8ae54b0ed5e6096043f780a0eab.tar.gz
Merge "Check image-download for redirection"
-rw-r--r--glanceclient/v1/shell.py11
-rw-r--r--glanceclient/v2/shell.py16
2 files changed, 20 insertions, 7 deletions
diff --git a/glanceclient/v1/shell.py b/glanceclient/v1/shell.py
index e0a373a..692f9bc 100644
--- a/glanceclient/v1/shell.py
+++ b/glanceclient/v1/shell.py
@@ -147,8 +147,8 @@ def do_image_show(gc, args):
@utils.arg('--file', metavar='<FILE>',
help='Local file to save downloaded image data to. '
- 'If this is not specified the image data will be '
- 'written to stdout.')
+ 'If this is not specified and there is no redirection '
+ 'the image data will be not be saved.')
@utils.arg('image', metavar='<IMAGE>', help='Name or ID of image to download.')
@utils.arg('--progress', action='store_true', default=False,
help='Show download progress bar.')
@@ -158,7 +158,12 @@ def do_image_download(gc, args):
body = image.data()
if args.progress:
body = progressbar.VerboseIteratorWrapper(body, len(body))
- utils.save_image(body, args.file)
+ if not (sys.stdout.isatty() and args.file is None):
+ utils.save_image(body, args.file)
+ else:
+ print('No redirection or local file specified for downloaded image '
+ 'data. Please specify a local file with --file to save '
+ 'downloaded image or redirect output to another source.')
@utils.arg('--id', metavar='<IMAGE_ID>',
diff --git a/glanceclient/v2/shell.py b/glanceclient/v2/shell.py
index 0b3b6da..7298069 100644
--- a/glanceclient/v2/shell.py
+++ b/glanceclient/v2/shell.py
@@ -13,6 +13,8 @@
# License for the specific language governing permissions and limitations
# under the License.
+import sys
+
from glanceclient.common import progressbar
from glanceclient.common import utils
from glanceclient import exc
@@ -46,7 +48,7 @@ def get_image_schema():
' May be used multiple times.'))
@utils.arg('--file', metavar='<FILE>',
help='Local file that contains disk image to be uploaded '
- 'during creation. Alternatively, images can be passed '
+ 'during creation. Must be present if images are not passed '
'to the client via stdin.')
@utils.arg('--progress', action='store_true', default=False,
help='Show upload progress bar.')
@@ -254,8 +256,8 @@ def do_explain(gc, args):
@utils.arg('--file', metavar='<FILE>',
help='Local file to save downloaded image data to. '
- 'If this is not specified the image data will be '
- 'written to stdout.')
+ 'If this is not specified and there is no redirection '
+ 'the image data will be not be saved.')
@utils.arg('id', metavar='<IMAGE_ID>', help='ID of image to download.')
@utils.arg('--progress', action='store_true', default=False,
help='Show download progress bar.')
@@ -264,7 +266,13 @@ def do_image_download(gc, args):
body = gc.images.data(args.id)
if args.progress:
body = progressbar.VerboseIteratorWrapper(body, len(body))
- utils.save_image(body, args.file)
+ if not (sys.stdout.isatty() and args.file is None):
+ utils.save_image(body, args.file)
+ else:
+ msg = ('No redirection or local file specified for downloaded image '
+ 'data. Please specify a local file with --file to save '
+ 'downloaded image or redirect output to another source.')
+ utils.exit(msg)
@utils.arg('--file', metavar='<FILE>',