Пример #1
0
    def take_action(self, parsed_args):
        LOG.debug('take_action({0})'.format(parsed_args))
        client = self.app.client_manager.artifact
        af_id = utils.get_artifact_id(client, parsed_args)

        if not parsed_args.blob_property:
            parsed_args.blob_property = _default_blob_property(
                parsed_args.type_name)

        data = {
            'url': parsed_args.url,
            'md5': parsed_args.md5,
            'sha1': parsed_args.sha1,
            'sha256': parsed_args.sha256
        }

        client.artifacts.add_external_location(af_id,
                                               parsed_args.blob_property,
                                               data,
                                               type_name=parsed_args.type_name)

        data = client.artifacts.get(af_id, type_name=parsed_args.type_name)

        data_to_display = {'blob_property': parsed_args.blob_property}
        if '/' in parsed_args.blob_property:
            dict_name, __, key_name = parsed_args.blob_property.partition('/')
            data_to_display.update(data[dict_name][key_name])
        else:
            data_to_display.update(data[parsed_args.blob_property])
        return self.dict2columns(data_to_display)
Пример #2
0
    def take_action(self, parsed_args):
        LOG.debug('take_action({0})'.format(parsed_args))
        client = self.app.client_manager.artifact
        af_id = utils.get_artifact_id(client, parsed_args)

        if not parsed_args.blob_property:
            parsed_args.blob_property = _default_blob_property(
                parsed_args.type_name)

        if parsed_args.file is None:
            if sys.stdin.isatty():
                raise exc.CommandError('Blob file should be specified or '
                                       'explicitly connected to stdin')
            blob = sys.stdin
        else:
            blob = open(parsed_args.file, 'rb')
        if parsed_args.progress:
            blob = progressbar.VerboseFileWrapper(blob)

        client.artifacts.upload_blob(af_id,
                                     parsed_args.blob_property,
                                     blob,
                                     content_type=parsed_args.content_type,
                                     type_name=parsed_args.type_name)

        data = client.artifacts.get(af_id, type_name=parsed_args.type_name)

        data_to_display = {'blob_property': parsed_args.blob_property}
        if '/' in parsed_args.blob_property:
            dict_name, __, key_name = parsed_args.blob_property.partition('/')
            data_to_display.update(data[dict_name][key_name])
        else:
            data_to_display.update(data[parsed_args.blob_property])
        return self.dict2columns(data_to_display)
Пример #3
0
 def take_action(self, parsed_args):
     LOG.debug('take_action({0})'.format(parsed_args))
     client = self.app.client_manager.artifact
     af_id = glare_utils.get_artifact_id(client, parsed_args)
     data = client.artifacts.remove_tag(
         af_id, tag_value=parsed_args.tag, type_name=parsed_args.type_name)
     return print_artifact(client, data, parsed_args.type_name)
Пример #4
0
    def take_action(self, parsed_args):
        LOG.debug('take_action({0})'.format(parsed_args))

        prop = {}
        for datum in parsed_args.property:
            key, value = datum.split('=', 1)
            prop[key] = value

        for datum in parsed_args.list:
            key, value = datum.split('=', 1)
            value = strutils.split_by_commas(value)
            prop[key] = value

        for datum in parsed_args.dict:
            key, value = datum.split('=', 1)
            value = strutils.split_by_commas(value)
            prop[key] = {}
            for elem in value:
                k, v = elem.split(':', 1)
                prop[key][k] = v

        client = self.app.client_manager.artifact
        af_id = glare_utils.get_artifact_id(client, parsed_args)
        data = client.artifacts.update(
            af_id, type_name=parsed_args.type_name,
            remove_props=parsed_args.remove_property, **prop)

        return print_artifact(client, data, parsed_args.type_name)
Пример #5
0
    def take_action(self, parsed_args):
        LOG.debug('take_action({0})'.format(parsed_args))
        client = self.app.client_manager.artifact
        af_id = utils.get_artifact_id(client, parsed_args)

        if not parsed_args.blob_property:
            parsed_args.blob_property = _default_blob_property(
                parsed_args.type_name)

        client.artifacts.remove_external_location(
            af_id, parsed_args.blob_property, type_name=parsed_args.type_name)
Пример #6
0
 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)
     af_id = utils.get_artifact_id(client, parsed_args)
     data = client.artifacts.download_blob(af_id,
                                           parsed_args.blob_property,
                                           type_name=parsed_args.type_name)
     if parsed_args.progress:
         data = progressbar.VerboseFileWrapper(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)
Пример #7
0
 def take_action(self, parsed_args):
     LOG.debug('take_action({0})'.format(parsed_args))
     client = self.app.client_manager.artifact
     af_id = glare_utils.get_artifact_id(client, parsed_args)
     client.artifacts.delete(af_id,
                             type_name=parsed_args.type_name)