)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"3808fbf30553094657b3e657236fbabe68465540","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"da4df55a_3df10496","updated":"2016-12-27 14:31:58.000000000","message":"you should add an implements blueprint comment","commit_id":"494fd7af571460394b5ad201e6ae6f548d37f8c3"}],"etc/vitrage/templates.sample/host_down_scenarios.yaml":[{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"50aa2117c199fa90973b1ac2398e72675c9cbd98","unresolved":false,"context_lines":[{"line_number":1,"context_line":"metadata:"},{"line_number":2,"context_line":" name: host_down_scenarios"},{"line_number":3,"context_line":" description: scenarios triggered by Doctor monitor \u0027compute.host.down\u0027 alarm"},{"line_number":4,"context_line":"definitions:"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"ba5201f7_9b825eff","line":1,"updated":"2017-01-03 06:26:16.000000000","message":"What is this template for?","commit_id":"81d08a9a5a238ead95ef088e4d8ff64e74534490"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"1739c5812454f16f17d7b7cc0ef00896929e15f7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"metadata:"},{"line_number":2,"context_line":" name: host_down_scenarios"},{"line_number":3,"context_line":" description: scenarios triggered by Doctor monitor \u0027compute.host.down\u0027 alarm"},{"line_number":4,"context_line":"definitions:"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"ba5201f7_94693928","line":1,"in_reply_to":"ba5201f7_1cf49df0","updated":"2017-01-03 17:37:14.000000000","message":"I am just trying to understand if it meant only for our unitests or tempests, and if yes then it should be created as part of the test and then deleted.","commit_id":"81d08a9a5a238ead95ef088e4d8ff64e74534490"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"bc4b909dae1edeaf978c2c42fd318d5434b6bda2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"metadata:"},{"line_number":2,"context_line":" name: host_down_scenarios"},{"line_number":3,"context_line":" description: scenarios triggered by Doctor monitor \u0027compute.host.down\u0027 alarm"},{"line_number":4,"context_line":"definitions:"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"ba5201f7_6164fd48","line":1,"in_reply_to":"ba5201f7_94693928","updated":"2017-01-04 09:17:43.000000000","message":"The template is not needed for unit tests, and I don\u0027t plan to write tempest tests for Doctor. The tests will be performed in OPNFV environment, and they should use this template for mark down. I think it\u0027s a good idea to have it in github. It should also serve as a good template sample.","commit_id":"81d08a9a5a238ead95ef088e4d8ff64e74534490"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"5324dfe5f21c029a81d4a3d34cd17f9d4d2976d8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"metadata:"},{"line_number":2,"context_line":" name: host_down_scenarios"},{"line_number":3,"context_line":" description: scenarios triggered by Doctor monitor \u0027compute.host.down\u0027 alarm"},{"line_number":4,"context_line":"definitions:"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"ba5201f7_1cf49df0","line":1,"in_reply_to":"ba5201f7_9b825eff","updated":"2017-01-03 12:40:22.000000000","message":"I\u0027m going to use it in Doctor environment for their tests of Vitrage as the inspector. Also, I thought it would be nice to have another template sample in Vitrage. This template works, but is not very useful in a real environment (unless someone is using Doctor monitor).","commit_id":"81d08a9a5a238ead95ef088e4d8ff64e74534490"}],"vitrage/common/constants.py":[{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"50aa2117c199fa90973b1ac2398e72675c9cbd98","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    ENTITY_TYPE \u003d \u0027vitrage_entity_type\u0027"},{"line_number":92,"context_line":"    DATASOURCE_ACTION \u003d \u0027vitrage_datasource_action\u0027"},{"line_number":93,"context_line":"    SAMPLE_DATE \u003d \u0027vitrage_sample_date\u0027"},{"line_number":94,"context_line":"    UPDATE_DATE \u003d \u0027vitrage_update_date\u0027"},{"line_number":95,"context_line":"    EVENT_TYPE \u003d \u0027vitrage_event_type\u0027"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5201f7_1b774e3b","line":94,"updated":"2017-01-03 06:26:16.000000000","message":"you have the update timestamp in the vertex properties. you can retrieve it in the transformer and not in the driver.\nThis property is only used in Doctor datasource, and not all the datasources, thus it needs to be in the doctor properties.","commit_id":"81d08a9a5a238ead95ef088e4d8ff64e74534490"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"5324dfe5f21c029a81d4a3d34cd17f9d4d2976d8","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    ENTITY_TYPE \u003d \u0027vitrage_entity_type\u0027"},{"line_number":92,"context_line":"    DATASOURCE_ACTION \u003d \u0027vitrage_datasource_action\u0027"},{"line_number":93,"context_line":"    SAMPLE_DATE \u003d \u0027vitrage_sample_date\u0027"},{"line_number":94,"context_line":"    UPDATE_DATE \u003d \u0027vitrage_update_date\u0027"},{"line_number":95,"context_line":"    EVENT_TYPE \u003d \u0027vitrage_event_type\u0027"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5201f7_5cc5458c","line":94,"in_reply_to":"ba5201f7_1b774e3b","updated":"2017-01-03 12:40:22.000000000","message":"Can you explain the difference between sample_date and update_date?\nI know that sample_date is the time of the sample, and update_date is the time of the last status change. Why put only one of them in the general DSProps, and keep the other in every datasource separately?\n\nBTW, there is no \u0027update_date\u0027 property in Doctor. I calculate it myself in the driver (by checking if the status has changed).","commit_id":"81d08a9a5a238ead95ef088e4d8ff64e74534490"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"1739c5812454f16f17d7b7cc0ef00896929e15f7","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    ENTITY_TYPE \u003d \u0027vitrage_entity_type\u0027"},{"line_number":92,"context_line":"    DATASOURCE_ACTION \u003d \u0027vitrage_datasource_action\u0027"},{"line_number":93,"context_line":"    SAMPLE_DATE \u003d \u0027vitrage_sample_date\u0027"},{"line_number":94,"context_line":"    UPDATE_DATE \u003d \u0027vitrage_update_date\u0027"},{"line_number":95,"context_line":"    EVENT_TYPE \u003d \u0027vitrage_event_type\u0027"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5201f7_74b1358f","line":94,"in_reply_to":"ba5201f7_5cc5458c","updated":"2017-01-03 17:37:14.000000000","message":"1. The difference is, that sample_date is something that we add to the properties that are already exists, and the update_timestamp is something that may apear and may not when some event arrive.\n2. The reason it is in the DSProps is because those properties we add to every event arrived for our usage. When we calculate retrieve some field which is specific to that datasource we do that in the transformer which is what he does, transforms the specific data to data which the processor can work with.\n3. The new property is calculated only in Doctor, so it should be pushed as a property in the doctor properties, and then should be pushed to update_timestamp property in the Doctors transformer.","commit_id":"81d08a9a5a238ead95ef088e4d8ff64e74534490"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"bc4b909dae1edeaf978c2c42fd318d5434b6bda2","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    ENTITY_TYPE \u003d \u0027vitrage_entity_type\u0027"},{"line_number":92,"context_line":"    DATASOURCE_ACTION \u003d \u0027vitrage_datasource_action\u0027"},{"line_number":93,"context_line":"    SAMPLE_DATE \u003d \u0027vitrage_sample_date\u0027"},{"line_number":94,"context_line":"    UPDATE_DATE \u003d \u0027vitrage_update_date\u0027"},{"line_number":95,"context_line":"    EVENT_TYPE \u003d \u0027vitrage_event_type\u0027"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5201f7_01e7b1b0","line":94,"in_reply_to":"ba5201f7_74b1358f","updated":"2017-01-04 09:17:43.000000000","message":"Ok, I understand. I\u0027ll move it to DoctorProperties","commit_id":"81d08a9a5a238ead95ef088e4d8ff64e74534490"}],"vitrage/datasources/alarm_driver_base.py":[{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"391652272f38b0931ea1cb1ff726bd4166a077a2","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        now \u003d datetime_utils.utcnow(False)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        for alarm in alarms:"},{"line_number":104,"context_line":"            alarm_key \u003d self._alarm_key(alarm)"},{"line_number":105,"context_line":"            old_alarm \u003d self.cache.get(alarm_key, (None, None))[0]"},{"line_number":106,"context_line":"            if self._filter_and_cache_alarm("},{"line_number":107,"context_line":"                alarm, old_alarm, filter_, now):"},{"line_number":108,"context_line":"                alarms_to_update.append(alarm)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_7c1b84ca","line":105,"range":{"start_line":104,"start_character":1,"end_line":105,"end_character":66},"updated":"2016-12-28 02:19:06.000000000","message":"self._old_alarm(alarm)?","commit_id":"494fd7af571460394b5ad201e6ae6f548d37f8c3"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"15177e2dc45e6aa33f7c0a857b85c00f1f17d936","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        now \u003d datetime_utils.utcnow(False)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        for alarm in alarms:"},{"line_number":104,"context_line":"            alarm_key \u003d self._alarm_key(alarm)"},{"line_number":105,"context_line":"            old_alarm \u003d self.cache.get(alarm_key, (None, None))[0]"},{"line_number":106,"context_line":"            if self._filter_and_cache_alarm("},{"line_number":107,"context_line":"                alarm, old_alarm, filter_, now):"},{"line_number":108,"context_line":"                alarms_to_update.append(alarm)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_ae712978","line":105,"range":{"start_line":104,"start_character":1,"end_line":105,"end_character":66},"in_reply_to":"da4df55a_7c1b84ca","updated":"2016-12-28 08:15:25.000000000","message":"Right, I\u0027ll fix it","commit_id":"494fd7af571460394b5ad201e6ae6f548d37f8c3"}],"vitrage/datasources/alarm_transformer_base.py":[{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"391652272f38b0931ea1cb1ff726bd4166a077a2","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                         resource_type,"},{"line_number":84,"context_line":"                         resource_name):"},{"line_number":85,"context_line":"        # Any resource transformer will do (nova for example)"},{"line_number":86,"context_line":"        transformer \u003d self.transformers[NOVA_HOST_DATASOURCE]"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        if transformer:"},{"line_number":89,"context_line":"            properties \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_bc188cd4","line":86,"range":{"start_line":86,"start_character":40,"end_line":86,"end_character":60},"updated":"2016-12-28 02:19:06.000000000","message":"The datasource type can be a input para.","commit_id":"494fd7af571460394b5ad201e6ae6f548d37f8c3"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"15177e2dc45e6aa33f7c0a857b85c00f1f17d936","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                         resource_type,"},{"line_number":84,"context_line":"                         resource_name):"},{"line_number":85,"context_line":"        # Any resource transformer will do (nova for example)"},{"line_number":86,"context_line":"        transformer \u003d self.transformers[NOVA_HOST_DATASOURCE]"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        if transformer:"},{"line_number":89,"context_line":"            properties \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_cec66d67","line":86,"range":{"start_line":86,"start_character":40,"end_line":86,"end_character":60},"in_reply_to":"da4df55a_bc188cd4","updated":"2016-12-28 08:15:25.000000000","message":"I moved this method from another class without changing it. \n\nThis method is responsible for connecting the alarm to its resource. It is possible that the resource does not exist in the graph yet (e.g. if zabbix datasource starts before nova, zabbix alarm should be connected to a host that was not loaded yet). In such cases, we create a place holder vertex and connect the alarm to it. Later on, the real data overrides the place holder properties.\n\nIn order to create the place holder vertex we are using a method of the transformer, and in this case the method is the same for any transformer, so we are using nova (an arbitrary choice). \nNeedless to say, this code is not nice... we should think of a better solution some day.\n\nAnyhow, the specific transformer that is used here has no effect on the type of vertex that will be added to the graph.","commit_id":"494fd7af571460394b5ad201e6ae6f548d37f8c3"}],"vitrage/datasources/doctor/driver.py":[{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"364e7fb6bbfd8beb8655b4c83d325588f156aa7e","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        if event_type \u003d\u003d DoctorEvents.HOST_DOWN:"},{"line_number":52,"context_line":"            event[DoctorProperties.ALARM_NAME] \u003d DoctorEvents.HOST_DOWN"},{"line_number":53,"context_line":"        elif event_type \u003d\u003d DoctorEvents.HOST_UP:"},{"line_number":54,"context_line":"            event[DoctorProperties.ALARM_NAME] \u003d DoctorEvents.HOST_DOWN"},{"line_number":55,"context_line":"            event[DSProps.EVENT_TYPE] \u003d GraphAction.DELETE_ENTITY"},{"line_number":56,"context_line":"        else:"},{"line_number":57,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":1,"id":"da4df55a_784ac2ad","line":54,"range":{"start_line":54,"start_character":62,"end_line":54,"end_character":71},"updated":"2016-12-27 10:09:12.000000000","message":"HOST_UP?","commit_id":"d60316b8e3eb28075879a8f194b3fe2945457641"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"0633c748152ac21169ad551e10f5d052d3286cf5","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        if event_type \u003d\u003d DoctorEvents.HOST_DOWN:"},{"line_number":52,"context_line":"            event[DoctorProperties.ALARM_NAME] \u003d DoctorEvents.HOST_DOWN"},{"line_number":53,"context_line":"        elif event_type \u003d\u003d DoctorEvents.HOST_UP:"},{"line_number":54,"context_line":"            event[DoctorProperties.ALARM_NAME] \u003d DoctorEvents.HOST_DOWN"},{"line_number":55,"context_line":"            event[DSProps.EVENT_TYPE] \u003d GraphAction.DELETE_ENTITY"},{"line_number":56,"context_line":"        else:"},{"line_number":57,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":1,"id":"da4df55a_fbcdccb7","line":54,"range":{"start_line":54,"start_character":62,"end_line":54,"end_character":71},"in_reply_to":"da4df55a_784ac2ad","updated":"2016-12-27 10:14:20.000000000","message":"Doctor monitor sends two notifications: host down and host up. In vitrage, we will create an \u0027host down\u0027 alarm, and delete it when we receive \u0027host up\u0027. The alarm name will always be \u0027host down\u0027.\n\nNote that I already modified this code, and I plan to push another patch set later today. I hope it will be more clear then.","commit_id":"d60316b8e3eb28075879a8f194b3fe2945457641"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"7bfec9590dd14bd3bf2af6380a957712a2b1eb0e","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        event[DoctorProps.ALARM_NAME] \u003d DoctorEvents.HOST_DOWN"},{"line_number":65,"context_line":"        now \u003d str(utcnow(False))"},{"line_number":66,"context_line":"        event[DSProps.SAMPLE_DATE] \u003d now"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        old_alarm \u003d self._old_alarm(event)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        if old_alarm and not self._status_changed(old_alarm, event):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_3c0bbc2b","line":67,"updated":"2016-12-28 02:22:09.000000000","message":"no handle the hostname?","commit_id":"494fd7af571460394b5ad201e6ae6f548d37f8c3"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"15177e2dc45e6aa33f7c0a857b85c00f1f17d936","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        event[DoctorProps.ALARM_NAME] \u003d DoctorEvents.HOST_DOWN"},{"line_number":65,"context_line":"        now \u003d str(utcnow(False))"},{"line_number":66,"context_line":"        event[DSProps.SAMPLE_DATE] \u003d now"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        old_alarm \u003d self._old_alarm(event)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        if old_alarm and not self._status_changed(old_alarm, event):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_ce9d8d67","line":67,"in_reply_to":"da4df55a_3c0bbc2b","updated":"2016-12-28 08:15:25.000000000","message":"The hostname already exists in the event that we got from the message bus. In enrich_event, I add properties that do not exist in the original event.","commit_id":"494fd7af571460394b5ad201e6ae6f548d37f8c3"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"50aa2117c199fa90973b1ac2398e72675c9cbd98","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        old_alarm \u003d self._old_alarm(event)"},{"line_number":97,"context_line":"        if old_alarm and not self._status_changed(old_alarm, event):"},{"line_number":98,"context_line":"            event[DSProps.UPDATE_DATE] \u003d old_alarm[DSProps.UPDATE_DATE]"},{"line_number":99,"context_line":"        else:"},{"line_number":100,"context_line":"            event[DSProps.UPDATE_DATE] \u003d event[DoctorProps.TIME]"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5201f7_fba0ca92","line":98,"updated":"2017-01-03 06:26:16.000000000","message":"it seems that this property is a doctor property and not a property that we add to all the datasources.","commit_id":"81d08a9a5a238ead95ef088e4d8ff64e74534490"}]}
