)]}'
{"neutron/db/l3_dvr_db.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"af07692c58cf5a579f494d9880c2717b2938fa71","unresolved":false,"context_lines":[{"line_number":1074,"context_line":"        try:"},{"line_number":1075,"context_line":"            # if not, try to see if it is a request body"},{"line_number":1076,"context_line":"            requested_router_type \u003d router.get(\u0027distributed\u0027)"},{"line_number":1077,"context_line":"        except AttributeError:"},{"line_number":1078,"context_line":"            requested_router_type \u003d None"},{"line_number":1079,"context_line":"    if validators.is_attr_set(requested_router_type):"},{"line_number":1080,"context_line":"        return requested_router_type"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f93b717_9cb4d3f3","line":1077,"updated":"2018-02-01 14:20:55.000000000","message":"I am not sure why this is needed now. can you elaborate with a comment? Doesn\u0027t \u0027distributed\u0027 attribute have default value for OVO? Or is it not defined at all?","commit_id":"df4f0bfa0e7a608ed39f286fe412120d68a1952c"},{"author":{"_account_id":17491,"name":"Lujin Luo","email":"luo.lujin@jp.fujitsu.com","username":"Lujin"},"change_message_id":"3759c6a919b671413873622b07f3e24e8b2f1a53","unresolved":false,"context_lines":[{"line_number":1074,"context_line":"        try:"},{"line_number":1075,"context_line":"            # if not, try to see if it is a request body"},{"line_number":1076,"context_line":"            requested_router_type \u003d router.get(\u0027distributed\u0027)"},{"line_number":1077,"context_line":"        except AttributeError:"},{"line_number":1078,"context_line":"            requested_router_type \u003d None"},{"line_number":1079,"context_line":"    if validators.is_attr_set(requested_router_type):"},{"line_number":1080,"context_line":"        return requested_router_type"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_a23a0fc9","line":1077,"in_reply_to":"3fa0c359_7232bca9","updated":"2018-02-09 06:55:44.000000000","message":"To answer your question in last IRC meeting - whether we can move this method to object. The answer is no. We would still be receiving router both in DB and OVO object, during Router OVO transition.","commit_id":"df4f0bfa0e7a608ed39f286fe412120d68a1952c"},{"author":{"_account_id":17491,"name":"Lujin Luo","email":"luo.lujin@jp.fujitsu.com","username":"Lujin"},"change_message_id":"473c39b77f25a51935a37d6ccd8179e9933e8527","unresolved":false,"context_lines":[{"line_number":1074,"context_line":"        try:"},{"line_number":1075,"context_line":"            # if not, try to see if it is a request body"},{"line_number":1076,"context_line":"            requested_router_type \u003d router.get(\u0027distributed\u0027)"},{"line_number":1077,"context_line":"        except AttributeError:"},{"line_number":1078,"context_line":"            requested_router_type \u003d None"},{"line_number":1079,"context_line":"    if validators.is_attr_set(requested_router_type):"},{"line_number":1080,"context_line":"        return requested_router_type"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f93b717_ac2dcffe","line":1077,"in_reply_to":"5f93b717_9cb4d3f3","updated":"2018-02-02 00:24:28.000000000","message":"No, \u0027distributed\u0027 is not an attribute of Router OVO. \u0027extra_attributes\u0027 is. Check here https://github.com/openstack/neutron/blob/master/neutron/objects/router.py#L192-#L211","commit_id":"df4f0bfa0e7a608ed39f286fe412120d68a1952c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"1ab10c14f01d3554d39f8e3fdcddf29308b10429","unresolved":false,"context_lines":[{"line_number":1074,"context_line":"        try:"},{"line_number":1075,"context_line":"            # if not, try to see if it is a request body"},{"line_number":1076,"context_line":"            requested_router_type \u003d router.get(\u0027distributed\u0027)"},{"line_number":1077,"context_line":"        except AttributeError:"},{"line_number":1078,"context_line":"            requested_router_type \u003d None"},{"line_number":1079,"context_line":"    if validators.is_attr_set(requested_router_type):"},{"line_number":1080,"context_line":"        return requested_router_type"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_7232bca9","line":1077,"in_reply_to":"5f93b717_ac2dcffe","updated":"2018-02-08 01:32:38.000000000","message":"OK... then shouldn\u0027t we extract it from the new place?","commit_id":"df4f0bfa0e7a608ed39f286fe412120d68a1952c"}],"neutron/db/metering/metering_db.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"acefc83450ff300afc219d72a0ea6b1454b6062e","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                if not routers:"},{"line_number":188,"context_line":"                    routers \u003d l3_obj.Router.get_objects(context)"},{"line_number":189,"context_line":"            else:"},{"line_number":190,"context_line":"                routers \u003d label.db_obj.routers"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"            for router in routers:"},{"line_number":193,"context_line":"                if not router[\u0027admin_state_up\u0027]:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_0af57e57","line":190,"updated":"2018-01-25 16:55:00.000000000","message":"we should make it so that we pass Router objects in line 197.","commit_id":"fe2c2a6b93653a538406f83268add9962d23fce3"},{"author":{"_account_id":17491,"name":"Lujin Luo","email":"luo.lujin@jp.fujitsu.com","username":"Lujin"},"change_message_id":"b9986949d0b90cf69d229abf2f790fa2e4a9cba4","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                if not routers:"},{"line_number":188,"context_line":"                    routers \u003d l3_obj.Router.get_objects(context)"},{"line_number":189,"context_line":"            else:"},{"line_number":190,"context_line":"                routers \u003d label.db_obj.routers"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"            for router in routers:"},{"line_number":193,"context_line":"                if not router[\u0027admin_state_up\u0027]:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_0909ff2a","line":190,"in_reply_to":"5f93b717_0af57e57","updated":"2018-01-26 02:45:40.000000000","message":"I am using the router.ids we got from label.db_obj.routers to run get_objects() for now. If you have performance concerns about fetching again from db, please let me know and we can work out another approach.","commit_id":"fe2c2a6b93653a538406f83268add9962d23fce3"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"acefc83450ff300afc219d72a0ea6b1454b6062e","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        if label.shared:"},{"line_number":213,"context_line":"            routers \u003d l3_obj.Router.get_objects(context)"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            routers \u003d label.db_obj.routers"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        routers_dict \u003d {}"},{"line_number":218,"context_line":"        for router in routers:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_caeeb687","line":215,"updated":"2018-01-25 16:55:00.000000000","message":"ditto","commit_id":"fe2c2a6b93653a538406f83268add9962d23fce3"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"acefc83450ff300afc219d72a0ea6b1454b6062e","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        labels \u003d metering_objs.MeteringLabel.get_objects(context)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        if label_id:"},{"line_number":231,"context_line":"            labels \u003d [label for label in labels if label.id \u003d\u003d label_id]"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        return self._process_sync_metering_data(context, labels)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_d0598efe","line":231,"updated":"2018-01-25 16:55:00.000000000","message":"this is not optimal: you fetch all labels, then filter in python. you should pass label_id as filter to get_objects.","commit_id":"fe2c2a6b93653a538406f83268add9962d23fce3"},{"author":{"_account_id":17491,"name":"Lujin Luo","email":"luo.lujin@jp.fujitsu.com","username":"Lujin"},"change_message_id":"b9986949d0b90cf69d229abf2f790fa2e4a9cba4","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        labels \u003d metering_objs.MeteringLabel.get_objects(context)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        if label_id:"},{"line_number":231,"context_line":"            labels \u003d [label for label in labels if label.id \u003d\u003d label_id]"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        return self._process_sync_metering_data(context, labels)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_891c2f6b","line":231,"in_reply_to":"5f93b717_d0598efe","updated":"2018-01-26 02:45:40.000000000","message":"Done.","commit_id":"fe2c2a6b93653a538406f83268add9962d23fce3"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"af07692c58cf5a579f494d9880c2717b2938fa71","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        return list(routers_dict.values())"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def get_sync_data_metering(self, context, label_id\u003dNone):"},{"line_number":231,"context_line":"        filters \u003d {\u0027id\u0027: [label_id]} if label_id else {}"},{"line_number":232,"context_line":"        labels \u003d metering_objs.MeteringLabel.get_objects("},{"line_number":233,"context_line":"            context, **filters)"},{"line_number":234,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f93b717_3c157fe5","line":231,"range":{"start_line":231,"start_character":25,"end_line":231,"end_character":35},"updated":"2018-02-01 14:20:55.000000000","message":"nit: I think you can just put it as-is, without embracing into a list","commit_id":"df4f0bfa0e7a608ed39f286fe412120d68a1952c"}]}
