Drop all code related to generating CLIs.

All of the generated CLI code depends on google-apputils, which is a
python2.7-only library. Given that no one is directly using the generated CLIs
right now, there's no point in porting it to (say) argparse.

Fixes #8.

The bulk of the change here is just deletion; I suspect there are now more
dangling references, so some tree-shaking/dead-code-elimination could be
fruitful. Other changes:

* the client generation test now ensures each client can be imported, as
  opposed to invoking `<generated_cli> --help`.
* the samples and sample generating script drop the CLIs.

Note that I *did* keep the flag for `gen_client`, so that any existing code
passing `--nogenerate_cli` wouldn't be broken.
diff --git a/apitools/base/py/app2.py b/apitools/base/py/app2.py
deleted file mode 100644
index c0ea9e0..0000000
--- a/apitools/base/py/app2.py
+++ /dev/null
@@ -1,373 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2015 Google 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.
-
-"""Appcommands-compatible command class with extra fixins."""
-from __future__ import absolute_import
-from __future__ import print_function
-
-import cmd
-import inspect
-import pdb
-import shlex
-import sys
-import traceback
-import types
-
-import gflags as flags
-from google.apputils import app
-from google.apputils import appcommands
-import six
-
-
-__all__ = [
-    'NewCmd',
-    'Repl',
-]
-
-flags.DEFINE_boolean(
-    'debug_mode', False,
-    'Show tracebacks on Python exceptions.')
-flags.DEFINE_boolean(
-    'headless', False,
-    'Assume no user is at the controlling console.')
-FLAGS = flags.FLAGS
-
-
-def _SafeMakeAscii(s):
-    if isinstance(s, six.text_type):
-        return s.encode('ascii')
-    elif isinstance(s, str):
-        return s.decode('ascii')
-    return six.text_type(s).encode('ascii', 'backslashreplace')
-
-
-class NewCmd(appcommands.Cmd):
-
-    """Featureful extension of appcommands.Cmd."""
-
-    def __init__(self, name, flag_values):
-        super(NewCmd, self).__init__(name, flag_values)
-        run_with_args = getattr(self, 'RunWithArgs', None)
-        self._new_style = isinstance(run_with_args, types.MethodType)
-        if self._new_style:
-            func = run_with_args.__func__
-
-            argspec = inspect.getargspec(func)
-            if argspec.args and argspec.args[0] == 'self':
-                argspec = argspec._replace(  # pylint: disable=protected-access
-                    args=argspec.args[1:])
-            self._argspec = argspec
-            # TODO(craigcitro): Do we really want to support all this
-            # nonsense?
-            self._star_args = self._argspec.varargs is not None
-            self._star_kwds = self._argspec.keywords is not None
-            self._max_args = len(self._argspec.args or ())
-            self._min_args = self._max_args - len(self._argspec.defaults or ())
-            if self._star_args:
-                self._max_args = sys.maxsize
-
-            self._debug_mode = FLAGS.debug_mode
-            self.surface_in_shell = True
-            self.__doc__ = self.RunWithArgs.__doc__
-
-    def __getattr__(self, name):
-        if name in self._command_flags:
-            return self._command_flags[name].value
-        return super(NewCmd, self).__getattribute__(name)
-
-    def _GetFlag(self, flagname):
-        if flagname in self._command_flags:
-            return self._command_flags[flagname]
-        return None
-
-    def Run(self, argv):
-        """Run this command.
-
-        If self is a new-style command, we set up arguments and call
-        self.RunWithArgs, gracefully handling exceptions. If not, we
-        simply call self.Run(argv).
-
-        Args:
-          argv: List of arguments as strings.
-
-        Returns:
-          0 on success, nonzero on failure.
-        """
-        if not self._new_style:
-            return super(NewCmd, self).Run(argv)
-
-        # TODO(craigcitro): We need to save and restore flags each time so
-        # that we can per-command flags in the REPL.
-        args = argv[1:]
-        fail = None
-        fail_template = '%s positional args, found %d, expected at %s %d'
-        if len(args) < self._min_args:
-            fail = fail_template % ('Not enough', len(args),
-                                    'least', self._min_args)
-        if len(args) > self._max_args:
-            fail = fail_template % ('Too many', len(args),
-                                    'most', self._max_args)
-        if fail:
-            print(fail)
-            if self.usage:
-                print('Usage: %s' % (self.usage,))
-            return 1
-
-        if self._debug_mode:
-            return self.RunDebug(args, {})
-        return self.RunSafely(args, {})
-
-    def RunCmdLoop(self, argv):
-        """Hook for use in cmd.Cmd-based command shells."""
-        try:
-            args = shlex.split(argv)
-        except ValueError as e:
-            raise SyntaxError(self.EncodeForPrinting(e))
-        return self.Run([self._command_name] + args)
-
-    @staticmethod
-    def EncodeForPrinting(s):
-        """Safely encode a string as the encoding for sys.stdout."""
-        encoding = sys.stdout.encoding or 'ascii'
-        return six.text_type(s).encode(encoding, 'backslashreplace')
-
-    def _FormatError(self, e):
-        """Hook for subclasses to modify how error messages are printed."""
-        return _SafeMakeAscii(e)
-
-    def _HandleError(self, e):
-        message = self._FormatError(e)
-        print('Exception raised in %s operation: %s' % (
-            self._command_name, message))
-        return 1
-
-    def _IsDebuggableException(self, e):
-        """Hook for subclasses to skip debugging on certain exceptions."""
-        return not isinstance(e, app.UsageError)
-
-    def RunDebug(self, args, kwds):
-        """Run this command in debug mode."""
-        try:
-            return_value = self.RunWithArgs(*args, **kwds)
-        except BaseException as e:
-            # Don't break into the debugger for expected exceptions.
-            if not self._IsDebuggableException(e):
-                return self._HandleError(e)
-            print()
-            print('****************************************************')
-            print('**   Unexpected Exception raised in execution!    **')
-            if FLAGS.headless:
-                print('**  --headless mode enabled, exiting.             **')
-                print('**  See STDERR for traceback.                     **')
-            else:
-                print('**  --debug_mode enabled, starting pdb.           **')
-            print('****************************************************')
-            print()
-            traceback.print_exc()
-            print()
-            if not FLAGS.headless:
-                pdb.post_mortem()
-            return 1
-        return return_value
-
-    def RunSafely(self, args, kwds):
-        """Run this command, turning exceptions into print statements."""
-        try:
-            return_value = self.RunWithArgs(*args, **kwds)
-        except BaseException as e:
-            return self._HandleError(e)
-        return return_value
-
-
-class CommandLoop(cmd.Cmd):
-
-    """Instance of cmd.Cmd built to work with NewCmd."""
-
-    class TerminateSignal(Exception):
-
-        """Exception type used for signaling loop completion."""
-
-    def __init__(self, commands, prompt):
-        cmd.Cmd.__init__(self)
-        self._commands = {'help': commands['help']}
-        self._special_command_names = ['help', 'repl', 'EOF']
-        for name, command in commands.items():
-            if (name not in self._special_command_names and
-                    isinstance(command, NewCmd) and
-                    command.surface_in_shell):
-                self._commands[name] = command
-                setattr(self, 'do_%s' % (name,), command.RunCmdLoop)
-        self._default_prompt = prompt
-        self._set_prompt()
-        self._last_return_code = 0
-
-    @property
-    def last_return_code(self):
-        return self._last_return_code
-
-    def _set_prompt(self):  # pylint: disable=invalid-name
-        self.prompt = self._default_prompt
-
-    def do_EOF(self, *unused_args):  # pylint: disable=invalid-name
-        """Terminate the running command loop.
-
-        This function raises an exception to avoid the need to do
-        potentially-error-prone string parsing inside onecmd.
-
-        Args:
-          *unused_args: unused.
-
-        Returns:
-          Never returns.
-
-        Raises:
-          CommandLoop.TerminateSignal: always.
-        """
-        raise CommandLoop.TerminateSignal()
-
-    def postloop(self):
-        print('Goodbye.')
-
-    # pylint: disable=arguments-differ
-    def completedefault(self, unused_text, line, unused_begidx, unused_endidx):
-        if not line:
-            return []
-        else:
-            command_name = line.partition(' ')[0].lower()
-            usage = ''
-            if command_name in self._commands:
-                usage = self._commands[command_name].usage
-            if usage:
-                print()
-                print(usage)
-                print('%s%s' % (self.prompt, line), end=' ')
-            return []
-    # pylint: enable=arguments-differ
-
-    def emptyline(self):
-        print('Available commands:', end=' ')
-        print(' '.join(list(self._commands)))
-
-    def precmd(self, line):
-        """Preprocess the shell input."""
-        if line == 'EOF':
-            return line
-        if line.startswith('exit') or line.startswith('quit'):
-            return 'EOF'
-        words = line.strip().split()
-        if len(words) == 1 and words[0] not in ['help', 'ls', 'version']:
-            return 'help %s' % (line.strip(),)
-        return line
-
-    def onecmd(self, line):
-        """Process a single command.
-
-        Runs a single command, and stores the return code in
-        self._last_return_code. Always returns False unless the command
-        was EOF.
-
-        Args:
-          line: (str) Command line to process.
-
-        Returns:
-          A bool signaling whether or not the command loop should terminate.
-        """
-        try:
-            self._last_return_code = cmd.Cmd.onecmd(self, line)
-        except CommandLoop.TerminateSignal:
-            return True
-        except BaseException as e:
-            name = line.split(' ')[0]
-            print('Error running %s:' % name)
-            print(e)
-            self._last_return_code = 1
-        return False
-
-    def get_names(self):
-        names = dir(self)
-        commands = (name for name in self._commands
-                    if name not in self._special_command_names)
-        names.extend('do_%s' % (name,) for name in commands)
-        names.remove('do_EOF')
-        return names
-
-    def do_help(self, arg):
-        """Print the help for command_name (if present) or general help."""
-
-        command_name = arg
-
-        # TODO(craigcitro): Add command-specific flags.
-        def FormatOneCmd(name, command, command_names):
-            """Format one command."""
-            indent_size = appcommands.GetMaxCommandLength() + 3
-            if len(command_names) > 1:
-                indent = ' ' * indent_size
-                command_help = flags.TextWrap(
-                    command.CommandGetHelp('', cmd_names=command_names),
-                    indent=indent,
-                    firstline_indent='')
-                first_help_line, _, rest = command_help.partition('\n')
-                first_line = '%-*s%s' % (indent_size,
-                                         name + ':', first_help_line)
-                return '\n'.join((first_line, rest))
-            default_indent = '  '
-            return '\n' + flags.TextWrap(
-                command.CommandGetHelp('', cmd_names=command_names),
-                indent=default_indent,
-                firstline_indent=default_indent) + '\n'
-
-        if not command_name:
-            print('\nHelp for commands:\n')
-            command_names = list(self._commands)
-            print('\n\n'.join(
-                FormatOneCmd(name, command, command_names)
-                for name, command in self._commands.items()
-                if name not in self._special_command_names))
-            print()
-        elif command_name in self._commands:
-            print(FormatOneCmd(command_name, self._commands[command_name],
-                               command_names=[command_name]))
-        return 0
-
-    def postcmd(self, stop, line):
-        return bool(stop) or line == 'EOF'
-
-
-class Repl(NewCmd):
-
-    """Start an interactive session."""
-    PROMPT = '> '
-
-    def __init__(self, name, fv):
-        super(Repl, self).__init__(name, fv)
-        self.surface_in_shell = False
-        flags.DEFINE_string(
-            'prompt', '',
-            'Prompt to use for interactive shell.',
-            flag_values=fv)
-
-    def RunWithArgs(self):
-        """Start an interactive session."""
-        prompt = FLAGS.prompt or self.PROMPT
-        repl = CommandLoop(appcommands.GetCommandList(), prompt=prompt)
-        print('Welcome! (Type help for more information.)')
-        while True:
-            try:
-                repl.cmdloop()
-                break
-            except KeyboardInterrupt:
-                print()
-        return repl.last_return_code
diff --git a/apitools/base/py/base_cli.py b/apitools/base/py/base_cli.py
deleted file mode 100644
index 70515c1..0000000
--- a/apitools/base/py/base_cli.py
+++ /dev/null
@@ -1,162 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2015 Google 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.
-
-"""Base script for generated CLI."""
-
-from __future__ import absolute_import
-
-import atexit
-import code
-import logging
-import os
-import readline
-import rlcompleter
-import sys
-
-import gflags as flags
-from google.apputils import appcommands
-
-from apitools.base.py import encoding
-from apitools.base.py import exceptions
-
-__all__ = [
-    'ConsoleWithReadline',
-    'DeclareBaseFlags',
-    'FormatOutput',
-    'SetupLogger',
-    'run_main',
-]
-
-
-# TODO(craigcitro): We should move all the flags for the
-# StandardQueryParameters into this file, so that they can be used
-# elsewhere easily.
-
-_BASE_FLAGS_DECLARED = False
-_OUTPUT_FORMATTER_MAP = {
-    'protorpc': lambda x: x,
-    'json': encoding.MessageToJson,
-}
-
-
-def DeclareBaseFlags():
-    """Declare base flags for all CLIs."""
-    # TODO(craigcitro): FlagValidators?
-    global _BASE_FLAGS_DECLARED  # pylint: disable=global-statement
-    if _BASE_FLAGS_DECLARED:
-        return
-    flags.DEFINE_boolean(
-        'log_request', False,
-        'Log requests.')
-    flags.DEFINE_boolean(
-        'log_response', False,
-        'Log responses.')
-    flags.DEFINE_boolean(
-        'log_request_response', False,
-        'Log requests and responses.')
-    flags.DEFINE_enum(
-        'output_format',
-        'protorpc',
-        _OUTPUT_FORMATTER_MAP.keys(),
-        'Display format for results.')
-
-    _BASE_FLAGS_DECLARED = True
-
-
-FLAGS = flags.FLAGS
-
-
-def SetupLogger():
-    if FLAGS.log_request or FLAGS.log_response or FLAGS.log_request_response:
-        logging.basicConfig()
-        logging.getLogger().setLevel(logging.INFO)
-
-
-def FormatOutput(message, output_format=None):
-    """Convert the output to the user-specified format."""
-    output_format = output_format or FLAGS.output_format
-    formatter = _OUTPUT_FORMATTER_MAP.get(FLAGS.output_format)
-    if formatter is None:
-        raise exceptions.UserError('Unknown output format: %s' % output_format)
-    return formatter(message)
-
-
-class _SmartCompleter(rlcompleter.Completer):
-
-    def _callable_postfix(self, val, word):
-        if ('(' in readline.get_line_buffer() or
-                not callable(val)):
-            return word
-        return word + '('
-
-    def complete(self, text, state):
-        if not readline.get_line_buffer().strip():
-            if not state:
-                return '  '
-            return None
-        return rlcompleter.Completer.complete(self, text, state)
-
-
-class ConsoleWithReadline(code.InteractiveConsole):
-
-    """InteractiveConsole with readline, tab completion, and history."""
-
-    def __init__(self, env, filename='<console>', histfile=None):
-        new_locals = dict(env)
-        new_locals.update({
-            '_SmartCompleter': _SmartCompleter,
-            'readline': readline,
-            'rlcompleter': rlcompleter,
-        })
-        code.InteractiveConsole.__init__(self, new_locals, filename)
-        readline.parse_and_bind('tab: complete')
-        readline.set_completer(_SmartCompleter(new_locals).complete)
-        if histfile is not None:
-            histfile = os.path.expanduser(histfile)
-            if os.path.exists(histfile):
-                readline.read_history_file(histfile)
-            atexit.register(lambda: readline.write_history_file(histfile))
-
-
-def run_main():  # pylint: disable=invalid-name
-    """Function to be used as setuptools script entry point.
-
-    Appcommands assumes that it always runs as __main__, but launching
-    via a setuptools-generated entry_point breaks this rule. We do some
-    trickery here to make sure that appcommands and flags find their
-    state where they expect to by faking ourselves as __main__.
-    """
-
-    # Put the flags for this module somewhere the flags module will look
-    # for them.
-    # pylint: disable=protected-access
-    new_name = flags._GetMainModule()
-    sys.modules[new_name] = sys.modules['__main__']
-    for flag in FLAGS.FlagsByModuleDict().get(__name__, []):
-        FLAGS._RegisterFlagByModule(new_name, flag)
-        for key_flag in FLAGS.KeyFlagsByModuleDict().get(__name__, []):
-            FLAGS._RegisterKeyFlagForModule(new_name, key_flag)
-    # pylint: enable=protected-access
-
-    # Now set __main__ appropriately so that appcommands will be
-    # happy.
-    sys.modules['__main__'] = sys.modules[__name__]
-    appcommands.Run()
-    sys.modules['__main__'] = sys.modules.pop(new_name)
-
-
-if __name__ == '__main__':
-    appcommands.Run()
diff --git a/apitools/base/py/cli.py b/apitools/base/py/cli.py
deleted file mode 100644
index 920cfc5..0000000
--- a/apitools/base/py/cli.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2015 Google 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.
-
-"""Top-level import for all CLI-related functionality in apitools.
-
-Note that importing this file will ultimately have side-effects, and
-may require imports not available in all environments (such as App
-Engine). In particular, picking up some readline-related imports can
-cause pain.
-"""
-
-# pylint:disable=wildcard-import
-# pylint:disable=unused-wildcard-import
-
-from apitools.base.py.app2 import *
-from apitools.base.py.base_cli import *
-
-try:
-    # pylint:disable=no-name-in-module
-    from apitools.base.py.internal.cli import *
-except ImportError:
-    pass
diff --git a/apitools/gen/client_generation_test.py b/apitools/gen/client_generation_test.py
index 5e7932a..8a2f8e8 100644
--- a/apitools/gen/client_generation_test.py
+++ b/apitools/gen/client_generation_test.py
@@ -15,9 +15,11 @@
 
 """Test gen_client against all the APIs we use regularly."""
 
+import importlib
 import logging
 import os
 import subprocess
+import sys
 import tempfile
 
 import unittest2
@@ -27,9 +29,9 @@
 
 
 _API_LIST = [
-    'drive.v2',
     'bigquery.v2',
     'compute.v1',
+    'drive.v3',
     'storage.v1',
 ]
 
@@ -62,20 +64,7 @@
                     continue
                 self.assertEqual(0, retcode)
 
-                with tempfile.NamedTemporaryFile() as out:
-                    with tempfile.NamedTemporaryFile() as err:
-                        cmdline_args = [
-                            os.path.join(
-                                'generated', api.replace('.', '_') + '.py'),
-                            'help',
-                        ]
-                        retcode = subprocess.call(
-                            cmdline_args, stdout=out, stderr=err)
-                        with open(err.name, 'rb') as f:
-                            err_output = f.read()
-                # appcommands returns 1 on help
-                self.assertEqual(1, retcode)
-                if 'Traceback (most recent call last):' in err_output:
-                    err = '\n======\n%s======\n' % err_output
-                    self.fail(
-                        'Error raised in generated client:' + err)
+                sys.path.insert(0, os.path.join(os.getcwd(), 'generated'))
+                # Ensure we can import the generated client.
+                importlib.import_module('{}_{}_client'.format(
+                    *api.split('.')))
diff --git a/apitools/gen/command_registry.py b/apitools/gen/command_registry.py
deleted file mode 100644
index 486934f..0000000
--- a/apitools/gen/command_registry.py
+++ /dev/null
@@ -1,608 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2015 Google 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.
-
-"""Command registry for apitools."""
-
-import logging
-import textwrap
-
-from apitools.base.protorpclite import descriptor
-from apitools.base.protorpclite import messages
-from apitools.gen import extended_descriptor
-
-# This is a code generator; we're purposely verbose.
-# pylint:disable=too-many-statements
-
-_VARIANT_TO_FLAG_TYPE_MAP = {
-    messages.Variant.DOUBLE: 'float',
-    messages.Variant.FLOAT: 'float',
-    messages.Variant.INT64: 'string',
-    messages.Variant.UINT64: 'string',
-    messages.Variant.INT32: 'integer',
-    messages.Variant.BOOL: 'boolean',
-    messages.Variant.STRING: 'string',
-    messages.Variant.MESSAGE: 'string',
-    messages.Variant.BYTES: 'string',
-    messages.Variant.UINT32: 'integer',
-    messages.Variant.ENUM: 'enum',
-    messages.Variant.SINT32: 'integer',
-    messages.Variant.SINT64: 'integer',
-}
-
-
-class FlagInfo(messages.Message):
-
-    """Information about a flag and conversion to a message.
-
-    Fields:
-      name: name of this flag.
-      type: type of the flag.
-      description: description of the flag.
-      default: default value for this flag.
-      enum_values: if this flag is an enum, the list of possible
-          values.
-      required: whether or not this flag is required.
-      fv: name of the flag_values object where this flag should
-          be registered.
-      conversion: template for type conversion.
-      special: (boolean, default: False) If True, this flag doesn't
-          correspond to an attribute on the request.
-    """
-    name = messages.StringField(1)
-    type = messages.StringField(2)
-    description = messages.StringField(3)
-    default = messages.StringField(4)
-    enum_values = messages.StringField(5, repeated=True)
-    required = messages.BooleanField(6, default=False)
-    fv = messages.StringField(7)
-    conversion = messages.StringField(8)
-    special = messages.BooleanField(9, default=False)
-
-
-class ArgInfo(messages.Message):
-
-    """Information about a single positional command argument.
-
-    Fields:
-      name: argument name.
-      description: description of this argument.
-      conversion: template for type conversion.
-    """
-    name = messages.StringField(1)
-    description = messages.StringField(2)
-    conversion = messages.StringField(3)
-
-
-class CommandInfo(messages.Message):
-
-    """Information about a single command.
-
-    Fields:
-      name: name of this command.
-      class_name: name of the apitools_base.NewCmd class for this command.
-      description: description of this command.
-      flags: list of FlagInfo messages for the command-specific flags.
-      args: list of ArgInfo messages for the positional args.
-      request_type: name of the request type for this command.
-      client_method_path: path from the client object to the method
-          this command is wrapping.
-    """
-    name = messages.StringField(1)
-    class_name = messages.StringField(2)
-    description = messages.StringField(3)
-    flags = messages.MessageField(FlagInfo, 4, repeated=True)
-    args = messages.MessageField(ArgInfo, 5, repeated=True)
-    request_type = messages.StringField(6)
-    client_method_path = messages.StringField(7)
-    has_upload = messages.BooleanField(8, default=False)
-    has_download = messages.BooleanField(9, default=False)
-
-
-class CommandRegistry(object):
-
-    """Registry for CLI commands."""
-
-    def __init__(self, package, version, client_info, message_registry,
-                 root_package, base_files_package, protorpc_package, names):
-        self.__package = package
-        self.__version = version
-        self.__client_info = client_info
-        self.__names = names
-        self.__message_registry = message_registry
-        self.__root_package = root_package
-        self.__base_files_package = base_files_package
-        self.__protorpc_package = protorpc_package
-        self.__command_list = []
-        self.__global_flags = []
-
-    def Validate(self):
-        self.__message_registry.Validate()
-
-    def AddGlobalParameters(self, schema):
-        for field in schema.fields:
-            self.__global_flags.append(self.__FlagInfoFromField(field, schema))
-
-    def AddCommandForMethod(self, service_name, method_name, method_info,
-                            request, _):
-        """Add the given method as a command."""
-        command_name = self.__GetCommandName(method_info.method_id)
-        calling_path = '%s.%s' % (service_name, method_name)
-        request_type = self.__message_registry.LookupDescriptor(request)
-        description = method_info.description
-        if not description:
-            description = 'Call the %s method.' % method_info.method_id
-        field_map = dict((f.name, f) for f in request_type.fields)
-        args = []
-        arg_names = []
-        for field_name in method_info.ordered_params:
-            extended_field = field_map[field_name]
-            name = extended_field.name
-            args.append(ArgInfo(
-                name=name,
-                description=extended_field.description,
-                conversion=self.__GetConversion(extended_field, request_type),
-            ))
-            arg_names.append(name)
-        flags = []
-        for extended_field in sorted(request_type.fields,
-                                     key=lambda x: x.name):
-            field = extended_field.field_descriptor
-            if extended_field.name in arg_names:
-                continue
-            if self.__FieldIsRequired(field):
-                logging.warning(
-                    'Required field %s not in ordered_params for command %s',
-                    extended_field.name, command_name)
-            flags.append(self.__FlagInfoFromField(
-                extended_field, request_type, fv='fv'))
-        if method_info.upload_config:
-            # TODO(craigcitro): Consider adding additional flags to allow
-            # determining the filename from the object metadata.
-            upload_flag_info = FlagInfo(
-                name='upload_filename', type='string', default='',
-                description='Filename to use for upload.', fv='fv',
-                special=True)
-            flags.append(upload_flag_info)
-            mime_description = (
-                'MIME type to use for the upload. Only needed if '
-                'the extension on --upload_filename does not determine '
-                'the correct (or any) MIME type.')
-            mime_type_flag_info = FlagInfo(
-                name='upload_mime_type', type='string', default='',
-                description=mime_description, fv='fv', special=True)
-            flags.append(mime_type_flag_info)
-        if method_info.supports_download:
-            download_flag_info = FlagInfo(
-                name='download_filename', type='string', default='',
-                description='Filename to use for download.', fv='fv',
-                special=True)
-            flags.append(download_flag_info)
-            overwrite_description = (
-                'If True, overwrite the existing file when downloading.')
-            overwrite_flag_info = FlagInfo(
-                name='overwrite', type='boolean', default='False',
-                description=overwrite_description, fv='fv', special=True)
-            flags.append(overwrite_flag_info)
-        command_info = CommandInfo(
-            name=command_name,
-            class_name=self.__names.ClassName(command_name),
-            description=description,
-            flags=flags,
-            args=args,
-            request_type=request_type.full_name,
-            client_method_path=calling_path,
-            has_upload=bool(method_info.upload_config),
-            has_download=bool(method_info.supports_download)
-        )
-        self.__command_list.append(command_info)
-
-    def __LookupMessage(self, message, field):
-        message_type = self.__message_registry.LookupDescriptor(
-            '%s.%s' % (message.name, field.type_name))
-        if message_type is None:
-            message_type = self.__message_registry.LookupDescriptor(
-                field.type_name)
-        return message_type
-
-    def __GetCommandName(self, method_id):
-        command_name = method_id
-        prefix = '%s.' % self.__package
-        if command_name.startswith(prefix):
-            command_name = command_name[len(prefix):]
-        command_name = command_name.replace('.', '_')
-        return command_name
-
-    def __GetConversion(self, extended_field, extended_message):
-        """Returns a template for field type."""
-        field = extended_field.field_descriptor
-
-        type_name = ''
-        if field.variant in (messages.Variant.MESSAGE, messages.Variant.ENUM):
-            if field.type_name.startswith('apitools.base.protorpclite.'):
-                type_name = field.type_name
-            else:
-                field_message = self.__LookupMessage(extended_message, field)
-                if field_message is None:
-                    raise ValueError(
-                        'Could not find type for field %s' % field.name)
-                type_name = 'messages.%s' % field_message.full_name
-
-        template = ''
-        if field.variant in (messages.Variant.INT64, messages.Variant.UINT64):
-            template = 'int(%s)'
-        elif field.variant == messages.Variant.MESSAGE:
-            template = 'apitools_base.JsonToMessage(%s, %%s)' % type_name
-        elif field.variant == messages.Variant.ENUM:
-            template = '%s(%%s)' % type_name
-        elif field.variant == messages.Variant.STRING:
-            template = "%s.decode('utf8')"
-
-        if self.__FieldIsRepeated(extended_field.field_descriptor):
-            if template:
-                template = '[%s for x in %%s]' % (template % 'x')
-
-        return template
-
-    def __FieldIsRequired(self, field):
-        return field.label == descriptor.FieldDescriptor.Label.REQUIRED
-
-    def __FieldIsRepeated(self, field):
-        return field.label == descriptor.FieldDescriptor.Label.REPEATED
-
-    def __FlagInfoFromField(self, extended_field, extended_message, fv=''):
-        """Creates FlagInfo object for given field."""
-        field = extended_field.field_descriptor
-        flag_info = FlagInfo()
-        flag_info.name = str(field.name)
-        # TODO(craigcitro): We should key by variant.
-        flag_info.type = _VARIANT_TO_FLAG_TYPE_MAP[field.variant]
-        flag_info.description = extended_field.description
-        if field.default_value:
-            # TODO(craigcitro): Formatting?
-            flag_info.default = field.default_value
-        if flag_info.type == 'enum':
-            # TODO(craigcitro): Does protorpc do this for us?
-            enum_type = self.__LookupMessage(extended_message, field)
-            if enum_type is None:
-                raise ValueError('Cannot find enum type %s', field.type_name)
-            flag_info.enum_values = [x.name for x in enum_type.values]
-            # Note that this choice is completely arbitrary -- but we only
-            # push the value through if the user specifies it, so this
-            # doesn't hurt anything.
-            if flag_info.default is None:
-                flag_info.default = flag_info.enum_values[0]
-        if self.__FieldIsRequired(field):
-            flag_info.required = True
-        flag_info.fv = fv
-        flag_info.conversion = self.__GetConversion(
-            extended_field, extended_message)
-        return flag_info
-
-    def __PrintFlagDeclarations(self, printer):
-        """Writes out command line flag declarations."""
-        package = self.__client_info.package
-        function_name = '_Declare%sFlags' % (package[0].upper() + package[1:])
-        printer()
-        printer()
-        printer('def %s():', function_name)
-        with printer.Indent():
-            printer('"""Declare global flags in an idempotent way."""')
-            printer("if 'api_endpoint' in flags.FLAGS:")
-            with printer.Indent():
-                printer('return')
-            printer('flags.DEFINE_string(')
-            with printer.Indent('    '):
-                printer("'api_endpoint',")
-                printer('%r,', self.__client_info.base_url)
-                printer("'URL of the API endpoint to use.',")
-                printer("short_name='%s_url')", self.__package)
-            printer('flags.DEFINE_string(')
-            with printer.Indent('    '):
-                printer("'history_file',")
-                printer('%r,', '~/.%s.%s.history' %
-                        (self.__package, self.__version))
-                printer("'File with interactive shell history.')")
-            printer('flags.DEFINE_multistring(')
-            with printer.Indent('    '):
-                printer("'add_header', [],")
-                printer("'Additional http headers (as key=value strings). '")
-                printer("'Can be specified multiple times.')")
-            printer('flags.DEFINE_string(')
-            with printer.Indent('    '):
-                printer("'service_account_json_keyfile', '',")
-                printer("'Filename for a JSON service account key downloaded'")
-                printer("' from the Developer Console.')")
-            for flag_info in self.__global_flags:
-                self.__PrintFlag(printer, flag_info)
-        printer()
-        printer()
-        printer('FLAGS = flags.FLAGS')
-        printer('apitools_base_cli.DeclareBaseFlags()')
-        printer('%s()', function_name)
-
-    def __PrintGetGlobalParams(self, printer):
-        """Writes out GetGlobalParamsFromFlags function."""
-        printer('def GetGlobalParamsFromFlags():')
-        with printer.Indent():
-            printer('"""Return a StandardQueryParameters based on flags."""')
-            printer('result = messages.StandardQueryParameters()')
-
-            for flag_info in self.__global_flags:
-                rhs = 'FLAGS.%s' % flag_info.name
-                if flag_info.conversion:
-                    rhs = flag_info.conversion % rhs
-                printer('if FLAGS[%r].present:', flag_info.name)
-                with printer.Indent():
-                    printer('result.%s = %s', flag_info.name, rhs)
-            printer('return result')
-        printer()
-        printer()
-
-    def __PrintGetClient(self, printer):
-        """Writes out GetClientFromFlags function."""
-        printer('def GetClientFromFlags():')
-        with printer.Indent():
-            printer('"""Return a client object, configured from flags."""')
-            printer('log_request = FLAGS.log_request or '
-                    'FLAGS.log_request_response')
-            printer('log_response = FLAGS.log_response or '
-                    'FLAGS.log_request_response')
-            printer('api_endpoint = apitools_base.NormalizeApiEndpoint('
-                    'FLAGS.api_endpoint)')
-            printer("additional_http_headers = dict(x.split('=', 1) for x in "
-                    "FLAGS.add_header)")
-            printer('credentials_args = {')
-            with printer.Indent('    '):
-                printer("'service_account_json_keyfile': os.path.expanduser("
-                        'FLAGS.service_account_json_keyfile)')
-            printer('}')
-            printer('try:')
-            with printer.Indent():
-                printer('client = client_lib.%s(',
-                        self.__client_info.client_class_name)
-                with printer.Indent(indent='    '):
-                    printer('api_endpoint, log_request=log_request,')
-                    printer('log_response=log_response,')
-                    printer('credentials_args=credentials_args,')
-                    printer('additional_http_headers=additional_http_headers)')
-            printer('except apitools_base.CredentialsError as e:')
-            with printer.Indent():
-                printer("print 'Error creating credentials: %%s' %% e")
-                printer('sys.exit(1)')
-            printer('return client')
-        printer()
-        printer()
-
-    def __PrintCommandDocstring(self, printer, command_info):
-        with printer.CommentContext():
-            for line in textwrap.wrap('"""%s' % command_info.description,
-                                      printer.CalculateWidth()):
-                printer(line)
-            extended_descriptor.PrintIndentedDescriptions(
-                printer, command_info.args, 'Args')
-            extended_descriptor.PrintIndentedDescriptions(
-                printer, command_info.flags, 'Flags')
-            printer('"""')
-
-    def __PrintFlag(self, printer, flag_info):
-        """Writes out given flag definition."""
-        printer('flags.DEFINE_%s(', flag_info.type)
-        with printer.Indent(indent='    '):
-            printer('%r,', flag_info.name)
-            printer('%r,', flag_info.default)
-            if flag_info.type == 'enum':
-                printer('%r,', flag_info.enum_values)
-
-            # TODO(craigcitro): Consider using 'drop_whitespace' elsewhere.
-            description_lines = textwrap.wrap(
-                flag_info.description, 75 - len(printer.indent),
-                drop_whitespace=False)
-            for line in description_lines[:-1]:
-                printer('%r', line)
-            last_line = description_lines[-1] if description_lines else ''
-            printer('%r%s', last_line, ',' if flag_info.fv else ')')
-            if flag_info.fv:
-                printer('flag_values=%s)', flag_info.fv)
-        if flag_info.required:
-            printer('flags.MarkFlagAsRequired(%r)', flag_info.name)
-
-    def __PrintPyShell(self, printer):
-        """Writes out PyShell class."""
-        printer('class PyShell(appcommands.Cmd):')
-        printer()
-        with printer.Indent():
-            printer('def Run(self, _):')
-            with printer.Indent():
-                printer(
-                    '"""Run an interactive python shell with the client."""')
-                printer('client = GetClientFromFlags()')
-                printer('params = GetGlobalParamsFromFlags()')
-                printer('for field in params.all_fields():')
-                with printer.Indent():
-                    printer('value = params.get_assigned_value(field.name)')
-                    printer('if value != field.default:')
-                    with printer.Indent():
-                        printer('client.AddGlobalParam(field.name, value)')
-                printer('banner = """')
-                printer('       == %s interactive console ==' % (
-                    self.__client_info.package))
-                printer('             client: a %s client' %
-                        self.__client_info.package)
-                printer('      apitools_base: base apitools module')
-                printer('     messages: the generated messages module')
-                printer('"""')
-                printer('local_vars = {')
-                with printer.Indent(indent='    '):
-                    printer("'apitools_base': apitools_base,")
-                    printer("'client': client,")
-                    printer("'client_lib': client_lib,")
-                    printer("'messages': messages,")
-                printer('}')
-                printer("if platform.system() == 'Linux':")
-                with printer.Indent():
-                    printer('console = apitools_base_cli.ConsoleWithReadline(')
-                    with printer.Indent(indent='    '):
-                        printer('local_vars, histfile=FLAGS.history_file)')
-                printer('else:')
-                with printer.Indent():
-                    printer('console = code.InteractiveConsole(local_vars)')
-                printer('try:')
-                with printer.Indent():
-                    printer('console.interact(banner)')
-                printer('except SystemExit as e:')
-                with printer.Indent():
-                    printer('return e.code')
-        printer()
-        printer()
-
-    def WriteFile(self, printer):
-        """Write a simple CLI (currently just a stub)."""
-        printer('#!/usr/bin/env python')
-        printer('"""CLI for %s, version %s."""',
-                self.__package, self.__version)
-        printer('# NOTE: This file is autogenerated and should not be edited '
-                'by hand.')
-        # TODO(craigcitro): Add a build stamp, along with some other
-        # information.
-        printer()
-        printer('import code')
-        printer('import os')
-        printer('import platform')
-        printer('import sys')
-        printer()
-        printer('from %s import message_types', self.__protorpc_package)
-        printer('from %s import messages', self.__protorpc_package)
-        printer()
-        appcommands_import = 'from google.apputils import appcommands'
-        printer(appcommands_import)
-
-        flags_import = 'import gflags as flags'
-        printer(flags_import)
-        printer()
-        printer('import %s as apitools_base', self.__base_files_package)
-        printer('from %s import cli as apitools_base_cli',
-                self.__base_files_package)
-        import_prefix = ''
-        printer('%simport %s as client_lib',
-                import_prefix, self.__client_info.client_rule_name)
-        printer('%simport %s as messages',
-                import_prefix, self.__client_info.messages_rule_name)
-        self.__PrintFlagDeclarations(printer)
-        printer()
-        printer()
-        self.__PrintGetGlobalParams(printer)
-        self.__PrintGetClient(printer)
-        self.__PrintPyShell(printer)
-        self.__PrintCommands(printer)
-        printer('def main(_):')
-        with printer.Indent():
-            printer("appcommands.AddCmd('pyshell', PyShell)")
-            for command_info in self.__command_list:
-                printer("appcommands.AddCmd('%s', %s)",
-                        command_info.name, command_info.class_name)
-            printer()
-            printer('apitools_base_cli.SetupLogger()')
-            # TODO(craigcitro): Just call SetDefaultCommand as soon as
-            # another appcommands release happens and this exists
-            # externally.
-            printer("if hasattr(appcommands, 'SetDefaultCommand'):")
-            with printer.Indent():
-                printer("appcommands.SetDefaultCommand('pyshell')")
-        printer()
-        printer()
-        printer('run_main = apitools_base_cli.run_main')
-        printer()
-        printer("if __name__ == '__main__':")
-        with printer.Indent():
-            printer('appcommands.Run()')
-
-    def __PrintCommands(self, printer):
-        """Print all commands in this registry using printer."""
-        for command_info in self.__command_list:
-            arg_list = [arg_info.name for arg_info in command_info.args]
-            printer(
-                'class %s(apitools_base_cli.NewCmd):', command_info.class_name)
-            with printer.Indent():
-                printer('"""Command wrapping %s."""',
-                        command_info.client_method_path)
-                printer()
-                printer('usage = """%s%s%s"""',
-                        command_info.name,
-                        ' ' if arg_list else '',
-                        ' '.join('<%s>' % argname for argname in arg_list))
-                printer()
-                printer('def __init__(self, name, fv):')
-                with printer.Indent():
-                    printer('super(%s, self).__init__(name, fv)',
-                            command_info.class_name)
-                    for flag in command_info.flags:
-                        self.__PrintFlag(printer, flag)
-                printer()
-                printer('def RunWithArgs(%s):', ', '.join(['self'] + arg_list))
-                with printer.Indent():
-                    self.__PrintCommandDocstring(printer, command_info)
-                    printer('client = GetClientFromFlags()')
-                    printer('global_params = GetGlobalParamsFromFlags()')
-                    printer(
-                        'request = messages.%s(', command_info.request_type)
-                    with printer.Indent(indent='    '):
-                        for arg in command_info.args:
-                            rhs = arg.name
-                            if arg.conversion:
-                                rhs = arg.conversion % arg.name
-                            printer('%s=%s,', arg.name, rhs)
-                        printer(')')
-                    for flag_info in command_info.flags:
-                        if flag_info.special:
-                            continue
-                        rhs = 'FLAGS.%s' % flag_info.name
-                        if flag_info.conversion:
-                            rhs = flag_info.conversion % rhs
-                        printer('if FLAGS[%r].present:', flag_info.name)
-                        with printer.Indent():
-                            printer('request.%s = %s', flag_info.name, rhs)
-                    call_args = ['request', 'global_params=global_params']
-                    if command_info.has_upload:
-                        call_args.append('upload=upload')
-                        printer('upload = None')
-                        printer('if FLAGS.upload_filename:')
-                        with printer.Indent():
-                            printer('upload = apitools_base.Upload.FromFile(')
-                            printer('    FLAGS.upload_filename, '
-                                    'FLAGS.upload_mime_type,')
-                            printer('    progress_callback='
-                                    'apitools_base.UploadProgressPrinter,')
-                            printer('    finish_callback='
-                                    'apitools_base.UploadCompletePrinter)')
-                    if command_info.has_download:
-                        call_args.append('download=download')
-                        printer('download = None')
-                        printer('if FLAGS.download_filename:')
-                        with printer.Indent():
-                            printer('download = apitools_base.Download.'
-                                    'FromFile(FLAGS.download_filename, '
-                                    'overwrite=FLAGS.overwrite,')
-                            printer('    progress_callback='
-                                    'apitools_base.DownloadProgressPrinter,')
-                            printer('    finish_callback='
-                                    'apitools_base.DownloadCompletePrinter)')
-                    printer(
-                        'result = client.%s(', command_info.client_method_path)
-                    with printer.Indent(indent='    '):
-                        printer('%s)', ', '.join(call_args))
-                    printer('print apitools_base_cli.FormatOutput(result)')
-            printer()
-            printer()
diff --git a/apitools/gen/gen_client.py b/apitools/gen/gen_client.py
index 462b347..7027523 100644
--- a/apitools/gen/gen_client.py
+++ b/apitools/gen/gen_client.py
@@ -98,7 +98,6 @@
         discovery_doc, client_info, names, args.root_package, outdir,
         base_package=args.base_package,
         protorpc_package=args.protorpc_package,
-        generate_cli=args.generate_cli,
         init_wildcards_file=(args.init_file == 'wildcards'),
         use_proto2=args.experimental_proto2_output,
         unelidable_request_methods=args.unelidable_request_methods,
@@ -108,9 +107,7 @@
 # TODO(craigcitro): Delete this if we don't need this functionality.
 def _WriteBaseFiles(codegen):
     with util.Chdir(codegen.outdir):
-        _CopyLocalFile('app2.py')
         _CopyLocalFile('base_api.py')
-        _CopyLocalFile('base_cli.py')
         _CopyLocalFile('credentials_lib.py')
         _CopyLocalFile('exceptions.py')
 
@@ -136,10 +133,6 @@
             codegen.WriteMessagesFile(out)
         with open(codegen.client_info.client_file_name, 'w') as out:
             codegen.WriteClientLibrary(out)
-        if args.generate_cli:
-            with open(codegen.client_info.cli_file_name, 'w') as out:
-                codegen.WriteCli(out)
-            os.chmod(codegen.client_info.cli_file_name, 0o755)
 
 
 def _WriteInit(codegen):
@@ -176,7 +169,6 @@
     args.outdir = os.path.join(
         args.outdir, 'apitools/clients/%s' % package)
     args.root_package = 'apitools.clients.%s' % package
-    args.generate_cli = False
     codegen = _GetCodegenFromFlags(args)
     if codegen is None:
         logging.error('Failed to create codegen, exiting.')
@@ -287,11 +279,10 @@
 
     parser.add_argument(
         '--generate_cli', dest='generate_cli', action='store_true',
-        help='If specified (default), a CLI is also generated.')
+        help='Ignored.')
     parser.add_argument(
         '--nogenerate_cli', dest='generate_cli', action='store_false',
-        help='CLI will not be generated.')
-    parser.set_defaults(generate_cli=True)
+        help='Ignored.')
 
     parser.add_argument(
         '--init-file',
diff --git a/apitools/gen/gen_client_lib.py b/apitools/gen/gen_client_lib.py
index b910f0f..1796762 100644
--- a/apitools/gen/gen_client_lib.py
+++ b/apitools/gen/gen_client_lib.py
@@ -22,7 +22,6 @@
 
 import datetime
 
-from apitools.gen import command_registry
 from apitools.gen import message_registry
 from apitools.gen import service_registry
 from apitools.gen import util
@@ -63,8 +62,7 @@
     """Code generator for a given discovery document."""
 
     def __init__(self, discovery_doc, client_info, names, root_package, outdir,
-                 base_package, protorpc_package, generate_cli=False,
-                 init_wildcards_file=True,
+                 base_package, protorpc_package, init_wildcards_file=True,
                  use_proto2=False, unelidable_request_methods=None,
                  apitools_version=''):
         self.__discovery_doc = discovery_doc
@@ -76,7 +74,6 @@
         self.__package = self.__client_info.package
         self.__version = self.__client_info.version
         self.__revision = discovery_doc.get('revision', '1')
-        self.__generate_cli = generate_cli
         self.__init_wildcards_file = init_wildcards_file
         self.__root_package = root_package
         self.__base_files_package = base_package
@@ -104,19 +101,9 @@
         # fields from MessageFields to EnumFields.
         self.__message_registry.FixupMessageFields()
 
-        self.__command_registry = command_registry.CommandRegistry(
-            self.__package, self.__version, self.__client_info,
-            self.__message_registry, self.__root_package,
-            self.__base_files_package, self.__protorpc_package,
-            self.__names)
-        self.__command_registry.AddGlobalParameters(
-            self.__message_registry.LookupDescriptorOrDie(
-                'StandardQueryParameters'))
-
         self.__services_registry = service_registry.ServiceRegistry(
             self.__client_info,
             self.__message_registry,
-            self.__command_registry,
             self.__names,
             self.__root_package,
             self.__base_files_package,
@@ -189,9 +176,6 @@
                 import_prefix = ''
             else:
                 import_prefix = '%s.' % self.__root_package
-            if self.__generate_cli:
-                printer('from %s%s import *',
-                        import_prefix, self.__client_info.cli_rule_name)
             printer('from %s%s import *',
                     import_prefix, self.__client_info.client_rule_name)
             printer('from %s%s import *',
@@ -281,6 +265,3 @@
 
     def WriteClientLibrary(self, out):
         self.__services_registry.WriteFile(self._GetPrinter(out))
-
-    def WriteCli(self, out):
-        self.__command_registry.WriteFile(self._GetPrinter(out))
diff --git a/apitools/gen/gen_client_test.py b/apitools/gen/gen_client_test.py
index 3be3e7a..a0dbc9e 100644
--- a/apitools/gen/gen_client_test.py
+++ b/apitools/gen/gen_client_test.py
@@ -47,7 +47,6 @@
         with test_utils.TempDir() as tmp_dir_path:
             gen_client.main([
                 gen_client.__file__,
-                '--generate_cli',
                 '--init-file', 'none',
                 '--infile', GetTestDataPath('dns', 'dns_v1.json'),
                 '--outdir', tmp_dir_path,
@@ -56,7 +55,6 @@
                 'client'
             ])
             expected_files = (
-                set(['dns_v1.py']) |  # CLI files
                 set(['dns_v1_client.py', 'dns_v1_messages.py']))
             self.assertEquals(expected_files, set(os.listdir(tmp_dir_path)))
 
@@ -64,7 +62,6 @@
         with test_utils.TempDir() as tmp_dir_path:
             gen_client.main([
                 gen_client.__file__,
-                '--generate_cli',
                 '--init-file', 'empty',
                 '--infile', GetTestDataPath('dns', 'dns_v1.json'),
                 '--outdir', tmp_dir_path,
@@ -73,7 +70,6 @@
                 'client'
             ])
             expected_files = (
-                set(['dns_v1.py']) |  # CLI files
                 set(['dns_v1_client.py', 'dns_v1_messages.py', '__init__.py']))
             self.assertEquals(expected_files, set(os.listdir(tmp_dir_path)))
             init_file = _GetContent(os.path.join(tmp_dir_path, '__init__.py'))
@@ -88,7 +84,6 @@
         with test_utils.TempDir() as tmp_dir_path:
             gen_client.main([
                 gen_client.__file__,
-                '--nogenerate_cli',
                 '--infile', GetTestDataPath('dns', 'dns_v1.json'),
                 '--outdir', tmp_dir_path,
                 '--overwrite',
@@ -104,7 +99,6 @@
         with test_utils.TempDir() as tmp_dir_path:
             gen_client.main([
                 gen_client.__file__,
-                '--nogenerate_cli',
                 '--infile', GetTestDataPath('dns', 'dns_v1.json'),
                 '--outdir', tmp_dir_path,
                 '--overwrite',
@@ -120,7 +114,6 @@
         with test_utils.TempDir() as tmp_dir_path:
             gen_client.main([
                 gen_client.__file__,
-                '--nogenerate_cli',
                 '--infile', GetTestDataPath('dns', 'dns_v1.json'),
                 '--outdir', tmp_dir_path,
                 '--overwrite',
@@ -135,7 +128,6 @@
         with test_utils.TempDir() as tmp_dir_path:
             gen_client.main([
                 gen_client.__file__,
-                '--nogenerate_cli',
                 '--infile', GetTestDataPath('dns', 'dns_v1.json'),
                 '--outdir', tmp_dir_path,
                 '--overwrite',
diff --git a/apitools/gen/service_registry.py b/apitools/gen/service_registry.py
index fdcd93e..66b635a 100644
--- a/apitools/gen/service_registry.py
+++ b/apitools/gen/service_registry.py
@@ -34,7 +34,7 @@
 
     """Registry for service types."""
 
-    def __init__(self, client_info, message_registry, command_registry,
+    def __init__(self, client_info, message_registry,
                  names, root_package, base_files_package,
                  unelidable_request_methods):
         self.__client_info = client_info
@@ -42,7 +42,6 @@
         self.__names = names
         self.__service_method_info_map = collections.OrderedDict()
         self.__message_registry = message_registry
-        self.__command_registry = command_registry
         self.__root_package = root_package
         self.__base_files_package = base_files_package
         self.__unelidable_request_methods = unelidable_request_methods
@@ -473,9 +472,6 @@
 
             method_info_map[method_name] = self.__ComputeMethodInfo(
                 method_description, request, response, request_field)
-            self.__command_registry.AddCommandForMethod(
-                service_name, method_name, method_info_map[method_name],
-                request, response)
 
         nested_services = methods.get('resources', {})
         services = sorted(nested_services.items())
diff --git a/apitools/gen/util.py b/apitools/gen/util.py
index 146b452..312885f 100644
--- a/apitools/gen/util.py
+++ b/apitools/gen/util.py
@@ -223,14 +223,6 @@
         return self.package
 
     @property
-    def cli_rule_name(self):
-        return '%s_%s' % (self.package, self.version)
-
-    @property
-    def cli_file_name(self):
-        return '%s.py' % self.cli_rule_name
-
-    @property
     def client_rule_name(self):
         return '%s_%s_client' % (self.package, self.version)
 
diff --git a/samples/bigquery_sample/bigquery_v2/bigquery_v2.py b/samples/bigquery_sample/bigquery_v2/bigquery_v2.py
deleted file mode 100644
index 7cd69b5..0000000
--- a/samples/bigquery_sample/bigquery_v2/bigquery_v2.py
+++ /dev/null
@@ -1,1096 +0,0 @@
-#!/usr/bin/env python
-"""CLI for bigquery, version v2."""
-# NOTE: This file is autogenerated and should not be edited by hand.
-
-import code
-import os
-import platform
-import sys
-
-from apitools.base.protorpclite import message_types
-from apitools.base.protorpclite import messages
-
-from google.apputils import appcommands
-import gflags as flags
-
-import apitools.base.py as apitools_base
-from apitools.base.py import cli as apitools_base_cli
-import bigquery_v2_client as client_lib
-import bigquery_v2_messages as messages
-
-
-def _DeclareBigqueryFlags():
-  """Declare global flags in an idempotent way."""
-  if 'api_endpoint' in flags.FLAGS:
-    return
-  flags.DEFINE_string(
-      'api_endpoint',
-      u'https://www.googleapis.com/bigquery/v2/',
-      'URL of the API endpoint to use.',
-      short_name='bigquery_url')
-  flags.DEFINE_string(
-      'history_file',
-      u'~/.bigquery.v2.history',
-      'File with interactive shell history.')
-  flags.DEFINE_multistring(
-      'add_header', [],
-      'Additional http headers (as key=value strings). '
-      'Can be specified multiple times.')
-  flags.DEFINE_string(
-      'service_account_json_keyfile', '',
-      'Filename for a JSON service account key downloaded'
-      ' from the Developer Console.')
-  flags.DEFINE_enum(
-      'alt',
-      u'json',
-      [u'json'],
-      u'Data format for the response.')
-  flags.DEFINE_string(
-      'fields',
-      None,
-      u'Selector specifying which fields to include in a partial response.')
-  flags.DEFINE_string(
-      'key',
-      None,
-      u'API key. Your API key identifies your project and provides you with '
-      u'API access, quota, and reports. Required unless you provide an OAuth '
-      u'2.0 token.')
-  flags.DEFINE_string(
-      'oauth_token',
-      None,
-      u'OAuth 2.0 token for the current user.')
-  flags.DEFINE_boolean(
-      'prettyPrint',
-      'True',
-      u'Returns response with indentations and line breaks.')
-  flags.DEFINE_string(
-      'quotaUser',
-      None,
-      u'Available to use for quota purposes for server-side applications. Can'
-      u' be any arbitrary string assigned to a user, but should not exceed 40'
-      u' characters. Overrides userIp if both are provided.')
-  flags.DEFINE_string(
-      'trace',
-      None,
-      'A tracing token of the form "token:<tokenid>" to include in api '
-      'requests.')
-  flags.DEFINE_string(
-      'userIp',
-      None,
-      u'IP address of the site where the request originates. Use this if you '
-      u'want to enforce per-user limits.')
-
-
-FLAGS = flags.FLAGS
-apitools_base_cli.DeclareBaseFlags()
-_DeclareBigqueryFlags()
-
-
-def GetGlobalParamsFromFlags():
-  """Return a StandardQueryParameters based on flags."""
-  result = messages.StandardQueryParameters()
-  if FLAGS['alt'].present:
-    result.alt = messages.StandardQueryParameters.AltValueValuesEnum(FLAGS.alt)
-  if FLAGS['fields'].present:
-    result.fields = FLAGS.fields.decode('utf8')
-  if FLAGS['key'].present:
-    result.key = FLAGS.key.decode('utf8')
-  if FLAGS['oauth_token'].present:
-    result.oauth_token = FLAGS.oauth_token.decode('utf8')
-  if FLAGS['prettyPrint'].present:
-    result.prettyPrint = FLAGS.prettyPrint
-  if FLAGS['quotaUser'].present:
-    result.quotaUser = FLAGS.quotaUser.decode('utf8')
-  if FLAGS['trace'].present:
-    result.trace = FLAGS.trace.decode('utf8')
-  if FLAGS['userIp'].present:
-    result.userIp = FLAGS.userIp.decode('utf8')
-  return result
-
-
-def GetClientFromFlags():
-  """Return a client object, configured from flags."""
-  log_request = FLAGS.log_request or FLAGS.log_request_response
-  log_response = FLAGS.log_response or FLAGS.log_request_response
-  api_endpoint = apitools_base.NormalizeApiEndpoint(FLAGS.api_endpoint)
-  additional_http_headers = dict(x.split('=', 1) for x in FLAGS.add_header)
-  credentials_args = {
-      'service_account_json_keyfile': os.path.expanduser(FLAGS.service_account_json_keyfile)
-  }
-  try:
-    client = client_lib.BigqueryV2(
-        api_endpoint, log_request=log_request,
-        log_response=log_response,
-        credentials_args=credentials_args,
-        additional_http_headers=additional_http_headers)
-  except apitools_base.CredentialsError as e:
-    print 'Error creating credentials: %s' % e
-    sys.exit(1)
-  return client
-
-
-class PyShell(appcommands.Cmd):
-
-  def Run(self, _):
-    """Run an interactive python shell with the client."""
-    client = GetClientFromFlags()
-    params = GetGlobalParamsFromFlags()
-    for field in params.all_fields():
-      value = params.get_assigned_value(field.name)
-      if value != field.default:
-        client.AddGlobalParam(field.name, value)
-    banner = """
-           == bigquery interactive console ==
-                 client: a bigquery client
-          apitools_base: base apitools module
-         messages: the generated messages module
-    """
-    local_vars = {
-        'apitools_base': apitools_base,
-        'client': client,
-        'client_lib': client_lib,
-        'messages': messages,
-    }
-    if platform.system() == 'Linux':
-      console = apitools_base_cli.ConsoleWithReadline(
-          local_vars, histfile=FLAGS.history_file)
-    else:
-      console = code.InteractiveConsole(local_vars)
-    try:
-      console.interact(banner)
-    except SystemExit as e:
-      return e.code
-
-
-class DatasetsDelete(apitools_base_cli.NewCmd):
-  """Command wrapping datasets.Delete."""
-
-  usage = """datasets_delete <projectId> <datasetId>"""
-
-  def __init__(self, name, fv):
-    super(DatasetsDelete, self).__init__(name, fv)
-    flags.DEFINE_boolean(
-        'deleteContents',
-        None,
-        u'If True, delete all the tables in the dataset. If False and the '
-        u'dataset contains tables, the request will fail. Default is False',
-        flag_values=fv)
-
-  def RunWithArgs(self, projectId, datasetId):
-    """Deletes the dataset specified by the datasetId value. Before you can
-    delete a dataset, you must delete all its tables, either manually or by
-    specifying deleteContents. Immediately after deletion, you can create
-    another dataset with the same name.
-
-    Args:
-      projectId: Project ID of the dataset being deleted
-      datasetId: Dataset ID of dataset being deleted
-
-    Flags:
-      deleteContents: If True, delete all the tables in the dataset. If False
-        and the dataset contains tables, the request will fail. Default is
-        False
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryDatasetsDeleteRequest(
-        projectId=projectId.decode('utf8'),
-        datasetId=datasetId.decode('utf8'),
-        )
-    if FLAGS['deleteContents'].present:
-      request.deleteContents = FLAGS.deleteContents
-    result = client.datasets.Delete(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class DatasetsGet(apitools_base_cli.NewCmd):
-  """Command wrapping datasets.Get."""
-
-  usage = """datasets_get <projectId> <datasetId>"""
-
-  def __init__(self, name, fv):
-    super(DatasetsGet, self).__init__(name, fv)
-
-  def RunWithArgs(self, projectId, datasetId):
-    """Returns the dataset specified by datasetID.
-
-    Args:
-      projectId: Project ID of the requested dataset
-      datasetId: Dataset ID of the requested dataset
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryDatasetsGetRequest(
-        projectId=projectId.decode('utf8'),
-        datasetId=datasetId.decode('utf8'),
-        )
-    result = client.datasets.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class DatasetsInsert(apitools_base_cli.NewCmd):
-  """Command wrapping datasets.Insert."""
-
-  usage = """datasets_insert <projectId>"""
-
-  def __init__(self, name, fv):
-    super(DatasetsInsert, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'dataset',
-        None,
-        u'A Dataset resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, projectId):
-    """Creates a new empty dataset.
-
-    Args:
-      projectId: Project ID of the new dataset
-
-    Flags:
-      dataset: A Dataset resource to be passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryDatasetsInsertRequest(
-        projectId=projectId.decode('utf8'),
-        )
-    if FLAGS['dataset'].present:
-      request.dataset = apitools_base.JsonToMessage(messages.Dataset, FLAGS.dataset)
-    result = client.datasets.Insert(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class DatasetsList(apitools_base_cli.NewCmd):
-  """Command wrapping datasets.List."""
-
-  usage = """datasets_list <projectId>"""
-
-  def __init__(self, name, fv):
-    super(DatasetsList, self).__init__(name, fv)
-    flags.DEFINE_boolean(
-        'all',
-        None,
-        u'Whether to list all datasets, including hidden ones',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'filter',
-        None,
-        u'An expression for filtering the results of the request by label. '
-        u'The syntax is "labels.[:]". Multiple filters can be ANDed together '
-        u'by connecting with a space. Example: "labels.department:receiving '
-        u'labels.active". See https://cloud.google.com/bigquery/docs'
-        u'/labeling-datasets#filtering_datasets_using_labels for details.',
-        flag_values=fv)
-    flags.DEFINE_integer(
-        'maxResults',
-        None,
-        u'The maximum number of results to return',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        u'Page token, returned by a previous call, to request the next page '
-        u'of results',
-        flag_values=fv)
-
-  def RunWithArgs(self, projectId):
-    """Lists all datasets in the specified project to which you have been
-    granted the READER dataset role.
-
-    Args:
-      projectId: Project ID of the datasets to be listed
-
-    Flags:
-      all: Whether to list all datasets, including hidden ones
-      filter: An expression for filtering the results of the request by label.
-        The syntax is "labels.[:]". Multiple filters can be ANDed together by
-        connecting with a space. Example: "labels.department:receiving
-        labels.active". See https://cloud.google.com/bigquery/docs/labeling-
-        datasets#filtering_datasets_using_labels for details.
-      maxResults: The maximum number of results to return
-      pageToken: Page token, returned by a previous call, to request the next
-        page of results
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryDatasetsListRequest(
-        projectId=projectId.decode('utf8'),
-        )
-    if FLAGS['all'].present:
-      request.all = FLAGS.all
-    if FLAGS['filter'].present:
-      request.filter = FLAGS.filter.decode('utf8')
-    if FLAGS['maxResults'].present:
-      request.maxResults = FLAGS.maxResults
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    result = client.datasets.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class DatasetsPatch(apitools_base_cli.NewCmd):
-  """Command wrapping datasets.Patch."""
-
-  usage = """datasets_patch <projectId> <datasetId>"""
-
-  def __init__(self, name, fv):
-    super(DatasetsPatch, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'dataset',
-        None,
-        u'A Dataset resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, projectId, datasetId):
-    """Updates information in an existing dataset. The update method replaces
-    the entire dataset resource, whereas the patch method only replaces fields
-    that are provided in the submitted dataset resource. This method supports
-    patch semantics.
-
-    Args:
-      projectId: Project ID of the dataset being updated
-      datasetId: Dataset ID of the dataset being updated
-
-    Flags:
-      dataset: A Dataset resource to be passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryDatasetsPatchRequest(
-        projectId=projectId.decode('utf8'),
-        datasetId=datasetId.decode('utf8'),
-        )
-    if FLAGS['dataset'].present:
-      request.dataset = apitools_base.JsonToMessage(messages.Dataset, FLAGS.dataset)
-    result = client.datasets.Patch(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class DatasetsUpdate(apitools_base_cli.NewCmd):
-  """Command wrapping datasets.Update."""
-
-  usage = """datasets_update <projectId> <datasetId>"""
-
-  def __init__(self, name, fv):
-    super(DatasetsUpdate, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'dataset',
-        None,
-        u'A Dataset resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, projectId, datasetId):
-    """Updates information in an existing dataset. The update method replaces
-    the entire dataset resource, whereas the patch method only replaces fields
-    that are provided in the submitted dataset resource.
-
-    Args:
-      projectId: Project ID of the dataset being updated
-      datasetId: Dataset ID of the dataset being updated
-
-    Flags:
-      dataset: A Dataset resource to be passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryDatasetsUpdateRequest(
-        projectId=projectId.decode('utf8'),
-        datasetId=datasetId.decode('utf8'),
-        )
-    if FLAGS['dataset'].present:
-      request.dataset = apitools_base.JsonToMessage(messages.Dataset, FLAGS.dataset)
-    result = client.datasets.Update(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class JobsCancel(apitools_base_cli.NewCmd):
-  """Command wrapping jobs.Cancel."""
-
-  usage = """jobs_cancel <projectId> <jobId>"""
-
-  def __init__(self, name, fv):
-    super(JobsCancel, self).__init__(name, fv)
-
-  def RunWithArgs(self, projectId, jobId):
-    """Requests that a job be cancelled. This call will return immediately,
-    and the client will need to poll for the job status to see if the cancel
-    completed successfully. Cancelled jobs may still incur costs.
-
-    Args:
-      projectId: [Required] Project ID of the job to cancel
-      jobId: [Required] Job ID of the job to cancel
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryJobsCancelRequest(
-        projectId=projectId.decode('utf8'),
-        jobId=jobId.decode('utf8'),
-        )
-    result = client.jobs.Cancel(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class JobsGet(apitools_base_cli.NewCmd):
-  """Command wrapping jobs.Get."""
-
-  usage = """jobs_get <projectId> <jobId>"""
-
-  def __init__(self, name, fv):
-    super(JobsGet, self).__init__(name, fv)
-
-  def RunWithArgs(self, projectId, jobId):
-    """Returns information about a specific job. Job information is available
-    for a six month period after creation. Requires that you're the person who
-    ran the job, or have the Is Owner project role.
-
-    Args:
-      projectId: [Required] Project ID of the requested job
-      jobId: [Required] Job ID of the requested job
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryJobsGetRequest(
-        projectId=projectId.decode('utf8'),
-        jobId=jobId.decode('utf8'),
-        )
-    result = client.jobs.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class JobsGetQueryResults(apitools_base_cli.NewCmd):
-  """Command wrapping jobs.GetQueryResults."""
-
-  usage = """jobs_getQueryResults <projectId> <jobId>"""
-
-  def __init__(self, name, fv):
-    super(JobsGetQueryResults, self).__init__(name, fv)
-    flags.DEFINE_integer(
-        'maxResults',
-        None,
-        u'Maximum number of results to read',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        u'Page token, returned by a previous call, to request the next page '
-        u'of results',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'startIndex',
-        None,
-        u'Zero-based index of the starting row',
-        flag_values=fv)
-    flags.DEFINE_integer(
-        'timeoutMs',
-        None,
-        u'How long to wait for the query to complete, in milliseconds, before'
-        u' returning. Default is 10 seconds. If the timeout passes before the'
-        u" job completes, the 'jobComplete' field in the response will be "
-        u'false',
-        flag_values=fv)
-
-  def RunWithArgs(self, projectId, jobId):
-    """Retrieves the results of a query job.
-
-    Args:
-      projectId: [Required] Project ID of the query job
-      jobId: [Required] Job ID of the query job
-
-    Flags:
-      maxResults: Maximum number of results to read
-      pageToken: Page token, returned by a previous call, to request the next
-        page of results
-      startIndex: Zero-based index of the starting row
-      timeoutMs: How long to wait for the query to complete, in milliseconds,
-        before returning. Default is 10 seconds. If the timeout passes before
-        the job completes, the 'jobComplete' field in the response will be
-        false
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryJobsGetQueryResultsRequest(
-        projectId=projectId.decode('utf8'),
-        jobId=jobId.decode('utf8'),
-        )
-    if FLAGS['maxResults'].present:
-      request.maxResults = FLAGS.maxResults
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    if FLAGS['startIndex'].present:
-      request.startIndex = int(FLAGS.startIndex)
-    if FLAGS['timeoutMs'].present:
-      request.timeoutMs = FLAGS.timeoutMs
-    result = client.jobs.GetQueryResults(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class JobsInsert(apitools_base_cli.NewCmd):
-  """Command wrapping jobs.Insert."""
-
-  usage = """jobs_insert <projectId>"""
-
-  def __init__(self, name, fv):
-    super(JobsInsert, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'job',
-        None,
-        u'A Job resource to be passed as the request body.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'upload_filename',
-        '',
-        'Filename to use for upload.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'upload_mime_type',
-        '',
-        'MIME type to use for the upload. Only needed if the extension on '
-        '--upload_filename does not determine the correct (or any) MIME '
-        'type.',
-        flag_values=fv)
-
-  def RunWithArgs(self, projectId):
-    """Starts a new asynchronous job. Requires the Can View project role.
-
-    Args:
-      projectId: Project ID of the project that will be billed for the job
-
-    Flags:
-      job: A Job resource to be passed as the request body.
-      upload_filename: Filename to use for upload.
-      upload_mime_type: MIME type to use for the upload. Only needed if the
-        extension on --upload_filename does not determine the correct (or any)
-        MIME type.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryJobsInsertRequest(
-        projectId=projectId.decode('utf8'),
-        )
-    if FLAGS['job'].present:
-      request.job = apitools_base.JsonToMessage(messages.Job, FLAGS.job)
-    upload = None
-    if FLAGS.upload_filename:
-      upload = apitools_base.Upload.FromFile(
-          FLAGS.upload_filename, FLAGS.upload_mime_type,
-          progress_callback=apitools_base.UploadProgressPrinter,
-          finish_callback=apitools_base.UploadCompletePrinter)
-    result = client.jobs.Insert(
-        request, global_params=global_params, upload=upload)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class JobsList(apitools_base_cli.NewCmd):
-  """Command wrapping jobs.List."""
-
-  usage = """jobs_list <projectId>"""
-
-  def __init__(self, name, fv):
-    super(JobsList, self).__init__(name, fv)
-    flags.DEFINE_boolean(
-        'allUsers',
-        None,
-        u'Whether to display jobs owned by all users in the project. Default '
-        u'false',
-        flag_values=fv)
-    flags.DEFINE_integer(
-        'maxResults',
-        None,
-        u'Maximum number of results to return',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        u'Page token, returned by a previous call, to request the next page '
-        u'of results',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'projection',
-        u'full',
-        [u'full', u'minimal'],
-        u'Restrict information returned to a set of selected fields',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'stateFilter',
-        u'done',
-        [u'done', u'pending', u'running'],
-        u'Filter for job state',
-        flag_values=fv)
-
-  def RunWithArgs(self, projectId):
-    """Lists all jobs that you started in the specified project. Job
-    information is available for a six month period after creation. The job
-    list is sorted in reverse chronological order, by job creation time.
-    Requires the Can View project role, or the Is Owner project role if you
-    set the allUsers property.
-
-    Args:
-      projectId: Project ID of the jobs to list
-
-    Flags:
-      allUsers: Whether to display jobs owned by all users in the project.
-        Default false
-      maxResults: Maximum number of results to return
-      pageToken: Page token, returned by a previous call, to request the next
-        page of results
-      projection: Restrict information returned to a set of selected fields
-      stateFilter: Filter for job state
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryJobsListRequest(
-        projectId=projectId.decode('utf8'),
-        )
-    if FLAGS['allUsers'].present:
-      request.allUsers = FLAGS.allUsers
-    if FLAGS['maxResults'].present:
-      request.maxResults = FLAGS.maxResults
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    if FLAGS['projection'].present:
-      request.projection = messages.BigqueryJobsListRequest.ProjectionValueValuesEnum(FLAGS.projection)
-    if FLAGS['stateFilter'].present:
-      request.stateFilter = [messages.BigqueryJobsListRequest.StateFilterValueValuesEnum(x) for x in FLAGS.stateFilter]
-    result = client.jobs.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class JobsQuery(apitools_base_cli.NewCmd):
-  """Command wrapping jobs.Query."""
-
-  usage = """jobs_query <projectId>"""
-
-  def __init__(self, name, fv):
-    super(JobsQuery, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'queryRequest',
-        None,
-        u'A QueryRequest resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, projectId):
-    """Runs a BigQuery SQL query synchronously and returns query results if
-    the query completes within a specified timeout.
-
-    Args:
-      projectId: Project ID of the project billed for the query
-
-    Flags:
-      queryRequest: A QueryRequest resource to be passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryJobsQueryRequest(
-        projectId=projectId.decode('utf8'),
-        )
-    if FLAGS['queryRequest'].present:
-      request.queryRequest = apitools_base.JsonToMessage(messages.QueryRequest, FLAGS.queryRequest)
-    result = client.jobs.Query(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ProjectsList(apitools_base_cli.NewCmd):
-  """Command wrapping projects.List."""
-
-  usage = """projects_list"""
-
-  def __init__(self, name, fv):
-    super(ProjectsList, self).__init__(name, fv)
-    flags.DEFINE_integer(
-        'maxResults',
-        None,
-        u'Maximum number of results to return',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        u'Page token, returned by a previous call, to request the next page '
-        u'of results',
-        flag_values=fv)
-
-  def RunWithArgs(self):
-    """Lists all projects to which you have been granted any project role.
-
-    Flags:
-      maxResults: Maximum number of results to return
-      pageToken: Page token, returned by a previous call, to request the next
-        page of results
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryProjectsListRequest(
-        )
-    if FLAGS['maxResults'].present:
-      request.maxResults = FLAGS.maxResults
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    result = client.projects.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TabledataInsertAll(apitools_base_cli.NewCmd):
-  """Command wrapping tabledata.InsertAll."""
-
-  usage = """tabledata_insertAll <projectId> <datasetId> <tableId>"""
-
-  def __init__(self, name, fv):
-    super(TabledataInsertAll, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'tableDataInsertAllRequest',
-        None,
-        u'A TableDataInsertAllRequest resource to be passed as the request '
-        u'body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, projectId, datasetId, tableId):
-    """Streams data into BigQuery one record at a time without needing to run
-    a load job. Requires the WRITER dataset role.
-
-    Args:
-      projectId: Project ID of the destination table.
-      datasetId: Dataset ID of the destination table.
-      tableId: Table ID of the destination table.
-
-    Flags:
-      tableDataInsertAllRequest: A TableDataInsertAllRequest resource to be
-        passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryTabledataInsertAllRequest(
-        projectId=projectId.decode('utf8'),
-        datasetId=datasetId.decode('utf8'),
-        tableId=tableId.decode('utf8'),
-        )
-    if FLAGS['tableDataInsertAllRequest'].present:
-      request.tableDataInsertAllRequest = apitools_base.JsonToMessage(messages.TableDataInsertAllRequest, FLAGS.tableDataInsertAllRequest)
-    result = client.tabledata.InsertAll(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TabledataList(apitools_base_cli.NewCmd):
-  """Command wrapping tabledata.List."""
-
-  usage = """tabledata_list <projectId> <datasetId> <tableId>"""
-
-  def __init__(self, name, fv):
-    super(TabledataList, self).__init__(name, fv)
-    flags.DEFINE_integer(
-        'maxResults',
-        None,
-        u'Maximum number of results to return',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        u'Page token, returned by a previous call, identifying the result set',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'startIndex',
-        None,
-        u'Zero-based index of the starting row to read',
-        flag_values=fv)
-
-  def RunWithArgs(self, projectId, datasetId, tableId):
-    """Retrieves table data from a specified set of rows. Requires the READER
-    dataset role.
-
-    Args:
-      projectId: Project ID of the table to read
-      datasetId: Dataset ID of the table to read
-      tableId: Table ID of the table to read
-
-    Flags:
-      maxResults: Maximum number of results to return
-      pageToken: Page token, returned by a previous call, identifying the
-        result set
-      startIndex: Zero-based index of the starting row to read
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryTabledataListRequest(
-        projectId=projectId.decode('utf8'),
-        datasetId=datasetId.decode('utf8'),
-        tableId=tableId.decode('utf8'),
-        )
-    if FLAGS['maxResults'].present:
-      request.maxResults = FLAGS.maxResults
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    if FLAGS['startIndex'].present:
-      request.startIndex = int(FLAGS.startIndex)
-    result = client.tabledata.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TablesDelete(apitools_base_cli.NewCmd):
-  """Command wrapping tables.Delete."""
-
-  usage = """tables_delete <projectId> <datasetId> <tableId>"""
-
-  def __init__(self, name, fv):
-    super(TablesDelete, self).__init__(name, fv)
-
-  def RunWithArgs(self, projectId, datasetId, tableId):
-    """Deletes the table specified by tableId from the dataset. If the table
-    contains data, all the data will be deleted.
-
-    Args:
-      projectId: Project ID of the table to delete
-      datasetId: Dataset ID of the table to delete
-      tableId: Table ID of the table to delete
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryTablesDeleteRequest(
-        projectId=projectId.decode('utf8'),
-        datasetId=datasetId.decode('utf8'),
-        tableId=tableId.decode('utf8'),
-        )
-    result = client.tables.Delete(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TablesGet(apitools_base_cli.NewCmd):
-  """Command wrapping tables.Get."""
-
-  usage = """tables_get <projectId> <datasetId> <tableId>"""
-
-  def __init__(self, name, fv):
-    super(TablesGet, self).__init__(name, fv)
-
-  def RunWithArgs(self, projectId, datasetId, tableId):
-    """Gets the specified table resource by table ID. This method does not
-    return the data in the table, it only returns the table resource, which
-    describes the structure of this table.
-
-    Args:
-      projectId: Project ID of the requested table
-      datasetId: Dataset ID of the requested table
-      tableId: Table ID of the requested table
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryTablesGetRequest(
-        projectId=projectId.decode('utf8'),
-        datasetId=datasetId.decode('utf8'),
-        tableId=tableId.decode('utf8'),
-        )
-    result = client.tables.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TablesInsert(apitools_base_cli.NewCmd):
-  """Command wrapping tables.Insert."""
-
-  usage = """tables_insert <projectId> <datasetId>"""
-
-  def __init__(self, name, fv):
-    super(TablesInsert, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'table',
-        None,
-        u'A Table resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, projectId, datasetId):
-    """Creates a new, empty table in the dataset.
-
-    Args:
-      projectId: Project ID of the new table
-      datasetId: Dataset ID of the new table
-
-    Flags:
-      table: A Table resource to be passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryTablesInsertRequest(
-        projectId=projectId.decode('utf8'),
-        datasetId=datasetId.decode('utf8'),
-        )
-    if FLAGS['table'].present:
-      request.table = apitools_base.JsonToMessage(messages.Table, FLAGS.table)
-    result = client.tables.Insert(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TablesList(apitools_base_cli.NewCmd):
-  """Command wrapping tables.List."""
-
-  usage = """tables_list <projectId> <datasetId>"""
-
-  def __init__(self, name, fv):
-    super(TablesList, self).__init__(name, fv)
-    flags.DEFINE_integer(
-        'maxResults',
-        None,
-        u'Maximum number of results to return',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        u'Page token, returned by a previous call, to request the next page '
-        u'of results',
-        flag_values=fv)
-
-  def RunWithArgs(self, projectId, datasetId):
-    """Lists all tables in the specified dataset. Requires the READER dataset
-    role.
-
-    Args:
-      projectId: Project ID of the tables to list
-      datasetId: Dataset ID of the tables to list
-
-    Flags:
-      maxResults: Maximum number of results to return
-      pageToken: Page token, returned by a previous call, to request the next
-        page of results
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryTablesListRequest(
-        projectId=projectId.decode('utf8'),
-        datasetId=datasetId.decode('utf8'),
-        )
-    if FLAGS['maxResults'].present:
-      request.maxResults = FLAGS.maxResults
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    result = client.tables.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TablesPatch(apitools_base_cli.NewCmd):
-  """Command wrapping tables.Patch."""
-
-  usage = """tables_patch <projectId> <datasetId> <tableId>"""
-
-  def __init__(self, name, fv):
-    super(TablesPatch, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'table',
-        None,
-        u'A Table resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, projectId, datasetId, tableId):
-    """Updates information in an existing table. The update method replaces
-    the entire table resource, whereas the patch method only replaces fields
-    that are provided in the submitted table resource. This method supports
-    patch semantics.
-
-    Args:
-      projectId: Project ID of the table to update
-      datasetId: Dataset ID of the table to update
-      tableId: Table ID of the table to update
-
-    Flags:
-      table: A Table resource to be passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryTablesPatchRequest(
-        projectId=projectId.decode('utf8'),
-        datasetId=datasetId.decode('utf8'),
-        tableId=tableId.decode('utf8'),
-        )
-    if FLAGS['table'].present:
-      request.table = apitools_base.JsonToMessage(messages.Table, FLAGS.table)
-    result = client.tables.Patch(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TablesUpdate(apitools_base_cli.NewCmd):
-  """Command wrapping tables.Update."""
-
-  usage = """tables_update <projectId> <datasetId> <tableId>"""
-
-  def __init__(self, name, fv):
-    super(TablesUpdate, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'table',
-        None,
-        u'A Table resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, projectId, datasetId, tableId):
-    """Updates information in an existing table. The update method replaces
-    the entire table resource, whereas the patch method only replaces fields
-    that are provided in the submitted table resource.
-
-    Args:
-      projectId: Project ID of the table to update
-      datasetId: Dataset ID of the table to update
-      tableId: Table ID of the table to update
-
-    Flags:
-      table: A Table resource to be passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BigqueryTablesUpdateRequest(
-        projectId=projectId.decode('utf8'),
-        datasetId=datasetId.decode('utf8'),
-        tableId=tableId.decode('utf8'),
-        )
-    if FLAGS['table'].present:
-      request.table = apitools_base.JsonToMessage(messages.Table, FLAGS.table)
-    result = client.tables.Update(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-def main(_):
-  appcommands.AddCmd('pyshell', PyShell)
-  appcommands.AddCmd('datasets_delete', DatasetsDelete)
-  appcommands.AddCmd('datasets_get', DatasetsGet)
-  appcommands.AddCmd('datasets_insert', DatasetsInsert)
-  appcommands.AddCmd('datasets_list', DatasetsList)
-  appcommands.AddCmd('datasets_patch', DatasetsPatch)
-  appcommands.AddCmd('datasets_update', DatasetsUpdate)
-  appcommands.AddCmd('jobs_cancel', JobsCancel)
-  appcommands.AddCmd('jobs_get', JobsGet)
-  appcommands.AddCmd('jobs_getQueryResults', JobsGetQueryResults)
-  appcommands.AddCmd('jobs_insert', JobsInsert)
-  appcommands.AddCmd('jobs_list', JobsList)
-  appcommands.AddCmd('jobs_query', JobsQuery)
-  appcommands.AddCmd('projects_list', ProjectsList)
-  appcommands.AddCmd('tabledata_insertAll', TabledataInsertAll)
-  appcommands.AddCmd('tabledata_list', TabledataList)
-  appcommands.AddCmd('tables_delete', TablesDelete)
-  appcommands.AddCmd('tables_get', TablesGet)
-  appcommands.AddCmd('tables_insert', TablesInsert)
-  appcommands.AddCmd('tables_list', TablesList)
-  appcommands.AddCmd('tables_patch', TablesPatch)
-  appcommands.AddCmd('tables_update', TablesUpdate)
-
-  apitools_base_cli.SetupLogger()
-  if hasattr(appcommands, 'SetDefaultCommand'):
-    appcommands.SetDefaultCommand('pyshell')
-
-
-run_main = apitools_base_cli.run_main
-
-if __name__ == '__main__':
-  appcommands.Run()
diff --git a/samples/dns_sample/dns_v1/dns_v1.py b/samples/dns_sample/dns_v1/dns_v1.py
deleted file mode 100644
index 56e54f3..0000000
--- a/samples/dns_sample/dns_v1/dns_v1.py
+++ /dev/null
@@ -1,554 +0,0 @@
-#!/usr/bin/env python
-"""CLI for dns, version v1."""
-# NOTE: This file is autogenerated and should not be edited by hand.
-
-import code
-import os
-import platform
-import sys
-
-from apitools.base.protorpclite import message_types
-from apitools.base.protorpclite import messages
-
-from google.apputils import appcommands
-import gflags as flags
-
-import apitools.base.py as apitools_base
-from apitools.base.py import cli as apitools_base_cli
-import dns_v1_client as client_lib
-import dns_v1_messages as messages
-
-
-def _DeclareDnsFlags():
-  """Declare global flags in an idempotent way."""
-  if 'api_endpoint' in flags.FLAGS:
-    return
-  flags.DEFINE_string(
-      'api_endpoint',
-      u'https://www.googleapis.com/dns/v1/',
-      'URL of the API endpoint to use.',
-      short_name='dns_url')
-  flags.DEFINE_string(
-      'history_file',
-      u'~/.dns.v1.history',
-      'File with interactive shell history.')
-  flags.DEFINE_multistring(
-      'add_header', [],
-      'Additional http headers (as key=value strings). '
-      'Can be specified multiple times.')
-  flags.DEFINE_string(
-      'service_account_json_keyfile', '',
-      'Filename for a JSON service account key downloaded'
-      ' from the Developer Console.')
-  flags.DEFINE_enum(
-      'alt',
-      u'json',
-      [u'json'],
-      u'Data format for the response.')
-  flags.DEFINE_string(
-      'fields',
-      None,
-      u'Selector specifying which fields to include in a partial response.')
-  flags.DEFINE_string(
-      'key',
-      None,
-      u'API key. Your API key identifies your project and provides you with '
-      u'API access, quota, and reports. Required unless you provide an OAuth '
-      u'2.0 token.')
-  flags.DEFINE_string(
-      'oauth_token',
-      None,
-      u'OAuth 2.0 token for the current user.')
-  flags.DEFINE_boolean(
-      'prettyPrint',
-      'True',
-      u'Returns response with indentations and line breaks.')
-  flags.DEFINE_string(
-      'quotaUser',
-      None,
-      u'Available to use for quota purposes for server-side applications. Can'
-      u' be any arbitrary string assigned to a user, but should not exceed 40'
-      u' characters. Overrides userIp if both are provided.')
-  flags.DEFINE_string(
-      'trace',
-      None,
-      'A tracing token of the form "token:<tokenid>" to include in api '
-      'requests.')
-  flags.DEFINE_string(
-      'userIp',
-      None,
-      u'IP address of the site where the request originates. Use this if you '
-      u'want to enforce per-user limits.')
-
-
-FLAGS = flags.FLAGS
-apitools_base_cli.DeclareBaseFlags()
-_DeclareDnsFlags()
-
-
-def GetGlobalParamsFromFlags():
-  """Return a StandardQueryParameters based on flags."""
-  result = messages.StandardQueryParameters()
-  if FLAGS['alt'].present:
-    result.alt = messages.StandardQueryParameters.AltValueValuesEnum(FLAGS.alt)
-  if FLAGS['fields'].present:
-    result.fields = FLAGS.fields.decode('utf8')
-  if FLAGS['key'].present:
-    result.key = FLAGS.key.decode('utf8')
-  if FLAGS['oauth_token'].present:
-    result.oauth_token = FLAGS.oauth_token.decode('utf8')
-  if FLAGS['prettyPrint'].present:
-    result.prettyPrint = FLAGS.prettyPrint
-  if FLAGS['quotaUser'].present:
-    result.quotaUser = FLAGS.quotaUser.decode('utf8')
-  if FLAGS['trace'].present:
-    result.trace = FLAGS.trace.decode('utf8')
-  if FLAGS['userIp'].present:
-    result.userIp = FLAGS.userIp.decode('utf8')
-  return result
-
-
-def GetClientFromFlags():
-  """Return a client object, configured from flags."""
-  log_request = FLAGS.log_request or FLAGS.log_request_response
-  log_response = FLAGS.log_response or FLAGS.log_request_response
-  api_endpoint = apitools_base.NormalizeApiEndpoint(FLAGS.api_endpoint)
-  additional_http_headers = dict(x.split('=', 1) for x in FLAGS.add_header)
-  credentials_args = {
-      'service_account_json_keyfile': os.path.expanduser(FLAGS.service_account_json_keyfile)
-  }
-  try:
-    client = client_lib.DnsV1(
-        api_endpoint, log_request=log_request,
-        log_response=log_response,
-        credentials_args=credentials_args,
-        additional_http_headers=additional_http_headers)
-  except apitools_base.CredentialsError as e:
-    print 'Error creating credentials: %s' % e
-    sys.exit(1)
-  return client
-
-
-class PyShell(appcommands.Cmd):
-
-  def Run(self, _):
-    """Run an interactive python shell with the client."""
-    client = GetClientFromFlags()
-    params = GetGlobalParamsFromFlags()
-    for field in params.all_fields():
-      value = params.get_assigned_value(field.name)
-      if value != field.default:
-        client.AddGlobalParam(field.name, value)
-    banner = """
-           == dns interactive console ==
-                 client: a dns client
-          apitools_base: base apitools module
-         messages: the generated messages module
-    """
-    local_vars = {
-        'apitools_base': apitools_base,
-        'client': client,
-        'client_lib': client_lib,
-        'messages': messages,
-    }
-    if platform.system() == 'Linux':
-      console = apitools_base_cli.ConsoleWithReadline(
-          local_vars, histfile=FLAGS.history_file)
-    else:
-      console = code.InteractiveConsole(local_vars)
-    try:
-      console.interact(banner)
-    except SystemExit as e:
-      return e.code
-
-
-class ChangesCreate(apitools_base_cli.NewCmd):
-  """Command wrapping changes.Create."""
-
-  usage = """changes_create <project> <managedZone>"""
-
-  def __init__(self, name, fv):
-    super(ChangesCreate, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'change',
-        None,
-        u'A Change resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, project, managedZone):
-    """Atomically update the ResourceRecordSet collection.
-
-    Args:
-      project: Identifies the project addressed by this request.
-      managedZone: Identifies the managed zone addressed by this request. Can
-        be the managed zone name or id.
-
-    Flags:
-      change: A Change resource to be passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.DnsChangesCreateRequest(
-        project=project.decode('utf8'),
-        managedZone=managedZone.decode('utf8'),
-        )
-    if FLAGS['change'].present:
-      request.change = apitools_base.JsonToMessage(messages.Change, FLAGS.change)
-    result = client.changes.Create(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ChangesGet(apitools_base_cli.NewCmd):
-  """Command wrapping changes.Get."""
-
-  usage = """changes_get <project> <managedZone> <changeId>"""
-
-  def __init__(self, name, fv):
-    super(ChangesGet, self).__init__(name, fv)
-
-  def RunWithArgs(self, project, managedZone, changeId):
-    """Fetch the representation of an existing Change.
-
-    Args:
-      project: Identifies the project addressed by this request.
-      managedZone: Identifies the managed zone addressed by this request. Can
-        be the managed zone name or id.
-      changeId: The identifier of the requested change, from a previous
-        ResourceRecordSetsChangeResponse.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.DnsChangesGetRequest(
-        project=project.decode('utf8'),
-        managedZone=managedZone.decode('utf8'),
-        changeId=changeId.decode('utf8'),
-        )
-    result = client.changes.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ChangesList(apitools_base_cli.NewCmd):
-  """Command wrapping changes.List."""
-
-  usage = """changes_list <project> <managedZone>"""
-
-  def __init__(self, name, fv):
-    super(ChangesList, self).__init__(name, fv)
-    flags.DEFINE_integer(
-        'maxResults',
-        None,
-        u'Optional. Maximum number of results to be returned. If unspecified,'
-        u' the server will decide how many results to return.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        u'Optional. A tag returned by a previous list request that was '
-        u'truncated. Use this parameter to continue a previous list request.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'sortBy',
-        u'changeSequence',
-        [u'changeSequence'],
-        u'Sorting criterion. The only supported value is change sequence.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'sortOrder',
-        None,
-        u"Sorting order direction: 'ascending' or 'descending'.",
-        flag_values=fv)
-
-  def RunWithArgs(self, project, managedZone):
-    """Enumerate Changes to a ResourceRecordSet collection.
-
-    Args:
-      project: Identifies the project addressed by this request.
-      managedZone: Identifies the managed zone addressed by this request. Can
-        be the managed zone name or id.
-
-    Flags:
-      maxResults: Optional. Maximum number of results to be returned. If
-        unspecified, the server will decide how many results to return.
-      pageToken: Optional. A tag returned by a previous list request that was
-        truncated. Use this parameter to continue a previous list request.
-      sortBy: Sorting criterion. The only supported value is change sequence.
-      sortOrder: Sorting order direction: 'ascending' or 'descending'.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.DnsChangesListRequest(
-        project=project.decode('utf8'),
-        managedZone=managedZone.decode('utf8'),
-        )
-    if FLAGS['maxResults'].present:
-      request.maxResults = FLAGS.maxResults
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    if FLAGS['sortBy'].present:
-      request.sortBy = messages.DnsChangesListRequest.SortByValueValuesEnum(FLAGS.sortBy)
-    if FLAGS['sortOrder'].present:
-      request.sortOrder = FLAGS.sortOrder.decode('utf8')
-    result = client.changes.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ManagedZonesCreate(apitools_base_cli.NewCmd):
-  """Command wrapping managedZones.Create."""
-
-  usage = """managedZones_create <project>"""
-
-  def __init__(self, name, fv):
-    super(ManagedZonesCreate, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'managedZone',
-        None,
-        u'A ManagedZone resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, project):
-    """Create a new ManagedZone.
-
-    Args:
-      project: Identifies the project addressed by this request.
-
-    Flags:
-      managedZone: A ManagedZone resource to be passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.DnsManagedZonesCreateRequest(
-        project=project.decode('utf8'),
-        )
-    if FLAGS['managedZone'].present:
-      request.managedZone = apitools_base.JsonToMessage(messages.ManagedZone, FLAGS.managedZone)
-    result = client.managedZones.Create(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ManagedZonesDelete(apitools_base_cli.NewCmd):
-  """Command wrapping managedZones.Delete."""
-
-  usage = """managedZones_delete <project> <managedZone>"""
-
-  def __init__(self, name, fv):
-    super(ManagedZonesDelete, self).__init__(name, fv)
-
-  def RunWithArgs(self, project, managedZone):
-    """Delete a previously created ManagedZone.
-
-    Args:
-      project: Identifies the project addressed by this request.
-      managedZone: Identifies the managed zone addressed by this request. Can
-        be the managed zone name or id.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.DnsManagedZonesDeleteRequest(
-        project=project.decode('utf8'),
-        managedZone=managedZone.decode('utf8'),
-        )
-    result = client.managedZones.Delete(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ManagedZonesGet(apitools_base_cli.NewCmd):
-  """Command wrapping managedZones.Get."""
-
-  usage = """managedZones_get <project> <managedZone>"""
-
-  def __init__(self, name, fv):
-    super(ManagedZonesGet, self).__init__(name, fv)
-
-  def RunWithArgs(self, project, managedZone):
-    """Fetch the representation of an existing ManagedZone.
-
-    Args:
-      project: Identifies the project addressed by this request.
-      managedZone: Identifies the managed zone addressed by this request. Can
-        be the managed zone name or id.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.DnsManagedZonesGetRequest(
-        project=project.decode('utf8'),
-        managedZone=managedZone.decode('utf8'),
-        )
-    result = client.managedZones.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ManagedZonesList(apitools_base_cli.NewCmd):
-  """Command wrapping managedZones.List."""
-
-  usage = """managedZones_list <project>"""
-
-  def __init__(self, name, fv):
-    super(ManagedZonesList, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'dnsName',
-        None,
-        u'Restricts the list to return only zones with this domain name.',
-        flag_values=fv)
-    flags.DEFINE_integer(
-        'maxResults',
-        None,
-        u'Optional. Maximum number of results to be returned. If unspecified,'
-        u' the server will decide how many results to return.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        u'Optional. A tag returned by a previous list request that was '
-        u'truncated. Use this parameter to continue a previous list request.',
-        flag_values=fv)
-
-  def RunWithArgs(self, project):
-    """Enumerate ManagedZones that have been created but not yet deleted.
-
-    Args:
-      project: Identifies the project addressed by this request.
-
-    Flags:
-      dnsName: Restricts the list to return only zones with this domain name.
-      maxResults: Optional. Maximum number of results to be returned. If
-        unspecified, the server will decide how many results to return.
-      pageToken: Optional. A tag returned by a previous list request that was
-        truncated. Use this parameter to continue a previous list request.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.DnsManagedZonesListRequest(
-        project=project.decode('utf8'),
-        )
-    if FLAGS['dnsName'].present:
-      request.dnsName = FLAGS.dnsName.decode('utf8')
-    if FLAGS['maxResults'].present:
-      request.maxResults = FLAGS.maxResults
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    result = client.managedZones.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ProjectsGet(apitools_base_cli.NewCmd):
-  """Command wrapping projects.Get."""
-
-  usage = """projects_get <project>"""
-
-  def __init__(self, name, fv):
-    super(ProjectsGet, self).__init__(name, fv)
-
-  def RunWithArgs(self, project):
-    """Fetch the representation of an existing Project.
-
-    Args:
-      project: Identifies the project addressed by this request.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.DnsProjectsGetRequest(
-        project=project.decode('utf8'),
-        )
-    result = client.projects.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ResourceRecordSetsList(apitools_base_cli.NewCmd):
-  """Command wrapping resourceRecordSets.List."""
-
-  usage = """resourceRecordSets_list <project> <managedZone>"""
-
-  def __init__(self, name, fv):
-    super(ResourceRecordSetsList, self).__init__(name, fv)
-    flags.DEFINE_integer(
-        'maxResults',
-        None,
-        u'Optional. Maximum number of results to be returned. If unspecified,'
-        u' the server will decide how many results to return.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'name',
-        None,
-        u'Restricts the list to return only records with this fully qualified'
-        u' domain name.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        u'Optional. A tag returned by a previous list request that was '
-        u'truncated. Use this parameter to continue a previous list request.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'type',
-        None,
-        u'Restricts the list to return only records of this type. If present,'
-        u' the "name" parameter must also be present.',
-        flag_values=fv)
-
-  def RunWithArgs(self, project, managedZone):
-    """Enumerate ResourceRecordSets that have been created but not yet
-    deleted.
-
-    Args:
-      project: Identifies the project addressed by this request.
-      managedZone: Identifies the managed zone addressed by this request. Can
-        be the managed zone name or id.
-
-    Flags:
-      maxResults: Optional. Maximum number of results to be returned. If
-        unspecified, the server will decide how many results to return.
-      name: Restricts the list to return only records with this fully
-        qualified domain name.
-      pageToken: Optional. A tag returned by a previous list request that was
-        truncated. Use this parameter to continue a previous list request.
-      type: Restricts the list to return only records of this type. If
-        present, the "name" parameter must also be present.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.DnsResourceRecordSetsListRequest(
-        project=project.decode('utf8'),
-        managedZone=managedZone.decode('utf8'),
-        )
-    if FLAGS['maxResults'].present:
-      request.maxResults = FLAGS.maxResults
-    if FLAGS['name'].present:
-      request.name = FLAGS.name.decode('utf8')
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    if FLAGS['type'].present:
-      request.type = FLAGS.type.decode('utf8')
-    result = client.resourceRecordSets.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-def main(_):
-  appcommands.AddCmd('pyshell', PyShell)
-  appcommands.AddCmd('changes_create', ChangesCreate)
-  appcommands.AddCmd('changes_get', ChangesGet)
-  appcommands.AddCmd('changes_list', ChangesList)
-  appcommands.AddCmd('managedZones_create', ManagedZonesCreate)
-  appcommands.AddCmd('managedZones_delete', ManagedZonesDelete)
-  appcommands.AddCmd('managedZones_get', ManagedZonesGet)
-  appcommands.AddCmd('managedZones_list', ManagedZonesList)
-  appcommands.AddCmd('projects_get', ProjectsGet)
-  appcommands.AddCmd('resourceRecordSets_list', ResourceRecordSetsList)
-
-  apitools_base_cli.SetupLogger()
-  if hasattr(appcommands, 'SetDefaultCommand'):
-    appcommands.SetDefaultCommand('pyshell')
-
-
-run_main = apitools_base_cli.run_main
-
-if __name__ == '__main__':
-  appcommands.Run()
diff --git a/samples/fusiontables_sample/fusiontables_v1/fusiontables_v1.py b/samples/fusiontables_sample/fusiontables_v1/fusiontables_v1.py
deleted file mode 100644
index 8bb2c8a..0000000
--- a/samples/fusiontables_sample/fusiontables_v1/fusiontables_v1.py
+++ /dev/null
@@ -1,1797 +0,0 @@
-#!/usr/bin/env python
-"""CLI for fusiontables, version v1."""
-# NOTE: This file is autogenerated and should not be edited by hand.
-
-import code
-import os
-import platform
-import sys
-
-from apitools.base.protorpclite import message_types
-from apitools.base.protorpclite import messages
-
-from google.apputils import appcommands
-import gflags as flags
-
-import apitools.base.py as apitools_base
-from apitools.base.py import cli as apitools_base_cli
-import fusiontables_v1_client as client_lib
-import fusiontables_v1_messages as messages
-
-
-def _DeclareFusiontablesFlags():
-  """Declare global flags in an idempotent way."""
-  if 'api_endpoint' in flags.FLAGS:
-    return
-  flags.DEFINE_string(
-      'api_endpoint',
-      u'https://www.googleapis.com/fusiontables/v1/',
-      'URL of the API endpoint to use.',
-      short_name='fusiontables_url')
-  flags.DEFINE_string(
-      'history_file',
-      u'~/.fusiontables.v1.history',
-      'File with interactive shell history.')
-  flags.DEFINE_multistring(
-      'add_header', [],
-      'Additional http headers (as key=value strings). '
-      'Can be specified multiple times.')
-  flags.DEFINE_string(
-      'service_account_json_keyfile', '',
-      'Filename for a JSON service account key downloaded'
-      ' from the Developer Console.')
-  flags.DEFINE_enum(
-      'alt',
-      u'json',
-      [u'csv', u'json'],
-      u'Data format for the response.')
-  flags.DEFINE_string(
-      'fields',
-      None,
-      u'Selector specifying which fields to include in a partial response.')
-  flags.DEFINE_string(
-      'key',
-      None,
-      u'API key. Your API key identifies your project and provides you with '
-      u'API access, quota, and reports. Required unless you provide an OAuth '
-      u'2.0 token.')
-  flags.DEFINE_string(
-      'oauth_token',
-      None,
-      u'OAuth 2.0 token for the current user.')
-  flags.DEFINE_boolean(
-      'prettyPrint',
-      'True',
-      u'Returns response with indentations and line breaks.')
-  flags.DEFINE_string(
-      'quotaUser',
-      None,
-      u'Available to use for quota purposes for server-side applications. Can'
-      u' be any arbitrary string assigned to a user, but should not exceed 40'
-      u' characters. Overrides userIp if both are provided.')
-  flags.DEFINE_string(
-      'trace',
-      None,
-      'A tracing token of the form "token:<tokenid>" to include in api '
-      'requests.')
-  flags.DEFINE_string(
-      'userIp',
-      None,
-      u'IP address of the site where the request originates. Use this if you '
-      u'want to enforce per-user limits.')
-
-
-FLAGS = flags.FLAGS
-apitools_base_cli.DeclareBaseFlags()
-_DeclareFusiontablesFlags()
-
-
-def GetGlobalParamsFromFlags():
-  """Return a StandardQueryParameters based on flags."""
-  result = messages.StandardQueryParameters()
-  if FLAGS['alt'].present:
-    result.alt = messages.StandardQueryParameters.AltValueValuesEnum(FLAGS.alt)
-  if FLAGS['fields'].present:
-    result.fields = FLAGS.fields.decode('utf8')
-  if FLAGS['key'].present:
-    result.key = FLAGS.key.decode('utf8')
-  if FLAGS['oauth_token'].present:
-    result.oauth_token = FLAGS.oauth_token.decode('utf8')
-  if FLAGS['prettyPrint'].present:
-    result.prettyPrint = FLAGS.prettyPrint
-  if FLAGS['quotaUser'].present:
-    result.quotaUser = FLAGS.quotaUser.decode('utf8')
-  if FLAGS['trace'].present:
-    result.trace = FLAGS.trace.decode('utf8')
-  if FLAGS['userIp'].present:
-    result.userIp = FLAGS.userIp.decode('utf8')
-  return result
-
-
-def GetClientFromFlags():
-  """Return a client object, configured from flags."""
-  log_request = FLAGS.log_request or FLAGS.log_request_response
-  log_response = FLAGS.log_response or FLAGS.log_request_response
-  api_endpoint = apitools_base.NormalizeApiEndpoint(FLAGS.api_endpoint)
-  additional_http_headers = dict(x.split('=', 1) for x in FLAGS.add_header)
-  credentials_args = {
-      'service_account_json_keyfile': os.path.expanduser(FLAGS.service_account_json_keyfile)
-  }
-  try:
-    client = client_lib.FusiontablesV1(
-        api_endpoint, log_request=log_request,
-        log_response=log_response,
-        credentials_args=credentials_args,
-        additional_http_headers=additional_http_headers)
-  except apitools_base.CredentialsError as e:
-    print 'Error creating credentials: %s' % e
-    sys.exit(1)
-  return client
-
-
-class PyShell(appcommands.Cmd):
-
-  def Run(self, _):
-    """Run an interactive python shell with the client."""
-    client = GetClientFromFlags()
-    params = GetGlobalParamsFromFlags()
-    for field in params.all_fields():
-      value = params.get_assigned_value(field.name)
-      if value != field.default:
-        client.AddGlobalParam(field.name, value)
-    banner = """
-           == fusiontables interactive console ==
-                 client: a fusiontables client
-          apitools_base: base apitools module
-         messages: the generated messages module
-    """
-    local_vars = {
-        'apitools_base': apitools_base,
-        'client': client,
-        'client_lib': client_lib,
-        'messages': messages,
-    }
-    if platform.system() == 'Linux':
-      console = apitools_base_cli.ConsoleWithReadline(
-          local_vars, histfile=FLAGS.history_file)
-    else:
-      console = code.InteractiveConsole(local_vars)
-    try:
-      console.interact(banner)
-    except SystemExit as e:
-      return e.code
-
-
-class ColumnDelete(apitools_base_cli.NewCmd):
-  """Command wrapping column.Delete."""
-
-  usage = """column_delete <tableId> <columnId>"""
-
-  def __init__(self, name, fv):
-    super(ColumnDelete, self).__init__(name, fv)
-
-  def RunWithArgs(self, tableId, columnId):
-    """Deletes the column.
-
-    Args:
-      tableId: Table from which the column is being deleted.
-      columnId: Name or identifier for the column being deleted.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesColumnDeleteRequest(
-        tableId=tableId.decode('utf8'),
-        columnId=columnId.decode('utf8'),
-        )
-    result = client.column.Delete(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ColumnGet(apitools_base_cli.NewCmd):
-  """Command wrapping column.Get."""
-
-  usage = """column_get <tableId> <columnId>"""
-
-  def __init__(self, name, fv):
-    super(ColumnGet, self).__init__(name, fv)
-
-  def RunWithArgs(self, tableId, columnId):
-    """Retrieves a specific column by its id.
-
-    Args:
-      tableId: Table to which the column belongs.
-      columnId: Name or identifier for the column that is being requested.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesColumnGetRequest(
-        tableId=tableId.decode('utf8'),
-        columnId=columnId.decode('utf8'),
-        )
-    result = client.column.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ColumnInsert(apitools_base_cli.NewCmd):
-  """Command wrapping column.Insert."""
-
-  usage = """column_insert <tableId>"""
-
-  def __init__(self, name, fv):
-    super(ColumnInsert, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'column',
-        None,
-        u'A Column resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, tableId):
-    """Adds a new column to the table.
-
-    Args:
-      tableId: Table for which a new column is being added.
-
-    Flags:
-      column: A Column resource to be passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesColumnInsertRequest(
-        tableId=tableId.decode('utf8'),
-        )
-    if FLAGS['column'].present:
-      request.column = apitools_base.JsonToMessage(messages.Column, FLAGS.column)
-    result = client.column.Insert(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ColumnList(apitools_base_cli.NewCmd):
-  """Command wrapping column.List."""
-
-  usage = """column_list <tableId>"""
-
-  def __init__(self, name, fv):
-    super(ColumnList, self).__init__(name, fv)
-    flags.DEFINE_integer(
-        'maxResults',
-        None,
-        u'Maximum number of columns to return. Optional. Default is 5.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        u'Continuation token specifying which result page to return. '
-        u'Optional.',
-        flag_values=fv)
-
-  def RunWithArgs(self, tableId):
-    """Retrieves a list of columns.
-
-    Args:
-      tableId: Table whose columns are being listed.
-
-    Flags:
-      maxResults: Maximum number of columns to return. Optional. Default is 5.
-      pageToken: Continuation token specifying which result page to return.
-        Optional.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesColumnListRequest(
-        tableId=tableId.decode('utf8'),
-        )
-    if FLAGS['maxResults'].present:
-      request.maxResults = FLAGS.maxResults
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    result = client.column.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ColumnPatch(apitools_base_cli.NewCmd):
-  """Command wrapping column.Patch."""
-
-  usage = """column_patch <tableId> <columnId>"""
-
-  def __init__(self, name, fv):
-    super(ColumnPatch, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'column',
-        None,
-        u'A Column resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, tableId, columnId):
-    """Updates the name or type of an existing column. This method supports
-    patch semantics.
-
-    Args:
-      tableId: Table for which the column is being updated.
-      columnId: Name or identifier for the column that is being updated.
-
-    Flags:
-      column: A Column resource to be passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesColumnPatchRequest(
-        tableId=tableId.decode('utf8'),
-        columnId=columnId.decode('utf8'),
-        )
-    if FLAGS['column'].present:
-      request.column = apitools_base.JsonToMessage(messages.Column, FLAGS.column)
-    result = client.column.Patch(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ColumnUpdate(apitools_base_cli.NewCmd):
-  """Command wrapping column.Update."""
-
-  usage = """column_update <tableId> <columnId>"""
-
-  def __init__(self, name, fv):
-    super(ColumnUpdate, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'column',
-        None,
-        u'A Column resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, tableId, columnId):
-    """Updates the name or type of an existing column.
-
-    Args:
-      tableId: Table for which the column is being updated.
-      columnId: Name or identifier for the column that is being updated.
-
-    Flags:
-      column: A Column resource to be passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesColumnUpdateRequest(
-        tableId=tableId.decode('utf8'),
-        columnId=columnId.decode('utf8'),
-        )
-    if FLAGS['column'].present:
-      request.column = apitools_base.JsonToMessage(messages.Column, FLAGS.column)
-    result = client.column.Update(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class QuerySql(apitools_base_cli.NewCmd):
-  """Command wrapping query.Sql."""
-
-  usage = """query_sql <sql>"""
-
-  def __init__(self, name, fv):
-    super(QuerySql, self).__init__(name, fv)
-    flags.DEFINE_boolean(
-        'hdrs',
-        None,
-        u'Should column names be included (in the first row)?. Default is '
-        u'true.',
-        flag_values=fv)
-    flags.DEFINE_boolean(
-        'typed',
-        None,
-        u'Should typed values be returned in the (JSON) response -- numbers '
-        u'for numeric values and parsed geometries for KML values? Default is'
-        u' true.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'download_filename',
-        '',
-        'Filename to use for download.',
-        flag_values=fv)
-    flags.DEFINE_boolean(
-        'overwrite',
-        'False',
-        'If True, overwrite the existing file when downloading.',
-        flag_values=fv)
-
-  def RunWithArgs(self, sql):
-    """Executes an SQL SELECT/INSERT/UPDATE/DELETE/SHOW/DESCRIBE/CREATE
-    statement.
-
-    Args:
-      sql: An SQL SELECT/SHOW/DESCRIBE/INSERT/UPDATE/DELETE/CREATE statement.
-
-    Flags:
-      hdrs: Should column names be included (in the first row)?. Default is
-        true.
-      typed: Should typed values be returned in the (JSON) response -- numbers
-        for numeric values and parsed geometries for KML values? Default is
-        true.
-      download_filename: Filename to use for download.
-      overwrite: If True, overwrite the existing file when downloading.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesQuerySqlRequest(
-        sql=sql.decode('utf8'),
-        )
-    if FLAGS['hdrs'].present:
-      request.hdrs = FLAGS.hdrs
-    if FLAGS['typed'].present:
-      request.typed = FLAGS.typed
-    download = None
-    if FLAGS.download_filename:
-      download = apitools_base.Download.FromFile(FLAGS.download_filename, overwrite=FLAGS.overwrite,
-          progress_callback=apitools_base.DownloadProgressPrinter,
-          finish_callback=apitools_base.DownloadCompletePrinter)
-    result = client.query.Sql(
-        request, global_params=global_params, download=download)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class QuerySqlGet(apitools_base_cli.NewCmd):
-  """Command wrapping query.SqlGet."""
-
-  usage = """query_sqlGet <sql>"""
-
-  def __init__(self, name, fv):
-    super(QuerySqlGet, self).__init__(name, fv)
-    flags.DEFINE_boolean(
-        'hdrs',
-        None,
-        u'Should column names be included (in the first row)?. Default is '
-        u'true.',
-        flag_values=fv)
-    flags.DEFINE_boolean(
-        'typed',
-        None,
-        u'Should typed values be returned in the (JSON) response -- numbers '
-        u'for numeric values and parsed geometries for KML values? Default is'
-        u' true.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'download_filename',
-        '',
-        'Filename to use for download.',
-        flag_values=fv)
-    flags.DEFINE_boolean(
-        'overwrite',
-        'False',
-        'If True, overwrite the existing file when downloading.',
-        flag_values=fv)
-
-  def RunWithArgs(self, sql):
-    """Executes an SQL SELECT/SHOW/DESCRIBE statement.
-
-    Args:
-      sql: An SQL SELECT/SHOW/DESCRIBE statement.
-
-    Flags:
-      hdrs: Should column names be included (in the first row)?. Default is
-        true.
-      typed: Should typed values be returned in the (JSON) response -- numbers
-        for numeric values and parsed geometries for KML values? Default is
-        true.
-      download_filename: Filename to use for download.
-      overwrite: If True, overwrite the existing file when downloading.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesQuerySqlGetRequest(
-        sql=sql.decode('utf8'),
-        )
-    if FLAGS['hdrs'].present:
-      request.hdrs = FLAGS.hdrs
-    if FLAGS['typed'].present:
-      request.typed = FLAGS.typed
-    download = None
-    if FLAGS.download_filename:
-      download = apitools_base.Download.FromFile(FLAGS.download_filename, overwrite=FLAGS.overwrite,
-          progress_callback=apitools_base.DownloadProgressPrinter,
-          finish_callback=apitools_base.DownloadCompletePrinter)
-    result = client.query.SqlGet(
-        request, global_params=global_params, download=download)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class StyleDelete(apitools_base_cli.NewCmd):
-  """Command wrapping style.Delete."""
-
-  usage = """style_delete <tableId> <styleId>"""
-
-  def __init__(self, name, fv):
-    super(StyleDelete, self).__init__(name, fv)
-
-  def RunWithArgs(self, tableId, styleId):
-    """Deletes a style.
-
-    Args:
-      tableId: Table from which the style is being deleted
-      styleId: Identifier (within a table) for the style being deleted
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesStyleDeleteRequest(
-        tableId=tableId.decode('utf8'),
-        styleId=styleId,
-        )
-    result = client.style.Delete(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class StyleGet(apitools_base_cli.NewCmd):
-  """Command wrapping style.Get."""
-
-  usage = """style_get <tableId> <styleId>"""
-
-  def __init__(self, name, fv):
-    super(StyleGet, self).__init__(name, fv)
-
-  def RunWithArgs(self, tableId, styleId):
-    """Gets a specific style.
-
-    Args:
-      tableId: Table to which the requested style belongs
-      styleId: Identifier (integer) for a specific style in a table
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesStyleGetRequest(
-        tableId=tableId.decode('utf8'),
-        styleId=styleId,
-        )
-    result = client.style.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class StyleInsert(apitools_base_cli.NewCmd):
-  """Command wrapping style.Insert."""
-
-  usage = """style_insert <tableId>"""
-
-  def __init__(self, name, fv):
-    super(StyleInsert, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'kind',
-        u'fusiontables#styleSetting',
-        u'Type name: an individual style setting. A StyleSetting contains the'
-        u' style defintions for points, lines, and polygons in a table. Since'
-        u' a table can have any one or all of them, a style definition can '
-        u'have point, line and polygon style definitions.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'markerOptions',
-        None,
-        u'Style definition for points in the table.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'name',
-        None,
-        u'Optional name for the style setting.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'polygonOptions',
-        None,
-        u'Style definition for polygons in the table.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'polylineOptions',
-        None,
-        u'Style definition for lines in the table.',
-        flag_values=fv)
-    flags.DEFINE_integer(
-        'styleId',
-        None,
-        u'Identifier for the style setting (unique only within tables).',
-        flag_values=fv)
-
-  def RunWithArgs(self, tableId):
-    """Adds a new style for the table.
-
-    Args:
-      tableId: Identifier for the table.
-
-    Flags:
-      kind: Type name: an individual style setting. A StyleSetting contains
-        the style defintions for points, lines, and polygons in a table. Since
-        a table can have any one or all of them, a style definition can have
-        point, line and polygon style definitions.
-      markerOptions: Style definition for points in the table.
-      name: Optional name for the style setting.
-      polygonOptions: Style definition for polygons in the table.
-      polylineOptions: Style definition for lines in the table.
-      styleId: Identifier for the style setting (unique only within tables).
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StyleSetting(
-        tableId=tableId.decode('utf8'),
-        )
-    if FLAGS['kind'].present:
-      request.kind = FLAGS.kind.decode('utf8')
-    if FLAGS['markerOptions'].present:
-      request.markerOptions = apitools_base.JsonToMessage(messages.PointStyle, FLAGS.markerOptions)
-    if FLAGS['name'].present:
-      request.name = FLAGS.name.decode('utf8')
-    if FLAGS['polygonOptions'].present:
-      request.polygonOptions = apitools_base.JsonToMessage(messages.PolygonStyle, FLAGS.polygonOptions)
-    if FLAGS['polylineOptions'].present:
-      request.polylineOptions = apitools_base.JsonToMessage(messages.LineStyle, FLAGS.polylineOptions)
-    if FLAGS['styleId'].present:
-      request.styleId = FLAGS.styleId
-    result = client.style.Insert(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class StyleList(apitools_base_cli.NewCmd):
-  """Command wrapping style.List."""
-
-  usage = """style_list <tableId>"""
-
-  def __init__(self, name, fv):
-    super(StyleList, self).__init__(name, fv)
-    flags.DEFINE_integer(
-        'maxResults',
-        None,
-        u'Maximum number of styles to return. Optional. Default is 5.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        u'Continuation token specifying which result page to return. '
-        u'Optional.',
-        flag_values=fv)
-
-  def RunWithArgs(self, tableId):
-    """Retrieves a list of styles.
-
-    Args:
-      tableId: Table whose styles are being listed
-
-    Flags:
-      maxResults: Maximum number of styles to return. Optional. Default is 5.
-      pageToken: Continuation token specifying which result page to return.
-        Optional.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesStyleListRequest(
-        tableId=tableId.decode('utf8'),
-        )
-    if FLAGS['maxResults'].present:
-      request.maxResults = FLAGS.maxResults
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    result = client.style.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class StylePatch(apitools_base_cli.NewCmd):
-  """Command wrapping style.Patch."""
-
-  usage = """style_patch <tableId> <styleId>"""
-
-  def __init__(self, name, fv):
-    super(StylePatch, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'kind',
-        u'fusiontables#styleSetting',
-        u'Type name: an individual style setting. A StyleSetting contains the'
-        u' style defintions for points, lines, and polygons in a table. Since'
-        u' a table can have any one or all of them, a style definition can '
-        u'have point, line and polygon style definitions.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'markerOptions',
-        None,
-        u'Style definition for points in the table.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'name',
-        None,
-        u'Optional name for the style setting.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'polygonOptions',
-        None,
-        u'Style definition for polygons in the table.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'polylineOptions',
-        None,
-        u'Style definition for lines in the table.',
-        flag_values=fv)
-
-  def RunWithArgs(self, tableId, styleId):
-    """Updates an existing style. This method supports patch semantics.
-
-    Args:
-      tableId: Identifier for the table.
-      styleId: Identifier for the style setting (unique only within tables).
-
-    Flags:
-      kind: Type name: an individual style setting. A StyleSetting contains
-        the style defintions for points, lines, and polygons in a table. Since
-        a table can have any one or all of them, a style definition can have
-        point, line and polygon style definitions.
-      markerOptions: Style definition for points in the table.
-      name: Optional name for the style setting.
-      polygonOptions: Style definition for polygons in the table.
-      polylineOptions: Style definition for lines in the table.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StyleSetting(
-        tableId=tableId.decode('utf8'),
-        styleId=styleId,
-        )
-    if FLAGS['kind'].present:
-      request.kind = FLAGS.kind.decode('utf8')
-    if FLAGS['markerOptions'].present:
-      request.markerOptions = apitools_base.JsonToMessage(messages.PointStyle, FLAGS.markerOptions)
-    if FLAGS['name'].present:
-      request.name = FLAGS.name.decode('utf8')
-    if FLAGS['polygonOptions'].present:
-      request.polygonOptions = apitools_base.JsonToMessage(messages.PolygonStyle, FLAGS.polygonOptions)
-    if FLAGS['polylineOptions'].present:
-      request.polylineOptions = apitools_base.JsonToMessage(messages.LineStyle, FLAGS.polylineOptions)
-    result = client.style.Patch(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class StyleUpdate(apitools_base_cli.NewCmd):
-  """Command wrapping style.Update."""
-
-  usage = """style_update <tableId> <styleId>"""
-
-  def __init__(self, name, fv):
-    super(StyleUpdate, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'kind',
-        u'fusiontables#styleSetting',
-        u'Type name: an individual style setting. A StyleSetting contains the'
-        u' style defintions for points, lines, and polygons in a table. Since'
-        u' a table can have any one or all of them, a style definition can '
-        u'have point, line and polygon style definitions.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'markerOptions',
-        None,
-        u'Style definition for points in the table.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'name',
-        None,
-        u'Optional name for the style setting.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'polygonOptions',
-        None,
-        u'Style definition for polygons in the table.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'polylineOptions',
-        None,
-        u'Style definition for lines in the table.',
-        flag_values=fv)
-
-  def RunWithArgs(self, tableId, styleId):
-    """Updates an existing style.
-
-    Args:
-      tableId: Identifier for the table.
-      styleId: Identifier for the style setting (unique only within tables).
-
-    Flags:
-      kind: Type name: an individual style setting. A StyleSetting contains
-        the style defintions for points, lines, and polygons in a table. Since
-        a table can have any one or all of them, a style definition can have
-        point, line and polygon style definitions.
-      markerOptions: Style definition for points in the table.
-      name: Optional name for the style setting.
-      polygonOptions: Style definition for polygons in the table.
-      polylineOptions: Style definition for lines in the table.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StyleSetting(
-        tableId=tableId.decode('utf8'),
-        styleId=styleId,
-        )
-    if FLAGS['kind'].present:
-      request.kind = FLAGS.kind.decode('utf8')
-    if FLAGS['markerOptions'].present:
-      request.markerOptions = apitools_base.JsonToMessage(messages.PointStyle, FLAGS.markerOptions)
-    if FLAGS['name'].present:
-      request.name = FLAGS.name.decode('utf8')
-    if FLAGS['polygonOptions'].present:
-      request.polygonOptions = apitools_base.JsonToMessage(messages.PolygonStyle, FLAGS.polygonOptions)
-    if FLAGS['polylineOptions'].present:
-      request.polylineOptions = apitools_base.JsonToMessage(messages.LineStyle, FLAGS.polylineOptions)
-    result = client.style.Update(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TableCopy(apitools_base_cli.NewCmd):
-  """Command wrapping table.Copy."""
-
-  usage = """table_copy <tableId>"""
-
-  def __init__(self, name, fv):
-    super(TableCopy, self).__init__(name, fv)
-    flags.DEFINE_boolean(
-        'copyPresentation',
-        None,
-        u'Whether to also copy tabs, styles, and templates. Default is false.',
-        flag_values=fv)
-
-  def RunWithArgs(self, tableId):
-    """Copies a table.
-
-    Args:
-      tableId: ID of the table that is being copied.
-
-    Flags:
-      copyPresentation: Whether to also copy tabs, styles, and templates.
-        Default is false.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesTableCopyRequest(
-        tableId=tableId.decode('utf8'),
-        )
-    if FLAGS['copyPresentation'].present:
-      request.copyPresentation = FLAGS.copyPresentation
-    result = client.table.Copy(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TableDelete(apitools_base_cli.NewCmd):
-  """Command wrapping table.Delete."""
-
-  usage = """table_delete <tableId>"""
-
-  def __init__(self, name, fv):
-    super(TableDelete, self).__init__(name, fv)
-
-  def RunWithArgs(self, tableId):
-    """Deletes a table.
-
-    Args:
-      tableId: ID of the table that is being deleted.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesTableDeleteRequest(
-        tableId=tableId.decode('utf8'),
-        )
-    result = client.table.Delete(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TableGet(apitools_base_cli.NewCmd):
-  """Command wrapping table.Get."""
-
-  usage = """table_get <tableId>"""
-
-  def __init__(self, name, fv):
-    super(TableGet, self).__init__(name, fv)
-
-  def RunWithArgs(self, tableId):
-    """Retrieves a specific table by its id.
-
-    Args:
-      tableId: Identifier(ID) for the table being requested.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesTableGetRequest(
-        tableId=tableId.decode('utf8'),
-        )
-    result = client.table.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TableImportRows(apitools_base_cli.NewCmd):
-  """Command wrapping table.ImportRows."""
-
-  usage = """table_importRows <tableId>"""
-
-  def __init__(self, name, fv):
-    super(TableImportRows, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'delimiter',
-        None,
-        u'The delimiter used to separate cell values. This can only consist '
-        u"of a single character. Default is ','.",
-        flag_values=fv)
-    flags.DEFINE_string(
-        'encoding',
-        None,
-        u"The encoding of the content. Default is UTF-8. Use 'auto-detect' if"
-        u' you are unsure of the encoding.',
-        flag_values=fv)
-    flags.DEFINE_integer(
-        'endLine',
-        None,
-        u'The index of the last line from which to start importing, '
-        u'exclusive. Thus, the number of imported lines is endLine - '
-        u'startLine. If this parameter is not provided, the file will be '
-        u'imported until the last line of the file. If endLine is negative, '
-        u'then the imported content will exclude the last endLine lines. That'
-        u' is, if endline is negative, no line will be imported whose index '
-        u'is greater than N + endLine where N is the number of lines in the '
-        u'file, and the number of imported lines will be N + endLine - '
-        u'startLine.',
-        flag_values=fv)
-    flags.DEFINE_boolean(
-        'isStrict',
-        None,
-        u'Whether the CSV must have the same number of values for each row. '
-        u'If false, rows with fewer values will be padded with empty values. '
-        u'Default is true.',
-        flag_values=fv)
-    flags.DEFINE_integer(
-        'startLine',
-        None,
-        u'The index of the first line from which to start importing, '
-        u'inclusive. Default is 0.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'upload_filename',
-        '',
-        'Filename to use for upload.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'upload_mime_type',
-        '',
-        'MIME type to use for the upload. Only needed if the extension on '
-        '--upload_filename does not determine the correct (or any) MIME '
-        'type.',
-        flag_values=fv)
-
-  def RunWithArgs(self, tableId):
-    """Import more rows into a table.
-
-    Args:
-      tableId: The table into which new rows are being imported.
-
-    Flags:
-      delimiter: The delimiter used to separate cell values. This can only
-        consist of a single character. Default is ','.
-      encoding: The encoding of the content. Default is UTF-8. Use 'auto-
-        detect' if you are unsure of the encoding.
-      endLine: The index of the last line from which to start importing,
-        exclusive. Thus, the number of imported lines is endLine - startLine.
-        If this parameter is not provided, the file will be imported until the
-        last line of the file. If endLine is negative, then the imported
-        content will exclude the last endLine lines. That is, if endline is
-        negative, no line will be imported whose index is greater than N +
-        endLine where N is the number of lines in the file, and the number of
-        imported lines will be N + endLine - startLine.
-      isStrict: Whether the CSV must have the same number of values for each
-        row. If false, rows with fewer values will be padded with empty
-        values. Default is true.
-      startLine: The index of the first line from which to start importing,
-        inclusive. Default is 0.
-      upload_filename: Filename to use for upload.
-      upload_mime_type: MIME type to use for the upload. Only needed if the
-        extension on --upload_filename does not determine the correct (or any)
-        MIME type.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesTableImportRowsRequest(
-        tableId=tableId.decode('utf8'),
-        )
-    if FLAGS['delimiter'].present:
-      request.delimiter = FLAGS.delimiter.decode('utf8')
-    if FLAGS['encoding'].present:
-      request.encoding = FLAGS.encoding.decode('utf8')
-    if FLAGS['endLine'].present:
-      request.endLine = FLAGS.endLine
-    if FLAGS['isStrict'].present:
-      request.isStrict = FLAGS.isStrict
-    if FLAGS['startLine'].present:
-      request.startLine = FLAGS.startLine
-    upload = None
-    if FLAGS.upload_filename:
-      upload = apitools_base.Upload.FromFile(
-          FLAGS.upload_filename, FLAGS.upload_mime_type,
-          progress_callback=apitools_base.UploadProgressPrinter,
-          finish_callback=apitools_base.UploadCompletePrinter)
-    result = client.table.ImportRows(
-        request, global_params=global_params, upload=upload)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TableImportTable(apitools_base_cli.NewCmd):
-  """Command wrapping table.ImportTable."""
-
-  usage = """table_importTable <name>"""
-
-  def __init__(self, name, fv):
-    super(TableImportTable, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'delimiter',
-        None,
-        u'The delimiter used to separate cell values. This can only consist '
-        u"of a single character. Default is ','.",
-        flag_values=fv)
-    flags.DEFINE_string(
-        'encoding',
-        None,
-        u"The encoding of the content. Default is UTF-8. Use 'auto-detect' if"
-        u' you are unsure of the encoding.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'upload_filename',
-        '',
-        'Filename to use for upload.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'upload_mime_type',
-        '',
-        'MIME type to use for the upload. Only needed if the extension on '
-        '--upload_filename does not determine the correct (or any) MIME '
-        'type.',
-        flag_values=fv)
-
-  def RunWithArgs(self, name):
-    """Import a new table.
-
-    Args:
-      name: The name to be assigned to the new table.
-
-    Flags:
-      delimiter: The delimiter used to separate cell values. This can only
-        consist of a single character. Default is ','.
-      encoding: The encoding of the content. Default is UTF-8. Use 'auto-
-        detect' if you are unsure of the encoding.
-      upload_filename: Filename to use for upload.
-      upload_mime_type: MIME type to use for the upload. Only needed if the
-        extension on --upload_filename does not determine the correct (or any)
-        MIME type.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesTableImportTableRequest(
-        name=name.decode('utf8'),
-        )
-    if FLAGS['delimiter'].present:
-      request.delimiter = FLAGS.delimiter.decode('utf8')
-    if FLAGS['encoding'].present:
-      request.encoding = FLAGS.encoding.decode('utf8')
-    upload = None
-    if FLAGS.upload_filename:
-      upload = apitools_base.Upload.FromFile(
-          FLAGS.upload_filename, FLAGS.upload_mime_type,
-          progress_callback=apitools_base.UploadProgressPrinter,
-          finish_callback=apitools_base.UploadCompletePrinter)
-    result = client.table.ImportTable(
-        request, global_params=global_params, upload=upload)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TableInsert(apitools_base_cli.NewCmd):
-  """Command wrapping table.Insert."""
-
-  usage = """table_insert"""
-
-  def __init__(self, name, fv):
-    super(TableInsert, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'attribution',
-        None,
-        u'Optional attribution assigned to the table.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'attributionLink',
-        None,
-        u'Optional link for attribution.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'baseTableIds',
-        None,
-        u'Optional base table identifier if this table is a view or merged '
-        u'table.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'columns',
-        None,
-        u'Columns in the table.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'description',
-        None,
-        u'Optional description assigned to the table.',
-        flag_values=fv)
-    flags.DEFINE_boolean(
-        'isExportable',
-        None,
-        u'Variable for whether table is exportable.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'kind',
-        u'fusiontables#table',
-        u'Type name: a template for an individual table.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'name',
-        None,
-        u'Name assigned to a table.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'sql',
-        None,
-        u'Optional sql that encodes the table definition for derived tables.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'tableId',
-        None,
-        u'Encrypted unique alphanumeric identifier for the table.',
-        flag_values=fv)
-
-  def RunWithArgs(self):
-    """Creates a new table.
-
-    Flags:
-      attribution: Optional attribution assigned to the table.
-      attributionLink: Optional link for attribution.
-      baseTableIds: Optional base table identifier if this table is a view or
-        merged table.
-      columns: Columns in the table.
-      description: Optional description assigned to the table.
-      isExportable: Variable for whether table is exportable.
-      kind: Type name: a template for an individual table.
-      name: Name assigned to a table.
-      sql: Optional sql that encodes the table definition for derived tables.
-      tableId: Encrypted unique alphanumeric identifier for the table.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.Table(
-        )
-    if FLAGS['attribution'].present:
-      request.attribution = FLAGS.attribution.decode('utf8')
-    if FLAGS['attributionLink'].present:
-      request.attributionLink = FLAGS.attributionLink.decode('utf8')
-    if FLAGS['baseTableIds'].present:
-      request.baseTableIds = [x.decode('utf8') for x in FLAGS.baseTableIds]
-    if FLAGS['columns'].present:
-      request.columns = [apitools_base.JsonToMessage(messages.Column, x) for x in FLAGS.columns]
-    if FLAGS['description'].present:
-      request.description = FLAGS.description.decode('utf8')
-    if FLAGS['isExportable'].present:
-      request.isExportable = FLAGS.isExportable
-    if FLAGS['kind'].present:
-      request.kind = FLAGS.kind.decode('utf8')
-    if FLAGS['name'].present:
-      request.name = FLAGS.name.decode('utf8')
-    if FLAGS['sql'].present:
-      request.sql = FLAGS.sql.decode('utf8')
-    if FLAGS['tableId'].present:
-      request.tableId = FLAGS.tableId.decode('utf8')
-    result = client.table.Insert(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TableList(apitools_base_cli.NewCmd):
-  """Command wrapping table.List."""
-
-  usage = """table_list"""
-
-  def __init__(self, name, fv):
-    super(TableList, self).__init__(name, fv)
-    flags.DEFINE_integer(
-        'maxResults',
-        None,
-        u'Maximum number of styles to return. Optional. Default is 5.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        u'Continuation token specifying which result page to return. '
-        u'Optional.',
-        flag_values=fv)
-
-  def RunWithArgs(self):
-    """Retrieves a list of tables a user owns.
-
-    Flags:
-      maxResults: Maximum number of styles to return. Optional. Default is 5.
-      pageToken: Continuation token specifying which result page to return.
-        Optional.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesTableListRequest(
-        )
-    if FLAGS['maxResults'].present:
-      request.maxResults = FLAGS.maxResults
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    result = client.table.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TablePatch(apitools_base_cli.NewCmd):
-  """Command wrapping table.Patch."""
-
-  usage = """table_patch <tableId>"""
-
-  def __init__(self, name, fv):
-    super(TablePatch, self).__init__(name, fv)
-    flags.DEFINE_boolean(
-        'replaceViewDefinition',
-        None,
-        u'Should the view definition also be updated? The specified view '
-        u'definition replaces the existing one. Only a view can be updated '
-        u'with a new definition.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'table',
-        None,
-        u'A Table resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, tableId):
-    """Updates an existing table. Unless explicitly requested, only the name,
-    description, and attribution will be updated. This method supports patch
-    semantics.
-
-    Args:
-      tableId: ID of the table that is being updated.
-
-    Flags:
-      replaceViewDefinition: Should the view definition also be updated? The
-        specified view definition replaces the existing one. Only a view can
-        be updated with a new definition.
-      table: A Table resource to be passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesTablePatchRequest(
-        tableId=tableId.decode('utf8'),
-        )
-    if FLAGS['replaceViewDefinition'].present:
-      request.replaceViewDefinition = FLAGS.replaceViewDefinition
-    if FLAGS['table'].present:
-      request.table = apitools_base.JsonToMessage(messages.Table, FLAGS.table)
-    result = client.table.Patch(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TableUpdate(apitools_base_cli.NewCmd):
-  """Command wrapping table.Update."""
-
-  usage = """table_update <tableId>"""
-
-  def __init__(self, name, fv):
-    super(TableUpdate, self).__init__(name, fv)
-    flags.DEFINE_boolean(
-        'replaceViewDefinition',
-        None,
-        u'Should the view definition also be updated? The specified view '
-        u'definition replaces the existing one. Only a view can be updated '
-        u'with a new definition.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'table',
-        None,
-        u'A Table resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, tableId):
-    """Updates an existing table. Unless explicitly requested, only the name,
-    description, and attribution will be updated.
-
-    Args:
-      tableId: ID of the table that is being updated.
-
-    Flags:
-      replaceViewDefinition: Should the view definition also be updated? The
-        specified view definition replaces the existing one. Only a view can
-        be updated with a new definition.
-      table: A Table resource to be passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesTableUpdateRequest(
-        tableId=tableId.decode('utf8'),
-        )
-    if FLAGS['replaceViewDefinition'].present:
-      request.replaceViewDefinition = FLAGS.replaceViewDefinition
-    if FLAGS['table'].present:
-      request.table = apitools_base.JsonToMessage(messages.Table, FLAGS.table)
-    result = client.table.Update(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TaskDelete(apitools_base_cli.NewCmd):
-  """Command wrapping task.Delete."""
-
-  usage = """task_delete <tableId> <taskId>"""
-
-  def __init__(self, name, fv):
-    super(TaskDelete, self).__init__(name, fv)
-
-  def RunWithArgs(self, tableId, taskId):
-    """Deletes the task, unless already started.
-
-    Args:
-      tableId: Table from which the task is being deleted.
-      taskId: A string attribute.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesTaskDeleteRequest(
-        tableId=tableId.decode('utf8'),
-        taskId=taskId.decode('utf8'),
-        )
-    result = client.task.Delete(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TaskGet(apitools_base_cli.NewCmd):
-  """Command wrapping task.Get."""
-
-  usage = """task_get <tableId> <taskId>"""
-
-  def __init__(self, name, fv):
-    super(TaskGet, self).__init__(name, fv)
-
-  def RunWithArgs(self, tableId, taskId):
-    """Retrieves a specific task by its id.
-
-    Args:
-      tableId: Table to which the task belongs.
-      taskId: A string attribute.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesTaskGetRequest(
-        tableId=tableId.decode('utf8'),
-        taskId=taskId.decode('utf8'),
-        )
-    result = client.task.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TaskList(apitools_base_cli.NewCmd):
-  """Command wrapping task.List."""
-
-  usage = """task_list <tableId>"""
-
-  def __init__(self, name, fv):
-    super(TaskList, self).__init__(name, fv)
-    flags.DEFINE_integer(
-        'maxResults',
-        None,
-        u'Maximum number of columns to return. Optional. Default is 5.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        'A string attribute.',
-        flag_values=fv)
-    flags.DEFINE_integer(
-        'startIndex',
-        None,
-        'A integer attribute.',
-        flag_values=fv)
-
-  def RunWithArgs(self, tableId):
-    """Retrieves a list of tasks.
-
-    Args:
-      tableId: Table whose tasks are being listed.
-
-    Flags:
-      maxResults: Maximum number of columns to return. Optional. Default is 5.
-      pageToken: A string attribute.
-      startIndex: A integer attribute.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesTaskListRequest(
-        tableId=tableId.decode('utf8'),
-        )
-    if FLAGS['maxResults'].present:
-      request.maxResults = FLAGS.maxResults
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    if FLAGS['startIndex'].present:
-      request.startIndex = FLAGS.startIndex
-    result = client.task.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TemplateDelete(apitools_base_cli.NewCmd):
-  """Command wrapping template.Delete."""
-
-  usage = """template_delete <tableId> <templateId>"""
-
-  def __init__(self, name, fv):
-    super(TemplateDelete, self).__init__(name, fv)
-
-  def RunWithArgs(self, tableId, templateId):
-    """Deletes a template
-
-    Args:
-      tableId: Table from which the template is being deleted
-      templateId: Identifier for the template which is being deleted
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesTemplateDeleteRequest(
-        tableId=tableId.decode('utf8'),
-        templateId=templateId,
-        )
-    result = client.template.Delete(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TemplateGet(apitools_base_cli.NewCmd):
-  """Command wrapping template.Get."""
-
-  usage = """template_get <tableId> <templateId>"""
-
-  def __init__(self, name, fv):
-    super(TemplateGet, self).__init__(name, fv)
-
-  def RunWithArgs(self, tableId, templateId):
-    """Retrieves a specific template by its id
-
-    Args:
-      tableId: Table to which the template belongs
-      templateId: Identifier for the template that is being requested
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesTemplateGetRequest(
-        tableId=tableId.decode('utf8'),
-        templateId=templateId,
-        )
-    result = client.template.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TemplateInsert(apitools_base_cli.NewCmd):
-  """Command wrapping template.Insert."""
-
-  usage = """template_insert <tableId>"""
-
-  def __init__(self, name, fv):
-    super(TemplateInsert, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'automaticColumnNames',
-        None,
-        u'List of columns from which the template is to be automatically '
-        u'constructed. Only one of body or automaticColumns can be specified.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'body',
-        None,
-        u'Body of the template. It contains HTML with {column_name} to insert'
-        u' values from a particular column. The body is sanitized to remove '
-        u'certain tags, e.g., script. Only one of body or automaticColumns '
-        u'can be specified.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'kind',
-        u'fusiontables#template',
-        u'Type name: a template for the info window contents. The template '
-        u'can either include an HTML body or a list of columns from which the'
-        u' template is computed automatically.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'name',
-        None,
-        u'Optional name assigned to a template.',
-        flag_values=fv)
-    flags.DEFINE_integer(
-        'templateId',
-        None,
-        u'Identifier for the template, unique within the context of a '
-        u'particular table.',
-        flag_values=fv)
-
-  def RunWithArgs(self, tableId):
-    """Creates a new template for the table.
-
-    Args:
-      tableId: Identifier for the table for which the template is defined.
-
-    Flags:
-      automaticColumnNames: List of columns from which the template is to be
-        automatically constructed. Only one of body or automaticColumns can be
-        specified.
-      body: Body of the template. It contains HTML with {column_name} to
-        insert values from a particular column. The body is sanitized to
-        remove certain tags, e.g., script. Only one of body or
-        automaticColumns can be specified.
-      kind: Type name: a template for the info window contents. The template
-        can either include an HTML body or a list of columns from which the
-        template is computed automatically.
-      name: Optional name assigned to a template.
-      templateId: Identifier for the template, unique within the context of a
-        particular table.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.Template(
-        tableId=tableId.decode('utf8'),
-        )
-    if FLAGS['automaticColumnNames'].present:
-      request.automaticColumnNames = [x.decode('utf8') for x in FLAGS.automaticColumnNames]
-    if FLAGS['body'].present:
-      request.body = FLAGS.body.decode('utf8')
-    if FLAGS['kind'].present:
-      request.kind = FLAGS.kind.decode('utf8')
-    if FLAGS['name'].present:
-      request.name = FLAGS.name.decode('utf8')
-    if FLAGS['templateId'].present:
-      request.templateId = FLAGS.templateId
-    result = client.template.Insert(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TemplateList(apitools_base_cli.NewCmd):
-  """Command wrapping template.List."""
-
-  usage = """template_list <tableId>"""
-
-  def __init__(self, name, fv):
-    super(TemplateList, self).__init__(name, fv)
-    flags.DEFINE_integer(
-        'maxResults',
-        None,
-        u'Maximum number of templates to return. Optional. Default is 5.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        u'Continuation token specifying which results page to return. '
-        u'Optional.',
-        flag_values=fv)
-
-  def RunWithArgs(self, tableId):
-    """Retrieves a list of templates.
-
-    Args:
-      tableId: Identifier for the table whose templates are being requested
-
-    Flags:
-      maxResults: Maximum number of templates to return. Optional. Default is
-        5.
-      pageToken: Continuation token specifying which results page to return.
-        Optional.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.FusiontablesTemplateListRequest(
-        tableId=tableId.decode('utf8'),
-        )
-    if FLAGS['maxResults'].present:
-      request.maxResults = FLAGS.maxResults
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    result = client.template.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TemplatePatch(apitools_base_cli.NewCmd):
-  """Command wrapping template.Patch."""
-
-  usage = """template_patch <tableId> <templateId>"""
-
-  def __init__(self, name, fv):
-    super(TemplatePatch, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'automaticColumnNames',
-        None,
-        u'List of columns from which the template is to be automatically '
-        u'constructed. Only one of body or automaticColumns can be specified.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'body',
-        None,
-        u'Body of the template. It contains HTML with {column_name} to insert'
-        u' values from a particular column. The body is sanitized to remove '
-        u'certain tags, e.g., script. Only one of body or automaticColumns '
-        u'can be specified.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'kind',
-        u'fusiontables#template',
-        u'Type name: a template for the info window contents. The template '
-        u'can either include an HTML body or a list of columns from which the'
-        u' template is computed automatically.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'name',
-        None,
-        u'Optional name assigned to a template.',
-        flag_values=fv)
-
-  def RunWithArgs(self, tableId, templateId):
-    """Updates an existing template. This method supports patch semantics.
-
-    Args:
-      tableId: Identifier for the table for which the template is defined.
-      templateId: Identifier for the template, unique within the context of a
-        particular table.
-
-    Flags:
-      automaticColumnNames: List of columns from which the template is to be
-        automatically constructed. Only one of body or automaticColumns can be
-        specified.
-      body: Body of the template. It contains HTML with {column_name} to
-        insert values from a particular column. The body is sanitized to
-        remove certain tags, e.g., script. Only one of body or
-        automaticColumns can be specified.
-      kind: Type name: a template for the info window contents. The template
-        can either include an HTML body or a list of columns from which the
-        template is computed automatically.
-      name: Optional name assigned to a template.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.Template(
-        tableId=tableId.decode('utf8'),
-        templateId=templateId,
-        )
-    if FLAGS['automaticColumnNames'].present:
-      request.automaticColumnNames = [x.decode('utf8') for x in FLAGS.automaticColumnNames]
-    if FLAGS['body'].present:
-      request.body = FLAGS.body.decode('utf8')
-    if FLAGS['kind'].present:
-      request.kind = FLAGS.kind.decode('utf8')
-    if FLAGS['name'].present:
-      request.name = FLAGS.name.decode('utf8')
-    result = client.template.Patch(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class TemplateUpdate(apitools_base_cli.NewCmd):
-  """Command wrapping template.Update."""
-
-  usage = """template_update <tableId> <templateId>"""
-
-  def __init__(self, name, fv):
-    super(TemplateUpdate, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'automaticColumnNames',
-        None,
-        u'List of columns from which the template is to be automatically '
-        u'constructed. Only one of body or automaticColumns can be specified.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'body',
-        None,
-        u'Body of the template. It contains HTML with {column_name} to insert'
-        u' values from a particular column. The body is sanitized to remove '
-        u'certain tags, e.g., script. Only one of body or automaticColumns '
-        u'can be specified.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'kind',
-        u'fusiontables#template',
-        u'Type name: a template for the info window contents. The template '
-        u'can either include an HTML body or a list of columns from which the'
-        u' template is computed automatically.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'name',
-        None,
-        u'Optional name assigned to a template.',
-        flag_values=fv)
-
-  def RunWithArgs(self, tableId, templateId):
-    """Updates an existing template
-
-    Args:
-      tableId: Identifier for the table for which the template is defined.
-      templateId: Identifier for the template, unique within the context of a
-        particular table.
-
-    Flags:
-      automaticColumnNames: List of columns from which the template is to be
-        automatically constructed. Only one of body or automaticColumns can be
-        specified.
-      body: Body of the template. It contains HTML with {column_name} to
-        insert values from a particular column. The body is sanitized to
-        remove certain tags, e.g., script. Only one of body or
-        automaticColumns can be specified.
-      kind: Type name: a template for the info window contents. The template
-        can either include an HTML body or a list of columns from which the
-        template is computed automatically.
-      name: Optional name assigned to a template.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.Template(
-        tableId=tableId.decode('utf8'),
-        templateId=templateId,
-        )
-    if FLAGS['automaticColumnNames'].present:
-      request.automaticColumnNames = [x.decode('utf8') for x in FLAGS.automaticColumnNames]
-    if FLAGS['body'].present:
-      request.body = FLAGS.body.decode('utf8')
-    if FLAGS['kind'].present:
-      request.kind = FLAGS.kind.decode('utf8')
-    if FLAGS['name'].present:
-      request.name = FLAGS.name.decode('utf8')
-    result = client.template.Update(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-def main(_):
-  appcommands.AddCmd('pyshell', PyShell)
-  appcommands.AddCmd('column_delete', ColumnDelete)
-  appcommands.AddCmd('column_get', ColumnGet)
-  appcommands.AddCmd('column_insert', ColumnInsert)
-  appcommands.AddCmd('column_list', ColumnList)
-  appcommands.AddCmd('column_patch', ColumnPatch)
-  appcommands.AddCmd('column_update', ColumnUpdate)
-  appcommands.AddCmd('query_sql', QuerySql)
-  appcommands.AddCmd('query_sqlGet', QuerySqlGet)
-  appcommands.AddCmd('style_delete', StyleDelete)
-  appcommands.AddCmd('style_get', StyleGet)
-  appcommands.AddCmd('style_insert', StyleInsert)
-  appcommands.AddCmd('style_list', StyleList)
-  appcommands.AddCmd('style_patch', StylePatch)
-  appcommands.AddCmd('style_update', StyleUpdate)
-  appcommands.AddCmd('table_copy', TableCopy)
-  appcommands.AddCmd('table_delete', TableDelete)
-  appcommands.AddCmd('table_get', TableGet)
-  appcommands.AddCmd('table_importRows', TableImportRows)
-  appcommands.AddCmd('table_importTable', TableImportTable)
-  appcommands.AddCmd('table_insert', TableInsert)
-  appcommands.AddCmd('table_list', TableList)
-  appcommands.AddCmd('table_patch', TablePatch)
-  appcommands.AddCmd('table_update', TableUpdate)
-  appcommands.AddCmd('task_delete', TaskDelete)
-  appcommands.AddCmd('task_get', TaskGet)
-  appcommands.AddCmd('task_list', TaskList)
-  appcommands.AddCmd('template_delete', TemplateDelete)
-  appcommands.AddCmd('template_get', TemplateGet)
-  appcommands.AddCmd('template_insert', TemplateInsert)
-  appcommands.AddCmd('template_list', TemplateList)
-  appcommands.AddCmd('template_patch', TemplatePatch)
-  appcommands.AddCmd('template_update', TemplateUpdate)
-
-  apitools_base_cli.SetupLogger()
-  if hasattr(appcommands, 'SetDefaultCommand'):
-    appcommands.SetDefaultCommand('pyshell')
-
-
-run_main = apitools_base_cli.run_main
-
-if __name__ == '__main__':
-  appcommands.Run()
diff --git a/samples/iam_sample/iam_v1/iam_v1.py b/samples/iam_sample/iam_v1/iam_v1.py
deleted file mode 100644
index da9750e..0000000
--- a/samples/iam_sample/iam_v1/iam_v1.py
+++ /dev/null
@@ -1,921 +0,0 @@
-#!/usr/bin/env python
-"""CLI for iam, version v1."""
-# NOTE: This file is autogenerated and should not be edited by hand.
-
-import code
-import os
-import platform
-import sys
-
-from apitools.base.protorpclite import message_types
-from apitools.base.protorpclite import messages
-
-from google.apputils import appcommands
-import gflags as flags
-
-import apitools.base.py as apitools_base
-from apitools.base.py import cli as apitools_base_cli
-import iam_v1_client as client_lib
-import iam_v1_messages as messages
-
-
-def _DeclareIamFlags():
-  """Declare global flags in an idempotent way."""
-  if 'api_endpoint' in flags.FLAGS:
-    return
-  flags.DEFINE_string(
-      'api_endpoint',
-      u'https://iam.googleapis.com/',
-      'URL of the API endpoint to use.',
-      short_name='iam_url')
-  flags.DEFINE_string(
-      'history_file',
-      u'~/.iam.v1.history',
-      'File with interactive shell history.')
-  flags.DEFINE_multistring(
-      'add_header', [],
-      'Additional http headers (as key=value strings). '
-      'Can be specified multiple times.')
-  flags.DEFINE_string(
-      'service_account_json_keyfile', '',
-      'Filename for a JSON service account key downloaded'
-      ' from the Developer Console.')
-  flags.DEFINE_enum(
-      'f__xgafv',
-      u'_1',
-      [u'_1', u'_2'],
-      u'V1 error format.')
-  flags.DEFINE_string(
-      'access_token',
-      None,
-      u'OAuth access token.')
-  flags.DEFINE_enum(
-      'alt',
-      u'json',
-      [u'json', u'media', u'proto'],
-      u'Data format for response.')
-  flags.DEFINE_string(
-      'bearer_token',
-      None,
-      u'OAuth bearer token.')
-  flags.DEFINE_string(
-      'callback',
-      None,
-      u'JSONP')
-  flags.DEFINE_string(
-      'fields',
-      None,
-      u'Selector specifying which fields to include in a partial response.')
-  flags.DEFINE_string(
-      'key',
-      None,
-      u'API key. Your API key identifies your project and provides you with '
-      u'API access, quota, and reports. Required unless you provide an OAuth '
-      u'2.0 token.')
-  flags.DEFINE_string(
-      'oauth_token',
-      None,
-      u'OAuth 2.0 token for the current user.')
-  flags.DEFINE_boolean(
-      'pp',
-      'True',
-      u'Pretty-print response.')
-  flags.DEFINE_boolean(
-      'prettyPrint',
-      'True',
-      u'Returns response with indentations and line breaks.')
-  flags.DEFINE_string(
-      'quotaUser',
-      None,
-      u'Available to use for quota purposes for server-side applications. Can'
-      u' be any arbitrary string assigned to a user, but should not exceed 40'
-      u' characters.')
-  flags.DEFINE_string(
-      'trace',
-      None,
-      'A tracing token of the form "token:<tokenid>" to include in api '
-      'requests.')
-  flags.DEFINE_string(
-      'uploadType',
-      None,
-      u'Legacy upload protocol for media (e.g. "media", "multipart").')
-  flags.DEFINE_string(
-      'upload_protocol',
-      None,
-      u'Upload protocol for media (e.g. "raw", "multipart").')
-
-
-FLAGS = flags.FLAGS
-apitools_base_cli.DeclareBaseFlags()
-_DeclareIamFlags()
-
-
-def GetGlobalParamsFromFlags():
-  """Return a StandardQueryParameters based on flags."""
-  result = messages.StandardQueryParameters()
-  if FLAGS['f__xgafv'].present:
-    result.f__xgafv = messages.StandardQueryParameters.FXgafvValueValuesEnum(FLAGS.f__xgafv)
-  if FLAGS['access_token'].present:
-    result.access_token = FLAGS.access_token.decode('utf8')
-  if FLAGS['alt'].present:
-    result.alt = messages.StandardQueryParameters.AltValueValuesEnum(FLAGS.alt)
-  if FLAGS['bearer_token'].present:
-    result.bearer_token = FLAGS.bearer_token.decode('utf8')
-  if FLAGS['callback'].present:
-    result.callback = FLAGS.callback.decode('utf8')
-  if FLAGS['fields'].present:
-    result.fields = FLAGS.fields.decode('utf8')
-  if FLAGS['key'].present:
-    result.key = FLAGS.key.decode('utf8')
-  if FLAGS['oauth_token'].present:
-    result.oauth_token = FLAGS.oauth_token.decode('utf8')
-  if FLAGS['pp'].present:
-    result.pp = FLAGS.pp
-  if FLAGS['prettyPrint'].present:
-    result.prettyPrint = FLAGS.prettyPrint
-  if FLAGS['quotaUser'].present:
-    result.quotaUser = FLAGS.quotaUser.decode('utf8')
-  if FLAGS['trace'].present:
-    result.trace = FLAGS.trace.decode('utf8')
-  if FLAGS['uploadType'].present:
-    result.uploadType = FLAGS.uploadType.decode('utf8')
-  if FLAGS['upload_protocol'].present:
-    result.upload_protocol = FLAGS.upload_protocol.decode('utf8')
-  return result
-
-
-def GetClientFromFlags():
-  """Return a client object, configured from flags."""
-  log_request = FLAGS.log_request or FLAGS.log_request_response
-  log_response = FLAGS.log_response or FLAGS.log_request_response
-  api_endpoint = apitools_base.NormalizeApiEndpoint(FLAGS.api_endpoint)
-  additional_http_headers = dict(x.split('=', 1) for x in FLAGS.add_header)
-  credentials_args = {
-      'service_account_json_keyfile': os.path.expanduser(FLAGS.service_account_json_keyfile)
-  }
-  try:
-    client = client_lib.IamV1(
-        api_endpoint, log_request=log_request,
-        log_response=log_response,
-        credentials_args=credentials_args,
-        additional_http_headers=additional_http_headers)
-  except apitools_base.CredentialsError as e:
-    print 'Error creating credentials: %s' % e
-    sys.exit(1)
-  return client
-
-
-class PyShell(appcommands.Cmd):
-
-  def Run(self, _):
-    """Run an interactive python shell with the client."""
-    client = GetClientFromFlags()
-    params = GetGlobalParamsFromFlags()
-    for field in params.all_fields():
-      value = params.get_assigned_value(field.name)
-      if value != field.default:
-        client.AddGlobalParam(field.name, value)
-    banner = """
-           == iam interactive console ==
-                 client: a iam client
-          apitools_base: base apitools module
-         messages: the generated messages module
-    """
-    local_vars = {
-        'apitools_base': apitools_base,
-        'client': client,
-        'client_lib': client_lib,
-        'messages': messages,
-    }
-    if platform.system() == 'Linux':
-      console = apitools_base_cli.ConsoleWithReadline(
-          local_vars, histfile=FLAGS.history_file)
-    else:
-      console = code.InteractiveConsole(local_vars)
-    try:
-      console.interact(banner)
-    except SystemExit as e:
-      return e.code
-
-
-class IamPoliciesGetPolicyDetails(apitools_base_cli.NewCmd):
-  """Command wrapping iamPolicies.GetPolicyDetails."""
-
-  usage = """iamPolicies_getPolicyDetails"""
-
-  def __init__(self, name, fv):
-    super(IamPoliciesGetPolicyDetails, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'fullResourcePath',
-        None,
-        u'REQUIRED: The full resource path of the current policy being '
-        u'requested, e.g., `//dataflow.googleapis.com/projects/../jobs/..`.',
-        flag_values=fv)
-    flags.DEFINE_integer(
-        'pageSize',
-        None,
-        u'Limit on the number of policies to include in the response. Further'
-        u' accounts can subsequently be obtained by including the '
-        u'GetPolicyDetailsResponse.next_page_token in a subsequent request. '
-        u'If zero, the default page size 20 will be used. Must be given a '
-        u'value in range [0, 100], otherwise an invalid argument error will '
-        u'be returned.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        u'Optional pagination token returned in an earlier '
-        u'GetPolicyDetailsResponse.next_page_token response.',
-        flag_values=fv)
-
-  def RunWithArgs(self):
-    """Returns the current IAM policy and the policies on the inherited
-    resources that the user has access to.
-
-    Flags:
-      fullResourcePath: REQUIRED: The full resource path of the current policy
-        being requested, e.g.,
-        `//dataflow.googleapis.com/projects/../jobs/..`.
-      pageSize: Limit on the number of policies to include in the response.
-        Further accounts can subsequently be obtained by including the
-        GetPolicyDetailsResponse.next_page_token in a subsequent request. If
-        zero, the default page size 20 will be used. Must be given a value in
-        range [0, 100], otherwise an invalid argument error will be returned.
-      pageToken: Optional pagination token returned in an earlier
-        GetPolicyDetailsResponse.next_page_token response.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.GetPolicyDetailsRequest(
-        )
-    if FLAGS['fullResourcePath'].present:
-      request.fullResourcePath = FLAGS.fullResourcePath.decode('utf8')
-    if FLAGS['pageSize'].present:
-      request.pageSize = FLAGS.pageSize
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    result = client.iamPolicies.GetPolicyDetails(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ProjectsServiceAccountsCreate(apitools_base_cli.NewCmd):
-  """Command wrapping projects_serviceAccounts.Create."""
-
-  usage = """projects_serviceAccounts_create <name>"""
-
-  def __init__(self, name, fv):
-    super(ProjectsServiceAccountsCreate, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'createServiceAccountRequest',
-        None,
-        u'A CreateServiceAccountRequest resource to be passed as the request '
-        u'body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, name):
-    """Creates a ServiceAccount and returns it.
-
-    Args:
-      name: Required. The resource name of the project associated with the
-        service accounts, such as `projects/my-project-123`.
-
-    Flags:
-      createServiceAccountRequest: A CreateServiceAccountRequest resource to
-        be passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.IamProjectsServiceAccountsCreateRequest(
-        name=name.decode('utf8'),
-        )
-    if FLAGS['createServiceAccountRequest'].present:
-      request.createServiceAccountRequest = apitools_base.JsonToMessage(messages.CreateServiceAccountRequest, FLAGS.createServiceAccountRequest)
-    result = client.projects_serviceAccounts.Create(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ProjectsServiceAccountsDelete(apitools_base_cli.NewCmd):
-  """Command wrapping projects_serviceAccounts.Delete."""
-
-  usage = """projects_serviceAccounts_delete <name>"""
-
-  def __init__(self, name, fv):
-    super(ProjectsServiceAccountsDelete, self).__init__(name, fv)
-
-  def RunWithArgs(self, name):
-    """Deletes a ServiceAccount.
-
-    Args:
-      name: The resource name of the service account in the following format:
-        `projects/{project}/serviceAccounts/{account}`. Using `-` as a
-        wildcard for the project will infer the project from the account. The
-        `account` value can be the `email` address or the `unique_id` of the
-        service account.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.IamProjectsServiceAccountsDeleteRequest(
-        name=name.decode('utf8'),
-        )
-    result = client.projects_serviceAccounts.Delete(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ProjectsServiceAccountsGet(apitools_base_cli.NewCmd):
-  """Command wrapping projects_serviceAccounts.Get."""
-
-  usage = """projects_serviceAccounts_get <name>"""
-
-  def __init__(self, name, fv):
-    super(ProjectsServiceAccountsGet, self).__init__(name, fv)
-
-  def RunWithArgs(self, name):
-    """Gets a ServiceAccount.
-
-    Args:
-      name: The resource name of the service account in the following format:
-        `projects/{project}/serviceAccounts/{account}`. Using `-` as a
-        wildcard for the project will infer the project from the account. The
-        `account` value can be the `email` address or the `unique_id` of the
-        service account.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.IamProjectsServiceAccountsGetRequest(
-        name=name.decode('utf8'),
-        )
-    result = client.projects_serviceAccounts.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ProjectsServiceAccountsGetIamPolicy(apitools_base_cli.NewCmd):
-  """Command wrapping projects_serviceAccounts.GetIamPolicy."""
-
-  usage = """projects_serviceAccounts_getIamPolicy <resource>"""
-
-  def __init__(self, name, fv):
-    super(ProjectsServiceAccountsGetIamPolicy, self).__init__(name, fv)
-
-  def RunWithArgs(self, resource):
-    """Returns the IAM access control policy for specified IAM resource.
-
-    Args:
-      resource: REQUIRED: The resource for which the policy is being
-        requested. `resource` is usually specified as a path, such as
-        `projects/*project*/zones/*zone*/disks/*disk*`.  The format for the
-        path specified in this value is resource specific and is specified in
-        the `getIamPolicy` documentation.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.IamProjectsServiceAccountsGetIamPolicyRequest(
-        resource=resource.decode('utf8'),
-        )
-    result = client.projects_serviceAccounts.GetIamPolicy(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ProjectsServiceAccountsList(apitools_base_cli.NewCmd):
-  """Command wrapping projects_serviceAccounts.List."""
-
-  usage = """projects_serviceAccounts_list <name>"""
-
-  def __init__(self, name, fv):
-    super(ProjectsServiceAccountsList, self).__init__(name, fv)
-    flags.DEFINE_integer(
-        'pageSize',
-        None,
-        u'Optional limit on the number of service accounts to include in the '
-        u'response. Further accounts can subsequently be obtained by '
-        u'including the ListServiceAccountsResponse.next_page_token in a '
-        u'subsequent request.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        u'Optional pagination token returned in an earlier '
-        u'ListServiceAccountsResponse.next_page_token.',
-        flag_values=fv)
-    flags.DEFINE_boolean(
-        'removeDeletedServiceAccounts',
-        None,
-        u'Do not list service accounts deleted from Gaia. <b><font '
-        u'color="red">DO NOT INCLUDE IN EXTERNAL DOCUMENTATION</font></b>.',
-        flag_values=fv)
-
-  def RunWithArgs(self, name):
-    """Lists ServiceAccounts for a project.
-
-    Args:
-      name: Required. The resource name of the project associated with the
-        service accounts, such as `projects/my-project-123`.
-
-    Flags:
-      pageSize: Optional limit on the number of service accounts to include in
-        the response. Further accounts can subsequently be obtained by
-        including the ListServiceAccountsResponse.next_page_token in a
-        subsequent request.
-      pageToken: Optional pagination token returned in an earlier
-        ListServiceAccountsResponse.next_page_token.
-      removeDeletedServiceAccounts: Do not list service accounts deleted from
-        Gaia. <b><font color="red">DO NOT INCLUDE IN EXTERNAL
-        DOCUMENTATION</font></b>.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.IamProjectsServiceAccountsListRequest(
-        name=name.decode('utf8'),
-        )
-    if FLAGS['pageSize'].present:
-      request.pageSize = FLAGS.pageSize
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    if FLAGS['removeDeletedServiceAccounts'].present:
-      request.removeDeletedServiceAccounts = FLAGS.removeDeletedServiceAccounts
-    result = client.projects_serviceAccounts.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ProjectsServiceAccountsSetIamPolicy(apitools_base_cli.NewCmd):
-  """Command wrapping projects_serviceAccounts.SetIamPolicy."""
-
-  usage = """projects_serviceAccounts_setIamPolicy <resource>"""
-
-  def __init__(self, name, fv):
-    super(ProjectsServiceAccountsSetIamPolicy, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'setIamPolicyRequest',
-        None,
-        u'A SetIamPolicyRequest resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, resource):
-    """Sets the IAM access control policy for the specified IAM resource.
-
-    Args:
-      resource: REQUIRED: The resource for which the policy is being
-        specified. `resource` is usually specified as a path, such as
-        `projects/*project*/zones/*zone*/disks/*disk*`.  The format for the
-        path specified in this value is resource specific and is specified in
-        the `setIamPolicy` documentation.
-
-    Flags:
-      setIamPolicyRequest: A SetIamPolicyRequest resource to be passed as the
-        request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.IamProjectsServiceAccountsSetIamPolicyRequest(
-        resource=resource.decode('utf8'),
-        )
-    if FLAGS['setIamPolicyRequest'].present:
-      request.setIamPolicyRequest = apitools_base.JsonToMessage(messages.SetIamPolicyRequest, FLAGS.setIamPolicyRequest)
-    result = client.projects_serviceAccounts.SetIamPolicy(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ProjectsServiceAccountsSignBlob(apitools_base_cli.NewCmd):
-  """Command wrapping projects_serviceAccounts.SignBlob."""
-
-  usage = """projects_serviceAccounts_signBlob <name>"""
-
-  def __init__(self, name, fv):
-    super(ProjectsServiceAccountsSignBlob, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'signBlobRequest',
-        None,
-        u'A SignBlobRequest resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, name):
-    """Signs a blob using a service account's system-managed private key.
-
-    Args:
-      name: The resource name of the service account in the following format:
-        `projects/{project}/serviceAccounts/{account}`. Using `-` as a
-        wildcard for the project will infer the project from the account. The
-        `account` value can be the `email` address or the `unique_id` of the
-        service account.
-
-    Flags:
-      signBlobRequest: A SignBlobRequest resource to be passed as the request
-        body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.IamProjectsServiceAccountsSignBlobRequest(
-        name=name.decode('utf8'),
-        )
-    if FLAGS['signBlobRequest'].present:
-      request.signBlobRequest = apitools_base.JsonToMessage(messages.SignBlobRequest, FLAGS.signBlobRequest)
-    result = client.projects_serviceAccounts.SignBlob(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ProjectsServiceAccountsSignJwt(apitools_base_cli.NewCmd):
-  """Command wrapping projects_serviceAccounts.SignJwt."""
-
-  usage = """projects_serviceAccounts_signJwt <name>"""
-
-  def __init__(self, name, fv):
-    super(ProjectsServiceAccountsSignJwt, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'signJwtRequest',
-        None,
-        u'A SignJwtRequest resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, name):
-    """Signs a JWT using a service account's system-managed private key.  If
-    no `exp` (expiry) time is contained in the claims, we will provide an
-    expiry of one hour in the future. If an expiry of more than one hour in
-    the future is requested, the request will fail.
-
-    Args:
-      name: The resource name of the service account in the following format:
-        `projects/{project}/serviceAccounts/{account}`. Using `-` as a
-        wildcard for the project will infer the project from the account. The
-        `account` value can be the `email` address or the `unique_id` of the
-        service account.
-
-    Flags:
-      signJwtRequest: A SignJwtRequest resource to be passed as the request
-        body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.IamProjectsServiceAccountsSignJwtRequest(
-        name=name.decode('utf8'),
-        )
-    if FLAGS['signJwtRequest'].present:
-      request.signJwtRequest = apitools_base.JsonToMessage(messages.SignJwtRequest, FLAGS.signJwtRequest)
-    result = client.projects_serviceAccounts.SignJwt(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ProjectsServiceAccountsTestIamPermissions(apitools_base_cli.NewCmd):
-  """Command wrapping projects_serviceAccounts.TestIamPermissions."""
-
-  usage = """projects_serviceAccounts_testIamPermissions <resource>"""
-
-  def __init__(self, name, fv):
-    super(ProjectsServiceAccountsTestIamPermissions, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'testIamPermissionsRequest',
-        None,
-        u'A TestIamPermissionsRequest resource to be passed as the request '
-        u'body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, resource):
-    """Tests the specified permissions against the IAM access control policy
-    for the specified IAM resource.
-
-    Args:
-      resource: REQUIRED: The resource for which the policy detail is being
-        requested. `resource` is usually specified as a path, such as
-        `projects/*project*/zones/*zone*/disks/*disk*`.  The format for the
-        path specified in this value is resource specific and is specified in
-        the `testIamPermissions` documentation.
-
-    Flags:
-      testIamPermissionsRequest: A TestIamPermissionsRequest resource to be
-        passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.IamProjectsServiceAccountsTestIamPermissionsRequest(
-        resource=resource.decode('utf8'),
-        )
-    if FLAGS['testIamPermissionsRequest'].present:
-      request.testIamPermissionsRequest = apitools_base.JsonToMessage(messages.TestIamPermissionsRequest, FLAGS.testIamPermissionsRequest)
-    result = client.projects_serviceAccounts.TestIamPermissions(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ProjectsServiceAccountsUpdate(apitools_base_cli.NewCmd):
-  """Command wrapping projects_serviceAccounts.Update."""
-
-  usage = """projects_serviceAccounts_update <name>"""
-
-  def __init__(self, name, fv):
-    super(ProjectsServiceAccountsUpdate, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'description',
-        None,
-        u'Optional. A user-specified opaque description of the service '
-        u'account.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'displayName',
-        None,
-        u'Optional. A user-specified description of the service account.  '
-        u'Must be fewer than 100 UTF-8 bytes.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'email',
-        None,
-        u'@OutputOnly The email address of the service account.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'etag',
-        None,
-        u'Used to perform a consistent read-modify-write.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'oauth2ClientId',
-        None,
-        u'@OutputOnly. The OAuth2 client id for the service account. This is '
-        u'used in conjunction with the OAuth2 clientconfig API to make three '
-        u'legged OAuth2 (3LO) flows to access the data of Google users.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'projectId',
-        None,
-        u'@OutputOnly The id of the project that owns the service account.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'uniqueId',
-        None,
-        u'@OutputOnly The unique and stable id of the service account.',
-        flag_values=fv)
-
-  def RunWithArgs(self, name):
-    """Updates a ServiceAccount.  Currently, only the following fields are
-    updatable: `display_name` . The `etag` is mandatory.
-
-    Args:
-      name: The resource name of the service account in the following format:
-        `projects/{project}/serviceAccounts/{account}`.  Requests using `-` as
-        a wildcard for the project will infer the project from the `account`
-        and the `account` value can be the `email` address or the `unique_id`
-        of the service account.  In responses the resource name will always be
-        in the format `projects/{project}/serviceAccounts/{email}`.
-
-    Flags:
-      description: Optional. A user-specified opaque description of the
-        service account.
-      displayName: Optional. A user-specified description of the service
-        account.  Must be fewer than 100 UTF-8 bytes.
-      email: @OutputOnly The email address of the service account.
-      etag: Used to perform a consistent read-modify-write.
-      oauth2ClientId: @OutputOnly. The OAuth2 client id for the service
-        account. This is used in conjunction with the OAuth2 clientconfig API
-        to make three legged OAuth2 (3LO) flows to access the data of Google
-        users.
-      projectId: @OutputOnly The id of the project that owns the service
-        account.
-      uniqueId: @OutputOnly The unique and stable id of the service account.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServiceAccount(
-        name=name.decode('utf8'),
-        )
-    if FLAGS['description'].present:
-      request.description = FLAGS.description.decode('utf8')
-    if FLAGS['displayName'].present:
-      request.displayName = FLAGS.displayName.decode('utf8')
-    if FLAGS['email'].present:
-      request.email = FLAGS.email.decode('utf8')
-    if FLAGS['etag'].present:
-      request.etag = FLAGS.etag
-    if FLAGS['oauth2ClientId'].present:
-      request.oauth2ClientId = FLAGS.oauth2ClientId.decode('utf8')
-    if FLAGS['projectId'].present:
-      request.projectId = FLAGS.projectId.decode('utf8')
-    if FLAGS['uniqueId'].present:
-      request.uniqueId = FLAGS.uniqueId.decode('utf8')
-    result = client.projects_serviceAccounts.Update(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ProjectsServiceAccountsKeysCreate(apitools_base_cli.NewCmd):
-  """Command wrapping projects_serviceAccounts_keys.Create."""
-
-  usage = """projects_serviceAccounts_keys_create <name>"""
-
-  def __init__(self, name, fv):
-    super(ProjectsServiceAccountsKeysCreate, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'createServiceAccountKeyRequest',
-        None,
-        u'A CreateServiceAccountKeyRequest resource to be passed as the '
-        u'request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, name):
-    """Creates a ServiceAccountKey and returns it.
-
-    Args:
-      name: The resource name of the service account in the following format:
-        `projects/{project}/serviceAccounts/{account}`. Using `-` as a
-        wildcard for the project will infer the project from the account. The
-        `account` value can be the `email` address or the `unique_id` of the
-        service account.
-
-    Flags:
-      createServiceAccountKeyRequest: A CreateServiceAccountKeyRequest
-        resource to be passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.IamProjectsServiceAccountsKeysCreateRequest(
-        name=name.decode('utf8'),
-        )
-    if FLAGS['createServiceAccountKeyRequest'].present:
-      request.createServiceAccountKeyRequest = apitools_base.JsonToMessage(messages.CreateServiceAccountKeyRequest, FLAGS.createServiceAccountKeyRequest)
-    result = client.projects_serviceAccounts_keys.Create(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ProjectsServiceAccountsKeysDelete(apitools_base_cli.NewCmd):
-  """Command wrapping projects_serviceAccounts_keys.Delete."""
-
-  usage = """projects_serviceAccounts_keys_delete <name>"""
-
-  def __init__(self, name, fv):
-    super(ProjectsServiceAccountsKeysDelete, self).__init__(name, fv)
-
-  def RunWithArgs(self, name):
-    """Deletes a ServiceAccountKey.
-
-    Args:
-      name: The resource name of the service account key in the following
-        format: `projects/{project}/serviceAccounts/{account}/keys/{key}`.
-        Using `-` as a wildcard for the project will infer the project from
-        the account. The `account` value can be the `email` address or the
-        `unique_id` of the service account.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.IamProjectsServiceAccountsKeysDeleteRequest(
-        name=name.decode('utf8'),
-        )
-    result = client.projects_serviceAccounts_keys.Delete(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ProjectsServiceAccountsKeysGet(apitools_base_cli.NewCmd):
-  """Command wrapping projects_serviceAccounts_keys.Get."""
-
-  usage = """projects_serviceAccounts_keys_get <name>"""
-
-  def __init__(self, name, fv):
-    super(ProjectsServiceAccountsKeysGet, self).__init__(name, fv)
-    flags.DEFINE_enum(
-        'publicKeyType',
-        u'TYPE_NONE',
-        [u'TYPE_NONE', u'TYPE_X509_PEM_FILE', u'TYPE_RAW_PUBLIC_KEY'],
-        u'The output format of the public key requested. X509_PEM is the '
-        u'default output format.',
-        flag_values=fv)
-
-  def RunWithArgs(self, name):
-    """Gets the ServiceAccountKey by key id.
-
-    Args:
-      name: The resource name of the service account key in the following
-        format: `projects/{project}/serviceAccounts/{account}/keys/{key}`.
-        Using `-` as a wildcard for the project will infer the project from
-        the account. The `account` value can be the `email` address or the
-        `unique_id` of the service account.
-
-    Flags:
-      publicKeyType: The output format of the public key requested. X509_PEM
-        is the default output format.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.IamProjectsServiceAccountsKeysGetRequest(
-        name=name.decode('utf8'),
-        )
-    if FLAGS['publicKeyType'].present:
-      request.publicKeyType = messages.IamProjectsServiceAccountsKeysGetRequest.PublicKeyTypeValueValuesEnum(FLAGS.publicKeyType)
-    result = client.projects_serviceAccounts_keys.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ProjectsServiceAccountsKeysList(apitools_base_cli.NewCmd):
-  """Command wrapping projects_serviceAccounts_keys.List."""
-
-  usage = """projects_serviceAccounts_keys_list <name>"""
-
-  def __init__(self, name, fv):
-    super(ProjectsServiceAccountsKeysList, self).__init__(name, fv)
-    flags.DEFINE_enum(
-        'keyTypes',
-        u'KEY_TYPE_UNSPECIFIED',
-        [u'KEY_TYPE_UNSPECIFIED', u'USER_MANAGED', u'SYSTEM_MANAGED'],
-        u'Filters the types of keys the user wants to include in the list '
-        u'response. Duplicate key types are not allowed. If no key type is '
-        u'provided, all keys are returned.',
-        flag_values=fv)
-
-  def RunWithArgs(self, name):
-    """Lists ServiceAccountKeys.
-
-    Args:
-      name: The resource name of the service account in the following format:
-        `projects/{project}/serviceAccounts/{account}`.  Using `-` as a
-        wildcard for the project, will infer the project from the account. The
-        `account` value can be the `email` address or the `unique_id` of the
-        service account.
-
-    Flags:
-      keyTypes: Filters the types of keys the user wants to include in the
-        list response. Duplicate key types are not allowed. If no key type is
-        provided, all keys are returned.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.IamProjectsServiceAccountsKeysListRequest(
-        name=name.decode('utf8'),
-        )
-    if FLAGS['keyTypes'].present:
-      request.keyTypes = [messages.IamProjectsServiceAccountsKeysListRequest.KeyTypesValueValuesEnum(x) for x in FLAGS.keyTypes]
-    result = client.projects_serviceAccounts_keys.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class RolesQueryGrantableRoles(apitools_base_cli.NewCmd):
-  """Command wrapping roles.QueryGrantableRoles."""
-
-  usage = """roles_queryGrantableRoles"""
-
-  def __init__(self, name, fv):
-    super(RolesQueryGrantableRoles, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'fullResourceName',
-        None,
-        u'Required. The full resource name to query from the list of '
-        u'grantable roles.  The name follows the Google Cloud Platform '
-        u'resource format. For example, a Cloud Platform project with id `my-'
-        u'project` will be named '
-        u'`//cloudresourcemanager.googleapis.com/projects/my-project`.',
-        flag_values=fv)
-
-  def RunWithArgs(self):
-    """Queries roles that can be granted on a particular resource.
-
-    Flags:
-      fullResourceName: Required. The full resource name to query from the
-        list of grantable roles.  The name follows the Google Cloud Platform
-        resource format. For example, a Cloud Platform project with id `my-
-        project` will be named `//cloudresourcemanager.googleapis.com/projects
-        /my-project`.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.QueryGrantableRolesRequest(
-        )
-    if FLAGS['fullResourceName'].present:
-      request.fullResourceName = FLAGS.fullResourceName.decode('utf8')
-    result = client.roles.QueryGrantableRoles(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-def main(_):
-  appcommands.AddCmd('pyshell', PyShell)
-  appcommands.AddCmd('iamPolicies_getPolicyDetails', IamPoliciesGetPolicyDetails)
-  appcommands.AddCmd('projects_serviceAccounts_create', ProjectsServiceAccountsCreate)
-  appcommands.AddCmd('projects_serviceAccounts_delete', ProjectsServiceAccountsDelete)
-  appcommands.AddCmd('projects_serviceAccounts_get', ProjectsServiceAccountsGet)
-  appcommands.AddCmd('projects_serviceAccounts_getIamPolicy', ProjectsServiceAccountsGetIamPolicy)
-  appcommands.AddCmd('projects_serviceAccounts_list', ProjectsServiceAccountsList)
-  appcommands.AddCmd('projects_serviceAccounts_setIamPolicy', ProjectsServiceAccountsSetIamPolicy)
-  appcommands.AddCmd('projects_serviceAccounts_signBlob', ProjectsServiceAccountsSignBlob)
-  appcommands.AddCmd('projects_serviceAccounts_signJwt', ProjectsServiceAccountsSignJwt)
-  appcommands.AddCmd('projects_serviceAccounts_testIamPermissions', ProjectsServiceAccountsTestIamPermissions)
-  appcommands.AddCmd('projects_serviceAccounts_update', ProjectsServiceAccountsUpdate)
-  appcommands.AddCmd('projects_serviceAccounts_keys_create', ProjectsServiceAccountsKeysCreate)
-  appcommands.AddCmd('projects_serviceAccounts_keys_delete', ProjectsServiceAccountsKeysDelete)
-  appcommands.AddCmd('projects_serviceAccounts_keys_get', ProjectsServiceAccountsKeysGet)
-  appcommands.AddCmd('projects_serviceAccounts_keys_list', ProjectsServiceAccountsKeysList)
-  appcommands.AddCmd('roles_queryGrantableRoles', RolesQueryGrantableRoles)
-
-  apitools_base_cli.SetupLogger()
-  if hasattr(appcommands, 'SetDefaultCommand'):
-    appcommands.SetDefaultCommand('pyshell')
-
-
-run_main = apitools_base_cli.run_main
-
-if __name__ == '__main__':
-  appcommands.Run()
diff --git a/samples/servicemanagement_sample/servicemanagement_v1/servicemanagement_v1.py b/samples/servicemanagement_sample/servicemanagement_v1/servicemanagement_v1.py
deleted file mode 100644
index d1a4ab8..0000000
--- a/samples/servicemanagement_sample/servicemanagement_v1/servicemanagement_v1.py
+++ /dev/null
@@ -1,1520 +0,0 @@
-#!/usr/bin/env python
-"""CLI for servicemanagement, version v1."""
-# NOTE: This file is autogenerated and should not be edited by hand.
-
-import code
-import os
-import platform
-import sys
-
-from apitools.base.protorpclite import message_types
-from apitools.base.protorpclite import messages
-
-from google.apputils import appcommands
-import gflags as flags
-
-import apitools.base.py as apitools_base
-from apitools.base.py import cli as apitools_base_cli
-import servicemanagement_v1_client as client_lib
-import servicemanagement_v1_messages as messages
-
-
-def _DeclareServicemanagementFlags():
-  """Declare global flags in an idempotent way."""
-  if 'api_endpoint' in flags.FLAGS:
-    return
-  flags.DEFINE_string(
-      'api_endpoint',
-      u'https://servicemanagement.googleapis.com/',
-      'URL of the API endpoint to use.',
-      short_name='servicemanagement_url')
-  flags.DEFINE_string(
-      'history_file',
-      u'~/.servicemanagement.v1.history',
-      'File with interactive shell history.')
-  flags.DEFINE_multistring(
-      'add_header', [],
-      'Additional http headers (as key=value strings). '
-      'Can be specified multiple times.')
-  flags.DEFINE_string(
-      'service_account_json_keyfile', '',
-      'Filename for a JSON service account key downloaded'
-      ' from the Developer Console.')
-  flags.DEFINE_enum(
-      'f__xgafv',
-      u'_1',
-      [u'_1', u'_2'],
-      u'V1 error format.')
-  flags.DEFINE_string(
-      'access_token',
-      None,
-      u'OAuth access token.')
-  flags.DEFINE_enum(
-      'alt',
-      u'json',
-      [u'json', u'media', u'proto'],
-      u'Data format for response.')
-  flags.DEFINE_string(
-      'bearer_token',
-      None,
-      u'OAuth bearer token.')
-  flags.DEFINE_string(
-      'callback',
-      None,
-      u'JSONP')
-  flags.DEFINE_string(
-      'fields',
-      None,
-      u'Selector specifying which fields to include in a partial response.')
-  flags.DEFINE_string(
-      'key',
-      None,
-      u'API key. Your API key identifies your project and provides you with '
-      u'API access, quota, and reports. Required unless you provide an OAuth '
-      u'2.0 token.')
-  flags.DEFINE_string(
-      'oauth_token',
-      None,
-      u'OAuth 2.0 token for the current user.')
-  flags.DEFINE_boolean(
-      'pp',
-      'True',
-      u'Pretty-print response.')
-  flags.DEFINE_boolean(
-      'prettyPrint',
-      'True',
-      u'Returns response with indentations and line breaks.')
-  flags.DEFINE_string(
-      'quotaUser',
-      None,
-      u'Available to use for quota purposes for server-side applications. Can'
-      u' be any arbitrary string assigned to a user, but should not exceed 40'
-      u' characters.')
-  flags.DEFINE_string(
-      'trace',
-      None,
-      'A tracing token of the form "token:<tokenid>" to include in api '
-      'requests.')
-  flags.DEFINE_string(
-      'uploadType',
-      None,
-      u'Legacy upload protocol for media (e.g. "media", "multipart").')
-  flags.DEFINE_string(
-      'upload_protocol',
-      None,
-      u'Upload protocol for media (e.g. "raw", "multipart").')
-
-
-FLAGS = flags.FLAGS
-apitools_base_cli.DeclareBaseFlags()
-_DeclareServicemanagementFlags()
-
-
-def GetGlobalParamsFromFlags():
-  """Return a StandardQueryParameters based on flags."""
-  result = messages.StandardQueryParameters()
-  if FLAGS['f__xgafv'].present:
-    result.f__xgafv = messages.StandardQueryParameters.FXgafvValueValuesEnum(FLAGS.f__xgafv)
-  if FLAGS['access_token'].present:
-    result.access_token = FLAGS.access_token.decode('utf8')
-  if FLAGS['alt'].present:
-    result.alt = messages.StandardQueryParameters.AltValueValuesEnum(FLAGS.alt)
-  if FLAGS['bearer_token'].present:
-    result.bearer_token = FLAGS.bearer_token.decode('utf8')
-  if FLAGS['callback'].present:
-    result.callback = FLAGS.callback.decode('utf8')
-  if FLAGS['fields'].present:
-    result.fields = FLAGS.fields.decode('utf8')
-  if FLAGS['key'].present:
-    result.key = FLAGS.key.decode('utf8')
-  if FLAGS['oauth_token'].present:
-    result.oauth_token = FLAGS.oauth_token.decode('utf8')
-  if FLAGS['pp'].present:
-    result.pp = FLAGS.pp
-  if FLAGS['prettyPrint'].present:
-    result.prettyPrint = FLAGS.prettyPrint
-  if FLAGS['quotaUser'].present:
-    result.quotaUser = FLAGS.quotaUser.decode('utf8')
-  if FLAGS['trace'].present:
-    result.trace = FLAGS.trace.decode('utf8')
-  if FLAGS['uploadType'].present:
-    result.uploadType = FLAGS.uploadType.decode('utf8')
-  if FLAGS['upload_protocol'].present:
-    result.upload_protocol = FLAGS.upload_protocol.decode('utf8')
-  return result
-
-
-def GetClientFromFlags():
-  """Return a client object, configured from flags."""
-  log_request = FLAGS.log_request or FLAGS.log_request_response
-  log_response = FLAGS.log_response or FLAGS.log_request_response
-  api_endpoint = apitools_base.NormalizeApiEndpoint(FLAGS.api_endpoint)
-  additional_http_headers = dict(x.split('=', 1) for x in FLAGS.add_header)
-  credentials_args = {
-      'service_account_json_keyfile': os.path.expanduser(FLAGS.service_account_json_keyfile)
-  }
-  try:
-    client = client_lib.ServicemanagementV1(
-        api_endpoint, log_request=log_request,
-        log_response=log_response,
-        credentials_args=credentials_args,
-        additional_http_headers=additional_http_headers)
-  except apitools_base.CredentialsError as e:
-    print 'Error creating credentials: %s' % e
-    sys.exit(1)
-  return client
-
-
-class PyShell(appcommands.Cmd):
-
-  def Run(self, _):
-    """Run an interactive python shell with the client."""
-    client = GetClientFromFlags()
-    params = GetGlobalParamsFromFlags()
-    for field in params.all_fields():
-      value = params.get_assigned_value(field.name)
-      if value != field.default:
-        client.AddGlobalParam(field.name, value)
-    banner = """
-           == servicemanagement interactive console ==
-                 client: a servicemanagement client
-          apitools_base: base apitools module
-         messages: the generated messages module
-    """
-    local_vars = {
-        'apitools_base': apitools_base,
-        'client': client,
-        'client_lib': client_lib,
-        'messages': messages,
-    }
-    if platform.system() == 'Linux':
-      console = apitools_base_cli.ConsoleWithReadline(
-          local_vars, histfile=FLAGS.history_file)
-    else:
-      console = code.InteractiveConsole(local_vars)
-    try:
-      console.interact(banner)
-    except SystemExit as e:
-      return e.code
-
-
-class OperationsGet(apitools_base_cli.NewCmd):
-  """Command wrapping operations.Get."""
-
-  usage = """operations_get <operationsId>"""
-
-  def __init__(self, name, fv):
-    super(OperationsGet, self).__init__(name, fv)
-
-  def RunWithArgs(self, operationsId):
-    """Gets the latest state of a long-running operation.  Clients can use
-    this method to poll the operation result at intervals as recommended by
-    the API service.
-
-    Args:
-      operationsId: Part of `name`. The name of the operation resource.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementOperationsGetRequest(
-        operationsId=operationsId.decode('utf8'),
-        )
-    result = client.operations.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesConvertConfig(apitools_base_cli.NewCmd):
-  """Command wrapping services.ConvertConfig."""
-
-  usage = """services_convertConfig"""
-
-  def __init__(self, name, fv):
-    super(ServicesConvertConfig, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'configSpec',
-        None,
-        u'Input configuration For this version of API, the supported type is '
-        u'OpenApiSpec',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'openApiSpec',
-        None,
-        u'The OpenAPI specification for an API.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'serviceName',
-        None,
-        u'The service name to use for constructing the normalized service '
-        u'configuration equivalent of the provided configuration '
-        u'specification.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'swaggerSpec',
-        None,
-        u'The swagger specification for an API.',
-        flag_values=fv)
-
-  def RunWithArgs(self):
-    """DEPRECATED. `SubmitConfigSource` with `validate_only=true` will provide
-    config conversion moving forward.  Converts an API specification (e.g.
-    Swagger spec) to an equivalent `google.api.Service`.
-
-    Flags:
-      configSpec: Input configuration For this version of API, the supported
-        type is OpenApiSpec
-      openApiSpec: The OpenAPI specification for an API.
-      serviceName: The service name to use for constructing the normalized
-        service configuration equivalent of the provided configuration
-        specification.
-      swaggerSpec: The swagger specification for an API.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ConvertConfigRequest(
-        )
-    if FLAGS['configSpec'].present:
-      request.configSpec = apitools_base.JsonToMessage(messages.ConvertConfigRequest.ConfigSpecValue, FLAGS.configSpec)
-    if FLAGS['openApiSpec'].present:
-      request.openApiSpec = apitools_base.JsonToMessage(messages.OpenApiSpec, FLAGS.openApiSpec)
-    if FLAGS['serviceName'].present:
-      request.serviceName = FLAGS.serviceName.decode('utf8')
-    if FLAGS['swaggerSpec'].present:
-      request.swaggerSpec = apitools_base.JsonToMessage(messages.SwaggerSpec, FLAGS.swaggerSpec)
-    result = client.services.ConvertConfig(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesCreate(apitools_base_cli.NewCmd):
-  """Command wrapping services.Create."""
-
-  usage = """services_create"""
-
-  def __init__(self, name, fv):
-    super(ServicesCreate, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'configSource',
-        None,
-        u'User-supplied source configuration for the service. This is '
-        u'distinct from the generated configuration provided in '
-        u'`google.api.Service`. This is NOT populated on GetService calls at '
-        u'the moment. NOTE: Any upsert operation that contains both a '
-        u'service_config and a config_source is considered invalid and will '
-        u'result in an error being returned.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'generation',
-        None,
-        u'A server-assigned monotonically increasing number that changes '
-        u'whenever a mutation is made to the `ManagedService` or any of its '
-        u'components via the `ServiceManager` API.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'operations',
-        None,
-        u'Read-only view of pending operations affecting this resource, if '
-        u'requested.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'producerProjectId',
-        None,
-        u'ID of the project that produces and owns this service.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'projectSettings',
-        None,
-        u'Read-only view of settings for a particular consumer project, if '
-        u'requested.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'serviceConfig',
-        None,
-        u"The service's generated configuration.",
-        flag_values=fv)
-    flags.DEFINE_string(
-        'serviceName',
-        None,
-        u'The name of the service.  See the `ServiceManager` overview for '
-        u'naming requirements.  This name must match '
-        u'`google.api.Service.name` in the `service_config` field.',
-        flag_values=fv)
-
-  def RunWithArgs(self):
-    """Creates a new managed service.  Operation<response: ManagedService>
-
-    Flags:
-      configSource: User-supplied source configuration for the service. This
-        is distinct from the generated configuration provided in
-        `google.api.Service`. This is NOT populated on GetService calls at the
-        moment. NOTE: Any upsert operation that contains both a service_config
-        and a config_source is considered invalid and will result in an error
-        being returned.
-      generation: A server-assigned monotonically increasing number that
-        changes whenever a mutation is made to the `ManagedService` or any of
-        its components via the `ServiceManager` API.
-      operations: Read-only view of pending operations affecting this
-        resource, if requested.
-      producerProjectId: ID of the project that produces and owns this
-        service.
-      projectSettings: Read-only view of settings for a particular consumer
-        project, if requested.
-      serviceConfig: The service's generated configuration.
-      serviceName: The name of the service.  See the `ServiceManager` overview
-        for naming requirements.  This name must match
-        `google.api.Service.name` in the `service_config` field.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ManagedService(
-        )
-    if FLAGS['configSource'].present:
-      request.configSource = apitools_base.JsonToMessage(messages.ConfigSource, FLAGS.configSource)
-    if FLAGS['generation'].present:
-      request.generation = int(FLAGS.generation)
-    if FLAGS['operations'].present:
-      request.operations = [apitools_base.JsonToMessage(messages.Operation, x) for x in FLAGS.operations]
-    if FLAGS['producerProjectId'].present:
-      request.producerProjectId = FLAGS.producerProjectId.decode('utf8')
-    if FLAGS['projectSettings'].present:
-      request.projectSettings = apitools_base.JsonToMessage(messages.ProjectSettings, FLAGS.projectSettings)
-    if FLAGS['serviceConfig'].present:
-      request.serviceConfig = apitools_base.JsonToMessage(messages.Service, FLAGS.serviceConfig)
-    if FLAGS['serviceName'].present:
-      request.serviceName = FLAGS.serviceName.decode('utf8')
-    result = client.services.Create(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesDelete(apitools_base_cli.NewCmd):
-  """Command wrapping services.Delete."""
-
-  usage = """services_delete <serviceName>"""
-
-  def __init__(self, name, fv):
-    super(ServicesDelete, self).__init__(name, fv)
-
-  def RunWithArgs(self, serviceName):
-    """Deletes a managed service.  Operation<response: google.protobuf.Empty>
-
-    Args:
-      serviceName: The name of the service.  See the `ServiceManager` overview
-        for naming requirements.  For example: `example.googleapis.com`.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementServicesDeleteRequest(
-        serviceName=serviceName.decode('utf8'),
-        )
-    result = client.services.Delete(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesDisable(apitools_base_cli.NewCmd):
-  """Command wrapping services.Disable."""
-
-  usage = """services_disable <serviceName>"""
-
-  def __init__(self, name, fv):
-    super(ServicesDisable, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'disableServiceRequest',
-        None,
-        u'A DisableServiceRequest resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, serviceName):
-    """Disable a managed service for a project. Google Service Management will
-    only disable the managed service even if there are other services depend
-    on the managed service.  Operation<response: DisableServiceResponse>
-
-    Args:
-      serviceName: Name of the service to disable. Specifying an unknown
-        service name will cause the request to fail.
-
-    Flags:
-      disableServiceRequest: A DisableServiceRequest resource to be passed as
-        the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementServicesDisableRequest(
-        serviceName=serviceName.decode('utf8'),
-        )
-    if FLAGS['disableServiceRequest'].present:
-      request.disableServiceRequest = apitools_base.JsonToMessage(messages.DisableServiceRequest, FLAGS.disableServiceRequest)
-    result = client.services.Disable(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesEnable(apitools_base_cli.NewCmd):
-  """Command wrapping services.Enable."""
-
-  usage = """services_enable <serviceName>"""
-
-  def __init__(self, name, fv):
-    super(ServicesEnable, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'enableServiceRequest',
-        None,
-        u'A EnableServiceRequest resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, serviceName):
-    """Enable a managed service for a project with default setting. If the
-    managed service has dependencies, they will be enabled as well.
-    Operation<response: EnableServiceResponse>
-
-    Args:
-      serviceName: Name of the service to enable. Specifying an unknown
-        service name will cause the request to fail.
-
-    Flags:
-      enableServiceRequest: A EnableServiceRequest resource to be passed as
-        the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementServicesEnableRequest(
-        serviceName=serviceName.decode('utf8'),
-        )
-    if FLAGS['enableServiceRequest'].present:
-      request.enableServiceRequest = apitools_base.JsonToMessage(messages.EnableServiceRequest, FLAGS.enableServiceRequest)
-    result = client.services.Enable(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesGet(apitools_base_cli.NewCmd):
-  """Command wrapping services.Get."""
-
-  usage = """services_get <serviceName>"""
-
-  def __init__(self, name, fv):
-    super(ServicesGet, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'consumerProjectId',
-        None,
-        u'If project_settings is expanded, return settings for the specified '
-        u'consumer project.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'expand',
-        None,
-        u'Fields to expand in any results.  By default, the following fields '
-        u'are not present in the result: - `operations` - `project_settings` '
-        u'- `project_settings.operations` - `quota_usage` (It requires '
-        u'`project_settings`) - `historical_quota_usage` (It requires '
-        u'`project_settings`)',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'view',
-        u'PROJECT_SETTINGS_VIEW_UNSPECIFIED',
-        [u'PROJECT_SETTINGS_VIEW_UNSPECIFIED', u'CONSUMER_VIEW', u'PRODUCER_VIEW', u'ALL'],
-        u'If project_settings is expanded, request only fields for the '
-        u'specified view.',
-        flag_values=fv)
-
-  def RunWithArgs(self, serviceName):
-    """Gets a managed service. If the `consumer_project_id` is specified, the
-    project's settings for the specified service are also returned.
-
-    Args:
-      serviceName: The name of the service.  See the `ServiceManager` overview
-        for naming requirements.  For example: `example.googleapis.com`.
-
-    Flags:
-      consumerProjectId: If project_settings is expanded, return settings for
-        the specified consumer project.
-      expand: Fields to expand in any results.  By default, the following
-        fields are not present in the result: - `operations` -
-        `project_settings` - `project_settings.operations` - `quota_usage` (It
-        requires `project_settings`) - `historical_quota_usage` (It requires
-        `project_settings`)
-      view: If project_settings is expanded, request only fields for the
-        specified view.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementServicesGetRequest(
-        serviceName=serviceName.decode('utf8'),
-        )
-    if FLAGS['consumerProjectId'].present:
-      request.consumerProjectId = FLAGS.consumerProjectId.decode('utf8')
-    if FLAGS['expand'].present:
-      request.expand = FLAGS.expand.decode('utf8')
-    if FLAGS['view'].present:
-      request.view = messages.ServicemanagementServicesGetRequest.ViewValueValuesEnum(FLAGS.view)
-    result = client.services.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesGetAccessPolicy(apitools_base_cli.NewCmd):
-  """Command wrapping services.GetAccessPolicy."""
-
-  usage = """services_getAccessPolicy <serviceName>"""
-
-  def __init__(self, name, fv):
-    super(ServicesGetAccessPolicy, self).__init__(name, fv)
-
-  def RunWithArgs(self, serviceName):
-    """Producer method to retrieve current policy.
-
-    Args:
-      serviceName: The name of the service.  For example:
-        `example.googleapis.com`.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementServicesGetAccessPolicyRequest(
-        serviceName=serviceName.decode('utf8'),
-        )
-    result = client.services.GetAccessPolicy(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesGetConfig(apitools_base_cli.NewCmd):
-  """Command wrapping services.GetConfig."""
-
-  usage = """services_getConfig <serviceName>"""
-
-  def __init__(self, name, fv):
-    super(ServicesGetConfig, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'configId',
-        None,
-        u'The id of the service config resource. Optional. If it is not '
-        u'specified, the latest version of config will be returned.',
-        flag_values=fv)
-
-  def RunWithArgs(self, serviceName):
-    """Gets a service config (version) for a managed service. If `config_id`
-    is not specified, the latest service config will be returned.
-
-    Args:
-      serviceName: The name of the service.  See the `ServiceManager` overview
-        for naming requirements.  For example: `example.googleapis.com`.
-
-    Flags:
-      configId: The id of the service config resource. Optional. If it is not
-        specified, the latest version of config will be returned.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementServicesGetConfigRequest(
-        serviceName=serviceName.decode('utf8'),
-        )
-    if FLAGS['configId'].present:
-      request.configId = FLAGS.configId.decode('utf8')
-    result = client.services.GetConfig(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesList(apitools_base_cli.NewCmd):
-  """Command wrapping services.List."""
-
-  usage = """services_list"""
-
-  def __init__(self, name, fv):
-    super(ServicesList, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'category',
-        None,
-        u'Include services only in the specified category. Supported '
-        u'categories are servicemanagement.googleapis.com/categories/google-'
-        u'services or servicemanagement.googleapis.com/categories/play-games.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'consumerProjectId',
-        None,
-        u'Include services consumed by the specified project.  If '
-        u'project_settings is expanded, then this field controls which '
-        u'project project_settings is populated for.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'expand',
-        None,
-        u'Fields to expand in any results.  By default, the following fields '
-        u'are not fully included in list results: - `operations` - '
-        u'`project_settings` - `project_settings.operations` - `quota_usage` '
-        u'(It requires `project_settings`)',
-        flag_values=fv)
-    flags.DEFINE_integer(
-        'pageSize',
-        None,
-        u'Requested size of the next page of data.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        u'Token identifying which result to start with; returned by a '
-        u'previous list call.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'producerProjectId',
-        None,
-        u'Include services produced by the specified project.',
-        flag_values=fv)
-
-  def RunWithArgs(self):
-    """Lists all managed services. If the `consumer_project_id` is specified,
-    the project's settings for the specified service are also returned.
-
-    Flags:
-      category: Include services only in the specified category. Supported
-        categories are servicemanagement.googleapis.com/categories/google-
-        services or servicemanagement.googleapis.com/categories/play-games.
-      consumerProjectId: Include services consumed by the specified project.
-        If project_settings is expanded, then this field controls which
-        project project_settings is populated for.
-      expand: Fields to expand in any results.  By default, the following
-        fields are not fully included in list results: - `operations` -
-        `project_settings` - `project_settings.operations` - `quota_usage` (It
-        requires `project_settings`)
-      pageSize: Requested size of the next page of data.
-      pageToken: Token identifying which result to start with; returned by a
-        previous list call.
-      producerProjectId: Include services produced by the specified project.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementServicesListRequest(
-        )
-    if FLAGS['category'].present:
-      request.category = FLAGS.category.decode('utf8')
-    if FLAGS['consumerProjectId'].present:
-      request.consumerProjectId = FLAGS.consumerProjectId.decode('utf8')
-    if FLAGS['expand'].present:
-      request.expand = FLAGS.expand.decode('utf8')
-    if FLAGS['pageSize'].present:
-      request.pageSize = FLAGS.pageSize
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    if FLAGS['producerProjectId'].present:
-      request.producerProjectId = FLAGS.producerProjectId.decode('utf8')
-    result = client.services.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesPatch(apitools_base_cli.NewCmd):
-  """Command wrapping services.Patch."""
-
-  usage = """services_patch <serviceName>"""
-
-  def __init__(self, name, fv):
-    super(ServicesPatch, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'managedService',
-        None,
-        u'A ManagedService resource to be passed as the request body.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'updateMask',
-        None,
-        u'A mask specifying which fields to update.',
-        flag_values=fv)
-
-  def RunWithArgs(self, serviceName):
-    """Updates the specified subset of the configuration. If the specified
-    service does not exists the patch operation fails.  Operation<response:
-    ManagedService>
-
-    Args:
-      serviceName: The name of the service.  See the `ServiceManager` overview
-        for naming requirements.  For example: `example.googleapis.com`.
-
-    Flags:
-      managedService: A ManagedService resource to be passed as the request
-        body.
-      updateMask: A mask specifying which fields to update.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementServicesPatchRequest(
-        serviceName=serviceName.decode('utf8'),
-        )
-    if FLAGS['managedService'].present:
-      request.managedService = apitools_base.JsonToMessage(messages.ManagedService, FLAGS.managedService)
-    if FLAGS['updateMask'].present:
-      request.updateMask = FLAGS.updateMask.decode('utf8')
-    result = client.services.Patch(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesPatchConfig(apitools_base_cli.NewCmd):
-  """Command wrapping services.PatchConfig."""
-
-  usage = """services_patchConfig <serviceName>"""
-
-  def __init__(self, name, fv):
-    super(ServicesPatchConfig, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'service',
-        None,
-        u'A Service resource to be passed as the request body.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'updateMask',
-        None,
-        u'A mask specifying which fields to update.',
-        flag_values=fv)
-
-  def RunWithArgs(self, serviceName):
-    """Updates the specified subset of the service resource. Equivalent to
-    calling `PatchService` with only the `service_config` field updated.
-    Operation<response: google.api.Service>
-
-    Args:
-      serviceName: The name of the service.  See the `ServiceManager` overview
-        for naming requirements.  For example: `example.googleapis.com`.
-
-    Flags:
-      service: A Service resource to be passed as the request body.
-      updateMask: A mask specifying which fields to update.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementServicesPatchConfigRequest(
-        serviceName=serviceName.decode('utf8'),
-        )
-    if FLAGS['service'].present:
-      request.service = apitools_base.JsonToMessage(messages.Service, FLAGS.service)
-    if FLAGS['updateMask'].present:
-      request.updateMask = FLAGS.updateMask.decode('utf8')
-    result = client.services.PatchConfig(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesUpdate(apitools_base_cli.NewCmd):
-  """Command wrapping services.Update."""
-
-  usage = """services_update <serviceName>"""
-
-  def __init__(self, name, fv):
-    super(ServicesUpdate, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'managedService',
-        None,
-        u'A ManagedService resource to be passed as the request body.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'updateMask',
-        None,
-        u'A mask specifying which fields to update. Update mask has been '
-        u'deprecated on UpdateService service method. Please use PatchService'
-        u' method instead to do partial updates.',
-        flag_values=fv)
-
-  def RunWithArgs(self, serviceName):
-    """Updates the configuration of a service.  If the specified service does
-    not already exist, then it is created.  Operation<response:
-    ManagedService>
-
-    Args:
-      serviceName: The name of the service.  See the `ServiceManager` overview
-        for naming requirements.  For example: `example.googleapis.com`.
-
-    Flags:
-      managedService: A ManagedService resource to be passed as the request
-        body.
-      updateMask: A mask specifying which fields to update. Update mask has
-        been deprecated on UpdateService service method. Please use
-        PatchService method instead to do partial updates.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementServicesUpdateRequest(
-        serviceName=serviceName.decode('utf8'),
-        )
-    if FLAGS['managedService'].present:
-      request.managedService = apitools_base.JsonToMessage(messages.ManagedService, FLAGS.managedService)
-    if FLAGS['updateMask'].present:
-      request.updateMask = FLAGS.updateMask.decode('utf8')
-    result = client.services.Update(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesUpdateAccessPolicy(apitools_base_cli.NewCmd):
-  """Command wrapping services.UpdateAccessPolicy."""
-
-  usage = """services_updateAccessPolicy <serviceName>"""
-
-  def __init__(self, name, fv):
-    super(ServicesUpdateAccessPolicy, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'accessList',
-        None,
-        u'ACL for access to the unrestricted surface of the service.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'visibilityLabelAccessLists',
-        None,
-        u'ACLs for access to restricted parts of the service.  The map key is'
-        u' the visibility label that is being controlled.  Note that access '
-        u'to any label also implies access to the unrestricted surface.',
-        flag_values=fv)
-
-  def RunWithArgs(self, serviceName):
-    """Producer method to update the current policy.  This method will return
-    an error if the policy is too large (more than 50 entries across all
-    lists).
-
-    Args:
-      serviceName: The service protected by this policy.
-
-    Flags:
-      accessList: ACL for access to the unrestricted surface of the service.
-      visibilityLabelAccessLists: ACLs for access to restricted parts of the
-        service.  The map key is the visibility label that is being
-        controlled.  Note that access to any label also implies access to the
-        unrestricted surface.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServiceAccessPolicy(
-        serviceName=serviceName.decode('utf8'),
-        )
-    if FLAGS['accessList'].present:
-      request.accessList = apitools_base.JsonToMessage(messages.ServiceAccessList, FLAGS.accessList)
-    if FLAGS['visibilityLabelAccessLists'].present:
-      request.visibilityLabelAccessLists = apitools_base.JsonToMessage(messages.ServiceAccessPolicy.VisibilityLabelAccessListsValue, FLAGS.visibilityLabelAccessLists)
-    result = client.services.UpdateAccessPolicy(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesUpdateConfig(apitools_base_cli.NewCmd):
-  """Command wrapping services.UpdateConfig."""
-
-  usage = """services_updateConfig <serviceName>"""
-
-  def __init__(self, name, fv):
-    super(ServicesUpdateConfig, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'service',
-        None,
-        u'A Service resource to be passed as the request body.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'updateMask',
-        None,
-        u'A mask specifying which fields to update. Update mask has been '
-        u'deprecated on UpdateServiceConfig service method. Please use '
-        u'PatchServiceConfig method instead to do partial updates.',
-        flag_values=fv)
-
-  def RunWithArgs(self, serviceName):
-    """Updates the specified subset of the service resource. Equivalent to
-    calling `UpdateService` with only the `service_config` field updated.
-    Operation<response: google.api.Service>
-
-    Args:
-      serviceName: The name of the service.  See the `ServiceManager` overview
-        for naming requirements.  For example: `example.googleapis.com`.
-
-    Flags:
-      service: A Service resource to be passed as the request body.
-      updateMask: A mask specifying which fields to update. Update mask has
-        been deprecated on UpdateServiceConfig service method. Please use
-        PatchServiceConfig method instead to do partial updates.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementServicesUpdateConfigRequest(
-        serviceName=serviceName.decode('utf8'),
-        )
-    if FLAGS['service'].present:
-      request.service = apitools_base.JsonToMessage(messages.Service, FLAGS.service)
-    if FLAGS['updateMask'].present:
-      request.updateMask = FLAGS.updateMask.decode('utf8')
-    result = client.services.UpdateConfig(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesAccessPolicyQuery(apitools_base_cli.NewCmd):
-  """Command wrapping services_accessPolicy.Query."""
-
-  usage = """services_accessPolicy_query <serviceName>"""
-
-  def __init__(self, name, fv):
-    super(ServicesAccessPolicyQuery, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'userEmail',
-        None,
-        u'The user to query access for.',
-        flag_values=fv)
-
-  def RunWithArgs(self, serviceName):
-    """Method to query the accessibility of a service and any associated
-    visibility labels for a specified user.  Members of the producer project
-    may call this method and specify any user.  Any user may call this method,
-    but must specify their own email address. In this case the method will
-    return NOT_FOUND if the user has no access to the service.
-
-    Args:
-      serviceName: The service to query access for.
-
-    Flags:
-      userEmail: The user to query access for.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementServicesAccessPolicyQueryRequest(
-        serviceName=serviceName.decode('utf8'),
-        )
-    if FLAGS['userEmail'].present:
-      request.userEmail = FLAGS.userEmail.decode('utf8')
-    result = client.services_accessPolicy.Query(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesConfigsCreate(apitools_base_cli.NewCmd):
-  """Command wrapping services_configs.Create."""
-
-  usage = """services_configs_create <serviceName>"""
-
-  def __init__(self, name, fv):
-    super(ServicesConfigsCreate, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'service',
-        None,
-        u'A Service resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, serviceName):
-    """Creates a new service config (version) for a managed service. This
-    method only stores the service config, but does not apply the service
-    config to any backend services.
-
-    Args:
-      serviceName: The name of the service.  See the `ServiceManager` overview
-        for naming requirements.  For example: `example.googleapis.com`.
-
-    Flags:
-      service: A Service resource to be passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementServicesConfigsCreateRequest(
-        serviceName=serviceName.decode('utf8'),
-        )
-    if FLAGS['service'].present:
-      request.service = apitools_base.JsonToMessage(messages.Service, FLAGS.service)
-    result = client.services_configs.Create(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesConfigsGet(apitools_base_cli.NewCmd):
-  """Command wrapping services_configs.Get."""
-
-  usage = """services_configs_get <serviceName> <configId>"""
-
-  def __init__(self, name, fv):
-    super(ServicesConfigsGet, self).__init__(name, fv)
-
-  def RunWithArgs(self, serviceName, configId):
-    """Gets a service config (version) for a managed service. If `config_id`
-    is not specified, the latest service config will be returned.
-
-    Args:
-      serviceName: The name of the service.  See the `ServiceManager` overview
-        for naming requirements.  For example: `example.googleapis.com`.
-      configId: The id of the service config resource. Optional. If it is not
-        specified, the latest version of config will be returned.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementServicesConfigsGetRequest(
-        serviceName=serviceName.decode('utf8'),
-        configId=configId.decode('utf8'),
-        )
-    result = client.services_configs.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesConfigsList(apitools_base_cli.NewCmd):
-  """Command wrapping services_configs.List."""
-
-  usage = """services_configs_list <serviceName>"""
-
-  def __init__(self, name, fv):
-    super(ServicesConfigsList, self).__init__(name, fv)
-    flags.DEFINE_integer(
-        'pageSize',
-        None,
-        u'The max number of items to include in the response list.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        u'The token of the page to retrieve.',
-        flag_values=fv)
-
-  def RunWithArgs(self, serviceName):
-    """Lists the history of the service config for a managed service, from the
-    newest to the oldest.
-
-    Args:
-      serviceName: The name of the service.  See the `ServiceManager` overview
-        for naming requirements.  For example: `example.googleapis.com`.
-
-    Flags:
-      pageSize: The max number of items to include in the response list.
-      pageToken: The token of the page to retrieve.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementServicesConfigsListRequest(
-        serviceName=serviceName.decode('utf8'),
-        )
-    if FLAGS['pageSize'].present:
-      request.pageSize = FLAGS.pageSize
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    result = client.services_configs.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesConfigsSubmit(apitools_base_cli.NewCmd):
-  """Command wrapping services_configs.Submit."""
-
-  usage = """services_configs_submit <serviceName>"""
-
-  def __init__(self, name, fv):
-    super(ServicesConfigsSubmit, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'submitConfigSourceRequest',
-        None,
-        u'A SubmitConfigSourceRequest resource to be passed as the request '
-        u'body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, serviceName):
-    """Creates a new service config (version) for a managed service based on
-    user-supplied configuration sources files (for example: OpenAPI
-    Specification). This method stores the source configurations as well as
-    the generated service config. It does NOT apply the service config to any
-    backend services.  Operation<response: SubmitConfigSourceResponse>
-
-    Args:
-      serviceName: The name of the service.  See the `ServiceManager` overview
-        for naming requirements.  For example: `example.googleapis.com`.
-
-    Flags:
-      submitConfigSourceRequest: A SubmitConfigSourceRequest resource to be
-        passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementServicesConfigsSubmitRequest(
-        serviceName=serviceName.decode('utf8'),
-        )
-    if FLAGS['submitConfigSourceRequest'].present:
-      request.submitConfigSourceRequest = apitools_base.JsonToMessage(messages.SubmitConfigSourceRequest, FLAGS.submitConfigSourceRequest)
-    result = client.services_configs.Submit(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesCustomerSettingsGet(apitools_base_cli.NewCmd):
-  """Command wrapping services_customerSettings.Get."""
-
-  usage = """services_customerSettings_get <serviceName> <customerId>"""
-
-  def __init__(self, name, fv):
-    super(ServicesCustomerSettingsGet, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'expand',
-        None,
-        u'Fields to expand in any results.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'view',
-        u'PROJECT_SETTINGS_VIEW_UNSPECIFIED',
-        [u'PROJECT_SETTINGS_VIEW_UNSPECIFIED', u'CONSUMER_VIEW', u'PRODUCER_VIEW', u'ALL'],
-        u'Request only fields for the specified view.',
-        flag_values=fv)
-
-  def RunWithArgs(self, serviceName, customerId):
-    """Retrieves the settings that control the specified customer's usage of
-    the service.
-
-    Args:
-      serviceName: The name of the service.  See the `ServiceManager` overview
-        for naming requirements.  For example: `example.googleapis.com`. This
-        field is required.
-      customerId: ID for the customer. See the comment for
-        `CustomerSettings.customer_id` field of message for its format. This
-        field is required.
-
-    Flags:
-      expand: Fields to expand in any results.
-      view: Request only fields for the specified view.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementServicesCustomerSettingsGetRequest(
-        serviceName=serviceName.decode('utf8'),
-        customerId=customerId.decode('utf8'),
-        )
-    if FLAGS['expand'].present:
-      request.expand = FLAGS.expand.decode('utf8')
-    if FLAGS['view'].present:
-      request.view = messages.ServicemanagementServicesCustomerSettingsGetRequest.ViewValueValuesEnum(FLAGS.view)
-    result = client.services_customerSettings.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesCustomerSettingsPatch(apitools_base_cli.NewCmd):
-  """Command wrapping services_customerSettings.Patch."""
-
-  usage = """services_customerSettings_patch <serviceName> <customerId>"""
-
-  def __init__(self, name, fv):
-    super(ServicesCustomerSettingsPatch, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'customerSettings',
-        None,
-        u'A CustomerSettings resource to be passed as the request body.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'updateMask',
-        None,
-        u'The field mask specifying which fields are to be updated.',
-        flag_values=fv)
-
-  def RunWithArgs(self, serviceName, customerId):
-    """Updates specified subset of the settings that control the specified
-    customer's usage of the service.  Attempts to update a field not
-    controlled by the caller will result in an access denied error.
-    Operation<response: CustomerSettings>
-
-    Args:
-      serviceName: The name of the service.  See the `ServiceManager` overview
-        for naming requirements.  For example: `example.googleapis.com`. This
-        field is required.
-      customerId: ID for the customer. See the comment for
-        `CustomerSettings.customer_id` field of message for its format. This
-        field is required.
-
-    Flags:
-      customerSettings: A CustomerSettings resource to be passed as the
-        request body.
-      updateMask: The field mask specifying which fields are to be updated.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementServicesCustomerSettingsPatchRequest(
-        serviceName=serviceName.decode('utf8'),
-        customerId=customerId.decode('utf8'),
-        )
-    if FLAGS['customerSettings'].present:
-      request.customerSettings = apitools_base.JsonToMessage(messages.CustomerSettings, FLAGS.customerSettings)
-    if FLAGS['updateMask'].present:
-      request.updateMask = FLAGS.updateMask.decode('utf8')
-    result = client.services_customerSettings.Patch(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesProjectSettingsGet(apitools_base_cli.NewCmd):
-  """Command wrapping services_projectSettings.Get."""
-
-  usage = """services_projectSettings_get <serviceName> <consumerProjectId>"""
-
-  def __init__(self, name, fv):
-    super(ServicesProjectSettingsGet, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'expand',
-        None,
-        u'Fields to expand in any results.  By default, the following fields '
-        u'are not present in the result: - `operations` - `quota_usage`',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'view',
-        u'PROJECT_SETTINGS_VIEW_UNSPECIFIED',
-        [u'PROJECT_SETTINGS_VIEW_UNSPECIFIED', u'CONSUMER_VIEW', u'PRODUCER_VIEW', u'ALL'],
-        u'Request only the fields for the specified view.',
-        flag_values=fv)
-
-  def RunWithArgs(self, serviceName, consumerProjectId):
-    """Retrieves the settings that control the specified consumer project's
-    usage of the service.
-
-    Args:
-      serviceName: The name of the service.  See the `ServiceManager` overview
-        for naming requirements.  For example: `example.googleapis.com`.
-      consumerProjectId: The project ID of the consumer.
-
-    Flags:
-      expand: Fields to expand in any results.  By default, the following
-        fields are not present in the result: - `operations` - `quota_usage`
-      view: Request only the fields for the specified view.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementServicesProjectSettingsGetRequest(
-        serviceName=serviceName.decode('utf8'),
-        consumerProjectId=consumerProjectId.decode('utf8'),
-        )
-    if FLAGS['expand'].present:
-      request.expand = FLAGS.expand.decode('utf8')
-    if FLAGS['view'].present:
-      request.view = messages.ServicemanagementServicesProjectSettingsGetRequest.ViewValueValuesEnum(FLAGS.view)
-    result = client.services_projectSettings.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesProjectSettingsPatch(apitools_base_cli.NewCmd):
-  """Command wrapping services_projectSettings.Patch."""
-
-  usage = """services_projectSettings_patch <serviceName> <consumerProjectId>"""
-
-  def __init__(self, name, fv):
-    super(ServicesProjectSettingsPatch, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'projectSettings',
-        None,
-        u'A ProjectSettings resource to be passed as the request body.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'updateMask',
-        None,
-        u'The field mask specifying which fields are to be updated.',
-        flag_values=fv)
-
-  def RunWithArgs(self, serviceName, consumerProjectId):
-    """Updates specified subset of the settings that control the specified
-    consumer project's usage of the service.  Attempts to update a field not
-    controlled by the caller will result in an access denied error.
-    Operation<response: ProjectSettings>
-
-    Args:
-      serviceName: The name of the service.  See the `ServiceManager` overview
-        for naming requirements.  For example: `example.googleapis.com`.
-      consumerProjectId: The project ID of the consumer.
-
-    Flags:
-      projectSettings: A ProjectSettings resource to be passed as the request
-        body.
-      updateMask: The field mask specifying which fields are to be updated.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ServicemanagementServicesProjectSettingsPatchRequest(
-        serviceName=serviceName.decode('utf8'),
-        consumerProjectId=consumerProjectId.decode('utf8'),
-        )
-    if FLAGS['projectSettings'].present:
-      request.projectSettings = apitools_base.JsonToMessage(messages.ProjectSettings, FLAGS.projectSettings)
-    if FLAGS['updateMask'].present:
-      request.updateMask = FLAGS.updateMask.decode('utf8')
-    result = client.services_projectSettings.Patch(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ServicesProjectSettingsUpdate(apitools_base_cli.NewCmd):
-  """Command wrapping services_projectSettings.Update."""
-
-  usage = """services_projectSettings_update <serviceName> <consumerProjectId>"""
-
-  def __init__(self, name, fv):
-    super(ServicesProjectSettingsUpdate, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'operations',
-        None,
-        u'Read-only view of pending operations affecting this resource, if '
-        u'requested.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'properties',
-        None,
-        u'Service-defined per-consumer properties.  A key-value mapping a '
-        u'string key to a google.protobuf.ListValue proto. Values in the list'
-        u" are typed as defined in the Service configuration's "
-        u'consumer.properties field.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'quotaSettings',
-        None,
-        u'Settings that control how much or how fast the service can be used '
-        u'by the consumer project.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'usageSettings',
-        None,
-        u'Settings that control whether this service is usable by the '
-        u'consumer project.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'visibilitySettings',
-        None,
-        u'Settings that control which features of the service are visible to '
-        u'the consumer project.',
-        flag_values=fv)
-
-  def RunWithArgs(self, serviceName, consumerProjectId):
-    """NOTE: Currently unsupported.  Use PatchProjectSettings instead.
-    Updates the settings that control the specified consumer project's usage
-    of the service.  Attempts to update a field not controlled by the caller
-    will result in an access denied error.  Operation<response:
-    ProjectSettings>
-
-    Args:
-      serviceName: The name of the service.  See the `ServiceManager` overview
-        for naming requirements.
-      consumerProjectId: ID for the project consuming this service.
-
-    Flags:
-      operations: Read-only view of pending operations affecting this
-        resource, if requested.
-      properties: Service-defined per-consumer properties.  A key-value
-        mapping a string key to a google.protobuf.ListValue proto. Values in
-        the list are typed as defined in the Service configuration's
-        consumer.properties field.
-      quotaSettings: Settings that control how much or how fast the service
-        can be used by the consumer project.
-      usageSettings: Settings that control whether this service is usable by
-        the consumer project.
-      visibilitySettings: Settings that control which features of the service
-        are visible to the consumer project.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ProjectSettings(
-        serviceName=serviceName.decode('utf8'),
-        consumerProjectId=consumerProjectId.decode('utf8'),
-        )
-    if FLAGS['operations'].present:
-      request.operations = [apitools_base.JsonToMessage(messages.Operation, x) for x in FLAGS.operations]
-    if FLAGS['properties'].present:
-      request.properties = apitools_base.JsonToMessage(messages.ProjectSettings.PropertiesValue, FLAGS.properties)
-    if FLAGS['quotaSettings'].present:
-      request.quotaSettings = apitools_base.JsonToMessage(messages.QuotaSettings, FLAGS.quotaSettings)
-    if FLAGS['usageSettings'].present:
-      request.usageSettings = apitools_base.JsonToMessage(messages.UsageSettings, FLAGS.usageSettings)
-    if FLAGS['visibilitySettings'].present:
-      request.visibilitySettings = apitools_base.JsonToMessage(messages.VisibilitySettings, FLAGS.visibilitySettings)
-    result = client.services_projectSettings.Update(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ConvertConfig(apitools_base_cli.NewCmd):
-  """Command wrapping v1.ConvertConfig."""
-
-  usage = """convertConfig"""
-
-  def __init__(self, name, fv):
-    super(ConvertConfig, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'configSpec',
-        None,
-        u'Input configuration For this version of API, the supported type is '
-        u'OpenApiSpec',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'openApiSpec',
-        None,
-        u'The OpenAPI specification for an API.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'serviceName',
-        None,
-        u'The service name to use for constructing the normalized service '
-        u'configuration equivalent of the provided configuration '
-        u'specification.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'swaggerSpec',
-        None,
-        u'The swagger specification for an API.',
-        flag_values=fv)
-
-  def RunWithArgs(self):
-    """DEPRECATED. `SubmitConfigSource` with `validate_only=true` will provide
-    config conversion moving forward.  Converts an API specification (e.g.
-    Swagger spec) to an equivalent `google.api.Service`.
-
-    Flags:
-      configSpec: Input configuration For this version of API, the supported
-        type is OpenApiSpec
-      openApiSpec: The OpenAPI specification for an API.
-      serviceName: The service name to use for constructing the normalized
-        service configuration equivalent of the provided configuration
-        specification.
-      swaggerSpec: The swagger specification for an API.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ConvertConfigRequest(
-        )
-    if FLAGS['configSpec'].present:
-      request.configSpec = apitools_base.JsonToMessage(messages.ConvertConfigRequest.ConfigSpecValue, FLAGS.configSpec)
-    if FLAGS['openApiSpec'].present:
-      request.openApiSpec = apitools_base.JsonToMessage(messages.OpenApiSpec, FLAGS.openApiSpec)
-    if FLAGS['serviceName'].present:
-      request.serviceName = FLAGS.serviceName.decode('utf8')
-    if FLAGS['swaggerSpec'].present:
-      request.swaggerSpec = apitools_base.JsonToMessage(messages.SwaggerSpec, FLAGS.swaggerSpec)
-    result = client.v1.ConvertConfig(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-def main(_):
-  appcommands.AddCmd('pyshell', PyShell)
-  appcommands.AddCmd('operations_get', OperationsGet)
-  appcommands.AddCmd('services_convertConfig', ServicesConvertConfig)
-  appcommands.AddCmd('services_create', ServicesCreate)
-  appcommands.AddCmd('services_delete', ServicesDelete)
-  appcommands.AddCmd('services_disable', ServicesDisable)
-  appcommands.AddCmd('services_enable', ServicesEnable)
-  appcommands.AddCmd('services_get', ServicesGet)
-  appcommands.AddCmd('services_getAccessPolicy', ServicesGetAccessPolicy)
-  appcommands.AddCmd('services_getConfig', ServicesGetConfig)
-  appcommands.AddCmd('services_list', ServicesList)
-  appcommands.AddCmd('services_patch', ServicesPatch)
-  appcommands.AddCmd('services_patchConfig', ServicesPatchConfig)
-  appcommands.AddCmd('services_update', ServicesUpdate)
-  appcommands.AddCmd('services_updateAccessPolicy', ServicesUpdateAccessPolicy)
-  appcommands.AddCmd('services_updateConfig', ServicesUpdateConfig)
-  appcommands.AddCmd('services_accessPolicy_query', ServicesAccessPolicyQuery)
-  appcommands.AddCmd('services_configs_create', ServicesConfigsCreate)
-  appcommands.AddCmd('services_configs_get', ServicesConfigsGet)
-  appcommands.AddCmd('services_configs_list', ServicesConfigsList)
-  appcommands.AddCmd('services_configs_submit', ServicesConfigsSubmit)
-  appcommands.AddCmd('services_customerSettings_get', ServicesCustomerSettingsGet)
-  appcommands.AddCmd('services_customerSettings_patch', ServicesCustomerSettingsPatch)
-  appcommands.AddCmd('services_projectSettings_get', ServicesProjectSettingsGet)
-  appcommands.AddCmd('services_projectSettings_patch', ServicesProjectSettingsPatch)
-  appcommands.AddCmd('services_projectSettings_update', ServicesProjectSettingsUpdate)
-  appcommands.AddCmd('convertConfig', ConvertConfig)
-
-  apitools_base_cli.SetupLogger()
-  if hasattr(appcommands, 'SetDefaultCommand'):
-    appcommands.SetDefaultCommand('pyshell')
-
-
-run_main = apitools_base_cli.run_main
-
-if __name__ == '__main__':
-  appcommands.Run()
diff --git a/samples/storage_sample/storage_v1/storage_v1.py b/samples/storage_sample/storage_v1/storage_v1.py
deleted file mode 100644
index d7cff48..0000000
--- a/samples/storage_sample/storage_v1/storage_v1.py
+++ /dev/null
@@ -1,3578 +0,0 @@
-#!/usr/bin/env python
-"""CLI for storage, version v1."""
-# NOTE: This file is autogenerated and should not be edited by hand.
-
-import code
-import os
-import platform
-import sys
-
-from apitools.base.protorpclite import message_types
-from apitools.base.protorpclite import messages
-
-from google.apputils import appcommands
-import gflags as flags
-
-import apitools.base.py as apitools_base
-from apitools.base.py import cli as apitools_base_cli
-import storage_v1_client as client_lib
-import storage_v1_messages as messages
-
-
-def _DeclareStorageFlags():
-  """Declare global flags in an idempotent way."""
-  if 'api_endpoint' in flags.FLAGS:
-    return
-  flags.DEFINE_string(
-      'api_endpoint',
-      u'https://www.googleapis.com/storage/v1/',
-      'URL of the API endpoint to use.',
-      short_name='storage_url')
-  flags.DEFINE_string(
-      'history_file',
-      u'~/.storage.v1.history',
-      'File with interactive shell history.')
-  flags.DEFINE_multistring(
-      'add_header', [],
-      'Additional http headers (as key=value strings). '
-      'Can be specified multiple times.')
-  flags.DEFINE_string(
-      'service_account_json_keyfile', '',
-      'Filename for a JSON service account key downloaded'
-      ' from the Developer Console.')
-  flags.DEFINE_enum(
-      'alt',
-      u'json',
-      [u'json'],
-      u'Data format for the response.')
-  flags.DEFINE_string(
-      'fields',
-      None,
-      u'Selector specifying which fields to include in a partial response.')
-  flags.DEFINE_string(
-      'key',
-      None,
-      u'API key. Your API key identifies your project and provides you with '
-      u'API access, quota, and reports. Required unless you provide an OAuth '
-      u'2.0 token.')
-  flags.DEFINE_string(
-      'oauth_token',
-      None,
-      u'OAuth 2.0 token for the current user.')
-  flags.DEFINE_boolean(
-      'prettyPrint',
-      'True',
-      u'Returns response with indentations and line breaks.')
-  flags.DEFINE_string(
-      'quotaUser',
-      None,
-      u'Available to use for quota purposes for server-side applications. Can'
-      u' be any arbitrary string assigned to a user, but should not exceed 40'
-      u' characters. Overrides userIp if both are provided.')
-  flags.DEFINE_string(
-      'trace',
-      None,
-      'A tracing token of the form "token:<tokenid>" to include in api '
-      'requests.')
-  flags.DEFINE_string(
-      'userIp',
-      None,
-      u'IP address of the site where the request originates. Use this if you '
-      u'want to enforce per-user limits.')
-
-
-FLAGS = flags.FLAGS
-apitools_base_cli.DeclareBaseFlags()
-_DeclareStorageFlags()
-
-
-def GetGlobalParamsFromFlags():
-  """Return a StandardQueryParameters based on flags."""
-  result = messages.StandardQueryParameters()
-  if FLAGS['alt'].present:
-    result.alt = messages.StandardQueryParameters.AltValueValuesEnum(FLAGS.alt)
-  if FLAGS['fields'].present:
-    result.fields = FLAGS.fields.decode('utf8')
-  if FLAGS['key'].present:
-    result.key = FLAGS.key.decode('utf8')
-  if FLAGS['oauth_token'].present:
-    result.oauth_token = FLAGS.oauth_token.decode('utf8')
-  if FLAGS['prettyPrint'].present:
-    result.prettyPrint = FLAGS.prettyPrint
-  if FLAGS['quotaUser'].present:
-    result.quotaUser = FLAGS.quotaUser.decode('utf8')
-  if FLAGS['trace'].present:
-    result.trace = FLAGS.trace.decode('utf8')
-  if FLAGS['userIp'].present:
-    result.userIp = FLAGS.userIp.decode('utf8')
-  return result
-
-
-def GetClientFromFlags():
-  """Return a client object, configured from flags."""
-  log_request = FLAGS.log_request or FLAGS.log_request_response
-  log_response = FLAGS.log_response or FLAGS.log_request_response
-  api_endpoint = apitools_base.NormalizeApiEndpoint(FLAGS.api_endpoint)
-  additional_http_headers = dict(x.split('=', 1) for x in FLAGS.add_header)
-  credentials_args = {
-      'service_account_json_keyfile': os.path.expanduser(FLAGS.service_account_json_keyfile)
-  }
-  try:
-    client = client_lib.StorageV1(
-        api_endpoint, log_request=log_request,
-        log_response=log_response,
-        credentials_args=credentials_args,
-        additional_http_headers=additional_http_headers)
-  except apitools_base.CredentialsError as e:
-    print 'Error creating credentials: %s' % e
-    sys.exit(1)
-  return client
-
-
-class PyShell(appcommands.Cmd):
-
-  def Run(self, _):
-    """Run an interactive python shell with the client."""
-    client = GetClientFromFlags()
-    params = GetGlobalParamsFromFlags()
-    for field in params.all_fields():
-      value = params.get_assigned_value(field.name)
-      if value != field.default:
-        client.AddGlobalParam(field.name, value)
-    banner = """
-           == storage interactive console ==
-                 client: a storage client
-          apitools_base: base apitools module
-         messages: the generated messages module
-    """
-    local_vars = {
-        'apitools_base': apitools_base,
-        'client': client,
-        'client_lib': client_lib,
-        'messages': messages,
-    }
-    if platform.system() == 'Linux':
-      console = apitools_base_cli.ConsoleWithReadline(
-          local_vars, histfile=FLAGS.history_file)
-    else:
-      console = code.InteractiveConsole(local_vars)
-    try:
-      console.interact(banner)
-    except SystemExit as e:
-      return e.code
-
-
-class BucketAccessControlsDelete(apitools_base_cli.NewCmd):
-  """Command wrapping bucketAccessControls.Delete."""
-
-  usage = """bucketAccessControls_delete <bucket> <entity>"""
-
-  def __init__(self, name, fv):
-    super(BucketAccessControlsDelete, self).__init__(name, fv)
-
-  def RunWithArgs(self, bucket, entity):
-    """Permanently deletes the ACL entry for the specified entity on the
-    specified bucket.
-
-    Args:
-      bucket: Name of a bucket.
-      entity: The entity holding the permission. Can be user-userId, user-
-        emailAddress, group-groupId, group-emailAddress, allUsers, or
-        allAuthenticatedUsers.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageBucketAccessControlsDeleteRequest(
-        bucket=bucket.decode('utf8'),
-        entity=entity.decode('utf8'),
-        )
-    result = client.bucketAccessControls.Delete(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class BucketAccessControlsGet(apitools_base_cli.NewCmd):
-  """Command wrapping bucketAccessControls.Get."""
-
-  usage = """bucketAccessControls_get <bucket> <entity>"""
-
-  def __init__(self, name, fv):
-    super(BucketAccessControlsGet, self).__init__(name, fv)
-
-  def RunWithArgs(self, bucket, entity):
-    """Returns the ACL entry for the specified entity on the specified bucket.
-
-    Args:
-      bucket: Name of a bucket.
-      entity: The entity holding the permission. Can be user-userId, user-
-        emailAddress, group-groupId, group-emailAddress, allUsers, or
-        allAuthenticatedUsers.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageBucketAccessControlsGetRequest(
-        bucket=bucket.decode('utf8'),
-        entity=entity.decode('utf8'),
-        )
-    result = client.bucketAccessControls.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class BucketAccessControlsInsert(apitools_base_cli.NewCmd):
-  """Command wrapping bucketAccessControls.Insert."""
-
-  usage = """bucketAccessControls_insert <bucket>"""
-
-  def __init__(self, name, fv):
-    super(BucketAccessControlsInsert, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'domain',
-        None,
-        u'The domain associated with the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'email',
-        None,
-        u'The email address associated with the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'entity',
-        None,
-        u'The entity holding the permission, in one of the following forms:  '
-        u'- user-userId  - user-email  - group-groupId  - group-email  - '
-        u'domain-domain  - project-team-projectId  - allUsers  - '
-        u'allAuthenticatedUsers Examples:  - The user liz@example.com would '
-        u'be user-liz@example.com.  - The group example@googlegroups.com '
-        u'would be group-example@googlegroups.com.  - To refer to all members'
-        u' of the Google Apps for Business domain example.com, the entity '
-        u'would be domain-example.com.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'entityId',
-        None,
-        u'The ID for the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'etag',
-        None,
-        u'HTTP 1.1 Entity tag for the access-control entry.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'id',
-        None,
-        u'The ID of the access-control entry.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'kind',
-        u'storage#bucketAccessControl',
-        u'The kind of item this is. For bucket access control entries, this '
-        u'is always storage#bucketAccessControl.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'projectTeam',
-        None,
-        u'The project team associated with the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'role',
-        None,
-        u'The access permission for the entity. Can be READER, WRITER, or '
-        u'OWNER.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'selfLink',
-        None,
-        u'The link to this access-control entry.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket):
-    """Creates a new ACL entry on the specified bucket.
-
-    Args:
-      bucket: The name of the bucket.
-
-    Flags:
-      domain: The domain associated with the entity, if any.
-      email: The email address associated with the entity, if any.
-      entity: The entity holding the permission, in one of the following
-        forms:  - user-userId  - user-email  - group-groupId  - group-email  -
-        domain-domain  - project-team-projectId  - allUsers  -
-        allAuthenticatedUsers Examples:  - The user liz@example.com would be
-        user-liz@example.com.  - The group example@googlegroups.com would be
-        group-example@googlegroups.com.  - To refer to all members of the
-        Google Apps for Business domain example.com, the entity would be
-        domain-example.com.
-      entityId: The ID for the entity, if any.
-      etag: HTTP 1.1 Entity tag for the access-control entry.
-      id: The ID of the access-control entry.
-      kind: The kind of item this is. For bucket access control entries, this
-        is always storage#bucketAccessControl.
-      projectTeam: The project team associated with the entity, if any.
-      role: The access permission for the entity. Can be READER, WRITER, or
-        OWNER.
-      selfLink: The link to this access-control entry.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BucketAccessControl(
-        bucket=bucket.decode('utf8'),
-        )
-    if FLAGS['domain'].present:
-      request.domain = FLAGS.domain.decode('utf8')
-    if FLAGS['email'].present:
-      request.email = FLAGS.email.decode('utf8')
-    if FLAGS['entity'].present:
-      request.entity = FLAGS.entity.decode('utf8')
-    if FLAGS['entityId'].present:
-      request.entityId = FLAGS.entityId.decode('utf8')
-    if FLAGS['etag'].present:
-      request.etag = FLAGS.etag.decode('utf8')
-    if FLAGS['id'].present:
-      request.id = FLAGS.id.decode('utf8')
-    if FLAGS['kind'].present:
-      request.kind = FLAGS.kind.decode('utf8')
-    if FLAGS['projectTeam'].present:
-      request.projectTeam = apitools_base.JsonToMessage(messages.BucketAccessControl.ProjectTeamValue, FLAGS.projectTeam)
-    if FLAGS['role'].present:
-      request.role = FLAGS.role.decode('utf8')
-    if FLAGS['selfLink'].present:
-      request.selfLink = FLAGS.selfLink.decode('utf8')
-    result = client.bucketAccessControls.Insert(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class BucketAccessControlsList(apitools_base_cli.NewCmd):
-  """Command wrapping bucketAccessControls.List."""
-
-  usage = """bucketAccessControls_list <bucket>"""
-
-  def __init__(self, name, fv):
-    super(BucketAccessControlsList, self).__init__(name, fv)
-
-  def RunWithArgs(self, bucket):
-    """Retrieves ACL entries on the specified bucket.
-
-    Args:
-      bucket: Name of a bucket.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageBucketAccessControlsListRequest(
-        bucket=bucket.decode('utf8'),
-        )
-    result = client.bucketAccessControls.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class BucketAccessControlsPatch(apitools_base_cli.NewCmd):
-  """Command wrapping bucketAccessControls.Patch."""
-
-  usage = """bucketAccessControls_patch <bucket> <entity>"""
-
-  def __init__(self, name, fv):
-    super(BucketAccessControlsPatch, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'domain',
-        None,
-        u'The domain associated with the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'email',
-        None,
-        u'The email address associated with the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'entityId',
-        None,
-        u'The ID for the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'etag',
-        None,
-        u'HTTP 1.1 Entity tag for the access-control entry.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'id',
-        None,
-        u'The ID of the access-control entry.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'kind',
-        u'storage#bucketAccessControl',
-        u'The kind of item this is. For bucket access control entries, this '
-        u'is always storage#bucketAccessControl.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'projectTeam',
-        None,
-        u'The project team associated with the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'role',
-        None,
-        u'The access permission for the entity. Can be READER, WRITER, or '
-        u'OWNER.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'selfLink',
-        None,
-        u'The link to this access-control entry.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket, entity):
-    """Updates an ACL entry on the specified bucket. This method supports
-    patch semantics.
-
-    Args:
-      bucket: The name of the bucket.
-      entity: The entity holding the permission, in one of the following
-        forms:  - user-userId  - user-email  - group-groupId  - group-email  -
-        domain-domain  - project-team-projectId  - allUsers  -
-        allAuthenticatedUsers Examples:  - The user liz@example.com would be
-        user-liz@example.com.  - The group example@googlegroups.com would be
-        group-example@googlegroups.com.  - To refer to all members of the
-        Google Apps for Business domain example.com, the entity would be
-        domain-example.com.
-
-    Flags:
-      domain: The domain associated with the entity, if any.
-      email: The email address associated with the entity, if any.
-      entityId: The ID for the entity, if any.
-      etag: HTTP 1.1 Entity tag for the access-control entry.
-      id: The ID of the access-control entry.
-      kind: The kind of item this is. For bucket access control entries, this
-        is always storage#bucketAccessControl.
-      projectTeam: The project team associated with the entity, if any.
-      role: The access permission for the entity. Can be READER, WRITER, or
-        OWNER.
-      selfLink: The link to this access-control entry.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BucketAccessControl(
-        bucket=bucket.decode('utf8'),
-        entity=entity.decode('utf8'),
-        )
-    if FLAGS['domain'].present:
-      request.domain = FLAGS.domain.decode('utf8')
-    if FLAGS['email'].present:
-      request.email = FLAGS.email.decode('utf8')
-    if FLAGS['entityId'].present:
-      request.entityId = FLAGS.entityId.decode('utf8')
-    if FLAGS['etag'].present:
-      request.etag = FLAGS.etag.decode('utf8')
-    if FLAGS['id'].present:
-      request.id = FLAGS.id.decode('utf8')
-    if FLAGS['kind'].present:
-      request.kind = FLAGS.kind.decode('utf8')
-    if FLAGS['projectTeam'].present:
-      request.projectTeam = apitools_base.JsonToMessage(messages.BucketAccessControl.ProjectTeamValue, FLAGS.projectTeam)
-    if FLAGS['role'].present:
-      request.role = FLAGS.role.decode('utf8')
-    if FLAGS['selfLink'].present:
-      request.selfLink = FLAGS.selfLink.decode('utf8')
-    result = client.bucketAccessControls.Patch(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class BucketAccessControlsUpdate(apitools_base_cli.NewCmd):
-  """Command wrapping bucketAccessControls.Update."""
-
-  usage = """bucketAccessControls_update <bucket> <entity>"""
-
-  def __init__(self, name, fv):
-    super(BucketAccessControlsUpdate, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'domain',
-        None,
-        u'The domain associated with the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'email',
-        None,
-        u'The email address associated with the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'entityId',
-        None,
-        u'The ID for the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'etag',
-        None,
-        u'HTTP 1.1 Entity tag for the access-control entry.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'id',
-        None,
-        u'The ID of the access-control entry.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'kind',
-        u'storage#bucketAccessControl',
-        u'The kind of item this is. For bucket access control entries, this '
-        u'is always storage#bucketAccessControl.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'projectTeam',
-        None,
-        u'The project team associated with the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'role',
-        None,
-        u'The access permission for the entity. Can be READER, WRITER, or '
-        u'OWNER.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'selfLink',
-        None,
-        u'The link to this access-control entry.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket, entity):
-    """Updates an ACL entry on the specified bucket.
-
-    Args:
-      bucket: The name of the bucket.
-      entity: The entity holding the permission, in one of the following
-        forms:  - user-userId  - user-email  - group-groupId  - group-email  -
-        domain-domain  - project-team-projectId  - allUsers  -
-        allAuthenticatedUsers Examples:  - The user liz@example.com would be
-        user-liz@example.com.  - The group example@googlegroups.com would be
-        group-example@googlegroups.com.  - To refer to all members of the
-        Google Apps for Business domain example.com, the entity would be
-        domain-example.com.
-
-    Flags:
-      domain: The domain associated with the entity, if any.
-      email: The email address associated with the entity, if any.
-      entityId: The ID for the entity, if any.
-      etag: HTTP 1.1 Entity tag for the access-control entry.
-      id: The ID of the access-control entry.
-      kind: The kind of item this is. For bucket access control entries, this
-        is always storage#bucketAccessControl.
-      projectTeam: The project team associated with the entity, if any.
-      role: The access permission for the entity. Can be READER, WRITER, or
-        OWNER.
-      selfLink: The link to this access-control entry.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.BucketAccessControl(
-        bucket=bucket.decode('utf8'),
-        entity=entity.decode('utf8'),
-        )
-    if FLAGS['domain'].present:
-      request.domain = FLAGS.domain.decode('utf8')
-    if FLAGS['email'].present:
-      request.email = FLAGS.email.decode('utf8')
-    if FLAGS['entityId'].present:
-      request.entityId = FLAGS.entityId.decode('utf8')
-    if FLAGS['etag'].present:
-      request.etag = FLAGS.etag.decode('utf8')
-    if FLAGS['id'].present:
-      request.id = FLAGS.id.decode('utf8')
-    if FLAGS['kind'].present:
-      request.kind = FLAGS.kind.decode('utf8')
-    if FLAGS['projectTeam'].present:
-      request.projectTeam = apitools_base.JsonToMessage(messages.BucketAccessControl.ProjectTeamValue, FLAGS.projectTeam)
-    if FLAGS['role'].present:
-      request.role = FLAGS.role.decode('utf8')
-    if FLAGS['selfLink'].present:
-      request.selfLink = FLAGS.selfLink.decode('utf8')
-    result = client.bucketAccessControls.Update(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class BucketsDelete(apitools_base_cli.NewCmd):
-  """Command wrapping buckets.Delete."""
-
-  usage = """buckets_delete <bucket>"""
-
-  def __init__(self, name, fv):
-    super(BucketsDelete, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'ifMetagenerationMatch',
-        None,
-        u'If set, only deletes the bucket if its metageneration matches this '
-        u'value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationNotMatch',
-        None,
-        u'If set, only deletes the bucket if its metageneration does not '
-        u'match this value.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket):
-    """Permanently deletes an empty bucket.
-
-    Args:
-      bucket: Name of a bucket.
-
-    Flags:
-      ifMetagenerationMatch: If set, only deletes the bucket if its
-        metageneration matches this value.
-      ifMetagenerationNotMatch: If set, only deletes the bucket if its
-        metageneration does not match this value.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageBucketsDeleteRequest(
-        bucket=bucket.decode('utf8'),
-        )
-    if FLAGS['ifMetagenerationMatch'].present:
-      request.ifMetagenerationMatch = int(FLAGS.ifMetagenerationMatch)
-    if FLAGS['ifMetagenerationNotMatch'].present:
-      request.ifMetagenerationNotMatch = int(FLAGS.ifMetagenerationNotMatch)
-    result = client.buckets.Delete(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class BucketsGet(apitools_base_cli.NewCmd):
-  """Command wrapping buckets.Get."""
-
-  usage = """buckets_get <bucket>"""
-
-  def __init__(self, name, fv):
-    super(BucketsGet, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'ifMetagenerationMatch',
-        None,
-        u'Makes the return of the bucket metadata conditional on whether the '
-        u"bucket's current metageneration matches the given value.",
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationNotMatch',
-        None,
-        u'Makes the return of the bucket metadata conditional on whether the '
-        u"bucket's current metageneration does not match the given value.",
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'projection',
-        u'full',
-        [u'full', u'noAcl'],
-        u'Set of properties to return. Defaults to noAcl.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket):
-    """Returns metadata for the specified bucket.
-
-    Args:
-      bucket: Name of a bucket.
-
-    Flags:
-      ifMetagenerationMatch: Makes the return of the bucket metadata
-        conditional on whether the bucket's current metageneration matches the
-        given value.
-      ifMetagenerationNotMatch: Makes the return of the bucket metadata
-        conditional on whether the bucket's current metageneration does not
-        match the given value.
-      projection: Set of properties to return. Defaults to noAcl.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageBucketsGetRequest(
-        bucket=bucket.decode('utf8'),
-        )
-    if FLAGS['ifMetagenerationMatch'].present:
-      request.ifMetagenerationMatch = int(FLAGS.ifMetagenerationMatch)
-    if FLAGS['ifMetagenerationNotMatch'].present:
-      request.ifMetagenerationNotMatch = int(FLAGS.ifMetagenerationNotMatch)
-    if FLAGS['projection'].present:
-      request.projection = messages.StorageBucketsGetRequest.ProjectionValueValuesEnum(FLAGS.projection)
-    result = client.buckets.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class BucketsGetIamPolicy(apitools_base_cli.NewCmd):
-  """Command wrapping buckets.GetIamPolicy."""
-
-  usage = """buckets_getIamPolicy <bucket>"""
-
-  def __init__(self, name, fv):
-    super(BucketsGetIamPolicy, self).__init__(name, fv)
-
-  def RunWithArgs(self, bucket):
-    """Returns an IAM policy for the specified bucket.
-
-    Args:
-      bucket: Name of a bucket.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageBucketsGetIamPolicyRequest(
-        bucket=bucket.decode('utf8'),
-        )
-    result = client.buckets.GetIamPolicy(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class BucketsInsert(apitools_base_cli.NewCmd):
-  """Command wrapping buckets.Insert."""
-
-  usage = """buckets_insert <project>"""
-
-  def __init__(self, name, fv):
-    super(BucketsInsert, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'bucket',
-        None,
-        u'A Bucket resource to be passed as the request body.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'predefinedAcl',
-        u'authenticatedRead',
-        [u'authenticatedRead', u'private', u'projectPrivate', u'publicRead', u'publicReadWrite'],
-        u'Apply a predefined set of access controls to this bucket.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'predefinedDefaultObjectAcl',
-        u'authenticatedRead',
-        [u'authenticatedRead', u'bucketOwnerFullControl', u'bucketOwnerRead', u'private', u'projectPrivate', u'publicRead'],
-        u'Apply a predefined set of default object access controls to this '
-        u'bucket.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'projection',
-        u'full',
-        [u'full', u'noAcl'],
-        u'Set of properties to return. Defaults to noAcl, unless the bucket '
-        u'resource specifies acl or defaultObjectAcl properties, when it '
-        u'defaults to full.',
-        flag_values=fv)
-
-  def RunWithArgs(self, project):
-    """Creates a new bucket.
-
-    Args:
-      project: A valid API project identifier.
-
-    Flags:
-      bucket: A Bucket resource to be passed as the request body.
-      predefinedAcl: Apply a predefined set of access controls to this bucket.
-      predefinedDefaultObjectAcl: Apply a predefined set of default object
-        access controls to this bucket.
-      projection: Set of properties to return. Defaults to noAcl, unless the
-        bucket resource specifies acl or defaultObjectAcl properties, when it
-        defaults to full.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageBucketsInsertRequest(
-        project=project.decode('utf8'),
-        )
-    if FLAGS['bucket'].present:
-      request.bucket = apitools_base.JsonToMessage(messages.Bucket, FLAGS.bucket)
-    if FLAGS['predefinedAcl'].present:
-      request.predefinedAcl = messages.StorageBucketsInsertRequest.PredefinedAclValueValuesEnum(FLAGS.predefinedAcl)
-    if FLAGS['predefinedDefaultObjectAcl'].present:
-      request.predefinedDefaultObjectAcl = messages.StorageBucketsInsertRequest.PredefinedDefaultObjectAclValueValuesEnum(FLAGS.predefinedDefaultObjectAcl)
-    if FLAGS['projection'].present:
-      request.projection = messages.StorageBucketsInsertRequest.ProjectionValueValuesEnum(FLAGS.projection)
-    result = client.buckets.Insert(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class BucketsList(apitools_base_cli.NewCmd):
-  """Command wrapping buckets.List."""
-
-  usage = """buckets_list <project>"""
-
-  def __init__(self, name, fv):
-    super(BucketsList, self).__init__(name, fv)
-    flags.DEFINE_integer(
-        'maxResults',
-        None,
-        u'Maximum number of buckets to return.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        u'A previously-returned page token representing part of the larger '
-        u'set of results to view.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'prefix',
-        None,
-        u'Filter results to buckets whose names begin with this prefix.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'projection',
-        u'full',
-        [u'full', u'noAcl'],
-        u'Set of properties to return. Defaults to noAcl.',
-        flag_values=fv)
-
-  def RunWithArgs(self, project):
-    """Retrieves a list of buckets for a given project.
-
-    Args:
-      project: A valid API project identifier.
-
-    Flags:
-      maxResults: Maximum number of buckets to return.
-      pageToken: A previously-returned page token representing part of the
-        larger set of results to view.
-      prefix: Filter results to buckets whose names begin with this prefix.
-      projection: Set of properties to return. Defaults to noAcl.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageBucketsListRequest(
-        project=project.decode('utf8'),
-        )
-    if FLAGS['maxResults'].present:
-      request.maxResults = FLAGS.maxResults
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    if FLAGS['prefix'].present:
-      request.prefix = FLAGS.prefix.decode('utf8')
-    if FLAGS['projection'].present:
-      request.projection = messages.StorageBucketsListRequest.ProjectionValueValuesEnum(FLAGS.projection)
-    result = client.buckets.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class BucketsPatch(apitools_base_cli.NewCmd):
-  """Command wrapping buckets.Patch."""
-
-  usage = """buckets_patch <bucket>"""
-
-  def __init__(self, name, fv):
-    super(BucketsPatch, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'bucketResource',
-        None,
-        u'A Bucket resource to be passed as the request body.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationMatch',
-        None,
-        u'Makes the return of the bucket metadata conditional on whether the '
-        u"bucket's current metageneration matches the given value.",
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationNotMatch',
-        None,
-        u'Makes the return of the bucket metadata conditional on whether the '
-        u"bucket's current metageneration does not match the given value.",
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'predefinedAcl',
-        u'authenticatedRead',
-        [u'authenticatedRead', u'private', u'projectPrivate', u'publicRead', u'publicReadWrite'],
-        u'Apply a predefined set of access controls to this bucket.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'predefinedDefaultObjectAcl',
-        u'authenticatedRead',
-        [u'authenticatedRead', u'bucketOwnerFullControl', u'bucketOwnerRead', u'private', u'projectPrivate', u'publicRead'],
-        u'Apply a predefined set of default object access controls to this '
-        u'bucket.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'projection',
-        u'full',
-        [u'full', u'noAcl'],
-        u'Set of properties to return. Defaults to full.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket):
-    """Updates a bucket. This method supports patch semantics.
-
-    Args:
-      bucket: Name of a bucket.
-
-    Flags:
-      bucketResource: A Bucket resource to be passed as the request body.
-      ifMetagenerationMatch: Makes the return of the bucket metadata
-        conditional on whether the bucket's current metageneration matches the
-        given value.
-      ifMetagenerationNotMatch: Makes the return of the bucket metadata
-        conditional on whether the bucket's current metageneration does not
-        match the given value.
-      predefinedAcl: Apply a predefined set of access controls to this bucket.
-      predefinedDefaultObjectAcl: Apply a predefined set of default object
-        access controls to this bucket.
-      projection: Set of properties to return. Defaults to full.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageBucketsPatchRequest(
-        bucket=bucket.decode('utf8'),
-        )
-    if FLAGS['bucketResource'].present:
-      request.bucketResource = apitools_base.JsonToMessage(messages.Bucket, FLAGS.bucketResource)
-    if FLAGS['ifMetagenerationMatch'].present:
-      request.ifMetagenerationMatch = int(FLAGS.ifMetagenerationMatch)
-    if FLAGS['ifMetagenerationNotMatch'].present:
-      request.ifMetagenerationNotMatch = int(FLAGS.ifMetagenerationNotMatch)
-    if FLAGS['predefinedAcl'].present:
-      request.predefinedAcl = messages.StorageBucketsPatchRequest.PredefinedAclValueValuesEnum(FLAGS.predefinedAcl)
-    if FLAGS['predefinedDefaultObjectAcl'].present:
-      request.predefinedDefaultObjectAcl = messages.StorageBucketsPatchRequest.PredefinedDefaultObjectAclValueValuesEnum(FLAGS.predefinedDefaultObjectAcl)
-    if FLAGS['projection'].present:
-      request.projection = messages.StorageBucketsPatchRequest.ProjectionValueValuesEnum(FLAGS.projection)
-    result = client.buckets.Patch(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class BucketsSetIamPolicy(apitools_base_cli.NewCmd):
-  """Command wrapping buckets.SetIamPolicy."""
-
-  usage = """buckets_setIamPolicy <bucket>"""
-
-  def __init__(self, name, fv):
-    super(BucketsSetIamPolicy, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'policy',
-        None,
-        u'A Policy resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket):
-    """Updates an IAM policy for the specified bucket.
-
-    Args:
-      bucket: Name of a bucket.
-
-    Flags:
-      policy: A Policy resource to be passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageBucketsSetIamPolicyRequest(
-        bucket=bucket.decode('utf8'),
-        )
-    if FLAGS['policy'].present:
-      request.policy = apitools_base.JsonToMessage(messages.Policy, FLAGS.policy)
-    result = client.buckets.SetIamPolicy(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class BucketsTestIamPermissions(apitools_base_cli.NewCmd):
-  """Command wrapping buckets.TestIamPermissions."""
-
-  usage = """buckets_testIamPermissions <bucket> <permissions>"""
-
-  def __init__(self, name, fv):
-    super(BucketsTestIamPermissions, self).__init__(name, fv)
-
-  def RunWithArgs(self, bucket, permissions):
-    """Tests a set of permissions on the given bucket to see which, if any,
-    are held by the caller.
-
-    Args:
-      bucket: Name of a bucket.
-      permissions: Permissions to test.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageBucketsTestIamPermissionsRequest(
-        bucket=bucket.decode('utf8'),
-        permissions=permissions.decode('utf8'),
-        )
-    result = client.buckets.TestIamPermissions(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class BucketsUpdate(apitools_base_cli.NewCmd):
-  """Command wrapping buckets.Update."""
-
-  usage = """buckets_update <bucket>"""
-
-  def __init__(self, name, fv):
-    super(BucketsUpdate, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'bucketResource',
-        None,
-        u'A Bucket resource to be passed as the request body.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationMatch',
-        None,
-        u'Makes the return of the bucket metadata conditional on whether the '
-        u"bucket's current metageneration matches the given value.",
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationNotMatch',
-        None,
-        u'Makes the return of the bucket metadata conditional on whether the '
-        u"bucket's current metageneration does not match the given value.",
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'predefinedAcl',
-        u'authenticatedRead',
-        [u'authenticatedRead', u'private', u'projectPrivate', u'publicRead', u'publicReadWrite'],
-        u'Apply a predefined set of access controls to this bucket.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'predefinedDefaultObjectAcl',
-        u'authenticatedRead',
-        [u'authenticatedRead', u'bucketOwnerFullControl', u'bucketOwnerRead', u'private', u'projectPrivate', u'publicRead'],
-        u'Apply a predefined set of default object access controls to this '
-        u'bucket.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'projection',
-        u'full',
-        [u'full', u'noAcl'],
-        u'Set of properties to return. Defaults to full.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket):
-    """Updates a bucket.
-
-    Args:
-      bucket: Name of a bucket.
-
-    Flags:
-      bucketResource: A Bucket resource to be passed as the request body.
-      ifMetagenerationMatch: Makes the return of the bucket metadata
-        conditional on whether the bucket's current metageneration matches the
-        given value.
-      ifMetagenerationNotMatch: Makes the return of the bucket metadata
-        conditional on whether the bucket's current metageneration does not
-        match the given value.
-      predefinedAcl: Apply a predefined set of access controls to this bucket.
-      predefinedDefaultObjectAcl: Apply a predefined set of default object
-        access controls to this bucket.
-      projection: Set of properties to return. Defaults to full.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageBucketsUpdateRequest(
-        bucket=bucket.decode('utf8'),
-        )
-    if FLAGS['bucketResource'].present:
-      request.bucketResource = apitools_base.JsonToMessage(messages.Bucket, FLAGS.bucketResource)
-    if FLAGS['ifMetagenerationMatch'].present:
-      request.ifMetagenerationMatch = int(FLAGS.ifMetagenerationMatch)
-    if FLAGS['ifMetagenerationNotMatch'].present:
-      request.ifMetagenerationNotMatch = int(FLAGS.ifMetagenerationNotMatch)
-    if FLAGS['predefinedAcl'].present:
-      request.predefinedAcl = messages.StorageBucketsUpdateRequest.PredefinedAclValueValuesEnum(FLAGS.predefinedAcl)
-    if FLAGS['predefinedDefaultObjectAcl'].present:
-      request.predefinedDefaultObjectAcl = messages.StorageBucketsUpdateRequest.PredefinedDefaultObjectAclValueValuesEnum(FLAGS.predefinedDefaultObjectAcl)
-    if FLAGS['projection'].present:
-      request.projection = messages.StorageBucketsUpdateRequest.ProjectionValueValuesEnum(FLAGS.projection)
-    result = client.buckets.Update(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ChannelsStop(apitools_base_cli.NewCmd):
-  """Command wrapping channels.Stop."""
-
-  usage = """channels_stop"""
-
-  def __init__(self, name, fv):
-    super(ChannelsStop, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'address',
-        None,
-        u'The address where notifications are delivered for this channel.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'expiration',
-        None,
-        u'Date and time of notification channel expiration, expressed as a '
-        u'Unix timestamp, in milliseconds. Optional.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'id',
-        None,
-        u'A UUID or similar unique string that identifies this channel.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'kind',
-        u'api#channel',
-        u'Identifies this as a notification channel used to watch for changes'
-        u' to a resource. Value: the fixed string "api#channel".',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'params',
-        None,
-        u'Additional parameters controlling delivery channel behavior. '
-        u'Optional.',
-        flag_values=fv)
-    flags.DEFINE_boolean(
-        'payload',
-        None,
-        u'A Boolean value to indicate whether payload is wanted. Optional.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'resourceId',
-        None,
-        u'An opaque ID that identifies the resource being watched on this '
-        u'channel. Stable across different API versions.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'resourceUri',
-        None,
-        u'A version-specific identifier for the watched resource.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'token',
-        None,
-        u'An arbitrary string delivered to the target address with each '
-        u'notification delivered over this channel. Optional.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'type',
-        None,
-        u'The type of delivery mechanism used for this channel.',
-        flag_values=fv)
-
-  def RunWithArgs(self):
-    """Stop watching resources through this channel
-
-    Flags:
-      address: The address where notifications are delivered for this channel.
-      expiration: Date and time of notification channel expiration, expressed
-        as a Unix timestamp, in milliseconds. Optional.
-      id: A UUID or similar unique string that identifies this channel.
-      kind: Identifies this as a notification channel used to watch for
-        changes to a resource. Value: the fixed string "api#channel".
-      params: Additional parameters controlling delivery channel behavior.
-        Optional.
-      payload: A Boolean value to indicate whether payload is wanted.
-        Optional.
-      resourceId: An opaque ID that identifies the resource being watched on
-        this channel. Stable across different API versions.
-      resourceUri: A version-specific identifier for the watched resource.
-      token: An arbitrary string delivered to the target address with each
-        notification delivered over this channel. Optional.
-      type: The type of delivery mechanism used for this channel.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.Channel(
-        )
-    if FLAGS['address'].present:
-      request.address = FLAGS.address.decode('utf8')
-    if FLAGS['expiration'].present:
-      request.expiration = int(FLAGS.expiration)
-    if FLAGS['id'].present:
-      request.id = FLAGS.id.decode('utf8')
-    if FLAGS['kind'].present:
-      request.kind = FLAGS.kind.decode('utf8')
-    if FLAGS['params'].present:
-      request.params = apitools_base.JsonToMessage(messages.Channel.ParamsValue, FLAGS.params)
-    if FLAGS['payload'].present:
-      request.payload = FLAGS.payload
-    if FLAGS['resourceId'].present:
-      request.resourceId = FLAGS.resourceId.decode('utf8')
-    if FLAGS['resourceUri'].present:
-      request.resourceUri = FLAGS.resourceUri.decode('utf8')
-    if FLAGS['token'].present:
-      request.token = FLAGS.token.decode('utf8')
-    if FLAGS['type'].present:
-      request.type = FLAGS.type.decode('utf8')
-    result = client.channels.Stop(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class DefaultObjectAccessControlsDelete(apitools_base_cli.NewCmd):
-  """Command wrapping defaultObjectAccessControls.Delete."""
-
-  usage = """defaultObjectAccessControls_delete <bucket> <entity>"""
-
-  def __init__(self, name, fv):
-    super(DefaultObjectAccessControlsDelete, self).__init__(name, fv)
-
-  def RunWithArgs(self, bucket, entity):
-    """Permanently deletes the default object ACL entry for the specified
-    entity on the specified bucket.
-
-    Args:
-      bucket: Name of a bucket.
-      entity: The entity holding the permission. Can be user-userId, user-
-        emailAddress, group-groupId, group-emailAddress, allUsers, or
-        allAuthenticatedUsers.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageDefaultObjectAccessControlsDeleteRequest(
-        bucket=bucket.decode('utf8'),
-        entity=entity.decode('utf8'),
-        )
-    result = client.defaultObjectAccessControls.Delete(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class DefaultObjectAccessControlsGet(apitools_base_cli.NewCmd):
-  """Command wrapping defaultObjectAccessControls.Get."""
-
-  usage = """defaultObjectAccessControls_get <bucket> <entity>"""
-
-  def __init__(self, name, fv):
-    super(DefaultObjectAccessControlsGet, self).__init__(name, fv)
-
-  def RunWithArgs(self, bucket, entity):
-    """Returns the default object ACL entry for the specified entity on the
-    specified bucket.
-
-    Args:
-      bucket: Name of a bucket.
-      entity: The entity holding the permission. Can be user-userId, user-
-        emailAddress, group-groupId, group-emailAddress, allUsers, or
-        allAuthenticatedUsers.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageDefaultObjectAccessControlsGetRequest(
-        bucket=bucket.decode('utf8'),
-        entity=entity.decode('utf8'),
-        )
-    result = client.defaultObjectAccessControls.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class DefaultObjectAccessControlsInsert(apitools_base_cli.NewCmd):
-  """Command wrapping defaultObjectAccessControls.Insert."""
-
-  usage = """defaultObjectAccessControls_insert <bucket>"""
-
-  def __init__(self, name, fv):
-    super(DefaultObjectAccessControlsInsert, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'domain',
-        None,
-        u'The domain associated with the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'email',
-        None,
-        u'The email address associated with the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'entity',
-        None,
-        u'The entity holding the permission, in one of the following forms:  '
-        u'- user-userId  - user-email  - group-groupId  - group-email  - '
-        u'domain-domain  - project-team-projectId  - allUsers  - '
-        u'allAuthenticatedUsers Examples:  - The user liz@example.com would '
-        u'be user-liz@example.com.  - The group example@googlegroups.com '
-        u'would be group-example@googlegroups.com.  - To refer to all members'
-        u' of the Google Apps for Business domain example.com, the entity '
-        u'would be domain-example.com.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'entityId',
-        None,
-        u'The ID for the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'etag',
-        None,
-        u'HTTP 1.1 Entity tag for the access-control entry.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'generation',
-        None,
-        u'The content generation of the object.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'id',
-        None,
-        u'The ID of the access-control entry.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'kind',
-        u'storage#objectAccessControl',
-        u'The kind of item this is. For object access control entries, this '
-        u'is always storage#objectAccessControl.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'object',
-        None,
-        u'The name of the object.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'projectTeam',
-        None,
-        u'The project team associated with the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'role',
-        None,
-        u'The access permission for the entity. Can be READER or OWNER.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'selfLink',
-        None,
-        u'The link to this access-control entry.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket):
-    """Creates a new default object ACL entry on the specified bucket.
-
-    Args:
-      bucket: The name of the bucket.
-
-    Flags:
-      domain: The domain associated with the entity, if any.
-      email: The email address associated with the entity, if any.
-      entity: The entity holding the permission, in one of the following
-        forms:  - user-userId  - user-email  - group-groupId  - group-email  -
-        domain-domain  - project-team-projectId  - allUsers  -
-        allAuthenticatedUsers Examples:  - The user liz@example.com would be
-        user-liz@example.com.  - The group example@googlegroups.com would be
-        group-example@googlegroups.com.  - To refer to all members of the
-        Google Apps for Business domain example.com, the entity would be
-        domain-example.com.
-      entityId: The ID for the entity, if any.
-      etag: HTTP 1.1 Entity tag for the access-control entry.
-      generation: The content generation of the object.
-      id: The ID of the access-control entry.
-      kind: The kind of item this is. For object access control entries, this
-        is always storage#objectAccessControl.
-      object: The name of the object.
-      projectTeam: The project team associated with the entity, if any.
-      role: The access permission for the entity. Can be READER or OWNER.
-      selfLink: The link to this access-control entry.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ObjectAccessControl(
-        bucket=bucket.decode('utf8'),
-        )
-    if FLAGS['domain'].present:
-      request.domain = FLAGS.domain.decode('utf8')
-    if FLAGS['email'].present:
-      request.email = FLAGS.email.decode('utf8')
-    if FLAGS['entity'].present:
-      request.entity = FLAGS.entity.decode('utf8')
-    if FLAGS['entityId'].present:
-      request.entityId = FLAGS.entityId.decode('utf8')
-    if FLAGS['etag'].present:
-      request.etag = FLAGS.etag.decode('utf8')
-    if FLAGS['generation'].present:
-      request.generation = int(FLAGS.generation)
-    if FLAGS['id'].present:
-      request.id = FLAGS.id.decode('utf8')
-    if FLAGS['kind'].present:
-      request.kind = FLAGS.kind.decode('utf8')
-    if FLAGS['object'].present:
-      request.object = FLAGS.object.decode('utf8')
-    if FLAGS['projectTeam'].present:
-      request.projectTeam = apitools_base.JsonToMessage(messages.ObjectAccessControl.ProjectTeamValue, FLAGS.projectTeam)
-    if FLAGS['role'].present:
-      request.role = FLAGS.role.decode('utf8')
-    if FLAGS['selfLink'].present:
-      request.selfLink = FLAGS.selfLink.decode('utf8')
-    result = client.defaultObjectAccessControls.Insert(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class DefaultObjectAccessControlsList(apitools_base_cli.NewCmd):
-  """Command wrapping defaultObjectAccessControls.List."""
-
-  usage = """defaultObjectAccessControls_list <bucket>"""
-
-  def __init__(self, name, fv):
-    super(DefaultObjectAccessControlsList, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'ifMetagenerationMatch',
-        None,
-        u"If present, only return default ACL listing if the bucket's current"
-        u' metageneration matches this value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationNotMatch',
-        None,
-        u"If present, only return default ACL listing if the bucket's current"
-        u' metageneration does not match the given value.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket):
-    """Retrieves default object ACL entries on the specified bucket.
-
-    Args:
-      bucket: Name of a bucket.
-
-    Flags:
-      ifMetagenerationMatch: If present, only return default ACL listing if
-        the bucket's current metageneration matches this value.
-      ifMetagenerationNotMatch: If present, only return default ACL listing if
-        the bucket's current metageneration does not match the given value.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageDefaultObjectAccessControlsListRequest(
-        bucket=bucket.decode('utf8'),
-        )
-    if FLAGS['ifMetagenerationMatch'].present:
-      request.ifMetagenerationMatch = int(FLAGS.ifMetagenerationMatch)
-    if FLAGS['ifMetagenerationNotMatch'].present:
-      request.ifMetagenerationNotMatch = int(FLAGS.ifMetagenerationNotMatch)
-    result = client.defaultObjectAccessControls.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class DefaultObjectAccessControlsPatch(apitools_base_cli.NewCmd):
-  """Command wrapping defaultObjectAccessControls.Patch."""
-
-  usage = """defaultObjectAccessControls_patch <bucket> <entity>"""
-
-  def __init__(self, name, fv):
-    super(DefaultObjectAccessControlsPatch, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'domain',
-        None,
-        u'The domain associated with the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'email',
-        None,
-        u'The email address associated with the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'entityId',
-        None,
-        u'The ID for the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'etag',
-        None,
-        u'HTTP 1.1 Entity tag for the access-control entry.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'generation',
-        None,
-        u'The content generation of the object.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'id',
-        None,
-        u'The ID of the access-control entry.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'kind',
-        u'storage#objectAccessControl',
-        u'The kind of item this is. For object access control entries, this '
-        u'is always storage#objectAccessControl.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'object',
-        None,
-        u'The name of the object.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'projectTeam',
-        None,
-        u'The project team associated with the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'role',
-        None,
-        u'The access permission for the entity. Can be READER or OWNER.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'selfLink',
-        None,
-        u'The link to this access-control entry.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket, entity):
-    """Updates a default object ACL entry on the specified bucket. This method
-    supports patch semantics.
-
-    Args:
-      bucket: The name of the bucket.
-      entity: The entity holding the permission, in one of the following
-        forms:  - user-userId  - user-email  - group-groupId  - group-email  -
-        domain-domain  - project-team-projectId  - allUsers  -
-        allAuthenticatedUsers Examples:  - The user liz@example.com would be
-        user-liz@example.com.  - The group example@googlegroups.com would be
-        group-example@googlegroups.com.  - To refer to all members of the
-        Google Apps for Business domain example.com, the entity would be
-        domain-example.com.
-
-    Flags:
-      domain: The domain associated with the entity, if any.
-      email: The email address associated with the entity, if any.
-      entityId: The ID for the entity, if any.
-      etag: HTTP 1.1 Entity tag for the access-control entry.
-      generation: The content generation of the object.
-      id: The ID of the access-control entry.
-      kind: The kind of item this is. For object access control entries, this
-        is always storage#objectAccessControl.
-      object: The name of the object.
-      projectTeam: The project team associated with the entity, if any.
-      role: The access permission for the entity. Can be READER or OWNER.
-      selfLink: The link to this access-control entry.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ObjectAccessControl(
-        bucket=bucket.decode('utf8'),
-        entity=entity.decode('utf8'),
-        )
-    if FLAGS['domain'].present:
-      request.domain = FLAGS.domain.decode('utf8')
-    if FLAGS['email'].present:
-      request.email = FLAGS.email.decode('utf8')
-    if FLAGS['entityId'].present:
-      request.entityId = FLAGS.entityId.decode('utf8')
-    if FLAGS['etag'].present:
-      request.etag = FLAGS.etag.decode('utf8')
-    if FLAGS['generation'].present:
-      request.generation = int(FLAGS.generation)
-    if FLAGS['id'].present:
-      request.id = FLAGS.id.decode('utf8')
-    if FLAGS['kind'].present:
-      request.kind = FLAGS.kind.decode('utf8')
-    if FLAGS['object'].present:
-      request.object = FLAGS.object.decode('utf8')
-    if FLAGS['projectTeam'].present:
-      request.projectTeam = apitools_base.JsonToMessage(messages.ObjectAccessControl.ProjectTeamValue, FLAGS.projectTeam)
-    if FLAGS['role'].present:
-      request.role = FLAGS.role.decode('utf8')
-    if FLAGS['selfLink'].present:
-      request.selfLink = FLAGS.selfLink.decode('utf8')
-    result = client.defaultObjectAccessControls.Patch(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class DefaultObjectAccessControlsUpdate(apitools_base_cli.NewCmd):
-  """Command wrapping defaultObjectAccessControls.Update."""
-
-  usage = """defaultObjectAccessControls_update <bucket> <entity>"""
-
-  def __init__(self, name, fv):
-    super(DefaultObjectAccessControlsUpdate, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'domain',
-        None,
-        u'The domain associated with the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'email',
-        None,
-        u'The email address associated with the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'entityId',
-        None,
-        u'The ID for the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'etag',
-        None,
-        u'HTTP 1.1 Entity tag for the access-control entry.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'generation',
-        None,
-        u'The content generation of the object.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'id',
-        None,
-        u'The ID of the access-control entry.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'kind',
-        u'storage#objectAccessControl',
-        u'The kind of item this is. For object access control entries, this '
-        u'is always storage#objectAccessControl.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'object',
-        None,
-        u'The name of the object.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'projectTeam',
-        None,
-        u'The project team associated with the entity, if any.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'role',
-        None,
-        u'The access permission for the entity. Can be READER or OWNER.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'selfLink',
-        None,
-        u'The link to this access-control entry.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket, entity):
-    """Updates a default object ACL entry on the specified bucket.
-
-    Args:
-      bucket: The name of the bucket.
-      entity: The entity holding the permission, in one of the following
-        forms:  - user-userId  - user-email  - group-groupId  - group-email  -
-        domain-domain  - project-team-projectId  - allUsers  -
-        allAuthenticatedUsers Examples:  - The user liz@example.com would be
-        user-liz@example.com.  - The group example@googlegroups.com would be
-        group-example@googlegroups.com.  - To refer to all members of the
-        Google Apps for Business domain example.com, the entity would be
-        domain-example.com.
-
-    Flags:
-      domain: The domain associated with the entity, if any.
-      email: The email address associated with the entity, if any.
-      entityId: The ID for the entity, if any.
-      etag: HTTP 1.1 Entity tag for the access-control entry.
-      generation: The content generation of the object.
-      id: The ID of the access-control entry.
-      kind: The kind of item this is. For object access control entries, this
-        is always storage#objectAccessControl.
-      object: The name of the object.
-      projectTeam: The project team associated with the entity, if any.
-      role: The access permission for the entity. Can be READER or OWNER.
-      selfLink: The link to this access-control entry.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.ObjectAccessControl(
-        bucket=bucket.decode('utf8'),
-        entity=entity.decode('utf8'),
-        )
-    if FLAGS['domain'].present:
-      request.domain = FLAGS.domain.decode('utf8')
-    if FLAGS['email'].present:
-      request.email = FLAGS.email.decode('utf8')
-    if FLAGS['entityId'].present:
-      request.entityId = FLAGS.entityId.decode('utf8')
-    if FLAGS['etag'].present:
-      request.etag = FLAGS.etag.decode('utf8')
-    if FLAGS['generation'].present:
-      request.generation = int(FLAGS.generation)
-    if FLAGS['id'].present:
-      request.id = FLAGS.id.decode('utf8')
-    if FLAGS['kind'].present:
-      request.kind = FLAGS.kind.decode('utf8')
-    if FLAGS['object'].present:
-      request.object = FLAGS.object.decode('utf8')
-    if FLAGS['projectTeam'].present:
-      request.projectTeam = apitools_base.JsonToMessage(messages.ObjectAccessControl.ProjectTeamValue, FLAGS.projectTeam)
-    if FLAGS['role'].present:
-      request.role = FLAGS.role.decode('utf8')
-    if FLAGS['selfLink'].present:
-      request.selfLink = FLAGS.selfLink.decode('utf8')
-    result = client.defaultObjectAccessControls.Update(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class NotificationsDelete(apitools_base_cli.NewCmd):
-  """Command wrapping notifications.Delete."""
-
-  usage = """notifications_delete <notification>"""
-
-  def __init__(self, name, fv):
-    super(NotificationsDelete, self).__init__(name, fv)
-
-  def RunWithArgs(self, notification):
-    """Permanently deletes a notification subscription.
-
-    Args:
-      notification: ID of the notification to delete.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageNotificationsDeleteRequest(
-        notification=notification.decode('utf8'),
-        )
-    result = client.notifications.Delete(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class NotificationsGet(apitools_base_cli.NewCmd):
-  """Command wrapping notifications.Get."""
-
-  usage = """notifications_get <notification>"""
-
-  def __init__(self, name, fv):
-    super(NotificationsGet, self).__init__(name, fv)
-
-  def RunWithArgs(self, notification):
-    """View a notification configuration.
-
-    Args:
-      notification: Notification ID
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageNotificationsGetRequest(
-        notification=notification.decode('utf8'),
-        )
-    result = client.notifications.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class NotificationsInsert(apitools_base_cli.NewCmd):
-  """Command wrapping notifications.Insert."""
-
-  usage = """notifications_insert"""
-
-  def __init__(self, name, fv):
-    super(NotificationsInsert, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'bucket',
-        None,
-        u'The name of the bucket this subscription is particular to.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'custom_attributes',
-        None,
-        u'An optional list of additional attributes to attach to each Cloud '
-        u'PubSub message published for this notification subscription.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'etag',
-        None,
-        u'HTTP 1.1 Entity tag for this subscription notification.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'event_types',
-        None,
-        u'If present, only send notifications about listed event types. If '
-        u'empty, sent notifications for all event types.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'id',
-        None,
-        u'The ID of the notification.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'kind',
-        u'storage#notification',
-        u'The kind of item this is. For notifications, this is always '
-        u'storage#notification.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'object_metadata_format',
-        u'JSON_API_V1',
-        u'If payload_content is OBJECT_METADATA, controls the format of that '
-        u'metadata. Otherwise, must not be set.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'object_name_prefix',
-        None,
-        u'If present, only apply this notification configuration to object '
-        u'names that begin with this prefix.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'payload_content',
-        u'OBJECT_METADATA',
-        u'The desired content of the Payload. Defaults to OBJECT_METADATA.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'selfLink',
-        None,
-        u'The canonical URL of this notification.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'topic',
-        None,
-        u'The Cloud PubSub topic to which this subscription publishes. '
-        u"Formatted as: '//pubsub.googleapis.com/projects/{project-"
-        u"identifier}/topics/{my-topic}'",
-        flag_values=fv)
-
-  def RunWithArgs(self):
-    """Creates a notification subscription for a given bucket.
-
-    Flags:
-      bucket: The name of the bucket this subscription is particular to.
-      custom_attributes: An optional list of additional attributes to attach
-        to each Cloud PubSub message published for this notification
-        subscription.
-      etag: HTTP 1.1 Entity tag for this subscription notification.
-      event_types: If present, only send notifications about listed event
-        types. If empty, sent notifications for all event types.
-      id: The ID of the notification.
-      kind: The kind of item this is. For notifications, this is always
-        storage#notification.
-      object_metadata_format: If payload_content is OBJECT_METADATA, controls
-        the format of that metadata. Otherwise, must not be set.
-      object_name_prefix: If present, only apply this notification
-        configuration to object names that begin with this prefix.
-      payload_content: The desired content of the Payload. Defaults to
-        OBJECT_METADATA.
-      selfLink: The canonical URL of this notification.
-      topic: The Cloud PubSub topic to which this subscription publishes.
-        Formatted as: '//pubsub.googleapis.com/projects/{project-
-        identifier}/topics/{my-topic}'
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.Notification(
-        )
-    if FLAGS['bucket'].present:
-      request.bucket = FLAGS.bucket.decode('utf8')
-    if FLAGS['custom_attributes'].present:
-      request.custom_attributes = apitools_base.JsonToMessage(messages.Notification.CustomAttributesValue, FLAGS.custom_attributes)
-    if FLAGS['etag'].present:
-      request.etag = FLAGS.etag.decode('utf8')
-    if FLAGS['event_types'].present:
-      request.event_types = [x.decode('utf8') for x in FLAGS.event_types]
-    if FLAGS['id'].present:
-      request.id = FLAGS.id.decode('utf8')
-    if FLAGS['kind'].present:
-      request.kind = FLAGS.kind.decode('utf8')
-    if FLAGS['object_metadata_format'].present:
-      request.object_metadata_format = FLAGS.object_metadata_format.decode('utf8')
-    if FLAGS['object_name_prefix'].present:
-      request.object_name_prefix = FLAGS.object_name_prefix.decode('utf8')
-    if FLAGS['payload_content'].present:
-      request.payload_content = FLAGS.payload_content.decode('utf8')
-    if FLAGS['selfLink'].present:
-      request.selfLink = FLAGS.selfLink.decode('utf8')
-    if FLAGS['topic'].present:
-      request.topic = FLAGS.topic.decode('utf8')
-    result = client.notifications.Insert(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class NotificationsList(apitools_base_cli.NewCmd):
-  """Command wrapping notifications.List."""
-
-  usage = """notifications_list <bucket>"""
-
-  def __init__(self, name, fv):
-    super(NotificationsList, self).__init__(name, fv)
-
-  def RunWithArgs(self, bucket):
-    """Retrieves a list of notification subscriptions for a given bucket.
-
-    Args:
-      bucket: Name of a GCS bucket.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageNotificationsListRequest(
-        bucket=bucket.decode('utf8'),
-        )
-    result = client.notifications.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ObjectAccessControlsDelete(apitools_base_cli.NewCmd):
-  """Command wrapping objectAccessControls.Delete."""
-
-  usage = """objectAccessControls_delete <bucket> <object> <entity>"""
-
-  def __init__(self, name, fv):
-    super(ObjectAccessControlsDelete, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'generation',
-        None,
-        u'If present, selects a specific revision of this object (as opposed '
-        u'to the latest version, the default).',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket, object, entity):
-    """Permanently deletes the ACL entry for the specified entity on the
-    specified object.
-
-    Args:
-      bucket: Name of a bucket.
-      object: Name of the object. For information about how to URL encode
-        object names to be path safe, see Encoding URI Path Parts.
-      entity: The entity holding the permission. Can be user-userId, user-
-        emailAddress, group-groupId, group-emailAddress, allUsers, or
-        allAuthenticatedUsers.
-
-    Flags:
-      generation: If present, selects a specific revision of this object (as
-        opposed to the latest version, the default).
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageObjectAccessControlsDeleteRequest(
-        bucket=bucket.decode('utf8'),
-        object=object.decode('utf8'),
-        entity=entity.decode('utf8'),
-        )
-    if FLAGS['generation'].present:
-      request.generation = int(FLAGS.generation)
-    result = client.objectAccessControls.Delete(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ObjectAccessControlsGet(apitools_base_cli.NewCmd):
-  """Command wrapping objectAccessControls.Get."""
-
-  usage = """objectAccessControls_get <bucket> <object> <entity>"""
-
-  def __init__(self, name, fv):
-    super(ObjectAccessControlsGet, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'generation',
-        None,
-        u'If present, selects a specific revision of this object (as opposed '
-        u'to the latest version, the default).',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket, object, entity):
-    """Returns the ACL entry for the specified entity on the specified object.
-
-    Args:
-      bucket: Name of a bucket.
-      object: Name of the object. For information about how to URL encode
-        object names to be path safe, see Encoding URI Path Parts.
-      entity: The entity holding the permission. Can be user-userId, user-
-        emailAddress, group-groupId, group-emailAddress, allUsers, or
-        allAuthenticatedUsers.
-
-    Flags:
-      generation: If present, selects a specific revision of this object (as
-        opposed to the latest version, the default).
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageObjectAccessControlsGetRequest(
-        bucket=bucket.decode('utf8'),
-        object=object.decode('utf8'),
-        entity=entity.decode('utf8'),
-        )
-    if FLAGS['generation'].present:
-      request.generation = int(FLAGS.generation)
-    result = client.objectAccessControls.Get(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ObjectAccessControlsInsert(apitools_base_cli.NewCmd):
-  """Command wrapping objectAccessControls.Insert."""
-
-  usage = """objectAccessControls_insert <bucket> <object>"""
-
-  def __init__(self, name, fv):
-    super(ObjectAccessControlsInsert, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'generation',
-        None,
-        u'If present, selects a specific revision of this object (as opposed '
-        u'to the latest version, the default).',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'objectAccessControl',
-        None,
-        u'A ObjectAccessControl resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket, object):
-    """Creates a new ACL entry on the specified object.
-
-    Args:
-      bucket: Name of a bucket.
-      object: Name of the object. For information about how to URL encode
-        object names to be path safe, see Encoding URI Path Parts.
-
-    Flags:
-      generation: If present, selects a specific revision of this object (as
-        opposed to the latest version, the default).
-      objectAccessControl: A ObjectAccessControl resource to be passed as the
-        request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageObjectAccessControlsInsertRequest(
-        bucket=bucket.decode('utf8'),
-        object=object.decode('utf8'),
-        )
-    if FLAGS['generation'].present:
-      request.generation = int(FLAGS.generation)
-    if FLAGS['objectAccessControl'].present:
-      request.objectAccessControl = apitools_base.JsonToMessage(messages.ObjectAccessControl, FLAGS.objectAccessControl)
-    result = client.objectAccessControls.Insert(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ObjectAccessControlsList(apitools_base_cli.NewCmd):
-  """Command wrapping objectAccessControls.List."""
-
-  usage = """objectAccessControls_list <bucket> <object>"""
-
-  def __init__(self, name, fv):
-    super(ObjectAccessControlsList, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'generation',
-        None,
-        u'If present, selects a specific revision of this object (as opposed '
-        u'to the latest version, the default).',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket, object):
-    """Retrieves ACL entries on the specified object.
-
-    Args:
-      bucket: Name of a bucket.
-      object: Name of the object. For information about how to URL encode
-        object names to be path safe, see Encoding URI Path Parts.
-
-    Flags:
-      generation: If present, selects a specific revision of this object (as
-        opposed to the latest version, the default).
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageObjectAccessControlsListRequest(
-        bucket=bucket.decode('utf8'),
-        object=object.decode('utf8'),
-        )
-    if FLAGS['generation'].present:
-      request.generation = int(FLAGS.generation)
-    result = client.objectAccessControls.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ObjectAccessControlsPatch(apitools_base_cli.NewCmd):
-  """Command wrapping objectAccessControls.Patch."""
-
-  usage = """objectAccessControls_patch <bucket> <object> <entity>"""
-
-  def __init__(self, name, fv):
-    super(ObjectAccessControlsPatch, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'generation',
-        None,
-        u'If present, selects a specific revision of this object (as opposed '
-        u'to the latest version, the default).',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'objectAccessControl',
-        None,
-        u'A ObjectAccessControl resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket, object, entity):
-    """Updates an ACL entry on the specified object. This method supports
-    patch semantics.
-
-    Args:
-      bucket: Name of a bucket.
-      object: Name of the object. For information about how to URL encode
-        object names to be path safe, see Encoding URI Path Parts.
-      entity: The entity holding the permission. Can be user-userId, user-
-        emailAddress, group-groupId, group-emailAddress, allUsers, or
-        allAuthenticatedUsers.
-
-    Flags:
-      generation: If present, selects a specific revision of this object (as
-        opposed to the latest version, the default).
-      objectAccessControl: A ObjectAccessControl resource to be passed as the
-        request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageObjectAccessControlsPatchRequest(
-        bucket=bucket.decode('utf8'),
-        object=object.decode('utf8'),
-        entity=entity.decode('utf8'),
-        )
-    if FLAGS['generation'].present:
-      request.generation = int(FLAGS.generation)
-    if FLAGS['objectAccessControl'].present:
-      request.objectAccessControl = apitools_base.JsonToMessage(messages.ObjectAccessControl, FLAGS.objectAccessControl)
-    result = client.objectAccessControls.Patch(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ObjectAccessControlsUpdate(apitools_base_cli.NewCmd):
-  """Command wrapping objectAccessControls.Update."""
-
-  usage = """objectAccessControls_update <bucket> <object> <entity>"""
-
-  def __init__(self, name, fv):
-    super(ObjectAccessControlsUpdate, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'generation',
-        None,
-        u'If present, selects a specific revision of this object (as opposed '
-        u'to the latest version, the default).',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'objectAccessControl',
-        None,
-        u'A ObjectAccessControl resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket, object, entity):
-    """Updates an ACL entry on the specified object.
-
-    Args:
-      bucket: Name of a bucket.
-      object: Name of the object. For information about how to URL encode
-        object names to be path safe, see Encoding URI Path Parts.
-      entity: The entity holding the permission. Can be user-userId, user-
-        emailAddress, group-groupId, group-emailAddress, allUsers, or
-        allAuthenticatedUsers.
-
-    Flags:
-      generation: If present, selects a specific revision of this object (as
-        opposed to the latest version, the default).
-      objectAccessControl: A ObjectAccessControl resource to be passed as the
-        request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageObjectAccessControlsUpdateRequest(
-        bucket=bucket.decode('utf8'),
-        object=object.decode('utf8'),
-        entity=entity.decode('utf8'),
-        )
-    if FLAGS['generation'].present:
-      request.generation = int(FLAGS.generation)
-    if FLAGS['objectAccessControl'].present:
-      request.objectAccessControl = apitools_base.JsonToMessage(messages.ObjectAccessControl, FLAGS.objectAccessControl)
-    result = client.objectAccessControls.Update(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ObjectsCompose(apitools_base_cli.NewCmd):
-  """Command wrapping objects.Compose."""
-
-  usage = """objects_compose <destinationBucket> <destinationObject>"""
-
-  def __init__(self, name, fv):
-    super(ObjectsCompose, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'composeRequest',
-        None,
-        u'A ComposeRequest resource to be passed as the request body.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'destinationPredefinedAcl',
-        u'authenticatedRead',
-        [u'authenticatedRead', u'bucketOwnerFullControl', u'bucketOwnerRead', u'private', u'projectPrivate', u'publicRead'],
-        u'Apply a predefined set of access controls to the destination '
-        u'object.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifGenerationMatch',
-        None,
-        u"Makes the operation conditional on whether the object's current "
-        u'generation matches the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationMatch',
-        None,
-        u"Makes the operation conditional on whether the object's current "
-        u'metageneration matches the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'download_filename',
-        '',
-        'Filename to use for download.',
-        flag_values=fv)
-    flags.DEFINE_boolean(
-        'overwrite',
-        'False',
-        'If True, overwrite the existing file when downloading.',
-        flag_values=fv)
-
-  def RunWithArgs(self, destinationBucket, destinationObject):
-    """Concatenates a list of existing objects into a new object in the same
-    bucket.
-
-    Args:
-      destinationBucket: Name of the bucket in which to store the new object.
-      destinationObject: Name of the new object. For information about how to
-        URL encode object names to be path safe, see Encoding URI Path Parts.
-
-    Flags:
-      composeRequest: A ComposeRequest resource to be passed as the request
-        body.
-      destinationPredefinedAcl: Apply a predefined set of access controls to
-        the destination object.
-      ifGenerationMatch: Makes the operation conditional on whether the
-        object's current generation matches the given value.
-      ifMetagenerationMatch: Makes the operation conditional on whether the
-        object's current metageneration matches the given value.
-      download_filename: Filename to use for download.
-      overwrite: If True, overwrite the existing file when downloading.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageObjectsComposeRequest(
-        destinationBucket=destinationBucket.decode('utf8'),
-        destinationObject=destinationObject.decode('utf8'),
-        )
-    if FLAGS['composeRequest'].present:
-      request.composeRequest = apitools_base.JsonToMessage(messages.ComposeRequest, FLAGS.composeRequest)
-    if FLAGS['destinationPredefinedAcl'].present:
-      request.destinationPredefinedAcl = messages.StorageObjectsComposeRequest.DestinationPredefinedAclValueValuesEnum(FLAGS.destinationPredefinedAcl)
-    if FLAGS['ifGenerationMatch'].present:
-      request.ifGenerationMatch = int(FLAGS.ifGenerationMatch)
-    if FLAGS['ifMetagenerationMatch'].present:
-      request.ifMetagenerationMatch = int(FLAGS.ifMetagenerationMatch)
-    download = None
-    if FLAGS.download_filename:
-      download = apitools_base.Download.FromFile(FLAGS.download_filename, overwrite=FLAGS.overwrite,
-          progress_callback=apitools_base.DownloadProgressPrinter,
-          finish_callback=apitools_base.DownloadCompletePrinter)
-    result = client.objects.Compose(
-        request, global_params=global_params, download=download)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ObjectsCopy(apitools_base_cli.NewCmd):
-  """Command wrapping objects.Copy."""
-
-  usage = """objects_copy <sourceBucket> <sourceObject> <destinationBucket> <destinationObject>"""
-
-  def __init__(self, name, fv):
-    super(ObjectsCopy, self).__init__(name, fv)
-    flags.DEFINE_enum(
-        'destinationPredefinedAcl',
-        u'authenticatedRead',
-        [u'authenticatedRead', u'bucketOwnerFullControl', u'bucketOwnerRead', u'private', u'projectPrivate', u'publicRead'],
-        u'Apply a predefined set of access controls to the destination '
-        u'object.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifGenerationMatch',
-        None,
-        u"Makes the operation conditional on whether the destination object's"
-        u' current generation matches the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifGenerationNotMatch',
-        None,
-        u"Makes the operation conditional on whether the destination object's"
-        u' current generation does not match the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationMatch',
-        None,
-        u"Makes the operation conditional on whether the destination object's"
-        u' current metageneration matches the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationNotMatch',
-        None,
-        u"Makes the operation conditional on whether the destination object's"
-        u' current metageneration does not match the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifSourceGenerationMatch',
-        None,
-        u"Makes the operation conditional on whether the source object's "
-        u'generation matches the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifSourceGenerationNotMatch',
-        None,
-        u"Makes the operation conditional on whether the source object's "
-        u'generation does not match the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifSourceMetagenerationMatch',
-        None,
-        u"Makes the operation conditional on whether the source object's "
-        u'current metageneration matches the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifSourceMetagenerationNotMatch',
-        None,
-        u"Makes the operation conditional on whether the source object's "
-        u'current metageneration does not match the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'object',
-        None,
-        u'A Object resource to be passed as the request body.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'projection',
-        u'full',
-        [u'full', u'noAcl'],
-        u'Set of properties to return. Defaults to noAcl, unless the object '
-        u'resource specifies the acl property, when it defaults to full.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'sourceGeneration',
-        None,
-        u'If present, selects a specific revision of the source object (as '
-        u'opposed to the latest version, the default).',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'download_filename',
-        '',
-        'Filename to use for download.',
-        flag_values=fv)
-    flags.DEFINE_boolean(
-        'overwrite',
-        'False',
-        'If True, overwrite the existing file when downloading.',
-        flag_values=fv)
-
-  def RunWithArgs(self, sourceBucket, sourceObject, destinationBucket, destinationObject):
-    """Copies a source object to a destination object. Optionally overrides
-    metadata.
-
-    Args:
-      sourceBucket: Name of the bucket in which to find the source object.
-      sourceObject: Name of the source object. For information about how to
-        URL encode object names to be path safe, see Encoding URI Path Parts.
-      destinationBucket: Name of the bucket in which to store the new object.
-        Overrides the provided object metadata's bucket value, if any.For
-        information about how to URL encode object names to be path safe, see
-        Encoding URI Path Parts.
-      destinationObject: Name of the new object. Required when the object
-        metadata is not otherwise provided. Overrides the object metadata's
-        name value, if any.
-
-    Flags:
-      destinationPredefinedAcl: Apply a predefined set of access controls to
-        the destination object.
-      ifGenerationMatch: Makes the operation conditional on whether the
-        destination object's current generation matches the given value.
-      ifGenerationNotMatch: Makes the operation conditional on whether the
-        destination object's current generation does not match the given
-        value.
-      ifMetagenerationMatch: Makes the operation conditional on whether the
-        destination object's current metageneration matches the given value.
-      ifMetagenerationNotMatch: Makes the operation conditional on whether the
-        destination object's current metageneration does not match the given
-        value.
-      ifSourceGenerationMatch: Makes the operation conditional on whether the
-        source object's generation matches the given value.
-      ifSourceGenerationNotMatch: Makes the operation conditional on whether
-        the source object's generation does not match the given value.
-      ifSourceMetagenerationMatch: Makes the operation conditional on whether
-        the source object's current metageneration matches the given value.
-      ifSourceMetagenerationNotMatch: Makes the operation conditional on
-        whether the source object's current metageneration does not match the
-        given value.
-      object: A Object resource to be passed as the request body.
-      projection: Set of properties to return. Defaults to noAcl, unless the
-        object resource specifies the acl property, when it defaults to full.
-      sourceGeneration: If present, selects a specific revision of the source
-        object (as opposed to the latest version, the default).
-      download_filename: Filename to use for download.
-      overwrite: If True, overwrite the existing file when downloading.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageObjectsCopyRequest(
-        sourceBucket=sourceBucket.decode('utf8'),
-        sourceObject=sourceObject.decode('utf8'),
-        destinationBucket=destinationBucket.decode('utf8'),
-        destinationObject=destinationObject.decode('utf8'),
-        )
-    if FLAGS['destinationPredefinedAcl'].present:
-      request.destinationPredefinedAcl = messages.StorageObjectsCopyRequest.DestinationPredefinedAclValueValuesEnum(FLAGS.destinationPredefinedAcl)
-    if FLAGS['ifGenerationMatch'].present:
-      request.ifGenerationMatch = int(FLAGS.ifGenerationMatch)
-    if FLAGS['ifGenerationNotMatch'].present:
-      request.ifGenerationNotMatch = int(FLAGS.ifGenerationNotMatch)
-    if FLAGS['ifMetagenerationMatch'].present:
-      request.ifMetagenerationMatch = int(FLAGS.ifMetagenerationMatch)
-    if FLAGS['ifMetagenerationNotMatch'].present:
-      request.ifMetagenerationNotMatch = int(FLAGS.ifMetagenerationNotMatch)
-    if FLAGS['ifSourceGenerationMatch'].present:
-      request.ifSourceGenerationMatch = int(FLAGS.ifSourceGenerationMatch)
-    if FLAGS['ifSourceGenerationNotMatch'].present:
-      request.ifSourceGenerationNotMatch = int(FLAGS.ifSourceGenerationNotMatch)
-    if FLAGS['ifSourceMetagenerationMatch'].present:
-      request.ifSourceMetagenerationMatch = int(FLAGS.ifSourceMetagenerationMatch)
-    if FLAGS['ifSourceMetagenerationNotMatch'].present:
-      request.ifSourceMetagenerationNotMatch = int(FLAGS.ifSourceMetagenerationNotMatch)
-    if FLAGS['object'].present:
-      request.object = apitools_base.JsonToMessage(messages.Object, FLAGS.object)
-    if FLAGS['projection'].present:
-      request.projection = messages.StorageObjectsCopyRequest.ProjectionValueValuesEnum(FLAGS.projection)
-    if FLAGS['sourceGeneration'].present:
-      request.sourceGeneration = int(FLAGS.sourceGeneration)
-    download = None
-    if FLAGS.download_filename:
-      download = apitools_base.Download.FromFile(FLAGS.download_filename, overwrite=FLAGS.overwrite,
-          progress_callback=apitools_base.DownloadProgressPrinter,
-          finish_callback=apitools_base.DownloadCompletePrinter)
-    result = client.objects.Copy(
-        request, global_params=global_params, download=download)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ObjectsDelete(apitools_base_cli.NewCmd):
-  """Command wrapping objects.Delete."""
-
-  usage = """objects_delete <bucket> <object>"""
-
-  def __init__(self, name, fv):
-    super(ObjectsDelete, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'generation',
-        None,
-        u'If present, permanently deletes a specific revision of this object '
-        u'(as opposed to the latest version, the default).',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifGenerationMatch',
-        None,
-        u"Makes the operation conditional on whether the object's current "
-        u'generation matches the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifGenerationNotMatch',
-        None,
-        u"Makes the operation conditional on whether the object's current "
-        u'generation does not match the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationMatch',
-        None,
-        u"Makes the operation conditional on whether the object's current "
-        u'metageneration matches the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationNotMatch',
-        None,
-        u"Makes the operation conditional on whether the object's current "
-        u'metageneration does not match the given value.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket, object):
-    """Deletes an object and its metadata. Deletions are permanent if
-    versioning is not enabled for the bucket, or if the generation parameter
-    is used.
-
-    Args:
-      bucket: Name of the bucket in which the object resides.
-      object: Name of the object. For information about how to URL encode
-        object names to be path safe, see Encoding URI Path Parts.
-
-    Flags:
-      generation: If present, permanently deletes a specific revision of this
-        object (as opposed to the latest version, the default).
-      ifGenerationMatch: Makes the operation conditional on whether the
-        object's current generation matches the given value.
-      ifGenerationNotMatch: Makes the operation conditional on whether the
-        object's current generation does not match the given value.
-      ifMetagenerationMatch: Makes the operation conditional on whether the
-        object's current metageneration matches the given value.
-      ifMetagenerationNotMatch: Makes the operation conditional on whether the
-        object's current metageneration does not match the given value.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageObjectsDeleteRequest(
-        bucket=bucket.decode('utf8'),
-        object=object.decode('utf8'),
-        )
-    if FLAGS['generation'].present:
-      request.generation = int(FLAGS.generation)
-    if FLAGS['ifGenerationMatch'].present:
-      request.ifGenerationMatch = int(FLAGS.ifGenerationMatch)
-    if FLAGS['ifGenerationNotMatch'].present:
-      request.ifGenerationNotMatch = int(FLAGS.ifGenerationNotMatch)
-    if FLAGS['ifMetagenerationMatch'].present:
-      request.ifMetagenerationMatch = int(FLAGS.ifMetagenerationMatch)
-    if FLAGS['ifMetagenerationNotMatch'].present:
-      request.ifMetagenerationNotMatch = int(FLAGS.ifMetagenerationNotMatch)
-    result = client.objects.Delete(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ObjectsGet(apitools_base_cli.NewCmd):
-  """Command wrapping objects.Get."""
-
-  usage = """objects_get <bucket> <object>"""
-
-  def __init__(self, name, fv):
-    super(ObjectsGet, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'generation',
-        None,
-        u'If present, selects a specific revision of this object (as opposed '
-        u'to the latest version, the default).',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifGenerationMatch',
-        None,
-        u"Makes the operation conditional on whether the object's generation "
-        u'matches the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifGenerationNotMatch',
-        None,
-        u"Makes the operation conditional on whether the object's generation "
-        u'does not match the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationMatch',
-        None,
-        u"Makes the operation conditional on whether the object's current "
-        u'metageneration matches the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationNotMatch',
-        None,
-        u"Makes the operation conditional on whether the object's current "
-        u'metageneration does not match the given value.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'projection',
-        u'full',
-        [u'full', u'noAcl'],
-        u'Set of properties to return. Defaults to noAcl.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'download_filename',
-        '',
-        'Filename to use for download.',
-        flag_values=fv)
-    flags.DEFINE_boolean(
-        'overwrite',
-        'False',
-        'If True, overwrite the existing file when downloading.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket, object):
-    """Retrieves an object or its metadata.
-
-    Args:
-      bucket: Name of the bucket in which the object resides.
-      object: Name of the object. For information about how to URL encode
-        object names to be path safe, see Encoding URI Path Parts.
-
-    Flags:
-      generation: If present, selects a specific revision of this object (as
-        opposed to the latest version, the default).
-      ifGenerationMatch: Makes the operation conditional on whether the
-        object's generation matches the given value.
-      ifGenerationNotMatch: Makes the operation conditional on whether the
-        object's generation does not match the given value.
-      ifMetagenerationMatch: Makes the operation conditional on whether the
-        object's current metageneration matches the given value.
-      ifMetagenerationNotMatch: Makes the operation conditional on whether the
-        object's current metageneration does not match the given value.
-      projection: Set of properties to return. Defaults to noAcl.
-      download_filename: Filename to use for download.
-      overwrite: If True, overwrite the existing file when downloading.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageObjectsGetRequest(
-        bucket=bucket.decode('utf8'),
-        object=object.decode('utf8'),
-        )
-    if FLAGS['generation'].present:
-      request.generation = int(FLAGS.generation)
-    if FLAGS['ifGenerationMatch'].present:
-      request.ifGenerationMatch = int(FLAGS.ifGenerationMatch)
-    if FLAGS['ifGenerationNotMatch'].present:
-      request.ifGenerationNotMatch = int(FLAGS.ifGenerationNotMatch)
-    if FLAGS['ifMetagenerationMatch'].present:
-      request.ifMetagenerationMatch = int(FLAGS.ifMetagenerationMatch)
-    if FLAGS['ifMetagenerationNotMatch'].present:
-      request.ifMetagenerationNotMatch = int(FLAGS.ifMetagenerationNotMatch)
-    if FLAGS['projection'].present:
-      request.projection = messages.StorageObjectsGetRequest.ProjectionValueValuesEnum(FLAGS.projection)
-    download = None
-    if FLAGS.download_filename:
-      download = apitools_base.Download.FromFile(FLAGS.download_filename, overwrite=FLAGS.overwrite,
-          progress_callback=apitools_base.DownloadProgressPrinter,
-          finish_callback=apitools_base.DownloadCompletePrinter)
-    result = client.objects.Get(
-        request, global_params=global_params, download=download)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ObjectsGetIamPolicy(apitools_base_cli.NewCmd):
-  """Command wrapping objects.GetIamPolicy."""
-
-  usage = """objects_getIamPolicy <bucket> <object>"""
-
-  def __init__(self, name, fv):
-    super(ObjectsGetIamPolicy, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'generation',
-        None,
-        u'If present, selects a specific revision of this object (as opposed '
-        u'to the latest version, the default).',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket, object):
-    """Returns an IAM policy for the specified object.
-
-    Args:
-      bucket: Name of the bucket in which the object resides.
-      object: Name of the object. For information about how to URL encode
-        object names to be path safe, see Encoding URI Path Parts.
-
-    Flags:
-      generation: If present, selects a specific revision of this object (as
-        opposed to the latest version, the default).
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageObjectsGetIamPolicyRequest(
-        bucket=bucket.decode('utf8'),
-        object=object.decode('utf8'),
-        )
-    if FLAGS['generation'].present:
-      request.generation = int(FLAGS.generation)
-    result = client.objects.GetIamPolicy(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ObjectsInsert(apitools_base_cli.NewCmd):
-  """Command wrapping objects.Insert."""
-
-  usage = """objects_insert <bucket>"""
-
-  def __init__(self, name, fv):
-    super(ObjectsInsert, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'contentEncoding',
-        None,
-        u'If set, sets the contentEncoding property of the final object to '
-        u'this value. Setting this parameter is equivalent to setting the '
-        u'contentEncoding metadata property. This can be useful when '
-        u'uploading an object with uploadType=media to indicate the encoding '
-        u'of the content being uploaded.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifGenerationMatch',
-        None,
-        u"Makes the operation conditional on whether the object's current "
-        u'generation matches the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifGenerationNotMatch',
-        None,
-        u"Makes the operation conditional on whether the object's current "
-        u'generation does not match the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationMatch',
-        None,
-        u"Makes the operation conditional on whether the object's current "
-        u'metageneration matches the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationNotMatch',
-        None,
-        u"Makes the operation conditional on whether the object's current "
-        u'metageneration does not match the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'name',
-        None,
-        u'Name of the object. Required when the object metadata is not '
-        u"otherwise provided. Overrides the object metadata's name value, if "
-        u'any. For information about how to URL encode object names to be '
-        u'path safe, see Encoding URI Path Parts.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'object',
-        None,
-        u'A Object resource to be passed as the request body.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'predefinedAcl',
-        u'authenticatedRead',
-        [u'authenticatedRead', u'bucketOwnerFullControl', u'bucketOwnerRead', u'private', u'projectPrivate', u'publicRead'],
-        u'Apply a predefined set of access controls to this object.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'projection',
-        u'full',
-        [u'full', u'noAcl'],
-        u'Set of properties to return. Defaults to noAcl, unless the object '
-        u'resource specifies the acl property, when it defaults to full.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'upload_filename',
-        '',
-        'Filename to use for upload.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'upload_mime_type',
-        '',
-        'MIME type to use for the upload. Only needed if the extension on '
-        '--upload_filename does not determine the correct (or any) MIME '
-        'type.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'download_filename',
-        '',
-        'Filename to use for download.',
-        flag_values=fv)
-    flags.DEFINE_boolean(
-        'overwrite',
-        'False',
-        'If True, overwrite the existing file when downloading.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket):
-    """Stores a new object and metadata.
-
-    Args:
-      bucket: Name of the bucket in which to store the new object. Overrides
-        the provided object metadata's bucket value, if any.
-
-    Flags:
-      contentEncoding: If set, sets the contentEncoding property of the final
-        object to this value. Setting this parameter is equivalent to setting
-        the contentEncoding metadata property. This can be useful when
-        uploading an object with uploadType=media to indicate the encoding of
-        the content being uploaded.
-      ifGenerationMatch: Makes the operation conditional on whether the
-        object's current generation matches the given value.
-      ifGenerationNotMatch: Makes the operation conditional on whether the
-        object's current generation does not match the given value.
-      ifMetagenerationMatch: Makes the operation conditional on whether the
-        object's current metageneration matches the given value.
-      ifMetagenerationNotMatch: Makes the operation conditional on whether the
-        object's current metageneration does not match the given value.
-      name: Name of the object. Required when the object metadata is not
-        otherwise provided. Overrides the object metadata's name value, if
-        any. For information about how to URL encode object names to be path
-        safe, see Encoding URI Path Parts.
-      object: A Object resource to be passed as the request body.
-      predefinedAcl: Apply a predefined set of access controls to this object.
-      projection: Set of properties to return. Defaults to noAcl, unless the
-        object resource specifies the acl property, when it defaults to full.
-      upload_filename: Filename to use for upload.
-      upload_mime_type: MIME type to use for the upload. Only needed if the
-        extension on --upload_filename does not determine the correct (or any)
-        MIME type.
-      download_filename: Filename to use for download.
-      overwrite: If True, overwrite the existing file when downloading.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageObjectsInsertRequest(
-        bucket=bucket.decode('utf8'),
-        )
-    if FLAGS['contentEncoding'].present:
-      request.contentEncoding = FLAGS.contentEncoding.decode('utf8')
-    if FLAGS['ifGenerationMatch'].present:
-      request.ifGenerationMatch = int(FLAGS.ifGenerationMatch)
-    if FLAGS['ifGenerationNotMatch'].present:
-      request.ifGenerationNotMatch = int(FLAGS.ifGenerationNotMatch)
-    if FLAGS['ifMetagenerationMatch'].present:
-      request.ifMetagenerationMatch = int(FLAGS.ifMetagenerationMatch)
-    if FLAGS['ifMetagenerationNotMatch'].present:
-      request.ifMetagenerationNotMatch = int(FLAGS.ifMetagenerationNotMatch)
-    if FLAGS['name'].present:
-      request.name = FLAGS.name.decode('utf8')
-    if FLAGS['object'].present:
-      request.object = apitools_base.JsonToMessage(messages.Object, FLAGS.object)
-    if FLAGS['predefinedAcl'].present:
-      request.predefinedAcl = messages.StorageObjectsInsertRequest.PredefinedAclValueValuesEnum(FLAGS.predefinedAcl)
-    if FLAGS['projection'].present:
-      request.projection = messages.StorageObjectsInsertRequest.ProjectionValueValuesEnum(FLAGS.projection)
-    upload = None
-    if FLAGS.upload_filename:
-      upload = apitools_base.Upload.FromFile(
-          FLAGS.upload_filename, FLAGS.upload_mime_type,
-          progress_callback=apitools_base.UploadProgressPrinter,
-          finish_callback=apitools_base.UploadCompletePrinter)
-    download = None
-    if FLAGS.download_filename:
-      download = apitools_base.Download.FromFile(FLAGS.download_filename, overwrite=FLAGS.overwrite,
-          progress_callback=apitools_base.DownloadProgressPrinter,
-          finish_callback=apitools_base.DownloadCompletePrinter)
-    result = client.objects.Insert(
-        request, global_params=global_params, upload=upload, download=download)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ObjectsList(apitools_base_cli.NewCmd):
-  """Command wrapping objects.List."""
-
-  usage = """objects_list <bucket>"""
-
-  def __init__(self, name, fv):
-    super(ObjectsList, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'delimiter',
-        None,
-        u'Returns results in a directory-like mode. items will contain only '
-        u'objects whose names, aside from the prefix, do not contain '
-        u'delimiter. Objects whose names, aside from the prefix, contain '
-        u'delimiter will have their name, truncated after the delimiter, '
-        u'returned in prefixes. Duplicate prefixes are omitted.',
-        flag_values=fv)
-    flags.DEFINE_integer(
-        'maxResults',
-        None,
-        u'Maximum number of items plus prefixes to return. As duplicate '
-        u'prefixes are omitted, fewer total results may be returned than '
-        u'requested. The default value of this parameter is 1,000 items.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        u'A previously-returned page token representing part of the larger '
-        u'set of results to view.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'prefix',
-        None,
-        u'Filter results to objects whose names begin with this prefix.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'projection',
-        u'full',
-        [u'full', u'noAcl'],
-        u'Set of properties to return. Defaults to noAcl.',
-        flag_values=fv)
-    flags.DEFINE_boolean(
-        'versions',
-        None,
-        u'If true, lists all versions of an object as distinct results. The '
-        u'default is false. For more information, see Object Versioning.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket):
-    """Retrieves a list of objects matching the criteria.
-
-    Args:
-      bucket: Name of the bucket in which to look for objects.
-
-    Flags:
-      delimiter: Returns results in a directory-like mode. items will contain
-        only objects whose names, aside from the prefix, do not contain
-        delimiter. Objects whose names, aside from the prefix, contain
-        delimiter will have their name, truncated after the delimiter,
-        returned in prefixes. Duplicate prefixes are omitted.
-      maxResults: Maximum number of items plus prefixes to return. As
-        duplicate prefixes are omitted, fewer total results may be returned
-        than requested. The default value of this parameter is 1,000 items.
-      pageToken: A previously-returned page token representing part of the
-        larger set of results to view.
-      prefix: Filter results to objects whose names begin with this prefix.
-      projection: Set of properties to return. Defaults to noAcl.
-      versions: If true, lists all versions of an object as distinct results.
-        The default is false. For more information, see Object Versioning.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageObjectsListRequest(
-        bucket=bucket.decode('utf8'),
-        )
-    if FLAGS['delimiter'].present:
-      request.delimiter = FLAGS.delimiter.decode('utf8')
-    if FLAGS['maxResults'].present:
-      request.maxResults = FLAGS.maxResults
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    if FLAGS['prefix'].present:
-      request.prefix = FLAGS.prefix.decode('utf8')
-    if FLAGS['projection'].present:
-      request.projection = messages.StorageObjectsListRequest.ProjectionValueValuesEnum(FLAGS.projection)
-    if FLAGS['versions'].present:
-      request.versions = FLAGS.versions
-    result = client.objects.List(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ObjectsPatch(apitools_base_cli.NewCmd):
-  """Command wrapping objects.Patch."""
-
-  usage = """objects_patch <bucket> <object>"""
-
-  def __init__(self, name, fv):
-    super(ObjectsPatch, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'generation',
-        None,
-        u'If present, selects a specific revision of this object (as opposed '
-        u'to the latest version, the default).',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifGenerationMatch',
-        None,
-        u"Makes the operation conditional on whether the object's current "
-        u'generation matches the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifGenerationNotMatch',
-        None,
-        u"Makes the operation conditional on whether the object's current "
-        u'generation does not match the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationMatch',
-        None,
-        u"Makes the operation conditional on whether the object's current "
-        u'metageneration matches the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationNotMatch',
-        None,
-        u"Makes the operation conditional on whether the object's current "
-        u'metageneration does not match the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'objectResource',
-        None,
-        u'A Object resource to be passed as the request body.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'predefinedAcl',
-        u'authenticatedRead',
-        [u'authenticatedRead', u'bucketOwnerFullControl', u'bucketOwnerRead', u'private', u'projectPrivate', u'publicRead'],
-        u'Apply a predefined set of access controls to this object.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'projection',
-        u'full',
-        [u'full', u'noAcl'],
-        u'Set of properties to return. Defaults to full.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket, object):
-    """Updates an object's metadata. This method supports patch semantics.
-
-    Args:
-      bucket: Name of the bucket in which the object resides.
-      object: Name of the object. For information about how to URL encode
-        object names to be path safe, see Encoding URI Path Parts.
-
-    Flags:
-      generation: If present, selects a specific revision of this object (as
-        opposed to the latest version, the default).
-      ifGenerationMatch: Makes the operation conditional on whether the
-        object's current generation matches the given value.
-      ifGenerationNotMatch: Makes the operation conditional on whether the
-        object's current generation does not match the given value.
-      ifMetagenerationMatch: Makes the operation conditional on whether the
-        object's current metageneration matches the given value.
-      ifMetagenerationNotMatch: Makes the operation conditional on whether the
-        object's current metageneration does not match the given value.
-      objectResource: A Object resource to be passed as the request body.
-      predefinedAcl: Apply a predefined set of access controls to this object.
-      projection: Set of properties to return. Defaults to full.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageObjectsPatchRequest(
-        bucket=bucket.decode('utf8'),
-        object=object.decode('utf8'),
-        )
-    if FLAGS['generation'].present:
-      request.generation = int(FLAGS.generation)
-    if FLAGS['ifGenerationMatch'].present:
-      request.ifGenerationMatch = int(FLAGS.ifGenerationMatch)
-    if FLAGS['ifGenerationNotMatch'].present:
-      request.ifGenerationNotMatch = int(FLAGS.ifGenerationNotMatch)
-    if FLAGS['ifMetagenerationMatch'].present:
-      request.ifMetagenerationMatch = int(FLAGS.ifMetagenerationMatch)
-    if FLAGS['ifMetagenerationNotMatch'].present:
-      request.ifMetagenerationNotMatch = int(FLAGS.ifMetagenerationNotMatch)
-    if FLAGS['objectResource'].present:
-      request.objectResource = apitools_base.JsonToMessage(messages.Object, FLAGS.objectResource)
-    if FLAGS['predefinedAcl'].present:
-      request.predefinedAcl = messages.StorageObjectsPatchRequest.PredefinedAclValueValuesEnum(FLAGS.predefinedAcl)
-    if FLAGS['projection'].present:
-      request.projection = messages.StorageObjectsPatchRequest.ProjectionValueValuesEnum(FLAGS.projection)
-    result = client.objects.Patch(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ObjectsRewrite(apitools_base_cli.NewCmd):
-  """Command wrapping objects.Rewrite."""
-
-  usage = """objects_rewrite <sourceBucket> <sourceObject> <destinationBucket> <destinationObject>"""
-
-  def __init__(self, name, fv):
-    super(ObjectsRewrite, self).__init__(name, fv)
-    flags.DEFINE_enum(
-        'destinationPredefinedAcl',
-        u'authenticatedRead',
-        [u'authenticatedRead', u'bucketOwnerFullControl', u'bucketOwnerRead', u'private', u'projectPrivate', u'publicRead'],
-        u'Apply a predefined set of access controls to the destination '
-        u'object.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifGenerationMatch',
-        None,
-        u"Makes the operation conditional on whether the destination object's"
-        u' current generation matches the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifGenerationNotMatch',
-        None,
-        u"Makes the operation conditional on whether the destination object's"
-        u' current generation does not match the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationMatch',
-        None,
-        u"Makes the operation conditional on whether the destination object's"
-        u' current metageneration matches the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationNotMatch',
-        None,
-        u"Makes the operation conditional on whether the destination object's"
-        u' current metageneration does not match the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifSourceGenerationMatch',
-        None,
-        u"Makes the operation conditional on whether the source object's "
-        u'generation matches the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifSourceGenerationNotMatch',
-        None,
-        u"Makes the operation conditional on whether the source object's "
-        u'generation does not match the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifSourceMetagenerationMatch',
-        None,
-        u"Makes the operation conditional on whether the source object's "
-        u'current metageneration matches the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifSourceMetagenerationNotMatch',
-        None,
-        u"Makes the operation conditional on whether the source object's "
-        u'current metageneration does not match the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'maxBytesRewrittenPerCall',
-        None,
-        u'The maximum number of bytes that will be rewritten per rewrite '
-        u"request. Most callers shouldn't need to specify this parameter - it"
-        u' is primarily in place to support testing. If specified the value '
-        u'must be an integral multiple of 1 MiB (1048576). Also, this only '
-        u'applies to requests where the source and destination span locations'
-        u' and/or storage classes. Finally, this value must not change across'
-        u" rewrite calls else you'll get an error that the rewriteToken is "
-        u'invalid.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'object',
-        None,
-        u'A Object resource to be passed as the request body.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'projection',
-        u'full',
-        [u'full', u'noAcl'],
-        u'Set of properties to return. Defaults to noAcl, unless the object '
-        u'resource specifies the acl property, when it defaults to full.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'rewriteToken',
-        None,
-        u'Include this field (from the previous rewrite response) on each '
-        u'rewrite request after the first one, until the rewrite response '
-        u"'done' flag is true. Calls that provide a rewriteToken can omit all"
-        u' other request fields, but if included those fields must match the '
-        u'values provided in the first rewrite request.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'sourceGeneration',
-        None,
-        u'If present, selects a specific revision of the source object (as '
-        u'opposed to the latest version, the default).',
-        flag_values=fv)
-
-  def RunWithArgs(self, sourceBucket, sourceObject, destinationBucket, destinationObject):
-    """Rewrites a source object to a destination object. Optionally overrides
-    metadata.
-
-    Args:
-      sourceBucket: Name of the bucket in which to find the source object.
-      sourceObject: Name of the source object. For information about how to
-        URL encode object names to be path safe, see Encoding URI Path Parts.
-      destinationBucket: Name of the bucket in which to store the new object.
-        Overrides the provided object metadata's bucket value, if any.
-      destinationObject: Name of the new object. Required when the object
-        metadata is not otherwise provided. Overrides the object metadata's
-        name value, if any. For information about how to URL encode object
-        names to be path safe, see Encoding URI Path Parts.
-
-    Flags:
-      destinationPredefinedAcl: Apply a predefined set of access controls to
-        the destination object.
-      ifGenerationMatch: Makes the operation conditional on whether the
-        destination object's current generation matches the given value.
-      ifGenerationNotMatch: Makes the operation conditional on whether the
-        destination object's current generation does not match the given
-        value.
-      ifMetagenerationMatch: Makes the operation conditional on whether the
-        destination object's current metageneration matches the given value.
-      ifMetagenerationNotMatch: Makes the operation conditional on whether the
-        destination object's current metageneration does not match the given
-        value.
-      ifSourceGenerationMatch: Makes the operation conditional on whether the
-        source object's generation matches the given value.
-      ifSourceGenerationNotMatch: Makes the operation conditional on whether
-        the source object's generation does not match the given value.
-      ifSourceMetagenerationMatch: Makes the operation conditional on whether
-        the source object's current metageneration matches the given value.
-      ifSourceMetagenerationNotMatch: Makes the operation conditional on
-        whether the source object's current metageneration does not match the
-        given value.
-      maxBytesRewrittenPerCall: The maximum number of bytes that will be
-        rewritten per rewrite request. Most callers shouldn't need to specify
-        this parameter - it is primarily in place to support testing. If
-        specified the value must be an integral multiple of 1 MiB (1048576).
-        Also, this only applies to requests where the source and destination
-        span locations and/or storage classes. Finally, this value must not
-        change across rewrite calls else you'll get an error that the
-        rewriteToken is invalid.
-      object: A Object resource to be passed as the request body.
-      projection: Set of properties to return. Defaults to noAcl, unless the
-        object resource specifies the acl property, when it defaults to full.
-      rewriteToken: Include this field (from the previous rewrite response) on
-        each rewrite request after the first one, until the rewrite response
-        'done' flag is true. Calls that provide a rewriteToken can omit all
-        other request fields, but if included those fields must match the
-        values provided in the first rewrite request.
-      sourceGeneration: If present, selects a specific revision of the source
-        object (as opposed to the latest version, the default).
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageObjectsRewriteRequest(
-        sourceBucket=sourceBucket.decode('utf8'),
-        sourceObject=sourceObject.decode('utf8'),
-        destinationBucket=destinationBucket.decode('utf8'),
-        destinationObject=destinationObject.decode('utf8'),
-        )
-    if FLAGS['destinationPredefinedAcl'].present:
-      request.destinationPredefinedAcl = messages.StorageObjectsRewriteRequest.DestinationPredefinedAclValueValuesEnum(FLAGS.destinationPredefinedAcl)
-    if FLAGS['ifGenerationMatch'].present:
-      request.ifGenerationMatch = int(FLAGS.ifGenerationMatch)
-    if FLAGS['ifGenerationNotMatch'].present:
-      request.ifGenerationNotMatch = int(FLAGS.ifGenerationNotMatch)
-    if FLAGS['ifMetagenerationMatch'].present:
-      request.ifMetagenerationMatch = int(FLAGS.ifMetagenerationMatch)
-    if FLAGS['ifMetagenerationNotMatch'].present:
-      request.ifMetagenerationNotMatch = int(FLAGS.ifMetagenerationNotMatch)
-    if FLAGS['ifSourceGenerationMatch'].present:
-      request.ifSourceGenerationMatch = int(FLAGS.ifSourceGenerationMatch)
-    if FLAGS['ifSourceGenerationNotMatch'].present:
-      request.ifSourceGenerationNotMatch = int(FLAGS.ifSourceGenerationNotMatch)
-    if FLAGS['ifSourceMetagenerationMatch'].present:
-      request.ifSourceMetagenerationMatch = int(FLAGS.ifSourceMetagenerationMatch)
-    if FLAGS['ifSourceMetagenerationNotMatch'].present:
-      request.ifSourceMetagenerationNotMatch = int(FLAGS.ifSourceMetagenerationNotMatch)
-    if FLAGS['maxBytesRewrittenPerCall'].present:
-      request.maxBytesRewrittenPerCall = int(FLAGS.maxBytesRewrittenPerCall)
-    if FLAGS['object'].present:
-      request.object = apitools_base.JsonToMessage(messages.Object, FLAGS.object)
-    if FLAGS['projection'].present:
-      request.projection = messages.StorageObjectsRewriteRequest.ProjectionValueValuesEnum(FLAGS.projection)
-    if FLAGS['rewriteToken'].present:
-      request.rewriteToken = FLAGS.rewriteToken.decode('utf8')
-    if FLAGS['sourceGeneration'].present:
-      request.sourceGeneration = int(FLAGS.sourceGeneration)
-    result = client.objects.Rewrite(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ObjectsSetIamPolicy(apitools_base_cli.NewCmd):
-  """Command wrapping objects.SetIamPolicy."""
-
-  usage = """objects_setIamPolicy <bucket> <object>"""
-
-  def __init__(self, name, fv):
-    super(ObjectsSetIamPolicy, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'generation',
-        None,
-        u'If present, selects a specific revision of this object (as opposed '
-        u'to the latest version, the default).',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'policy',
-        None,
-        u'A Policy resource to be passed as the request body.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket, object):
-    """Updates an IAM policy for the specified object.
-
-    Args:
-      bucket: Name of the bucket in which the object resides.
-      object: Name of the object. For information about how to URL encode
-        object names to be path safe, see Encoding URI Path Parts.
-
-    Flags:
-      generation: If present, selects a specific revision of this object (as
-        opposed to the latest version, the default).
-      policy: A Policy resource to be passed as the request body.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageObjectsSetIamPolicyRequest(
-        bucket=bucket.decode('utf8'),
-        object=object.decode('utf8'),
-        )
-    if FLAGS['generation'].present:
-      request.generation = int(FLAGS.generation)
-    if FLAGS['policy'].present:
-      request.policy = apitools_base.JsonToMessage(messages.Policy, FLAGS.policy)
-    result = client.objects.SetIamPolicy(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ObjectsTestIamPermissions(apitools_base_cli.NewCmd):
-  """Command wrapping objects.TestIamPermissions."""
-
-  usage = """objects_testIamPermissions <bucket> <object> <permissions>"""
-
-  def __init__(self, name, fv):
-    super(ObjectsTestIamPermissions, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'generation',
-        None,
-        u'If present, selects a specific revision of this object (as opposed '
-        u'to the latest version, the default).',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket, object, permissions):
-    """Tests a set of permissions on the given object to see which, if any,
-    are held by the caller.
-
-    Args:
-      bucket: Name of the bucket in which the object resides.
-      object: Name of the object. For information about how to URL encode
-        object names to be path safe, see Encoding URI Path Parts.
-      permissions: Permissions to test.
-
-    Flags:
-      generation: If present, selects a specific revision of this object (as
-        opposed to the latest version, the default).
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageObjectsTestIamPermissionsRequest(
-        bucket=bucket.decode('utf8'),
-        object=object.decode('utf8'),
-        permissions=permissions.decode('utf8'),
-        )
-    if FLAGS['generation'].present:
-      request.generation = int(FLAGS.generation)
-    result = client.objects.TestIamPermissions(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ObjectsUpdate(apitools_base_cli.NewCmd):
-  """Command wrapping objects.Update."""
-
-  usage = """objects_update <bucket> <object>"""
-
-  def __init__(self, name, fv):
-    super(ObjectsUpdate, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'generation',
-        None,
-        u'If present, selects a specific revision of this object (as opposed '
-        u'to the latest version, the default).',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifGenerationMatch',
-        None,
-        u"Makes the operation conditional on whether the object's current "
-        u'generation matches the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifGenerationNotMatch',
-        None,
-        u"Makes the operation conditional on whether the object's current "
-        u'generation does not match the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationMatch',
-        None,
-        u"Makes the operation conditional on whether the object's current "
-        u'metageneration matches the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'ifMetagenerationNotMatch',
-        None,
-        u"Makes the operation conditional on whether the object's current "
-        u'metageneration does not match the given value.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'objectResource',
-        None,
-        u'A Object resource to be passed as the request body.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'predefinedAcl',
-        u'authenticatedRead',
-        [u'authenticatedRead', u'bucketOwnerFullControl', u'bucketOwnerRead', u'private', u'projectPrivate', u'publicRead'],
-        u'Apply a predefined set of access controls to this object.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'projection',
-        u'full',
-        [u'full', u'noAcl'],
-        u'Set of properties to return. Defaults to full.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'download_filename',
-        '',
-        'Filename to use for download.',
-        flag_values=fv)
-    flags.DEFINE_boolean(
-        'overwrite',
-        'False',
-        'If True, overwrite the existing file when downloading.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket, object):
-    """Updates an object's metadata.
-
-    Args:
-      bucket: Name of the bucket in which the object resides.
-      object: Name of the object. For information about how to URL encode
-        object names to be path safe, see Encoding URI Path Parts.
-
-    Flags:
-      generation: If present, selects a specific revision of this object (as
-        opposed to the latest version, the default).
-      ifGenerationMatch: Makes the operation conditional on whether the
-        object's current generation matches the given value.
-      ifGenerationNotMatch: Makes the operation conditional on whether the
-        object's current generation does not match the given value.
-      ifMetagenerationMatch: Makes the operation conditional on whether the
-        object's current metageneration matches the given value.
-      ifMetagenerationNotMatch: Makes the operation conditional on whether the
-        object's current metageneration does not match the given value.
-      objectResource: A Object resource to be passed as the request body.
-      predefinedAcl: Apply a predefined set of access controls to this object.
-      projection: Set of properties to return. Defaults to full.
-      download_filename: Filename to use for download.
-      overwrite: If True, overwrite the existing file when downloading.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageObjectsUpdateRequest(
-        bucket=bucket.decode('utf8'),
-        object=object.decode('utf8'),
-        )
-    if FLAGS['generation'].present:
-      request.generation = int(FLAGS.generation)
-    if FLAGS['ifGenerationMatch'].present:
-      request.ifGenerationMatch = int(FLAGS.ifGenerationMatch)
-    if FLAGS['ifGenerationNotMatch'].present:
-      request.ifGenerationNotMatch = int(FLAGS.ifGenerationNotMatch)
-    if FLAGS['ifMetagenerationMatch'].present:
-      request.ifMetagenerationMatch = int(FLAGS.ifMetagenerationMatch)
-    if FLAGS['ifMetagenerationNotMatch'].present:
-      request.ifMetagenerationNotMatch = int(FLAGS.ifMetagenerationNotMatch)
-    if FLAGS['objectResource'].present:
-      request.objectResource = apitools_base.JsonToMessage(messages.Object, FLAGS.objectResource)
-    if FLAGS['predefinedAcl'].present:
-      request.predefinedAcl = messages.StorageObjectsUpdateRequest.PredefinedAclValueValuesEnum(FLAGS.predefinedAcl)
-    if FLAGS['projection'].present:
-      request.projection = messages.StorageObjectsUpdateRequest.ProjectionValueValuesEnum(FLAGS.projection)
-    download = None
-    if FLAGS.download_filename:
-      download = apitools_base.Download.FromFile(FLAGS.download_filename, overwrite=FLAGS.overwrite,
-          progress_callback=apitools_base.DownloadProgressPrinter,
-          finish_callback=apitools_base.DownloadCompletePrinter)
-    result = client.objects.Update(
-        request, global_params=global_params, download=download)
-    print apitools_base_cli.FormatOutput(result)
-
-
-class ObjectsWatchAll(apitools_base_cli.NewCmd):
-  """Command wrapping objects.WatchAll."""
-
-  usage = """objects_watchAll <bucket>"""
-
-  def __init__(self, name, fv):
-    super(ObjectsWatchAll, self).__init__(name, fv)
-    flags.DEFINE_string(
-        'channel',
-        None,
-        u'A Channel resource to be passed as the request body.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'delimiter',
-        None,
-        u'Returns results in a directory-like mode. items will contain only '
-        u'objects whose names, aside from the prefix, do not contain '
-        u'delimiter. Objects whose names, aside from the prefix, contain '
-        u'delimiter will have their name, truncated after the delimiter, '
-        u'returned in prefixes. Duplicate prefixes are omitted.',
-        flag_values=fv)
-    flags.DEFINE_integer(
-        'maxResults',
-        None,
-        u'Maximum number of items plus prefixes to return. As duplicate '
-        u'prefixes are omitted, fewer total results may be returned than '
-        u'requested. The default value of this parameter is 1,000 items.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'pageToken',
-        None,
-        u'A previously-returned page token representing part of the larger '
-        u'set of results to view.',
-        flag_values=fv)
-    flags.DEFINE_string(
-        'prefix',
-        None,
-        u'Filter results to objects whose names begin with this prefix.',
-        flag_values=fv)
-    flags.DEFINE_enum(
-        'projection',
-        u'full',
-        [u'full', u'noAcl'],
-        u'Set of properties to return. Defaults to noAcl.',
-        flag_values=fv)
-    flags.DEFINE_boolean(
-        'versions',
-        None,
-        u'If true, lists all versions of an object as distinct results. The '
-        u'default is false. For more information, see Object Versioning.',
-        flag_values=fv)
-
-  def RunWithArgs(self, bucket):
-    """Watch for changes on all objects in a bucket.
-
-    Args:
-      bucket: Name of the bucket in which to look for objects.
-
-    Flags:
-      channel: A Channel resource to be passed as the request body.
-      delimiter: Returns results in a directory-like mode. items will contain
-        only objects whose names, aside from the prefix, do not contain
-        delimiter. Objects whose names, aside from the prefix, contain
-        delimiter will have their name, truncated after the delimiter,
-        returned in prefixes. Duplicate prefixes are omitted.
-      maxResults: Maximum number of items plus prefixes to return. As
-        duplicate prefixes are omitted, fewer total results may be returned
-        than requested. The default value of this parameter is 1,000 items.
-      pageToken: A previously-returned page token representing part of the
-        larger set of results to view.
-      prefix: Filter results to objects whose names begin with this prefix.
-      projection: Set of properties to return. Defaults to noAcl.
-      versions: If true, lists all versions of an object as distinct results.
-        The default is false. For more information, see Object Versioning.
-    """
-    client = GetClientFromFlags()
-    global_params = GetGlobalParamsFromFlags()
-    request = messages.StorageObjectsWatchAllRequest(
-        bucket=bucket.decode('utf8'),
-        )
-    if FLAGS['channel'].present:
-      request.channel = apitools_base.JsonToMessage(messages.Channel, FLAGS.channel)
-    if FLAGS['delimiter'].present:
-      request.delimiter = FLAGS.delimiter.decode('utf8')
-    if FLAGS['maxResults'].present:
-      request.maxResults = FLAGS.maxResults
-    if FLAGS['pageToken'].present:
-      request.pageToken = FLAGS.pageToken.decode('utf8')
-    if FLAGS['prefix'].present:
-      request.prefix = FLAGS.prefix.decode('utf8')
-    if FLAGS['projection'].present:
-      request.projection = messages.StorageObjectsWatchAllRequest.ProjectionValueValuesEnum(FLAGS.projection)
-    if FLAGS['versions'].present:
-      request.versions = FLAGS.versions
-    result = client.objects.WatchAll(
-        request, global_params=global_params)
-    print apitools_base_cli.FormatOutput(result)
-
-
-def main(_):
-  appcommands.AddCmd('pyshell', PyShell)
-  appcommands.AddCmd('bucketAccessControls_delete', BucketAccessControlsDelete)
-  appcommands.AddCmd('bucketAccessControls_get', BucketAccessControlsGet)
-  appcommands.AddCmd('bucketAccessControls_insert', BucketAccessControlsInsert)
-  appcommands.AddCmd('bucketAccessControls_list', BucketAccessControlsList)
-  appcommands.AddCmd('bucketAccessControls_patch', BucketAccessControlsPatch)
-  appcommands.AddCmd('bucketAccessControls_update', BucketAccessControlsUpdate)
-  appcommands.AddCmd('buckets_delete', BucketsDelete)
-  appcommands.AddCmd('buckets_get', BucketsGet)
-  appcommands.AddCmd('buckets_getIamPolicy', BucketsGetIamPolicy)
-  appcommands.AddCmd('buckets_insert', BucketsInsert)
-  appcommands.AddCmd('buckets_list', BucketsList)
-  appcommands.AddCmd('buckets_patch', BucketsPatch)
-  appcommands.AddCmd('buckets_setIamPolicy', BucketsSetIamPolicy)
-  appcommands.AddCmd('buckets_testIamPermissions', BucketsTestIamPermissions)
-  appcommands.AddCmd('buckets_update', BucketsUpdate)
-  appcommands.AddCmd('channels_stop', ChannelsStop)
-  appcommands.AddCmd('defaultObjectAccessControls_delete', DefaultObjectAccessControlsDelete)
-  appcommands.AddCmd('defaultObjectAccessControls_get', DefaultObjectAccessControlsGet)
-  appcommands.AddCmd('defaultObjectAccessControls_insert', DefaultObjectAccessControlsInsert)
-  appcommands.AddCmd('defaultObjectAccessControls_list', DefaultObjectAccessControlsList)
-  appcommands.AddCmd('defaultObjectAccessControls_patch', DefaultObjectAccessControlsPatch)
-  appcommands.AddCmd('defaultObjectAccessControls_update', DefaultObjectAccessControlsUpdate)
-  appcommands.AddCmd('notifications_delete', NotificationsDelete)
-  appcommands.AddCmd('notifications_get', NotificationsGet)
-  appcommands.AddCmd('notifications_insert', NotificationsInsert)
-  appcommands.AddCmd('notifications_list', NotificationsList)
-  appcommands.AddCmd('objectAccessControls_delete', ObjectAccessControlsDelete)
-  appcommands.AddCmd('objectAccessControls_get', ObjectAccessControlsGet)
-  appcommands.AddCmd('objectAccessControls_insert', ObjectAccessControlsInsert)
-  appcommands.AddCmd('objectAccessControls_list', ObjectAccessControlsList)
-  appcommands.AddCmd('objectAccessControls_patch', ObjectAccessControlsPatch)
-  appcommands.AddCmd('objectAccessControls_update', ObjectAccessControlsUpdate)
-  appcommands.AddCmd('objects_compose', ObjectsCompose)
-  appcommands.AddCmd('objects_copy', ObjectsCopy)
-  appcommands.AddCmd('objects_delete', ObjectsDelete)
-  appcommands.AddCmd('objects_get', ObjectsGet)
-  appcommands.AddCmd('objects_getIamPolicy', ObjectsGetIamPolicy)
-  appcommands.AddCmd('objects_insert', ObjectsInsert)
-  appcommands.AddCmd('objects_list', ObjectsList)
-  appcommands.AddCmd('objects_patch', ObjectsPatch)
-  appcommands.AddCmd('objects_rewrite', ObjectsRewrite)
-  appcommands.AddCmd('objects_setIamPolicy', ObjectsSetIamPolicy)
-  appcommands.AddCmd('objects_testIamPermissions', ObjectsTestIamPermissions)
-  appcommands.AddCmd('objects_update', ObjectsUpdate)
-  appcommands.AddCmd('objects_watchAll', ObjectsWatchAll)
-
-  apitools_base_cli.SetupLogger()
-  if hasattr(appcommands, 'SetDefaultCommand'):
-    appcommands.SetDefaultCommand('pyshell')
-
-
-run_main = apitools_base_cli.run_main
-
-if __name__ == '__main__':
-  appcommands.Run()
diff --git a/samples/uptodate_check_test.py b/samples/uptodate_check_test.py
index 6fbea9c..ec262a4 100644
--- a/samples/uptodate_check_test.py
+++ b/samples/uptodate_check_test.py
@@ -45,7 +45,6 @@
         with test_utils.TempDir() as tmp_dir_path:
             gen_client.main([
                 gen_client.__file__,
-                '--generate_cli',
                 '--init-file', 'empty',
                 '--infile',
                 GetSampleClientPath(api_name, prefix + '.json'),
@@ -56,7 +55,6 @@
                 'client'
             ])
             expected_files = (
-                set([prefix + '.py']) |  # CLI files
                 set([prefix + '_client.py',
                      prefix + '_messages.py',
                      '__init__.py']))
diff --git a/setup.py b/setup.py
index c0ab0b8..88ab29a 100644
--- a/setup.py
+++ b/setup.py
@@ -35,12 +35,10 @@
     ]
 
 CLI_PACKAGES = [
-    'google-apputils>=0.4.0',
-    'python-gflags==3.0.6',  # Starting version 3.0.7 py26 is not supported.
+    'python-gflags>=3.0.6',
 ]
 
 TESTING_PACKAGES = [
-    'google-apputils>=0.4.0',
     'unittest2>=0.5.1',
     'mock>=1.0.1',
 ]
@@ -51,9 +49,6 @@
 
 py_version = platform.python_version()
 
-if py_version < '2.7':
-    REQUIRED_PACKAGES.append('argparse>=1.2.1')
-
 _APITOOLS_VERSION = '0.5.22'
 
 with open('README.rst') as fileobj:
diff --git a/tox.ini b/tox.ini
index c81e32a..dfee48b 100644
--- a/tox.ini
+++ b/tox.ini
@@ -9,7 +9,7 @@
 [testenv]
 deps =
     nose
-    python-gflags==3.0.6
+    python-gflags
     oauth2client1: oauth2client<1.5dev
     oauth2client2: oauth2client>=2,<=3dev
     oauth2client3: oauth2client>=3,<=4dev
@@ -36,8 +36,7 @@
 commands =
     nosetests --with-xunit --with-xcoverage --cover-package=apitools --nocapture --cover-erase --cover-tests --cover-branches []
 deps =
-    google-apputils
-    python-gflags==3.0.6
+    python-gflags
     mock
     nose
     unittest2