Darja Malyavkina cb049588f8 Fix small typos and remove unused code
Change-Id: I4d07b285b781e99d5a233f1525b136e7e857b92f
2016-09-28 18:21:05 +03:00

152 lines
5.2 KiB
Python

# Copyright (c) 2016 Mirantis, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import logging
import sys
from osc_lib.command import command
from glareclient.common import progressbar
from glareclient.common import utils
from glareclient.osc.v1 import TypeMapperAction
LOG = logging.getLogger(__name__)
def _default_blob_property(type_name):
if type_name == 'images':
return 'image'
elif type_name == 'murano_packages':
return 'package'
elif type_name in ('heat_templates', 'tosca_templates'):
return 'template'
elif type_name == 'heat_environments':
return 'environment'
utils.exit('Unknown artifact type. Please specify --blob-property.')
class UploadBlob(command.ShowOne):
"""Upload blob"""
def get_parser(self, prog_name):
parser = super(UploadBlob, self).get_parser(prog_name)
parser.add_argument(
'type_name',
metavar='<TYPE_NAME>',
action=TypeMapperAction,
help='Name of artifact type.',
),
parser.add_argument(
'id',
metavar='<ID>',
help='ID of the artifact to update.',
)
parser.add_argument(
'--file',
metavar='<FILE_PATH>',
help='Local file that contains data to be uploaded.',
)
parser.add_argument(
'--blob-property',
metavar='<BLOB_PROPERTY>',
help='Name of the blob field.'
)
parser.add_argument(
'--progress',
help='Show download progress bar.'
)
return parser
def take_action(self, parsed_args):
LOG.debug('take_action({0})'.format(parsed_args))
client = self.app.client_manager.artifact
if not parsed_args.blob_property:
parsed_args.blob_property = _default_blob_property(
parsed_args.type_name)
blob = utils.get_data_file(parsed_args.file)
if parsed_args.progress:
file_size = utils.get_file_size(blob)
if file_size is not None:
blob = progressbar.VerboseFileWrapper(blob, file_size)
client.artifacts.upload_blob(parsed_args.id,
parsed_args.blob_property,
blob,
type_name=parsed_args.type_name)
data = client.artifacts.get(parsed_args.id,
type_name=parsed_args.type_name)
data_to_display = {'blob_property': parsed_args.blob_property}
data_to_display.update(data[parsed_args.blob_property])
return self.dict2columns(data_to_display)
class DownloadBlob(command.Command):
"""Download blob"""
def get_parser(self, prog_name):
parser = super(DownloadBlob, self).get_parser(prog_name)
parser.add_argument(
'type_name',
metavar='<TYPE_NAME>',
action=TypeMapperAction,
help='Name of artifact type.',
),
parser.add_argument(
'id',
metavar='<ID>',
help='ID of the artifact to update.',
)
parser.add_argument(
'--progress',
default=False,
help='Show download progress bar.'
)
parser.add_argument(
'--file',
metavar='<FILE>',
help='Local file to save downloaded blob to. '
'If this is not specified and there is no redirection '
'the blob will not be saved.'
)
parser.add_argument(
'--blob-property',
metavar='<BLOB_PROPERTY>',
default=None,
help='Name of the blob field.'
)
return parser
def take_action(self, parsed_args):
LOG.debug('take_action({0})'.format(parsed_args))
client = self.app.client_manager.artifact
if not parsed_args.blob_property:
parsed_args.blob_property = _default_blob_property(
parsed_args.type_name)
data = client.artifacts.download_blob(parsed_args.id,
parsed_args.blob_property,
type_name=parsed_args.type_name)
if parsed_args.progress:
data = progressbar.VerboseIteratorWrapper(data, len(data))
if not (sys.stdout.isatty() and parsed_args.file is None):
utils.save_blob(data, parsed_args.file)
else:
msg = ('No redirection or local file specified for downloaded '
'blob. Please specify a local file with --file to save '
'downloaded blob or redirect output to another source.')
utils.exit(msg)