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='', 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='', 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='', 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='', 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='', 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='', 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='',