def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace. All the arguments that were provided to this command invocation. Returns: Display dictionary with information about the new ACK deadline seconds for the given subscription and ackId. """ client = subscriptions.SubscriptionsClient() subscription_ref = args.CONCEPTS.subscription.Parse() ack_ids = flags.ParseAckIdsArgs(args) result = client.ModifyAckDeadline(subscription_ref, ack_ids, args.ack_deadline) log.status.Print( 'Set ackDeadlineSeconds to [{0}] for messages with ackId ' '[{1}]] for subscription [{2}]'.format( args.ack_deadline, ','.join(ack_ids), subscription_ref.RelativeName())) legacy_output = properties.VALUES.pubsub.legacy_output.GetBool() if legacy_output: return { 'subscriptionId': subscription_ref.RelativeName(), 'ackId': ack_ids, 'ackDeadlineSeconds': args.ack_deadline } else: return result
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace. All the arguments that were provided to this command invocation. Returns: Display dictionary with information about the new ACK deadline seconds for the given subscription and ackId. """ client = subscriptions.SubscriptionsClient() subscription_ref = args.CONCEPTS.subscription.Parse() ack_ids = flags.ParseAckIdsArgs(args) result = None ack_ids_and_failure_reasons = {} try: result = client.ModifyAckDeadline(subscription_ref, ack_ids, args.ack_deadline) except api_ex.HttpError as error: exc = exceptions.HttpException(error) ack_ids_and_failure_reasons = util.ParseExactlyOnceErrorInfo( exc.payload.details) # If the failure doesn't have more information (specifically for exactly # once related failures), re-raise the exception. if not ack_ids_and_failure_reasons: raise failed_ack_ids = [ack['AckId'] for ack in ack_ids_and_failure_reasons] successfully_processed_ack_ids = [ ack_id for ack_id in ack_ids if ack_id not in failed_ack_ids ] log.status.Print( 'Set ackDeadlineSeconds to [{0}] for messages with ackId ' '[{1}]] for subscription [{2}]'.format( args.ack_deadline, ','.join(successfully_processed_ack_ids), subscription_ref.RelativeName())) if failed_ack_ids: log.status.Print( 'Set ackDeadlineSeconds to [{0}] for messages with ackId ' '[{1}]] failed for subscription [{2}]'.format( args.ack_deadline, ','.join(failed_ack_ids), subscription_ref.RelativeName())) if ack_ids_and_failure_reasons: return ack_ids_and_failure_reasons legacy_output = properties.VALUES.pubsub.legacy_output.GetBool() if legacy_output: result = { 'subscriptionId': subscription_ref.RelativeName(), 'ackId': ack_ids, 'ackDeadlineSeconds': args.ack_deadline } return result
def Run(self, args): ack_ids = flags.ParseAckIdsArgs(args) legacy_output = properties.VALUES.pubsub.legacy_output.GetBool() result, ack_ids_and_failure_reasons = _Run(args, ack_ids, capture_failures=True, legacy_output=legacy_output) if ack_ids_and_failure_reasons: return ack_ids_and_failure_reasons return result
def Run(self, args): ack_ids = flags.ParseAckIdsArgs(args) legacy_output = properties.VALUES.pubsub.legacy_output.GetBool() return _Run(args, ack_ids, legacy_output=legacy_output)