)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"12bd138a1328e221fad51e8de0170ae6588d4bf8","unresolved":false,"context_lines":[{"line_number":13,"context_line":"support to kombu, but the kombu API did not map very well to Qpid, which"},{"line_number":14,"context_line":"is based on a newer version of AMQP.  It was easier to just map the nova"},{"line_number":15,"context_line":"rpc API to Qpid."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The structure of impl_qpid is largely based on impl_kombu, but adapted"},{"line_number":18,"context_line":"to use the Qpid APIs as necessary.  The unit tests were written from"},{"line_number":19,"context_line":"scratch instead of taking advantage of the common rpc unit tests.  The"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAD3%2F%2F8po%3D","line":16,"updated":"2012-01-19 11:54:29.000000000","message":"Should reference your excellent http://wiki.openstack.org/QpidSupport now that it exists","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6496130ca6a0a005bccfb84fbee786575842d3a4","unresolved":false,"context_lines":[{"line_number":13,"context_line":"support to kombu, but the kombu API did not map very well to Qpid, which"},{"line_number":14,"context_line":"is based on a newer version of AMQP.  It was easier to just map the nova"},{"line_number":15,"context_line":"rpc API to Qpid."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The structure of impl_qpid is largely based on impl_kombu, but adapted"},{"line_number":18,"context_line":"to use the Qpid APIs as necessary.  The unit tests were written from"},{"line_number":19,"context_line":"scratch instead of taking advantage of the common rpc unit tests.  The"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAD3%2F%2F8mc%3D","line":16,"in_reply_to":"AAAAD3%2F%2F8po%3D","updated":"2012-01-19 23:59:27.000000000","message":"Done","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"}],"nova/flags.py":[{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"12bd138a1328e221fad51e8de0170ae6588d4bf8","unresolved":false,"context_lines":[{"line_number":330,"context_line":"DEFINE_string(\u0027qpid_protocol\u0027, \u0027tcp\u0027,"},{"line_number":331,"context_line":"              \"Transport to use, either \u0027tcp\u0027 or \u0027ssl\u0027\")"},{"line_number":332,"context_line":"DEFINE_boolean(\u0027qpid_tcp_nodelay\u0027, True, \u0027Disable Nagle algorithm\u0027)"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"DEFINE_list(\u0027enabled_apis\u0027,"},{"line_number":335,"context_line":"            [\u0027ec2\u0027, \u0027osapi_compute\u0027, \u0027osapi_volume\u0027, \u0027metadata\u0027],"},{"line_number":336,"context_line":"            \u0027list of APIs to enable by default\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8pk%3D","line":333,"updated":"2012-01-19 11:54:29.000000000","message":"All of this should be in impl_qpid, since the flags are only used there","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6496130ca6a0a005bccfb84fbee786575842d3a4","unresolved":false,"context_lines":[{"line_number":330,"context_line":"DEFINE_string(\u0027qpid_protocol\u0027, \u0027tcp\u0027,"},{"line_number":331,"context_line":"              \"Transport to use, either \u0027tcp\u0027 or \u0027ssl\u0027\")"},{"line_number":332,"context_line":"DEFINE_boolean(\u0027qpid_tcp_nodelay\u0027, True, \u0027Disable Nagle algorithm\u0027)"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"DEFINE_list(\u0027enabled_apis\u0027,"},{"line_number":335,"context_line":"            [\u0027ec2\u0027, \u0027osapi_compute\u0027, \u0027osapi_volume\u0027, \u0027metadata\u0027],"},{"line_number":336,"context_line":"            \u0027list of APIs to enable by default\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8mQ%3D","line":333,"in_reply_to":"AAAAD3%2F%2F8pk%3D","updated":"2012-01-19 23:59:27.000000000","message":"I think moving them will break --help, but after talking to markmc about this, it sounds like this is the case for a lot of other options, as well.  I\u0027ll move them.","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"}],"nova/rpc/impl_qpid.py":[{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"4618b70733293749a5dadf97dfce804a422947c1","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from nova.rpc.common import RemoteError, LOG"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"import qpid.messaging"},{"line_number":37,"context_line":"import qpid.messaging.exceptions"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"# Needed for tests"},{"line_number":40,"context_line":"eventlet.monkey_patch()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F%2B1A%3D","line":37,"updated":"2012-01-11 22:24:52.000000000","message":"per HACKING, this should go above the nova imports","commit_id":"1026771dc76691251cf53958aa68abb809b6ead0"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"4618b70733293749a5dadf97dfce804a422947c1","unresolved":false,"context_lines":[{"line_number":37,"context_line":"import qpid.messaging.exceptions"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"# Needed for tests"},{"line_number":40,"context_line":"eventlet.monkey_patch()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F%2B1I%3D","line":40,"updated":"2012-01-11 22:24:52.000000000","message":"shouldn\u0027t need this any more as it is in the test runner now.\n\nnova/testing/runner.py","commit_id":"1026771dc76691251cf53958aa68abb809b6ead0"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ce6904bbb4c9292187646c738225e30161b875b2","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        self.receiver.capacity \u003d 1"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def consume(self):"},{"line_number":65,"context_line":"        \"\"\" fetch the message and pass it to the callback object"},{"line_number":66,"context_line":"        \"\"\""},{"line_number":67,"context_line":"        message \u003d self.receiver.fetch()"},{"line_number":68,"context_line":"        self.callback(message.content)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F9vo%3D","line":65,"updated":"2012-01-16 21:09:44.000000000","message":"Nit: please remove the space between \u0027\"\"\"\u0027 and \u0027f\u0027 and capitalize the \u0027f\u0027.  Also, since this is a one-line docstring, please put the closing triple-quote on the same line…","commit_id":"abcfa8dfe212dab3826c293eabb59617aea94162"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"1f585b7a74c58e216c60e8566ab76cf24dc3f295","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        self.receiver.capacity \u003d 1"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def consume(self):"},{"line_number":65,"context_line":"        \"\"\" fetch the message and pass it to the callback object"},{"line_number":66,"context_line":"        \"\"\""},{"line_number":67,"context_line":"        message \u003d self.receiver.fetch()"},{"line_number":68,"context_line":"        self.callback(message.content)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F9r4%3D","line":65,"in_reply_to":"AAAAD3%2F%2F9vo%3D","updated":"2012-01-16 21:51:46.000000000","message":"Done","commit_id":"abcfa8dfe212dab3826c293eabb59617aea94162"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ce6904bbb4c9292187646c738225e30161b875b2","unresolved":false,"context_lines":[{"line_number":211,"context_line":"class DirectPublisher(Publisher):"},{"line_number":212,"context_line":"    \"\"\"Publisher class for \u0027direct\u0027\"\"\""},{"line_number":213,"context_line":"    def __init__(self, session, msg_id):"},{"line_number":214,"context_line":"        \"\"\"init a \u0027direct\u0027 publisher."},{"line_number":215,"context_line":"        \"\"\""},{"line_number":216,"context_line":"        exchange \u003d msg_id"},{"line_number":217,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F9vk%3D","line":214,"updated":"2012-01-16 21:09:44.000000000","message":"Nit: please capitialize the first word of the docstring.  Also, since this is a one-line docstring, put the closing triple-quote on the name line…","commit_id":"abcfa8dfe212dab3826c293eabb59617aea94162"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"1f585b7a74c58e216c60e8566ab76cf24dc3f295","unresolved":false,"context_lines":[{"line_number":211,"context_line":"class DirectPublisher(Publisher):"},{"line_number":212,"context_line":"    \"\"\"Publisher class for \u0027direct\u0027\"\"\""},{"line_number":213,"context_line":"    def __init__(self, session, msg_id):"},{"line_number":214,"context_line":"        \"\"\"init a \u0027direct\u0027 publisher."},{"line_number":215,"context_line":"        \"\"\""},{"line_number":216,"context_line":"        exchange \u003d msg_id"},{"line_number":217,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F9r0%3D","line":214,"in_reply_to":"AAAAD3%2F%2F9vk%3D","updated":"2012-01-16 21:51:46.000000000","message":"Done","commit_id":"abcfa8dfe212dab3826c293eabb59617aea94162"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ce6904bbb4c9292187646c738225e30161b875b2","unresolved":false,"context_lines":[{"line_number":513,"context_line":"        self.pooled \u003d pooled"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"    def __enter__(self):"},{"line_number":516,"context_line":"        \"\"\"with ConnectionContext() should return self\"\"\""},{"line_number":517,"context_line":"        return self"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"    def _done(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F9vU%3D","line":516,"updated":"2012-01-16 21:09:44.000000000","message":"Femto-nit: please rephrase this so the sentence can start with a capitol letter :)","commit_id":"abcfa8dfe212dab3826c293eabb59617aea94162"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"1f585b7a74c58e216c60e8566ab76cf24dc3f295","unresolved":false,"context_lines":[{"line_number":513,"context_line":"        self.pooled \u003d pooled"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"    def __enter__(self):"},{"line_number":516,"context_line":"        \"\"\"with ConnectionContext() should return self\"\"\""},{"line_number":517,"context_line":"        return self"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"    def _done(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F9rw%3D","line":516,"in_reply_to":"AAAAD3%2F%2F9vU%3D","updated":"2012-01-16 21:51:46.000000000","message":"Done","commit_id":"abcfa8dfe212dab3826c293eabb59617aea94162"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ce6904bbb4c9292187646c738225e30161b875b2","unresolved":false,"context_lines":[{"line_number":534,"context_line":"            self.connection \u003d None"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"    def __exit__(self, exc_type, exc_value, tb):"},{"line_number":537,"context_line":"        \"\"\"end of \u0027with\u0027 statement.  We\u0027re done here.\"\"\""},{"line_number":538,"context_line":"        self._done()"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"    def __del__(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F9vQ%3D","line":537,"updated":"2012-01-16 21:09:44.000000000","message":"Nit: please capitalize \u0027End\u0027","commit_id":"abcfa8dfe212dab3826c293eabb59617aea94162"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"1f585b7a74c58e216c60e8566ab76cf24dc3f295","unresolved":false,"context_lines":[{"line_number":534,"context_line":"            self.connection \u003d None"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"    def __exit__(self, exc_type, exc_value, tb):"},{"line_number":537,"context_line":"        \"\"\"end of \u0027with\u0027 statement.  We\u0027re done here.\"\"\""},{"line_number":538,"context_line":"        self._done()"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"    def __del__(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F9rs%3D","line":537,"in_reply_to":"AAAAD3%2F%2F9vQ%3D","updated":"2012-01-16 21:51:46.000000000","message":"Done","commit_id":"abcfa8dfe212dab3826c293eabb59617aea94162"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"12bd138a1328e221fad51e8de0170ae6588d4bf8","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        \u0027callback\u0027 is the callback to call when messages are received"},{"line_number":50,"context_line":"        \u0027address\u0027 the qpid address string"},{"line_number":51,"context_line":"        \"\"\""},{"line_number":52,"context_line":"        self.session \u003d session"},{"line_number":53,"context_line":"        self.callback \u003d callback"},{"line_number":54,"context_line":"        self.receiver \u003d None"},{"line_number":55,"context_line":"        self.address \u003d address"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8pg%3D","line":52,"updated":"2012-01-19 11:54:29.000000000","message":"Can delete this line and let reconnect() set it, like in impl_kombu","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6496130ca6a0a005bccfb84fbee786575842d3a4","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        \u0027callback\u0027 is the callback to call when messages are received"},{"line_number":50,"context_line":"        \u0027address\u0027 the qpid address string"},{"line_number":51,"context_line":"        \"\"\""},{"line_number":52,"context_line":"        self.session \u003d session"},{"line_number":53,"context_line":"        self.callback \u003d callback"},{"line_number":54,"context_line":"        self.receiver \u003d None"},{"line_number":55,"context_line":"        self.address \u003d address"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8mM%3D","line":52,"in_reply_to":"AAAAD3%2F%2F8pg%3D","updated":"2012-01-19 23:59:27.000000000","message":"Done","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"12bd138a1328e221fad51e8de0170ae6588d4bf8","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        }"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        address \u003d \"%s/%s ; %s\" % (exchange_name, msg_id, json.dumps(addr_opts))"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        super(DirectConsumer, self).__init__(session, callback, address)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8pc%3D","line":107,"updated":"2012-01-19 11:54:29.000000000","message":"Looks a lot of this could be parameterised and moved down into ConsumerBase\n\nPerhaps you already tried that and it was just too ugly?","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6496130ca6a0a005bccfb84fbee786575842d3a4","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        }"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        address \u003d \"%s/%s ; %s\" % (exchange_name, msg_id, json.dumps(addr_opts))"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        super(DirectConsumer, self).__init__(session, callback, address)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8lM%3D","line":107,"in_reply_to":"AAAAD3%2F%2F8pc%3D","updated":"2012-01-19 23:59:27.000000000","message":"Done","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"12bd138a1328e221fad51e8de0170ae6588d4bf8","unresolved":false,"context_lines":[{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def __init__(self):"},{"line_number":291,"context_line":"        self.session \u003d None"},{"line_number":292,"context_line":"        self.consumers \u003d {}"},{"line_number":293,"context_line":"        self.consumer_thread \u003d None"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        self.broker \u003d FLAGS.qpid_hostname + \":\" + FLAGS.qpid_port"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8pQ%3D","line":292,"updated":"2012-01-19 11:54:29.000000000","message":"I think you could have a couple of nice simple helper methods around managing this dict e.g.\n\n  def _register_consumer(self, consumer):\n      self.consumers[str(consumer.get_receiver())] \u003d consumer\n\n  def _lookup_consumer(self, receiver):\n      return self.consumers[str(receiver)]","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6496130ca6a0a005bccfb84fbee786575842d3a4","unresolved":false,"context_lines":[{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def __init__(self):"},{"line_number":291,"context_line":"        self.session \u003d None"},{"line_number":292,"context_line":"        self.consumers \u003d {}"},{"line_number":293,"context_line":"        self.consumer_thread \u003d None"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        self.broker \u003d FLAGS.qpid_hostname + \":\" + FLAGS.qpid_port"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8kc%3D","line":292,"in_reply_to":"AAAAD3%2F%2F8pQ%3D","updated":"2012-01-19 23:59:27.000000000","message":"Done","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"12bd138a1328e221fad51e8de0170ae6588d4bf8","unresolved":false,"context_lines":[{"line_number":325,"context_line":"            except qpid.messaging.exceptions.ConnectionError:"},{"line_number":326,"context_line":"                pass"},{"line_number":327,"context_line":"            self.connection \u003d None"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        while True:"},{"line_number":330,"context_line":"            try:"},{"line_number":331,"context_line":"                self.connection.open()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8pY%3D","line":328,"updated":"2012-01-19 11:54:29.000000000","message":"connection\u003dNone looks wrong here","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6496130ca6a0a005bccfb84fbee786575842d3a4","unresolved":false,"context_lines":[{"line_number":325,"context_line":"            except qpid.messaging.exceptions.ConnectionError:"},{"line_number":326,"context_line":"                pass"},{"line_number":327,"context_line":"            self.connection \u003d None"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        while True:"},{"line_number":330,"context_line":"            try:"},{"line_number":331,"context_line":"                self.connection.open()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8kU%3D","line":328,"in_reply_to":"AAAAD3%2F%2F8pY%3D","updated":"2012-01-19 23:59:27.000000000","message":"Done","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"12bd138a1328e221fad51e8de0170ae6588d4bf8","unresolved":false,"context_lines":[{"line_number":348,"context_line":"    def ensure(self, error_callback, method, *args, **kwargs):"},{"line_number":349,"context_line":"        while True:"},{"line_number":350,"context_line":"            try:"},{"line_number":351,"context_line":"                result \u003d method(*args, **kwargs)"},{"line_number":352,"context_line":"            except qpid.messaging.exceptions.ConnectionError, e:"},{"line_number":353,"context_line":"                pass"},{"line_number":354,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8pU%3D","line":351,"updated":"2012-01-19 11:54:29.000000000","message":"impl_kombu just returns the result here rather than using an else clause - I\u0027d much prefer that approach, the else clause just confusing things","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6496130ca6a0a005bccfb84fbee786575842d3a4","unresolved":false,"context_lines":[{"line_number":348,"context_line":"    def ensure(self, error_callback, method, *args, **kwargs):"},{"line_number":349,"context_line":"        while True:"},{"line_number":350,"context_line":"            try:"},{"line_number":351,"context_line":"                result \u003d method(*args, **kwargs)"},{"line_number":352,"context_line":"            except qpid.messaging.exceptions.ConnectionError, e:"},{"line_number":353,"context_line":"                pass"},{"line_number":354,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8kM%3D","line":351,"in_reply_to":"AAAAD3%2F%2F8pU%3D","updated":"2012-01-19 23:59:27.000000000","message":"Done","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":706,"name":"Brian Lamar","email":"brian.lamar@rackspace.com","username":"blamar"},"change_message_id":"79bf53b55f894952049cb30321d844a352c96478","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        while True:"},{"line_number":350,"context_line":"            try:"},{"line_number":351,"context_line":"                result \u003d method(*args, **kwargs)"},{"line_number":352,"context_line":"            except qpid.messaging.exceptions.ConnectionError, e:"},{"line_number":353,"context_line":"                pass"},{"line_number":354,"context_line":"            else:"},{"line_number":355,"context_line":"                return result"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8ls%3D","line":352,"updated":"2012-01-19 15:40:10.000000000","message":"To add on to what Mark says above, why not call error_callback here in the except instead of just \u0027pass\u0027? Seems like:\n\n  try:\n    return method(*args, **kwargs)\n  except qpid.messaging.exceptions.ConnectionError as error:\n    if error_callback:\n      error_callback(error)\n    self.reconnect()\n\n...makes things clearer to me.","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6496130ca6a0a005bccfb84fbee786575842d3a4","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        while True:"},{"line_number":350,"context_line":"            try:"},{"line_number":351,"context_line":"                result \u003d method(*args, **kwargs)"},{"line_number":352,"context_line":"            except qpid.messaging.exceptions.ConnectionError, e:"},{"line_number":353,"context_line":"                pass"},{"line_number":354,"context_line":"            else:"},{"line_number":355,"context_line":"                return result"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8UA%3D","line":352,"in_reply_to":"AAAAD3%2F%2F8ls%3D","updated":"2012-01-19 23:59:27.000000000","message":"Done","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"12bd138a1328e221fad51e8de0170ae6588d4bf8","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                        publisher.reconnect(self.session)"},{"line_number":413,"context_line":"                except qpid.messaging.exceptions.ConnectionError:"},{"line_number":414,"context_line":"                    pass"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"    def declare_direct_consumer(self, topic, callback):"},{"line_number":417,"context_line":"        \"\"\"Create a \u0027direct\u0027 queue."},{"line_number":418,"context_line":"        In nova\u0027s use, this is generally a msg_id queue used for"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8pM%3D","line":415,"updated":"2012-01-19 11:54:29.000000000","message":"Hmm, why is this method not implemented using the ensure() method like kombu does?","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6496130ca6a0a005bccfb84fbee786575842d3a4","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                        publisher.reconnect(self.session)"},{"line_number":413,"context_line":"                except qpid.messaging.exceptions.ConnectionError:"},{"line_number":414,"context_line":"                    pass"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"    def declare_direct_consumer(self, topic, callback):"},{"line_number":417,"context_line":"        \"\"\"Create a \u0027direct\u0027 queue."},{"line_number":418,"context_line":"        In nova\u0027s use, this is generally a msg_id queue used for"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8kA%3D","line":415,"in_reply_to":"AAAAD3%2F%2F8pM%3D","updated":"2012-01-19 23:59:27.000000000","message":"I thought I had a reason at the time ... but now I don\u0027t.  Done.","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"12bd138a1328e221fad51e8de0170ae6588d4bf8","unresolved":false,"context_lines":[{"line_number":476,"context_line":""},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"class Pool(pools.Pool):"},{"line_number":479,"context_line":"    \"\"\"Class that implements a Pool of Connections.\"\"\""},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    # TODO(comstud): Timeout connections not used in a while"},{"line_number":482,"context_line":"    def create(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8pI%3D","line":479,"updated":"2012-01-19 11:54:29.000000000","message":"Verbatim copy of kombu code; should be shared","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6496130ca6a0a005bccfb84fbee786575842d3a4","unresolved":false,"context_lines":[{"line_number":476,"context_line":""},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"class Pool(pools.Pool):"},{"line_number":479,"context_line":"    \"\"\"Class that implements a Pool of Connections.\"\"\""},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    # TODO(comstud): Timeout connections not used in a while"},{"line_number":482,"context_line":"    def create(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8jk%3D","line":479,"in_reply_to":"AAAAD3%2F%2F8pI%3D","updated":"2012-01-19 23:59:27.000000000","message":"Done","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"12bd138a1328e221fad51e8de0170ae6588d4bf8","unresolved":false,"context_lines":[{"line_number":484,"context_line":"        return Connection()"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"class ConnectionContext(rpc_common.Connection):"},{"line_number":488,"context_line":"    \"\"\"The class that is actually returned to the caller of"},{"line_number":489,"context_line":"    create_connection().  This is a essentially a wrapper around"},{"line_number":490,"context_line":"    Connection that supports \u0027with\u0027 and can return a new Connection or"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8pE%3D","line":487,"updated":"2012-01-19 11:54:29.000000000","message":"Verbatim copy of kombu code; should be shared","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6496130ca6a0a005bccfb84fbee786575842d3a4","unresolved":false,"context_lines":[{"line_number":484,"context_line":"        return Connection()"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"class ConnectionContext(rpc_common.Connection):"},{"line_number":488,"context_line":"    \"\"\"The class that is actually returned to the caller of"},{"line_number":489,"context_line":"    create_connection().  This is a essentially a wrapper around"},{"line_number":490,"context_line":"    Connection that supports \u0027with\u0027 and can return a new Connection or"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8hg%3D","line":487,"in_reply_to":"AAAAD3%2F%2F8pE%3D","updated":"2012-01-19 23:59:27.000000000","message":"Done","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"12bd138a1328e221fad51e8de0170ae6588d4bf8","unresolved":false,"context_lines":[{"line_number":557,"context_line":"            raise exception.InvalidRPCConnectionReuse()"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"class ProxyCallback(object):"},{"line_number":561,"context_line":"    \"\"\"Calls methods on a proxy object based on method and args.\"\"\""},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"    def __init__(self, proxy):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8pA%3D","line":560,"updated":"2012-01-19 11:54:29.000000000","message":"Verbatim copy of kombu code; should be shared","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6496130ca6a0a005bccfb84fbee786575842d3a4","unresolved":false,"context_lines":[{"line_number":557,"context_line":"            raise exception.InvalidRPCConnectionReuse()"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"class ProxyCallback(object):"},{"line_number":561,"context_line":"    \"\"\"Calls methods on a proxy object based on method and args.\"\"\""},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"    def __init__(self, proxy):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8YA%3D","line":560,"in_reply_to":"AAAAD3%2F%2F8pA%3D","updated":"2012-01-19 23:59:27.000000000","message":"Done","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"12bd138a1328e221fad51e8de0170ae6588d4bf8","unresolved":false,"context_lines":[{"line_number":576,"context_line":""},{"line_number":577,"context_line":"        Example: {\u0027method\u0027: \u0027echo\u0027, \u0027args\u0027: {\u0027value\u0027: 42}}"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"        \"\"\""},{"line_number":580,"context_line":"        LOG.debug(_(\u0027received %s\u0027) % message_data)"},{"line_number":581,"context_line":"        ctxt \u003d _unpack_context(message_data)"},{"line_number":582,"context_line":"        method \u003d message_data.get(\u0027method\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8ok%3D","line":579,"updated":"2012-01-19 11:54:29.000000000","message":"Missing some recently introduced local.store code here\n\nThat\u0027s why we need this to share code with kombu :)","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6496130ca6a0a005bccfb84fbee786575842d3a4","unresolved":false,"context_lines":[{"line_number":576,"context_line":""},{"line_number":577,"context_line":"        Example: {\u0027method\u0027: \u0027echo\u0027, \u0027args\u0027: {\u0027value\u0027: 42}}"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"        \"\"\""},{"line_number":580,"context_line":"        LOG.debug(_(\u0027received %s\u0027) % message_data)"},{"line_number":581,"context_line":"        ctxt \u003d _unpack_context(message_data)"},{"line_number":582,"context_line":"        method \u003d message_data.get(\u0027method\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8X8%3D","line":579,"in_reply_to":"AAAAD3%2F%2F8ok%3D","updated":"2012-01-19 23:59:27.000000000","message":"Done","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"12bd138a1328e221fad51e8de0170ae6588d4bf8","unresolved":false,"context_lines":[{"line_number":594,"context_line":"        \"\"\""},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"        node_func \u003d getattr(self.proxy, str(method))"},{"line_number":597,"context_line":"        node_args \u003d dict((str(k), v) for k, v in args.iteritems())"},{"line_number":598,"context_line":"        # NOTE(vish): magic is fun!"},{"line_number":599,"context_line":"        try:"},{"line_number":600,"context_line":"            rval \u003d node_func(context\u003dctxt, **node_args)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8og%3D","line":597,"updated":"2012-01-19 11:54:29.000000000","message":"There was another recent fix here in kombu","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6496130ca6a0a005bccfb84fbee786575842d3a4","unresolved":false,"context_lines":[{"line_number":594,"context_line":"        \"\"\""},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"        node_func \u003d getattr(self.proxy, str(method))"},{"line_number":597,"context_line":"        node_args \u003d dict((str(k), v) for k, v in args.iteritems())"},{"line_number":598,"context_line":"        # NOTE(vish): magic is fun!"},{"line_number":599,"context_line":"        try:"},{"line_number":600,"context_line":"            rval \u003d node_func(context\u003dctxt, **node_args)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8X4%3D","line":597,"in_reply_to":"AAAAD3%2F%2F8og%3D","updated":"2012-01-19 23:59:27.000000000","message":"Done","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"12bd138a1328e221fad51e8de0170ae6588d4bf8","unresolved":false,"context_lines":[{"line_number":612,"context_line":"        return"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"def _unpack_context(msg):"},{"line_number":616,"context_line":"    \"\"\"Unpack context from msg.\"\"\""},{"line_number":617,"context_line":"    context_dict \u003d {}"},{"line_number":618,"context_line":"    for key in list(msg.keys()):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8o8%3D","line":615,"updated":"2012-01-19 11:54:29.000000000","message":"Verbatim copy of kombu code; should be shared","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6496130ca6a0a005bccfb84fbee786575842d3a4","unresolved":false,"context_lines":[{"line_number":612,"context_line":"        return"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"def _unpack_context(msg):"},{"line_number":616,"context_line":"    \"\"\"Unpack context from msg.\"\"\""},{"line_number":617,"context_line":"    context_dict \u003d {}"},{"line_number":618,"context_line":"    for key in list(msg.keys()):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8W8%3D","line":615,"in_reply_to":"AAAAD3%2F%2F8o8%3D","updated":"2012-01-19 23:59:27.000000000","message":"Done","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"12bd138a1328e221fad51e8de0170ae6588d4bf8","unresolved":false,"context_lines":[{"line_number":627,"context_line":"    return RpcContext.from_dict(context_dict)"},{"line_number":628,"context_line":""},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"def _pack_context(msg, context):"},{"line_number":631,"context_line":"    \"\"\"Pack context into msg."},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    Values for message keys need to be less than 255 chars, so we pull"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8o4%3D","line":630,"updated":"2012-01-19 11:54:29.000000000","message":"Verbatim copy of kombu code; should be shared","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6496130ca6a0a005bccfb84fbee786575842d3a4","unresolved":false,"context_lines":[{"line_number":627,"context_line":"    return RpcContext.from_dict(context_dict)"},{"line_number":628,"context_line":""},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"def _pack_context(msg, context):"},{"line_number":631,"context_line":"    \"\"\"Pack context into msg."},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    Values for message keys need to be less than 255 chars, so we pull"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8W4%3D","line":630,"in_reply_to":"AAAAD3%2F%2F8o4%3D","updated":"2012-01-19 23:59:27.000000000","message":"Done","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"12bd138a1328e221fad51e8de0170ae6588d4bf8","unresolved":false,"context_lines":[{"line_number":640,"context_line":"    msg.update(context_d)"},{"line_number":641,"context_line":""},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"class RpcContext(context.RequestContext):"},{"line_number":644,"context_line":"    \"\"\"Context that supports replying to a rpc.call\"\"\""},{"line_number":645,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":646,"context_line":"        msg_id \u003d kwargs.pop(\u0027msg_id\u0027, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8o0%3D","line":643,"updated":"2012-01-19 11:54:29.000000000","message":"Verbatim copy of kombu code; should be shared","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6496130ca6a0a005bccfb84fbee786575842d3a4","unresolved":false,"context_lines":[{"line_number":640,"context_line":"    msg.update(context_d)"},{"line_number":641,"context_line":""},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"class RpcContext(context.RequestContext):"},{"line_number":644,"context_line":"    \"\"\"Context that supports replying to a rpc.call\"\"\""},{"line_number":645,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":646,"context_line":"        msg_id \u003d kwargs.pop(\u0027msg_id\u0027, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8W0%3D","line":643,"in_reply_to":"AAAAD3%2F%2F8o0%3D","updated":"2012-01-19 23:59:27.000000000","message":"Done","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"12bd138a1328e221fad51e8de0170ae6588d4bf8","unresolved":false,"context_lines":[{"line_number":654,"context_line":"                self.msg_id \u003d None"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"class MulticallWaiter(object):"},{"line_number":658,"context_line":"    def __init__(self, connection):"},{"line_number":659,"context_line":"        self._connection \u003d connection"},{"line_number":660,"context_line":"        self._result \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8ow%3D","line":657,"updated":"2012-01-19 11:54:29.000000000","message":"You\u0027ve had to adapt this a little to not use iterconsume() but I suspect the code could still be easily shared with kombu","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6496130ca6a0a005bccfb84fbee786575842d3a4","unresolved":false,"context_lines":[{"line_number":654,"context_line":"                self.msg_id \u003d None"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"class MulticallWaiter(object):"},{"line_number":658,"context_line":"    def __init__(self, connection):"},{"line_number":659,"context_line":"        self._connection \u003d connection"},{"line_number":660,"context_line":"        self._result \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8UE%3D","line":657,"in_reply_to":"AAAAD3%2F%2F8ow%3D","updated":"2012-01-19 23:59:27.000000000","message":"Done","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"12bd138a1328e221fad51e8de0170ae6588d4bf8","unresolved":false,"context_lines":[{"line_number":691,"context_line":"                raise result"},{"line_number":692,"context_line":"            yield result"},{"line_number":693,"context_line":""},{"line_number":694,"context_line":""},{"line_number":695,"context_line":"def create_connection(new\u003dTrue):"},{"line_number":696,"context_line":"    \"\"\"Create a connection\"\"\""},{"line_number":697,"context_line":"    return ConnectionContext(pooled\u003dnot new)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8os%3D","line":694,"updated":"2012-01-19 11:54:29.000000000","message":"All the code from here down should be shared with kombu too","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6496130ca6a0a005bccfb84fbee786575842d3a4","unresolved":false,"context_lines":[{"line_number":691,"context_line":"                raise result"},{"line_number":692,"context_line":"            yield result"},{"line_number":693,"context_line":""},{"line_number":694,"context_line":""},{"line_number":695,"context_line":"def create_connection(new\u003dTrue):"},{"line_number":696,"context_line":"    \"\"\"Create a connection\"\"\""},{"line_number":697,"context_line":"    return ConnectionContext(pooled\u003dnot new)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8UI%3D","line":694,"in_reply_to":"AAAAD3%2F%2F8os%3D","updated":"2012-01-19 23:59:27.000000000","message":"Done","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"12bd138a1328e221fad51e8de0170ae6588d4bf8","unresolved":false,"context_lines":[{"line_number":741,"context_line":"    with ConnectionContext() as conn:"},{"line_number":742,"context_line":"        conn.fanout_send(topic, msg)"},{"line_number":743,"context_line":""},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"def msg_reply(msg_id, reply\u003dNone, failure\u003dNone, ending\u003dFalse):"},{"line_number":746,"context_line":"    \"\"\"Sends a reply or an error on the session signified by msg_id."},{"line_number":747,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8oo%3D","line":744,"updated":"2012-01-19 11:54:29.000000000","message":"Missing the notify function. Perhaps intentional given that you don\u0027t have e.g. qpid_notifier yet?","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6496130ca6a0a005bccfb84fbee786575842d3a4","unresolved":false,"context_lines":[{"line_number":741,"context_line":"    with ConnectionContext() as conn:"},{"line_number":742,"context_line":"        conn.fanout_send(topic, msg)"},{"line_number":743,"context_line":""},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"def msg_reply(msg_id, reply\u003dNone, failure\u003dNone, ending\u003dFalse):"},{"line_number":746,"context_line":"    \"\"\"Sends a reply or an error on the session signified by msg_id."},{"line_number":747,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F8Vc%3D","line":744,"in_reply_to":"AAAAD3%2F%2F8oo%3D","updated":"2012-01-19 23:59:27.000000000","message":"I just missed it.  The \"rabbit_notifier\" is actually generic, and isn\u0027t specific to what rpc implementation is used, as long as it provides the notify function.  I added it now.","commit_id":"5bc66364bdffbfddf4094425b2e1c30d7974f138"}],"nova/tests/rpc/test_qpid.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ce6904bbb4c9292187646c738225e30161b875b2","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        nova.rpc.call()"},{"line_number":55,"context_line":"        nova.rpc.multicall()"},{"line_number":56,"context_line":"    \"\"\""},{"line_number":57,"context_line":"    def setUp(self):"},{"line_number":58,"context_line":"        self.mocker \u003d mox.Mox()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        self.mock_connection \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F9vA%3D","line":57,"updated":"2012-01-16 21:09:44.000000000","message":"Nit: there should be a blank line between the triple-quote and the \u0027def setUp(self):\u0027 line.","commit_id":"abcfa8dfe212dab3826c293eabb59617aea94162"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"1f585b7a74c58e216c60e8566ab76cf24dc3f295","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        nova.rpc.call()"},{"line_number":55,"context_line":"        nova.rpc.multicall()"},{"line_number":56,"context_line":"    \"\"\""},{"line_number":57,"context_line":"    def setUp(self):"},{"line_number":58,"context_line":"        self.mocker \u003d mox.Mox()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        self.mock_connection \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F9rk%3D","line":57,"in_reply_to":"AAAAD3%2F%2F9vA%3D","updated":"2012-01-16 21:51:46.000000000","message":"Done","commit_id":"abcfa8dfe212dab3826c293eabb59617aea94162"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ce6904bbb4c9292187646c738225e30161b875b2","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                \u0027{\"auto-delete\": true, \"durable\": true}, \"type\": \"topic\"}, \u0027 \\"},{"line_number":124,"context_line":"                \u0027\"create\": \"always\", \"link\": {\"x-declare\": {\"auto-delete\": \u0027 \\"},{"line_number":125,"context_line":"                \u0027true, \"exclusive\": false, \"durable\": false}, \"durable\": \u0027 \\"},{"line_number":126,"context_line":"                \u0027true, \"name\": \"impl_qpid_test\"}}\u0027"},{"line_number":127,"context_line":"        self.mock_session.receiver(expected_address).AndReturn("},{"line_number":128,"context_line":"                                                        self.mock_receiver)"},{"line_number":129,"context_line":"        self.mock_receiver.capacity \u003d 1"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F9u4%3D","line":126,"updated":"2012-01-16 21:09:44.000000000","message":"Nit: I like to avoid backslash continuation when I can; if you wrap the string in parentheses, you won\u0027t need the backslashes.","commit_id":"abcfa8dfe212dab3826c293eabb59617aea94162"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"1f585b7a74c58e216c60e8566ab76cf24dc3f295","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                \u0027{\"auto-delete\": true, \"durable\": true}, \"type\": \"topic\"}, \u0027 \\"},{"line_number":124,"context_line":"                \u0027\"create\": \"always\", \"link\": {\"x-declare\": {\"auto-delete\": \u0027 \\"},{"line_number":125,"context_line":"                \u0027true, \"exclusive\": false, \"durable\": false}, \"durable\": \u0027 \\"},{"line_number":126,"context_line":"                \u0027true, \"name\": \"impl_qpid_test\"}}\u0027"},{"line_number":127,"context_line":"        self.mock_session.receiver(expected_address).AndReturn("},{"line_number":128,"context_line":"                                                        self.mock_receiver)"},{"line_number":129,"context_line":"        self.mock_receiver.capacity \u003d 1"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F9rg%3D","line":126,"in_reply_to":"AAAAD3%2F%2F9u4%3D","updated":"2012-01-16 21:51:46.000000000","message":"Done","commit_id":"abcfa8dfe212dab3826c293eabb59617aea94162"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ce6904bbb4c9292187646c738225e30161b875b2","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            expected_address \u003d \u0027impl_qpid_test_fanout ; \u0027 \\"},{"line_number":160,"context_line":"                \u0027{\"node\": {\"x-declare\": {\"auto-delete\": true, \u0027 \\"},{"line_number":161,"context_line":"                \u0027\"durable\": false, \"type\": \"fanout\"}, \u0027 \\"},{"line_number":162,"context_line":"                \u0027\"type\": \"topic\"}, \"create\": \"always\"}\u0027"},{"line_number":163,"context_line":"        else:"},{"line_number":164,"context_line":"            expected_address \u003d \u0027nova/impl_qpid_test ; {\"node\": {\"x-declare\": \u0027\\"},{"line_number":165,"context_line":"                \u0027{\"auto-delete\": true, \"durable\": false}, \"type\": \"topic\"}, \u0027 \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F9u0%3D","line":162,"updated":"2012-01-16 21:09:44.000000000","message":"Ibid.","commit_id":"abcfa8dfe212dab3826c293eabb59617aea94162"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"1f585b7a74c58e216c60e8566ab76cf24dc3f295","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            expected_address \u003d \u0027impl_qpid_test_fanout ; \u0027 \\"},{"line_number":160,"context_line":"                \u0027{\"node\": {\"x-declare\": {\"auto-delete\": true, \u0027 \\"},{"line_number":161,"context_line":"                \u0027\"durable\": false, \"type\": \"fanout\"}, \u0027 \\"},{"line_number":162,"context_line":"                \u0027\"type\": \"topic\"}, \"create\": \"always\"}\u0027"},{"line_number":163,"context_line":"        else:"},{"line_number":164,"context_line":"            expected_address \u003d \u0027nova/impl_qpid_test ; {\"node\": {\"x-declare\": \u0027\\"},{"line_number":165,"context_line":"                \u0027{\"auto-delete\": true, \"durable\": false}, \"type\": \"topic\"}, \u0027 \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F9rc%3D","line":162,"in_reply_to":"AAAAD3%2F%2F9u0%3D","updated":"2012-01-16 21:51:46.000000000","message":"Done","commit_id":"abcfa8dfe212dab3826c293eabb59617aea94162"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ce6904bbb4c9292187646c738225e30161b875b2","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        else:"},{"line_number":164,"context_line":"            expected_address \u003d \u0027nova/impl_qpid_test ; {\"node\": {\"x-declare\": \u0027\\"},{"line_number":165,"context_line":"                \u0027{\"auto-delete\": true, \"durable\": false}, \"type\": \"topic\"}, \u0027 \\"},{"line_number":166,"context_line":"                \u0027\"create\": \"always\"}\u0027"},{"line_number":167,"context_line":"        self.mock_session.sender(expected_address).AndReturn(self.mock_sender)"},{"line_number":168,"context_line":"        self.mock_sender.send(mox.IgnoreArg())"},{"line_number":169,"context_line":"        # This is a pooled connection, so instead of closing it, it gets reset,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F9uw%3D","line":166,"updated":"2012-01-16 21:09:44.000000000","message":"Ibid.","commit_id":"abcfa8dfe212dab3826c293eabb59617aea94162"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"1f585b7a74c58e216c60e8566ab76cf24dc3f295","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        else:"},{"line_number":164,"context_line":"            expected_address \u003d \u0027nova/impl_qpid_test ; {\"node\": {\"x-declare\": \u0027\\"},{"line_number":165,"context_line":"                \u0027{\"auto-delete\": true, \"durable\": false}, \"type\": \"topic\"}, \u0027 \\"},{"line_number":166,"context_line":"                \u0027\"create\": \"always\"}\u0027"},{"line_number":167,"context_line":"        self.mock_session.sender(expected_address).AndReturn(self.mock_sender)"},{"line_number":168,"context_line":"        self.mock_sender.send(mox.IgnoreArg())"},{"line_number":169,"context_line":"        # This is a pooled connection, so instead of closing it, it gets reset,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F9rY%3D","line":166,"in_reply_to":"AAAAD3%2F%2F9uw%3D","updated":"2012-01-16 21:51:46.000000000","message":"Done","commit_id":"abcfa8dfe212dab3826c293eabb59617aea94162"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ce6904bbb4c9292187646c738225e30161b875b2","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        self.mock_receiver.capacity \u003d 1"},{"line_number":217,"context_line":"        send_addr \u003d \u0027nova/impl_qpid_test ; {\"node\": {\"x-declare\": \u0027 \\"},{"line_number":218,"context_line":"            \u0027{\"auto-delete\": true, \"durable\": false}, \"type\": \"topic\"}, \u0027 \\"},{"line_number":219,"context_line":"            \u0027\"create\": \"always\"}\u0027"},{"line_number":220,"context_line":"        self.mock_session.sender(send_addr).AndReturn(self.mock_sender)"},{"line_number":221,"context_line":"        self.mock_sender.send(mox.IgnoreArg())"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F9us%3D","line":219,"updated":"2012-01-16 21:09:44.000000000","message":"Ibid.","commit_id":"abcfa8dfe212dab3826c293eabb59617aea94162"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"1f585b7a74c58e216c60e8566ab76cf24dc3f295","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        self.mock_receiver.capacity \u003d 1"},{"line_number":217,"context_line":"        send_addr \u003d \u0027nova/impl_qpid_test ; {\"node\": {\"x-declare\": \u0027 \\"},{"line_number":218,"context_line":"            \u0027{\"auto-delete\": true, \"durable\": false}, \"type\": \"topic\"}, \u0027 \\"},{"line_number":219,"context_line":"            \u0027\"create\": \"always\"}\u0027"},{"line_number":220,"context_line":"        self.mock_session.sender(send_addr).AndReturn(self.mock_sender)"},{"line_number":221,"context_line":"        self.mock_sender.send(mox.IgnoreArg())"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F9rU%3D","line":219,"in_reply_to":"AAAAD3%2F%2F9us%3D","updated":"2012-01-16 21:51:46.000000000","message":"Done","commit_id":"abcfa8dfe212dab3826c293eabb59617aea94162"}]}
