Example #1
0
    def test_create_or_update_trigger_db_simple_triggers(self):
        test_fixtures = {"triggertypes": ["triggertype1.yaml"]}
        loader = FixturesLoader()
        fixtures = loader.save_fixtures_to_db(fixtures_pack="generic",
                                              fixtures_dict=test_fixtures)
        triggertypes = fixtures["triggertypes"]
        trigger_type_ref = ResourceReference.to_string_reference(
            name=triggertypes["triggertype1.yaml"]["name"],
            pack=triggertypes["triggertype1.yaml"]["pack"],
        )

        trigger = {
            "name": triggertypes["triggertype1.yaml"]["name"],
            "pack": triggertypes["triggertype1.yaml"]["pack"],
            "type": trigger_type_ref,
        }
        trigger_service.create_or_update_trigger_db(trigger)
        triggers = Trigger.get_all()
        self.assertTrue(
            len(triggers) == 1, "Only one trigger should be created.")
        self.assertTrue(
            triggers[0]["name"] == triggertypes["triggertype1.yaml"]["name"])

        # Try adding duplicate
        trigger_service.create_or_update_trigger_db(trigger)
        triggers = Trigger.get_all()
        self.assertTrue(
            len(triggers) == 1, "Only one trigger should be present.")
        self.assertTrue(
            triggers[0]["name"] == triggertypes["triggertype1.yaml"]["name"])
Example #2
0
    def test_create_or_update_trigger_db_simple_triggers(self):
        test_fixtures = {
            'triggertypes': ['triggertype1.yaml']
        }
        loader = FixturesLoader()
        fixtures = loader.save_fixtures_to_db(fixtures_pack='generic', fixtures_dict=test_fixtures)
        triggertypes = fixtures['triggertypes']
        trigger_type_ref = ResourceReference.to_string_reference(
            name=triggertypes['triggertype1.yaml']['name'],
            pack=triggertypes['triggertype1.yaml']['pack'])

        trigger = {
            'name': triggertypes['triggertype1.yaml']['name'],
            'pack': triggertypes['triggertype1.yaml']['pack'],
            'type': trigger_type_ref
        }
        trigger_service.create_or_update_trigger_db(trigger)
        triggers = Trigger.get_all()
        self.assertTrue(len(triggers) == 1, 'Only one trigger should be created.')
        self.assertTrue(triggers[0]['name'] == triggertypes['triggertype1.yaml']['name'])

        # Try adding duplicate
        trigger_service.create_or_update_trigger_db(trigger)
        triggers = Trigger.get_all()
        self.assertTrue(len(triggers) == 1, 'Only one trigger should be present.')
        self.assertTrue(triggers[0]['name'] == triggertypes['triggertype1.yaml']['name'])
Example #3
0
    def _create_shadow_trigger(triggertype_db):
        try:
            trigger_type_ref = triggertype_db.get_reference().ref
            trigger = {
                'name': triggertype_db.name,
                'pack': triggertype_db.pack,
                'type': trigger_type_ref,
                'parameters': {}
            }
            trigger_db = TriggerService.create_or_update_trigger_db(trigger)

            extra = {'trigger_db': trigger_db}
            LOG.audit(
                'Trigger created for parameter-less TriggerType. Trigger.id=%s'
                % (trigger_db.id),
                extra=extra)
        except (ValidationError, ValueError) as e:
            LOG.exception('Validation failed for trigger data=%s.', trigger)
            # Not aborting as this is convenience.
            return
        except StackStormDBObjectConflictError as e:
            LOG.warn(
                'Trigger creation of "%s" failed with uniqueness conflict. Exception: %s',
                trigger, str(e))
            # Not aborting as this is convenience.
            return
Example #4
0
    def _create_shadow_trigger(triggertype_db):
        try:
            trigger_type_ref = triggertype_db.get_reference().ref
            trigger = {
                "name": triggertype_db.name,
                "pack": triggertype_db.pack,
                "type": trigger_type_ref,
                "parameters": {},
            }
            trigger_db = TriggerService.create_or_update_trigger_db(trigger)

            extra = {"trigger_db": trigger_db}
            LOG.audit(
                "Trigger created for parameter-less TriggerType. Trigger.id=%s"
                % (trigger_db.id),
                extra=extra,
            )
        except (ValidationError, ValueError):
            LOG.exception("Validation failed for trigger data=%s.", trigger)
            # Not aborting as this is convenience.
            return
        except StackStormDBObjectConflictError as e:
            LOG.warn(
                'Trigger creation of "%s" failed with uniqueness conflict. Exception: %s',
                trigger,
                six.text_type(e),
            )
            # Not aborting as this is convenience.
            return
Example #5
0
File: utils.py Project: timff/st2
def _create_trigger(trigger_type):
    """
    :param trigger_type: TriggerType db object.
    :type trigger_type: :class:`TriggerTypeDB`
    """
    if hasattr(trigger_type,
               'parameters_schema') and not trigger_type['parameters_schema']:
        trigger_dict = {
            'name': trigger_type.name,
            'pack': trigger_type.pack,
            'type': trigger_type.get_reference().ref
        }

        try:
            trigger_db = TriggerService.create_or_update_trigger_db(
                trigger=trigger_dict)
        except:
            LOG.exception('Validation failed for Trigger=%s.', trigger_dict)
            raise TriggerTypeRegistrationException(
                'Unable to create Trigger for TriggerType=%s.' %
                trigger_type.name)
        else:
            return trigger_db
    else:
        LOG.debug(
            'Won\'t create Trigger object as TriggerType %s expects ' +
            'parameters.', trigger_type)
        return None
Example #6
0
    def _create_shadow_trigger(triggertype_db):
        try:
            trigger_type_ref = triggertype_db.get_reference().ref
            trigger = {'name': triggertype_db.name,
                       'pack': triggertype_db.pack,
                       'type': trigger_type_ref,
                       'parameters': {}}
            trigger_db = TriggerService.create_or_update_trigger_db(trigger)

            extra = {'trigger_db': trigger_db}
            LOG.audit('Trigger created for parameter-less TriggerType. Trigger.id=%s' %
                      (trigger_db.id), extra=extra)
        except (ValidationError, ValueError) as e:
                LOG.exception('Validation failed for trigger data=%s.', trigger)
                # Not aborting as this is convenience.
                return
        except StackStormDBObjectConflictError as e:
            LOG.warn('Trigger creation of "%s" failed with uniqueness conflict. Exception: %s',
                     trigger, str(e))
            # Not aborting as this is convenience.
            return
Example #7
0
def _create_trigger(trigger_type):
    """
    :param trigger_type: TriggerType db object.
    :type trigger_type: :class:`TriggerTypeDB`
    """
    if hasattr(trigger_type, 'parameters_schema') and not trigger_type['parameters_schema']:
        trigger_dict = {
            'name': trigger_type.name,
            'pack': trigger_type.pack,
            'type': trigger_type.get_reference().ref
        }

        try:
            trigger_db = TriggerService.create_or_update_trigger_db(trigger=trigger_dict)
        except:
            LOG.exception('Validation failed for Trigger=%s.', trigger_dict)
            raise TriggerTypeRegistrationException(
                'Unable to create Trigger for TriggerType=%s.' % trigger_type.name)
        else:
            return trigger_db
    else:
        LOG.debug('Won\'t create Trigger object as TriggerType %s expects ' +
                  'parameters.', trigger_type)
        return None