)]}'
{"neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"98204c0d08d2855226bcacc811b981fe0e590232","unresolved":false,"context_lines":[{"line_number":918,"context_line":"            # As the greenthread should not yield between these"},{"line_number":919,"context_line":"            # two statements, this will should be thread-safe."},{"line_number":920,"context_line":"            updated_devices_copy \u003d self.updated_devices.copy()"},{"line_number":921,"context_line":"            self.updated_devices.clear()"},{"line_number":922,"context_line":"            try:"},{"line_number":923,"context_line":"                device_info \u003d self.scan_devices(devices, updated_devices_copy)"},{"line_number":924,"context_line":"                if self._device_info_has_changes(device_info):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2B0hc%3D","line":921,"updated":"2014-03-24 02:17:11.000000000","message":"why being different from OVS and copy() the set?","commit_id":"cbc1479e88b05147746027c5d103944e7a1efab2"},{"author":{"_account_id":2733,"name":"Darragh O\u0027Reilly","email":"doreilly@suse.com","username":"darragh-oreilly"},"change_message_id":"5bfbda8312f4e34326117d61118106d6a10936b3","unresolved":false,"context_lines":[{"line_number":918,"context_line":"            # As the greenthread should not yield between these"},{"line_number":919,"context_line":"            # two statements, this will should be thread-safe."},{"line_number":920,"context_line":"            updated_devices_copy \u003d self.updated_devices.copy()"},{"line_number":921,"context_line":"            self.updated_devices.clear()"},{"line_number":922,"context_line":"            try:"},{"line_number":923,"context_line":"                device_info \u003d self.scan_devices(devices, updated_devices_copy)"},{"line_number":924,"context_line":"                if self._device_info_has_changes(device_info):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2Byto%3D","line":921,"in_reply_to":"AAAAWH%2F%2B0hc%3D","updated":"2014-03-24 10:26:40.000000000","message":"I will change it so it corresponds to the ovs-agent. See the comments in \nhttps://review.openstack.org/#/c/61964/14/neutron/plugins/openvswitch/agent/ovs_neutron_agent.py","commit_id":"cbc1479e88b05147746027c5d103944e7a1efab2"},{"author":{"_account_id":2733,"name":"Darragh O\u0027Reilly","email":"doreilly@suse.com","username":"darragh-oreilly"},"change_message_id":"5bb55d7075093b9aacbc610a04f39736834fe454","unresolved":false,"context_lines":[{"line_number":918,"context_line":"            # As the greenthread should not yield between these"},{"line_number":919,"context_line":"            # two statements, this will should be thread-safe."},{"line_number":920,"context_line":"            updated_devices_copy \u003d self.updated_devices.copy()"},{"line_number":921,"context_line":"            self.updated_devices.clear()"},{"line_number":922,"context_line":"            try:"},{"line_number":923,"context_line":"                device_info \u003d self.scan_devices(devices, updated_devices_copy)"},{"line_number":924,"context_line":"                if self._device_info_has_changes(device_info):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2Bx3g%3D","line":921,"in_reply_to":"AAAAWH%2F%2Byto%3D","updated":"2014-03-24 12:48:21.000000000","message":"Done","commit_id":"cbc1479e88b05147746027c5d103944e7a1efab2"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"0dd14238e4264e4c67457b77febe5d366237ba46","unresolved":false,"context_lines":[{"line_number":948,"context_line":"    def daemon_loop(self):"},{"line_number":949,"context_line":"        sync \u003d True"},{"line_number":950,"context_line":"        devices \u003d set()"},{"line_number":951,"context_line":"        LOG.info(_(\"LinuxBridge Agent RPC Daemon Started!\"))"},{"line_number":952,"context_line":""},{"line_number":953,"context_line":"        while True:"},{"line_number":954,"context_line":"            start \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAXX%2F%2F9EA%3D","line":951,"updated":"2014-04-25 03:19:11.000000000","message":"Unrelated change","commit_id":"ed1041c50192b4dbe4a8127f065a7c381d79ae97"},{"author":{"_account_id":2733,"name":"Darragh O\u0027Reilly","email":"doreilly@suse.com","username":"darragh-oreilly"},"change_message_id":"deded96bc94e5dacde9e8002fe29481af6d78542","unresolved":false,"context_lines":[{"line_number":948,"context_line":"    def daemon_loop(self):"},{"line_number":949,"context_line":"        sync \u003d True"},{"line_number":950,"context_line":"        devices \u003d set()"},{"line_number":951,"context_line":"        LOG.info(_(\"LinuxBridge Agent RPC Daemon Started!\"))"},{"line_number":952,"context_line":""},{"line_number":953,"context_line":"        while True:"},{"line_number":954,"context_line":"            start \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAXX%2F%2FweQ%3D","line":951,"in_reply_to":"AAAAXX%2F%2F9EA%3D","updated":"2014-04-28 07:46:24.000000000","message":"sorry, I know I made this mistake before - it\u0027s hard to see a little red \u0027-\u0027 on a black background in git-diff.","commit_id":"ed1041c50192b4dbe4a8127f065a7c381d79ae97"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"df5994ce49b098a9296b444927ffe72114634187","unresolved":false,"context_lines":[{"line_number":677,"context_line":"        # notifications there is no guarantee the notifications are"},{"line_number":678,"context_line":"        # processed in the same order as the relevant API requests."},{"line_number":679,"context_line":"        self.agent.updated_devices.add(tap_name)"},{"line_number":680,"context_line":"        LOG.debug(_(\"port_update RPC received for port: %s\"), port_id)"},{"line_number":681,"context_line":""},{"line_number":682,"context_line":"    def fdb_add(self, context, fdb_entries):"},{"line_number":683,"context_line":"        LOG.debug(_(\"fdb_add received\"))"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ae5cdf2_6bf0b6c9","line":680,"updated":"2014-06-18 20:49:57.000000000","message":"I don\u0027t think we are translating debug messages anymore","commit_id":"ece14aab5836949faa5be6fb872840367423a57c"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"fa576a3066568cce15c0c0db4001365e9a370101","unresolved":false,"context_lines":[{"line_number":677,"context_line":"        # notifications there is no guarantee the notifications are"},{"line_number":678,"context_line":"        # processed in the same order as the relevant API requests."},{"line_number":679,"context_line":"        self.agent.updated_devices.add(tap_name)"},{"line_number":680,"context_line":"        LOG.debug(_(\"port_update RPC received for port: %s\"), port_id)"},{"line_number":681,"context_line":""},{"line_number":682,"context_line":"    def fdb_add(self, context, fdb_entries):"},{"line_number":683,"context_line":"        LOG.debug(_(\"fdb_add received\"))"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ae5cdf2_e9fd403c","line":680,"updated":"2014-06-20 21:41:49.000000000","message":"This is something that is up for debate once the oslo team finishes some updates. For consistency with the rest of the file, I think this usage is acceptable.","commit_id":"ece14aab5836949faa5be6fb872840367423a57c"}],"neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"3611974e7ae1a5beeca77f240513ef6826553bd3","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"                with testtools.ExpectedException(ValueError):"},{"line_number":190,"context_line":"                    agent.daemon_loop()"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"                # Check that the originals {tap1,tap2} have been restored"},{"line_number":193,"context_line":"                # and the new updates {tap3, tap4} have not been overwritten."},{"line_number":194,"context_line":"                self.assertEqual(set([\u0027tap1\u0027, \u0027tap2\u0027, \u0027tap3\u0027, \u0027tap4\u0027]),"}],"source_content_type":"text/x-python","patch_set":11,"id":"7adec928_f6519962","line":191,"updated":"2014-05-20 02:11:25.000000000","message":"189-190 could be replaced with:\n\nself.assertRaises(ValueError, agent.daemon_loop)","commit_id":"6adbff74ca823ddf8f4472de7eae64d3e6ff3d2c"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"ecc72590ebc93966984f9606f9d7c3c23f0126d9","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"                with testtools.ExpectedException(ValueError):"},{"line_number":190,"context_line":"                    agent.daemon_loop()"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"                # Check that the originals {tap1,tap2} have been restored"},{"line_number":193,"context_line":"                # and the new updates {tap3, tap4} have not been overwritten."},{"line_number":194,"context_line":"                self.assertEqual(set([\u0027tap1\u0027, \u0027tap2\u0027, \u0027tap3\u0027, \u0027tap4\u0027]),"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_0a942789","line":191,"updated":"2014-06-05 17:48:18.000000000","message":"While notmy preferred form, testtools.ExpectedException() is acceptable (we use this elsewhere in Neutron)","commit_id":"6adbff74ca823ddf8f4472de7eae64d3e6ff3d2c"}]}
