示例#1
0
def _Run(args, enable_labels=False, legacy_output=False):
    """Creates one or more topics."""
    client = topics.TopicsClient()

    labels = None
    if enable_labels:
        labels = labels_util.ParseCreateArgs(args,
                                             client.messages.Topic.LabelsValue)

    failed = []
    for topic_ref in args.CONCEPTS.topic.Parse():

        try:
            result = client.Create(topic_ref, labels=labels)
        except api_ex.HttpError as error:
            exc = exceptions.HttpException(error)
            log.CreatedResource(topic_ref.RelativeName(),
                                kind='topic',
                                failed=exc.payload.status_message)
            failed.append(topic_ref.topicsId)
            continue

        if legacy_output:
            result = util.TopicDisplayDict(result)
        log.CreatedResource(topic_ref.RelativeName(), kind='topic')
        yield result

    if failed:
        raise util.RequestsFailedError(failed, 'create')
示例#2
0
def _Run(args, legacy_output=False):
    """Deletes one or more subscriptions."""
    client = subscriptions.SubscriptionsClient()

    failed = []
    for subscription_ref in args.CONCEPTS.subscription.Parse():

        try:
            result = client.Delete(subscription_ref)
        except api_ex.HttpError as error:
            exc = exceptions.HttpException(error)
            log.DeletedResource(subscription_ref.RelativeName(),
                                kind='subscription',
                                failed=exc.payload.status_message)
            failed.append(subscription_ref.subscriptionsId)
            continue

        subscription = client.messages.Subscription(
            name=subscription_ref.RelativeName())

        if legacy_output:
            result = util.SubscriptionDisplayDict(subscription)

        log.DeletedResource(subscription_ref.RelativeName(),
                            kind='subscription')
        yield result

    if failed:
        raise util.RequestsFailedError(failed, 'delete')
示例#3
0
def _Run(args):
    """Detaches one or more subscriptions."""
    client = topics.TopicsClient()

    failed = []
    for subscription_ref in args.CONCEPTS.subscription.Parse():
        try:
            result = client.DetachSubscription(subscription_ref)
        except api_ex.HttpError as error:
            exc = exceptions.HttpException(error)
            log.DetachedResource(subscription_ref.RelativeName(),
                                 kind='subscription',
                                 failed=exc.payload.status_message)
            failed.append(subscription_ref.subscriptionsId)
            continue

        subscription = client.messages.Subscription(
            name=subscription_ref.RelativeName())

        log.DetachedResource(subscription_ref.RelativeName(),
                             kind='subscription')
        yield result

    if failed:
        raise util.RequestsFailedError(failed, 'detach')
示例#4
0
def _Run(args, legacy_output=False):
    """Deletes one or more topics."""
    client = topics.TopicsClient()

    failed = []
    for topic_ref in args.CONCEPTS.topic.Parse():

        try:
            result = client.Delete(topic_ref)
        except api_ex.HttpError as error:
            exc = exceptions.HttpException(error)
            log.DeletedResource(topic_ref.RelativeName(),
                                kind='topic',
                                failed=exc.payload.status_message)
            failed.append(topic_ref.topicsId)
            continue

        topic = client.messages.Topic(name=topic_ref.RelativeName())
        if legacy_output:
            result = util.TopicDisplayDict(topic)
        log.DeletedResource(topic_ref.RelativeName(), kind='topic')
        yield result

    if failed:
        raise util.RequestsFailedError(failed, 'delete')
示例#5
0
    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.

    Yields:
      A serialized object (dict) describing the results of the operation.
      This description fits the Resource described in the ResourceRegistry under
      'pubsub.projects.subscriptions'.

    Raises:
      util.RequestFailedError: if any of the requests to the API failed.
    """
        client = subscriptions.SubscriptionsClient()

        topic_ref = util.ParseTopic(args.topic, args.topic_project)
        push_config = util.ParsePushConfig(args.push_endpoint)
        retain_acked_messages = getattr(args, 'retain_acked_messages', None)
        retention_duration = getattr(args, 'message_retention_duration', None)
        if retention_duration:
            retention_duration = util.FormatDuration(retention_duration)

        labels = labels_util.UpdateLabels(
            None,
            client.messages.Subscription.LabelsValue,
            update_labels=labels_util.GetUpdateLabelsDictFromArgs(args))

        failed = []
        for subscription_name in args.subscription:
            subscription_ref = util.ParseSubscription(subscription_name)

            try:
                result = client.Create(subscription_ref,
                                       topic_ref,
                                       args.ack_deadline,
                                       push_config,
                                       retain_acked_messages,
                                       retention_duration,
                                       labels=labels)
            except api_ex.HttpError as error:
                exc = exceptions.HttpException(error)
                log.CreatedResource(subscription_ref.RelativeName(),
                                    kind='subscription',
                                    failed=exc.payload.status_message)
                failed.append(subscription_name)
                continue

            result = util.SubscriptionDisplayDict(result)
            log.CreatedResource(subscription_ref.RelativeName(),
                                kind='subscription')

            yield result

        if failed:
            raise util.RequestsFailedError(failed, 'create')
示例#6
0
def _Run(args,
         enable_labels=False,
         legacy_output=False,
         enable_kms=False,
         enable_geofencing=False):
    """Creates one or more topics."""
    client = topics.TopicsClient()

    labels = None
    if enable_labels:
        labels = labels_util.ParseCreateArgs(args,
                                             client.messages.Topic.LabelsValue)
    kms_key = None
    if enable_kms:
        kms_ref = args.CONCEPTS.kms_key.Parse()
        if kms_ref:
            kms_key = kms_ref.RelativeName()
        else:
            # Did user supply any topic-encryption-key flags?
            for keyword in [
                    'topic-encryption-key', 'topic-encryption-key-project',
                    'topic-encryption-key-location',
                    'topic-encryption-key-keyring'
            ]:
                if args.IsSpecified(keyword.replace('-', '_')):
                    raise core_exceptions.Error(
                        '--topic-encryption-key was not fully specified.')

    message_storage_policy_allowed_regions = None
    if enable_geofencing:
        message_storage_policy_allowed_regions = args.message_storage_policy_allowed_regions

    failed = []
    for topic_ref in args.CONCEPTS.topic.Parse():

        try:
            result = client.Create(topic_ref,
                                   labels=labels,
                                   kms_key=kms_key,
                                   message_storage_policy_allowed_regions=
                                   message_storage_policy_allowed_regions)
        except api_ex.HttpError as error:
            exc = exceptions.HttpException(error)
            log.CreatedResource(topic_ref.RelativeName(),
                                kind='topic',
                                failed=exc.payload.status_message)
            failed.append(topic_ref.topicsId)
            continue

        if legacy_output:
            result = util.TopicDisplayDict(result)
        log.CreatedResource(topic_ref.RelativeName(), kind='topic')
        yield result

    if failed:
        raise util.RequestsFailedError(failed, 'create')
示例#7
0
def _Run(args, enable_labels=False, legacy_output=False):
    """Creates one or more subscriptions."""
    client = subscriptions.SubscriptionsClient()

    topic_ref = args.CONCEPTS.topic.Parse()
    push_config = util.ParsePushConfig(args)
    retain_acked_messages = getattr(args, 'retain_acked_messages', None)
    retention_duration = getattr(args, 'message_retention_duration', None)
    if retention_duration:
        retention_duration = util.FormatDuration(retention_duration)

    no_expiration = False
    expiration_period = getattr(args, 'expiration_period', None)
    if expiration_period:
        if expiration_period == subscriptions.NEVER_EXPIRATION_PERIOD_VALUE:
            no_expiration = True
            expiration_period = None

    labels = None
    if enable_labels:
        labels = labels_util.ParseCreateArgs(
            args, client.messages.Subscription.LabelsValue)

    failed = []
    for subscription_ref in args.CONCEPTS.subscription.Parse():

        try:
            result = client.Create(subscription_ref,
                                   topic_ref,
                                   args.ack_deadline,
                                   push_config,
                                   retain_acked_messages,
                                   retention_duration,
                                   labels=labels,
                                   no_expiration=no_expiration,
                                   expiration_period=expiration_period)
        except api_ex.HttpError as error:
            exc = exceptions.HttpException(error)
            log.CreatedResource(subscription_ref.RelativeName(),
                                kind='subscription',
                                failed=exc.payload.status_message)
            failed.append(subscription_ref.subscriptionsId)
            continue

        if legacy_output:
            result = util.SubscriptionDisplayDict(result)

        log.CreatedResource(subscription_ref.RelativeName(),
                            kind='subscription')
        yield result

    if failed:
        raise util.RequestsFailedError(failed, 'create')
示例#8
0
    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.

    Yields:
      A serialized object (dict) describing the results of the operation.
      This description fits the Resource described in the ResourceRegistry under
      'pubsub.projects.snapshots'.

    Raises:
      util.RequestFailedError: if any of the requests to the API failed.
    """
        client = snapshots.SnapshotsClient()

        subscription_ref = util.ParseSubscription(args.subscription,
                                                  args.subscription_project)

        labels = labels_util.ParseCreateArgs(
            args, client.messages.CreateSnapshotRequest.LabelsValue)

        failed = []
        for snapshot_name in args.snapshot:
            snapshot_ref = util.ParseSnapshot(snapshot_name)

            try:
                result = client.Create(snapshot_ref,
                                       subscription_ref,
                                       labels=labels)
            except api_ex.HttpError as error:
                exc = exceptions.HttpException(error)
                log.CreatedResource(snapshot_ref.RelativeName(),
                                    kind='snapshot',
                                    failed=exc.payload.status_message)
                failed.append(snapshot_name)
                continue

            result = util.SnapshotDisplayDict(result)
            log.CreatedResource(snapshot_ref.RelativeName(), kind='snapshot')
            yield result

        if failed:
            raise util.RequestsFailedError(failed, 'create')
示例#9
0
    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.

    Yields:
      A serialized object (dict) describing the results of the operation.
      This description fits the Resource described in the ResourceRegistry under
      'pubsub.projects.topics'.

    Raises:
      util.RequestFailedError: if any of the requests to the API failed.
    """
        client = topics.TopicsClient()

        labels = labels_util.UpdateLabels(
            None,
            client.messages.Topic.LabelsValue,
            update_labels=labels_util.GetUpdateLabelsDictFromArgs(args))

        failed = []
        for topic_name in args.topic:
            topic_ref = util.ParseTopic(topic_name)

            try:
                result = client.Create(topic_ref, labels=labels)
            except api_ex.HttpError as error:
                exc = exceptions.HttpException(error)
                log.CreatedResource(topic_ref.RelativeName(),
                                    kind='topic',
                                    failed=exc.payload.status_message)
                failed.append(topic_name)
                continue

            result = util.TopicDisplayDict(result)
            log.CreatedResource(topic_ref.RelativeName(), kind='topic')
            yield result

        if failed:
            raise util.RequestsFailedError(failed, 'create')
示例#10
0
    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.

    Yields:
      A serialized object (dict) describing the results of the operation.
      This description fits the Resource described in the ResourceRegistry under
      'pubsub.projects.subscriptions'.

    Raises:
      util.RequestFailedError: if any of the requests to the API failed.
    """
        client = subscriptions.SubscriptionsClient()

        failed = []
        for subscription_name in args.subscription:
            subscription_ref = util.ParseSubscription(subscription_name)

            try:
                client.Delete(subscription_ref)
            except api_ex.HttpError as error:
                exc = exceptions.HttpException(error)
                log.DeletedResource(subscription_ref.RelativeName(),
                                    kind='subscription',
                                    failed=exc.payload.status_message)
                failed.append(subscription_name)
                continue

            subscription = client.messages.Subscription(
                name=subscription_ref.RelativeName())
            result = util.SubscriptionDisplayDict(subscription)
            log.DeletedResource(subscription_ref.RelativeName(),
                                kind='subscription')
            yield result

        if failed:
            raise util.RequestsFailedError(failed, 'delete')
示例#11
0
def _Run(args, legacy_output=False):
    """Creates one or more topics."""
    client = topics.TopicsClient()

    labels = labels_util.ParseCreateArgs(args,
                                         client.messages.Topic.LabelsValue)

    kms_key = None
    kms_ref = args.CONCEPTS.kms_key.Parse()
    if kms_ref:
        kms_key = kms_ref.RelativeName()
    else:
        # Did user supply any topic-encryption-key flags?
        for keyword in [
                'topic-encryption-key', 'topic-encryption-key-project',
                'topic-encryption-key-location', 'topic-encryption-key-keyring'
        ]:
            if args.IsSpecified(keyword.replace('-', '_')):
                raise core_exceptions.Error(
                    '--topic-encryption-key was not fully specified.')

    retention_duration = getattr(args, 'message_retention_duration', None)
    if retention_duration:
        retention_duration = util.FormatDuration(retention_duration)

    message_storage_policy_allowed_regions = args.message_storage_policy_allowed_regions

    schema = getattr(args, 'schema', None)
    if schema:
        schema = args.CONCEPTS.schema.Parse().RelativeName()
    message_encoding_list = getattr(args, 'message_encoding', None)
    message_encoding = None
    if message_encoding_list:
        message_encoding = message_encoding_list[0]

    failed = []
    for topic_ref in args.CONCEPTS.topic.Parse():
        try:
            result = client.Create(
                topic_ref,
                labels=labels,
                kms_key=kms_key,
                message_retention_duration=retention_duration,
                message_storage_policy_allowed_regions=
                message_storage_policy_allowed_regions,
                schema=schema,
                message_encoding=message_encoding)
        except api_ex.HttpError as error:
            exc = exceptions.HttpException(error)
            log.CreatedResource(topic_ref.RelativeName(),
                                kind='topic',
                                failed=exc.payload.status_message)
            failed.append(topic_ref.topicsId)
            continue

        if legacy_output:
            result = util.TopicDisplayDict(result)
        log.CreatedResource(topic_ref.RelativeName(), kind='topic')
        yield result

    if failed:
        raise util.RequestsFailedError(failed, 'create')
示例#12
0
def _Run(args, enable_labels=False, legacy_output=False):
  """Creates one or more subscriptions."""
  flags.ValidateDeadLetterPolicy(args)

  client = subscriptions.SubscriptionsClient()

  topic_ref = args.CONCEPTS.topic.Parse()
  push_config = util.ParsePushConfig(args)
  enable_message_ordering = getattr(args, 'enable_message_ordering', None)
  filter_string = getattr(args, 'message_filter', None)
  dead_letter_topic = getattr(args, 'dead_letter_topic', None)
  max_delivery_attempts = getattr(args, 'max_delivery_attempts', None)
  retain_acked_messages = getattr(args, 'retain_acked_messages', None)
  retention_duration = getattr(args, 'message_retention_duration', None)
  if retention_duration:
    retention_duration = util.FormatDuration(retention_duration)
  min_retry_delay = getattr(args, 'min_retry_delay', None)
  if min_retry_delay:
    min_retry_delay = util.FormatDuration(min_retry_delay)
  max_retry_delay = getattr(args, 'max_retry_delay', None)
  if max_retry_delay:
    max_retry_delay = util.FormatDuration(max_retry_delay)

  no_expiration = False
  expiration_period = getattr(args, 'expiration_period', None)
  if expiration_period:
    if expiration_period == subscriptions.NEVER_EXPIRATION_PERIOD_VALUE:
      no_expiration = True
      expiration_period = None

  if dead_letter_topic:
    dead_letter_topic = args.CONCEPTS.dead_letter_topic.Parse().RelativeName()

  labels = None
  if enable_labels:
    labels = labels_util.ParseCreateArgs(
        args, client.messages.Subscription.LabelsValue)

  failed = []
  for subscription_ref in args.CONCEPTS.subscription.Parse():

    try:
      result = client.Create(
          subscription_ref,
          topic_ref,
          args.ack_deadline,
          push_config,
          retain_acked_messages,
          retention_duration,
          labels=labels,
          no_expiration=no_expiration,
          expiration_period=expiration_period,
          enable_message_ordering=enable_message_ordering,
          filter_string=filter_string,
          dead_letter_topic=dead_letter_topic,
          max_delivery_attempts=max_delivery_attempts,
          min_retry_delay=min_retry_delay,
          max_retry_delay=max_retry_delay)
    except api_ex.HttpError as error:
      exc = exceptions.HttpException(error)
      log.CreatedResource(subscription_ref.RelativeName(),
                          kind='subscription',
                          failed=exc.payload.status_message)
      failed.append(subscription_ref.subscriptionsId)
      continue

    if legacy_output:
      result = util.SubscriptionDisplayDict(result)

    log.CreatedResource(subscription_ref.RelativeName(), kind='subscription')
    yield result

  if failed:
    raise util.RequestsFailedError(failed, 'create')