)]}'
{"requirements.txt":[{"author":{"_account_id":19209,"name":"Liat","email":"liat.har-tal@nokia.com","username":"liat"},"change_message_id":"c0da49c091a005b0ceb0cf46d8a8951e33d4d0a6","unresolved":false,"context_lines":[{"line_number":11,"context_line":"python-keystoneclient!\u003d1.8.0,!\u003d2.1.0,\u003e\u003d1.6.0 # Apache-2.0"},{"line_number":12,"context_line":"python-neutronclient!\u003d4.1.0,\u003e\u003d2.6.0 # Apache-2.0"},{"line_number":13,"context_line":"python-novaclient\u003e\u003d2.26.0"},{"line_number":14,"context_line":"zabbixapi\u003e\u003d0.1.1"},{"line_number":15,"context_line":"networkx\u003e\u003d1.10"},{"line_number":16,"context_line":"oslo.config\u003e\u003d2.7.0 # Apache-2.0"},{"line_number":17,"context_line":"oslo.messaging\u003e\u003d4.5.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":1,"id":"7aa08908_f7832e54","line":14,"updated":"2016-06-08 07:05:26.000000000","message":"I\u0027m not sure about it but I think we should add this new package in more general common requirements.","commit_id":"6229d2427d25f927cb8258892c5b50d8a682cfb8"},{"author":{"_account_id":11105,"name":"Swapnil Kulkarni","email":"coolsvap@gmail.com","username":"coolsvap"},"change_message_id":"c38eb77430113e039cfa3351f7f3bb8eb81c8f2e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"python-keystoneclient!\u003d1.8.0,!\u003d2.1.0,\u003e\u003d1.6.0 # Apache-2.0"},{"line_number":12,"context_line":"python-neutronclient!\u003d4.1.0,\u003e\u003d2.6.0 # Apache-2.0"},{"line_number":13,"context_line":"python-novaclient\u003e\u003d2.26.0"},{"line_number":14,"context_line":"pyzabbix\u003e\u003d0.7.4"},{"line_number":15,"context_line":"networkx\u003e\u003d1.10"},{"line_number":16,"context_line":"oslo.config\u003e\u003d2.7.0 # Apache-2.0"},{"line_number":17,"context_line":"oslo.messaging\u003e\u003d4.5.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":4,"id":"7aa08908_1e18b21d","line":14,"updated":"2016-06-13 06:23:45.000000000","message":"Please update the entry like it is specified in requirements repo [1]  i.e. like pyzabbix\u003e\u003d0.7.4  # LGPL\n\nhttps://github.com/openstack/requirements/blob/master/global-requirements.txt#L159","commit_id":"cd5fb83ce0054878935f7f209730a0a5e9742187"}],"test-requirements.txt":[{"author":{"_account_id":11105,"name":"Swapnil Kulkarni","email":"coolsvap@gmail.com","username":"coolsvap"},"change_message_id":"1db75ee2aebe2c9e1195164ce1c5eafb816a36a8","unresolved":false,"context_lines":[{"line_number":13,"context_line":"python-neutronclient!\u003d4.1.0,\u003e\u003d2.6.0 # Apache-2.0"},{"line_number":14,"context_line":"python-novaclient\u003e\u003d2.26.0"},{"line_number":15,"context_line":"python-subunit\u003e\u003d0.0.18"},{"line_number":16,"context_line":"pyzabbix\u003e\u003d0.7.4"},{"line_number":17,"context_line":"sphinx!\u003d1.2.0,!\u003d1.3b1,\u003c1.3,\u003e\u003d1.1.2"},{"line_number":18,"context_line":"oslo.log\u003e\u003d1.12.0 # Apache-2.0"},{"line_number":19,"context_line":"oslosphinx\u003e\u003d2.5.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":4,"id":"7aa08908_7edf363a","line":16,"updated":"2016-06-13 06:24:29.000000000","message":"same as requirements.txt","commit_id":"cd5fb83ce0054878935f7f209730a0a5e9742187"}],"vitrage/datasources/alarm_driver_base.py":[{"author":{"_account_id":19209,"name":"Liat","email":"liat.har-tal@nokia.com","username":"liat"},"change_message_id":"c0da49c091a005b0ceb0cf46d8a8951e33d4d0a6","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    def _get_all_alarms(self):"},{"line_number":85,"context_line":"        alarms \u003d self._get_alarms()"},{"line_number":86,"context_line":"        self._enrich_alarms(alarms)"},{"line_number":87,"context_line":"        temp \u003d self._filter_and_cache_alarms(alarms,"},{"line_number":88,"context_line":"                                             AlarmDriverBase._filter_get_all)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        return temp"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_37e5b6db","line":87,"range":{"start_line":87,"start_character":8,"end_line":87,"end_character":12},"updated":"2016-06-08 07:05:26.000000000","message":"what is temp? is not clear enough..","commit_id":"6229d2427d25f927cb8258892c5b50d8a682cfb8"}],"vitrage/datasources/services.py":[{"author":{"_account_id":19209,"name":"Liat","email":"liat.har-tal@nokia.com","username":"liat"},"change_message_id":"c0da49c091a005b0ceb0cf46d8a8951e33d4d0a6","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                for entity in entities_dictionaries:"},{"line_number":64,"context_line":"                    self.callback_function(entity)"},{"line_number":65,"context_line":"            except Exception:"},{"line_number":66,"context_line":"                LOG.error(\"Get all Failed for datasource: %s\", plugin_type)"},{"line_number":67,"context_line":"                LOG.exception(plugin_type)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        LOG.debug(\"end get all with sync mode %s\" % sync_mode)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_17eb5a79","line":66,"range":{"start_line":66,"start_character":27,"end_line":66,"end_character":41},"updated":"2016-06-08 07:05:26.000000000","message":"What is \"all failed\"?","commit_id":"6229d2427d25f927cb8258892c5b50d8a682cfb8"}],"vitrage/datasources/zabbix/driver.py":[{"author":{"_account_id":19194,"name":"Dan Offek","email":"dany.offek@gmail.com","username":"danoffek"},"change_message_id":"8eea3597686fca7307edae84a4046c7a0e43f1a7","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    def _alarm_key(self, alarm):"},{"line_number":44,"context_line":"        return self.ServiceKey(host_name\u003dalarm[ZabbixProps.RESOURCE_NAME],"},{"line_number":45,"context_line":"                               service\u003dalarm[ZabbixProps.DESCRIPTION])"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _get_alarms(self):"},{"line_number":48,"context_line":"        zabbix_user \u003d self.conf.zabbix.user"},{"line_number":49,"context_line":"        zabbix_password \u003d self.conf.zabbix.password"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_d1c0c252","line":46,"updated":"2016-06-08 05:58:52.000000000","message":"get_enriched_alarms?","commit_id":"6229d2427d25f927cb8258892c5b50d8a682cfb8"},{"author":{"_account_id":19194,"name":"Dan Offek","email":"dany.offek@gmail.com","username":"danoffek"},"change_message_id":"8eea3597686fca7307edae84a4046c7a0e43f1a7","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            LOG.warning(\u0027Zabbix url is not defined\u0027)"},{"line_number":62,"context_line":"            return []"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        if not self.client:"},{"line_number":65,"context_line":"            self.client \u003d ZabbixAPI(zabbix_url)"},{"line_number":66,"context_line":"            self.client.login(zabbix_user, zabbix_password)"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_11a88ada","line":64,"updated":"2016-06-08 05:58:52.000000000","message":"Do we want a proper log in case of client login exception ?","commit_id":"6229d2427d25f927cb8258892c5b50d8a682cfb8"},{"author":{"_account_id":19209,"name":"Liat","email":"liat.har-tal@nokia.com","username":"liat"},"change_message_id":"c0da49c091a005b0ceb0cf46d8a8951e33d4d0a6","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        hosts \u003d self.client.host.get()"},{"line_number":70,"context_line":"        for host in hosts:"},{"line_number":71,"context_line":"            if host[ZabbixProps.HOST] in self.configuration_mapping:"},{"line_number":72,"context_line":"                triggers \u003d \\"},{"line_number":73,"context_line":"                    self.client.trigger.get(hostids\u003dhost[ZabbixProps.HOST_ID])"},{"line_number":74,"context_line":"                for trigger in triggers:"},{"line_number":75,"context_line":"                    trigger[ZabbixProps.RESOURCE_NAME] \u003d host[ZabbixProps.HOST]"},{"line_number":76,"context_line":"                    alarms.append(trigger)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_2939dad7","line":73,"range":{"start_line":72,"start_character":16,"end_line":73,"end_character":78},"updated":"2016-06-08 07:05:26.000000000","message":"more readable:\n\nhostids\u003dhost[ZabbixProps.HOST_ID]\ntriggers \u003d self.client.trigger.get(hostids)","commit_id":"6229d2427d25f927cb8258892c5b50d8a682cfb8"},{"author":{"_account_id":19209,"name":"Liat","email":"liat.har-tal@nokia.com","username":"liat"},"change_message_id":"c0da49c091a005b0ceb0cf46d8a8951e33d4d0a6","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            if host[ZabbixProps.HOST] in self.configuration_mapping:"},{"line_number":72,"context_line":"                triggers \u003d \\"},{"line_number":73,"context_line":"                    self.client.trigger.get(hostids\u003dhost[ZabbixProps.HOST_ID])"},{"line_number":74,"context_line":"                for trigger in triggers:"},{"line_number":75,"context_line":"                    trigger[ZabbixProps.RESOURCE_NAME] \u003d host[ZabbixProps.HOST]"},{"line_number":76,"context_line":"                    alarms.append(trigger)"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_a905ca11","line":74,"range":{"start_line":74,"start_character":16,"end_line":74,"end_character":27},"updated":"2016-06-08 07:05:26.000000000","message":"I think you should split it into 2 methods (for loop in for loop is a classic example for splitting methods..)","commit_id":"6229d2427d25f927cb8258892c5b50d8a682cfb8"},{"author":{"_account_id":19194,"name":"Dan Offek","email":"dany.offek@gmail.com","username":"danoffek"},"change_message_id":"8eea3597686fca7307edae84a4046c7a0e43f1a7","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            # based on zabbix configuration file, convert zabbix host name"},{"line_number":83,"context_line":"            # to vitrage resource type and name"},{"line_number":84,"context_line":"            zabbix_host \u003d alarm[ZabbixProps.RESOURCE_NAME]"},{"line_number":85,"context_line":"            vitrage_resource \u003d self.configuration_mapping[zabbix_host]"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"            alarm[ZabbixProps.STATUS] \u003d \\"},{"line_number":88,"context_line":"                self._get_status(alarm)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_b19d3668","line":85,"updated":"2016-06-08 05:58:52.000000000","message":"In case it can have an exception, please handle.\nBefore adding the code, please check there is actually a use case for an exception. No need for an air conditioning preparation.","commit_id":"6229d2427d25f927cb8258892c5b50d8a682cfb8"},{"author":{"_account_id":19194,"name":"Dan Offek","email":"dany.offek@gmail.com","username":"danoffek"},"change_message_id":"8eea3597686fca7307edae84a4046c7a0e43f1a7","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            zabbix_config_elements \u003d zabbix_config[\u0027zabbix\u0027]"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"            mappings \u003d {}"},{"line_number":131,"context_line":"            for config in zabbix_config_elements:"},{"line_number":132,"context_line":"                mappings[config[\u0027zabbix_host\u0027]] \u003d {"},{"line_number":133,"context_line":"                    ZabbixProps.RESOURCE_TYPE: config[\u0027type\u0027],"},{"line_number":134,"context_line":"                    ZabbixProps.RESOURCE_NAME: config[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_310dc6e8","line":131,"updated":"2016-06-08 05:58:52.000000000","message":"config name too similar to \"conf\" parameter.","commit_id":"6229d2427d25f927cb8258892c5b50d8a682cfb8"}],"vitrage/datasources/zabbix/transformer.py":[{"author":{"_account_id":19194,"name":"Dan Offek","email":"dany.offek@gmail.com","username":"danoffek"},"change_message_id":"8eea3597686fca7307edae84a4046c7a0e43f1a7","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def _create_vertex(self, entity_event):"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # update_timestamp \u003d datetime_utils.change_time_str_format("},{"line_number":48,"context_line":"        #     entity_event[ZabbixProperties.LAST_CHANGE],"},{"line_number":49,"context_line":"        #     \u0027%Y-%m-%d %H:%M:%S\u0027,"},{"line_number":50,"context_line":"        #     tbase.TIMESTAMP_FORMAT)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_91f75a58","line":47,"updated":"2016-06-08 05:58:52.000000000","message":"???","commit_id":"6229d2427d25f927cb8258892c5b50d8a682cfb8"},{"author":{"_account_id":19194,"name":"Dan Offek","email":"dany.offek@gmail.com","username":"danoffek"},"change_message_id":"8eea3597686fca7307edae84a4046c7a0e43f1a7","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def _create_zabbix_neighbors(self, entity_event):"},{"line_number":83,"context_line":"        vitrage_id \u003d self._create_entity_key(entity_event)"},{"line_number":84,"context_line":"        # timestamp \u003d datetime_utils.change_time_str_format("},{"line_number":85,"context_line":"        #     entity_event[ZabbixProperties.LAST_CHANGE],"},{"line_number":86,"context_line":"        #     \u0027%Y-%m-%d %H:%M:%S\u0027,"},{"line_number":87,"context_line":"        #     tbase.TIMESTAMP_FORMAT)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_517692d7","line":84,"updated":"2016-06-08 05:58:52.000000000","message":"???","commit_id":"6229d2427d25f927cb8258892c5b50d8a682cfb8"},{"author":{"_account_id":19194,"name":"Dan Offek","email":"dany.offek@gmail.com","username":"danoffek"},"change_message_id":"8eea3597686fca7307edae84a4046c7a0e43f1a7","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        #     entity_event[ZabbixProperties.LAST_CHANGE],"},{"line_number":86,"context_line":"        #     \u0027%Y-%m-%d %H:%M:%S\u0027,"},{"line_number":87,"context_line":"        #     tbase.TIMESTAMP_FORMAT)"},{"line_number":88,"context_line":"        timestamp \u003d entity_event[ZabbixProperties.LAST_CHANGE]"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        resource_type \u003d entity_event[ZabbixProperties.RESOURCE_TYPE]"},{"line_number":91,"context_line":"        if resource_type \u003d\u003d NOVA_HOST_DATASOURCE or resource_type \u003d\u003d SWITCH:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_b156d627","line":88,"updated":"2016-06-08 05:58:52.000000000","message":"Handle None","commit_id":"6229d2427d25f927cb8258892c5b50d8a682cfb8"}]}
