Пример #1
0
    def _register_sensor_from_pack(self, pack, sensor):
        sensor_metadata_file_path = sensor

        LOG.debug("Loading sensor from %s.", sensor_metadata_file_path)
        content = self._meta_loader.load(file_path=sensor_metadata_file_path)

        pack_field = content.get("pack", None)
        if not pack_field:
            content["pack"] = pack
            pack_field = pack
        if pack_field != pack:
            raise Exception(
                'Model is in pack "%s" but field "pack" is different: %s'
                % (pack, pack_field)
            )

        entry_point = content.get("entry_point", None)
        if not entry_point:
            raise ValueError("Sensor definition missing entry_point")

        # Add in "metadata_file" attribute which stores path to the pack metadata file relative to
        # the pack directory
        metadata_file = content_utils.get_relative_path_to_pack_file(
            pack_ref=pack, file_path=sensor, use_pack_cache=True
        )
        content["metadata_file"] = metadata_file

        # Pass override information
        altered = self._override_loader.override(pack, "sensors", content)

        sensors_dir = os.path.dirname(sensor_metadata_file_path)
        sensor_file_path = os.path.join(sensors_dir, entry_point)
        artifact_uri = "file://%s" % (sensor_file_path)
        content["artifact_uri"] = artifact_uri
        content["entry_point"] = entry_point

        sensor_api = SensorTypeAPI(**content)
        sensor_model = SensorTypeAPI.to_model(sensor_api)

        sensor_types = SensorType.query(pack=sensor_model.pack, name=sensor_model.name)
        if len(sensor_types) >= 1:
            sensor_type = sensor_types[0]
            LOG.debug(
                "Found existing sensor id:%s with name:%s. Will update it.",
                sensor_type.id,
                sensor_type.name,
            )
            sensor_model.id = sensor_type.id

        try:
            sensor_model = SensorType.add_or_update(sensor_model)
        except:
            LOG.exception("Failed creating sensor model for %s", sensor)

        return sensor_model, altered
Пример #2
0
    def test_to_sensor_db_model_with_trigger_types(self):
        sensor_meta = {
            'artifact_uri': 'file:///data/st2contrib/packs/jira/sensors/jira_sensor.py',
            'class_name': 'JIRASensor',
            'pack': 'jira',
            'trigger_types': [{'pack': 'jira', 'name': 'issue_created', 'parameters': {}}]
        }

        sensor_api = SensorTypeAPI(**sensor_meta)
        sensor_model = SensorTypeAPI.to_model(sensor_api)
        self.assertListEqual(sensor_model.trigger_types, ['mock.trigger_ref'])
Пример #3
0
    def test_to_sensor_db_model_with_trigger_types(self):
        sensor_meta = {
            "artifact_uri": "file:///data/st2contrib/packs/jira/sensors/jira_sensor.py",
            "class_name": "JIRASensor",
            "pack": "jira",
            "trigger_types": [{"pack": "jira", "name": "issue_created", "parameters": {}}],
        }

        sensor_api = SensorTypeAPI(**sensor_meta)
        sensor_model = SensorTypeAPI.to_model(sensor_api)
        self.assertListEqual(sensor_model.trigger_types, ["mock.trigger_ref"])
Пример #4
0
 def test_to_sensor_db_model_no_trigger_types(self):
     sensor_meta = {
         'artifact_uri': 'file:///data/st2contrib/packs/jira/sensors/jira_sensor.py',
         'class_name': 'JIRASensor',
         'pack': 'jira'
     }
     sensor_api = SensorTypeAPI(**sensor_meta)
     sensor_model = SensorTypeAPI.to_model(sensor_api)
     self.assertEqual(sensor_model.name, sensor_meta['class_name'])
     self.assertEqual(sensor_model.pack, sensor_meta['pack'])
     self.assertEqual(sensor_model.artifact_uri, sensor_meta['artifact_uri'])
     self.assertListEqual(sensor_model.trigger_types, [])
Пример #5
0
 def test_to_sensor_db_model_no_trigger_types(self):
     sensor_meta = {
         "artifact_uri": "file:///data/st2contrib/packs/jira/sensors/jira_sensor.py",
         "class_name": "JIRASensor",
         "pack": "jira",
     }
     sensor_api = SensorTypeAPI(**sensor_meta)
     sensor_model = SensorTypeAPI.to_model(sensor_api)
     self.assertEqual(sensor_model.name, sensor_meta["class_name"])
     self.assertEqual(sensor_model.pack, sensor_meta["pack"])
     self.assertEqual(sensor_model.artifact_uri, sensor_meta["artifact_uri"])
     self.assertListEqual(sensor_model.trigger_types, [])
Пример #6
0
 def test_to_sensor_db_model_no_trigger_types(self):
     sensor_meta = {
         "artifact_uri":
         "file:///data/st2contrib/packs/jira/sensors/jira_sensor.py",
         "class_name": "JIRASensor",
         "pack": "jira",
     }
     sensor_api = SensorTypeAPI(**sensor_meta)
     sensor_model = SensorTypeAPI.to_model(sensor_api)
     self.assertEqual(sensor_model.name, sensor_meta["class_name"])
     self.assertEqual(sensor_model.pack, sensor_meta["pack"])
     self.assertEqual(sensor_model.artifact_uri,
                      sensor_meta["artifact_uri"])
     self.assertListEqual(sensor_model.trigger_types, [])
Пример #7
0
    def _register_sensor_from_pack(self, pack, sensor):
        sensor_metadata_file_path = sensor

        LOG.debug('Loading sensor from %s.', sensor_metadata_file_path)
        content = self._meta_loader.load(file_path=sensor_metadata_file_path)

        pack_field = content.get('pack', None)
        if not pack_field:
            content['pack'] = pack
            pack_field = pack
        if pack_field != pack:
            raise Exception('Model is in pack "%s" but field "pack" is different: %s' %
                            (pack, pack_field))

        entry_point = content.get('entry_point', None)
        if not entry_point:
            raise ValueError('Sensor definition missing entry_point')

        # Add in "metadata_file" attribute which stores path to the pack metadata file relative to
        # the pack directory
        metadata_file = content_utils.get_relative_path_to_pack_file(pack_ref=pack,
                                                                     file_path=sensor,
                                                                     use_pack_cache=True)
        content['metadata_file'] = metadata_file

        sensors_dir = os.path.dirname(sensor_metadata_file_path)
        sensor_file_path = os.path.join(sensors_dir, entry_point)
        artifact_uri = 'file://%s' % (sensor_file_path)
        content['artifact_uri'] = artifact_uri
        content['entry_point'] = entry_point

        sensor_api = SensorTypeAPI(**content)
        sensor_model = SensorTypeAPI.to_model(sensor_api)

        sensor_types = SensorType.query(pack=sensor_model.pack, name=sensor_model.name)
        if len(sensor_types) >= 1:
            sensor_type = sensor_types[0]
            LOG.debug('Found existing sensor id:%s with name:%s. Will update it.',
                      sensor_type.id, sensor_type.name)
            sensor_model.id = sensor_type.id

        try:
            sensor_model = SensorType.add_or_update(sensor_model)
        except:
            LOG.exception('Failed creating sensor model for %s', sensor)

        return sensor_model
Пример #8
0
    def test_to_sensor_db_model_with_trigger_types(self):
        sensor_meta = {
            "artifact_uri":
            "file:///data/st2contrib/packs/jira/sensors/jira_sensor.py",
            "class_name":
            "JIRASensor",
            "pack":
            "jira",
            "trigger_types": [{
                "pack": "jira",
                "name": "issue_created",
                "parameters": {}
            }],
        }

        sensor_api = SensorTypeAPI(**sensor_meta)
        sensor_model = SensorTypeAPI.to_model(sensor_api)
        self.assertListEqual(sensor_model.trigger_types, ["mock.trigger_ref"])
Пример #9
0
    def _register_sensor_from_pack(self, pack, sensor):
        sensor_metadata_file_path = sensor

        LOG.debug('Loading sensor from %s.', sensor_metadata_file_path)
        content = self._meta_loader.load(file_path=sensor_metadata_file_path)

        pack_field = content.get('pack', None)
        if not pack_field:
            content['pack'] = pack
            pack_field = pack
        if pack_field != pack:
            raise Exception(
                'Model is in pack "%s" but field "pack" is different: %s' %
                (pack, pack_field))

        entry_point = content.get('entry_point', None)
        if not entry_point:
            raise ValueError('Sensor definition missing entry_point')

        sensors_dir = os.path.dirname(sensor_metadata_file_path)
        sensor_file_path = os.path.join(sensors_dir, entry_point)
        artifact_uri = 'file://%s' % (sensor_file_path)
        content['artifact_uri'] = artifact_uri
        content['entry_point'] = entry_point

        sensor_api = SensorTypeAPI(**content)
        sensor_model = SensorTypeAPI.to_model(sensor_api)

        sensor_types = SensorType.query(pack=sensor_model.pack,
                                        name=sensor_model.name)
        if len(sensor_types) >= 1:
            sensor_type = sensor_types[0]
            LOG.debug(
                'Found existing sensor id:%s with name:%s. Will update it.',
                sensor_type.id, sensor_type.name)
            sensor_model.id = sensor_type.id

        try:
            sensor_model = SensorType.add_or_update(sensor_model)
        except:
            LOG.exception('Failed creating sensor model for %s', sensor)

        return sensor_model