)]}'
{"bin/nova-manage":[{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"523cf50c3356d85317a0e451874d7cf45473b66a","unresolved":false,"context_lines":[{"line_number":2090,"context_line":"        is_parent \u003d ztype \u003d\u003d \u0027parent\u0027"},{"line_number":2091,"context_line":"        values \u003d {\u0027name\u0027: name,"},{"line_number":2092,"context_line":"                  \u0027is_parent\u0027: is_parent,"},{"line_number":2093,"context_line":"                  \u0027username\u0027: username,"},{"line_number":2094,"context_line":"                  \u0027rpc_host\u0027: hostname,"},{"line_number":2095,"context_line":"                  \u0027rpc_port\u0027: int(port),"},{"line_number":2096,"context_line":"                  \u0027rpc_virtual_host\u0027: virtual_host,"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"AAAAFH%2F%2F%2Fds%3D","line":2093,"updated":"2012-03-23 21:42:01.000000000","message":"Needs \u0027password\u0027: password,","commit_id":"93261b01fa21a3b29a64940effa9e2fd393fdbdb"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"e648f6c0d2479f6899326bbb875ae4ff2c41c184","unresolved":false,"context_lines":[{"line_number":1607,"context_line":"                \u0027list\u0027: \u0027Usage: nova-manage cell list\u0027}"},{"line_number":1608,"context_line":"        print topics.get(topic, \u0027Unknown topic\u0027)"},{"line_number":1609,"context_line":""},{"line_number":1610,"context_line":"    def create(self, name, ztype, username, hostname, port,"},{"line_number":1611,"context_line":"            password, virtual_host, woffset, wscale):"},{"line_number":1612,"context_line":""},{"line_number":1613,"context_line":"        if ztype not in [\u0027parent\u0027, \u0027child\u0027]:"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAAFH%2F%2F%2FD8%3D","line":1610,"updated":"2012-03-26 17:18:03.000000000","message":"Is `ztype` a legacy name still referring to zones?\n\nShould this be `cell_type`?","commit_id":"288cb6c354dcfabe9ae9171e7332377dca4c10e0"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"f210542a7f2c5a653156ff7bcd3489ca940b4b22","unresolved":false,"context_lines":[{"line_number":1607,"context_line":"                \u0027list\u0027: \u0027Usage: nova-manage cell list\u0027}"},{"line_number":1608,"context_line":"        print topics.get(topic, \u0027Unknown topic\u0027)"},{"line_number":1609,"context_line":""},{"line_number":1610,"context_line":"    def create(self, name, ztype, username, hostname, port,"},{"line_number":1611,"context_line":"            password, virtual_host, woffset, wscale):"},{"line_number":1612,"context_line":""},{"line_number":1613,"context_line":"        if ztype not in [\u0027parent\u0027, \u0027child\u0027]:"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAAFH%2F%2F%2BCc%3D","line":1610,"in_reply_to":"AAAAFH%2F%2F%2FD8%3D","updated":"2012-04-09 09:06:31.000000000","message":"Yup... will fix!","commit_id":"288cb6c354dcfabe9ae9171e7332377dca4c10e0"}],"nova/api/openstack/compute/contrib/zones.py":[{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"a1981e4a85bcf72a82c481ad916de884399552b0","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 2011-2012 OpenStack LLC."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F3yc%3D","line":2,"updated":"2012-02-22 13:39:00.000000000","message":"Why do we need this anymore when we\u0027re using nova-manage?","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"2971b1ee2741b151d18c84a629a297aa2e932044","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 2011-2012 OpenStack LLC."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F3j0%3D","line":2,"in_reply_to":"AAAAEn%2F%2F3yc%3D","updated":"2012-02-22 19:26:39.000000000","message":"I had just re-added it for convenience but I had pretty much decided to remove it as well. :)   Or... remove the calls that modify the zones DB.\n\nI was going to add some other functionality here... like the \"force a broadcast of all instance info for project X\"..  Ie, emergency buttons in case things at the top get out of whack and we need an immediate repair.","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"}],"nova/cells/manager.py":[{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"e648f6c0d2479f6899326bbb875ae4ff2c41c184","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        self.scheduler \u003d cells_scheduler_cls(self)"},{"line_number":111,"context_line":"        self.cell_info_cls \u003d cell_info_cls"},{"line_number":112,"context_line":"        self.my_cell_info \u003d cell_info_cls(FLAGS.cell_name, is_me\u003dTrue)"},{"line_number":113,"context_line":"        my_cell_capabs \u003d dict([cap.split(\u0027\u003d\u0027, 1)"},{"line_number":114,"context_line":"                for cap in FLAGS.cell_capabilities])"},{"line_number":115,"context_line":"        self.my_cell_info.update_metadata(my_cell_capabs)"},{"line_number":116,"context_line":"        self.response_queues \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAFH%2F%2F%2FCo%3D","line":113,"updated":"2012-03-26 17:18:03.000000000","message":"Should we also be splitting on the `;` as well to produce a dict of sets?\n\nJust thinking out loud here, I wonder if caps should ultimately be stored as flattened sets to make it easier to perform set operations on, e.g.\n\nset([\"os-linux\", \"os-windows\", \"hypervisor-xen\", ...])","commit_id":"288cb6c354dcfabe9ae9171e7332377dca4c10e0"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"f210542a7f2c5a653156ff7bcd3489ca940b4b22","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        self.scheduler \u003d cells_scheduler_cls(self)"},{"line_number":111,"context_line":"        self.cell_info_cls \u003d cell_info_cls"},{"line_number":112,"context_line":"        self.my_cell_info \u003d cell_info_cls(FLAGS.cell_name, is_me\u003dTrue)"},{"line_number":113,"context_line":"        my_cell_capabs \u003d dict([cap.split(\u0027\u003d\u0027, 1)"},{"line_number":114,"context_line":"                for cap in FLAGS.cell_capabilities])"},{"line_number":115,"context_line":"        self.my_cell_info.update_metadata(my_cell_capabs)"},{"line_number":116,"context_line":"        self.response_queues \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAFH%2F%2F%2BCU%3D","line":113,"in_reply_to":"AAAAFH%2F%2F%2FCo%3D","updated":"2012-04-09 09:06:31.000000000","message":"Ya.  Sounds reasonable.  I\u0027ll take a look when I get more into the capability stuff very very soon.  Right now, this happened to just be copied from the old zones implementation.","commit_id":"288cb6c354dcfabe9ae9171e7332377dca4c10e0"}],"nova/compute/zones_api.py":[{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"a1981e4a85bcf72a82c481ad916de884399552b0","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class ComputeZonesAPI(compute_api.API):"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def cast_to_zones(self, context, instance, method, *args, **kwargs):"},{"line_number":40,"context_line":"        instance_uuid \u003d instance[\u0027uuid\u0027]"},{"line_number":41,"context_line":"        zone_name \u003d instance[\u0027zone_name\u0027]"},{"line_number":42,"context_line":"        if not zone_name:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F3%2BQ%3D","line":39,"updated":"2012-02-22 13:39:00.000000000","message":"_cast_to_zones()? (and in parent if required)","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"a1981e4a85bcf72a82c481ad916de884399552b0","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        zones_api.cast_service_api_method(context, zone_name, \u0027compute\u0027,"},{"line_number":45,"context_line":"                method, instance_uuid, *args, **kwargs)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def call_to_zones(self, context, instance, method, *args, **kwargs):"},{"line_number":48,"context_line":"        instance_uuid \u003d instance[\u0027uuid\u0027]"},{"line_number":49,"context_line":"        zone_name \u003d instance[\u0027zone_name\u0027]"},{"line_number":50,"context_line":"        if not zone_name:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F3%2BM%3D","line":47,"updated":"2012-02-22 13:39:00.000000000","message":"_call_to_zones()?","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"2971b1ee2741b151d18c84a629a297aa2e932044","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        zones_api.cast_service_api_method(context, zone_name, \u0027compute\u0027,"},{"line_number":45,"context_line":"                method, instance_uuid, *args, **kwargs)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def call_to_zones(self, context, instance, method, *args, **kwargs):"},{"line_number":48,"context_line":"        instance_uuid \u003d instance[\u0027uuid\u0027]"},{"line_number":49,"context_line":"        zone_name \u003d instance[\u0027zone_name\u0027]"},{"line_number":50,"context_line":"        if not zone_name:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F3jc%3D","line":47,"in_reply_to":"AAAAEn%2F%2F3%2BM%3D","updated":"2012-02-22 19:26:39.000000000","message":"Yeah, leading underscore probably appropriate for both.","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"a1981e4a85bcf72a82c481ad916de884399552b0","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                \u0027compute\u0027, method, instance_uuid, *args, **kwargs)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def _cast_or_call_compute_message(self, *args, **kwargs):"},{"line_number":56,"context_line":"        \"\"\"In some cases we might super() and we don\u0027t want the parent"},{"line_number":57,"context_line":"        class to try to send any messages to compute directly."},{"line_number":58,"context_line":"        \"\"\""},{"line_number":59,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F38I%3D","line":56,"updated":"2012-02-22 13:39:00.000000000","message":"Not sure why \"super\" would be the issue here?","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"2971b1ee2741b151d18c84a629a297aa2e932044","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                \u0027compute\u0027, method, instance_uuid, *args, **kwargs)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def _cast_or_call_compute_message(self, *args, **kwargs):"},{"line_number":56,"context_line":"        \"\"\"In some cases we might super() and we don\u0027t want the parent"},{"line_number":57,"context_line":"        class to try to send any messages to compute directly."},{"line_number":58,"context_line":"        \"\"\""},{"line_number":59,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F3ic%3D","line":56,"in_reply_to":"AAAAEn%2F%2F38I%3D","updated":"2012-02-22 19:26:39.000000000","message":"Sorry, some of my comments are a bit lacking.  Was rushing.  Really I need a general comment to describe the whole flow in here.\n\nThe reason I stub this method out is that ComputeAPI calls to it at the end of each method... to send a message off to the compute manager.   Since below, I\u0027m trying to use as much ComputeAPI code as possible, I\u0027m doing super() in most cases.  This means I need the cast/call to compute to be a No-op.  Ideally, this method would cast/call to Zones instead, but the problem is that the arguments needed for Zones are different than the arguments needed for compute manager in a lot of cases.  (Zones re-calls compute_api in the child, not compute_manager).  So, below, you\u0027ll see a lot of: super() and then \u0027cast_to_zones()\u0027.\n\nHopefully refactorings of messaging between API and compute can allow us to just override \"_cast_or_call_compute_message\" with a cast/call to zones in the future and then I can ditch a ton of overrides below.\n\nDunno if that helped.. :)","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"a1981e4a85bcf72a82c481ad916de884399552b0","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        \"\"\"Retrieve diagnostics for the given instance.\"\"\""},{"line_number":270,"context_line":"        # FIXME(comstud): Cache this?"},{"line_number":271,"context_line":"        # Also: only calling super() to get state/policy checking"},{"line_number":272,"context_line":"        super(ComputeZonesAPI, self).get_diagnostics(context, instance)"},{"line_number":273,"context_line":"        return self.call_to_zones(context, instance, \u0027get_diagnostics\u0027)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def get_actions(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F3yE%3D","line":272,"updated":"2012-02-22 13:39:00.000000000","message":"don\u0027t we know where the instance lives? Shouldn\u0027t we just forward to the appropriate zone? Why call parent?\n\nWon\u0027t this always gen an exception if the instance lives in this zone (since call_to_zones will always fail)?","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"2971b1ee2741b151d18c84a629a297aa2e932044","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        \"\"\"Retrieve diagnostics for the given instance.\"\"\""},{"line_number":270,"context_line":"        # FIXME(comstud): Cache this?"},{"line_number":271,"context_line":"        # Also: only calling super() to get state/policy checking"},{"line_number":272,"context_line":"        super(ComputeZonesAPI, self).get_diagnostics(context, instance)"},{"line_number":273,"context_line":"        return self.call_to_zones(context, instance, \u0027get_diagnostics\u0027)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def get_actions(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F3iA%3D","line":272,"in_reply_to":"AAAAEn%2F%2F3yE%3D","updated":"2012-02-22 19:26:39.000000000","message":"In this case, I\u0027m only calling super() to get the policy checking.  There\u0027s not a lot of point in calling super() here other than that, but I did this in a lot of cases in case people add additional code into ComputeAPI().\n\nAs far as the exception comment, this class is only for API.  But, I guess I don\u0027t think anything stops one from having compute workers (and thus instances) in the API zone.  I think call_to_zones should still work... but I\u0027ve not tested it.  It\u0027ll work as long as \u0027zone_name\u0027 is set in the instance.  Am I missing something else?\n\nKeep in mind, I don\u0027t like how I had to do a lot of this and it should evolve into something more clean. ;)","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"}],"nova/db/api.py":[{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"a1981e4a85bcf72a82c481ad916de884399552b0","unresolved":false,"context_lines":[{"line_number":579,"context_line":"        zones_api.instance_destroy(context, rv)"},{"line_number":580,"context_line":"    except Exception:"},{"line_number":581,"context_line":"        # Ignore zones failures"},{"line_number":582,"context_line":"        pass"},{"line_number":583,"context_line":"    return rv"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F4D8%3D","line":582,"updated":"2012-02-22 13:39:00.000000000","message":"Why do we ignore zone failures? If we want to ignore it, shouldn\u0027t we know if zones are enabled or not? If not, perhaps we should re-raise?","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"2971b1ee2741b151d18c84a629a297aa2e932044","unresolved":false,"context_lines":[{"line_number":579,"context_line":"        zones_api.instance_destroy(context, rv)"},{"line_number":580,"context_line":"    except Exception:"},{"line_number":581,"context_line":"        # Ignore zones failures"},{"line_number":582,"context_line":"        pass"},{"line_number":583,"context_line":"    return rv"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F3ho%3D","line":582,"in_reply_to":"AAAAEn%2F%2F4D8%3D","updated":"2012-02-22 19:26:39.000000000","message":"Zones disabled will be a no-op because zones_api checks the flag, so it\u0027s not really for that.  The reason I chose to ignore exceptions is that I didn\u0027t want zone communication to break current behavior.  The broadcast update should be transparent.  If this event doesn\u0027t make it up, we\u0027ll have some self healing code (not included in this branch) to sync things back up.","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"e648f6c0d2479f6899326bbb875ae4ff2c41c184","unresolved":false,"context_lines":[{"line_number":532,"context_line":"    try:"},{"line_number":533,"context_line":"        cells_api.instance_destroy(context, rv)"},{"line_number":534,"context_line":"    except Exception:"},{"line_number":535,"context_line":"        # Ignore cells failures"},{"line_number":536,"context_line":"        pass"},{"line_number":537,"context_line":"    return rv"},{"line_number":538,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAFH%2F%2F%2FD4%3D","line":535,"updated":"2012-03-26 17:18:03.000000000","message":"Should we log exceptions here?","commit_id":"288cb6c354dcfabe9ae9171e7332377dca4c10e0"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"f210542a7f2c5a653156ff7bcd3489ca940b4b22","unresolved":false,"context_lines":[{"line_number":532,"context_line":"    try:"},{"line_number":533,"context_line":"        cells_api.instance_destroy(context, rv)"},{"line_number":534,"context_line":"    except Exception:"},{"line_number":535,"context_line":"        # Ignore cells failures"},{"line_number":536,"context_line":"        pass"},{"line_number":537,"context_line":"    return rv"},{"line_number":538,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAFH%2F%2F99o%3D","line":535,"in_reply_to":"AAAAFH%2F%2F%2FD4%3D","updated":"2012-04-09 09:06:31.000000000","message":"Yeah, probably. :)","commit_id":"288cb6c354dcfabe9ae9171e7332377dca4c10e0"}],"nova/exception.py":[{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"4db3db53ea2fb2dec6a7aaf29e8810952ece3e13","unresolved":false,"context_lines":[{"line_number":983,"context_line":"    message \u003d _(\"Detected existing vlan with id %(vlan)\")"},{"line_number":984,"context_line":""},{"line_number":985,"context_line":""},{"line_number":986,"context_line":"\u003c\u003c\u003c\u003c\u003c\u003c\u003c HEAD"},{"line_number":987,"context_line":"class InstanceNotFound(NotFound):"},{"line_number":988,"context_line":"    message \u003d _(\"Instance %(instance_id)s could not be found.\")"},{"line_number":989,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F4F0%3D","line":986,"updated":"2012-02-22 00:25:06.000000000","message":"Mismerge","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"}],"nova/flags.py":[{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"4db3db53ea2fb2dec6a7aaf29e8810952ece3e13","unresolved":false,"context_lines":[{"line_number":452,"context_line":"    cfg.StrOpt(\u0027volume_api_class\u0027,"},{"line_number":453,"context_line":"                default\u003d\u0027nova.volume.api.API\u0027,"},{"line_number":454,"context_line":"                help\u003d\u0027The volume API class to use\u0027),"},{"line_number":455,"context_line":"\u003c\u003c\u003c\u003c\u003c\u003c\u003c HEAD"},{"line_number":456,"context_line":"    cfg.StrOpt(\u0027security_group_handler\u0027,"},{"line_number":457,"context_line":"               default\u003d\u0027nova.network.quantum.sg.NullSecurityGroupHandler\u0027,"},{"line_number":458,"context_line":"               help\u003d\u0027security group handler class\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F4F8%3D","line":455,"updated":"2012-02-22 00:25:06.000000000","message":"Mismerge","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"}],"nova/tests/cells/__init__.py":[{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"e648f6c0d2479f6899326bbb875ae4ff2c41c184","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 2011 Openstack LLC."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAFH%2F%2F%2FDs%3D","line":3,"updated":"2012-03-26 17:18:03.000000000","message":"2012","commit_id":"288cb6c354dcfabe9ae9171e7332377dca4c10e0"}],"nova/tests/cells/fakes.py":[{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"e648f6c0d2479f6899326bbb875ae4ff2c41c184","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2011 OpenStack LLC."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAFH%2F%2F%2FDk%3D","line":1,"updated":"2012-03-26 17:18:03.000000000","message":"2012","commit_id":"288cb6c354dcfabe9ae9171e7332377dca4c10e0"}],"nova/tests/zones/test_zones_manager.py":[{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"a1981e4a85bcf72a82c481ad916de884399552b0","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        zone_info \u003d self._find_next_hop(\u0027a\u0027, \u0027a\u0027, \u0027up\u0027)"},{"line_number":83,"context_line":"        self.assertTrue(zone_info.is_me)"},{"line_number":84,"context_line":"        zone_info \u003d self._find_next_hop(\u0027a\u0027, \u0027a\u0027, \u0027down\u0027)"},{"line_number":85,"context_line":"        self.assertTrue(zone_info.is_me)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_find_next_hop_inconsistency(self):"},{"line_number":88,"context_line":"        self.assertRaises(exception.ZoneRoutingInconsistency,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F3x0%3D","line":85,"updated":"2012-02-22 13:39:00.000000000","message":"Empty / None case?","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"2971b1ee2741b151d18c84a629a297aa2e932044","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        zone_info \u003d self._find_next_hop(\u0027a\u0027, \u0027a\u0027, \u0027up\u0027)"},{"line_number":83,"context_line":"        self.assertTrue(zone_info.is_me)"},{"line_number":84,"context_line":"        zone_info \u003d self._find_next_hop(\u0027a\u0027, \u0027a\u0027, \u0027down\u0027)"},{"line_number":85,"context_line":"        self.assertTrue(zone_info.is_me)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_find_next_hop_inconsistency(self):"},{"line_number":88,"context_line":"        self.assertRaises(exception.ZoneRoutingInconsistency,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F3hg%3D","line":85,"in_reply_to":"AAAAEn%2F%2F3x0%3D","updated":"2012-02-22 19:26:39.000000000","message":"Hm?","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"a1981e4a85bcf72a82c481ad916de884399552b0","unresolved":false,"context_lines":[{"line_number":214,"context_line":"            self.assertIn(\u0027exception in grandchild\u0027, str(e))"},{"line_number":215,"context_line":"        else:"},{"line_number":216,"context_line":"            self.fail(\"rpc.common.RemoteError not raised\")"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    def test_broadcast_message_down(self):"},{"line_number":219,"context_line":"        \"\"\"Test broadcast to all child/grandchild zones.\"\"\""},{"line_number":220,"context_line":"        fake_context \u003d \u0027fake_context\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F3xs%3D","line":217,"updated":"2012-02-22 13:39:00.000000000","message":"No tests for need_response \u003d False (including the exception case)","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"2971b1ee2741b151d18c84a629a297aa2e932044","unresolved":false,"context_lines":[{"line_number":214,"context_line":"            self.assertIn(\u0027exception in grandchild\u0027, str(e))"},{"line_number":215,"context_line":"        else:"},{"line_number":216,"context_line":"            self.fail(\"rpc.common.RemoteError not raised\")"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    def test_broadcast_message_down(self):"},{"line_number":219,"context_line":"        \"\"\"Test broadcast to all child/grandchild zones.\"\"\""},{"line_number":220,"context_line":"        fake_context \u003d \u0027fake_context\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F3hY%3D","line":217,"in_reply_to":"AAAAEn%2F%2F3xs%3D","updated":"2012-02-22 19:26:39.000000000","message":"Yeah, I can add those.  The \u0027need_response \u003d True\u0027 case was most important as it\u0027s the most complicated. :)  I think I felt the \u0027need_response \u003d True\u0027 case automatically covers the \u0027False\u0027 case..  but maybe not.","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"}],"nova/tests/zones/test_zones_scheduler.py":[{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"a1981e4a85bcf72a82c481ad916de884399552b0","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from nova import rpc"},{"line_number":21,"context_line":"from nova import test"},{"line_number":22,"context_line":"from nova.tests.zones import fakes"},{"line_number":23,"context_line":"from nova.zones import scheduler as zones_scheduler"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"FLAGS \u003d flags.FLAGS"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F3x8%3D","line":23,"updated":"2012-02-22 13:39:00.000000000","message":"missing?","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"}],"nova/zones/driver.py":[{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"a1981e4a85bcf72a82c481ad916de884399552b0","unresolved":false,"context_lines":[{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from nova.db import base"},{"line_number":21,"context_line":"from nova import flags"},{"line_number":22,"context_line":"from nova import log as logging"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(\u0027nova.zones.driver\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F4Dk%3D","line":21,"updated":"2012-02-22 13:39:00.000000000","message":"not required","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"a1981e4a85bcf72a82c481ad916de884399552b0","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from nova.db import base"},{"line_number":21,"context_line":"from nova import flags"},{"line_number":22,"context_line":"from nova import log as logging"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(\u0027nova.zones.driver\u0027)"},{"line_number":25,"context_line":"FLAGS \u003d flags.FLAGS"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F4DY%3D","line":22,"updated":"2012-02-22 13:39:00.000000000","message":"not required","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"a1981e4a85bcf72a82c481ad916de884399552b0","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from nova import flags"},{"line_number":22,"context_line":"from nova import log as logging"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(\u0027nova.zones.driver\u0027)"},{"line_number":25,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F4DU%3D","line":24,"updated":"2012-02-22 13:39:00.000000000","message":"not used","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"a1981e4a85bcf72a82c481ad916de884399552b0","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from nova import log as logging"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(\u0027nova.zones.driver\u0027)"},{"line_number":25,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class BaseZonesDriver(base.Base):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F4Do%3D","line":25,"updated":"2012-02-22 13:39:00.000000000","message":"Not used","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"2971b1ee2741b151d18c84a629a297aa2e932044","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from nova import log as logging"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(\u0027nova.zones.driver\u0027)"},{"line_number":25,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class BaseZonesDriver(base.Base):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F3hI%3D","line":25,"in_reply_to":"AAAAEn%2F%2F4Do%3D","updated":"2012-02-22 19:26:39.000000000","message":"I\u0027ll remove them all...  I had left them in until I was sure they were not needed.","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"}],"nova/zones/manager.py":[{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"a1981e4a85bcf72a82c481ad916de884399552b0","unresolved":false,"context_lines":[{"line_number":360,"context_line":"            zones \u003d self.get_parent_zones()"},{"line_number":361,"context_line":"        else:"},{"line_number":362,"context_line":"            zones \u003d self.get_child_zones()"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"        hopcount +\u003d 1"},{"line_number":365,"context_line":"        bcast_msg \u003d zones_common.form_broadcast_message(direction,"},{"line_number":366,"context_line":"                message[\u0027method\u0027], message[\u0027args\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F3xk%3D","line":363,"updated":"2012-02-22 13:39:00.000000000","message":"What if no parent/child zones?","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"2971b1ee2741b151d18c84a629a297aa2e932044","unresolved":false,"context_lines":[{"line_number":360,"context_line":"            zones \u003d self.get_parent_zones()"},{"line_number":361,"context_line":"        else:"},{"line_number":362,"context_line":"            zones \u003d self.get_child_zones()"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"        hopcount +\u003d 1"},{"line_number":365,"context_line":"        bcast_msg \u003d zones_common.form_broadcast_message(direction,"},{"line_number":366,"context_line":"                message[\u0027method\u0027], message[\u0027args\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F3hA%3D","line":363,"in_reply_to":"AAAAEn%2F%2F3xk%3D","updated":"2012-02-22 19:26:39.000000000","message":"Looks like we just process the message locally and that\u0027s it.  Seems fine.  Although there\u0027s an unneeded call to form the broadcast message that can be optimized out in that case.","commit_id":"24972adb6a14c0eebe5f9318ee040f171f3c0364"}],"nova/zones/scheduler.py":[{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"d3d9bdb00fba2f44dd6c7ddcd38e24008f38295d","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class ZonesScheduler(base.Base):"},{"line_number":33,"context_line":"    \"\"\"The zones scheduler.\"\"\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def __init__(self, manager):"},{"line_number":36,"context_line":"        super(ZonesScheduler, self).__init__()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F3u0%3D","line":33,"updated":"2012-02-22 15:24:52.000000000","message":"might be a good place for a general overview of the flow?","commit_id":"10b2acea8275a90f3f0ca8a2fb866056a478748f"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"d3d9bdb00fba2f44dd6c7ddcd38e24008f38295d","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self.manager \u003d manager"},{"line_number":38,"context_line":"        self.compute_api \u003d compute.API()"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def _create_instance_here(self, context, request_spec):"},{"line_number":41,"context_line":"        instance_values \u003d request_spec[\u0027instance_properties\u0027]"},{"line_number":42,"context_line":"        instance \u003d self.compute_api.create_db_entry_for_new_instance("},{"line_number":43,"context_line":"                context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F3u4%3D","line":40,"updated":"2012-02-22 15:24:52.000000000","message":"doc string","commit_id":"10b2acea8275a90f3f0ca8a2fb866056a478748f"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"d3d9bdb00fba2f44dd6c7ddcd38e24008f38295d","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                request_spec[\u0027block_device_mapping\u0027])"},{"line_number":49,"context_line":"        bcast_msg \u003d zones_common.form_instance_update_broadcast_message("},{"line_number":50,"context_line":"                instance)"},{"line_number":51,"context_line":"        self.manager.broadcast_message(context, **bcast_msg[\u0027args\u0027])"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def _get_weighted_zones_for_instance(self, context, request_spec,"},{"line_number":54,"context_line":"            filter_properties):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F3uc%3D","line":51,"updated":"2012-02-22 15:24:52.000000000","message":"Hmm, I\u0027m missing something I think. \n\nIs this actually creating the instance (ie. routing to the compute scheduler) or is it just updating the db and other zone managers?","commit_id":"10b2acea8275a90f3f0ca8a2fb866056a478748f"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"0a0057d65f23ebe1f5a18f6d76a701184be286da","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                request_spec[\u0027block_device_mapping\u0027])"},{"line_number":49,"context_line":"        bcast_msg \u003d zones_common.form_instance_update_broadcast_message("},{"line_number":50,"context_line":"                instance)"},{"line_number":51,"context_line":"        self.manager.broadcast_message(context, **bcast_msg[\u0027args\u0027])"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def _get_weighted_zones_for_instance(self, context, request_spec,"},{"line_number":54,"context_line":"            filter_properties):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F3gM%3D","line":51,"in_reply_to":"AAAAEn%2F%2F3uc%3D","updated":"2012-02-22 19:30:49.000000000","message":"I guess a doc string would have helped explain it!  hehe.  This method probably needs a better name.  All it does is create the DB entry.  Since the DB entry has been created here, we know the instance is going to be in this zone.  So I go ahead and push an update up immediately so that the top level can set the zone name on the instance ASAP.\n\nThe caller of this method is the one that tells the local scheduler to schedule it.  In the case of scheduler failures or what not, we\u0027d probably want to change this to not broadcast immediately.","commit_id":"10b2acea8275a90f3f0ca8a2fb866056a478748f"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"d3d9bdb00fba2f44dd6c7ddcd38e24008f38295d","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        return children"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def schedule_run_instance(self, context, **kwargs):"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        request_spec \u003d kwargs.get(\u0027request_spec\u0027)"},{"line_number":66,"context_line":"        filter_properties \u003d kwargs.get(\u0027filter_properties\u0027, {})"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F3u8%3D","line":64,"updated":"2012-02-22 15:24:52.000000000","message":"Doc string","commit_id":"10b2acea8275a90f3f0ca8a2fb866056a478748f"}]}
