)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"e638185dc2ba705316cdc9f8d0b5cf980e742f77","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"class ComputeManager(manager.SchedulerDependentManager):"},{"line_number":214,"context_line":"    \"\"\"Manages the running instances from creation to destruction.\"\"\""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    RPC_API_VERSION \u003d \u00272.1\u0027"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    def __init__(self, compute_driver\u003dNone, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2Fb20%3D","line":215,"updated":"2012-09-11 17:15:37.000000000","message":"This should be updated to 2.2","commit_id":"6db86cedb5cb77e1fd911d2d23b84f07164e4cc8"},{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"0bb5bc7a050f880622ec5efbc14aecc457bab6a5","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"class ComputeManager(manager.SchedulerDependentManager):"},{"line_number":214,"context_line":"    \"\"\"Manages the running instances from creation to destruction.\"\"\""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    RPC_API_VERSION \u003d \u00272.1\u0027"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    def __init__(self, compute_driver\u003dNone, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FbyE%3D","line":215,"in_reply_to":"AAAALH%2F%2Fb20%3D","updated":"2012-09-11 18:04:21.000000000","message":"Done","commit_id":"6db86cedb5cb77e1fd911d2d23b84f07164e4cc8"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"0312dff0d21497d3002179915982e1579fb9f286","unresolved":false,"context_lines":[{"line_number":2811,"context_line":"    def add_slave_to_hypervisor_pool(self, context, aggregate_id, host,"},{"line_number":2812,"context_line":"                                     slave_info):"},{"line_number":2813,"context_line":"        \"\"\"Add a new hypervisor to an existing hypervisor pool.\"\"\""},{"line_number":2814,"context_line":"        aggregate \u003d self.db.aggregate_get(context, aggregate_id)"},{"line_number":2815,"context_line":"        try:"},{"line_number":2816,"context_line":"            self.driver.add_to_aggregate(context, aggregate, host, slave_info)"},{"line_number":2817,"context_line":"        except exception.AggregateError:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2Fbz4%3D","line":2814,"updated":"2012-09-11 17:53:46.000000000","message":"We have been making an effort to cut down on db access in nova-compute so that we can eventually remove direct db access completely (no-db-compute).  How about sending the aggregate across rpc instead of aggregate_id?  Take a look at how instances are handled in the compute rpcapi for an example of what I mean.  I know that doesn\u0027t completely remove db access here, but it\u0027s a step in the right direction.","commit_id":"95058d64f172f2a2e122ae7d1c2f3497f8337f7a"},{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"a0200a73bc82ce6c48727762a1060b6427f9f8f8","unresolved":false,"context_lines":[{"line_number":2811,"context_line":"    def add_slave_to_hypervisor_pool(self, context, aggregate_id, host,"},{"line_number":2812,"context_line":"                                     slave_info):"},{"line_number":2813,"context_line":"        \"\"\"Add a new hypervisor to an existing hypervisor pool.\"\"\""},{"line_number":2814,"context_line":"        aggregate \u003d self.db.aggregate_get(context, aggregate_id)"},{"line_number":2815,"context_line":"        try:"},{"line_number":2816,"context_line":"            self.driver.add_to_aggregate(context, aggregate, host, slave_info)"},{"line_number":2817,"context_line":"        except exception.AggregateError:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2Fa%2FY%3D","line":2814,"in_reply_to":"AAAALH%2F%2Fbz4%3D","updated":"2012-09-12 16:00:59.000000000","message":"I would like to get rid of the db access in a separate change. I was just copied the pattern from the add_aggregate_host method for now (which is a bad thing, I know)","commit_id":"95058d64f172f2a2e122ae7d1c2f3497f8337f7a"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"a88ff72a196c9586bd0a2542cd9807961efca4bf","unresolved":false,"context_lines":[{"line_number":2831,"context_line":"        aggregate \u003d self.db.aggregate_get(context, aggregate_id)"},{"line_number":2832,"context_line":"        try:"},{"line_number":2833,"context_line":"            self.driver.add_to_aggregate("},{"line_number":2834,"context_line":"                context, aggregate, host, slave_info\u003dslave_info)"},{"line_number":2835,"context_line":"        except exception.AggregateError:"},{"line_number":2836,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":2837,"context_line":"                self.driver.undo_aggregate_operation(context,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FX2g%3D","line":2834,"updated":"2012-09-17 23:27:15.000000000","message":"You should just add an optional slave_info argument to add_aggregate_host()","commit_id":"7cf53df2f6db7b7bbfa8026bf3dfaee0408cf0c6"},{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"5b27540df8d9511ee5326173a121dd11539c4ab8","unresolved":false,"context_lines":[{"line_number":2831,"context_line":"        aggregate \u003d self.db.aggregate_get(context, aggregate_id)"},{"line_number":2832,"context_line":"        try:"},{"line_number":2833,"context_line":"            self.driver.add_to_aggregate("},{"line_number":2834,"context_line":"                context, aggregate, host, slave_info\u003dslave_info)"},{"line_number":2835,"context_line":"        except exception.AggregateError:"},{"line_number":2836,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":2837,"context_line":"                self.driver.undo_aggregate_operation(context,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FXfw%3D","line":2834,"in_reply_to":"AAAALH%2F%2FX2g%3D","updated":"2012-09-18 09:30:04.000000000","message":"I was also thinking about it, but with this approach the hypervisor operations are better separated. As a later refactor, it would be nice to extract the same functions from add_to_aggregate and remove_from_aggregate. For now, I left this call to delegate to the original method, in order to keep my changeset small.","commit_id":"7cf53df2f6db7b7bbfa8026bf3dfaee0408cf0c6"},{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"270c0e860d115ee4c4bd70f8f30b93b9b91962a9","unresolved":false,"context_lines":[{"line_number":2831,"context_line":"        aggregate \u003d self.db.aggregate_get(context, aggregate_id)"},{"line_number":2832,"context_line":"        try:"},{"line_number":2833,"context_line":"            self.driver.add_to_aggregate("},{"line_number":2834,"context_line":"                context, aggregate, host, slave_info\u003dslave_info)"},{"line_number":2835,"context_line":"        except exception.AggregateError:"},{"line_number":2836,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":2837,"context_line":"                self.driver.undo_aggregate_operation(context,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FWjc%3D","line":2834,"in_reply_to":"AAAALH%2F%2FXfA%3D","updated":"2012-09-19 10:21:55.000000000","message":"Thanks for the comments Mark, I made the suggested modifications. It looks better this way.","commit_id":"7cf53df2f6db7b7bbfa8026bf3dfaee0408cf0c6"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"1480aff023b757fe9516447e3db9d62b7d6c71a8","unresolved":false,"context_lines":[{"line_number":2831,"context_line":"        aggregate \u003d self.db.aggregate_get(context, aggregate_id)"},{"line_number":2832,"context_line":"        try:"},{"line_number":2833,"context_line":"            self.driver.add_to_aggregate("},{"line_number":2834,"context_line":"                context, aggregate, host, slave_info\u003dslave_info)"},{"line_number":2835,"context_line":"        except exception.AggregateError:"},{"line_number":2836,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":2837,"context_line":"                self.driver.undo_aggregate_operation(context,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FXfA%3D","line":2834,"in_reply_to":"AAAALH%2F%2FXfw%3D","updated":"2012-09-18 10:55:49.000000000","message":"I don\u0027t really follow what\u0027s going on here, but I\u0027m not loving the idea of us having RPC methods which are specific to Xen only\n\nWould add_slave_to_hypervisor() ever make sense for other virt drivers?","commit_id":"7cf53df2f6db7b7bbfa8026bf3dfaee0408cf0c6"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"e638185dc2ba705316cdc9f8d0b5cf980e742f77","unresolved":false,"context_lines":[{"line_number":132,"context_line":"              remove_slave_from_hypervisor_pool()"},{"line_number":133,"context_line":"    \u0027\u0027\u0027"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    BASE_RPC_API_VERSION \u003d \u00272.2\u0027"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def __init__(self):"},{"line_number":138,"context_line":"        super(ComputeAPI, self).__init__("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2Fb24%3D","line":135,"updated":"2012-09-11 17:15:37.000000000","message":"This should be left at 2.0","commit_id":"6db86cedb5cb77e1fd911d2d23b84f07164e4cc8"},{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"0bb5bc7a050f880622ec5efbc14aecc457bab6a5","unresolved":false,"context_lines":[{"line_number":132,"context_line":"              remove_slave_from_hypervisor_pool()"},{"line_number":133,"context_line":"    \u0027\u0027\u0027"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    BASE_RPC_API_VERSION \u003d \u00272.2\u0027"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def __init__(self):"},{"line_number":138,"context_line":"        super(ComputeAPI, self).__init__("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FbyM%3D","line":135,"in_reply_to":"AAAALH%2F%2Fb24%3D","updated":"2012-09-11 18:04:21.000000000","message":"Did you mean 2.1 ? - it was 2.1 before my change.","commit_id":"6db86cedb5cb77e1fd911d2d23b84f07164e4cc8"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"0312dff0d21497d3002179915982e1579fb9f286","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        self.cast("},{"line_number":158,"context_line":"            ctxt, self.make_msg(\u0027add_slave_to_hypervisor_pool\u0027,"},{"line_number":159,"context_line":"            aggregate_id\u003daggregate_id, host\u003dhost_param, slave_info\u003dslave_info),"},{"line_number":160,"context_line":"            topic\u003d_compute_topic(self.topic, ctxt, host, None))"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def add_fixed_ip_to_instance(self, ctxt, instance, network_id):"},{"line_number":163,"context_line":"        instance_p \u003d jsonutils.to_primitive(instance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2Fbzg%3D","line":160,"updated":"2012-09-11 17:53:46.000000000","message":"Need to add version\u003d\u00272.2\u0027 here","commit_id":"95058d64f172f2a2e122ae7d1c2f3497f8337f7a"},{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"a0200a73bc82ce6c48727762a1060b6427f9f8f8","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        self.cast("},{"line_number":158,"context_line":"            ctxt, self.make_msg(\u0027add_slave_to_hypervisor_pool\u0027,"},{"line_number":159,"context_line":"            aggregate_id\u003daggregate_id, host\u003dhost_param, slave_info\u003dslave_info),"},{"line_number":160,"context_line":"            topic\u003d_compute_topic(self.topic, ctxt, host, None))"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def add_fixed_ip_to_instance(self, ctxt, instance, network_id):"},{"line_number":163,"context_line":"        instance_p \u003d jsonutils.to_primitive(instance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2Fa%2FU%3D","line":160,"in_reply_to":"AAAALH%2F%2Fbzg%3D","updated":"2012-09-12 16:00:59.000000000","message":"Done","commit_id":"95058d64f172f2a2e122ae7d1c2f3497f8337f7a"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"0312dff0d21497d3002179915982e1579fb9f286","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        self.cast("},{"line_number":374,"context_line":"            ctxt, self.make_msg(\u0027remove_aggregate_host\u0027,"},{"line_number":375,"context_line":"            aggregate_id\u003daggregate_id, host\u003dhost_param, slave_info\u003dslave_info),"},{"line_number":376,"context_line":"            topic\u003d_compute_topic(self.topic, ctxt, host, None))"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    def remove_fixed_ip_from_instance(self, ctxt, instance, address):"},{"line_number":379,"context_line":"        instance_p \u003d jsonutils.to_primitive(instance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FbzY%3D","line":376,"updated":"2012-09-11 17:53:46.000000000","message":"Need to add version\u003d\u00272.2\u0027 here","commit_id":"95058d64f172f2a2e122ae7d1c2f3497f8337f7a"},{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"a0200a73bc82ce6c48727762a1060b6427f9f8f8","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        self.cast("},{"line_number":374,"context_line":"            ctxt, self.make_msg(\u0027remove_aggregate_host\u0027,"},{"line_number":375,"context_line":"            aggregate_id\u003daggregate_id, host\u003dhost_param, slave_info\u003dslave_info),"},{"line_number":376,"context_line":"            topic\u003d_compute_topic(self.topic, ctxt, host, None))"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    def remove_fixed_ip_from_instance(self, ctxt, instance, address):"},{"line_number":379,"context_line":"        instance_p \u003d jsonutils.to_primitive(instance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2Fa%2FQ%3D","line":376,"in_reply_to":"AAAALH%2F%2FbzY%3D","updated":"2012-09-12 16:00:59.000000000","message":"Done","commit_id":"95058d64f172f2a2e122ae7d1c2f3497f8337f7a"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"923cfc2b1223b845e7a46642c6903b41f3aaeb93","unresolved":false,"context_lines":[{"line_number":132,"context_line":"              remove_slave_from_hypervisor_pool()"},{"line_number":133,"context_line":"    \u0027\u0027\u0027"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    BASE_RPC_API_VERSION \u003d \u00272.2\u0027"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def __init__(self):"},{"line_number":138,"context_line":"        super(ComputeAPI, self).__init__("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2Fbs8%3D","line":135,"updated":"2012-09-11 18:57:24.000000000","message":"To respond to your earlier question, I did mean \u00272.0\u0027 here.  The change from 2.0 to 2.1 was wrong.  I put up a patch to fix it and change back to \u00272.0\u0027 here: https://review.openstack.org/12804","commit_id":"77351d79535739a5e55cb59dead5ed4d1786a8fc"},{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"b5ca299c3abcbebfaad11be36f36b74244621cef","unresolved":false,"context_lines":[{"line_number":132,"context_line":"              remove_slave_from_hypervisor_pool()"},{"line_number":133,"context_line":"    \u0027\u0027\u0027"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    BASE_RPC_API_VERSION \u003d \u00272.2\u0027"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def __init__(self):"},{"line_number":138,"context_line":"        super(ComputeAPI, self).__init__("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FbOw%3D","line":135,"in_reply_to":"AAAALH%2F%2Fbs8%3D","updated":"2012-09-12 16:02:20.000000000","message":"Thanks for the info Russell, I did the change.","commit_id":"77351d79535739a5e55cb59dead5ed4d1786a8fc"}],"nova/virt/xenapi/pool.py":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"0312dff0d21497d3002179915982e1579fb9f286","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        topic \u003d rpc.queue_get_for(context, FLAGS.compute_topic, master)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        self.compute_rpcapi.cast(context, msg, topic\u003dtopic)"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"def swap_xapi_host(url, host_addr):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FbzU%3D","line":264,"updated":"2012-09-11 17:53:46.000000000","message":"How come this isn\u0027t using the methods defined in compute/rpcapi.py ?  cast() should not be used directly.","commit_id":"95058d64f172f2a2e122ae7d1c2f3497f8337f7a"},{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"a0200a73bc82ce6c48727762a1060b6427f9f8f8","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        topic \u003d rpc.queue_get_for(context, FLAGS.compute_topic, master)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        self.compute_rpcapi.cast(context, msg, topic\u003dtopic)"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"def swap_xapi_host(url, host_addr):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2Fa%2FE%3D","line":264,"in_reply_to":"AAAALH%2F%2FbzU%3D","updated":"2012-09-12 16:00:59.000000000","message":"We have done that refactor now.","commit_id":"95058d64f172f2a2e122ae7d1c2f3497f8337f7a"}]}
