)]}'
{"nova/rpc/impl_kombu.py":[{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"05bafc54aabf59ca98273bbc5ab1d6a17a15346c","unresolved":false,"context_lines":[{"line_number":646,"context_line":"            except StopIteration:"},{"line_number":647,"context_line":"                return"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def ack(self):"},{"line_number":650,"context_line":"        while True:"},{"line_number":651,"context_line":"            ack \u003d self.ack_queue.get()"},{"line_number":652,"context_line":"            ack()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F9Yc%3D","line":649,"updated":"2012-05-10 20:25:09.000000000","message":"This is a little confusing:\n\nAn function named `ack` that pull a callable off of a queue, also named `ack` and then calls that function `ack` which is not itself :)\n\nMaybe this function should be called: `ack_loop` or `drain_acks` or something.","commit_id":"7218e7f1148f2351aec7cb84a64807506da93934"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"55ca165828990d6b694604321a70333922a77e41","unresolved":false,"context_lines":[{"line_number":646,"context_line":"            except StopIteration:"},{"line_number":647,"context_line":"                return"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def ack(self):"},{"line_number":650,"context_line":"        while True:"},{"line_number":651,"context_line":"            ack \u003d self.ack_queue.get()"},{"line_number":652,"context_line":"            ack()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F9Wk%3D","line":649,"in_reply_to":"AAAAHX%2F%2F9Yc%3D","updated":"2012-05-10 20:31:25.000000000","message":"The naming is probably the least of my worried about this :) (but I agree with your point)","commit_id":"7218e7f1148f2351aec7cb84a64807506da93934"}],"nova/rpc/impl_qpid.py":[{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"05bafc54aabf59ca98273bbc5ab1d6a17a15346c","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    def consume(self):"},{"line_number":135,"context_line":"        \"\"\"Fetch the message and pass it to the callback object\"\"\""},{"line_number":136,"context_line":"        message \u003d self.receiver.fetch()"},{"line_number":137,"context_line":"        self.callback(message.content, lambda: pass)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def get_receiver(self):"},{"line_number":140,"context_line":"        return self.receiver"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F9Y4%3D","line":137,"updated":"2012-05-10 20:25:09.000000000","message":"This is a syntax error, lambdas require an expression not a statement.","commit_id":"7218e7f1148f2351aec7cb84a64807506da93934"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"55ca165828990d6b694604321a70333922a77e41","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    def consume(self):"},{"line_number":135,"context_line":"        \"\"\"Fetch the message and pass it to the callback object\"\"\""},{"line_number":136,"context_line":"        message \u003d self.receiver.fetch()"},{"line_number":137,"context_line":"        self.callback(message.content, lambda: pass)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def get_receiver(self):"},{"line_number":140,"context_line":"        return self.receiver"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F9Ws%3D","line":137,"in_reply_to":"AAAAHX%2F%2F9Y4%3D","updated":"2012-05-10 20:31:25.000000000","message":"Good call. I always make this mistake.","commit_id":"7218e7f1148f2351aec7cb84a64807506da93934"}],"nova/virt/xenapi/vmops.py":[{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"05bafc54aabf59ca98273bbc5ab1d6a17a15346c","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    return vdis"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"class CreateVM(object):"},{"line_number":115,"context_line":"    def __init__(self, ops, instance, image_meta, network_info):"},{"line_number":116,"context_line":"        self.ops \u003d ops"},{"line_number":117,"context_line":"        self.instance \u003d instance"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F9YM%3D","line":114,"updated":"2012-05-10 20:25:09.000000000","message":"Maybe eventually we could even move this out to:\n\nxenapi/actions/create_vm.py or something.","commit_id":"7218e7f1148f2351aec7cb84a64807506da93934"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"7c7916f22cc917cc5742db0fe96608a8a21c9982","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    return vdis"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"class CreateVM(object):"},{"line_number":115,"context_line":"    def __init__(self, ops, instance, image_meta, network_info):"},{"line_number":116,"context_line":"        self.ops \u003d ops"},{"line_number":117,"context_line":"        self.instance \u003d instance"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F9WA%3D","line":114,"in_reply_to":"AAAAHX%2F%2F9XE%3D","updated":"2012-05-10 20:36:43.000000000","message":"Maybe. Some will be really simple, `reboot` for example, so wouldn\u0027t be all that useful. But create_vm or migrate are incredibly complex and could be worth it to break out into a separate file.\n\nJust thinking out loud here...","commit_id":"7218e7f1148f2351aec7cb84a64807506da93934"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"55ca165828990d6b694604321a70333922a77e41","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    return vdis"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"class CreateVM(object):"},{"line_number":115,"context_line":"    def __init__(self, ops, instance, image_meta, network_info):"},{"line_number":116,"context_line":"        self.ops \u003d ops"},{"line_number":117,"context_line":"        self.instance \u003d instance"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F9XE%3D","line":114,"in_reply_to":"AAAAHX%2F%2F9YM%3D","updated":"2012-05-10 20:31:25.000000000","message":"Would we do the same for every driver method?","commit_id":"7218e7f1148f2351aec7cb84a64807506da93934"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"05bafc54aabf59ca98273bbc5ab1d6a17a15346c","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"class CreateVM(object):"},{"line_number":115,"context_line":"    def __init__(self, ops, instance, image_meta, network_info):"},{"line_number":116,"context_line":"        self.ops \u003d ops"},{"line_number":117,"context_line":"        self.instance \u003d instance"},{"line_number":118,"context_line":"        self.image_meta \u003d image_meta"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F9Xw%3D","line":115,"updated":"2012-05-10 20:25:09.000000000","message":"Could we also bind a `context` and a `session`, or is that getting too greedy?","commit_id":"7218e7f1148f2351aec7cb84a64807506da93934"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"6fe6d0dfcd066cdf9f867f0566b21fe95bdbc763","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"class CreateVM(object):"},{"line_number":115,"context_line":"    def __init__(self, ops, instance, image_meta, network_info):"},{"line_number":116,"context_line":"        self.ops \u003d ops"},{"line_number":117,"context_line":"        self.instance \u003d instance"},{"line_number":118,"context_line":"        self.image_meta \u003d image_meta"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F9VE%3D","line":115,"in_reply_to":"AAAAHX%2F%2F9Vs%3D","updated":"2012-05-10 20:41:12.000000000","message":"I don\u0027t want to go the vm_utils route either. Going completely stateless will require moving some of the helper methods from VMOps out too. I\u0027m completely fine with that, but that\u0027s probably best done as a change before this one. It\u0027ll make diffs easier to read then too.","commit_id":"7218e7f1148f2351aec7cb84a64807506da93934"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"7c7916f22cc917cc5742db0fe96608a8a21c9982","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"class CreateVM(object):"},{"line_number":115,"context_line":"    def __init__(self, ops, instance, image_meta, network_info):"},{"line_number":116,"context_line":"        self.ops \u003d ops"},{"line_number":117,"context_line":"        self.instance \u003d instance"},{"line_number":118,"context_line":"        self.image_meta \u003d image_meta"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F9Vs%3D","line":115,"in_reply_to":"AAAAHX%2F%2F9W0%3D","updated":"2012-05-10 20:36:43.000000000","message":"Yeah, torn here.\n\nIf we went that route, would we make this just completely stateless, in which case perhaps we just create a new file so that we get a stateless namespace to hold all of this?\n\n(classes with a bunch of classmethods ala vm_utils, seems just wrong to me).","commit_id":"7218e7f1148f2351aec7cb84a64807506da93934"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"55ca165828990d6b694604321a70333922a77e41","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"class CreateVM(object):"},{"line_number":115,"context_line":"    def __init__(self, ops, instance, image_meta, network_info):"},{"line_number":116,"context_line":"        self.ops \u003d ops"},{"line_number":117,"context_line":"        self.instance \u003d instance"},{"line_number":118,"context_line":"        self.image_meta \u003d image_meta"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F9W0%3D","line":115,"in_reply_to":"AAAAHX%2F%2F9Xw%3D","updated":"2012-05-10 20:31:25.000000000","message":"I\u0027ve been throwing around the idea of going the other way, don\u0027t bind anything. Most of the methods pull self.instance into a local variable. It might be easier to pass it as an argument then.","commit_id":"7218e7f1148f2351aec7cb84a64807506da93934"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"05bafc54aabf59ca98273bbc5ab1d6a17a15346c","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        self.network_info \u003d network_info"},{"line_number":120,"context_line":"        self.steps \u003d [getattr(self, step) for step in self.steps]"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def _get_vbds(self, session, vm_ref):"},{"line_number":123,"context_line":"        vbds \u003d {}"},{"line_number":124,"context_line":"        for vbd_ref in session.call_xenapi(\u0027VM.get_VBDs\u0027, vm_ref):"},{"line_number":125,"context_line":"            vbd \u003d session.call_xenapi(\u0027VBD.get_record\u0027, vbd_ref)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F9YI%3D","line":122,"updated":"2012-05-10 20:25:09.000000000","message":"This function feels `vm_utils\u0027-like since it just operates on a session and vm_ref and doesn\u0027t make use of `self`.","commit_id":"7218e7f1148f2351aec7cb84a64807506da93934"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"55ca165828990d6b694604321a70333922a77e41","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        self.network_info \u003d network_info"},{"line_number":120,"context_line":"        self.steps \u003d [getattr(self, step) for step in self.steps]"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def _get_vbds(self, session, vm_ref):"},{"line_number":123,"context_line":"        vbds \u003d {}"},{"line_number":124,"context_line":"        for vbd_ref in session.call_xenapi(\u0027VM.get_VBDs\u0027, vm_ref):"},{"line_number":125,"context_line":"            vbd \u003d session.call_xenapi(\u0027VBD.get_record\u0027, vbd_ref)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F9Ww%3D","line":122,"in_reply_to":"AAAAHX%2F%2F9YI%3D","updated":"2012-05-10 20:31:25.000000000","message":"Good point. get_vdis_for_vm above is the same. I\u0027ll work on that.","commit_id":"7218e7f1148f2351aec7cb84a64807506da93934"}]}
