)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"f3a57df402b05c313137cc9a28fb16b203e72b1a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Generalize prometheus datasource"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Mapping Prometheus alerts into Vitrage entities using"},{"line_number":10,"context_line":"config file \u0027prometheus.conf\u0027."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Note: Documentation will be followed in next commit."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bfdaf3ff_e2bdcb68","line":10,"range":{"start_line":10,"start_character":13,"end_line":10,"end_character":28},"updated":"2019-01-14 08:03:44.000000000","message":"prometheus_conf.yaml","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"c6541ea69a6f6108f01865362c0d20dd52a23308","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Generalize prometheus datasource"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Mapping Prometheus alerts into Vitrage entities using"},{"line_number":10,"context_line":"config file \u0027prometheus.conf\u0027."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Note: Documentation will be followed in next commit."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bfdaf3ff_843fef23","line":10,"range":{"start_line":10,"start_character":13,"end_line":10,"end_character":28},"in_reply_to":"bfdaf3ff_2e64e4b8","updated":"2019-01-16 17:34:27.000000000","message":"ops... next patch...","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Generalize prometheus datasource"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Mapping Prometheus alerts into Vitrage entities using"},{"line_number":10,"context_line":"config file \u0027prometheus.conf\u0027."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Note: Documentation will be followed in next commit."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bfdaf3ff_e4cdd45d","line":10,"range":{"start_line":10,"start_character":13,"end_line":10,"end_character":28},"in_reply_to":"bfdaf3ff_e2bdcb68","updated":"2019-01-14 18:32:37.000000000","message":"Done","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"fb04b536ac807e361164e721a94dc79b89ff2994","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Generalize prometheus datasource"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Mapping Prometheus alerts into Vitrage entities using"},{"line_number":10,"context_line":"config file \u0027prometheus.conf\u0027."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Note: Documentation will be followed in next commit."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bfdaf3ff_2e64e4b8","line":10,"range":{"start_line":10,"start_character":13,"end_line":10,"end_character":28},"in_reply_to":"bfdaf3ff_e4cdd45d","updated":"2019-01-16 15:21:44.000000000","message":"Not done :-)","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"84f97cab20bd7af85ba8664e5236afafa3d8bee4","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Mapping Prometheus alerts into Vitrage entities using"},{"line_number":10,"context_line":"config file \u0027prometheus.conf\u0027."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Note: Documentation will be followed in next commit."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Depends-On: https://review.openstack.org/#/c/627176/"},{"line_number":15,"context_line":"Change-Id: Id8e9086138329a991b6f934c024e4cbade975a0f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bfdaf3ff_d32dff46","line":12,"updated":"2019-01-13 16:04:13.000000000","message":"nit: in the next commit","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"c6541ea69a6f6108f01865362c0d20dd52a23308","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Mapping Prometheus alerts into Vitrage entities using"},{"line_number":10,"context_line":"config file \u0027prometheus.conf\u0027."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Note: Documentation will be followed in next commit."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Depends-On: https://review.openstack.org/#/c/627176/"},{"line_number":15,"context_line":"Change-Id: Id8e9086138329a991b6f934c024e4cbade975a0f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bfdaf3ff_a43a3331","line":12,"in_reply_to":"bfdaf3ff_2ed70426","updated":"2019-01-16 17:34:27.000000000","message":"ops... next patch...","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"fb04b536ac807e361164e721a94dc79b89ff2994","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Mapping Prometheus alerts into Vitrage entities using"},{"line_number":10,"context_line":"config file \u0027prometheus.conf\u0027."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Note: Documentation will be followed in next commit."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Depends-On: https://review.openstack.org/#/c/627176/"},{"line_number":15,"context_line":"Change-Id: Id8e9086138329a991b6f934c024e4cbade975a0f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bfdaf3ff_2ed70426","line":12,"in_reply_to":"bfdaf3ff_329b1aca","updated":"2019-01-16 15:21:44.000000000","message":"Not done either","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Mapping Prometheus alerts into Vitrage entities using"},{"line_number":10,"context_line":"config file \u0027prometheus.conf\u0027."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Note: Documentation will be followed in next commit."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Depends-On: https://review.openstack.org/#/c/627176/"},{"line_number":15,"context_line":"Change-Id: Id8e9086138329a991b6f934c024e4cbade975a0f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bfdaf3ff_329b1aca","line":12,"in_reply_to":"bfdaf3ff_d32dff46","updated":"2019-01-14 18:32:37.000000000","message":"Done","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"}],"vitrage/common/constants.py":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"f3a57df402b05c313137cc9a28fb16b203e72b1a","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"class DatasourceProperties(object):"},{"line_number":104,"context_line":"    ENTITY_TYPE \u003d \u0027vitrage_entity_type\u0027"},{"line_number":105,"context_line":"    ENTITY_SUBSET \u003d \u0027vitrage_entity_subset\u0027"},{"line_number":106,"context_line":"    DATASOURCE_ACTION \u003d \u0027vitrage_datasource_action\u0027"},{"line_number":107,"context_line":"    SAMPLE_DATE \u003d \u0027vitrage_sample_date\u0027"},{"line_number":108,"context_line":"    EVENT_TYPE \u003d \u0027vitrage_event_type\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_5d6918bc","line":105,"range":{"start_line":105,"start_character":4,"end_line":105,"end_character":17},"updated":"2019-01-14 08:03:44.000000000","message":"This should be moved to Prometheus properties, it is not common to all datasources. \nAlso, I think we should find a better name for it... key and id are already used in other places, but \"subset\" seems too general. Maybe vitrage_entity_unique_props?","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"class DatasourceProperties(object):"},{"line_number":104,"context_line":"    ENTITY_TYPE \u003d \u0027vitrage_entity_type\u0027"},{"line_number":105,"context_line":"    ENTITY_SUBSET \u003d \u0027vitrage_entity_subset\u0027"},{"line_number":106,"context_line":"    DATASOURCE_ACTION \u003d \u0027vitrage_datasource_action\u0027"},{"line_number":107,"context_line":"    SAMPLE_DATE \u003d \u0027vitrage_sample_date\u0027"},{"line_number":108,"context_line":"    EVENT_TYPE \u003d \u0027vitrage_event_type\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_647ec4e5","line":105,"range":{"start_line":105,"start_character":4,"end_line":105,"end_character":17},"in_reply_to":"bfdaf3ff_5d6918bc","updated":"2019-01-14 18:32:37.000000000","message":"Ok i\u0027ll move it.\nAnd I like your suggestion for vitrage_entity_unique_props","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"}],"vitrage/datasources/nova/instance/field_extractor.py":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"f3a57df402b05c313137cc9a28fb16b203e72b1a","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        return extract_field_value(event, \u0027nova_object.data\u0027, \u0027tenant_id\u0027)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def instance_name(self, event):"},{"line_number":106,"context_line":"        return extract_field_value(event, \u0027nova_object.data\u0027, \u0027instance_name\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_5d97d891","line":106,"range":{"start_line":106,"start_character":15,"end_line":106,"end_character":78},"updated":"2019-01-14 08:03:44.000000000","message":"I think you can remove this change. It is related to the DependsOn change and will not work at this stage","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        return extract_field_value(event, \u0027nova_object.data\u0027, \u0027tenant_id\u0027)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def instance_name(self, event):"},{"line_number":106,"context_line":"        return extract_field_value(event, \u0027nova_object.data\u0027, \u0027instance_name\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_844f28bc","line":106,"range":{"start_line":106,"start_character":15,"end_line":106,"end_character":78},"in_reply_to":"bfdaf3ff_5d97d891","updated":"2019-01-14 18:32:37.000000000","message":"I added it because in first patch i didn\u0027t do get pull to the latest changes on the commit i depended on. and just this line was differed from the version i had","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"}],"vitrage/datasources/prometheus/driver.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"84f97cab20bd7af85ba8664e5236afafa3d8bee4","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":"import six"},{"line_number":15,"context_line":"import six.moves.urllib.parse as urlparse"},{"line_number":16,"context_line":"import socket"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from collections import namedtuple"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_131b871b","line":15,"updated":"2019-01-13 16:04:13.000000000","message":"nit: six imports should in  the next section","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":"import six"},{"line_number":15,"context_line":"import six.moves.urllib.parse as urlparse"},{"line_number":16,"context_line":"import socket"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from collections import namedtuple"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_d8698f25","line":15,"in_reply_to":"bfdaf3ff_131b871b","updated":"2019-01-14 18:32:37.000000000","message":"Done","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"84f97cab20bd7af85ba8664e5236afafa3d8bee4","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class PrometheusDriver(AlarmDriverBase):"},{"line_number":47,"context_line":"    AlarmKey \u003d namedtuple(\u0027AlarmKey\u0027, [PLabels.ALERT_NAME, \u0027resource\u0027])"},{"line_number":48,"context_line":"    conf_map \u003d None"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def __init__(self, conf):"},{"line_number":51,"context_line":"        super(PrometheusDriver, self).__init__()"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_33ed6bef","line":48,"updated":"2019-01-13 16:04:13.000000000","message":"Since _configuration_mapping method returns empty dict on error, we can use {} as a default param","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class PrometheusDriver(AlarmDriverBase):"},{"line_number":47,"context_line":"    AlarmKey \u003d namedtuple(\u0027AlarmKey\u0027, [PLabels.ALERT_NAME, \u0027resource\u0027])"},{"line_number":48,"context_line":"    conf_map \u003d None"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def __init__(self, conf):"},{"line_number":51,"context_line":"        super(PrometheusDriver, self).__init__()"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_b33b8ccf","line":48,"in_reply_to":"bfdaf3ff_33ed6bef","updated":"2019-01-14 18:32:37.000000000","message":"Ok make sense","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"f3a57df402b05c313137cc9a28fb16b203e72b1a","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        self.conf \u003d conf"},{"line_number":53,"context_line":"        self._client \u003d None"},{"line_number":54,"context_line":"        self._nova_client \u003d None"},{"line_number":55,"context_line":"        if not PrometheusDriver.conf_map:"},{"line_number":56,"context_line":"            PrometheusDriver.conf_map \u003d \\"},{"line_number":57,"context_line":"                PrometheusDriver._configuration_mapping(conf)"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_1d1b901b","line":55,"range":{"start_line":55,"start_character":0,"end_line":55,"end_character":41},"updated":"2019-01-14 08:03:44.000000000","message":"In the __init__ the conf_map is always None, right? you can drop this if","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"7b3073c9ee218c6052d0c031d1ba01463ceb6d04","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        self.conf \u003d conf"},{"line_number":53,"context_line":"        self._client \u003d None"},{"line_number":54,"context_line":"        self._nova_client \u003d None"},{"line_number":55,"context_line":"        if not PrometheusDriver.conf_map:"},{"line_number":56,"context_line":"            PrometheusDriver.conf_map \u003d \\"},{"line_number":57,"context_line":"                PrometheusDriver._configuration_mapping(conf)"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_338bee1f","line":55,"range":{"start_line":55,"start_character":0,"end_line":55,"end_character":41},"in_reply_to":"bfdaf3ff_18bcc967","updated":"2019-01-16 11:50:16.000000000","message":"I agree","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        self.conf \u003d conf"},{"line_number":53,"context_line":"        self._client \u003d None"},{"line_number":54,"context_line":"        self._nova_client \u003d None"},{"line_number":55,"context_line":"        if not PrometheusDriver.conf_map:"},{"line_number":56,"context_line":"            PrometheusDriver.conf_map \u003d \\"},{"line_number":57,"context_line":"                PrometheusDriver._configuration_mapping(conf)"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_533ca092","line":55,"range":{"start_line":55,"start_character":0,"end_line":55,"end_character":41},"in_reply_to":"bfdaf3ff_1d1b901b","updated":"2019-01-14 18:32:37.000000000","message":"because it is a static variable and we don\u0027t want to init it twice.\n\nthe question is how much do we want it to be static","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"4ea1b4d885b9949ac0fae8ec943bd735aeb3f427","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        self.conf \u003d conf"},{"line_number":53,"context_line":"        self._client \u003d None"},{"line_number":54,"context_line":"        self._nova_client \u003d None"},{"line_number":55,"context_line":"        if not PrometheusDriver.conf_map:"},{"line_number":56,"context_line":"            PrometheusDriver.conf_map \u003d \\"},{"line_number":57,"context_line":"                PrometheusDriver._configuration_mapping(conf)"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_18bcc967","line":55,"range":{"start_line":55,"start_character":0,"end_line":55,"end_character":41},"in_reply_to":"bfdaf3ff_533ca092","updated":"2019-01-16 11:08:23.000000000","message":"Why is it important to make it static? I don\u0027t see a use case where we\u0027ll have two Prometheus drivers at the same time.","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"f3a57df402b05c313137cc9a28fb16b203e72b1a","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self._client \u003d None"},{"line_number":54,"context_line":"        self._nova_client \u003d None"},{"line_number":55,"context_line":"        if not PrometheusDriver.conf_map:"},{"line_number":56,"context_line":"            PrometheusDriver.conf_map \u003d \\"},{"line_number":57,"context_line":"                PrometheusDriver._configuration_mapping(conf)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_fdd7ac22","line":56,"range":{"start_line":56,"start_character":12,"end_line":56,"end_character":28},"updated":"2019-01-14 08:03:44.000000000","message":"Why not use self.conf_map?","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self._client \u003d None"},{"line_number":54,"context_line":"        self._nova_client \u003d None"},{"line_number":55,"context_line":"        if not PrometheusDriver.conf_map:"},{"line_number":56,"context_line":"            PrometheusDriver.conf_map \u003d \\"},{"line_number":57,"context_line":"                PrometheusDriver._configuration_mapping(conf)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_d347301d","line":56,"range":{"start_line":56,"start_character":12,"end_line":56,"end_character":28},"in_reply_to":"bfdaf3ff_fdd7ac22","updated":"2019-01-14 18:32:37.000000000","message":"same reason as above","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"84f97cab20bd7af85ba8664e5236afafa3d8bee4","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                file_utils.load_yaml_file(prometheus_config_file)"},{"line_number":96,"context_line":"            return prometheus_config[PCFProps.ALERTS]"},{"line_number":97,"context_line":"        except Exception:"},{"line_number":98,"context_line":"            LOG.exception(\u0027Failed in init the configuration file.\u0027)"},{"line_number":99,"context_line":"            return {}"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def enrich_event(self, event, event_type):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_53210f4d","line":98,"updated":"2019-01-13 16:04:13.000000000","message":"Please, add config file path to the log message","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                file_utils.load_yaml_file(prometheus_config_file)"},{"line_number":96,"context_line":"            return prometheus_config[PCFProps.ALERTS]"},{"line_number":97,"context_line":"        except Exception:"},{"line_number":98,"context_line":"            LOG.exception(\u0027Failed in init the configuration file.\u0027)"},{"line_number":99,"context_line":"            return {}"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def enrich_event(self, event, event_type):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_a5c58390","line":98,"in_reply_to":"bfdaf3ff_53210f4d","updated":"2019-01-14 18:32:37.000000000","message":"do you mean to do:\nLOG.exception(\u0027Failed in init the configuration file: %s\u0027,\n                          prometheus_config_file)\n??","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"f3a57df402b05c313137cc9a28fb16b203e72b1a","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                                    DatasourceAction.UPDATE)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def _calculate_vitrage_entity_subset(self, alert):"},{"line_number":192,"context_line":"        \"\"\"Build a vitrage entity subset based on the alert and the conf file"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        :param alert: Prometheus alert"},{"line_number":195,"context_line":"        :type alert: dict"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_1d4870ca","line":192,"range":{"start_line":192,"start_character":11,"end_line":192,"end_character":77},"updated":"2019-01-14 08:03:44.000000000","message":"Please give a short example of a conf, alert and how the subset is built. The mapping is quite confusing, and people who read the code won\u0027t read the spec first ;-) \n\nMaybe you can give a long explanation+example in the beginning of the class instead of explaining every method.","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"7b3073c9ee218c6052d0c031d1ba01463ceb6d04","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                                    DatasourceAction.UPDATE)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def _calculate_vitrage_entity_subset(self, alert):"},{"line_number":192,"context_line":"        \"\"\"Build a vitrage entity subset based on the alert and the conf file"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        :param alert: Prometheus alert"},{"line_number":195,"context_line":"        :type alert: dict"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_b37efe16","line":192,"range":{"start_line":192,"start_character":11,"end_line":192,"end_character":77},"in_reply_to":"bfdaf3ff_187129e1","updated":"2019-01-16 11:50:16.000000000","message":"ok so I\u0027ll add an example","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                                    DatasourceAction.UPDATE)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def _calculate_vitrage_entity_subset(self, alert):"},{"line_number":192,"context_line":"        \"\"\"Build a vitrage entity subset based on the alert and the conf file"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        :param alert: Prometheus alert"},{"line_number":195,"context_line":"        :type alert: dict"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_859b9f70","line":192,"range":{"start_line":192,"start_character":11,"end_line":192,"end_character":77},"in_reply_to":"bfdaf3ff_1d4870ca","updated":"2019-01-14 18:32:37.000000000","message":"isn\u0027t enough to explain and give example in the documentation ?","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"4ea1b4d885b9949ac0fae8ec943bd735aeb3f427","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                                    DatasourceAction.UPDATE)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def _calculate_vitrage_entity_subset(self, alert):"},{"line_number":192,"context_line":"        \"\"\"Build a vitrage entity subset based on the alert and the conf file"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        :param alert: Prometheus alert"},{"line_number":195,"context_line":"        :type alert: dict"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_187129e1","line":192,"range":{"start_line":192,"start_character":11,"end_line":192,"end_character":77},"in_reply_to":"bfdaf3ff_859b9f70","updated":"2019-01-16 11:08:23.000000000","message":"When people read or debug the code, they usually don\u0027t look in the documentation... the documentation is meant for users who try to use the feature. If the code is not trivial, I personally prefer to document it as well.","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"a33db24a4c965f7f43be325ad541c899874e714e","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        resource_labels \u003d self._get_conf_resource(alert)"},{"line_number":200,"context_line":"        vitrage_entity_subset \u003d {}"},{"line_number":201,"context_line":"        for vitrage_label in resource_labels:"},{"line_number":202,"context_line":"            promehteus_label \u003d resource_labels[vitrage_label]"},{"line_number":203,"context_line":"            label_value \u003d str(get_label(alert, promehteus_label))"},{"line_number":204,"context_line":"            vitrage_entity_subset[vitrage_label] \u003d \\"},{"line_number":205,"context_line":"                self._adjust_label_value(label_value)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_e6d04dfa","line":202,"range":{"start_line":202,"start_character":12,"end_line":202,"end_character":28},"updated":"2019-01-16 04:36:47.000000000","message":"Should be prometheus_label.","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"7b3073c9ee218c6052d0c031d1ba01463ceb6d04","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        resource_labels \u003d self._get_conf_resource(alert)"},{"line_number":200,"context_line":"        vitrage_entity_subset \u003d {}"},{"line_number":201,"context_line":"        for vitrage_label in resource_labels:"},{"line_number":202,"context_line":"            promehteus_label \u003d resource_labels[vitrage_label]"},{"line_number":203,"context_line":"            label_value \u003d str(get_label(alert, promehteus_label))"},{"line_number":204,"context_line":"            vitrage_entity_subset[vitrage_label] \u003d \\"},{"line_number":205,"context_line":"                self._adjust_label_value(label_value)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_33a20eb0","line":202,"range":{"start_line":202,"start_character":12,"end_line":202,"end_character":28},"in_reply_to":"bfdaf3ff_e6d04dfa","updated":"2019-01-16 11:50:16.000000000","message":"Done","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"f3a57df402b05c313137cc9a28fb16b203e72b1a","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        vitrage_entity_subset \u003d {}"},{"line_number":201,"context_line":"        for vitrage_label in resource_labels:"},{"line_number":202,"context_line":"            promehteus_label \u003d resource_labels[vitrage_label]"},{"line_number":203,"context_line":"            label_value \u003d str(get_label(alert, promehteus_label))"},{"line_number":204,"context_line":"            vitrage_entity_subset[vitrage_label] \u003d \\"},{"line_number":205,"context_line":"                self._adjust_label_value(label_value)"},{"line_number":206,"context_line":"        return vitrage_entity_subset"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_9de6a0e8","line":203,"range":{"start_line":203,"start_character":26,"end_line":203,"end_character":29},"updated":"2019-01-14 08:03:44.000000000","message":"Is it needed? do you ever get from Prometheus something that is not str?","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        vitrage_entity_subset \u003d {}"},{"line_number":201,"context_line":"        for vitrage_label in resource_labels:"},{"line_number":202,"context_line":"            promehteus_label \u003d resource_labels[vitrage_label]"},{"line_number":203,"context_line":"            label_value \u003d str(get_label(alert, promehteus_label))"},{"line_number":204,"context_line":"            vitrage_entity_subset[vitrage_label] \u003d \\"},{"line_number":205,"context_line":"                self._adjust_label_value(label_value)"},{"line_number":206,"context_line":"        return vitrage_entity_subset"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_85c2bf32","line":203,"range":{"start_line":203,"start_character":26,"end_line":203,"end_character":29},"in_reply_to":"bfdaf3ff_9de6a0e8","updated":"2019-01-14 18:32:37.000000000","message":"everything is Unicode (i  think it is a result from the parsing)","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19194,"name":"Dan Offek","email":"dany.offek@gmail.com","username":"danoffek"},"change_message_id":"cc1ec48d2f11e64d5b71a85b6824364d03fc3156","unresolved":false,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        First check if the value is ip."},{"line_number":212,"context_line":"        Then, get its hostname if it has one."},{"line_number":213,"context_line":"        Or, fetch the instance id from nova by its ip."},{"line_number":214,"context_line":"        Otherwise, leave the label value as is."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        :param label_value: Va;ue of alert\u0027s label"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_53cb4f52","line":213,"updated":"2019-01-13 16:22:17.000000000","message":"If not, fetch the instance id from nova by its ip.","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        First check if the value is ip."},{"line_number":212,"context_line":"        Then, get its hostname if it has one."},{"line_number":213,"context_line":"        Or, fetch the instance id from nova by its ip."},{"line_number":214,"context_line":"        Otherwise, leave the label value as is."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        :param label_value: Va;ue of alert\u0027s label"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_e5e62be9","line":213,"in_reply_to":"bfdaf3ff_53cb4f52","updated":"2019-01-14 18:32:37.000000000","message":"Done","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"f3a57df402b05c313137cc9a28fb16b203e72b1a","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        Or, fetch the instance id from nova by its ip."},{"line_number":214,"context_line":"        Otherwise, leave the label value as is."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        :param label_value: Va;ue of alert\u0027s label"},{"line_number":217,"context_line":"        :type label_value: str"},{"line_number":218,"context_line":"        :return: Adjusted label\u0027s value of the alert as described."},{"line_number":219,"context_line":"        :rtype: str"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_3d4c54c6","line":216,"range":{"start_line":216,"start_character":30,"end_line":216,"end_character":31},"updated":"2019-01-14 08:03:44.000000000","message":"value","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        Or, fetch the instance id from nova by its ip."},{"line_number":214,"context_line":"        Otherwise, leave the label value as is."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        :param label_value: Va;ue of alert\u0027s label"},{"line_number":217,"context_line":"        :type label_value: str"},{"line_number":218,"context_line":"        :return: Adjusted label\u0027s value of the alert as described."},{"line_number":219,"context_line":"        :rtype: str"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_a5d023f9","line":216,"range":{"start_line":216,"start_character":30,"end_line":216,"end_character":31},"in_reply_to":"bfdaf3ff_3d4c54c6","updated":"2019-01-14 18:32:37.000000000","message":"Done","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"942db8984cbc6f602f59d2c3365898f2260df4b3","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                    entity_hostname \u003d socket.gethostbyaddr(ip)"},{"line_number":228,"context_line":"                    label_value \u003d entity_hostname[0]"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"                except socket.error:"},{"line_number":231,"context_line":"                    # If not ip of a host"},{"line_number":232,"context_line":"                    # Try to fetch the instance id from nova by its ip,"},{"line_number":233,"context_line":"                    # and if not found we leave it as it is."},{"line_number":234,"context_line":"                    nova_instance \u003d self.nova_client.servers.list("},{"line_number":235,"context_line":"                        search_opts\u003d{\u0027all_tenants\u0027: 1, \u0027ip\u0027: ip})"},{"line_number":236,"context_line":"                    if nova_instance:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_58e60619","line":233,"range":{"start_line":230,"start_character":19,"end_line":233,"end_character":60},"updated":"2019-01-14 08:23:13.000000000","message":"when ever you explain in a comment what you are doing this is a code smell meaning you can extract method with the names that explain what you do use comments only for why not what","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                    entity_hostname \u003d socket.gethostbyaddr(ip)"},{"line_number":228,"context_line":"                    label_value \u003d entity_hostname[0]"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"                except socket.error:"},{"line_number":231,"context_line":"                    # If not ip of a host"},{"line_number":232,"context_line":"                    # Try to fetch the instance id from nova by its ip,"},{"line_number":233,"context_line":"                    # and if not found we leave it as it is."},{"line_number":234,"context_line":"                    nova_instance \u003d self.nova_client.servers.list("},{"line_number":235,"context_line":"                        search_opts\u003d{\u0027all_tenants\u0027: 1, \u0027ip\u0027: ip})"},{"line_number":236,"context_line":"                    if nova_instance:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_5ee4a4ac","line":233,"range":{"start_line":230,"start_character":19,"end_line":233,"end_character":60},"in_reply_to":"bfdaf3ff_58e60619","updated":"2019-01-14 18:32:37.000000000","message":"ok thanks","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"f3a57df402b05c313137cc9a28fb16b203e72b1a","unresolved":false,"context_lines":[{"line_number":242,"context_line":"                # If not ip value, leave it as is"},{"line_number":243,"context_line":"                pass"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        return str(label_value)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def _get_resource_alert_values(self, alert):"},{"line_number":248,"context_line":"        # Get values of the alert labels from alert\u0027s resource in conf file"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_1d2e30a5","line":245,"range":{"start_line":245,"start_character":15,"end_line":245,"end_character":18},"updated":"2019-01-14 08:03:44.000000000","message":"Is it needed?","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":242,"context_line":"                # If not ip value, leave it as is"},{"line_number":243,"context_line":"                pass"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        return str(label_value)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def _get_resource_alert_values(self, alert):"},{"line_number":248,"context_line":"        # Get values of the alert labels from alert\u0027s resource in conf file"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_192e3643","line":245,"range":{"start_line":245,"start_character":15,"end_line":245,"end_character":18},"in_reply_to":"bfdaf3ff_1d2e30a5","updated":"2019-01-14 18:32:37.000000000","message":"after rechecking it seems it is redundant. thanks","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"f3a57df402b05c313137cc9a28fb16b203e72b1a","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        return str(label_value)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def _get_resource_alert_values(self, alert):"},{"line_number":248,"context_line":"        # Get values of the alert labels from alert\u0027s resource in conf file"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        resource_alert_labels \u003d self._get_conf_resource(alert).values()"},{"line_number":251,"context_line":"        alert_values \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_bda3644f","line":248,"range":{"start_line":248,"start_character":8,"end_line":248,"end_character":75},"updated":"2019-01-14 08:03:44.000000000","message":"Please give an example","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        return str(label_value)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def _get_resource_alert_values(self, alert):"},{"line_number":248,"context_line":"        # Get values of the alert labels from alert\u0027s resource in conf file"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        resource_alert_labels \u003d self._get_conf_resource(alert).values()"},{"line_number":251,"context_line":"        alert_values \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_79e1829a","line":248,"range":{"start_line":248,"start_character":8,"end_line":248,"end_character":75},"in_reply_to":"bfdaf3ff_bda3644f","updated":"2019-01-14 18:32:37.000000000","message":"Done","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"942db8984cbc6f602f59d2c3365898f2260df4b3","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        # Get values of the alert labels from alert\u0027s resource in conf file"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        resource_alert_labels \u003d self._get_conf_resource(alert).values()"},{"line_number":251,"context_line":"        alert_values \u003d {}"},{"line_number":252,"context_line":"        for label in resource_alert_labels:"},{"line_number":253,"context_line":"            alert_values[label] \u003d get_label(alert, label)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        return alert_values"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    @staticmethod"},{"line_number":258,"context_line":"    def _get_conf_resource(alert):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_78f50acb","line":255,"range":{"start_line":251,"start_character":7,"end_line":255,"end_character":27},"updated":"2019-01-14 08:23:13.000000000","message":"you can use list comprehensions","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        # Get values of the alert labels from alert\u0027s resource in conf file"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        resource_alert_labels \u003d self._get_conf_resource(alert).values()"},{"line_number":251,"context_line":"        alert_values \u003d {}"},{"line_number":252,"context_line":"        for label in resource_alert_labels:"},{"line_number":253,"context_line":"            alert_values[label] \u003d get_label(alert, label)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        return alert_values"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    @staticmethod"},{"line_number":258,"context_line":"    def _get_conf_resource(alert):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_3930da56","line":255,"range":{"start_line":251,"start_character":7,"end_line":255,"end_character":27},"in_reply_to":"bfdaf3ff_78f50acb","updated":"2019-01-14 18:32:37.000000000","message":"ok,,, dict comprehension","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19194,"name":"Dan Offek","email":"dany.offek@gmail.com","username":"danoffek"},"change_message_id":"cc1ec48d2f11e64d5b71a85b6824364d03fc3156","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        :return: Resource that matches the alert"},{"line_number":269,"context_line":"        :rtype: dict"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        Resource is a dict which its keys are vitrage entity fields"},{"line_number":272,"context_line":"        and its values are the corresponding alert labels."},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        Example to returned resource:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_d3dc1f1a","line":271,"updated":"2019-01-13 16:22:17.000000000","message":"Resorce is a dict, where the keys are vitrage entity fields","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        :return: Resource that matches the alert"},{"line_number":269,"context_line":"        :rtype: dict"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        Resource is a dict which its keys are vitrage entity fields"},{"line_number":272,"context_line":"        and its values are the corresponding alert labels."},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        Example to returned resource:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_398f7a2b","line":271,"in_reply_to":"bfdaf3ff_d3dc1f1a","updated":"2019-01-14 18:32:37.000000000","message":"Done","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"f3a57df402b05c313137cc9a28fb16b203e72b1a","unresolved":false,"context_lines":[{"line_number":300,"context_line":"            ip \u003d ip_address(six.u(value))"},{"line_number":301,"context_line":"        except ValueError:"},{"line_number":302,"context_line":"            parsed \u003d urlparse.urlparse(\u0027//{}\u0027.format(value))"},{"line_number":303,"context_line":"            ip \u003d ip_address(six.u(parsed.hostname))"},{"line_number":304,"context_line":"        return ip"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_3da8d41d","line":303,"range":{"start_line":303,"start_character":12,"end_line":303,"end_character":51},"updated":"2019-01-14 08:03:44.000000000","message":"Does it require another try/except block?","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":300,"context_line":"            ip \u003d ip_address(six.u(value))"},{"line_number":301,"context_line":"        except ValueError:"},{"line_number":302,"context_line":"            parsed \u003d urlparse.urlparse(\u0027//{}\u0027.format(value))"},{"line_number":303,"context_line":"            ip \u003d ip_address(six.u(parsed.hostname))"},{"line_number":304,"context_line":"        return ip"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_f9afb291","line":303,"range":{"start_line":303,"start_character":12,"end_line":303,"end_character":51},"in_reply_to":"bfdaf3ff_3da8d41d","updated":"2019-01-14 18:32:37.000000000","message":"the function using it \u0027_adjust_label_value\u0027 is doing the try/catch.\n\nand on the function documentation i specified that it throws ValueError","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"fb04b536ac807e361164e721a94dc79b89ff2994","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    @staticmethod"},{"line_number":171,"context_line":"    def _configuration_mapping(conf):"},{"line_number":172,"context_line":"        prometheus_config_file \u003d conf.prometheus[DSOpts.CONFIG_FILE]"},{"line_number":173,"context_line":"        try:"},{"line_number":174,"context_line":"            prometheus_config \u003d \\"},{"line_number":175,"context_line":"                file_utils.load_yaml_file(prometheus_config_file)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfdaf3ff_ce0f58df","line":172,"range":{"start_line":172,"start_character":33,"end_line":172,"end_character":68},"updated":"2019-01-16 15:21:44.000000000","message":"Does it always exist?","commit_id":"5e03c3684356aa21dd50ae6f54f252f16f9b9ed4"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"c6541ea69a6f6108f01865362c0d20dd52a23308","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    @staticmethod"},{"line_number":171,"context_line":"    def _configuration_mapping(conf):"},{"line_number":172,"context_line":"        prometheus_config_file \u003d conf.prometheus[DSOpts.CONFIG_FILE]"},{"line_number":173,"context_line":"        try:"},{"line_number":174,"context_line":"            prometheus_config \u003d \\"},{"line_number":175,"context_line":"                file_utils.load_yaml_file(prometheus_config_file)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfdaf3ff_e486fbdb","line":172,"range":{"start_line":172,"start_character":33,"end_line":172,"end_character":68},"in_reply_to":"bfdaf3ff_ce0f58df","updated":"2019-01-16 17:34:27.000000000","message":"yeah... there is a default value of it.\n/etc/vitrage/prometheus_conf.yaml","commit_id":"5e03c3684356aa21dd50ae6f54f252f16f9b9ed4"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"fb04b536ac807e361164e721a94dc79b89ff2994","unresolved":false,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        :param alert: Prometheus alert"},{"line_number":251,"context_line":"        :type alert: dict"},{"line_number":252,"context_line":"        :return: Subset of vitrage entity"},{"line_number":253,"context_line":"        \":rtype: dict"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        For the example above. The function returns:"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfdaf3ff_8ef950c9","line":252,"range":{"start_line":252,"start_character":17,"end_line":252,"end_character":23},"updated":"2019-01-16 15:21:44.000000000","message":"Unique properties","commit_id":"5e03c3684356aa21dd50ae6f54f252f16f9b9ed4"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"c6541ea69a6f6108f01865362c0d20dd52a23308","unresolved":false,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        :param alert: Prometheus alert"},{"line_number":251,"context_line":"        :type alert: dict"},{"line_number":252,"context_line":"        :return: Subset of vitrage entity"},{"line_number":253,"context_line":"        \":rtype: dict"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        For the example above. The function returns:"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfdaf3ff_a468f320","line":252,"range":{"start_line":252,"start_character":17,"end_line":252,"end_character":23},"in_reply_to":"bfdaf3ff_8ef950c9","updated":"2019-01-16 17:34:27.000000000","message":"Done","commit_id":"5e03c3684356aa21dd50ae6f54f252f16f9b9ed4"}],"vitrage/tests/unit/datasources/prometheus/test_prometheus_driver.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"942db8984cbc6f602f59d2c3365898f2260df4b3","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        host_alert_1 \u003d alerts[0]"},{"line_number":78,"context_line":"        host_alert_2 \u003d alerts[1]"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # Calculate vitrage entity subset"},{"line_number":81,"context_line":"        observed_host_alert_1 \u003d \\"},{"line_number":82,"context_line":"            driver._calculate_vitrage_entity_subset(host_alert_1)"},{"line_number":83,"context_line":"        observed_host_alert_2 \u003d \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_d8dc361a","line":80,"range":{"start_line":80,"start_character":8,"end_line":80,"end_character":41},"updated":"2019-01-14 08:23:13.000000000","message":"this comment is redundant I can see the name of the methods","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"7b3073c9ee218c6052d0c031d1ba01463ceb6d04","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        host_alert_1 \u003d alerts[0]"},{"line_number":78,"context_line":"        host_alert_2 \u003d alerts[1]"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # Calculate vitrage entity subset"},{"line_number":81,"context_line":"        observed_host_alert_1 \u003d \\"},{"line_number":82,"context_line":"            driver._calculate_vitrage_entity_subset(host_alert_1)"},{"line_number":83,"context_line":"        observed_host_alert_2 \u003d \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_73adf686","line":80,"range":{"start_line":80,"start_character":8,"end_line":80,"end_character":41},"in_reply_to":"bfdaf3ff_b33cbec8","updated":"2019-01-16 11:50:16.000000000","message":"so i\u0027ll reform it like this:\narrange, act, assert","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        host_alert_1 \u003d alerts[0]"},{"line_number":78,"context_line":"        host_alert_2 \u003d alerts[1]"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # Calculate vitrage entity subset"},{"line_number":81,"context_line":"        observed_host_alert_1 \u003d \\"},{"line_number":82,"context_line":"            driver._calculate_vitrage_entity_subset(host_alert_1)"},{"line_number":83,"context_line":"        observed_host_alert_2 \u003d \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_d99e6e06","line":80,"range":{"start_line":80,"start_character":8,"end_line":80,"end_character":41},"in_reply_to":"bfdaf3ff_d8dc361a","updated":"2019-01-14 18:32:37.000000000","message":"I saw that it is standard to split the test to 3 parts and each part write a comment what it does/ i agree it is redundant","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"4ea1b4d885b9949ac0fae8ec943bd735aeb3f427","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        host_alert_1 \u003d alerts[0]"},{"line_number":78,"context_line":"        host_alert_2 \u003d alerts[1]"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # Calculate vitrage entity subset"},{"line_number":81,"context_line":"        observed_host_alert_1 \u003d \\"},{"line_number":82,"context_line":"            driver._calculate_vitrage_entity_subset(host_alert_1)"},{"line_number":83,"context_line":"        observed_host_alert_2 \u003d \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_184a897f","line":80,"range":{"start_line":80,"start_character":8,"end_line":80,"end_character":41},"in_reply_to":"bfdaf3ff_d99e6e06","updated":"2019-01-16 11:08:23.000000000","message":"Indeed we have similar comments in most of the tests, but if it feels redundant then we can drop it","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"11f5a876602a4211de73ff7e1bc211516765204c","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        host_alert_1 \u003d alerts[0]"},{"line_number":78,"context_line":"        host_alert_2 \u003d alerts[1]"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # Calculate vitrage entity subset"},{"line_number":81,"context_line":"        observed_host_alert_1 \u003d \\"},{"line_number":82,"context_line":"            driver._calculate_vitrage_entity_subset(host_alert_1)"},{"line_number":83,"context_line":"        observed_host_alert_2 \u003d \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_b33cbec8","line":80,"range":{"start_line":80,"start_character":8,"end_line":80,"end_character":41},"in_reply_to":"bfdaf3ff_d99e6e06","updated":"2019-01-16 11:16:27.000000000","message":"we usually write \n# action\n\nnot the name of the method that is activated\n\nthis is done in order to separate the unit test to three phases\nsetup, action , assert\n\nor better (AAA)\n\n# arrange\n....\n# act\n...\n# assert\n...","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"942db8984cbc6f602f59d2c3365898f2260df4b3","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        vm_alert_1 \u003d alerts[2]"},{"line_number":102,"context_line":"        vm_alert_2 \u003d alerts[3]"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        # Calculate vitrage entity subset"},{"line_number":105,"context_line":"        observed_vm_alert_1 \u003d \\"},{"line_number":106,"context_line":"            driver._calculate_vitrage_entity_subset(vm_alert_1)"},{"line_number":107,"context_line":"        observed_vm_alert_2 \u003d \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_98e6aee8","line":104,"range":{"start_line":104,"start_character":8,"end_line":104,"end_character":41},"updated":"2019-01-14 08:23:13.000000000","message":"same as above","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"942db8984cbc6f602f59d2c3365898f2260df4b3","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        alert_1 \u003d alerts[0]"},{"line_number":122,"context_line":"        alert_2 \u003d alerts[3]"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        # Get resource alert values"},{"line_number":125,"context_line":"        observed_alert_1 \u003d driver._get_resource_alert_values(alert_1)"},{"line_number":126,"context_line":"        observed_alert_2 \u003d driver._get_resource_alert_values(alert_2)"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_b804d27c","line":124,"range":{"start_line":124,"start_character":7,"end_line":124,"end_character":35},"updated":"2019-01-14 08:23:13.000000000","message":"same as above","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"942db8984cbc6f602f59d2c3365898f2260df4b3","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        alert_1 \u003d alerts[0]"},{"line_number":141,"context_line":"        alert_2 \u003d alerts[3]"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        # Get conf resource"},{"line_number":144,"context_line":"        observed_alert_1 \u003d driver._get_conf_resource(alert_1)"},{"line_number":145,"context_line":"        observed_alert_2 \u003d driver._get_conf_resource(alert_2)"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_18f39ea0","line":143,"range":{"start_line":143,"start_character":8,"end_line":143,"end_character":27},"updated":"2019-01-14 08:23:13.000000000","message":"same as above","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"942db8984cbc6f602f59d2c3365898f2260df4b3","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        invalid_ipv6 \u003d \u00272001:db8:\u0027"},{"line_number":164,"context_line":"        not_ip \u003d \u0027not ip\u0027"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        # Validate ips"},{"line_number":167,"context_line":"        observed_ipv4_without_port \u003d driver._validate_ip(ipv4_without_port)"},{"line_number":168,"context_line":"        observed_ipv4_with_port \u003d driver._validate_ip(ipv4_with_port)"},{"line_number":169,"context_line":"        observed_ipv6_without_port \u003d driver._validate_ip(ipv6_without_port)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_b8393242","line":166,"range":{"start_line":166,"start_character":8,"end_line":166,"end_character":22},"updated":"2019-01-14 08:23:13.000000000","message":"same as above","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"942db8984cbc6f602f59d2c3365898f2260df4b3","unresolved":false,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def _generate_alerts(self):"},{"line_number":217,"context_line":"        event \u003d self._generate_event()"},{"line_number":218,"context_line":"        details \u003d event.get(EProps.DETAILS)"},{"line_number":219,"context_line":"        alerts \u003d details[\u0027alerts\u0027]"},{"line_number":220,"context_line":"        return alerts"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_384542b4","line":218,"range":{"start_line":218,"start_character":8,"end_line":218,"end_character":43},"updated":"2019-01-14 08:23:13.000000000","message":"if you use get it means it can be None if its not the case than\nuse []","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"fc9a27395cba4ae17afdb72cf669e432923fe099","unresolved":false,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def _generate_alerts(self):"},{"line_number":217,"context_line":"        event \u003d self._generate_event()"},{"line_number":218,"context_line":"        details \u003d event.get(EProps.DETAILS)"},{"line_number":219,"context_line":"        alerts \u003d details[\u0027alerts\u0027]"},{"line_number":220,"context_line":"        return alerts"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_b985aaaf","line":218,"range":{"start_line":218,"start_character":8,"end_line":218,"end_character":43},"in_reply_to":"bfdaf3ff_384542b4","updated":"2019-01-14 18:32:37.000000000","message":"Done","commit_id":"9af1c67a663884a4a658c9eda005667dd2f99fba"}]}
