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)
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)
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]
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)