コード例 #1
0
 def testParseBetaClearPushFlags(self):
     flags.AddUpdatePushQueueFlags(self.parser,
                                   release_track=base.ReleaseTrack.BETA)
     expected_config = _BETA_MESSAGES_MODULE.Queue(
         retryConfig=_BETA_MESSAGES_MODULE.RetryConfig(),
         rateLimits=_BETA_MESSAGES_MODULE.RateLimits(),
         stackdriverLoggingConfig=(
             _BETA_MESSAGES_MODULE.StackdriverLoggingConfig()),
         appEngineHttpQueue=_BETA_MESSAGES_MODULE.AppEngineHttpQueue(
             appEngineRoutingOverride=_BETA_MESSAGES_MODULE.
             AppEngineRouting()),
         type=_BETA_MESSAGES_MODULE.Queue.TypeValueValuesEnum.PUSH)
     args = self.parser.parse_args([
         '--clear-log-sampling-ratio', '--clear-max-attempts',
         '--clear-max-retry-duration', '--clear-max-doublings',
         '--clear-min-backoff', '--clear-max-backoff',
         '--clear-max-dispatches-per-second',
         '--clear-max-concurrent-dispatches', '--clear-routing-override'
     ])
     actual_config = parsers.ParseCreateOrUpdateQueueArgs(
         args,
         constants.PUSH_QUEUE,
         _BETA_MESSAGES_MODULE,
         is_update=True,
         release_track=base.ReleaseTrack.BETA)
     self.assertEqual(actual_config, expected_config)
コード例 #2
0
ファイル: update.py プロジェクト: Akiho-Yasuda/wip
 def Run(self, args):
     parsers.CheckUpdateArgsSpecified(args, constants.PUSH_QUEUE,
                                      self.is_alpha)
     api = GetApiAdapter(self.ReleaseTrack())
     queues_client = api.queues
     queue_ref = parsers.ParseQueue(args.queue, args.location)
     queue_config = parsers.ParseCreateOrUpdateQueueArgs(
         args,
         constants.PUSH_QUEUE,
         api.messages,
         is_update=True,
         is_alpha=self.is_alpha)
     if not self.is_alpha:
         app_engine_routing_override = (
             queue_config.appEngineHttpQueue.appEngineRoutingOverride
             if queue_config.appEngineHttpQueue is not None else None)
     else:
         app_engine_routing_override = (
             queue_config.appEngineHttpTarget.appEngineRoutingOverride
             if queue_config.appEngineHttpTarget is not None else None)
     log.warning(constants.QUEUE_MANAGEMENT_WARNING)
     update_response = queues_client.Patch(
         queue_ref,
         retry_config=queue_config.retryConfig,
         rate_limits=queue_config.rateLimits,
         app_engine_routing_override=app_engine_routing_override)
     log.status.Print('Updated queue [{}].'.format(queue_ref.Name()))
     return update_response
コード例 #3
0
 def testParseBetaCreateOrUpdateQueueArgs_AllArgs_MaxAttemptsUnlimited(
         self):
     expected_config = _BETA_MESSAGES_MODULE.Queue()
     expected_config.retryConfig = _BETA_MESSAGES_MODULE.RetryConfig(
         maxAttempts=-1,
         maxRetryDuration='5s',
         maxDoublings=4,
         minBackoff='1s',
         maxBackoff='10s')
     expected_config.rateLimits = _BETA_MESSAGES_MODULE.RateLimits(
         maxDispatchesPerSecond=100, maxConcurrentDispatches=10)
     expected_config.stackdriverLoggingConfig = (
         _BETA_MESSAGES_MODULE.StackdriverLoggingConfig(samplingRatio=0.5))
     expected_config.appEngineHttpQueue = _BETA_MESSAGES_MODULE.AppEngineHttpQueue(
         appEngineRoutingOverride={'service': 'abc'})
     expected_config.type = _BETA_MESSAGES_MODULE.Queue.TypeValueValuesEnum.PUSH
     args = self.parser.parse_args([
         '--log-sampling-ratio=0.5', '--max-attempts=unlimited',
         '--max-retry-duration=5s', '--max-doublings=4', '--min-backoff=1s',
         '--max-backoff=10s', '--max-dispatches-per-second=100',
         '--max-concurrent-dispatches=10', '--routing-override=service:abc'
     ])
     actual_config = parsers.ParseCreateOrUpdateQueueArgs(
         args,
         constants.PUSH_QUEUE,
         _BETA_MESSAGES_MODULE,
         release_track=base.ReleaseTrack.BETA)
     self.assertEqual(actual_config, expected_config)
コード例 #4
0
 def Run(self, args):
     api = GetApiAdapter(self.ReleaseTrack())
     queues_client = api.queues
     queue_ref = parsers.ParseQueue(args.queue, args.location)
     location_ref = parsers.ExtractLocationRefFromQueueRef(queue_ref)
     queue_config = parsers.ParseCreateOrUpdateQueueArgs(
         args,
         constants.PUSH_QUEUE,
         api.messages,
         release_track=self.ReleaseTrack())
     if not self.is_alpha:
         create_response = queues_client.Create(
             location_ref,
             queue_ref,
             retry_config=queue_config.retryConfig,
             rate_limits=queue_config.rateLimits,
             app_engine_http_queue=queue_config.appEngineHttpQueue,
             stackdriver_logging_config=queue_config.
             stackdriverLoggingConfig)
     else:
         create_response = queues_client.Create(
             location_ref,
             queue_ref,
             retry_config=queue_config.retryConfig,
             rate_limits=queue_config.rateLimits,
             app_engine_http_target=queue_config.appEngineHttpTarget)
     log.CreatedResource(
         parsers.GetConsolePromptString(queue_ref.RelativeName()), 'queue')
     return create_response
コード例 #5
0
 def Run(self, args):
     api = GetApiAdapter(self.ReleaseTrack())
     queues_client = api.queues
     queue_ref = parsers.ParseQueue(args.queue, args.location)
     location_ref = parsers.ExtractLocationRefFromQueueRef(queue_ref)
     queue_config = parsers.ParseCreateOrUpdateQueueArgs(
         args,
         constants.PULL_QUEUE,
         api.messages,
         release_track=self.ReleaseTrack())
     log.warning(constants.QUEUE_MANAGEMENT_WARNING)
     if self.ReleaseTrack() == base.ReleaseTrack.ALPHA:
         create_response = queues_client.Create(
             location_ref,
             queue_ref,
             retry_config=queue_config.retryConfig,
             rate_limits=queue_config.rateLimits,
             pull_target=queue_config.pullTarget)
     else:
         create_response = queues_client.Create(
             location_ref,
             queue_ref,
             retry_config=queue_config.retryConfig,
             rate_limits=queue_config.rateLimits,
             queue_type=queue_config.type)
     log.CreatedResource(queue_ref.Name(), 'queue')
     return create_response
コード例 #6
0
 def Run(self, args):
   queues_client = queues.Queues()
   queue_ref = parsers.ParseQueue(args.queue)
   configs = parsers.ParseCreateOrUpdateQueueArgs(
       args, constants.PULL_QUEUE, queues_client.api.messages)
   update_response = queues_client.Patch(queue_ref, *configs)
   log.status.Print('Updated queue [{}].'.format(queue_ref.Name()))
   return update_response
コード例 #7
0
 def Run(self, args):
     queues_client = queues.Queues()
     queue_ref = parsers.ParseQueue(args.id)
     location_ref = parsers.ExtractLocationRefFromQueueRef(queue_ref)
     configs = parsers.ParseCreateOrUpdateQueueArgs(
         args, constants.PULL_QUEUE, queues_client.api.messages)
     create_response = queues_client.Create(location_ref, queue_ref,
                                            *configs)
     log.CreatedResource(queue_ref.Name(), 'queue')
     return create_response
コード例 #8
0
 def testParseCreateOrUpdateQueueArgs_NoArgs(self):
     expected_config = _ALPHA_MESSAGES_MODULE.Queue()
     expected_config.pullTarget = _ALPHA_MESSAGES_MODULE.PullTarget()
     args = self.parser.parse_args([])
     actual_config = parsers.ParseCreateOrUpdateQueueArgs(
         args,
         constants.PULL_QUEUE,
         _ALPHA_MESSAGES_MODULE,
         release_track=base.ReleaseTrack.ALPHA)
     self.assertEqual(actual_config, expected_config)
コード例 #9
0
ファイル: update.py プロジェクト: piotradamczyk5/gcloud_cli
 def Run(self, args):
     if self.ReleaseTrack() == base.ReleaseTrack.BETA:
         queue_type = args.type
     else:
         queue_type = constants.PUSH_QUEUE
     parsers.CheckUpdateArgsSpecified(args,
                                      queue_type,
                                      release_track=self.ReleaseTrack())
     api = GetApiAdapter(self.ReleaseTrack())
     queues_client = api.queues
     queue_ref = parsers.ParseQueue(args.queue, args.location)
     queue_config = parsers.ParseCreateOrUpdateQueueArgs(
         args,
         queue_type,
         api.messages,
         is_update=True,
         release_track=self.ReleaseTrack())
     updated_fields = parsers.GetSpecifiedFieldsMask(
         args, queue_type, release_track=self.ReleaseTrack())
     log.warning(constants.QUEUE_MANAGEMENT_WARNING)
     if self.ReleaseTrack() == base.ReleaseTrack.ALPHA:
         app_engine_routing_override = (
             queue_config.appEngineHttpTarget.appEngineRoutingOverride
             if queue_config.appEngineHttpTarget is not None else None)
         update_response = queues_client.Patch(
             queue_ref,
             updated_fields,
             retry_config=queue_config.retryConfig,
             rate_limits=queue_config.rateLimits,
             app_engine_routing_override=app_engine_routing_override)
     elif self.ReleaseTrack() == base.ReleaseTrack.BETA:
         app_engine_routing_override = (
             queue_config.appEngineHttpQueue.appEngineRoutingOverride
             if queue_config.appEngineHttpQueue is not None else None)
         update_response = queues_client.Patch(
             queue_ref,
             updated_fields,
             retry_config=queue_config.retryConfig,
             rate_limits=queue_config.rateLimits,
             app_engine_routing_override=app_engine_routing_override,
             stackdriver_logging_config=queue_config.
             stackdriverLoggingConfig,
             queue_type=queue_config.type)
     else:
         app_engine_routing_override = queue_config.appEngineRoutingOverride
         update_response = queues_client.Patch(
             queue_ref,
             updated_fields,
             retry_config=queue_config.retryConfig,
             rate_limits=queue_config.rateLimits,
             app_engine_routing_override=app_engine_routing_override,
             stackdriver_logging_config=queue_config.
             stackdriverLoggingConfig)
     log.status.Print('Updated queue [{}].'.format(queue_ref.Name()))
     return update_response
コード例 #10
0
 def Run(self, args):
   parsers.CheckUpdateArgsSpecified(args, constants.PULL_QUEUE)
   queues_client = queues.Queues()
   queue_ref = parsers.ParseQueue(args.queue, args.location)
   queue_config = parsers.ParseCreateOrUpdateQueueArgs(
       args, constants.PULL_QUEUE, queues_client.api.messages, is_update=True)
   log.warning(constants.QUEUE_MANAGEMENT_WARNING)
   update_response = queues_client.Patch(
       queue_ref, retry_config=queue_config.retryConfig)
   log.status.Print('Updated queue [{}].'.format(queue_ref.Name()))
   return update_response
コード例 #11
0
 def testParseBetaCreateOrUpdateQueueArgs_NoArgs(self):
     expected_config = _BETA_MESSAGES_MODULE.Queue()
     expected_config.appEngineHttpQueue = (
         _BETA_MESSAGES_MODULE.AppEngineHttpQueue())
     expected_config.type = _BETA_MESSAGES_MODULE.Queue.TypeValueValuesEnum.PUSH
     args = self.parser.parse_args([])
     actual_config = parsers.ParseCreateOrUpdateQueueArgs(
         args,
         constants.PUSH_QUEUE,
         _BETA_MESSAGES_MODULE,
         release_track=base.ReleaseTrack.BETA)
     self.assertEqual(actual_config, expected_config)
コード例 #12
0
 def testParseCreateOrUpdateQueueArgs_AllArgs_MaxAttemptsUnlimited(self):
     expected_config = _ALPHA_MESSAGES_MODULE.Queue()
     expected_config.retryConfig = _ALPHA_MESSAGES_MODULE.RetryConfig(
         unlimitedAttempts=True, maxRetryDuration='5s')
     expected_config.pullTarget = _ALPHA_MESSAGES_MODULE.PullTarget()
     args = self.parser.parse_args(
         ['--max-attempts=unlimited', '--max-retry-duration=5s'])
     actual_config = parsers.ParseCreateOrUpdateQueueArgs(
         args,
         constants.PULL_QUEUE,
         _ALPHA_MESSAGES_MODULE,
         release_track=base.ReleaseTrack.ALPHA)
     self.assertEqual(actual_config, expected_config)
コード例 #13
0
 def testParseClearPullFlags(self):
     flags.AddUpdatePullQueueFlags(self.parser)
     expected_config = _ALPHA_MESSAGES_MODULE.Queue(
         retryConfig=_ALPHA_MESSAGES_MODULE.RetryConfig())
     args = self.parser.parse_args(
         ['--clear-max-attempts', '--clear-max-retry-duration'])
     actual_config = parsers.ParseCreateOrUpdateQueueArgs(
         args,
         constants.PULL_QUEUE,
         _ALPHA_MESSAGES_MODULE,
         is_update=True,
         release_track=base.ReleaseTrack.ALPHA)
     self.assertEqual(actual_config, expected_config)
コード例 #14
0
 def Run(self, args):
   queues_client = queues.Queues()
   queue_ref = parsers.ParseQueue(args.queue, args.location)
   location_ref = parsers.ExtractLocationRefFromQueueRef(queue_ref)
   queue_config = parsers.ParseCreateOrUpdateQueueArgs(
       args, constants.PULL_QUEUE, queues_client.api.messages)
   log.warning(constants.QUEUE_MANAGEMENT_WARNING)
   create_response = queues_client.Create(
       location_ref, queue_ref,
       retry_config=queue_config.retryConfig,
       rate_limits=queue_config.rateLimits,
       pull_target=queue_config.pullTarget)
   log.CreatedResource(queue_ref.Name(), 'queue')
   return create_response
コード例 #15
0
 def testParseClearPushFlags(self):
     flags.AddUpdatePushQueueFlags(self.parser)
     expected_config = _MESSAGES_MODULE.Queue(
         retryConfig=_MESSAGES_MODULE.RetryConfig(),
         rateLimits=_MESSAGES_MODULE.RateLimits(),
         appEngineRoutingOverride=_MESSAGES_MODULE.AppEngineRouting())
     args = self.parser.parse_args([
         '--clear-max-attempts', '--clear-max-retry-duration',
         '--clear-max-doublings', '--clear-min-backoff',
         '--clear-max-backoff', '--clear-max-dispatches-per-second',
         '--clear-max-concurrent-dispatches', '--clear-routing-override'
     ])
     actual_config = parsers.ParseCreateOrUpdateQueueArgs(
         args, constants.PUSH_QUEUE, _MESSAGES_MODULE, is_update=True)
     self.assertEqual(actual_config, expected_config)
コード例 #16
0
 def Run(self, args):
     queues_client = queues.Queues()
     queue_ref = parsers.ParseQueue(args.id)
     location_ref = parsers.ExtractLocationRefFromQueueRef(queue_ref)
     queue_config = parsers.ParseCreateOrUpdateQueueArgs(
         args, constants.APP_ENGINE_QUEUE, queues_client.api.messages)
     log.warn(constants.QUEUE_MANAGEMENT_WARNING)
     create_response = queues_client.Create(
         location_ref,
         queue_ref,
         retry_config=queue_config.retryConfig,
         rate_limits=queue_config.rateLimits,
         app_engine_http_target=queue_config.appEngineHttpTarget)
     log.CreatedResource(queue_ref.Name(), 'queue')
     return create_response
コード例 #17
0
 def Run(self, args):
     api = GetApiAdapter(self.ReleaseTrack())
     queues_client = api.queues
     queue_ref = parsers.ParseQueue(args.queue, args.location)
     location_ref = parsers.ExtractLocationRefFromQueueRef(queue_ref)
     queue_config = parsers.ParseCreateOrUpdateQueueArgs(
         args, constants.APP_ENGINE_QUEUE, api.messages, is_alpha=True)
     log.warning(constants.QUEUE_MANAGEMENT_WARNING)
     create_response = queues_client.Create(
         location_ref,
         queue_ref,
         retry_config=queue_config.retryConfig,
         rate_limits=queue_config.rateLimits,
         app_engine_http_target=queue_config.appEngineHttpTarget)
     log.CreatedResource(queue_ref.Name(), 'queue')
     return create_response
コード例 #18
0
 def Run(self, args):
     parsers.CheckUpdateArgsSpecified(args,
                                      constants.PULL_QUEUE,
                                      release_track=self.ReleaseTrack())
     api = GetApiAdapter(self.ReleaseTrack())
     queues_client = api.queues
     queue_ref = parsers.ParseQueue(args.queue, args.location)
     queue_config = parsers.ParseCreateOrUpdateQueueArgs(
         args,
         constants.PULL_QUEUE,
         api.messages,
         is_update=True,
         release_track=base.ReleaseTrack.ALPHA)
     log.warning(constants.QUEUE_MANAGEMENT_WARNING)
     update_response = queues_client.Patch(
         queue_ref, retry_config=queue_config.retryConfig)
     log.status.Print('Updated queue [{}].'.format(queue_ref.Name()))
     return update_response
コード例 #19
0
 def Run(self, args):
   parsers.CheckUpdateArgsSpecified(args, constants.APP_ENGINE_QUEUE)
   queues_client = queues.Queues()
   queue_ref = parsers.ParseQueue(args.queue, args.location)
   queue_config = parsers.ParseCreateOrUpdateQueueArgs(
       args, constants.APP_ENGINE_QUEUE, queues_client.api.messages,
       is_update=True)
   app_engine_routing_override = (
       queue_config.appEngineHttpTarget.appEngineRoutingOverride if
       queue_config.appEngineHttpTarget is not None else
       None)
   log.warning(constants.QUEUE_MANAGEMENT_WARNING)
   update_response = queues_client.Patch(
       queue_ref,
       retry_config=queue_config.retryConfig,
       rate_limits=queue_config.rateLimits,
       app_engine_routing_override=app_engine_routing_override)
   log.status.Print('Updated queue [{}].'.format(queue_ref.Name()))
   return update_response
コード例 #20
0
 def Run(self, args):
   parsers.CheckUpdateArgsSpecified(args, constants.PULL_QUEUE,
                                    release_track=self.ReleaseTrack())
   api = GetApiAdapter(self.ReleaseTrack())
   queues_client = api.queues
   queue_ref = parsers.ParseQueue(args.queue, args.location)
   queue_config = parsers.ParseCreateOrUpdateQueueArgs(
       args,
       constants.PULL_QUEUE,
       api.messages,
       is_update=True,
       release_track=self.ReleaseTrack())
   updated_fields = parsers.GetSpecifiedFieldsMask(
       args, constants.PULL_QUEUE, release_track=self.ReleaseTrack())
   update_response = queues_client.Patch(
       queue_ref, updated_fields, retry_config=queue_config.retryConfig)
   log.status.Print('Updated queue [{}].'.format(
       parsers.GetConsolePromptString(queue_ref.RelativeName())))
   return update_response
コード例 #21
0
 def testParseCreateOrUpdateQueueArgs_AllArgs_MaxAttemptsUnlimited(self):
     expected_config = _MESSAGES_MODULE.Queue()
     expected_config.retryConfig = _MESSAGES_MODULE.RetryConfig(
         maxAttempts=-1,
         maxRetryDuration='5s',
         maxDoublings=4,
         minBackoff='1s',
         maxBackoff='10s')
     expected_config.rateLimits = _MESSAGES_MODULE.RateLimits(
         maxDispatchesPerSecond=100, maxConcurrentDispatches=10)
     expected_config.appEngineRoutingOverride = {'service': 'abc'}
     args = self.parser.parse_args([
         '--max-attempts=unlimited', '--max-retry-duration=5s',
         '--max-doublings=4', '--min-backoff=1s', '--max-backoff=10s',
         '--max-dispatches-per-second=100',
         '--max-concurrent-dispatches=10', '--routing-override=service:abc'
     ])
     actual_config = parsers.ParseCreateOrUpdateQueueArgs(
         args, constants.PUSH_QUEUE, _MESSAGES_MODULE)
     self.assertEqual(actual_config, expected_config)
コード例 #22
0
 def Run(self, args):
     if self.ReleaseTrack() == base.ReleaseTrack.BETA:
         queue_type = args.type
     else:
         queue_type = constants.PUSH_QUEUE
     api = GetApiAdapter(self.ReleaseTrack())
     queues_client = api.queues
     queue_ref = parsers.ParseQueue(args.queue, args.location)
     location_ref = parsers.ExtractLocationRefFromQueueRef(queue_ref)
     queue_config = parsers.ParseCreateOrUpdateQueueArgs(
         args, queue_type, api.messages, release_track=self.ReleaseTrack())
     if self.ReleaseTrack() == base.ReleaseTrack.ALPHA:
         create_response = queues_client.Create(
             location_ref,
             queue_ref,
             retry_config=queue_config.retryConfig,
             rate_limits=queue_config.rateLimits,
             app_engine_http_target=queue_config.appEngineHttpTarget)
     elif self.ReleaseTrack() == base.ReleaseTrack.BETA:
         create_response = queues_client.Create(
             location_ref,
             queue_ref,
             retry_config=queue_config.retryConfig,
             rate_limits=queue_config.rateLimits,
             app_engine_http_queue=queue_config.appEngineHttpQueue,
             stackdriver_logging_config=queue_config.
             stackdriverLoggingConfig,
             queue_type=queue_config.type)
     else:
         create_response = queues_client.Create(
             location_ref,
             queue_ref,
             retry_config=queue_config.retryConfig,
             rate_limits=queue_config.rateLimits,
             app_engine_routing_override=queue_config.
             appEngineRoutingOverride,
             stackdriver_logging_config=queue_config.
             stackdriverLoggingConfig)
     log.CreatedResource(
         parsers.GetConsolePromptString(queue_ref.RelativeName()), 'queue')
     return create_response
 def Run(self, args):
     parsers.CheckUpdateArgsSpecified(args,
                                      constants.PUSH_QUEUE,
                                      release_track=self.ReleaseTrack())
     api = GetApiAdapter(self.ReleaseTrack())
     queues_client = api.queues
     queue_ref = parsers.ParseQueue(args.queue, args.location)
     queue_config = parsers.ParseCreateOrUpdateQueueArgs(
         args,
         constants.PUSH_QUEUE,
         api.messages,
         is_update=True,
         release_track=self.ReleaseTrack())
     updated_fields = parsers.GetSpecifiedFieldsMask(
         args, constants.PUSH_QUEUE, release_track=self.ReleaseTrack())
     if not self.is_alpha:
         app_engine_routing_override = (
             queue_config.appEngineHttpQueue.appEngineRoutingOverride
             if queue_config.appEngineHttpQueue is not None else None)
         update_response = queues_client.Patch(
             queue_ref,
             updated_fields,
             retry_config=queue_config.retryConfig,
             rate_limits=queue_config.rateLimits,
             app_engine_routing_override=app_engine_routing_override,
             stackdriver_logging_config=queue_config.
             stackdriverLoggingConfig)
     else:
         app_engine_routing_override = (
             queue_config.appEngineHttpTarget.appEngineRoutingOverride
             if queue_config.appEngineHttpTarget is not None else None)
         update_response = queues_client.Patch(
             queue_ref,
             updated_fields,
             retry_config=queue_config.retryConfig,
             rate_limits=queue_config.rateLimits,
             app_engine_routing_override=app_engine_routing_override)
     log.status.Print('Updated queue [{}].'.format(
         parsers.GetConsolePromptString(queue_ref.RelativeName())))
     return update_response
コード例 #24
0
 def Run(self, args):
     api = GetApiAdapter(self.ReleaseTrack())
     queues_client = api.queues
     queue_ref = parsers.ParseQueue(args.queue, args.location)
     location_ref = parsers.ExtractLocationRefFromQueueRef(queue_ref)
     queue_config = parsers.ParseCreateOrUpdateQueueArgs(
         args,
         constants.PUSH_QUEUE,
         api.messages,
         release_track=self.ReleaseTrack())
     log.warning(constants.QUEUE_MANAGEMENT_WARNING)
     if self.ReleaseTrack() == base.ReleaseTrack.ALPHA:
         create_response = queues_client.Create(
             location_ref,
             queue_ref,
             retry_config=queue_config.retryConfig,
             rate_limits=queue_config.rateLimits,
             app_engine_http_target=queue_config.appEngineHttpTarget)
     elif self.ReleaseTrack() == base.ReleaseTrack.BETA:
         create_response = queues_client.Create(
             location_ref,
             queue_ref,
             retry_config=queue_config.retryConfig,
             rate_limits=queue_config.rateLimits,
             app_engine_http_queue=queue_config.appEngineHttpQueue,
             stackdriver_logging_config=queue_config.
             stackdriverLoggingConfig)
     else:
         create_response = queues_client.Create(
             location_ref,
             queue_ref,
             retry_config=queue_config.retryConfig,
             rate_limits=queue_config.rateLimits,
             app_engine_routing_override=queue_config.
             appEngineRoutingOverride)
     log.CreatedResource(queue_ref.Name(), 'queue')
     return create_response
コード例 #25
0
def DeployQueuesYamlFile(
    tasks_api,
    config,
    all_queues_in_db_dict,
    ct_api_version=base.ReleaseTrack.BETA
):
  """Perform a deployment based on the parsed 'queue.yaml' file.

  Args:
    tasks_api: api_lib.tasks.<Alpha|Beta|GA>ApiAdapter, Cloud Tasks API needed
      for doing queue based operations.
    config: A yaml_parsing.ConfigYamlInfo object for the parsed YAML file we
      are going to process.
    all_queues_in_db_dict: A dictionary with queue names as keys and
      corresponding apis.cloudtasks.<ver>.cloudtasks_<ver>_messages.Queue
      objects as values
    ct_api_version: The Cloud Tasks API version we want to use.

  Returns:
    A list of responses received from the Cloud Tasks APIs representing queue
    states for every call made to modify the attributes of a queue.
  """

  class _DummyQueueRef:
    """A dummy class to simulate queue_ref resource objects used in CT APIs.

    This class simulates the behaviour of the resource object returned by
    tasks.parsers.ParseQueue(...) function. We use this dummy class instead of
    creating an actual resource instance because otherwise it takes roughly 2
    minutes to create resource instances for a 1000 queues.

    Attributes:
      _relative_path: A string representing the full path for a queue in the
        format: 'projects/<project>/locations/<location>/queues/<queue>'
    """

    def __init__(self, relative_path):
      """Initializes the instance and sets the relative path."""
      self._relative_path = relative_path

    def RelativeName(self):
      """Gets the string representing the full path for a queue.

      This is the only function we are currently using in CT APIs for the
      queue_ref resource object.

      Returns:
        A string representing the full path for a queue in the following
        format: 'projects/<project>/locations/<location>/queues/<queue>'
      """
      return self._relative_path

  queue_yaml = config.parsed
  queues_client = tasks_api.queues
  queues_not_present_in_yaml = set(all_queues_in_db_dict.keys())

  # Just need to create one real instance of queue_ref. After that we can
  # create dummy queue_ref objects based on this instance.
  queue_ref = parsers.ParseQueue('a')
  queue_ref_stub = queue_ref.RelativeName()[:-1]

  # Get the arg values that we need to fill up for each queue using CT APIs
  # pylint: disable=protected-access
  task_args = flags._PushQueueFlags(release_track=ct_api_version)
  # TODO(b/169069379) Remove max_burst_size when/if API is exposed via `gcloud
  # tasks queues` CLI invocation.
  task_args.append(base.Argument('--max_burst_size', type=int, help=''))
  expected_args = []
  for task_flag in task_args:
    new_arg = task_flag.args[0][2:].replace('-', '_')
    expected_args.extend((new_arg, 'clear_{}'.format(new_arg)))

  responses = []
  for queue in queue_yaml.queue:
    if queue.name in queues_not_present_in_yaml:
      queues_not_present_in_yaml.remove(queue.name)

    queue_ref = _DummyQueueRef('{}{}'.format(queue_ref_stub, queue.name))
    cur_queue_object = all_queues_in_db_dict.get(queue.name, None)
    cloud_task_args = _PopulateCloudTasksArgs(queue, cur_queue_object,
                                              expected_args)

    rate_to_set = cloud_task_args.GetValue('max_dispatches_per_second')
    if (
        cur_queue_object and
        (rate_to_set or queue.mode == constants.PULL_QUEUE) and
        cur_queue_object.state in (cur_queue_object.state.DISABLED,
                                   cur_queue_object.state.PAUSED)
    ):
      # Resume queue if it exists, was previously disabled/paused and the
      # new rate > 0
      queues_client.Resume(queue_ref)
    elif (
        cur_queue_object and not rate_to_set and
        cur_queue_object.state == cur_queue_object.state.RUNNING and
        queue.mode == constants.PUSH_QUEUE
    ):
      queues_client.Pause(queue_ref)

    if not _AnyUpdatableFields(cloud_task_args):
      # Queue attributes in DB == Queue attributes in YAML
      continue

    queue_config = parsers.ParseCreateOrUpdateQueueArgs(
        cloud_task_args,
        # Deliberately hardcoding push queues because we want to be able to
        # modify all attributes even for pull queues.
        constants.PUSH_QUEUE,
        tasks_api.messages,
        release_track=ct_api_version)
    updated_fields = parsers.GetSpecifiedFieldsMask(
        cloud_task_args, constants.PUSH_QUEUE, release_track=ct_api_version)
    app_engine_routing_override = (
        queue_config.appEngineHttpQueue.appEngineRoutingOverride
        if queue_config.appEngineHttpQueue is not None else None)
    response = queues_client.Patch(
        queue_ref,
        updated_fields,
        retry_config=queue_config.retryConfig,
        rate_limits=queue_config.rateLimits,
        app_engine_routing_override=app_engine_routing_override,
        queue_type=queue_config.type
    )
    responses.append(response)

    if (
        not cur_queue_object and
        not rate_to_set and
        queue.mode == constants.PUSH_QUEUE
    ):
      # Pause queue if its a new push-queue and rate is zero.
      queues_client.Pause(queue_ref)

  for queue_name in queues_not_present_in_yaml:
    queue = all_queues_in_db_dict[queue_name]
    if queue.state in (queue.state.PAUSED, queue.state.DISABLED):
      continue
    queue_ref = _DummyQueueRef('{}{}'.format(queue_ref_stub, queue_name))
    queues_client.Pause(queue_ref)
  return responses
コード例 #26
0
 def testParseCreateOrUpdateQueueArgs_NoArgs(self):
     expected_config = _MESSAGES_MODULE.Queue()
     args = self.parser.parse_args([])
     actual_config = parsers.ParseCreateOrUpdateQueueArgs(
         args, constants.PUSH_QUEUE, _MESSAGES_MODULE)
     self.assertEqual(actual_config, expected_config)