)]}'
{"quantum/agent/dhcp_agent.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e6cebd24419f0a11da95d6f0a43199f9beee2423","unresolved":false,"context_lines":[{"line_number":251,"context_line":"    def update_lease_expiration(self, network_id, mac_address, ip_address,"},{"line_number":252,"context_line":"                                lease_remaining):"},{"line_number":253,"context_line":"        \"\"\"Make a remote process call to release a fixed_ip on the port.\"\"\""},{"line_number":254,"context_line":"        return self.call(self.context,"},{"line_number":255,"context_line":"                         self.make_msg(\u0027update_lease_expiration\u0027,"},{"line_number":256,"context_line":"                                       network_id\u003dnetwork_id,"},{"line_number":257,"context_line":"                                       mac_address\u003dmac_address,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FqVE%3D","line":254,"updated":"2012-08-22 11:47:12.000000000","message":"Why not use a cast? This invokes a remote method that does not return anything.","commit_id":"b4d44534d55e3bb03f4ee77100098517b3d27575"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"30e8e089a0e4a9a38fba4208adbfebd1ea8ba531","unresolved":false,"context_lines":[{"line_number":251,"context_line":"    def update_lease_expiration(self, network_id, mac_address, ip_address,"},{"line_number":252,"context_line":"                                lease_remaining):"},{"line_number":253,"context_line":"        \"\"\"Make a remote process call to release a fixed_ip on the port.\"\"\""},{"line_number":254,"context_line":"        return self.call(self.context,"},{"line_number":255,"context_line":"                         self.make_msg(\u0027update_lease_expiration\u0027,"},{"line_number":256,"context_line":"                                       network_id\u003dnetwork_id,"},{"line_number":257,"context_line":"                                       mac_address\u003dmac_address,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FqJs%3D","line":254,"in_reply_to":"AAAALH%2F%2FqVE%3D","updated":"2012-08-22 20:39:08.000000000","message":"Good point.  Thanks for catching this.","commit_id":"b4d44534d55e3bb03f4ee77100098517b3d27575"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":248,"context_line":"                         topic\u003dself.topic)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    def update_lease_expiration(self, network_id, ip_address, lease_remaining):"},{"line_number":251,"context_line":"        \"\"\"Make a remote process call to release a fixed_ip on the port.\"\"\""},{"line_number":252,"context_line":"        self.cast(self.context,"},{"line_number":253,"context_line":"                  self.make_msg(\u0027update_lease_expiration\u0027,"},{"line_number":254,"context_line":"                                network_id\u003dnetwork_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2Fpx8%3D","line":251,"updated":"2012-08-23 00:57:09.000000000","message":"seems doc-string and method name are not in sync.  is this only for release?  If so, why is lease_remaining field needed?  Perhaps the method was made more general?","commit_id":"ff706f074ab22ef5c12fb473e5a29520fc8b1ddf"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"30e8e089a0e4a9a38fba4208adbfebd1ea8ba531","unresolved":false,"context_lines":[{"line_number":248,"context_line":"                         topic\u003dself.topic)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    def update_lease_expiration(self, network_id, ip_address, lease_remaining):"},{"line_number":251,"context_line":"        \"\"\"Make a remote process call to release a fixed_ip on the port.\"\"\""},{"line_number":252,"context_line":"        self.cast(self.context,"},{"line_number":253,"context_line":"                  self.make_msg(\u0027update_lease_expiration\u0027,"},{"line_number":254,"context_line":"                                network_id\u003dnetwork_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2Fo4g%3D","line":251,"in_reply_to":"AAAALH%2F%2Fpx8%3D","updated":"2012-08-23 21:35:49.000000000","message":"Done","commit_id":"ff706f074ab22ef5c12fb473e5a29520fc8b1ddf"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":422,"context_line":"            setattr(self, key, value)"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"class DhcpLeaseRelay(object):"},{"line_number":426,"context_line":"    OPTS \u003d ["},{"line_number":427,"context_line":"        cfg.StrOpt(\u0027dhcp_lease_relay_socket\u0027,"},{"line_number":428,"context_line":"                   default\u003d\u0027$state_path/dhcp/lease_relay\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2Fpxs%3D","line":425,"updated":"2012-08-23 00:57:09.000000000","message":"this class could use a doc-string, as what it does is a bit non-intuitive.","commit_id":"ff706f074ab22ef5c12fb473e5a29520fc8b1ddf"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"30e8e089a0e4a9a38fba4208adbfebd1ea8ba531","unresolved":false,"context_lines":[{"line_number":422,"context_line":"            setattr(self, key, value)"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"class DhcpLeaseRelay(object):"},{"line_number":426,"context_line":"    OPTS \u003d ["},{"line_number":427,"context_line":"        cfg.StrOpt(\u0027dhcp_lease_relay_socket\u0027,"},{"line_number":428,"context_line":"                   default\u003d\u0027$state_path/dhcp/lease_relay\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FpCc%3D","line":425,"in_reply_to":"AAAALH%2F%2Fpxs%3D","updated":"2012-08-23 21:35:49.000000000","message":"Done","commit_id":"ff706f074ab22ef5c12fb473e5a29520fc8b1ddf"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":469,"context_line":"            LOG.warn(_(\u0027Exception value: %s\u0027) % e)"},{"line_number":470,"context_line":"            LOG.warn(_(\u0027Message representation: %s\u0027) % repr(msg))"},{"line_number":471,"context_line":"        except Exception, e:"},{"line_number":472,"context_line":"            LOG.warn(_(\u0027Unable update lease. Exception: %s\u0027) % e)"},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"    def start(self):"},{"line_number":475,"context_line":"        \"\"\"Spawn a green thread to run the lease relay unix socket server.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2Fpxw%3D","line":472,"updated":"2012-08-23 00:57:09.000000000","message":"consider using LOG.exception","commit_id":"ff706f074ab22ef5c12fb473e5a29520fc8b1ddf"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"30e8e089a0e4a9a38fba4208adbfebd1ea8ba531","unresolved":false,"context_lines":[{"line_number":469,"context_line":"            LOG.warn(_(\u0027Exception value: %s\u0027) % e)"},{"line_number":470,"context_line":"            LOG.warn(_(\u0027Message representation: %s\u0027) % repr(msg))"},{"line_number":471,"context_line":"        except Exception, e:"},{"line_number":472,"context_line":"            LOG.warn(_(\u0027Unable update lease. Exception: %s\u0027) % e)"},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"    def start(self):"},{"line_number":475,"context_line":"        \"\"\"Spawn a green thread to run the lease relay unix socket server.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2Fo4o%3D","line":472,"in_reply_to":"AAAALH%2F%2Fpxw%3D","updated":"2012-08-23 21:35:49.000000000","message":"Done","commit_id":"ff706f074ab22ef5c12fb473e5a29520fc8b1ddf"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":23,"context_line":"import uuid"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"import eventlet"},{"line_number":26,"context_line":"from eventlet import greenthread"},{"line_number":27,"context_line":"import netaddr"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from quantum.agent import rpc as agent_rpc"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2Fock%3D","line":26,"updated":"2012-08-24 14:50:42.000000000","message":"Is this used?","commit_id":"4ca6c92406e445a36723ef146f207d6a57414727"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"30e8e089a0e4a9a38fba4208adbfebd1ea8ba531","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import uuid"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"import eventlet"},{"line_number":26,"context_line":"from eventlet import greenthread"},{"line_number":27,"context_line":"import netaddr"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from quantum.agent import rpc as agent_rpc"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FoS8%3D","line":26,"in_reply_to":"AAAALH%2F%2Fock%3D","updated":"2012-08-24 16:33:11.000000000","message":"No.  I\u0027ve removed it.","commit_id":"4ca6c92406e445a36723ef146f207d6a57414727"}],"quantum/db/db_base_plugin_v2.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e6cebd24419f0a11da95d6f0a43199f9beee2423","unresolved":false,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        expiration \u003d timeutils.utcnow() + datetime.timedelta(lease_remaining)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        query \u003d context.session.query(models_v2.IPAllocation)"},{"line_number":284,"context_line":"        query \u003d query.options(orm.joinedload(\u0027ports\u0027))"},{"line_number":285,"context_line":"        query \u003d query.filter_by(network_id\u003dnetwork_id, ip_address\u003dip_address)"},{"line_number":286,"context_line":"        queuy \u003d query.filter(models_v2.Port.mac_address \u003d\u003d mac_address)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FqU8%3D","line":283,"updated":"2012-08-22 11:47:12.000000000","message":"I think that this is the context of the rpc connection and not the context of the database connection. I think that you may need to get a db session and then use that for the operation that you wish to perform.\nWhy not search the IPAllocation by network id and ip address?\n       alloc_qry \u003d context.session.query(models_v2.IPAllocation)\n       allocated \u003d alloc_qry.filter_by(network_id\u003dnetwork_id,\n                                                      ip_address\u003dip_address).one()\nAm I missing something here?","commit_id":"b4d44534d55e3bb03f4ee77100098517b3d27575"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"30e8e089a0e4a9a38fba4208adbfebd1ea8ba531","unresolved":false,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        expiration \u003d timeutils.utcnow() + datetime.timedelta(lease_remaining)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        query \u003d context.session.query(models_v2.IPAllocation)"},{"line_number":284,"context_line":"        query \u003d query.options(orm.joinedload(\u0027ports\u0027))"},{"line_number":285,"context_line":"        query \u003d query.filter_by(network_id\u003dnetwork_id, ip_address\u003dip_address)"},{"line_number":286,"context_line":"        queuy \u003d query.filter(models_v2.Port.mac_address \u003d\u003d mac_address)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2Fp%2F0%3D","line":283,"in_reply_to":"AAAALH%2F%2FqU8%3D","updated":"2012-08-22 20:39:08.000000000","message":"The session that is being passed here is an augmented rpc session.  The code in the dhcp rpc mixin will add in the proper database session to it.\n\nI\u0027ve updated the query and removed the join.  Good suggestion.","commit_id":"b4d44534d55e3bb03f4ee77100098517b3d27575"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        try:"},{"line_number":293,"context_line":"            fixed_ip \u003d query.one()"},{"line_number":294,"context_line":"            fixed_ip.expiration \u003d expiration"},{"line_number":295,"context_line":"        except exc.NoResultFound:"},{"line_number":296,"context_line":"            LOG.debug(\"No fixed IP found that matches the network %s and \""},{"line_number":297,"context_line":"                      \"ip address %s.\", network_id, ip_address)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FpwM%3D","line":294,"updated":"2012-08-23 00:57:09.000000000","message":"I\u0027m not sure I understand the flow here, as I don\u0027t see how expiration is taken into consideration when deciding whether we allocate an IP.","commit_id":"ff706f074ab22ef5c12fb473e5a29520fc8b1ddf"}],"quantum/tests/unit/coverage.xml":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c?xml version\u003d\"1.0\" ?\u003e"},{"line_number":2,"context_line":"\u003c!DOCTYPE coverage"},{"line_number":3,"context_line":"  SYSTEM \u0027http://cobertura.sourceforge.net/xml/coverage-03.dtd\u0027\u003e"},{"line_number":4,"context_line":"\u003ccoverage branch-rate\u003d\"0\" line-rate\u003d\"0.7518\" timestamp\u003d\"1331748343846\" version\u003d\"3.5.1\"\u003e"}],"source_content_type":"application/xml","patch_set":2,"id":"AAAALH%2F%2FpyA%3D","line":1,"updated":"2012-08-23 00:57:09.000000000","message":"i almost died when I saw the size of this patchset.  Thankfully, almost all of the code is in this file, which was unintentionally added to the patchset.","commit_id":"ff706f074ab22ef5c12fb473e5a29520fc8b1ddf"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"30e8e089a0e4a9a38fba4208adbfebd1ea8ba531","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c?xml version\u003d\"1.0\" ?\u003e"},{"line_number":2,"context_line":"\u003c!DOCTYPE coverage"},{"line_number":3,"context_line":"  SYSTEM \u0027http://cobertura.sourceforge.net/xml/coverage-03.dtd\u0027\u003e"},{"line_number":4,"context_line":"\u003ccoverage branch-rate\u003d\"0\" line-rate\u003d\"0.7518\" timestamp\u003d\"1331748343846\" version\u003d\"3.5.1\"\u003e"}],"source_content_type":"application/xml","patch_set":2,"id":"AAAALH%2F%2FpCk%3D","line":1,"in_reply_to":"AAAALH%2F%2FpyA%3D","updated":"2012-08-23 21:35:49.000000000","message":"Fixed.  I didn\u0027t realized I had attached this to the commit.  Sorry for the added stress.","commit_id":"ff706f074ab22ef5c12fb473e5a29520fc8b1ddf"}],"quantum/tests/unit/test_db_plugin.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":1260,"context_line":"                        120)"},{"line_number":1261,"context_line":"                    self.assertTrue(log.mock_calls)"},{"line_number":1262,"context_line":"        cfg.CONF.reset()"},{"line_number":1263,"context_line":""},{"line_number":1264,"context_line":""},{"line_number":1265,"context_line":"class TestNetworksV2(QuantumDbPluginV2TestCase):"},{"line_number":1266,"context_line":"    # NOTE(cerberus): successful network update and delete are"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FpwE%3D","line":1263,"updated":"2012-08-23 00:57:09.000000000","message":"could we have a test that actually demonstrates that we don\u0027t reallocate an IP if it is not expired?  this is the part of the logic I\u0027m missing.","commit_id":"ff706f074ab22ef5c12fb473e5a29520fc8b1ddf"}]}
