def ListTriggers(self, namespace_ref):
     messages = self._messages_module
     request = messages.RunNamespacesTriggersListRequest(
         parent=namespace_ref.RelativeName())
     with metrics.RecordDuration(metric_names.LIST_TRIGGERS):
         response = self._client.namespaces_triggers.List(request)
     return [trigger.Trigger(item, messages) for item in response.items]
 def ListTriggers(self, namespace_ref):
   """Returns a list of existing triggers in the given namespace."""
   request = self.messages.AnthoseventsNamespacesTriggersListRequest(
       parent=namespace_ref.RelativeName())
   with metrics.RecordDuration(metric_names.LIST_TRIGGERS):
     response = self._client.namespaces_triggers.List(request)
   return [trigger.Trigger(item, self.messages) for item in response.items]
  def CreateTrigger(self, trigger_ref, source_obj, event_type, target_service):
    """Create a trigger that sends events to the target service.

    Args:
      trigger_ref: googlecloudsdk.core.resources.Resource, trigger resource.
      source_obj: source.Source. The source object to be created after the
        trigger.
      event_type: custom_resource_definition.EventTypeDefinition, the event
        type the source will filter by.
      target_service: str, name of the Cloud Run service to subscribe.

    Returns:
      trigger.Trigger of the created trigger.
    """
    trigger_obj = trigger.Trigger.New(self._client, trigger_ref.Parent().Name())
    trigger_obj.name = trigger_ref.Name()
    trigger_obj.dependency = source_obj
    # TODO(b/141617597): Set to str(random.random()) without prepended string
    trigger_obj.filter_attributes[
        trigger.SOURCE_TRIGGER_LINK_FIELD] = 'link{}'.format(random.random())
    trigger_obj.filter_attributes[
        trigger.EVENT_TYPE_FIELD] = event_type.type
    trigger_obj.subscriber = target_service

    request = self.messages.RunNamespacesTriggersCreateRequest(
        trigger=trigger_obj.Message(),
        parent=trigger_ref.Parent().RelativeName())
    with metrics.RecordDuration(metric_names.CREATE_TRIGGER):
      try:
        response = self._client.namespaces_triggers.Create(request)
      except api_exceptions.HttpConflictError:
        raise exceptions.TriggerCreationError(
            'Trigger [{}] already exists.'.format(trigger_obj.name))

    return trigger.Trigger(response, self.messages)
Exemple #4
0
 def GetTrigger(self, trigger_ref):
     """Returns the referenced trigger."""
     request = self.messages.AnthoseventsNamespacesTriggersGetRequest(
         name=trigger_ref.RelativeName())
     try:
         with metrics.RecordDuration(metric_names.GET_TRIGGER):
             response = self._client.namespaces_triggers.Get(request)
     except api_exceptions.HttpNotFoundError:
         return None
     return trigger.Trigger(response, self.messages)
Exemple #5
0
    def ListTriggers(self, namespace_ref):
        """Returns a list of existing triggers in the given namespace."""
        client = self.ClientFromCrd(_TRIGGERS_CRD_NAME)
        messages = client.MESSAGES_MODULE

        request = messages.AnthoseventsNamespacesTriggersListRequest(
            parent=namespace_ref.RelativeName())
        with metrics.RecordDuration(metric_names.LIST_TRIGGERS):
            response = client.namespaces_triggers.List(request)
        return [trigger.Trigger(item, messages) for item in response.items]
Exemple #6
0
    def GetTrigger(self, trigger_ref):
        """Returns the referenced trigger."""
        client = self.ClientFromCrd(_TRIGGERS_CRD_NAME)
        messages = client.MESSAGES_MODULE

        request = messages.AnthoseventsNamespacesTriggersGetRequest(
            name=trigger_ref.RelativeName())
        try:
            with metrics.RecordDuration(metric_names.GET_TRIGGER):
                response = client.namespaces_triggers.Get(request)
        except api_exceptions.HttpNotFoundError:
            return None
        return trigger.Trigger(response, messages)
    def CreateTrigger(self, trigger_ref, source_obj, event_type,
                      trigger_filters, target_service, broker):
        """Create a trigger that sends events to the target service.

    Args:
      trigger_ref: googlecloudsdk.core.resources.Resource, trigger resource.
      source_obj: source.Source. The source object to be created after the
        trigger. If creating a custom event, this may be None.
      event_type: str, the event type the source will filter by.
      trigger_filters: collections.OrderedDict()
      target_service: str, name of the Cloud Run service to subscribe.
      broker: str, name of the broker to act as a sink for the source.

    Returns:
      trigger.Trigger of the created trigger.
    """
        trigger_obj = trigger.Trigger.New(self._client,
                                          trigger_ref.Parent().Name())
        trigger_obj.name = trigger_ref.Name()
        if source_obj is not None:
            trigger_obj.dependency = source_obj
            # TODO(b/141617597): Set to str(random.random()) without prepended string
            trigger_obj.filter_attributes[
                trigger.SOURCE_TRIGGER_LINK_FIELD] = 'link{}'.format(
                    random.random())
        trigger_obj.filter_attributes[trigger.EVENT_TYPE_FIELD] = event_type

        # event/flags.py ensures filter key doesn't include disallowed fields
        trigger_obj.filter_attributes.update(trigger_filters)

        trigger_obj.subscriber = target_service
        trigger_obj.broker = broker

        request = self.messages.RunNamespacesTriggersCreateRequest(
            trigger=trigger_obj.Message(),
            parent=trigger_ref.Parent().RelativeName())
        try:
            with metrics.RecordDuration(metric_names.CREATE_TRIGGER):
                response = self._client.namespaces_triggers.Create(request)
        except api_exceptions.HttpConflictError:
            raise exceptions.TriggerCreationError(
                'Trigger [{}] already exists.'.format(trigger_obj.name))

        return trigger.Trigger(response, self.messages)