Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(66)

Side by Side Diff: third_party/gsutil/gslib/command_runner.py

Issue 1380943003: Roll version of gsutil to 4.15. (Closed) Base URL: https://github.com/catapult-project/catapult.git@master
Patch Set: rebase Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/gsutil/gslib/command.py ('k') | third_party/gsutil/gslib/commands/acl.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # -*- coding: utf-8 -*- 1 # -*- coding: utf-8 -*-
2 # Copyright 2011 Google Inc. All Rights Reserved. 2 # Copyright 2011 Google Inc. All Rights Reserved.
3 # 3 #
4 # Licensed under the Apache License, Version 2.0 (the "License"); 4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License. 5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at 6 # You may obtain a copy of the License at
7 # 7 #
8 # http://www.apache.org/licenses/LICENSE-2.0 8 # http://www.apache.org/licenses/LICENSE-2.0
9 # 9 #
10 # Unless required by applicable law or agreed to in writing, software 10 # Unless required by applicable law or agreed to in writing, software
(...skipping 23 matching lines...) Expand all
34 from gslib.command import OLD_ALIAS_MAP 34 from gslib.command import OLD_ALIAS_MAP
35 from gslib.command import ShutDownGsutil 35 from gslib.command import ShutDownGsutil
36 import gslib.commands 36 import gslib.commands
37 from gslib.cs_api_map import ApiSelector 37 from gslib.cs_api_map import ApiSelector
38 from gslib.cs_api_map import GsutilApiClassMapFactory 38 from gslib.cs_api_map import GsutilApiClassMapFactory
39 from gslib.cs_api_map import GsutilApiMapFactory 39 from gslib.cs_api_map import GsutilApiMapFactory
40 from gslib.exception import CommandException 40 from gslib.exception import CommandException
41 from gslib.gcs_json_api import GcsJsonApi 41 from gslib.gcs_json_api import GcsJsonApi
42 from gslib.no_op_credentials import NoOpCredentials 42 from gslib.no_op_credentials import NoOpCredentials
43 from gslib.tab_complete import MakeCompleter 43 from gslib.tab_complete import MakeCompleter
44 from gslib.util import CheckMultiprocessingAvailableAndInit
44 from gslib.util import CompareVersions 45 from gslib.util import CompareVersions
45 from gslib.util import GetGsutilVersionModifiedTime 46 from gslib.util import GetGsutilVersionModifiedTime
46 from gslib.util import GSUTIL_PUB_TARBALL 47 from gslib.util import GSUTIL_PUB_TARBALL
47 from gslib.util import IsRunningInteractively 48 from gslib.util import IsRunningInteractively
48 from gslib.util import LAST_CHECKED_FOR_GSUTIL_UPDATE_TIMESTAMP_FILE 49 from gslib.util import LAST_CHECKED_FOR_GSUTIL_UPDATE_TIMESTAMP_FILE
49 from gslib.util import LookUpGsutilVersion 50 from gslib.util import LookUpGsutilVersion
50 from gslib.util import MultiprocessingIsAvailable
51 from gslib.util import RELEASE_NOTES_URL 51 from gslib.util import RELEASE_NOTES_URL
52 from gslib.util import SECONDS_PER_DAY 52 from gslib.util import SECONDS_PER_DAY
53 from gslib.util import UTF8 53 from gslib.util import UTF8
54 54
55 55
56 def HandleArgCoding(args): 56 def HandleArgCoding(args):
57 """Handles coding of command-line args. 57 """Handles coding of command-line args.
58 58
59 Args: 59 Args:
60 args: array of command-line args. 60 args: array of command-line args.
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 for subcommand, arguments in subcommand_argument_dict.iteritems(): 192 for subcommand, arguments in subcommand_argument_dict.iteritems():
193 subcommand_parser = subcommand_parsers.add_parser( 193 subcommand_parser = subcommand_parsers.add_parser(
194 subcommand, add_help=False) 194 subcommand, add_help=False)
195 self._ConfigureCommandArgumentParserArguments( 195 self._ConfigureCommandArgumentParserArguments(
196 subcommand_parser, arguments, gsutil_api) 196 subcommand_parser, arguments, gsutil_api)
197 else: 197 else:
198 self._ConfigureCommandArgumentParserArguments( 198 self._ConfigureCommandArgumentParserArguments(
199 command_parser, command.command_spec.argparse_arguments, gsutil_api) 199 command_parser, command.command_spec.argparse_arguments, gsutil_api)
200 200
201 def RunNamedCommand(self, command_name, args=None, headers=None, debug=0, 201 def RunNamedCommand(self, command_name, args=None, headers=None, debug=0,
202 parallel_operations=False, test_method=None, 202 trace_token=None, parallel_operations=False,
203 skip_update_check=False, logging_filters=None, 203 skip_update_check=False, logging_filters=None,
204 do_shutdown=True): 204 do_shutdown=True):
205 """Runs the named command. 205 """Runs the named command.
206 206
207 Used by gsutil main, commands built atop other commands, and tests. 207 Used by gsutil main, commands built atop other commands, and tests.
208 208
209 Args: 209 Args:
210 command_name: The name of the command being run. 210 command_name: The name of the command being run.
211 args: Command-line args (arg0 = actual arg, not command name ala bash). 211 args: Command-line args (arg0 = actual arg, not command name ala bash).
212 headers: Dictionary containing optional HTTP headers to pass to boto. 212 headers: Dictionary containing optional HTTP headers to pass to boto.
213 debug: Debug level to pass in to boto connection (range 0..3). 213 debug: Debug level to pass in to boto connection (range 0..3).
214 trace_token: Trace token to pass to the underlying API.
214 parallel_operations: Should command operations be executed in parallel? 215 parallel_operations: Should command operations be executed in parallel?
215 test_method: Optional general purpose method for testing purposes.
216 Application and semantics of this method will vary by
217 command and test type.
218 skip_update_check: Set to True to disable checking for gsutil updates. 216 skip_update_check: Set to True to disable checking for gsutil updates.
219 logging_filters: Optional list of logging.Filters to apply to this 217 logging_filters: Optional list of logging.Filters to apply to this
220 command's logger. 218 command's logger.
221 do_shutdown: Stop all parallelism framework workers iff this is True. 219 do_shutdown: Stop all parallelism framework workers iff this is True.
222 220
223 Raises: 221 Raises:
224 CommandException: if errors encountered. 222 CommandException: if errors encountered.
225 223
226 Returns: 224 Returns:
227 Return value(s) from Command that was run. 225 Return value(s) from Command that was run.
228 """ 226 """
227 command_changed_to_update = False
229 if (not skip_update_check and 228 if (not skip_update_check and
230 self.MaybeCheckForAndOfferSoftwareUpdate(command_name, debug)): 229 self.MaybeCheckForAndOfferSoftwareUpdate(command_name, debug)):
231 command_name = 'update' 230 command_name = 'update'
231 command_changed_to_update = True
232 args = ['-n'] 232 args = ['-n']
233 233
234 if not args: 234 if not args:
235 args = [] 235 args = []
236 236
237 # Include api_version header in all commands. 237 # Include api_version header in all commands.
238 api_version = boto.config.get_value('GSUtil', 'default_api_version', '1') 238 api_version = boto.config.get_value('GSUtil', 'default_api_version', '1')
239 if not headers: 239 if not headers:
240 headers = {} 240 headers = {}
241 headers['x-goog-api-version'] = api_version 241 headers['x-goog-api-version'] = api_version
(...skipping 22 matching lines...) Expand all
264 if arg in subcommands: 264 if arg in subcommands:
265 new_args.append(arg) 265 new_args.append(arg)
266 break # Take the first match and throw away the rest. 266 break # Take the first match and throw away the rest.
267 args = new_args 267 args = new_args
268 command_name = 'help' 268 command_name = 'help'
269 269
270 args = HandleArgCoding(args) 270 args = HandleArgCoding(args)
271 271
272 command_class = self.command_map[command_name] 272 command_class = self.command_map[command_name]
273 command_inst = command_class( 273 command_inst = command_class(
274 self, args, headers, debug, parallel_operations, 274 self, args, headers, debug, trace_token, parallel_operations,
275 self.bucket_storage_uri_class, self.gsutil_api_class_map_factory, 275 self.bucket_storage_uri_class, self.gsutil_api_class_map_factory,
276 test_method, logging_filters, command_alias_used=command_name) 276 logging_filters, command_alias_used=command_name)
277 return_code = command_inst.RunCommand() 277 return_code = command_inst.RunCommand()
278 278
279 if MultiprocessingIsAvailable()[0] and do_shutdown: 279 if CheckMultiprocessingAvailableAndInit().is_available and do_shutdown:
280 ShutDownGsutil() 280 ShutDownGsutil()
281 if GetFailureCount() > 0: 281 if GetFailureCount() > 0:
282 return_code = 1 282 return_code = 1
283 if command_changed_to_update:
284 # If the command changed to update, the user's original command was
285 # not executed.
286 return_code = 1
287 print '\n'.join(textwrap.wrap(
288 'Update was successful. Exiting with code 1 as the original command '
289 'issued prior to the update was not executed and should be re-run.'))
283 return return_code 290 return return_code
284 291
285 def MaybeCheckForAndOfferSoftwareUpdate(self, command_name, debug): 292 def MaybeCheckForAndOfferSoftwareUpdate(self, command_name, debug):
286 """Checks the last time we checked for an update and offers one if needed. 293 """Checks the last time we checked for an update and offers one if needed.
287 294
288 Offer is made if the time since the last update check is longer 295 Offer is made if the time since the last update check is longer
289 than the configured threshold offers the user to update gsutil. 296 than the configured threshold offers the user to update gsutil.
290 297
291 Args: 298 Args:
292 command_name: The name of the command being run. 299 command_name: The name of the command being run.
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 'A newer version of gsutil (%s) is available than the version you ' 379 'A newer version of gsutil (%s) is available than the version you '
373 'are running (%s). A detailed log of gsutil release changes is ' 380 'are running (%s). A detailed log of gsutil release changes is '
374 'available at %s if you would like to read them before updating.' 381 'available at %s if you would like to read them before updating.'
375 % (cur_ver, gslib.VERSION, RELEASE_NOTES_URL))) 382 % (cur_ver, gslib.VERSION, RELEASE_NOTES_URL)))
376 if gslib.IS_PACKAGE_INSTALL: 383 if gslib.IS_PACKAGE_INSTALL:
377 return False 384 return False
378 print 385 print
379 answer = raw_input('Would you like to update [Y/n]? ') 386 answer = raw_input('Would you like to update [Y/n]? ')
380 return not answer or answer.lower()[0] != 'n' 387 return not answer or answer.lower()[0] != 'n'
381 return False 388 return False
OLDNEW
« no previous file with comments | « third_party/gsutil/gslib/command.py ('k') | third_party/gsutil/gslib/commands/acl.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698