)]}'
{"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"1f662ca4ed45889a4623359fdafce07ebb08f34e","unresolved":false,"context_lines":[{"line_number":4114,"context_line":"    instances \u003d instance_get_all_by_host(context, host)"},{"line_number":4115,"context_line":"    vms \u003d len(instances)"},{"line_number":4116,"context_line":"    free_ram_mb \u003d compute_node.memory_mb - FLAGS.reserved_host_memory_mb"},{"line_number":4117,"context_line":"    free_disk_gb \u003d compute_node.local_gb - (FLAGS.reserved_host_disk_mb * 1024)"},{"line_number":4118,"context_line":""},{"line_number":4119,"context_line":"    work \u003d 0"},{"line_number":4120,"context_line":"    for instance in instances:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAC3%2F%2F7tg%3D","line":4117,"updated":"2011-12-20 17:38:10.000000000","message":"I\u0027m still debating this reserved stuff in my head.  I\u0027m feeling like it should be handled in the scheduler, but it might complicate the atomic-check-and-set call we\u0027re talking about adding.\n\nIt\u0027d be easy to remove these flags here and have the scheduler just do:  capacity_find(ctxt, min_ram+reserved, ...)\n\nBut.. when we go to \u0027consume\u0027 from this table, we\u0027d have to pass in the deltas to apply along with the reserve to not go under.  If that makes sense.  Can talk about it offline later.\n\nIf we leave the flags in db/api here, I think I\u0027d like to see them moved to be checked in capacity_find() at least so the table doesn\u0027t reflect anything reserved.\n\nHm. :)","commit_id":"90d89791a2bf7dfa08c815c55935b13d3de4edb4"},{"author":{"_account_id":1419,"name":"Mike Pittaro","email":"mikeyp@LaHondaResearch.org","username":"mikeyp-3"},"change_message_id":"82b35ef296caa061dfb8f9dd018447da6e18ac93","unresolved":false,"context_lines":[{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        # This table thingy is how we get atomic UPDATE x \u003d x + 1"},{"line_number":526,"context_line":"        # semantics."},{"line_number":527,"context_line":"        table \u003d models.ComputeNode.__table__"},{"line_number":528,"context_line":"        if free_ram_mb_delta !\u003d 0:"},{"line_number":529,"context_line":"            compute_node.free_ram_mb \u003d table.c.free_ram_mb + free_ram_mb_delta"},{"line_number":530,"context_line":"        if free_disk_gb_delta !\u003d 0:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAD3%2F%2F8VA%3D","line":527,"updated":"2012-01-20 01:01:27.000000000","message":"minor typo - extra spaces","commit_id":"5b21f93c22c263ff4bad54e7cf8bc103f81e5df0"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"be2d267a464a36a3d2dad4975543d2c62c82df11","unresolved":false,"context_lines":[{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        # This table thingy is how we get atomic UPDATE x \u003d x + 1"},{"line_number":526,"context_line":"        # semantics."},{"line_number":527,"context_line":"        table \u003d models.ComputeNode.__table__"},{"line_number":528,"context_line":"        if free_ram_mb_delta !\u003d 0:"},{"line_number":529,"context_line":"            compute_node.free_ram_mb \u003d table.c.free_ram_mb + free_ram_mb_delta"},{"line_number":530,"context_line":"        if free_disk_gb_delta !\u003d 0:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAD3%2F%2F8JI%3D","line":527,"in_reply_to":"AAAAD3%2F%2F8VA%3D","updated":"2012-01-20 13:41:29.000000000","message":"where? what? :)","commit_id":"5b21f93c22c263ff4bad54e7cf8bc103f81e5df0"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"7a7d00d6a975666e9226e54e2556e4f3ee0d547d","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":47,"context_line":"flags.DECLARE(\u0027reserved_host_disk_mb\u0027, \u0027nova.scheduler.zone_manager\u0027)"},{"line_number":48,"context_line":"flags.DECLARE(\u0027reserved_host_memory_mb\u0027, \u0027nova.scheduler.zone_manager\u0027)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"LOG \u003d logging.getLogger(\"nova.db.sqlalchemy\")"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAD3%2F%2F7t8%3D","line":48,"updated":"2012-01-22 03:53:26.000000000","message":"needs rebase.  these are in host_manager now.","commit_id":"44e30b8d7f1cff0e7a2f7bfc7a19d42557769858"}],"nova/db/sqlalchemy/migrate_repo/versions/073_add_capacity.py":[{"author":{"_account_id":1419,"name":"Mike Pittaro","email":"mikeyp@LaHondaResearch.org","username":"mikeyp-3"},"change_message_id":"82b35ef296caa061dfb8f9dd018447da6e18ac93","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    Column(\u0027current_workload\u0027, Integer()),"},{"line_number":24,"context_line":"    Column(\u0027running_vms\u0027, Integer()),"},{"line_number":25,"context_line":"    ]"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def upgrade(migrate_engine):"},{"line_number":29,"context_line":"    # Upgrade operations go here. Don\u0027t create your own engine;"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAD3%2F%2F8To%3D","line":26,"updated":"2012-01-20 01:01:27.000000000","message":"Should these columns be defined in the same order as models.py, so upgraded databases have the same physical layout as new ones ?","commit_id":"5b21f93c22c263ff4bad54e7cf8bc103f81e5df0"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"be2d267a464a36a3d2dad4975543d2c62c82df11","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    Column(\u0027current_workload\u0027, Integer()),"},{"line_number":24,"context_line":"    Column(\u0027running_vms\u0027, Integer()),"},{"line_number":25,"context_line":"    ]"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def upgrade(migrate_engine):"},{"line_number":29,"context_line":"    # Upgrade operations go here. Don\u0027t create your own engine;"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAD3%2F%2F8JE%3D","line":26,"in_reply_to":"AAAAD3%2F%2F8To%3D","updated":"2012-01-20 13:41:29.000000000","message":"good point","commit_id":"5b21f93c22c263ff4bad54e7cf8bc103f81e5df0"}],"nova/notifier/capacity_notifier.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"62478188eb12d0e6c47363ba20b75e2aae7f3e6a","unresolved":false,"context_lines":[{"line_number":79,"context_line":"              \"ram %(free_ram_mb)d, disk %(free_disk_gb)d, \""},{"line_number":80,"context_line":"              \"work %(work)d, vms%(vms)d\" % locals())"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    api.capacity_update(context.get_admin_context(), host,"},{"line_number":83,"context_line":"        free_ram_mb_delta\u003dfree_ram_mb, free_disk_gb_delta\u003dfree_disk_gb,"},{"line_number":84,"context_line":"        work_delta\u003dwork, vm_delta\u003dvms)"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAC3%2F%2F7yg%3D","line":82,"updated":"2011-12-20 07:13:15.000000000","message":"Supposed to: \u0027from nova import db\u0027 and then call db.capacity_update vs using \u0027db.api\u0027 directly.  Don\u0027t remember why... other than the code has been standardized on this.\n\nAlso:  I think we should comment out this call until the scheduler   has the corresponding \u0027create\u0027 part so the table is not updating yet.\n\nAlso: Since the scheduler handles the \u0027create\u0027 side, do you think this notifier should just be a cast to the \u0027scheduler\u0027 topic?  That way, the scheduler is directly modifying the DB.  It won\u0027t matter if the \u0027end\u0027 event lags slightly.","commit_id":"90d89791a2bf7dfa08c815c55935b13d3de4edb4"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"1f662ca4ed45889a4623359fdafce07ebb08f34e","unresolved":false,"context_lines":[{"line_number":79,"context_line":"              \"ram %(free_ram_mb)d, disk %(free_disk_gb)d, \""},{"line_number":80,"context_line":"              \"work %(work)d, vms%(vms)d\" % locals())"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    api.capacity_update(context.get_admin_context(), host,"},{"line_number":83,"context_line":"        free_ram_mb_delta\u003dfree_ram_mb, free_disk_gb_delta\u003dfree_disk_gb,"},{"line_number":84,"context_line":"        work_delta\u003dwork, vm_delta\u003dvms)"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAC3%2F%2F7uA%3D","line":82,"in_reply_to":"AAAAC3%2F%2F7xQ%3D","updated":"2011-12-20 17:38:10.000000000","message":"The db.api comment is in the docstring in db/api.py itself.\n\nHm.  Was just thinking that without the scheduler side done yet, the DB is gonna be all out of whack as instances are deleted.  But now that I look at the compute manager, I see it resets the table every time compute is restarted.  So, it looks like leaving this call is fine. :)\n\nAs far as where to do the update.. I guess it\u0027s fine here. ;)","commit_id":"90d89791a2bf7dfa08c815c55935b13d3de4edb4"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"de1df54f88ba39cba828c093d153a3daf11b0916","unresolved":false,"context_lines":[{"line_number":79,"context_line":"              \"ram %(free_ram_mb)d, disk %(free_disk_gb)d, \""},{"line_number":80,"context_line":"              \"work %(work)d, vms%(vms)d\" % locals())"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    api.capacity_update(context.get_admin_context(), host,"},{"line_number":83,"context_line":"        free_ram_mb_delta\u003dfree_ram_mb, free_disk_gb_delta\u003dfree_disk_gb,"},{"line_number":84,"context_line":"        work_delta\u003dwork, vm_delta\u003dvms)"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAC3%2F%2F7xQ%3D","line":82,"in_reply_to":"AAAAC3%2F%2F7yg%3D","updated":"2011-12-20 14:39:37.000000000","message":"Hmm, don\u0027t see that in HACKING. But ok. \n\nI\u0027d also have to update compute.manager to not initialize the row too ... is there an issue with updating the table?\n\nI debated sending the call back to the scheduler ... while it\u0027s nice to have the code in the same place, it makes the entire system more complex. Is it worth it?","commit_id":"90d89791a2bf7dfa08c815c55935b13d3de4edb4"},{"author":{"_account_id":236,"name":"Monsyne Dragon","email":"mdragon@rackspace.com","username":"mdragon"},"change_message_id":"339e920827b6ffaea8f1f4e22c88968237d0fa5e","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import json"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from nova import context"},{"line_number":19,"context_line":"from nova import db"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAD3%2F%2F%2B94%3D","line":16,"updated":"2012-01-11 17:09:22.000000000","message":"Uneeded import.","commit_id":"8bf812722eff4f85fcfd5c0fe622fe1653fbecbc"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"661d11d2eca80997af1be2f25de4d514285eda18","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        free_ram_mb \u003d payload.get(\u0027memory_mb\u0027, 0)"},{"line_number":73,"context_line":"        free_disk_gb \u003d payload.get(\u0027disk_gb\u0027, 0)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    if free_ram_mb \u003d\u003d 0 and free_disk_gb \u003d\u003d 0 and work \u003d\u003d 0 and vms \u003d\u003d 0:"},{"line_number":76,"context_line":"        return False"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    LOG.debug(\"EventType\u003d%(event_type)s -\u003e host %(host)s: \""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAD3%2F%2F95Q%3D","line":75,"updated":"2012-01-16 17:27:39.000000000","message":"No changed needed, but just for discussion, could also be:\n\nif free_ram_mb \u003d\u003d free_disk_gb \u003d\u003d work \u003d\u003d vms \u003d\u003d 0:","commit_id":"8bf812722eff4f85fcfd5c0fe622fe1653fbecbc"},{"author":{"_account_id":1419,"name":"Mike Pittaro","email":"mikeyp@LaHondaResearch.org","username":"mikeyp-3"},"change_message_id":"82b35ef296caa061dfb8f9dd018447da6e18ac93","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        free_ram_mb \u003d payload.get(\u0027memory_mb\u0027, 0)"},{"line_number":71,"context_line":"        free_disk_gb \u003d payload.get(\u0027disk_gb\u0027, 0)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    if free_ram_mb \u003d\u003d free_disk_gb \u003d\u003d work \u003d\u003d vms \u003d\u003d 0:"},{"line_number":74,"context_line":"        return False"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    LOG.debug(\"EventType\u003d%(event_type)s -\u003e host %(host)s: \""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAD3%2F%2F8TE%3D","line":73,"updated":"2012-01-20 01:01:27.000000000","message":"work will never be 0 here, so this test will never succeed.  Not sure of implication on the logic.","commit_id":"5b21f93c22c263ff4bad54e7cf8bc103f81e5df0"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"be2d267a464a36a3d2dad4975543d2c62c82df11","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        free_ram_mb \u003d payload.get(\u0027memory_mb\u0027, 0)"},{"line_number":71,"context_line":"        free_disk_gb \u003d payload.get(\u0027disk_gb\u0027, 0)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    if free_ram_mb \u003d\u003d free_disk_gb \u003d\u003d work \u003d\u003d vms \u003d\u003d 0:"},{"line_number":74,"context_line":"        return False"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    LOG.debug(\"EventType\u003d%(event_type)s -\u003e host %(host)s: \""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAD3%2F%2F8JA%3D","line":73,"in_reply_to":"AAAAD3%2F%2F8TE%3D","updated":"2012-01-20 13:41:29.000000000","message":"nice catch! removing.","commit_id":"5b21f93c22c263ff4bad54e7cf8bc103f81e5df0"}],"nova/scheduler/zone_manager.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"7a7d00d6a975666e9226e54e2556e4f3ee0d547d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"flags.DEFINE_integer(\u0027reserved_host_disk_mb\u0027, 0,"},{"line_number":37,"context_line":"        \u0027Amount of disk in MB to reserve for host/dom0\u0027)"},{"line_number":38,"context_line":"flags.DEFINE_integer(\u0027reserved_host_memory_mb\u0027, 512,"},{"line_number":39,"context_line":"        \u0027Amount of memory in MB to reserve for host/dom0\u0027)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"LOG \u003d logging.getLogger(\u0027nova.scheduler.zone_manager\u0027)"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAD3%2F%2F7t4%3D","line":39,"updated":"2012-01-22 03:53:26.000000000","message":"These are in host_manager in trunk.","commit_id":"44e30b8d7f1cff0e7a2f7bfc7a19d42557769858"}],"nova/tests/notifier/test_capacity_notifier.py":[{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"af2c3d5bb902f5cd6ff2dcba4d78b3410f83dabb","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import stubout"},{"line_number":17,"context_line":"import sys"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import nova.db.api"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAD3%2F%2F96I%3D","line":16,"updated":"2012-01-16 17:17:19.000000000","message":"Unneeded import","commit_id":"8bf812722eff4f85fcfd5c0fe622fe1653fbecbc"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"af2c3d5bb902f5cd6ff2dcba4d78b3410f83dabb","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import stubout"},{"line_number":17,"context_line":"import sys"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import nova.db.api"},{"line_number":20,"context_line":"from nova.notifier import capacity_notifier as cn"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAD3%2F%2F96E%3D","line":17,"updated":"2012-01-16 17:17:19.000000000","message":"Also unneeded","commit_id":"8bf812722eff4f85fcfd5c0fe622fe1653fbecbc"}],"nova/tests/scheduler/test_scheduler.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"7a7d00d6a975666e9226e54e2556e4f3ee0d547d","unresolved":false,"context_lines":[{"line_number":160,"context_line":"               \u0027vcpus\u0027: 16, \u0027memory_mb\u0027: 32, \u0027local_gb\u0027: 100,"},{"line_number":161,"context_line":"               \u0027vcpus_used\u0027: 16, \u0027memory_mb_used\u0027: 32, \u0027local_gb_used\u0027: 10,"},{"line_number":162,"context_line":"               \u0027hypervisor_type\u0027: \u0027qemu\u0027, \u0027hypervisor_version\u0027: 12003,"},{"line_number":163,"context_line":"               \u0027cpu_info\u0027: \u0027\u0027, \u0027host\u0027: \u0027dummy\u0027}"},{"line_number":164,"context_line":"        db.compute_node_create(ctxt, dic)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        return db.service_get(ctxt, s_ref[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAD3%2F%2F7t0%3D","line":163,"updated":"2012-01-22 03:53:26.000000000","message":"I think the changes in this file won\u0027t be necessary anymore due to my unittest branch hitting trunk which completely redid this whole file.","commit_id":"44e30b8d7f1cff0e7a2f7bfc7a19d42557769858"}],"nova/tests/test_compute.py":[{"author":{"_account_id":1419,"name":"Mike Pittaro","email":"mikeyp@LaHondaResearch.org","username":"mikeyp-3"},"change_message_id":"82b35ef296caa061dfb8f9dd018447da6e18ac93","unresolved":false,"context_lines":[{"line_number":828,"context_line":"        self.assertEquals(msg[\u0027event_type\u0027], \u0027compute.instance.delete.start\u0027)"},{"line_number":829,"context_line":"        msg1 \u003d test_notifier.NOTIFICATIONS[2]"},{"line_number":830,"context_line":"        self.assertEquals(msg1[\u0027event_type\u0027], \u0027compute.instance.delete.end\u0027)"},{"line_number":831,"context_line":"        payload \u003d msg[\u0027payload\u0027]"},{"line_number":832,"context_line":"        self.assertEquals(payload[\u0027tenant_id\u0027], self.project_id)"},{"line_number":833,"context_line":"        self.assertEquals(payload[\u0027user_id\u0027], self.user_id)"},{"line_number":834,"context_line":"        self.assertEquals(payload[\u0027instance_id\u0027], inst_ref.uuid)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAD3%2F%2F8Sc%3D","line":831,"updated":"2012-01-20 01:01:27.000000000","message":"not sure if this should be checking the payload from the start (msg), or the end(msg1), or whether it matters.","commit_id":"5b21f93c22c263ff4bad54e7cf8bc103f81e5df0"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"be2d267a464a36a3d2dad4975543d2c62c82df11","unresolved":false,"context_lines":[{"line_number":828,"context_line":"        self.assertEquals(msg[\u0027event_type\u0027], \u0027compute.instance.delete.start\u0027)"},{"line_number":829,"context_line":"        msg1 \u003d test_notifier.NOTIFICATIONS[2]"},{"line_number":830,"context_line":"        self.assertEquals(msg1[\u0027event_type\u0027], \u0027compute.instance.delete.end\u0027)"},{"line_number":831,"context_line":"        payload \u003d msg[\u0027payload\u0027]"},{"line_number":832,"context_line":"        self.assertEquals(payload[\u0027tenant_id\u0027], self.project_id)"},{"line_number":833,"context_line":"        self.assertEquals(payload[\u0027user_id\u0027], self.user_id)"},{"line_number":834,"context_line":"        self.assertEquals(payload[\u0027instance_id\u0027], inst_ref.uuid)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAD3%2F%2F8I8%3D","line":831,"in_reply_to":"AAAAD3%2F%2F8Sc%3D","updated":"2012-01-20 13:41:29.000000000","message":"hmm, yeah, I see your point. I could argue that they all use the same code. Let\u0027s see if it becomes an issue rather than clutter this part up for now?","commit_id":"5b21f93c22c263ff4bad54e7cf8bc103f81e5df0"}],"nova/tests/test_db_api.py":[{"author":{"_account_id":1419,"name":"Mike Pittaro","email":"mikeyp@LaHondaResearch.org","username":"mikeyp-3"},"change_message_id":"82b35ef296caa061dfb8f9dd018447da6e18ac93","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from nova import test"},{"line_number":24,"context_line":"from nova import context"},{"line_number":25,"context_line":"from nova import exception"},{"line_number":26,"context_line":"from nova import db"},{"line_number":27,"context_line":"from nova import exception"},{"line_number":28,"context_line":"from nova import flags"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAD3%2F%2F8SQ%3D","line":25,"updated":"2012-01-20 01:01:27.000000000","message":"forgot to delete when fixing the import order","commit_id":"5b21f93c22c263ff4bad54e7cf8bc103f81e5df0"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"be2d267a464a36a3d2dad4975543d2c62c82df11","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from nova import test"},{"line_number":24,"context_line":"from nova import context"},{"line_number":25,"context_line":"from nova import exception"},{"line_number":26,"context_line":"from nova import db"},{"line_number":27,"context_line":"from nova import exception"},{"line_number":28,"context_line":"from nova import flags"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAD3%2F%2F8I4%3D","line":25,"in_reply_to":"AAAAD3%2F%2F8SQ%3D","updated":"2012-01-20 13:41:29.000000000","message":"another good catch.","commit_id":"5b21f93c22c263ff4bad54e7cf8bc103f81e5df0"},{"author":{"_account_id":1419,"name":"Mike Pittaro","email":"mikeyp@LaHondaResearch.org","username":"mikeyp-3"},"change_message_id":"82b35ef296caa061dfb8f9dd018447da6e18ac93","unresolved":false,"context_lines":[{"line_number":584,"context_line":"        item \u003d self._create_helper(\u0027host1\u0027)"},{"line_number":585,"context_line":"        self.assertEquals(item.free_ram_mb, 1024 - 256)"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"    def test_compute_node_set(self):"},{"line_number":588,"context_line":"        item \u003d self._create_helper(\u0027host1\u0027)"},{"line_number":589,"context_line":""},{"line_number":590,"context_line":"        x \u003d db.compute_node_utilization_set(self.ctxt, \u0027host1\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAD3%2F%2F8R8%3D","line":587,"updated":"2012-01-20 01:01:27.000000000","message":"typo - missing underscores..","commit_id":"5b21f93c22c263ff4bad54e7cf8bc103f81e5df0"}],"nova/utils.py":[{"author":{"_account_id":236,"name":"Monsyne Dragon","email":"mdragon@rackspace.com","username":"mdragon"},"change_message_id":"339e920827b6ffaea8f1f4e22c88968237d0fa5e","unresolved":false,"context_lines":[{"line_number":691,"context_line":"        if test(value):"},{"line_number":692,"context_line":"            if \u0027__str__\u0027 in dir(value):"},{"line_number":693,"context_line":"                return str(value)"},{"line_number":694,"context_line":"            return None"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"    if level \u003e 3:"},{"line_number":697,"context_line":"        return \u0027?\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAD3%2F%2F%2B9Q%3D","line":694,"updated":"2012-01-11 17:09:22.000000000","message":"Note that Vish seems to have commited a fix for this (mox 0.5.3 issue) in trunk.","commit_id":"8bf812722eff4f85fcfd5c0fe622fe1653fbecbc"}]}
