)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"201f319bd683317604761dd87ebd3b89e53b447b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"HACK: Test making VIF.address unique with port id for neutron"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We can hide this behavior in the object to nothing else needs to know,"},{"line_number":10,"context_line":"and we have 255 characters in the field, which is enough for a uuid"},{"line_number":11,"context_line":"and a mac address to fit."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3aaa91ec_9b9d94be","line":9,"range":{"start_line":9,"start_character":40,"end_line":9,"end_character":42},"updated":"2016-06-30 15:00:07.000000000","message":"so","commit_id":"cc4230e11e799d19ed2b7c19d9d7d2719793d808"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"201f319bd683317604761dd87ebd3b89e53b447b","unresolved":false,"context_lines":[{"line_number":9,"context_line":"We can hide this behavior in the object to nothing else needs to know,"},{"line_number":10,"context_line":"and we have 255 characters in the field, which is enough for a uuid"},{"line_number":11,"context_line":"and a mac address to fit."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I23480d98ca339c119100e8ab7df633ed8b80b1e9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3aaa91ec_7ba0a8f4","line":12,"updated":"2016-06-30 15:00:07.000000000","message":"Closes-Bug: #1597770","commit_id":"cc4230e11e799d19ed2b7c19d9d7d2719793d808"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"201f319bd683317604761dd87ebd3b89e53b447b","unresolved":false,"context_lines":[{"line_number":694,"context_line":"                    address \u003d (updated_mac or"},{"line_number":695,"context_line":"                               ports[request.port_id][\u0027mac_address\u0027])"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"                vif.address \u003d \u0027%s/%s\u0027 % (address, port_id)"},{"line_number":698,"context_line":"                vifobj.create()"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"                self._update_port_dns_name(context, instance, network,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_db56fccc","line":697,"updated":"2016-06-30 15:00:07.000000000","message":"We\u0027ll want a comment about why we\u0027re doing this.","commit_id":"cc4230e11e799d19ed2b7c19d9d7d2719793d808"}],"nova/objects/virtual_interface.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"201f319bd683317604761dd87ebd3b89e53b447b","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                continue"},{"line_number":53,"context_line":"            else:"},{"line_number":54,"context_line":"                setattr(vif, field, db_vif[field])"},{"line_number":55,"context_line":"        if \u0027address\u0027 in self and \u0027/\u0027 in self.address:"},{"line_number":56,"context_line":"            self.address, _ \u003d self.address.split(\u0027/\u0027, 1)"},{"line_number":57,"context_line":"        vif._context \u003d context"},{"line_number":58,"context_line":"        vif.obj_reset_changes()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_9b0754c9","line":55,"updated":"2016-06-30 15:00:07.000000000","message":"Probably should comment why we\u0027re doing this for the neutron case.","commit_id":"cc4230e11e799d19ed2b7c19d9d7d2719793d808"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dec7d25daf42cfcf1b2af543cb2a61fca7e1b9fb","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        # NOTE(danms): The neutronv2 module namespaces mac addresses"},{"line_number":56,"context_line":"        # with port id to avoid uniqueness constraints currently on"},{"line_number":57,"context_line":"        # our table. Strip that out here so nobody else needs to care."},{"line_number":58,"context_line":"        if \u0027address\u0027 in vif and \u0027/\u0027 in vif.address:"},{"line_number":59,"context_line":"            vif.address, _ \u003d vif.address.split(\u0027/\u0027, 1)"},{"line_number":60,"context_line":"        vif._context \u003d context"},{"line_number":61,"context_line":"        vif.obj_reset_changes()"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_75f1c800","line":58,"updated":"2016-06-30 18:49:02.000000000","message":"We don\u0027t actually have a test that creates one of these in the DB and then pulls it back out from the DB and makes sure this parsing is working, do we? It looks like the neutron testes mock the vif object stuff out, like create().","commit_id":"6d83d9dc3bb3e11c1dbc9b6ea8ebb175e993d2ce"}],"nova/tests/unit/objects/test_virtual_interface.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"49c266b748966d453ab2406d244164222592e0e5","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        vif.tag \u003d \u0027fake-tag\u0027"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        with mock.patch.object(db, \u0027virtual_interface_create\u0027) as create:"},{"line_number":94,"context_line":"            create.return_value \u003d fake_vif"},{"line_number":95,"context_line":"            vif.create()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        self.assertEqual(self.context, vif._context)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_20526013","line":94,"range":{"start_line":94,"start_character":34,"end_line":94,"end_character":42},"updated":"2016-06-30 18:59:45.000000000","message":"This already has \u0027address\u0027: \u002700:00:00:00:00:00\u0027, so the \"if \u0027/\u0027 in address\" check won\u0027t really get hit here.","commit_id":"082a4e2b144f6e8fae0049d92d7c8c5d5531800d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"42d2228fadd44b9e0fb523f24ab2d82383290a7e","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        vif.tag \u003d \u0027fake-tag\u0027"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        with mock.patch.object(db, \u0027virtual_interface_create\u0027) as create:"},{"line_number":94,"context_line":"            create.return_value \u003d fake_vif"},{"line_number":95,"context_line":"            vif.create()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        self.assertEqual(self.context, vif._context)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_60a62810","line":94,"range":{"start_line":94,"start_character":34,"end_line":94,"end_character":42},"in_reply_to":"3aaa91ec_20526013","updated":"2016-06-30 19:00:40.000000000","message":"If you set fake_vif[\u0027address\u0027] \u003d vif.address then this would test the change.","commit_id":"082a4e2b144f6e8fae0049d92d7c8c5d5531800d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ba5ffadb49b3c032b613c972f38905636edda2d1","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        vif._context \u003d None"},{"line_number":100,"context_line":"        # NOTE(danms): The actual vif should now have the namespace"},{"line_number":101,"context_line":"        # stripped out"},{"line_number":102,"context_line":"        self._compare(self, fake_vif, vif)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def test_save(self):"},{"line_number":105,"context_line":"        vif \u003d vif_obj.VirtualInterface(context\u003dself.context)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_60e8e8b3","line":102,"range":{"start_line":102,"start_character":28,"end_line":102,"end_character":41},"updated":"2016-06-30 19:11:01.000000000","message":"These won\u0027t match because fake_vif doesn\u0027t have the namespaced address.","commit_id":"a739ca9e36c578662814667eedc211def089a2d9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"598db46a3a16b743e7195a314781e671a75d573c","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        vif._context \u003d None"},{"line_number":100,"context_line":"        # NOTE(danms): The actual vif should now have the namespace"},{"line_number":101,"context_line":"        # stripped out"},{"line_number":102,"context_line":"        self._compare(self, fake_vif, vif)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def test_save(self):"},{"line_number":105,"context_line":"        vif \u003d vif_obj.VirtualInterface(context\u003dself.context)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_800a3477","line":102,"range":{"start_line":102,"start_character":28,"end_line":102,"end_character":41},"in_reply_to":"3aaa91ec_60e8e8b3","updated":"2016-06-30 19:13:17.000000000","message":"Oh nevermind.","commit_id":"a739ca9e36c578662814667eedc211def089a2d9"}]}
