def MakeGsUtilApi(cls, debug=0):
        gsutil_api_map = {
            ApiMapConstants.API_MAP:
            (cls.mock_gsutil_api_class_map_factory.GetClassMap()),
            ApiMapConstants.SUPPORT_MAP: {
                'gs': [ApiSelector.XML, ApiSelector.JSON],
                's3': [ApiSelector.XML]
            },
            ApiMapConstants.DEFAULT_MAP: {
                'gs': ApiSelector.JSON,
                's3': ApiSelector.XML
            }
        }

        return CloudApiDelegator(cls.mock_bucket_storage_uri,
                                 gsutil_api_map,
                                 cls.logger,
                                 DiscardMessagesQueue(),
                                 debug=debug)
Exemple #2
0
    def _test_wildcard_iterator(cls, uri_or_str, debug=0):
        """Convenience method for instantiating a test instance of WildcardIterator.

    This makes it unnecessary to specify all the params of that class
    (like bucket_storage_uri_class=mock_storage_service.MockBucketStorageUri).
    Also, naming the factory method this way makes it clearer in the test code
    that WildcardIterator needs to be set up for testing.

    Args are same as for wildcard_iterator.wildcard_iterator(), except
    there are no class args for bucket_storage_uri_class or gsutil_api_class.

    Args:
      uri_or_str: StorageUri or string representing the wildcard string.
      debug: debug level to pass to the underlying connection (0..3)

    Returns:
      WildcardIterator, over which caller can iterate.
    """
        # TODO: Remove when tests no longer pass StorageUri arguments.
        uri_string = uri_or_str
        if hasattr(uri_or_str, 'uri'):
            uri_string = uri_or_str.uri

        cls.gsutil_api_map = {
            ApiMapConstants.API_MAP:
            (cls.mock_gsutil_api_class_map_factory.GetClassMap()),
            ApiMapConstants.SUPPORT_MAP: {
                'gs': [ApiSelector.XML, ApiSelector.JSON],
                's3': [ApiSelector.XML]
            },
            ApiMapConstants.DEFAULT_MAP: {
                'gs': ApiSelector.JSON,
                's3': ApiSelector.XML
            }
        }

        cls.gsutil_api = CloudApiDelegator(cls.mock_bucket_storage_uri,
                                           cls.gsutil_api_map,
                                           cls.logger,
                                           debug=debug)

        return wildcard_iterator.CreateWildcardIterator(
            uri_string, cls.gsutil_api)
Exemple #3
0
    def GetGsutilApiForTabComplete(self):
        """Builds and returns a gsutil_api based off gsutil_api_class_map_factory.

    Returns:
      the gsutil_api instance
    """
        # This should match the support map for the "ls" command.
        support_map = {
            'gs': [ApiSelector.XML, ApiSelector.JSON],
            's3': [ApiSelector.XML]
        }
        default_map = {'gs': ApiSelector.JSON, 's3': ApiSelector.XML}
        gsutil_api_map = GsutilApiMapFactory.GetApiMap(
            self.gsutil_api_class_map_factory, support_map, default_map)

        gsutil_api = CloudApiDelegator(self.bucket_storage_uri_class,
                                       gsutil_api_map,
                                       self._GetTabCompleteLogger(),
                                       DiscardMessagesQueue(),
                                       debug=0)
        return gsutil_api
    def ConfigureCommandArgumentParsers(self, subparsers):
        """Configures argparse arguments and argcomplete completers for commands.

    Args:
      subparsers: argparse object that can be used to add parsers for
                  subcommands (called just 'commands' in gsutil)
    """

        # This should match the support map for the "ls" command.
        support_map = {
            'gs': [ApiSelector.XML, ApiSelector.JSON],
            's3': [ApiSelector.XML]
        }
        default_map = {'gs': ApiSelector.JSON, 's3': ApiSelector.XML}
        gsutil_api_map = GsutilApiMapFactory.GetApiMap(
            self.gsutil_api_class_map_factory, support_map, default_map)

        logger = CreateGsutilLogger('tab_complete')
        gsutil_api = CloudApiDelegator(self.bucket_storage_uri_class,
                                       gsutil_api_map,
                                       logger,
                                       DiscardMessagesQueue(),
                                       debug=0)

        for command in set(self.command_map.values()):
            command_parser = subparsers.add_parser(
                command.command_spec.command_name, add_help=False)
            if isinstance(command.command_spec.argparse_arguments, dict):
                subcommand_parsers = command_parser.add_subparsers()
                subcommand_argument_dict = command.command_spec.argparse_arguments
                for subcommand, arguments in subcommand_argument_dict.iteritems(
                ):
                    subcommand_parser = subcommand_parsers.add_parser(
                        subcommand, add_help=False)
                    self._ConfigureCommandArgumentParserArguments(
                        subcommand_parser, arguments, gsutil_api)
            else:
                self._ConfigureCommandArgumentParserArguments(
                    command_parser, command.command_spec.argparse_arguments,
                    gsutil_api)