)]}'
{"neutron_lib/callbacks/manager.py":[{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"36d0aaed6973242de68afe3c65c86701205afeb5","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":"# smallest one is called first"},{"line_number":26,"context_line":"PRIORITY_FIRST \u003d 0"},{"line_number":27,"context_line":"PRIORITY_NORMAL \u003d sys.maxint / 2"},{"line_number":28,"context_line":"PRIORITY_LAST \u003d sys.maxint"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_f841d50c","line":27,"range":{"start_line":27,"start_character":18,"end_line":27,"end_character":32},"updated":"2018-02-08 17:56:12.000000000","message":"why such big number for priority ?","commit_id":"1afb457d9daff867532351aabbfa6e4c8f1a98f6"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"8d17f8005c094316dbefe0df8643e5ae9950a53b","unresolved":false,"context_lines":[{"line_number":25,"context_line":"# smallest one is called first"},{"line_number":26,"context_line":"PRIORITY_FIRST \u003d 0"},{"line_number":27,"context_line":"PRIORITY_NORMAL \u003d sys.maxint / 2"},{"line_number":28,"context_line":"PRIORITY_LAST \u003d sys.maxint"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class CallbacksManager(object):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_f586b3db","line":28,"updated":"2018-02-08 05:48:12.000000000","message":"i suspect sys.maxint / 2 is cumbersome to deal with.\nhow about something simpler, say 10000.\n\ni guess we need to provide per-event constants anyway.","commit_id":"1afb457d9daff867532351aabbfa6e4c8f1a98f6"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4e0889ff730f3f7a9eeff22d7888a17b0b430d0b","unresolved":false,"context_lines":[{"line_number":25,"context_line":"# smallest one is called first"},{"line_number":26,"context_line":"PRIORITY_FIRST \u003d 0"},{"line_number":27,"context_line":"PRIORITY_NORMAL \u003d sys.maxint / 2"},{"line_number":28,"context_line":"PRIORITY_LAST \u003d sys.maxint"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class CallbacksManager(object):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_7456175f","line":28,"in_reply_to":"3fa0c359_f586b3db","updated":"2018-02-08 16:27:27.000000000","message":"Done","commit_id":"1afb457d9daff867532351aabbfa6e4c8f1a98f6"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"463d88b8d1174fbe7e0f916d8a95e9f590624193","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        :param callback: the callback. It must raise or return a boolean."},{"line_number":40,"context_line":"        :param resource: the resource. It must be a valid resource."},{"line_number":41,"context_line":"        :param event: the event. It must be a valid event."},{"line_number":42,"context_line":"        :param priority: the priority. callbacks are sorted by priority"},{"line_number":43,"context_line":"                         to be called. smaller one is called earlier."},{"line_number":44,"context_line":"        \"\"\""},{"line_number":45,"context_line":"        LOG.debug(\"Subscribe: %(callback)s %(resource)s %(event)s \""}],"source_content_type":"text/x-python","patch_set":17,"id":"df7087c5_ecc1f355","line":42,"range":{"start_line":42,"start_character":25,"end_line":42,"end_character":26},"updated":"2018-03-22 13:02:18.000000000","message":"Nit: use proper case for these sentences.","commit_id":"b78c8372763721339c1f4fc38ccd8d34a14e0b6c"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"51547191119c095ed788b20de35d943c31222a76","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        :param callback: the callback. It must raise or return a boolean."},{"line_number":40,"context_line":"        :param resource: the resource. It must be a valid resource."},{"line_number":41,"context_line":"        :param event: the event. It must be a valid event."},{"line_number":42,"context_line":"        :param priority: the priority. callbacks are sorted by priority"},{"line_number":43,"context_line":"                         to be called. smaller one is called earlier."},{"line_number":44,"context_line":"        \"\"\""},{"line_number":45,"context_line":"        LOG.debug(\"Subscribe: %(callback)s %(resource)s %(event)s \""}],"source_content_type":"text/x-python","patch_set":17,"id":"df7087c5_be479d77","line":42,"range":{"start_line":42,"start_character":25,"end_line":42,"end_character":26},"in_reply_to":"df7087c5_ecc1f355","updated":"2018-03-22 16:24:01.000000000","message":"done","commit_id":"b78c8372763721339c1f4fc38ccd8d34a14e0b6c"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7d5fd86d3b1ad9ed6b2556be27c12e856f7d5f2a","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            pri_callbacks \u003d {}"},{"line_number":58,"context_line":"            callbacks_list.append((priority, pri_callbacks))"},{"line_number":59,"context_line":"            callbacks_list.sort(key\u003dlambda x: x[0])"},{"line_number":60,"context_line":"        pri_callbacks[callback_id] \u003d callback"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        # We keep a copy of callbacks to speed the unsubscribe operation."},{"line_number":63,"context_line":"        if callback_id not in self._index:"}],"source_content_type":"text/x-python","patch_set":20,"id":"df7087c5_aafae071","line":60,"updated":"2018-03-23 09:49:33.000000000","message":"maybe I don\u0027t understand something but where You in fact subscribe new callback to self._callbacks collection? Didn\u0027t You forget about it?","commit_id":"217efe0a7ba192017612fffd99a16e50e1bd8b8e"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"f97954b1df00db9197c335227b5ca4f455eabf8a","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            pri_callbacks \u003d {}"},{"line_number":58,"context_line":"            callbacks_list.append((priority, pri_callbacks))"},{"line_number":59,"context_line":"            callbacks_list.sort(key\u003dlambda x: x[0])"},{"line_number":60,"context_line":"        pri_callbacks[callback_id] \u003d callback"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        # We keep a copy of callbacks to speed the unsubscribe operation."},{"line_number":63,"context_line":"        if callback_id not in self._index:"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_75367fb7","line":60,"in_reply_to":"bf659307_fec11982","updated":"2018-03-26 14:37:45.000000000","message":"ok, now I see. Thx for explanation :)","commit_id":"217efe0a7ba192017612fffd99a16e50e1bd8b8e"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"b8ad63b51d7e22b85492e1b06f1522120a9c1a68","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            pri_callbacks \u003d {}"},{"line_number":58,"context_line":"            callbacks_list.append((priority, pri_callbacks))"},{"line_number":59,"context_line":"            callbacks_list.sort(key\u003dlambda x: x[0])"},{"line_number":60,"context_line":"        pri_callbacks[callback_id] \u003d callback"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        # We keep a copy of callbacks to speed the unsubscribe operation."},{"line_number":63,"context_line":"        if callback_id not in self._index:"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_fec11982","line":60,"in_reply_to":"df7087c5_aafae071","updated":"2018-03-23 17:06:40.000000000","message":"its a reference thing at line 51 callbacks_list is setting default to self._callbacks[resource][event] \u003d []\nany changes to callbacks list will be reflected to self._callbacks as well, if you check self._callbacks after line 60 callback will be there.","commit_id":"217efe0a7ba192017612fffd99a16e50e1bd8b8e"}],"neutron_lib/callbacks/priority.py":[{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"36d0aaed6973242de68afe3c65c86701205afeb5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2017 Intel Corporation."},{"line_number":2,"context_line":"# Copyright (c) 2017 Isaku Yamahata \u003cisaku.yamahata at intel com\u003e"},{"line_number":3,"context_line":"#                                   \u003cisaku.yamahata at gmail com\u003e"},{"line_number":4,"context_line":"# All rights reserved."}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_e5b833c9","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"updated":"2018-02-08 17:56:12.000000000","message":"2018","commit_id":"48f70d30b7928fd6093c63bc03ceb11bb8f03cc7"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"a457d4b34c2f3fbb4a7ea04980775b0d7760f02d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2017 Intel Corporation."},{"line_number":2,"context_line":"# Copyright (c) 2017 Isaku Yamahata \u003cisaku.yamahata at intel com\u003e"},{"line_number":3,"context_line":"#                                   \u003cisaku.yamahata at gmail com\u003e"},{"line_number":4,"context_line":"# All rights reserved."}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_2092899f","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"in_reply_to":"3fa0c359_e5b833c9","updated":"2018-02-21 01:46:22.000000000","message":"Done","commit_id":"48f70d30b7928fd6093c63bc03ceb11bb8f03cc7"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"736873c801617fcfe8b743174c66918abccfb155","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2018 Intel Corporation."},{"line_number":2,"context_line":"# Copyright (c) 2018 Isaku Yamahata \u003cisaku.yamahata at intel com\u003e"},{"line_number":3,"context_line":"#                                   \u003cisaku.yamahata at gmail com\u003e"},{"line_number":4,"context_line":"# All rights reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa0c359_f93fc284","line":3,"range":{"start_line":2,"start_character":0,"end_line":3,"end_character":65},"updated":"2018-02-16 14:13:57.000000000","message":"Haven\u0027t seen this style before; calling out the authors name/email.","commit_id":"f1454f9304bcdcb0ebf631c62f982d3a1ad831be"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"d0dc2e9cad94c6d415fb7be91050de446d0e98f4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2018 Intel Corporation."},{"line_number":2,"context_line":"# Copyright (c) 2018 Isaku Yamahata \u003cisaku.yamahata at intel com\u003e"},{"line_number":3,"context_line":"#                                   \u003cisaku.yamahata at gmail com\u003e"},{"line_number":4,"context_line":"# All rights reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f9dbf25_74450ab3","line":3,"range":{"start_line":2,"start_character":0,"end_line":3,"end_character":65},"in_reply_to":"3fa0c359_f93fc284","updated":"2018-03-01 09:28:42.000000000","message":"it has been his preferred style for decades.","commit_id":"f1454f9304bcdcb0ebf631c62f982d3a1ad831be"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"736873c801617fcfe8b743174c66918abccfb155","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# NOTE(yamahata):smallest one is called first."},{"line_number":19,"context_line":"# DEFAULT and LAST are chosen as big enough, not too big, eye catchy"},{"line_number":20,"context_line":"# and unique/easy for grep. Lasting zero digits are for the usage, like"},{"line_number":21,"context_line":"# PRIORITY_DEFAULT, PRIORITY_DEFAULT + 1, so that human can easily distinguish"},{"line_number":22,"context_line":"# them and it\u0027s friendly for grep."},{"line_number":23,"context_line":"# i.e. 5555, 5556, 5557... vs 55550000, 55550001, 55550002..."},{"line_number":24,"context_line":"# each resources would want to define their own symbolic values for their use."},{"line_number":25,"context_line":"PRIORITY_FIRST \u003d 0"},{"line_number":26,"context_line":"PRIORITY_DEFAULT \u003d 55550000"},{"line_number":27,"context_line":"PRIORITY_LAST \u003d 99990000"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa0c359_99e23e2f","line":24,"range":{"start_line":19,"start_character":0,"end_line":24,"end_character":78},"updated":"2018-02-16 14:13:57.000000000","message":"This seems to be candidate material for the callback internal docs IMHO.","commit_id":"f1454f9304bcdcb0ebf631c62f982d3a1ad831be"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"082b7f9f6097127e8ca7262f70b81336a33d425a","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# NOTE(yamahata):smallest one is called first."},{"line_number":19,"context_line":"# DEFAULT and LAST are chosen as big enough, not too big, eye catchy"},{"line_number":20,"context_line":"# and unique/easy for grep. Lasting zero digits are for the usage, like"},{"line_number":21,"context_line":"# PRIORITY_DEFAULT, PRIORITY_DEFAULT + 1, so that human can easily distinguish"},{"line_number":22,"context_line":"# them and it\u0027s friendly for grep."},{"line_number":23,"context_line":"# i.e. 5555, 5556, 5557... vs 55550000, 55550001, 55550002..."},{"line_number":24,"context_line":"# each resources would want to define their own symbolic values for their use."},{"line_number":25,"context_line":"PRIORITY_FIRST \u003d 0"},{"line_number":26,"context_line":"PRIORITY_DEFAULT \u003d 55550000"},{"line_number":27,"context_line":"PRIORITY_LAST \u003d 99990000"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff6b8bd7_90278813","line":24,"range":{"start_line":19,"start_character":0,"end_line":24,"end_character":78},"in_reply_to":"3fa0c359_99e23e2f","updated":"2018-03-06 19:23:38.000000000","message":"agreed ! I\u0027ll add some documentation in separate patch","commit_id":"f1454f9304bcdcb0ebf631c62f982d3a1ad831be"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"736873c801617fcfe8b743174c66918abccfb155","unresolved":false,"context_lines":[{"line_number":24,"context_line":"# each resources would want to define their own symbolic values for their use."},{"line_number":25,"context_line":"PRIORITY_FIRST \u003d 0"},{"line_number":26,"context_line":"PRIORITY_DEFAULT \u003d 55550000"},{"line_number":27,"context_line":"PRIORITY_LAST \u003d 99990000"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# For l3 plugin and flavor"},{"line_number":30,"context_line":"PRIORITY_ROUTER_EXTENDED_ATTRIBUTE \u003d PRIORITY_FIRST"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa0c359_f9ca629f","line":27,"range":{"start_line":27,"start_character":16,"end_line":27,"end_character":24},"updated":"2018-02-16 14:13:57.000000000","message":"I supposed OK, but couldn\u0027t we just use the max val of int?","commit_id":"f1454f9304bcdcb0ebf631c62f982d3a1ad831be"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"082b7f9f6097127e8ca7262f70b81336a33d425a","unresolved":false,"context_lines":[{"line_number":24,"context_line":"# each resources would want to define their own symbolic values for their use."},{"line_number":25,"context_line":"PRIORITY_FIRST \u003d 0"},{"line_number":26,"context_line":"PRIORITY_DEFAULT \u003d 55550000"},{"line_number":27,"context_line":"PRIORITY_LAST \u003d 99990000"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# For l3 plugin and flavor"},{"line_number":30,"context_line":"PRIORITY_ROUTER_EXTENDED_ATTRIBUTE \u003d PRIORITY_FIRST"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff6b8bd7_d05bc084","line":27,"range":{"start_line":27,"start_character":16,"end_line":27,"end_character":24},"in_reply_to":"1f9dbf25_f4183a82","updated":"2018-03-06 19:23:38.000000000","message":"fine with either way, the other thing see with random expressions it would be little hard to track the priority.\n\nPRIORITY_ROUTER_EXTENDED_ATTRIBUTE \u003d PRIORITY_DEFAULT - 200\nPRIORITY_ROUTER_DRIVER \u003d PRIORITY_DEFAULT + 10000\n\nalso sounds little bit weird, but ok with that too","commit_id":"f1454f9304bcdcb0ebf631c62f982d3a1ad831be"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"e44b20a0d7328deb593ae07965f4b2c881eec0a6","unresolved":false,"context_lines":[{"line_number":24,"context_line":"# each resources would want to define their own symbolic values for their use."},{"line_number":25,"context_line":"PRIORITY_FIRST \u003d 0"},{"line_number":26,"context_line":"PRIORITY_DEFAULT \u003d 55550000"},{"line_number":27,"context_line":"PRIORITY_LAST \u003d 99990000"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# For l3 plugin and flavor"},{"line_number":30,"context_line":"PRIORITY_ROUTER_EXTENDED_ATTRIBUTE \u003d PRIORITY_FIRST"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f9dbf25_f4183a82","line":27,"range":{"start_line":27,"start_character":16,"end_line":27,"end_character":24},"in_reply_to":"3fa0c359_f9ca629f","updated":"2018-03-01 09:35:05.000000000","message":"i guess we can just get rid of FIRST and LAST.\nevery subscribers for which their priority is important will likely end up with putting their priority explicitly defined below anyway, right?","commit_id":"f1454f9304bcdcb0ebf631c62f982d3a1ad831be"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"736873c801617fcfe8b743174c66918abccfb155","unresolved":false,"context_lines":[{"line_number":29,"context_line":"# For l3 plugin and flavor"},{"line_number":30,"context_line":"PRIORITY_ROUTER_EXTENDED_ATTRIBUTE \u003d PRIORITY_FIRST"},{"line_number":31,"context_line":"# DEFAULT is reserved for third party which may not know priority yet"},{"line_number":32,"context_line":"PRIORITY_ROUTER_DEFAULT \u003d PRIORITY_DEFAULT"},{"line_number":33,"context_line":"PRIORITY_ROUTER_CONTROLLER \u003d PRIORITY_DEFAULT + 100"},{"line_number":34,"context_line":"PRIORITY_ROUTER_DRIVER \u003d PRIORITY_LAST"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa0c359_9950fed6","line":32,"updated":"2018-02-16 14:13:57.000000000","message":"Maybe others disagree, but IMHO it seems odd that now we need to define all these priorities and deal with them here.","commit_id":"f1454f9304bcdcb0ebf631c62f982d3a1ad831be"}],"neutron_lib/callbacks/priority_group.py":[{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"3061e05dfe450e71b157ed2e85044a708d28b0df","unresolved":false,"context_lines":[{"line_number":22,"context_line":"# them and it\u0027s friendly for grep."},{"line_number":23,"context_line":"# i.e. 5555, 5556, 5557... vs 55550000, 55550001, 55550002..."},{"line_number":24,"context_line":"# each resources would want to define their own symbolic values for their use."},{"line_number":25,"context_line":"PRIORITY_FIRST \u003d 0"},{"line_number":26,"context_line":"PRIORITY_DEFAULT \u003d 55550000"},{"line_number":27,"context_line":"PRIORITY_LAST \u003d 99990000"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"df7087c5_ac1d57be","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":18},"updated":"2018-03-12 01:52:17.000000000","message":"@Manjeet, please address the comments in previous patch.","commit_id":"c52a89a5ac83746c09af7383b1079fb892fc6763"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"3061e05dfe450e71b157ed2e85044a708d28b0df","unresolved":false,"context_lines":[{"line_number":24,"context_line":"# each resources would want to define their own symbolic values for their use."},{"line_number":25,"context_line":"PRIORITY_FIRST \u003d 0"},{"line_number":26,"context_line":"PRIORITY_DEFAULT \u003d 55550000"},{"line_number":27,"context_line":"PRIORITY_LAST \u003d 99990000"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# For l3 plugin and flavor"},{"line_number":30,"context_line":"PRIORITY_ROUTER_EXTENDED_ATTRIBUTE \u003d PRIORITY_FIRST"}],"source_content_type":"text/x-python","patch_set":9,"id":"df7087c5_4c7a7bf1","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":24},"updated":"2018-03-12 01:52:17.000000000","message":"ditto.","commit_id":"c52a89a5ac83746c09af7383b1079fb892fc6763"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"336cee20d20461a82f47cc23ee1832a44a324bec","unresolved":false,"context_lines":[{"line_number":23,"context_line":"# PRIORITY_DEFAULT, PRIORITY_DEFAULT + 1, so that human can easily distinguish"},{"line_number":24,"context_line":"# them and it\u0027s friendly for grep."},{"line_number":25,"context_line":"# i.e. 5555, 5556, 5557... vs 55550000, 55550001, 55550002..."},{"line_number":26,"context_line":"# each resources would want to define their own symbolic values for their use."},{"line_number":27,"context_line":"PRIORITY_FIRST \u003d 0"},{"line_number":28,"context_line":"PRIORITY_LAST \u003d sys.maxint"},{"line_number":29,"context_line":"PRIORITY_DEFAULT \u003d (PRIORITY_LAST)/2"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# For l3 plugin and flavor"}],"source_content_type":"text/x-python","patch_set":13,"id":"df7087c5_dfdeefd8","line":29,"range":{"start_line":26,"start_character":0,"end_line":29,"end_character":36},"updated":"2018-03-14 01:36:39.000000000","message":"please refer to the previous discussion.\ndelete FIRST and DEFAULT.\nand have PRIORITY_DEFAULT meaning value. please read the above comment.","commit_id":"b9853b28ff0ceaa8480c706a8a39a395f7caf9e5"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"c09aa7ed8e86d9a8bf346730deed6cdbda209d86","unresolved":false,"context_lines":[{"line_number":23,"context_line":"# can be used for reducing that number for higher priority."},{"line_number":24,"context_line":"# each resources would want to define their own symbolic values for their use."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"PRIORITY_DEFAULT \u003d (sys.maxsize)/2"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# For l3 plugin and flavor"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_02f4b0ce","line":26,"range":{"start_line":26,"start_character":18,"end_line":26,"end_character":32},"updated":"2018-03-16 22:50:11.000000000","message":"using maxsize instead of maxint because its python2 and 3 compatible","commit_id":"4f17170f8b492cb629e7e2304d181691444d5579"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"8f0364c7b81cd5cad0569434761dd2dba1285d09","unresolved":false,"context_lines":[{"line_number":23,"context_line":"# can be used for reducing that number for higher priority."},{"line_number":24,"context_line":"# each resources would want to define their own symbolic values for their use."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"PRIORITY_DEFAULT \u003d (sys.maxsize)/2"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# For l3 plugin and flavor"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_a86123d6","line":26,"range":{"start_line":26,"start_character":32,"end_line":26,"end_character":33},"updated":"2018-03-17 01:11:06.000000000","message":"with python3, the result is floating point.","commit_id":"4f17170f8b492cb629e7e2304d181691444d5579"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4716b7f36e5110e87405eea82d832b5ad79e1081","unresolved":false,"context_lines":[{"line_number":23,"context_line":"# can be used for reducing that number for higher priority."},{"line_number":24,"context_line":"# each resources would want to define their own symbolic values for their use."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"PRIORITY_DEFAULT \u003d (sys.maxsize)/2"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# For l3 plugin and flavor"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_4d8659de","line":26,"range":{"start_line":26,"start_character":18,"end_line":26,"end_character":32},"in_reply_to":"df7087c5_02f4b0ce","updated":"2018-03-17 00:45:15.000000000","message":"sys.maxsize is platform dependent. 32bit, 64bit.\nso it\u0027s unfriendly for debug.\nlog message will differ unnecessarily.","commit_id":"4f17170f8b492cb629e7e2304d181691444d5579"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"47ea15b35731d19ff372fa628355a8a311f9180b","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# For l3 plugin and flavor"},{"line_number":30,"context_line":"PRIORITY_ROUTER_EXTENDED_ATTRIBUTE \u003d PRIORITY_DEFAULT/100"},{"line_number":31,"context_line":"# DEFAULT is reserved for third party which may not know priority yet"},{"line_number":32,"context_line":"PRIORITY_ROUTER_DEFAULT \u003d PRIORITY_DEFAULT"},{"line_number":33,"context_line":"PRIORITY_ROUTER_CONTROLLER \u003d PRIORITY_DEFAULT + 100"}],"source_content_type":"text/x-python","patch_set":16,"id":"df7087c5_83abb873","line":30,"range":{"start_line":30,"start_character":53,"end_line":30,"end_character":54},"updated":"2018-03-20 00:30:04.000000000","message":"this results in floating point value with python3.","commit_id":"e7dd1f83ecfc4a6f5da59bf878c60e9619c2bf48"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"dcb21193624f86f6f5287a20fb6a08636cda4c88","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# For l3 plugin and flavor"},{"line_number":30,"context_line":"PRIORITY_ROUTER_EXTENDED_ATTRIBUTE \u003d PRIORITY_DEFAULT/100"},{"line_number":31,"context_line":"# DEFAULT is reserved for third party which may not know priority yet"},{"line_number":32,"context_line":"PRIORITY_ROUTER_DEFAULT \u003d PRIORITY_DEFAULT"},{"line_number":33,"context_line":"PRIORITY_ROUTER_CONTROLLER \u003d PRIORITY_DEFAULT + 100"}],"source_content_type":"text/x-python","patch_set":17,"id":"df7087c5_c39aba60","line":30,"range":{"start_line":30,"start_character":53,"end_line":30,"end_character":57},"updated":"2018-03-22 15:59:28.000000000","message":"/100 seems to cause future potential issue due to truediv and floatingpoint.\nSo -1, -10, -100 would be better than /10, /100.\nPRIORITY_DEFAULT happens to be even at the moment. but we can easily avoid to depend on it.\n\nIf you really want /100, \"//\"(floordiv) would be better to avoid future potential floatingpoint issue.(too pedantic?)\n\n\nhow about the following?\n\nPRIORITY_DEFAULT \u003d 55551000\n\nPRIORITY_DEFAULT - 10\nPRIORITY_DEFAULT\nPRIORITY_DEFAULT + 10\nPRIORITY_DEFAULT + 20\n...","commit_id":"b78c8372763721339c1f4fc38ccd8d34a14e0b6c"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"51547191119c095ed788b20de35d943c31222a76","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# For l3 plugin and flavor"},{"line_number":30,"context_line":"PRIORITY_ROUTER_EXTENDED_ATTRIBUTE \u003d PRIORITY_DEFAULT/100"},{"line_number":31,"context_line":"# DEFAULT is reserved for third party which may not know priority yet"},{"line_number":32,"context_line":"PRIORITY_ROUTER_DEFAULT \u003d PRIORITY_DEFAULT"},{"line_number":33,"context_line":"PRIORITY_ROUTER_CONTROLLER \u003d PRIORITY_DEFAULT + 100"}],"source_content_type":"text/x-python","patch_set":17,"id":"df7087c5_7e5d8545","line":30,"range":{"start_line":30,"start_character":53,"end_line":30,"end_character":57},"in_reply_to":"df7087c5_c39aba60","updated":"2018-03-22 16:24:01.000000000","message":"Done","commit_id":"b78c8372763721339c1f4fc38ccd8d34a14e0b6c"}],"neutron_lib/callbacks/registry.py":[{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"1aff8fedf7dfcbf1477fbbc9ba7e3c8c2762b663","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def subscribe(callback, resource, event,"},{"line_number":36,"context_line":"              priority\u003dpriority_group.PRIORITY_DEFAULT):"},{"line_number":37,"context_line":"    _get_callback_manager().subscribe(callback, resource, event)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def unsubscribe(callback, resource, event):"}],"source_content_type":"text/x-python","patch_set":7,"id":"df7087c5_f3505d35","line":37,"range":{"start_line":37,"start_character":63,"end_line":37,"end_character":64},"updated":"2018-03-07 19:46:23.000000000","message":"priority.","commit_id":"6754ae9e66fd7be4cf56a4bf9650092e221f2994"}],"neutron_lib/tests/unit/callbacks/test_manager.py":[{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"3061e05dfe450e71b157ed2e85044a708d28b0df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"df7087c5_8c50935f","updated":"2018-03-12 01:52:17.000000000","message":"@Manjeet, more tests need to be added.\nThe current existing test cases cover only one without priority.\n\n- test cases that exercise priority and callback order.\n- test cases with the mix of priority and default priority.\n- test cases with only priority.\n- test cases that subscribe/delete with priority\netc.","commit_id":"c52a89a5ac83746c09af7383b1079fb892fc6763"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"2b72c692d4ea649ab914747c764eb0cf56112827","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"df7087c5_bf8f7bcb","updated":"2018-03-14 01:41:45.000000000","message":"more test cases are needed.","commit_id":"b9853b28ff0ceaa8480c706a8a39a395f7caf9e5"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4716b7f36e5110e87405eea82d832b5ad79e1081","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        self.assertEqual(0, len(self.manager._callbacks))"},{"line_number":277,"context_line":"        self.assertEqual(0, len(self.manager._index))"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def test_callback_priority(self):"},{"line_number":280,"context_line":"        pri_first \u003d priority_group.PRIORITY_DEFAULT - 100"},{"line_number":281,"context_line":"        pri_last \u003d priority_group.PRIORITY_DEFAULT + 100"},{"line_number":282,"context_line":"        # lowest priority value should be first in the _callbacks"},{"line_number":283,"context_line":"        self.manager.subscribe(callback_1, \u0027my-resource\u0027, \u0027my-event\u0027)"},{"line_number":284,"context_line":"        self.manager.subscribe(callback_2, \u0027my-resource\u0027,"},{"line_number":285,"context_line":"                               \u0027my-event\u0027, pri_last)"},{"line_number":286,"context_line":"        self.manager.subscribe(callback_3, \u0027my-resource\u0027,"},{"line_number":287,"context_line":"                               \u0027my-event\u0027, pri_first)"},{"line_number":288,"context_line":"        callbacks \u003d self.manager._callbacks[\u0027my-resource\u0027][\u0027my-event\u0027]"},{"line_number":289,"context_line":"        # callbacks should be sorted based on priority for resource and event"},{"line_number":290,"context_line":"        self.assertEqual(3, len(callbacks))"},{"line_number":291,"context_line":"        self.assertEqual(pri_first, callbacks[0][0])"},{"line_number":292,"context_line":"        self.assertEqual(priority_group.PRIORITY_DEFAULT, callbacks[1][0])"},{"line_number":293,"context_line":"        self.assertEqual(pri_last, callbacks[2][0])"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def test_delete_callback(self):"},{"line_number":296,"context_line":"        self.manager.subscribe(callback_1, \u0027my-resource\u0027, \u0027my-event\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_6deebd8c","line":293,"range":{"start_line":279,"start_character":0,"end_line":293,"end_character":51},"updated":"2018-03-17 00:45:15.000000000","message":"this test itself is okay.\nyet another test is needed.\ncall notify and check the order.","commit_id":"4f17170f8b492cb629e7e2304d181691444d5579"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"2b7323a043fb0d9466f6872c3cce23d50f02c42f","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        self.assertEqual(0, len(self.manager._callbacks))"},{"line_number":277,"context_line":"        self.assertEqual(0, len(self.manager._index))"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def test_callback_priority(self):"},{"line_number":280,"context_line":"        pri_first \u003d priority_group.PRIORITY_DEFAULT - 100"},{"line_number":281,"context_line":"        pri_last \u003d priority_group.PRIORITY_DEFAULT + 100"},{"line_number":282,"context_line":"        # lowest priority value should be first in the _callbacks"},{"line_number":283,"context_line":"        self.manager.subscribe(callback_1, \u0027my-resource\u0027, \u0027my-event\u0027)"},{"line_number":284,"context_line":"        self.manager.subscribe(callback_2, \u0027my-resource\u0027,"},{"line_number":285,"context_line":"                               \u0027my-event\u0027, pri_last)"},{"line_number":286,"context_line":"        self.manager.subscribe(callback_3, \u0027my-resource\u0027,"},{"line_number":287,"context_line":"                               \u0027my-event\u0027, pri_first)"},{"line_number":288,"context_line":"        callbacks \u003d self.manager._callbacks[\u0027my-resource\u0027][\u0027my-event\u0027]"},{"line_number":289,"context_line":"        # callbacks should be sorted based on priority for resource and event"},{"line_number":290,"context_line":"        self.assertEqual(3, len(callbacks))"},{"line_number":291,"context_line":"        self.assertEqual(pri_first, callbacks[0][0])"},{"line_number":292,"context_line":"        self.assertEqual(priority_group.PRIORITY_DEFAULT, callbacks[1][0])"},{"line_number":293,"context_line":"        self.assertEqual(pri_last, callbacks[2][0])"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def test_delete_callback(self):"},{"line_number":296,"context_line":"        self.manager.subscribe(callback_1, \u0027my-resource\u0027, \u0027my-event\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_81c17983","line":293,"range":{"start_line":279,"start_character":0,"end_line":293,"end_character":51},"in_reply_to":"df7087c5_6deebd8c","updated":"2018-03-20 00:01:12.000000000","message":"I don\u0027t get how notify is related to priority, do you mean subscribe from registry tests ?","commit_id":"4f17170f8b492cb629e7e2304d181691444d5579"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4716b7f36e5110e87405eea82d832b5ad79e1081","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        self.assertEqual(priority_group.PRIORITY_DEFAULT, callbacks[1][0])"},{"line_number":293,"context_line":"        self.assertEqual(pri_last, callbacks[2][0])"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def test_delete_callback(self):"},{"line_number":296,"context_line":"        self.manager.subscribe(callback_1, \u0027my-resource\u0027, \u0027my-event\u0027)"},{"line_number":297,"context_line":"        callback_id \u003d self.manager._find(callback_1)"},{"line_number":298,"context_line":"        callbacks \u003d self.manager._callbacks[\u0027my-resource\u0027][\u0027my-event\u0027]"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_4dedf989","line":295,"range":{"start_line":295,"start_character":0,"end_line":295,"end_character":35},"updated":"2018-03-17 00:45:15.000000000","message":"ditto.","commit_id":"4f17170f8b492cb629e7e2304d181691444d5579"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4716b7f36e5110e87405eea82d832b5ad79e1081","unresolved":false,"context_lines":[{"line_number":297,"context_line":"        callback_id \u003d self.manager._find(callback_1)"},{"line_number":298,"context_line":"        callbacks \u003d self.manager._callbacks[\u0027my-resource\u0027][\u0027my-event\u0027]"},{"line_number":299,"context_line":"        self.assertEqual(1, len(callbacks))"},{"line_number":300,"context_line":"        self.manager._del_callback(callbacks, callback_id)"},{"line_number":301,"context_line":"        self.assertEqual([],"},{"line_number":302,"context_line":"                         self.manager._callbacks[\u0027my-resource\u0027][\u0027my-event\u0027])"},{"line_number":303,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_2de8c57a","line":300,"range":{"start_line":300,"start_character":21,"end_line":300,"end_character":58},"updated":"2018-03-17 00:45:15.000000000","message":"why not unsubscribe?","commit_id":"4f17170f8b492cb629e7e2304d181691444d5579"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"2b7323a043fb0d9466f6872c3cce23d50f02c42f","unresolved":false,"context_lines":[{"line_number":297,"context_line":"        callback_id \u003d self.manager._find(callback_1)"},{"line_number":298,"context_line":"        callbacks \u003d self.manager._callbacks[\u0027my-resource\u0027][\u0027my-event\u0027]"},{"line_number":299,"context_line":"        self.assertEqual(1, len(callbacks))"},{"line_number":300,"context_line":"        self.manager._del_callback(callbacks, callback_id)"},{"line_number":301,"context_line":"        self.assertEqual([],"},{"line_number":302,"context_line":"                         self.manager._callbacks[\u0027my-resource\u0027][\u0027my-event\u0027])"},{"line_number":303,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_5ecee083","line":300,"range":{"start_line":300,"start_character":21,"end_line":300,"end_character":58},"in_reply_to":"df7087c5_2de8c57a","updated":"2018-03-20 00:01:12.000000000","message":"Done ! and on that _del_callback call can be asserted.","commit_id":"4f17170f8b492cb629e7e2304d181691444d5579"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"47ea15b35731d19ff372fa628355a8a311f9180b","unresolved":false,"context_lines":[{"line_number":300,"context_line":"        self.assertEqual(1, len(callbacks))"},{"line_number":301,"context_line":"        self.manager.unsubscribe(callback_1, \u0027my-resource\u0027, \u0027my-event\u0027)"},{"line_number":302,"context_line":"        mock_cb.assert_called_once_with(callbacks, callback_id)"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    @mock.patch(\"neutron_lib.callbacks.manager.LOG\")"},{"line_number":305,"context_line":"    def test__notify_loop_skip_log_errors(self, _logger):"},{"line_number":306,"context_line":"        self.manager.subscribe("},{"line_number":307,"context_line":"            callback_raise, resources.PORT, events.BEFORE_CREATE)"}],"source_content_type":"text/x-python","patch_set":16,"id":"df7087c5_632f84f6","line":304,"range":{"start_line":303,"start_character":0,"end_line":304,"end_character":1},"updated":"2018-03-20 00:30:04.000000000","message":"please add testcases.\n- add 3 callbacks\n- notify\n- check order\n- unsubscribe one of it.\n- notify\n- check calling order","commit_id":"e7dd1f83ecfc4a6f5da59bf878c60e9619c2bf48"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"dcb21193624f86f6f5287a20fb6a08636cda4c88","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        self.manager.subscribe(callback_2, \u0027my-resource\u0027, \u0027my-event\u0027, PRI_HIGH)"},{"line_number":313,"context_line":"        self.manager.subscribe(callback_3, \u0027my-resource\u0027, \u0027my-event\u0027, PRI_LOW)"},{"line_number":314,"context_line":"        self.assertEqual("},{"line_number":315,"context_line":"            3, len(self.manager._callbacks[\u0027my-resource\u0027][\u0027my-event\u0027]))"},{"line_number":316,"context_line":"        self.manager.unsubscribe(callback_3, \u0027my-resource\u0027, \u0027my-event\u0027)"},{"line_number":317,"context_line":"        self.manager._notify_loop(\u0027my-resource\u0027, \u0027my-event\u0027, mock.ANY)"},{"line_number":318,"context_line":"        # callback_3 should be deleted"}],"source_content_type":"text/x-python","patch_set":17,"id":"df7087c5_de7611a5","line":315,"range":{"start_line":315,"start_character":71,"end_line":315,"end_character":71},"updated":"2018-03-22 15:59:28.000000000","message":"notify and check if the three callbacks are called in the specified order.","commit_id":"b78c8372763721339c1f4fc38ccd8d34a14e0b6c"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"51547191119c095ed788b20de35d943c31222a76","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        self.manager.subscribe(callback_2, \u0027my-resource\u0027, \u0027my-event\u0027, PRI_HIGH)"},{"line_number":313,"context_line":"        self.manager.subscribe(callback_3, \u0027my-resource\u0027, \u0027my-event\u0027, PRI_LOW)"},{"line_number":314,"context_line":"        self.assertEqual("},{"line_number":315,"context_line":"            3, len(self.manager._callbacks[\u0027my-resource\u0027][\u0027my-event\u0027]))"},{"line_number":316,"context_line":"        self.manager.unsubscribe(callback_3, \u0027my-resource\u0027, \u0027my-event\u0027)"},{"line_number":317,"context_line":"        self.manager._notify_loop(\u0027my-resource\u0027, \u0027my-event\u0027, mock.ANY)"},{"line_number":318,"context_line":"        # callback_3 should be deleted"}],"source_content_type":"text/x-python","patch_set":17,"id":"df7087c5_5e2521c1","line":315,"range":{"start_line":315,"start_character":71,"end_line":315,"end_character":71},"in_reply_to":"df7087c5_de7611a5","updated":"2018-03-22 16:24:01.000000000","message":"it\u0027ll use notify but its already checking order L321-L324","commit_id":"b78c8372763721339c1f4fc38ccd8d34a14e0b6c"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"dcb21193624f86f6f5287a20fb6a08636cda4c88","unresolved":false,"context_lines":[{"line_number":314,"context_line":"        self.assertEqual("},{"line_number":315,"context_line":"            3, len(self.manager._callbacks[\u0027my-resource\u0027][\u0027my-event\u0027]))"},{"line_number":316,"context_line":"        self.manager.unsubscribe(callback_3, \u0027my-resource\u0027, \u0027my-event\u0027)"},{"line_number":317,"context_line":"        self.manager._notify_loop(\u0027my-resource\u0027, \u0027my-event\u0027, mock.ANY)"},{"line_number":318,"context_line":"        # callback_3 should be deleted"},{"line_number":319,"context_line":"        self.assertEqual("},{"line_number":320,"context_line":"            2, len(self.manager._callbacks[\u0027my-resource\u0027][\u0027my-event\u0027]))"}],"source_content_type":"text/x-python","patch_set":17,"id":"df7087c5_1e47a94e","line":317,"range":{"start_line":317,"start_character":0,"end_line":317,"end_character":70},"updated":"2018-03-22 15:59:28.000000000","message":"notify and check if the callback is called in the specified order.","commit_id":"b78c8372763721339c1f4fc38ccd8d34a14e0b6c"}],"neutron_lib/tests/unit/callbacks/test_registry.py":[{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"a1e0c0aee8d19832e4c7753d59d2c1d6dd110e10","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"df7087c5_0b20ad47","updated":"2018-03-13 21:40:26.000000000","message":"I\u0027ve added mock.patch so, actual callback_manager was needed to write test case to check the order of callbacks based on priority. other way I thought of was using a another _callback_manager for mock but to avoid any confusion did this way.","commit_id":"ad03f4952716fb04e0e3b3695ac0e047755c29e8"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"2b72c692d4ea649ab914747c764eb0cf56112827","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def setUp(self):"},{"line_number":114,"context_line":"        super(TestCallbackRegistryDispatching, self).setUp()"},{"line_number":115,"context_line":"        self.callback_manager \u003d manager.CallbacksManager()"},{"line_number":116,"context_line":"        self.registry_fixture \u003d fixture.CallbackRegistryFixture("},{"line_number":117,"context_line":"            callback_manager\u003dself.callback_manager)"},{"line_number":118,"context_line":"        self.useFixture(self.registry_fixture)"}],"source_content_type":"text/x-python","patch_set":13,"id":"df7087c5_3f9ccb0c","line":115,"range":{"start_line":115,"start_character":8,"end_line":115,"end_character":58},"updated":"2018-03-14 01:41:45.000000000","message":"This testcases tests registry. not callback manager.\n\nfor callback manager, we should have its own test cases.","commit_id":"b9853b28ff0ceaa8480c706a8a39a395f7caf9e5"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"2b72c692d4ea649ab914747c764eb0cf56112827","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        self.assertEqual(3, len(callbacks))"},{"line_number":136,"context_line":"        self.assertEqual(pri_first, callbacks[0][0])"},{"line_number":137,"context_line":"        self.assertEqual(priority_group.PRIORITY_DEFAULT, callbacks[1][0])"},{"line_number":138,"context_line":"        self.assertEqual(pri_last, callbacks[2][0])"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    @mock.patch(\u0027neutron_lib.callbacks.manager.CallbacksManager.unsubscribe\u0027)"},{"line_number":141,"context_line":"    def test_unsubscribe(self, mockcm):"}],"source_content_type":"text/x-python","patch_set":13,"id":"df7087c5_1f8787b7","line":138,"range":{"start_line":138,"start_character":51,"end_line":138,"end_character":51},"updated":"2018-03-14 01:41:45.000000000","message":"more combination is necessary.\nsubscribe, and then unsubscribe and test the pirority is still valid.","commit_id":"b9853b28ff0ceaa8480c706a8a39a395f7caf9e5"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4716b7f36e5110e87405eea82d832b5ad79e1081","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"class CallBacksManagerTestCase(base.BaseTestCase):"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def test_decorated_inst_method_receives(self):"},{"line_number":74,"context_line":"        i1 \u003d ObjectWithDecoratedCallback()"},{"line_number":75,"context_line":"        registry.notify(resources.PORT, events.BEFORE_CREATE, self)"},{"line_number":76,"context_line":"        self.assertEqual(0, i1.counter)"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_6dbc7d6c","line":73,"range":{"start_line":73,"start_character":4,"end_line":73,"end_character":50},"updated":"2018-03-17 00:45:15.000000000","message":"yet another test is needed for receive with explicit priority.","commit_id":"4f17170f8b492cb629e7e2304d181691444d5579"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4716b7f36e5110e87405eea82d832b5ad79e1081","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            callback_manager\u003dself.callback_manager)"},{"line_number":116,"context_line":"        self.useFixture(self.registry_fixture)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def test_subscribe(self):"},{"line_number":119,"context_line":"        registry.subscribe(my_callback, \u0027my-resource\u0027, \u0027my-event\u0027)"},{"line_number":120,"context_line":"        self.callback_manager.subscribe.assert_called_with("},{"line_number":121,"context_line":"            my_callback, \u0027my-resource\u0027, \u0027my-event\u0027,"},{"line_number":122,"context_line":"            priority_group.PRIORITY_DEFAULT)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def test_unsubscribe(self):"},{"line_number":125,"context_line":"        registry.unsubscribe(my_callback, \u0027my-resource\u0027, \u0027my-event\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_adfb7545","line":122,"range":{"start_line":118,"start_character":0,"end_line":122,"end_character":44},"updated":"2018-03-17 00:45:15.000000000","message":"we need to test subscribe with explicit priority.","commit_id":"4f17170f8b492cb629e7e2304d181691444d5579"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"51547191119c095ed788b20de35d943c31222a76","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            callback_manager\u003dself.callback_manager)"},{"line_number":116,"context_line":"        self.useFixture(self.registry_fixture)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def test_subscribe(self):"},{"line_number":119,"context_line":"        registry.subscribe(my_callback, \u0027my-resource\u0027, \u0027my-event\u0027)"},{"line_number":120,"context_line":"        self.callback_manager.subscribe.assert_called_with("},{"line_number":121,"context_line":"            my_callback, \u0027my-resource\u0027, \u0027my-event\u0027,"},{"line_number":122,"context_line":"            priority_group.PRIORITY_DEFAULT)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def test_unsubscribe(self):"},{"line_number":125,"context_line":"        registry.unsubscribe(my_callback, \u0027my-resource\u0027, \u0027my-event\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_a3b4bc36","line":122,"range":{"start_line":118,"start_character":0,"end_line":122,"end_character":44},"in_reply_to":"df7087c5_adfb7545","updated":"2018-03-22 16:24:01.000000000","message":"Done","commit_id":"4f17170f8b492cb629e7e2304d181691444d5579"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"47ea15b35731d19ff372fa628355a8a311f9180b","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        super(AnotherObjectWithDecoratedCallback, self).__init__()"},{"line_number":53,"context_line":"        self.counter2 \u003d 0"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @registry.receives(resources.NETWORK, [events.AFTER_DELETE], 20)"},{"line_number":56,"context_line":"    def callback2(self, *args, **kwargs):"},{"line_number":57,"context_line":"        self.counter2 +\u003d 1"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"df7087c5_03b1e8e1","line":55,"range":{"start_line":55,"start_character":64,"end_line":55,"end_character":67},"updated":"2018-03-20 00:30:04.000000000","message":"please introduce symbolic value for priority.","commit_id":"e7dd1f83ecfc4a6f5da59bf878c60e9619c2bf48"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"47ea15b35731d19ff372fa628355a8a311f9180b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            # subscribes to 2 events, so we expect 4 subscribes"},{"line_number":96,"context_line":"            priority_call \u003d [mock.call("},{"line_number":97,"context_line":"                callback.callback2,"},{"line_number":98,"context_line":"                resources.NETWORK, events.AFTER_DELETE, 20)]"},{"line_number":99,"context_line":"            self.assertEqual(4, len(sub.mock_calls))"},{"line_number":100,"context_line":"            sub.assert_has_calls(priority_call)"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"df7087c5_23b66cdb","line":98,"range":{"start_line":98,"start_character":56,"end_line":98,"end_character":58},"updated":"2018-03-20 00:30:04.000000000","message":"ditto.","commit_id":"e7dd1f83ecfc4a6f5da59bf878c60e9619c2bf48"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"47ea15b35731d19ff372fa628355a8a311f9180b","unresolved":false,"context_lines":[{"line_number":126,"context_line":"            priority_group.PRIORITY_DEFAULT)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def test_subscribe_explicit_priority(self):"},{"line_number":129,"context_line":"        registry.subscribe(my_callback, \u0027my-resource\u0027, \u0027my-event\u0027, 10)"},{"line_number":130,"context_line":"        self.callback_manager.subscribe.assert_called_with("},{"line_number":131,"context_line":"            my_callback, \u0027my-resource\u0027, \u0027my-event\u0027, 10)"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"df7087c5_c3ca104e","line":129,"range":{"start_line":129,"start_character":67,"end_line":129,"end_character":69},"updated":"2018-03-20 00:30:04.000000000","message":"ditto.","commit_id":"e7dd1f83ecfc4a6f5da59bf878c60e9619c2bf48"}]}
