)]}'
{"nova/tests/unit/network/test_manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a92742ba53e76bead33d601e010a856d10688708","unresolved":false,"context_lines":[{"line_number":1708,"context_line":""},{"line_number":1709,"context_line":"        def fake_release(context, instance, dev, address, vif_address):"},{"line_number":1710,"context_line":"            self.assertEqual(networks[1][\u0027bridge\u0027], dev)"},{"line_number":1711,"context_line":"            self.assertEqual(fix_addr.address, address)"},{"line_number":1712,"context_line":"            self.assertEqual(\u0027DE:AD:BE:EF:00:00\u0027, vif_address)"},{"line_number":1713,"context_line":""},{"line_number":1714,"context_line":"        vif_get.return_value \u003d vifs[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_8f438412","line":1711,"range":{"start_line":1711,"start_character":29,"end_line":1711,"end_character":37},"updated":"2016-08-01 18:34:47.000000000","message":"How does this work as it\u0027s defined later?","commit_id":"f7fea37c7c72f97b6fe12b10a459806648f195fc"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9dcfa59863b0ae7792614e65e6036ec457abbd19","unresolved":false,"context_lines":[{"line_number":1708,"context_line":""},{"line_number":1709,"context_line":"        def fake_release(context, instance, dev, address, vif_address):"},{"line_number":1710,"context_line":"            self.assertEqual(networks[1][\u0027bridge\u0027], dev)"},{"line_number":1711,"context_line":"            self.assertEqual(fix_addr.address, address)"},{"line_number":1712,"context_line":"            self.assertEqual(\u0027DE:AD:BE:EF:00:00\u0027, vif_address)"},{"line_number":1713,"context_line":""},{"line_number":1714,"context_line":"        vif_get.return_value \u003d vifs[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_4ff4ec59","line":1711,"range":{"start_line":1711,"start_character":29,"end_line":1711,"end_character":37},"in_reply_to":"bacf61ea_8f438412","updated":"2016-08-01 18:47:34.000000000","message":"Because it\u0027s not run until after it is. The scope is chained to the parent\u0027s where the symbol is defined before this executes.","commit_id":"f7fea37c7c72f97b6fe12b10a459806648f195fc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a92742ba53e76bead33d601e010a856d10688708","unresolved":false,"context_lines":[{"line_number":1734,"context_line":"                                             {\u0027allocated\u0027: False})"},{"line_number":1735,"context_line":"        # Assert that this was called to make sure the assertEquals"},{"line_number":1736,"context_line":"        # inside were evaluated"},{"line_number":1737,"context_line":"        self.assertTrue(release_dhcp.called)"},{"line_number":1738,"context_line":""},{"line_number":1739,"context_line":"    @mock.patch.object(linux_net, \u0027release_dhcp\u0027)"},{"line_number":1740,"context_line":"    @mock.patch(\u0027nova.network.rpcapi.NetworkAPI.release_dhcp\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_2f6258d8","line":1737,"range":{"start_line":1737,"start_character":24,"end_line":1737,"end_character":36},"updated":"2016-08-01 18:34:47.000000000","message":"Seems we could just use assert_called_once_with? Or I guess assert_has_calls if it\u0027s called more than once.","commit_id":"f7fea37c7c72f97b6fe12b10a459806648f195fc"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9dcfa59863b0ae7792614e65e6036ec457abbd19","unresolved":false,"context_lines":[{"line_number":1734,"context_line":"                                             {\u0027allocated\u0027: False})"},{"line_number":1735,"context_line":"        # Assert that this was called to make sure the assertEquals"},{"line_number":1736,"context_line":"        # inside were evaluated"},{"line_number":1737,"context_line":"        self.assertTrue(release_dhcp.called)"},{"line_number":1738,"context_line":""},{"line_number":1739,"context_line":"    @mock.patch.object(linux_net, \u0027release_dhcp\u0027)"},{"line_number":1740,"context_line":"    @mock.patch(\u0027nova.network.rpcapi.NetworkAPI.release_dhcp\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_6f4d7099","line":1737,"range":{"start_line":1737,"start_character":24,"end_line":1737,"end_character":36},"in_reply_to":"bacf61ea_2f6258d8","updated":"2016-08-01 18:47:34.000000000","message":"We assert all the things we care about in L1710-L1712. This is merely here to make sure that the fake_release() method we define above got called (per the comment above this line). Since we\u0027re asserting things inside a mock, I just wanted to make sure that it is actually being called and that it doesn\u0027t get orphaned later (thus orphaning those checks).","commit_id":"f7fea37c7c72f97b6fe12b10a459806648f195fc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"34ecf617f44f9468310be15dd2154ce6b0c0d571","unresolved":false,"context_lines":[{"line_number":1734,"context_line":"                                             {\u0027allocated\u0027: False})"},{"line_number":1735,"context_line":"        # Assert that this was called to make sure the assertEquals"},{"line_number":1736,"context_line":"        # inside were evaluated"},{"line_number":1737,"context_line":"        self.assertTrue(release_dhcp.called)"},{"line_number":1738,"context_line":""},{"line_number":1739,"context_line":"    @mock.patch.object(linux_net, \u0027release_dhcp\u0027)"},{"line_number":1740,"context_line":"    @mock.patch(\u0027nova.network.rpcapi.NetworkAPI.release_dhcp\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_9f6babb6","line":1737,"range":{"start_line":1737,"start_character":24,"end_line":1737,"end_character":36},"in_reply_to":"bacf61ea_6f4d7099","updated":"2016-08-01 21:18:26.000000000","message":"OK, seems assert_called_once_with would effectively do both for us, but I won\u0027t argue.","commit_id":"f7fea37c7c72f97b6fe12b10a459806648f195fc"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9d9e37a87928d454d0218ea8bab06c5e16d997bd","unresolved":false,"context_lines":[{"line_number":1734,"context_line":"                                             {\u0027allocated\u0027: False})"},{"line_number":1735,"context_line":"        # Assert that this was called to make sure the assertEquals"},{"line_number":1736,"context_line":"        # inside were evaluated"},{"line_number":1737,"context_line":"        self.assertTrue(release_dhcp.called)"},{"line_number":1738,"context_line":""},{"line_number":1739,"context_line":"    @mock.patch.object(linux_net, \u0027release_dhcp\u0027)"},{"line_number":1740,"context_line":"    @mock.patch(\u0027nova.network.rpcapi.NetworkAPI.release_dhcp\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_7f523768","line":1737,"range":{"start_line":1737,"start_character":24,"end_line":1737,"end_character":36},"in_reply_to":"bacf61ea_9f6babb6","updated":"2016-08-01 21:36:25.000000000","message":"Sorry, I\u0027m an idiot and didn\u0027t realize what you were saying.","commit_id":"f7fea37c7c72f97b6fe12b10a459806648f195fc"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"cb81652e8c78d0bc0a9683cb225a9a8b80b221f8","unresolved":false,"context_lines":[{"line_number":1725,"context_line":"        self.network.deallocate_fixed_ip(context1, fix_addr.address, \u0027fake\u0027)"},{"line_number":1726,"context_line":"        fixed_update.assert_called_once_with(context1, fix_addr.address,"},{"line_number":1727,"context_line":"                                             {\u0027allocated\u0027: False})"},{"line_number":1728,"context_line":"        release_dhcp.assert_called_once_with(mock.ANY, None,"},{"line_number":1729,"context_line":"                                             networks[1][\u0027bridge\u0027],"},{"line_number":1730,"context_line":"                                             fix_addr.address,"},{"line_number":1731,"context_line":"                                             \u0027DE:AD:BE:EF:00:00\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_423ddadb","line":1728,"range":{"start_line":1728,"start_character":45,"end_line":1728,"end_character":53},"updated":"2016-08-01 22:12:53.000000000","message":"Why is this not just \u0027context1\u0027?","commit_id":"c9dc0f831991b7e20af675806883b2135bd3883a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0713de1c8450bfea1a9610f388dceca7db5a4942","unresolved":false,"context_lines":[{"line_number":1725,"context_line":"        self.network.deallocate_fixed_ip(context1, fix_addr.address, \u0027fake\u0027)"},{"line_number":1726,"context_line":"        fixed_update.assert_called_once_with(context1, fix_addr.address,"},{"line_number":1727,"context_line":"                                             {\u0027allocated\u0027: False})"},{"line_number":1728,"context_line":"        release_dhcp.assert_called_once_with(mock.ANY, None,"},{"line_number":1729,"context_line":"                                             networks[1][\u0027bridge\u0027],"},{"line_number":1730,"context_line":"                                             fix_addr.address,"},{"line_number":1731,"context_line":"                                             \u0027DE:AD:BE:EF:00:00\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_5d4ab7ad","line":1728,"range":{"start_line":1728,"start_character":45,"end_line":1728,"end_character":53},"in_reply_to":"bacf61ea_423ddadb","updated":"2016-08-02 13:50:26.000000000","message":"I think because release gets called with a new context synthesized from the dhcp bridge command call. If you replace this with context1 you see it\u0027s a different context that we don\u0027t have here. That might be why the old code was using the fake function which didn\u0027t validate context instead of doing it this way.","commit_id":"c9dc0f831991b7e20af675806883b2135bd3883a"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5229aeb06283479e71e81c0f61dbeac2331fe61d","unresolved":false,"context_lines":[{"line_number":1725,"context_line":"        self.network.deallocate_fixed_ip(context1, fix_addr.address, \u0027fake\u0027)"},{"line_number":1726,"context_line":"        fixed_update.assert_called_once_with(context1, fix_addr.address,"},{"line_number":1727,"context_line":"                                             {\u0027allocated\u0027: False})"},{"line_number":1728,"context_line":"        release_dhcp.assert_called_once_with(mock.ANY, None,"},{"line_number":1729,"context_line":"                                             networks[1][\u0027bridge\u0027],"},{"line_number":1730,"context_line":"                                             fix_addr.address,"},{"line_number":1731,"context_line":"                                             \u0027DE:AD:BE:EF:00:00\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_998f1c75","line":1728,"range":{"start_line":1728,"start_character":45,"end_line":1728,"end_character":53},"in_reply_to":"bacf61ea_5d4ab7ad","updated":"2016-08-02 15:17:43.000000000","message":"Hm, when I replaced mock.ANY with context1 the test still passed so I thought it was indeed context1 (I also had a look through the code). Maybe I missed something.","commit_id":"c9dc0f831991b7e20af675806883b2135bd3883a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"aacf8a9a63597fd0f4ae56ec743f252103f320c3","unresolved":false,"context_lines":[{"line_number":1725,"context_line":"        self.network.deallocate_fixed_ip(context1, fix_addr.address, \u0027fake\u0027)"},{"line_number":1726,"context_line":"        fixed_update.assert_called_once_with(context1, fix_addr.address,"},{"line_number":1727,"context_line":"                                             {\u0027allocated\u0027: False})"},{"line_number":1728,"context_line":"        release_dhcp.assert_called_once_with(mock.ANY, None,"},{"line_number":1729,"context_line":"                                             networks[1][\u0027bridge\u0027],"},{"line_number":1730,"context_line":"                                             fix_addr.address,"},{"line_number":1731,"context_line":"                                             \u0027DE:AD:BE:EF:00:00\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_bd6129d6","line":1728,"range":{"start_line":1728,"start_character":45,"end_line":1728,"end_character":53},"in_reply_to":"bacf61ea_79ed08ef","updated":"2016-08-02 15:55:58.000000000","message":"Shrug, seems to work now. I dunno.","commit_id":"c9dc0f831991b7e20af675806883b2135bd3883a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"33e38a17b7d68721d8fa6faf9991127ead4a4e1d","unresolved":false,"context_lines":[{"line_number":1725,"context_line":"        self.network.deallocate_fixed_ip(context1, fix_addr.address, \u0027fake\u0027)"},{"line_number":1726,"context_line":"        fixed_update.assert_called_once_with(context1, fix_addr.address,"},{"line_number":1727,"context_line":"                                             {\u0027allocated\u0027: False})"},{"line_number":1728,"context_line":"        release_dhcp.assert_called_once_with(mock.ANY, None,"},{"line_number":1729,"context_line":"                                             networks[1][\u0027bridge\u0027],"},{"line_number":1730,"context_line":"                                             fix_addr.address,"},{"line_number":1731,"context_line":"                                             \u0027DE:AD:BE:EF:00:00\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_79ed08ef","line":1728,"range":{"start_line":1728,"start_character":45,"end_line":1728,"end_character":53},"in_reply_to":"bacf61ea_998f1c75","updated":"2016-08-02 15:20:25.000000000","message":"Hmm, didn\u0027t for me, but I\u0027ll try again.","commit_id":"c9dc0f831991b7e20af675806883b2135bd3883a"}]}
