)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b8cf00a3dececcd89fa3d33c46ea7ff8caef50f4","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    exceptions we expect the decorated method to raise."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"  * The notifier API is changed so that what was previously global state"},{"line_number":53,"context_line":"    is now encapuslated in a Notifier object. This object also includes"},{"line_number":54,"context_line":"    the publisher_id and has error()/info()/etc. methods rather than"},{"line_number":55,"context_line":"    just notify(). We maintain a global NOTIFIER object and create"},{"line_number":56,"context_line":"    specializations of it with specific publisher IDs in order to avoid"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":30,"id":"AAAASX%2F%2F37o%3D","line":53,"updated":"2013-08-25 14:33:30.000000000","message":"encapuslated \u003d\u003e encapsulated","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"a39e8ebb2d78e5e4a28573c50788ca119474e0b3","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    exceptions we expect the decorated method to raise."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"  * The notifier API is changed so that what was previously global state"},{"line_number":53,"context_line":"    is now encapuslated in a Notifier object. This object also includes"},{"line_number":54,"context_line":"    the publisher_id and has error()/info()/etc. methods rather than"},{"line_number":55,"context_line":"    just notify(). We maintain a global NOTIFIER object and create"},{"line_number":56,"context_line":"    specializations of it with specific publisher IDs in order to avoid"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":30,"id":"AAAASX%2F%2F2Aw%3D","line":53,"in_reply_to":"AAAASX%2F%2F37o%3D","updated":"2013-08-26 13:13:59.000000000","message":"Done","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"}],"etc/nova/nova.conf.sample":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b5fc5577c7f5a93c3206886554e793fc6f393138","unresolved":false,"context_lines":[{"line_number":91,"context_line":"# value)"},{"line_number":92,"context_line":"#default_publisher_id\u003d\u003cNone\u003e"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"#"},{"line_number":96,"context_line":"# Options defined in nova.paths"},{"line_number":97,"context_line":"#"}],"source_content_type":"application/octet-stream","patch_set":39,"id":"AAAASn%2F%2FmJc%3D","line":94,"updated":"2013-09-02 21:33:23.000000000","message":"not at all related to this patch but the conf sample no longer has any messaging configuration options. this is a bug in my opinion","commit_id":"e490bbc82410c460e422597c67f2965016feaa2a"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"0f75fe95366450629e21f64e717a5c2e3145774f","unresolved":false,"context_lines":[{"line_number":91,"context_line":"# value)"},{"line_number":92,"context_line":"#default_publisher_id\u003d\u003cNone\u003e"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"#"},{"line_number":96,"context_line":"# Options defined in nova.paths"},{"line_number":97,"context_line":"#"}],"source_content_type":"application/octet-stream","patch_set":39,"id":"AAAASn%2F%2FlVs%3D","line":94,"in_reply_to":"AAAASn%2F%2FmJc%3D","updated":"2013-09-03 07:37:18.000000000","message":"Yes, we need to improve the sample generator to handle this\n\nIc194219ca7877a9046852a4f20ebc0a4037a970d is an example of a similar improvement, but it\u0027s not enough to handle this","commit_id":"e490bbc82410c460e422597c67f2965016feaa2a"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"612dff7059c197f9a1c983d8f78e29671e08577b","unresolved":false,"context_lines":[{"line_number":1687,"context_line":"#matchmaker_heartbeat_freq\u003d300"},{"line_number":1688,"context_line":""},{"line_number":1689,"context_line":"# Heartbeat time-to-live. (integer value)"},{"line_number":1690,"context_line":"#matchmaker_heartbeat_ttl\u003d600"},{"line_number":1691,"context_line":""},{"line_number":1692,"context_line":""},{"line_number":1693,"context_line":"#"}],"source_content_type":"application/octet-stream","patch_set":70,"id":"AAAAUH%2F%2B2q8%3D","side":"PARENT","line":1690,"updated":"2014-01-21 12:06:05.000000000","message":"We\u0027re loosing alot of config options here due to a bug in oslo.config\n\nhttps://bugs.launchpad.net/oslo.messaging/+bug/1241566\n\nLatest comments suggest we have a fix now, so this could be re-syncd to avoid this huge loss of options","commit_id":"d34a04db1024d47aa3f77651b378f03b69904eb3"}],"nova/api/openstack/compute/contrib/cells.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b8cf00a3dececcd89fa3d33c46ea7ff8caef50f4","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        # Just go with None\u0027s"},{"line_number":158,"context_line":"        for key in keys:"},{"line_number":159,"context_line":"            cell_info.setdefault(key, None)"},{"line_number":160,"context_line":"        return"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    if not transport_url.hosts:"},{"line_number":163,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F37I%3D","line":160,"updated":"2013-08-25 14:33:30.000000000","message":"why did you drop the cell_info? unless should not have been here from the start","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b8cf00a3dececcd89fa3d33c46ea7ff8caef50f4","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        return"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    if not transport_url.hosts:"},{"line_number":163,"context_line":"        return"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    transport_host \u003d transport_url.hosts[0]"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F37E%3D","line":163,"updated":"2013-08-25 14:33:30.000000000","message":"same here?","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"a39e8ebb2d78e5e4a28573c50788ca119474e0b3","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        return"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    if not transport_url.hosts:"},{"line_number":163,"context_line":"        return"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    transport_host \u003d transport_url.hosts[0]"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F2C8%3D","line":163,"in_reply_to":"AAAASX%2F%2F37E%3D","updated":"2013-08-26 13:13:59.000000000","message":"The return value is unused\n\n nova/api/openstack/compute/contrib/cells.py:143:def _fixup_cell_info(cell_info, keys):\n nova/api/openstack/compute/contrib/cells.py:182:    _fixup_cell_info(cell_info, keys)\n nova/api/openstack/compute/plugins/v3/cells.py:144:def _fixup_cell_info(cell_info, keys):\n nova/api/openstack/compute/plugins/v3/cells.py:183:    _fixup_cell_info(cell_info, keys)","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b8cf00a3dececcd89fa3d33c46ea7ff8caef50f4","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        transport_url \u003d existing.get(\u0027transport_url\u0027) if existing else None"},{"line_number":313,"context_line":"        transport_url \u003d messaging.TransportURL.parse(CONF, transport_url)"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"        if \u0027rpc_virtual_host\u0027 in cell:"},{"line_number":316,"context_line":"            transport_url.virtual_host \u003d cell.pop(\u0027rpc_virtual_host\u0027)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        if not transport_url.hosts:"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F37A%3D","line":315,"updated":"2013-08-25 14:33:30.000000000","message":"Consider: if cell.get(\u0027rpc_virtual_host\u0027):","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"a39e8ebb2d78e5e4a28573c50788ca119474e0b3","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        transport_url \u003d existing.get(\u0027transport_url\u0027) if existing else None"},{"line_number":313,"context_line":"        transport_url \u003d messaging.TransportURL.parse(CONF, transport_url)"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"        if \u0027rpc_virtual_host\u0027 in cell:"},{"line_number":316,"context_line":"            transport_url.virtual_host \u003d cell.pop(\u0027rpc_virtual_host\u0027)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        if not transport_url.hosts:"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F2As%3D","line":315,"in_reply_to":"AAAASX%2F%2F37A%3D","updated":"2013-08-26 13:13:59.000000000","message":"We want to remove the key from the dict even if the value evaluates to False","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"}],"nova/api/openstack/compute/plugins/v3/cells.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b8cf00a3dececcd89fa3d33c46ea7ff8caef50f4","unresolved":false,"context_lines":[{"line_number":315,"context_line":"        transport_url \u003d existing.get(\u0027transport_url\u0027) if existing else None"},{"line_number":316,"context_line":"        transport_url \u003d messaging.TransportURL.parse(CONF, transport_url)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        if \u0027rpc_virtual_host\u0027 in cell:"},{"line_number":319,"context_line":"            transport_url.virtual_host \u003d cell.pop(\u0027rpc_virtual_host\u0027)"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        if not transport_url.hosts:"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F368%3D","line":318,"updated":"2013-08-25 14:33:30.000000000","message":"Consider: if cell.get(\u0027rpc_virtual_host\u0027):","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"a39e8ebb2d78e5e4a28573c50788ca119474e0b3","unresolved":false,"context_lines":[{"line_number":315,"context_line":"        transport_url \u003d existing.get(\u0027transport_url\u0027) if existing else None"},{"line_number":316,"context_line":"        transport_url \u003d messaging.TransportURL.parse(CONF, transport_url)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        if \u0027rpc_virtual_host\u0027 in cell:"},{"line_number":319,"context_line":"            transport_url.virtual_host \u003d cell.pop(\u0027rpc_virtual_host\u0027)"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        if not transport_url.hosts:"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F2DY%3D","line":318,"in_reply_to":"AAAASX%2F%2F368%3D","updated":"2013-08-26 13:13:59.000000000","message":"We want to remove the key from the dict, even if the value evaluates to False","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b5fc5577c7f5a93c3206886554e793fc6f393138","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        return"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    if not transport_url.hosts:"},{"line_number":164,"context_line":"        return"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    transport_host \u003d transport_url.hosts[0]"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"AAAASn%2F%2FmJQ%3D","line":164,"updated":"2013-09-02 21:33:23.000000000","message":"question - why is line 322 different?","commit_id":"e490bbc82410c460e422597c67f2965016feaa2a"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"0f75fe95366450629e21f64e717a5c2e3145774f","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        return"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    if not transport_url.hosts:"},{"line_number":164,"context_line":"        return"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    transport_host \u003d transport_url.hosts[0]"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"AAAASn%2F%2FlVc%3D","line":164,"in_reply_to":"AAAASn%2F%2FmJQ%3D","updated":"2013-09-03 07:37:18.000000000","message":"Because it\u0027s doing a different thing ... this method is extracting values from the URL. If transport_url.hosts is not set, then there is no host or port to extract","commit_id":"e490bbc82410c460e422597c67f2965016feaa2a"}],"nova/cells/driver.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b8cf00a3dececcd89fa3d33c46ea7ff8caef50f4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2012 Rackspace Hosting"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"# Copyright 2013 Red Hat, Inc."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F364%3D","line":3,"updated":"2013-08-25 14:33:30.000000000","message":"Why the addition here?","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"a39e8ebb2d78e5e4a28573c50788ca119474e0b3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2012 Rackspace Hosting"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"# Copyright 2013 Red Hat, Inc."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F2DE%3D","line":3,"in_reply_to":"AAAASX%2F%2F364%3D","updated":"2013-08-26 13:13:59.000000000","message":"Fair point, these changes certainly wouldn\u0027t meet \"the threshold of originality\" \n\nSee http://en.wikipedia.org/wiki/Threshold_of_originality and http://www.ifosslr.org/ifosslr/article/view/30/64","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"}],"nova/cells/manager.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b8cf00a3dececcd89fa3d33c46ea7ff8caef50f4","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        \"\"\""},{"line_number":95,"context_line":"        # FIXME(comstud): There\u0027s currently no hooks when services are"},{"line_number":96,"context_line":"        # stopping, so we have no way to stop consumers cleanly."},{"line_number":97,"context_line":"        self.driver.start_servers(self.msg_runner)"},{"line_number":98,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":99,"context_line":"        if self.state_manager.get_child_cells():"},{"line_number":100,"context_line":"            self.msg_runner.ask_children_for_capabilities(ctxt)"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F360%3D","line":97,"updated":"2013-08-25 14:33:30.000000000","message":"maybe the comment above needs to be updated - you have changed consumers to servers.","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"a39e8ebb2d78e5e4a28573c50788ca119474e0b3","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        \"\"\""},{"line_number":95,"context_line":"        # FIXME(comstud): There\u0027s currently no hooks when services are"},{"line_number":96,"context_line":"        # stopping, so we have no way to stop consumers cleanly."},{"line_number":97,"context_line":"        self.driver.start_servers(self.msg_runner)"},{"line_number":98,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":99,"context_line":"        if self.state_manager.get_child_cells():"},{"line_number":100,"context_line":"            self.msg_runner.ask_children_for_capabilities(ctxt)"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F2Ck%3D","line":97,"in_reply_to":"AAAASX%2F%2F360%3D","updated":"2013-08-26 13:13:59.000000000","message":"Done","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"}],"nova/cells/messaging.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b8cf00a3dececcd89fa3d33c46ea7ff8caef50f4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2012 Rackspace Hosting"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"# Copyright 2010 United States Government as represented by the"},{"line_number":4,"context_line":"# Administrator of the National Aeronautics and Space Administration."},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"# Copyright 2013 Red Hat, Inc."}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F36w%3D","line":3,"updated":"2013-08-25 14:33:30.000000000","message":"why the change here? This does not seem related to this patch set.","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"a39e8ebb2d78e5e4a28573c50788ca119474e0b3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2012 Rackspace Hosting"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"# Copyright 2010 United States Government as represented by the"},{"line_number":4,"context_line":"# Administrator of the National Aeronautics and Space Administration."},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"# Copyright 2013 Red Hat, Inc."}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F2Cc%3D","line":3,"in_reply_to":"AAAASX%2F%2F36w%3D","updated":"2013-08-26 13:13:59.000000000","message":"The code is coming from nova/openstack/common/rpc/common.py so I\u0027m retaining the copyright notice from there, as required by the license","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"17173f25e419b88457573c91e1099902880d9f6e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2012 Rackspace Hosting"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"# Copyright 2010 United States Government as represented by the"},{"line_number":4,"context_line":"# Administrator of the National Aeronautics and Space Administration."},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"# Copyright 2013 Red Hat, Inc."}],"source_content_type":"text/x-python","patch_set":69,"id":"AAAATn%2F%2FK84%3D","line":3,"updated":"2013-11-13 12:15:14.000000000","message":"Can you please clarify why this additions. I understand the Red Hat part but this not really.","commit_id":"cd715384f1fb297dfffce037444710226089abf7"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"ebbeaf48a325ccf9634636e68c72f32caaad3e21","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2012 Rackspace Hosting"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"# Copyright 2010 United States Government as represented by the"},{"line_number":4,"context_line":"# Administrator of the National Aeronautics and Space Administration."},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"# Copyright 2013 Red Hat, Inc."}],"source_content_type":"text/x-python","patch_set":69,"id":"AAAATn%2F%2FKjg%3D","line":3,"in_reply_to":"AAAATn%2F%2FK84%3D","updated":"2013-11-13 14:23:10.000000000","message":"The exception serialization code comes from openstack/common/rpc/common.py - I\u0027m retaining the copyright headers from there.","commit_id":"cd715384f1fb297dfffce037444710226089abf7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"07bccef11248c6a085334a231483f1a6785f2e27","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2012 Rackspace Hosting"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"# Copyright 2010 United States Government as represented by the"},{"line_number":4,"context_line":"# Administrator of the National Aeronautics and Space Administration."},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"# Copyright 2013 Red Hat, Inc."}],"source_content_type":"text/x-python","patch_set":69,"id":"AAAATn%2F%2FKUc%3D","line":3,"in_reply_to":"AAAATn%2F%2FKjg%3D","updated":"2013-11-13 15:15:21.000000000","message":"thanks for the clarification","commit_id":"cd715384f1fb297dfffce037444710226089abf7"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"63e615e2ae8a1de6fe781e758c40c6f17ea090b1","unresolved":false,"context_lines":[{"line_number":766,"context_line":"        if \u0027.\u0027 in topic:"},{"line_number":767,"context_line":"            topic, server \u003d topic.split(\u0027.\u0027, 1)"},{"line_number":768,"context_line":"        else:"},{"line_number":769,"context_line":"            server \u003d None"},{"line_number":770,"context_line":""},{"line_number":771,"context_line":"        cctxt \u003d rpc.get_client(messaging.Target(topic\u003dtopic, server\u003dserver))"},{"line_number":772,"context_line":"        method \u003d rpc_message[\u0027method\u0027]"}],"source_content_type":"text/x-python","patch_set":69,"id":"AAAATn%2F9zgk%3D","line":769,"updated":"2013-12-05 18:06:58.000000000","message":"minor nit if you respin this patch. This can be written more concisely as:\n\n    topic, _sep, server \u003d topic.partition(\u0027.\u0027)","commit_id":"cd715384f1fb297dfffce037444710226089abf7"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"b81538aaac07eef339395b2a3ec31bd1d204ab61","unresolved":false,"context_lines":[{"line_number":766,"context_line":"        if \u0027.\u0027 in topic:"},{"line_number":767,"context_line":"            topic, server \u003d topic.split(\u0027.\u0027, 1)"},{"line_number":768,"context_line":"        else:"},{"line_number":769,"context_line":"            server \u003d None"},{"line_number":770,"context_line":""},{"line_number":771,"context_line":"        cctxt \u003d rpc.get_client(messaging.Target(topic\u003dtopic, server\u003dserver))"},{"line_number":772,"context_line":"        method \u003d rpc_message[\u0027method\u0027]"}],"source_content_type":"text/x-python","patch_set":69,"id":"AAAAUH%2F%2B3vU%3D","line":769,"in_reply_to":"AAAATn%2F9zgk%3D","updated":"2014-01-21 08:52:20.000000000","message":"Thanks, done.","commit_id":"cd715384f1fb297dfffce037444710226089abf7"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"2f799fd68035a5e5f3eba604ee203985daa9d746","unresolved":false,"context_lines":[{"line_number":766,"context_line":"        if \u0027.\u0027 in topic:"},{"line_number":767,"context_line":"            topic, server \u003d topic.split(\u0027.\u0027, 1)"},{"line_number":768,"context_line":"        else:"},{"line_number":769,"context_line":"            server \u003d None"},{"line_number":770,"context_line":""},{"line_number":771,"context_line":"        cctxt \u003d rpc.get_client(messaging.Target(topic\u003dtopic, server\u003dserver))"},{"line_number":772,"context_line":"        method \u003d rpc_message[\u0027method\u0027]"}],"source_content_type":"text/x-python","patch_set":69,"id":"AAAAUH%2F%2BL60%3D","line":769,"in_reply_to":"AAAAUH%2F%2B3vU%3D","updated":"2014-01-29 10:03:56.000000000","message":"Hmm, this actually gives server\u003d\u0027\u0027 rather than server\u003dNone if the separator isn\u0027t found so I\u0027ve done:\n\n  Target(topic\u003dtopic, server\u003dserver or None)\n\nbleh","commit_id":"cd715384f1fb297dfffce037444710226089abf7"}],"nova/cells/rpc_driver.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"823e94fb1f422f1b2069f6f2859284d6f2f6d69a","unresolved":false,"context_lines":[{"line_number":309,"context_line":"    if CONF.rpc_backend.endswith(\u0027qpid\u0027):"},{"line_number":310,"context_line":"        scheme \u003d \u0027qpid\u0027"},{"line_number":311,"context_line":"    else:"},{"line_number":312,"context_line":"        scheme \u003d \u0027rabbit\u0027"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    # Assemble the transport URL"},{"line_number":315,"context_line":"    url \u003d \"%s://%s/\" % (scheme, netloc)"}],"source_content_type":"text/x-python","patch_set":57,"id":"AAAATH%2F%2FUJs%3D","side":"PARENT","line":312,"updated":"2013-10-17 21:02:39.000000000","message":"here\u0027s where we\u0027d set the scheme correctly in the old code that is removed.","commit_id":"1c7d0023c91bc35a64417fdb5fe2121703bf2259"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"5055d9f0c25d531ef3606582e9b214f11d3decdb","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                                      server\u003dCONF.host)"},{"line_number":74,"context_line":"            # NOTE(comstud): We do not need to use the object serializer"},{"line_number":75,"context_line":"            # on this because object serialization is taken care for us in"},{"line_number":76,"context_line":"            # the messaging module."},{"line_number":77,"context_line":"            server \u003d rpc.get_server(target, endpoints\u003d[proxy_manager])"},{"line_number":78,"context_line":"            server.start()"},{"line_number":79,"context_line":"            self.rpc_servers.append(server)"}],"source_content_type":"text/x-python","patch_set":57,"id":"AAAATH%2F%2FUWc%3D","line":76,"updated":"2013-10-17 20:51:58.000000000","message":"This should be clarified now as the cells messaging module (vs oslo messaging module)","commit_id":"598b89569168dfa33647269707abe1a877626896"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"d515bfa6faa3cf0462a8837e0888ea774c4912e7","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                                      server\u003dCONF.host)"},{"line_number":74,"context_line":"            # NOTE(comstud): We do not need to use the object serializer"},{"line_number":75,"context_line":"            # on this because object serialization is taken care for us in"},{"line_number":76,"context_line":"            # the messaging module."},{"line_number":77,"context_line":"            server \u003d rpc.get_server(target, endpoints\u003d[proxy_manager])"},{"line_number":78,"context_line":"            server.start()"},{"line_number":79,"context_line":"            self.rpc_servers.append(server)"}],"source_content_type":"text/x-python","patch_set":57,"id":"AAAATH%2F%2FR9A%3D","line":76,"in_reply_to":"AAAATH%2F%2FUWc%3D","updated":"2013-10-18 13:52:42.000000000","message":"Ok, done here and in a few other places","commit_id":"598b89569168dfa33647269707abe1a877626896"}],"nova/cells/rpcapi.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"5055d9f0c25d531ef3606582e9b214f11d3decdb","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    }"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def __init__(self):"},{"line_number":92,"context_line":"        super(CellsAPI, self).__init__()"},{"line_number":93,"context_line":"        target \u003d messaging.Target(topic\u003dCONF.cells.topic, version\u003d\u00271.0\u0027)"},{"line_number":94,"context_line":"        version_cap \u003d self.VERSION_ALIASES.get(CONF.upgrade_levels.cells,"},{"line_number":95,"context_line":"                                               CONF.upgrade_levels.cells)"}],"source_content_type":"text/x-python","patch_set":57,"id":"AAAATH%2F%2FUT8%3D","line":92,"updated":"2013-10-17 20:51:58.000000000","message":"This isn\u0027t needed anymore, since the change to just inheriting object...","commit_id":"598b89569168dfa33647269707abe1a877626896"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"d515bfa6faa3cf0462a8837e0888ea774c4912e7","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    }"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def __init__(self):"},{"line_number":92,"context_line":"        super(CellsAPI, self).__init__()"},{"line_number":93,"context_line":"        target \u003d messaging.Target(topic\u003dCONF.cells.topic, version\u003d\u00271.0\u0027)"},{"line_number":94,"context_line":"        version_cap \u003d self.VERSION_ALIASES.get(CONF.upgrade_levels.cells,"},{"line_number":95,"context_line":"                                               CONF.upgrade_levels.cells)"}],"source_content_type":"text/x-python","patch_set":57,"id":"AAAATH%2F%2FR8s%3D","line":92,"in_reply_to":"AAAATH%2F%2FUT8%3D","updated":"2013-10-18 13:52:42.000000000","message":"You mean it\u0027s not necessary to chain up to object.__init__() ?\n\nIt is needed for multiple inheritance because of MRO - I always do it rather than essentially say \"this class shouldn\u0027t be used for multiple inheritance\"","commit_id":"598b89569168dfa33647269707abe1a877626896"}],"nova/cert/rpcapi.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b8cf00a3dececcd89fa3d33c46ea7ff8caef50f4","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    \u0027\u0027\u0027"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    VERSION_ALIASES \u003d {"},{"line_number":54,"context_line":"        \u0027grizzly\u0027: \u00271.1\u0027,"},{"line_number":55,"context_line":"    }"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F36o%3D","line":54,"updated":"2013-08-25 14:33:30.000000000","message":"not related but do we need a havana here?","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"a39e8ebb2d78e5e4a28573c50788ca119474e0b3","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    \u0027\u0027\u0027"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    VERSION_ALIASES \u003d {"},{"line_number":54,"context_line":"        \u0027grizzly\u0027: \u00271.1\u0027,"},{"line_number":55,"context_line":"    }"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F2CY%3D","line":54,"in_reply_to":"AAAASX%2F%2F36o%3D","updated":"2013-08-26 13:13:59.000000000","message":"as you say, unrelated\n\nI think we only need this in Icehouse to allow people set the version cap to havana","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"}],"nova/cmd/manage.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"5055d9f0c25d531ef3606582e9b214f11d3decdb","unresolved":false,"context_lines":[{"line_number":1206,"context_line":"                                                 password\u003dpassword)"},{"line_number":1207,"context_line":"        transport_url \u003d messaging.TransportURL(CONF,"},{"line_number":1208,"context_line":"                                               virtual_host\u003dvirtual_host,"},{"line_number":1209,"context_line":"                                               hosts\u003d[transport_host])"},{"line_number":1210,"context_line":""},{"line_number":1211,"context_line":"        is_parent \u003d cell_type \u003d\u003d \u0027parent\u0027"},{"line_number":1212,"context_line":"        values \u003d {\u0027name\u0027: name,"}],"source_content_type":"text/x-python","patch_set":57,"id":"AAAATH%2F%2FUNY%3D","line":1209,"updated":"2013-10-17 20:51:58.000000000","message":"Here\u0027s where we hit the bug in the gate, I think.  From oslo.messaging:\n\n234     @property\n235     def transport(self):\n236         if self._transport is None:\n237             return self.conf.rpc_backend\n238         else:\n239             return self._transport\n\nWe hit line 237... which is a module path... not something like \u0027rabbit\u0027.","commit_id":"598b89569168dfa33647269707abe1a877626896"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"d515bfa6faa3cf0462a8837e0888ea774c4912e7","unresolved":false,"context_lines":[{"line_number":1206,"context_line":"                                                 password\u003dpassword)"},{"line_number":1207,"context_line":"        transport_url \u003d messaging.TransportURL(CONF,"},{"line_number":1208,"context_line":"                                               virtual_host\u003dvirtual_host,"},{"line_number":1209,"context_line":"                                               hosts\u003d[transport_host])"},{"line_number":1210,"context_line":""},{"line_number":1211,"context_line":"        is_parent \u003d cell_type \u003d\u003d \u0027parent\u0027"},{"line_number":1212,"context_line":"        values \u003d {\u0027name\u0027: name,"}],"source_content_type":"text/x-python","patch_set":57,"id":"AAAATH%2F%2FR8k%3D","line":1209,"in_reply_to":"AAAATH%2F%2FUNY%3D","updated":"2013-10-18 13:52:42.000000000","message":"Yep, you got it\n\nI\u0027ve added a new rpc.get_transport_url() method which handles mapping rpc_backend using the same aliases we define in setup.cfg","commit_id":"598b89569168dfa33647269707abe1a877626896"}],"nova/compute/cells_api.py":[{"author":{"_account_id":1812,"name":"p-draigbrady","email":"P@draigBrady.com","username":"p-draigbrady"},"change_message_id":"b9c83b093970299e16980d260ee5df5f79e7748b","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        self.cells_rpcapi \u003d cells_rpcapi.CellsAPI()"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def prepare(self, **kwargs):"},{"line_number":110,"context_line":"        ret \u003d self.__class__(self.target, self.version_cap)"},{"line_number":111,"context_line":"        ret.cells_rpcapi \u003d self.cells_rpcapi"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        server \u003d kwargs.pop(\u0027server\u0027, None)"}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FPAA%3D","line":110,"updated":"2013-11-12 14:43:01.000000000","message":"Slightly more idomatic (higher level) way to do this is:\n\n    ret \u003d type(self)(self.target, self.version_cap)","commit_id":"705c5d491af9486b13134ccb27b8a88c952e9fc0"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"2b0ffab2e299f974adad4c6807048cf1ba761e32","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        self.cells_rpcapi \u003d cells_rpcapi.CellsAPI()"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def prepare(self, **kwargs):"},{"line_number":110,"context_line":"        ret \u003d self.__class__(self.target, self.version_cap)"},{"line_number":111,"context_line":"        ret.cells_rpcapi \u003d self.cells_rpcapi"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        server \u003d kwargs.pop(\u0027server\u0027, None)"}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FOp0%3D","line":110,"in_reply_to":"AAAATn%2F%2FPAA%3D","updated":"2013-11-12 15:51:43.000000000","message":"Good point, thanks\n\nRather than respin for just this change, I pushed as Icf5e7df6d09af71f3d60693e99a1d7f45cf71cfd\n\nIf I need to rebase again, I\u0027ll squash this in","commit_id":"705c5d491af9486b13134ccb27b8a88c952e9fc0"}],"nova/compute/manager.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"b90ce525dead2947b7174304ec14fcbc6ae53e00","unresolved":false,"context_lines":[{"line_number":412,"context_line":"class ComputeManager(manager.SchedulerDependentManager):"},{"line_number":413,"context_line":"    \"\"\"Manages the running instances from creation to destruction.\"\"\""},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"    target \u003d messaging.Target(version\u003d\u00272.48\u0027)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def __init__(self, compute_driver\u003dNone, *args, **kwargs):"},{"line_number":418,"context_line":"        \"\"\"Load configuration options and connect to the hypervisor.\"\"\""}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FPVQ%3D","line":415,"updated":"2013-11-12 13:56:54.000000000","message":"Same comment about declarative style like in the clients - but this is slightly better.","commit_id":"705c5d491af9486b13134ccb27b8a88c952e9fc0"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"2b0ffab2e299f974adad4c6807048cf1ba761e32","unresolved":false,"context_lines":[{"line_number":412,"context_line":"class ComputeManager(manager.SchedulerDependentManager):"},{"line_number":413,"context_line":"    \"\"\"Manages the running instances from creation to destruction.\"\"\""},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"    target \u003d messaging.Target(version\u003d\u00272.48\u0027)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def __init__(self, compute_driver\u003dNone, *args, **kwargs):"},{"line_number":418,"context_line":"        \"\"\"Load configuration options and connect to the hypervisor.\"\"\""}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FOkQ%3D","line":415,"in_reply_to":"AAAATn%2F%2FO%2FY%3D","updated":"2013-11-12 15:51:43.000000000","message":"The only user of this is the RPC dispatcher which looks for a target attribute on the endpoint ... I think it\u0027s better to directly create the Target object here rather than having some indirection that takes an RPC_API_VERSION string and creates the object","commit_id":"705c5d491af9486b13134ccb27b8a88c952e9fc0"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"aee76ef9217584e5f9104b5f21721123fd5a4c7f","unresolved":false,"context_lines":[{"line_number":412,"context_line":"class ComputeManager(manager.SchedulerDependentManager):"},{"line_number":413,"context_line":"    \"\"\"Manages the running instances from creation to destruction.\"\"\""},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"    target \u003d messaging.Target(version\u003d\u00272.48\u0027)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def __init__(self, compute_driver\u003dNone, *args, **kwargs):"},{"line_number":418,"context_line":"        \"\"\"Load configuration options and connect to the hypervisor.\"\"\""}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FOhE%3D","line":415,"in_reply_to":"AAAATn%2F%2FOkQ%3D","updated":"2013-11-12 16:29:52.000000000","message":"Yes - I saw that later. I would say it\u0027s a matter of taste, and really not important for the big picture behind this patch so I\u0027m ok with this.","commit_id":"705c5d491af9486b13134ccb27b8a88c952e9fc0"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"b9957c630ce5ce1df48d2f4cdbd187fc420444fc","unresolved":false,"context_lines":[{"line_number":412,"context_line":"class ComputeManager(manager.SchedulerDependentManager):"},{"line_number":413,"context_line":"    \"\"\"Manages the running instances from creation to destruction.\"\"\""},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"    target \u003d messaging.Target(version\u003d\u00272.48\u0027)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def __init__(self, compute_driver\u003dNone, *args, **kwargs):"},{"line_number":418,"context_line":"        \"\"\"Load configuration options and connect to the hypervisor.\"\"\""}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FO%2FY%3D","line":415,"in_reply_to":"AAAATn%2F%2FPVQ%3D","updated":"2013-11-12 14:44:08.000000000","message":"The constant wasn\u0027t being referenced from other callers, so I don\u0027t think there\u0027s any real benefit to keeping it as a constant, as opposed to inlining the version number string at the single point of use.","commit_id":"705c5d491af9486b13134ccb27b8a88c952e9fc0"}],"nova/compute/resource_tracker.py":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"c6dadcc185d95137869278745500f61463b31bec","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.conductor_api \u003d conductor.API()"},{"line_number":77,"context_line":"        monitor_handler \u003d monitors.ResourceMonitorHandler()"},{"line_number":78,"context_line":"        self.monitors \u003d monitor_handler.choose_monitors(self)"},{"line_number":79,"context_line":"        self.notifier \u003d rpc.get_notifier()"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":82,"context_line":"    def instance_claim(self, context, instance_ref, limits\u003dNone):"}],"source_content_type":"text/x-python","patch_set":78,"id":"AAAAUH%2F96ME%3D","line":79,"updated":"2014-02-01 16:48:50.000000000","message":"This looks unused","commit_id":"1a91aacb85922f8d74733979691f0bf26249debc"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"b90ce525dead2947b7174304ec14fcbc6ae53e00","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 Red Hat, Inc."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FPgk%3D","line":3,"updated":"2013-11-12 13:56:54.000000000","message":"Attention to detail ftw! :)","commit_id":"705c5d491af9486b13134ccb27b8a88c952e9fc0"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"b90ce525dead2947b7174304ec14fcbc6ae53e00","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        \u0027havana\u0027: \u00272.47\u0027,"},{"line_number":219,"context_line":"    }"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def __init__(self):"},{"line_number":222,"context_line":"        super(ComputeAPI, self).__init__()"},{"line_number":223,"context_line":"        target \u003d messaging.Target(topic\u003dCONF.compute_topic, version\u003d\u00272.0\u0027)"},{"line_number":224,"context_line":"        version_cap \u003d self.VERSION_ALIASES.get(CONF.upgrade_levels.compute,"}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FPg4%3D","line":221,"updated":"2013-11-12 13:56:54.000000000","message":"I see this pattern repeating in all of the rpc_api classes, so makes me think that we could still keep a very basic superclass.\n\nI don\u0027t care about repeating stuff in the __init__ as much as I think the declarative nature of having BASE_RPC_API_VERSION as the class attribute is nice and I see no reason to break this now.","commit_id":"705c5d491af9486b13134ccb27b8a88c952e9fc0"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"2b0ffab2e299f974adad4c6807048cf1ba761e32","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        \u0027havana\u0027: \u00272.47\u0027,"},{"line_number":219,"context_line":"    }"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def __init__(self):"},{"line_number":222,"context_line":"        super(ComputeAPI, self).__init__()"},{"line_number":223,"context_line":"        target \u003d messaging.Target(topic\u003dCONF.compute_topic, version\u003d\u00272.0\u0027)"},{"line_number":224,"context_line":"        version_cap \u003d self.VERSION_ALIASES.get(CONF.upgrade_levels.compute,"}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FOk8%3D","line":221,"in_reply_to":"AAAATn%2F%2FO94%3D","updated":"2013-11-12 15:51:43.000000000","message":"I don\u0027t feel particularly strongly about it, but having BASE_RPC_API_VERSION wrongly suggests to me that it\u0027s used/useful elsewhere","commit_id":"705c5d491af9486b13134ccb27b8a88c952e9fc0"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"aee76ef9217584e5f9104b5f21721123fd5a4c7f","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        \u0027havana\u0027: \u00272.47\u0027,"},{"line_number":219,"context_line":"    }"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def __init__(self):"},{"line_number":222,"context_line":"        super(ComputeAPI, self).__init__()"},{"line_number":223,"context_line":"        target \u003d messaging.Target(topic\u003dCONF.compute_topic, version\u003d\u00272.0\u0027)"},{"line_number":224,"context_line":"        version_cap \u003d self.VERSION_ALIASES.get(CONF.upgrade_levels.compute,"}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FOgs%3D","line":221,"in_reply_to":"AAAATn%2F%2FOk8%3D","updated":"2013-11-12 16:29:52.000000000","message":"Agreed.","commit_id":"705c5d491af9486b13134ccb27b8a88c952e9fc0"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"b9957c630ce5ce1df48d2f4cdbd187fc420444fc","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        \u0027havana\u0027: \u00272.47\u0027,"},{"line_number":219,"context_line":"    }"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def __init__(self):"},{"line_number":222,"context_line":"        super(ComputeAPI, self).__init__()"},{"line_number":223,"context_line":"        target \u003d messaging.Target(topic\u003dCONF.compute_topic, version\u003d\u00272.0\u0027)"},{"line_number":224,"context_line":"        version_cap \u003d self.VERSION_ALIASES.get(CONF.upgrade_levels.compute,"}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FO94%3D","line":221,"in_reply_to":"AAAATn%2F%2FPg4%3D","updated":"2013-11-12 14:44:08.000000000","message":"Again I don\u0027t think using a constant is really buying us anything significant here, so inlining it is fine IMHO","commit_id":"705c5d491af9486b13134ccb27b8a88c952e9fc0"}],"nova/db/sqlalchemy/migrate_repo/versions/200_add_transport_url_to_cell.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b8cf00a3dececcd89fa3d33c46ea7ff8caef50f4","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            \u0027rpc_virtual_host\u0027: url.virtual_host,"},{"line_number":140,"context_line":"        }"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        table.update().where(table.c.id \u003d\u003d cell_id).\\"},{"line_number":143,"context_line":"            values(**transport_data).execute()"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F36Y%3D","line":142,"updated":"2013-08-25 14:33:30.000000000","message":"it is possible to write this line without the \\?","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"a39e8ebb2d78e5e4a28573c50788ca119474e0b3","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            \u0027rpc_virtual_host\u0027: url.virtual_host,"},{"line_number":140,"context_line":"        }"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        table.update().where(table.c.id \u003d\u003d cell_id).\\"},{"line_number":143,"context_line":"            values(**transport_data).execute()"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F2CI%3D","line":142,"in_reply_to":"AAAASX%2F%2F36Y%3D","updated":"2013-08-26 13:13:59.000000000","message":"It is, but I won\u0027t want to overly disturb the existing code","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"823e94fb1f422f1b2069f6f2859284d6f2f6d69a","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                                       port\u003dport,"},{"line_number":110,"context_line":"                                       username\u003dusername,"},{"line_number":111,"context_line":"                                       password\u003dpasswd)"},{"line_number":112,"context_line":"        url \u003d messaging.TransportURL(CONF, virtual_host\u003dvhost, hosts\u003d[host])"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # Store the transport URL in the database"},{"line_number":115,"context_line":"        table.update().where(table.c.id \u003d\u003d cell_id).\\"}],"source_content_type":"text/x-python","patch_set":57,"id":"AAAATH%2F%2FUJ4%3D","line":112,"updated":"2013-10-17 21:02:39.000000000","message":"We\u0027ll get the wrong scheme in the DB here too... if oslo sets the rpc_backend to be the scheme","commit_id":"598b89569168dfa33647269707abe1a877626896"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"d515bfa6faa3cf0462a8837e0888ea774c4912e7","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                                       port\u003dport,"},{"line_number":110,"context_line":"                                       username\u003dusername,"},{"line_number":111,"context_line":"                                       password\u003dpasswd)"},{"line_number":112,"context_line":"        url \u003d messaging.TransportURL(CONF, virtual_host\u003dvhost, hosts\u003d[host])"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # Store the transport URL in the database"},{"line_number":115,"context_line":"        table.update().where(table.c.id \u003d\u003d cell_id).\\"}],"source_content_type":"text/x-python","patch_set":57,"id":"AAAATH%2F%2FR8g%3D","line":112,"in_reply_to":"AAAATH%2F%2FUJ4%3D","updated":"2013-10-18 13:52:42.000000000","message":"Yep, using rpc.get_transport_url() in all these cases now","commit_id":"598b89569168dfa33647269707abe1a877626896"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"b90ce525dead2947b7174304ec14fcbc6ae53e00","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from sqlalchemy import Column, Integer, MetaData, String, Table"},{"line_number":19,"context_line":"from sqlalchemy.sql.expression import select"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from nova.cells import rpc_driver"},{"line_number":22,"context_line":"from nova.openstack.common.gettextutils import _"},{"line_number":23,"context_line":"from nova.openstack.common import log as logging"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FPMY%3D","side":"PARENT","line":21,"updated":"2013-11-12 13:56:54.000000000","message":"Oh wow - this is really bad!!!\n\nrelying on external code for migration functionality is a sure way to shoot oneself in the foot. As it makes different versions of the code possibly migrate differently once the dependent code changes, and it is impossible to detect.\n\nIt\u0027s best to always copy in the functionality as it stands.","commit_id":"d9692ec5ce2c2a01c9f8f49872072cd7cdfa2e65"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"2b0ffab2e299f974adad4c6807048cf1ba761e32","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from sqlalchemy import Column, Integer, MetaData, String, Table"},{"line_number":19,"context_line":"from sqlalchemy.sql.expression import select"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from nova.cells import rpc_driver"},{"line_number":22,"context_line":"from nova.openstack.common.gettextutils import _"},{"line_number":23,"context_line":"from nova.openstack.common import log as logging"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FOo0%3D","side":"PARENT","line":21,"in_reply_to":"AAAATn%2F%2FPMY%3D","updated":"2013-11-12 15:51:43.000000000","message":"Well, the rpc_driver.parse/unparse_url() stuff is fairly straightforward ... except its reliance on CONF.rpc_backend\n\nI guess I\u0027d have been happier if it had been code that was isolated to something like a nova.cells.urls module ... but using library code in a migration seems fine to me","commit_id":"d9692ec5ce2c2a01c9f8f49872072cd7cdfa2e65"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"b90ce525dead2947b7174304ec14fcbc6ae53e00","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from migrate.changeset import UniqueConstraint"},{"line_number":19,"context_line":"from oslo.config import cfg"},{"line_number":20,"context_line":"from oslo import messaging"},{"line_number":21,"context_line":"from sqlalchemy import Column, Integer, MetaData, String, Table"},{"line_number":22,"context_line":"from sqlalchemy.sql.expression import select"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FPKs%3D","line":20,"updated":"2013-11-12 13:56:54.000000000","message":"With the left comment in mind - let\u0027s not make it even worse by depending on the external lib (although, that may be better since the contract is stronger for an external lib). I think we should fix this in a separate patch by copying in the functionality.","commit_id":"705c5d491af9486b13134ccb27b8a88c952e9fc0"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"2b0ffab2e299f974adad4c6807048cf1ba761e32","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from migrate.changeset import UniqueConstraint"},{"line_number":19,"context_line":"from oslo.config import cfg"},{"line_number":20,"context_line":"from oslo import messaging"},{"line_number":21,"context_line":"from sqlalchemy import Column, Integer, MetaData, String, Table"},{"line_number":22,"context_line":"from sqlalchemy.sql.expression import select"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FOoE%3D","line":20,"in_reply_to":"AAAATn%2F%2FO%2Fw%3D","updated":"2013-11-12 15:51:43.000000000","message":"Again, a migration depending on a libary doesn\u0027t seem crazy to me\n\nThe horrible part of the design here is that we rely on rpc_backend being set in nova.conf in order to get the correct transport driver name in the DB\n\nBut, yeah - by not using cells driver code, this patch is making it marginally better if anything","commit_id":"705c5d491af9486b13134ccb27b8a88c952e9fc0"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"aee76ef9217584e5f9104b5f21721123fd5a4c7f","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from migrate.changeset import UniqueConstraint"},{"line_number":19,"context_line":"from oslo.config import cfg"},{"line_number":20,"context_line":"from oslo import messaging"},{"line_number":21,"context_line":"from sqlalchemy import Column, Integer, MetaData, String, Table"},{"line_number":22,"context_line":"from sqlalchemy.sql.expression import select"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FOfg%3D","line":20,"in_reply_to":"AAAATn%2F%2FOoE%3D","updated":"2013-11-12 16:29:52.000000000","message":"I can imagine an upgrade situation where this could prove to be very dangerous, however we are unlikely to hit ever, and the patch does make it (arguably) better. I\u0027d like to see a bug filed for this - especially since there were some efforts on squashing migrations but up to markmc if he feels it\u0027s worth raising.","commit_id":"705c5d491af9486b13134ccb27b8a88c952e9fc0"},{"author":{"_account_id":1812,"name":"p-draigbrady","email":"P@draigBrady.com","username":"p-draigbrady"},"change_message_id":"b9c83b093970299e16980d260ee5df5f79e7748b","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from migrate.changeset import UniqueConstraint"},{"line_number":19,"context_line":"from oslo.config import cfg"},{"line_number":20,"context_line":"from oslo import messaging"},{"line_number":21,"context_line":"from sqlalchemy import Column, Integer, MetaData, String, Table"},{"line_number":22,"context_line":"from sqlalchemy.sql.expression import select"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FO7E%3D","line":20,"in_reply_to":"AAAATn%2F%2FPKs%3D","updated":"2013-11-12 14:43:01.000000000","message":"I don\u0027t see this as worse.\nIf changing it should be done in a different patch","commit_id":"705c5d491af9486b13134ccb27b8a88c952e9fc0"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"b9957c630ce5ce1df48d2f4cdbd187fc420444fc","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from migrate.changeset import UniqueConstraint"},{"line_number":19,"context_line":"from oslo.config import cfg"},{"line_number":20,"context_line":"from oslo import messaging"},{"line_number":21,"context_line":"from sqlalchemy import Column, Integer, MetaData, String, Table"},{"line_number":22,"context_line":"from sqlalchemy.sql.expression import select"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FO%2Fw%3D","line":20,"in_reply_to":"AAAATn%2F%2FPKs%3D","updated":"2013-11-12 14:44:08.000000000","message":"The horrible design exists before \u0026 after. As such I don\u0027t think we should delay the conversion of Nova to oslo.messaging, for the sake of something that\u0027s already got a sub-optimal design \u0026 not being made any worse by this change. This migration code design can be fixed up anytime by motivated parties.","commit_id":"705c5d491af9486b13134ccb27b8a88c952e9fc0"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"17173f25e419b88457573c91e1099902880d9f6e","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from nova import rpc"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":"CONF \u003d cfg.CONF"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def get_tables(engine, *names):"}],"source_content_type":"text/x-python","patch_set":69,"id":"AAAATn%2F%2FK8Y%3D","line":29,"updated":"2013-11-13 12:15:14.000000000","message":"this is not used","commit_id":"cd715384f1fb297dfffce037444710226089abf7"}],"nova/manager.py":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"c6dadcc185d95137869278745500f61463b31bec","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        self.backdoor_port \u003d None"},{"line_number":76,"context_line":"        self.service_name \u003d service_name"},{"line_number":77,"context_line":"        self.notifier \u003d rpc.get_notifier(self.service_name, self.host)"},{"line_number":78,"context_line":"        self.additional_endpoints \u003d []"},{"line_number":79,"context_line":"        super(Manager, self).__init__(db_driver)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def periodic_tasks(self, context, raise_on_error\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":78,"id":"AAAAUH%2F96LI%3D","line":78,"updated":"2014-02-01 16:48:50.000000000","message":"At first I thought baserpc got lost, but I found it later in the changes to nova/service.py.\n\nI think it might make more sense here in the additional_endpoints list, but it\u0027s not a big deal.","commit_id":"1a91aacb85922f8d74733979691f0bf26249debc"}],"nova/notifications.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b8cf00a3dececcd89fa3d33c46ea7ff8caef50f4","unresolved":false,"context_lines":[{"line_number":54,"context_line":"               default\u003d\u0027INFO\u0027,"},{"line_number":55,"context_line":"               help\u003d\u0027Default notification level for outgoing notifications\u0027),"},{"line_number":56,"context_line":"    cfg.StrOpt(\u0027default_publisher_id\u0027,"},{"line_number":57,"context_line":"               default\u003dNone,"},{"line_number":58,"context_line":"               help\u003d\u0027Default publisher_id for outgoing notifications\u0027),"},{"line_number":59,"context_line":"]"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F36I%3D","line":57,"updated":"2013-08-25 14:33:30.000000000","message":"please do not use this. there was a specific patch set to remove this - https://review.openstack.org/#/c/41001/","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"a39e8ebb2d78e5e4a28573c50788ca119474e0b3","unresolved":false,"context_lines":[{"line_number":54,"context_line":"               default\u003d\u0027INFO\u0027,"},{"line_number":55,"context_line":"               help\u003d\u0027Default notification level for outgoing notifications\u0027),"},{"line_number":56,"context_line":"    cfg.StrOpt(\u0027default_publisher_id\u0027,"},{"line_number":57,"context_line":"               default\u003dNone,"},{"line_number":58,"context_line":"               help\u003d\u0027Default publisher_id for outgoing notifications\u0027),"},{"line_number":59,"context_line":"]"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F2Bo%3D","line":57,"in_reply_to":"AAAASX%2F%2F36I%3D","updated":"2013-08-26 13:13:59.000000000","message":"Done\n\nThis option is coming from nova/openstack/common/notifier/api.py and that had default\u003dNone","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"}],"nova/objects/base.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"b90ce525dead2947b7174304ec14fcbc6ae53e00","unresolved":false,"context_lines":[{"line_number":478,"context_line":"        return objects"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"class NovaObjectSerializer(nova.openstack.common.rpc.serializer.Serializer):"},{"line_number":482,"context_line":"    \"\"\"A NovaObject-aware Serializer."},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    This implements the Oslo Serializer interface and provides the"}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FPns%3D","side":"PARENT","line":481,"updated":"2013-11-12 13:56:54.000000000","message":"Hmm probably insignificant but the Serializer class here did not add the serialize/desirialize_context mehtods however the oslo one does.\n\nJust pointing it out.","commit_id":"d9692ec5ce2c2a01c9f8f49872072cd7cdfa2e65"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"2b0ffab2e299f974adad4c6807048cf1ba761e32","unresolved":false,"context_lines":[{"line_number":478,"context_line":"        return objects"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"class NovaObjectSerializer(nova.openstack.common.rpc.serializer.Serializer):"},{"line_number":482,"context_line":"    \"\"\"A NovaObject-aware Serializer."},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    This implements the Oslo Serializer interface and provides the"}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FOnQ%3D","side":"PARENT","line":481,"in_reply_to":"AAAATn%2F%2FPns%3D","updated":"2013-11-12 15:51:43.000000000","message":"We wrap the object serializer with a context serializer:\n\n\tserializer \u003d objects_base.NovaObjectSerializer()\n        self.client \u003d rpc.get_client(target,\n\t                             version_cap\u003dversion_cap,\n                                     serializer\u003dserializer)\n\nand then:\n\n def get_client(target, version_cap\u003dNone, serializer\u003dNone):\n    assert TRANSPORT is not None\n    serializer \u003d RequestContextSerializer(serializer)\n    return messaging.RPCClient(TRANSPORT,\n                               target,\n                               version_cap\u003dversion_cap,\n                               serializer\u003dserializer)\n\nthe request context serializer does:\n\n class RequestContextSerializer(messaging.Serializer):\n\n    def __init__(self, base):\n        self._base \u003d base\n\n    def serialize_entity(self, context, entity):\n        if not self._base:\n            return entity\n        return self._base.serialize_entity(context, entity)\n\nI could try making NovaObjectSerializer inherit from RequestContextSerializer ... but I suspect I\u0027d just end up discovering the reason why I didn\u0027t do that in the first place :)","commit_id":"d9692ec5ce2c2a01c9f8f49872072cd7cdfa2e65"}],"nova/rpc.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b8cf00a3dececcd89fa3d33c46ea7ff8caef50f4","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from nova.openstack.common import local"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"CONF \u003d cfg.CONF"},{"line_number":25,"context_line":"TRANSPORT \u003d None"},{"line_number":26,"context_line":"NOTIFIER \u003d None"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"ALLOWED_EXMODS \u003d ["}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F354%3D","line":25,"updated":"2013-08-25 14:33:30.000000000","message":"If these are local to this file consider the prefix _","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"a39e8ebb2d78e5e4a28573c50788ca119474e0b3","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from nova.openstack.common import local"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"CONF \u003d cfg.CONF"},{"line_number":25,"context_line":"TRANSPORT \u003d None"},{"line_number":26,"context_line":"NOTIFIER \u003d None"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"ALLOWED_EXMODS \u003d ["}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F2BI%3D","line":25,"in_reply_to":"AAAASX%2F%2F354%3D","updated":"2013-08-26 13:13:59.000000000","message":"I\u0027ve used __all__ instead","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b8cf00a3dececcd89fa3d33c46ea7ff8caef50f4","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def cleanup():"},{"line_number":42,"context_line":"    global TRANSPORT, NOTIFIER"},{"line_number":43,"context_line":"    assert TRANSPORT is not None"},{"line_number":44,"context_line":"    assert NOTIFIER is not None"},{"line_number":45,"context_line":"    TRANSPORT.cleanup()"},{"line_number":46,"context_line":"    TRANSPORT \u003d NOTIFIER \u003d None"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F36E%3D","line":43,"updated":"2013-08-25 14:33:30.000000000","message":"Consider:  assert TRANSPORT?","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b8cf00a3dececcd89fa3d33c46ea7ff8caef50f4","unresolved":false,"context_lines":[{"line_number":41,"context_line":"def cleanup():"},{"line_number":42,"context_line":"    global TRANSPORT, NOTIFIER"},{"line_number":43,"context_line":"    assert TRANSPORT is not None"},{"line_number":44,"context_line":"    assert NOTIFIER is not None"},{"line_number":45,"context_line":"    TRANSPORT.cleanup()"},{"line_number":46,"context_line":"    TRANSPORT \u003d NOTIFIER \u003d None"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F36A%3D","line":44,"updated":"2013-08-25 14:33:30.000000000","message":"ditto","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"a39e8ebb2d78e5e4a28573c50788ca119474e0b3","unresolved":false,"context_lines":[{"line_number":41,"context_line":"def cleanup():"},{"line_number":42,"context_line":"    global TRANSPORT, NOTIFIER"},{"line_number":43,"context_line":"    assert TRANSPORT is not None"},{"line_number":44,"context_line":"    assert NOTIFIER is not None"},{"line_number":45,"context_line":"    TRANSPORT.cleanup()"},{"line_number":46,"context_line":"    TRANSPORT \u003d NOTIFIER \u003d None"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASX%2F%2F2A8%3D","line":44,"in_reply_to":"AAAASX%2F%2F36A%3D","updated":"2013-08-26 13:13:59.000000000","message":"I only want to check for None not False, \u0027\u0027\", {}, [], 0, etc.","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"b90ce525dead2947b7174304ec14fcbc6ae53e00","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    messaging.set_transport_defaults(control_exchange)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"def add_extra_exmods(*args):"},{"line_number":78,"context_line":"    EXTRA_EXMODS.extend(args)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FPkE%3D","line":77,"updated":"2013-11-12 13:56:54.000000000","message":"This or anything related to EXTRA_MODS does not seem to be used anywhere so why not just drop it based on YAGNI :) ?","commit_id":"705c5d491af9486b13134ccb27b8a88c952e9fc0"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"2b0ffab2e299f974adad4c6807048cf1ba761e32","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    messaging.set_transport_defaults(control_exchange)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"def add_extra_exmods(*args):"},{"line_number":78,"context_line":"    EXTRA_EXMODS.extend(args)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FOmI%3D","line":77,"in_reply_to":"AAAATn%2F%2FPkE%3D","updated":"2013-11-12 15:51:43.000000000","message":"It\u0027s used in nova.test:\n\n  rpc.add_extra_exmods(\u0027nova.test\u0027)\n\nTook me a while to find it though :)","commit_id":"705c5d491af9486b13134ccb27b8a88c952e9fc0"}],"nova/tests/api/openstack/compute/contrib/test_cells.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"17173f25e419b88457573c91e1099902880d9f6e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from nova.tests.api.openstack import fakes"},{"line_number":32,"context_line":"from nova.tests import utils"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CONF \u003d cfg.CONF"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class BaseCellsTest(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":69,"id":"AAAATn%2F%2FK78%3D","line":34,"updated":"2013-11-13 12:15:14.000000000","message":"this is not used","commit_id":"cd715384f1fb297dfffce037444710226089abf7"}],"nova/tests/api/openstack/compute/plugins/v3/test_cells.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"17173f25e419b88457573c91e1099902880d9f6e","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from nova.tests.api.openstack import fakes"},{"line_number":31,"context_line":"from nova.tests import utils"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"CONF \u003d cfg.CONF"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class BaseCellsTest(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":69,"id":"AAAATn%2F%2FK74%3D","line":33,"updated":"2013-11-13 12:15:14.000000000","message":"this is not used","commit_id":"cd715384f1fb297dfffce037444710226089abf7"}],"nova/tests/cast_as_call.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"b90ce525dead2947b7174304ec14fcbc6ae53e00","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    def _stub_out(stubs, obj):"},{"line_number":39,"context_line":"        orig_prepare \u003d obj.prepare"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        def prepare(self, *args, **kwargs):"},{"line_number":42,"context_line":"            cctxt \u003d orig_prepare(self, *args, **kwargs)"},{"line_number":43,"context_line":"            CastAsCall._stub_out(stubs, cctxt)  # woo, recurse!"},{"line_number":44,"context_line":"            return cctxt"}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FPTA%3D","line":41,"updated":"2013-11-12 13:56:54.000000000","message":"Neat! It will stub it on dynamically created stuff too. Awesomeness! Would be nice to add a comment on this though.","commit_id":"705c5d491af9486b13134ccb27b8a88c952e9fc0"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"2b0ffab2e299f974adad4c6807048cf1ba761e32","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        def prepare(self, *args, **kwargs):"},{"line_number":42,"context_line":"            cctxt \u003d orig_prepare(self, *args, **kwargs)"},{"line_number":43,"context_line":"            CastAsCall._stub_out(stubs, cctxt)  # woo, recurse!"},{"line_number":44,"context_line":"            return cctxt"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        stubs.Set(obj, \u0027prepare\u0027, prepare)"}],"source_content_type":"text/x-python","patch_set":68,"id":"AAAATn%2F%2FOl4%3D","line":43,"updated":"2013-11-12 15:51:43.000000000","message":"I did add a comment - how did you miss it? :)","commit_id":"705c5d491af9486b13134ccb27b8a88c952e9fc0"}],"nova/tests/network/test_rpcapi.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b5fc5577c7f5a93c3206886554e793fc6f393138","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        rpcapi \u003d network_rpcapi.NetworkAPI()"},{"line_number":44,"context_line":"        self.assertIsNotNone(rpcapi.client)"},{"line_number":45,"context_line":"        self.assertEquals(rpcapi.client.target.topic, CONF.network_topic)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        expected_retval \u003d \u0027foo\u0027 if method \u003d\u003d \u0027call\u0027 else None"},{"line_number":48,"context_line":"        expected_version \u003d kwargs.pop(\u0027version\u0027, None)"}],"source_content_type":"text/x-python","patch_set":39,"id":"AAAASn%2F%2FmJA%3D","line":45,"updated":"2013-09-02 21:33:23.000000000","message":"please use assertEqual as assertEquals is deprecated","commit_id":"e490bbc82410c460e422597c67f2965016feaa2a"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"fbdf91759dea62bc2668221559907155bf259d42","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        rpcapi \u003d network_rpcapi.NetworkAPI()"},{"line_number":44,"context_line":"        self.assertIsNotNone(rpcapi.client)"},{"line_number":45,"context_line":"        self.assertEquals(rpcapi.client.target.topic, CONF.network_topic)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        expected_retval \u003d \u0027foo\u0027 if method \u003d\u003d \u0027call\u0027 else None"},{"line_number":48,"context_line":"        expected_version \u003d kwargs.pop(\u0027version\u0027, None)"}],"source_content_type":"text/x-python","patch_set":39,"id":"AAAASn%2F%2Ffds%3D","line":45,"in_reply_to":"AAAASn%2F%2FlVQ%3D","updated":"2013-09-04 06:12:49.000000000","message":"Done","commit_id":"e490bbc82410c460e422597c67f2965016feaa2a"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"0f75fe95366450629e21f64e717a5c2e3145774f","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        rpcapi \u003d network_rpcapi.NetworkAPI()"},{"line_number":44,"context_line":"        self.assertIsNotNone(rpcapi.client)"},{"line_number":45,"context_line":"        self.assertEquals(rpcapi.client.target.topic, CONF.network_topic)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        expected_retval \u003d \u0027foo\u0027 if method \u003d\u003d \u0027call\u0027 else None"},{"line_number":48,"context_line":"        expected_version \u003d kwargs.pop(\u0027version\u0027, None)"}],"source_content_type":"text/x-python","patch_set":39,"id":"AAAASn%2F%2FlVQ%3D","line":45,"in_reply_to":"AAAASn%2F%2FmJA%3D","updated":"2013-09-03 07:37:18.000000000","message":"Yes, at some point we\u0027ll enforce the non-usage of assertEquals. Right now, though, this is only one of ~1500 uses of the method in Nova.","commit_id":"e490bbc82410c460e422597c67f2965016feaa2a"}],"nova/utils.py":[{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"554dae37b42b5f86a92448d57f4dcbf727062e11","unresolved":false,"context_lines":[{"line_number":964,"context_line":"            try:"},{"line_number":965,"context_line":"                return func(*args, **kwargs)"},{"line_number":966,"context_line":"            except messaging.ExpectedException as e:"},{"line_number":967,"context_line":"                raise (e.exc_info[1], None, e.exc_info[2])"},{"line_number":968,"context_line":"        return wrapper"},{"line_number":969,"context_line":""},{"line_number":970,"context_line":""}],"source_content_type":"text/x-python","patch_set":52,"id":"AAAATH%2F%2FnAQ%3D","line":967,"updated":"2013-10-13 01:21:17.000000000","message":"@markmc, when i tried this patch, i remember adding the following statement before this raise to get pylint to skip logging this line as an error\n\n    # pylint: disable-msg\u003dE0702","commit_id":"057d34003fd6cef4fa65ac7861eefcea24b47a17"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"c2d8ecd5b3113601dada797c74567b009db37ffd","unresolved":false,"context_lines":[{"line_number":964,"context_line":"            try:"},{"line_number":965,"context_line":"                return func(*args, **kwargs)"},{"line_number":966,"context_line":"            except messaging.ExpectedException as e:"},{"line_number":967,"context_line":"                raise (e.exc_info[1], None, e.exc_info[2])"},{"line_number":968,"context_line":"        return wrapper"},{"line_number":969,"context_line":""},{"line_number":970,"context_line":""}],"source_content_type":"text/x-python","patch_set":52,"id":"AAAATH%2F%2Flss%3D","line":967,"in_reply_to":"AAAATH%2F%2FnAQ%3D","updated":"2013-10-14 06:33:10.000000000","message":"Right, you mean this warning:\n\n  nova/utils.py:1096: [E0702, ExceptionHelper.__getattr__.wrapper] Raising tuple while only classes, instances or string are allowed\n\nSee my response to Joe in patch set 44 - this warning isn\u0027t introduced by this patch, so I don\u0027t think addressing it should be mixed up in this patch","commit_id":"057d34003fd6cef4fa65ac7861eefcea24b47a17"}],"setup.cfg":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b8cf00a3dececcd89fa3d33c46ea7ff8caef50f4","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    nova.openstack.common.notififier.no_op_notifier \u003d oslo.messaging.notify._impl_noop:NoOpDriver"},{"line_number":156,"context_line":"    nova.openstack.common.notififier.rpc_notifier2 \u003d oslo.messaging.notify._impl_messaging:MessagingV2Driver"},{"line_number":157,"context_line":"    nova.openstack.common.notififier.rpc_notifier \u003d oslo.messaging.notify._impl_messaging:MessagingDriver"},{"line_number":158,"context_line":"    nova.openstack.common.notififier.test_notifier \u003d oslo.messaging.notify._impl_test:TestDriver"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"[build_sphinx]"},{"line_number":161,"context_line":"all_files \u003d 1"}],"source_content_type":"text/x-ttcn-cfg","patch_set":30,"id":"AAAASX%2F%2F350%3D","line":158,"updated":"2013-08-25 14:33:30.000000000","message":"Do test related items need to be added here. I am not sure.","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"a39e8ebb2d78e5e4a28573c50788ca119474e0b3","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    nova.openstack.common.notififier.no_op_notifier \u003d oslo.messaging.notify._impl_noop:NoOpDriver"},{"line_number":156,"context_line":"    nova.openstack.common.notififier.rpc_notifier2 \u003d oslo.messaging.notify._impl_messaging:MessagingV2Driver"},{"line_number":157,"context_line":"    nova.openstack.common.notififier.rpc_notifier \u003d oslo.messaging.notify._impl_messaging:MessagingDriver"},{"line_number":158,"context_line":"    nova.openstack.common.notififier.test_notifier \u003d oslo.messaging.notify._impl_test:TestDriver"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"[build_sphinx]"},{"line_number":161,"context_line":"all_files \u003d 1"}],"source_content_type":"text/x-ttcn-cfg","patch_set":30,"id":"AAAASX%2F%2F2A0%3D","line":158,"in_reply_to":"AAAASX%2F%2F350%3D","updated":"2013-08-26 13:13:59.000000000","message":"Yeah, unlikely anyone is using these ... but safer not to make assumptions","commit_id":"bc79d903ddeb3c507a5a4cbd63ba8937963260e1"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"78c976b8ae76d4232b2ad2f15f7da29bfb1b053c","unresolved":false,"context_lines":[{"line_number":154,"context_line":"oslo.messaging.drivers \u003d"},{"line_number":155,"context_line":"    nova.openstack.common.rpc.impl_kombu \u003d oslo.messaging._drivers.impl_rabbit:RabbitDriver"},{"line_number":156,"context_line":"    nova.openstack.common.rpc.impl_qpid \u003d oslo.messaging._drivers.impl_qpid:QpidDriver"},{"line_number":157,"context_line":"    nova.openstack.common.rpc.impl_zmq \u003d oslo.messaging._drivers.impl_zmq:ZmqDriver"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"# These are for backwards compat with Grizzly notification_driver configuration values"},{"line_number":160,"context_line":"oslo.messaging.notify.drivers \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":47,"id":"AAAASn%2F%2FbSA%3D","line":157,"updated":"2013-09-04 21:24:29.000000000","message":"I couldn\u0027t find \noslo.messaging._drivers.impl_zmq in \nhttps://github.com/openstack/oslo.messaging/tree/1.2.0a11/oslo/messaging/_drivers","commit_id":"2785ec76bf98360637197bccc29196a61aa00e04"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"869f53ab7d307d64c784ba765f80f2255a7cbc74","unresolved":false,"context_lines":[{"line_number":154,"context_line":"oslo.messaging.drivers \u003d"},{"line_number":155,"context_line":"    nova.openstack.common.rpc.impl_kombu \u003d oslo.messaging._drivers.impl_rabbit:RabbitDriver"},{"line_number":156,"context_line":"    nova.openstack.common.rpc.impl_qpid \u003d oslo.messaging._drivers.impl_qpid:QpidDriver"},{"line_number":157,"context_line":"    nova.openstack.common.rpc.impl_zmq \u003d oslo.messaging._drivers.impl_zmq:ZmqDriver"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"# These are for backwards compat with Grizzly notification_driver configuration values"},{"line_number":160,"context_line":"oslo.messaging.notify.drivers \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":47,"id":"AAAASn%2F%2FbCU%3D","line":157,"in_reply_to":"AAAASn%2F%2FbMU%3D","updated":"2013-09-04 22:07:57.000000000","message":"ahh .. as usual you are one step ahead","commit_id":"2785ec76bf98360637197bccc29196a61aa00e04"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"f3e80bf4a74cc9a75474f6f2765ec230a929a0ff","unresolved":false,"context_lines":[{"line_number":154,"context_line":"oslo.messaging.drivers \u003d"},{"line_number":155,"context_line":"    nova.openstack.common.rpc.impl_kombu \u003d oslo.messaging._drivers.impl_rabbit:RabbitDriver"},{"line_number":156,"context_line":"    nova.openstack.common.rpc.impl_qpid \u003d oslo.messaging._drivers.impl_qpid:QpidDriver"},{"line_number":157,"context_line":"    nova.openstack.common.rpc.impl_zmq \u003d oslo.messaging._drivers.impl_zmq:ZmqDriver"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"# These are for backwards compat with Grizzly notification_driver configuration values"},{"line_number":160,"context_line":"oslo.messaging.notify.drivers \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":47,"id":"AAAASn%2F%2FbMU%3D","line":157,"in_reply_to":"AAAASn%2F%2FbSA%3D","updated":"2013-09-04 21:39:28.000000000","message":"See Ie299c2695d81d0473cea81d40114326b89de0011","commit_id":"2785ec76bf98360637197bccc29196a61aa00e04"}]}
