)]}'
{"nova/compute/api.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"4de0258723d19e01469adf7ddbe27c284ed6d029","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                raise exception.NovaException(_(\"No compute host specified\"))"},{"line_number":132,"context_line":"            host \u003d instance[\u0027host\u0027]"},{"line_number":133,"context_line":"            if not host:"},{"line_number":134,"context_line":"                raise exception.NovaException(_(\"Unable to find host for \""},{"line_number":135,"context_line":"                                        \"Instance %s\") % instance[\u0027uuid\u0027])"},{"line_number":136,"context_line":"        queue \u003d self.db.queue_get_for(context, FLAGS.compute_topic, host)"},{"line_number":137,"context_line":"        if instance:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAHX%2F%2F61E%3D","side":"PARENT","line":134,"updated":"2012-05-16 22:14:31.000000000","message":"I don\u0027t think this behavior is duplicated.  Ie, if we want to cast to the instance[\u0027host\u0027], but it\u0027s not set... we\u0027re raising here.  I think in the new code, it will just send to \u0027compute\u0027 topic.  I think we want the raise.","commit_id":"397389059bd3491b5e3ea67497bd663e4a5fe436"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"a84a56d4e985bdfa049856adc48fcaf1e3809782","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                raise exception.NovaException(_(\"No compute host specified\"))"},{"line_number":132,"context_line":"            host \u003d instance[\u0027host\u0027]"},{"line_number":133,"context_line":"            if not host:"},{"line_number":134,"context_line":"                raise exception.NovaException(_(\"Unable to find host for \""},{"line_number":135,"context_line":"                                        \"Instance %s\") % instance[\u0027uuid\u0027])"},{"line_number":136,"context_line":"        queue \u003d self.db.queue_get_for(context, FLAGS.compute_topic, host)"},{"line_number":137,"context_line":"        if instance:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAHX%2F%2F6qA%3D","side":"PARENT","line":134,"in_reply_to":"AAAAHX%2F%2F61E%3D","updated":"2012-05-17 15:28:16.000000000","message":"Good catch.  I\u0027ll fix it up.\n\nI think it will actually still raise, but it\u0027ll just be an AttributeError because it tries to do instance[\u0027host\u0027].  I\u0027ll update it to raise like this code did.","commit_id":"397389059bd3491b5e3ea67497bd663e4a5fe436"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"40338b5854561cf2c8942c56f86f37fbc43e688f","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                raise exception.NovaException(_(\"No compute host specified\"))"},{"line_number":132,"context_line":"            host \u003d instance[\u0027host\u0027]"},{"line_number":133,"context_line":"            if not host:"},{"line_number":134,"context_line":"                raise exception.NovaException(_(\"Unable to find host for \""},{"line_number":135,"context_line":"                                        \"Instance %s\") % instance[\u0027uuid\u0027])"},{"line_number":136,"context_line":"        queue \u003d self.db.queue_get_for(context, FLAGS.compute_topic, host)"},{"line_number":137,"context_line":"        if instance:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAHX%2F%2F6pg%3D","side":"PARENT","line":134,"in_reply_to":"AAAAHX%2F%2F6qA%3D","updated":"2012-05-17 15:34:39.000000000","message":"Wait, no, you\u0027re right.  It wouldn\u0027t raise AttributeError if it doesn\u0027t do that here ... MOAR COFFEE","commit_id":"397389059bd3491b5e3ea67497bd663e4a5fe436"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"30920a3b989a9374cdbb8b9fd848b0539e10850b","unresolved":false,"context_lines":[{"line_number":1722,"context_line":"        \"\"\"Start/Stop host maintenance window. On start, it triggers"},{"line_number":1723,"context_line":"        guest VMs evacuation.\"\"\""},{"line_number":1724,"context_line":"        return self.compute_rpcapi.host_maintenance_mode(context,"},{"line_number":1725,"context_line":"                host_param\u003dhost, mode\u003dmode, host\u003dhost)"},{"line_number":1726,"context_line":""},{"line_number":1727,"context_line":""},{"line_number":1728,"context_line":"class AggregateAPI(base.Base):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAHX%2F%2F6l0%3D","line":1725,"updated":"2012-05-17 17:03:25.000000000","message":"You could probably send host once.. and use it both in the message and for the topic.  But, you can leave this for now.  I\u0027m not sure if there\u0027s a real reason why the host is passed in the message... since the compute worker would know what its own host is when it gets the message.  But, that\u0027s a separate issue from this patch. :)","commit_id":"c7b6468a167e68544eaaf281601c4b0704b7f241"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"4de0258723d19e01469adf7ddbe27c284ed6d029","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                mountpoint\u003dmountpoint),"},{"line_number":62,"context_line":"                topic\u003dself._compute_topic(ctxt, instance[\u0027host\u0027]))"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def confirm_resize(self, ctxt, instance, migration_id, host\u003dNone,"},{"line_number":65,"context_line":"            cast\u003dTrue):"},{"line_number":66,"context_line":"        rpc_method \u003d self.cast if cast else self.call"},{"line_number":67,"context_line":"        return rpc_method(ctxt, self.make_msg(\u0027confirm_resize\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAHX%2F%2F600%3D","line":64,"updated":"2012-05-16 22:14:31.000000000","message":"I think host should be a required argument.","commit_id":"91bb942966bdf148a333ed5ecd4332f71e872f2e"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"a84a56d4e985bdfa049856adc48fcaf1e3809782","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                mountpoint\u003dmountpoint),"},{"line_number":62,"context_line":"                topic\u003dself._compute_topic(ctxt, instance[\u0027host\u0027]))"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def confirm_resize(self, ctxt, instance, migration_id, host\u003dNone,"},{"line_number":65,"context_line":"            cast\u003dTrue):"},{"line_number":66,"context_line":"        rpc_method \u003d self.cast if cast else self.call"},{"line_number":67,"context_line":"        return rpc_method(ctxt, self.make_msg(\u0027confirm_resize\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAHX%2F%2F6p8%3D","line":64,"in_reply_to":"AAAAHX%2F%2F600%3D","updated":"2012-05-17 15:28:16.000000000","message":"Makes sense, will do.","commit_id":"91bb942966bdf148a333ed5ecd4332f71e872f2e"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"4de0258723d19e01469adf7ddbe27c284ed6d029","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    def host_maintenance_mode(self, ctxt, host_param, mode, host\u003dNone):"},{"line_number":92,"context_line":"        return self.call(ctxt, self.make_msg(\u0027host_maintenance_mode\u0027,"},{"line_number":93,"context_line":"                host\u003dhost_param, mode\u003dmode),"},{"line_number":94,"context_line":"                topic\u003dself._compute_topic(ctxt, host))"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def host_power_action(self, ctxt, action, host\u003dNone):"},{"line_number":97,"context_line":"        return self.call(ctxt, self.make_msg(\u0027host_power_action\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAHX%2F%2F60g%3D","line":94,"updated":"2012-05-16 22:14:31.000000000","message":"I think \u0027host\u0027 here on the call to _compute_topic should be \u0027host_param\u0027.  You happened to use a different argument name than most of the other calls that accept \u0027host\u0027. :)","commit_id":"91bb942966bdf148a333ed5ecd4332f71e872f2e"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"a84a56d4e985bdfa049856adc48fcaf1e3809782","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    def host_maintenance_mode(self, ctxt, host_param, mode, host\u003dNone):"},{"line_number":92,"context_line":"        return self.call(ctxt, self.make_msg(\u0027host_maintenance_mode\u0027,"},{"line_number":93,"context_line":"                host\u003dhost_param, mode\u003dmode),"},{"line_number":94,"context_line":"                topic\u003dself._compute_topic(ctxt, host))"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def host_power_action(self, ctxt, action, host\u003dNone):"},{"line_number":97,"context_line":"        return self.call(ctxt, self.make_msg(\u0027host_power_action\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAHX%2F%2F6p4%3D","line":94,"in_reply_to":"AAAAHX%2F%2F60g%3D","updated":"2012-05-17 15:28:16.000000000","message":"Nah, it accepts both host_param and host.  The difference is \u0027host_param\u0027 is the host argument placed in the message itself, while \u0027host\u0027 is what is used to figure out the topic.  I\u0027ll double check the usage to make sure the conversion was right.  I will also add some comments to the code to make it more clear what is going on here.","commit_id":"91bb942966bdf148a333ed5ecd4332f71e872f2e"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"c75895e6716a9a617f89214b95e8facdac889661","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    def host_maintenance_mode(self, ctxt, host_param, mode, host\u003dNone):"},{"line_number":92,"context_line":"        return self.call(ctxt, self.make_msg(\u0027host_maintenance_mode\u0027,"},{"line_number":93,"context_line":"                host\u003dhost_param, mode\u003dmode),"},{"line_number":94,"context_line":"                topic\u003dself._compute_topic(ctxt, host))"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def host_power_action(self, ctxt, action, host\u003dNone):"},{"line_number":97,"context_line":"        return self.call(ctxt, self.make_msg(\u0027host_power_action\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAHX%2F%2F6mE%3D","line":94,"in_reply_to":"AAAAHX%2F%2F6p4%3D","updated":"2012-05-17 16:52:41.000000000","message":"Oops... I somehow missed the host\u003d param. :)","commit_id":"91bb942966bdf148a333ed5ecd4332f71e872f2e"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"4de0258723d19e01469adf7ddbe27c284ed6d029","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                host\u003dhost_param, mode\u003dmode),"},{"line_number":94,"context_line":"                topic\u003dself._compute_topic(ctxt, host))"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def host_power_action(self, ctxt, action, host\u003dNone):"},{"line_number":97,"context_line":"        return self.call(ctxt, self.make_msg(\u0027host_power_action\u0027,"},{"line_number":98,"context_line":"                action\u003daction), topic\u003dself._compute_topic(ctxt, host))"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAHX%2F%2F60k%3D","line":96,"updated":"2012-05-16 22:14:31.000000000","message":"Ditto.","commit_id":"91bb942966bdf148a333ed5ecd4332f71e872f2e"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"a84a56d4e985bdfa049856adc48fcaf1e3809782","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                host\u003dhost_param, mode\u003dmode),"},{"line_number":94,"context_line":"                topic\u003dself._compute_topic(ctxt, host))"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def host_power_action(self, ctxt, action, host\u003dNone):"},{"line_number":97,"context_line":"        return self.call(ctxt, self.make_msg(\u0027host_power_action\u0027,"},{"line_number":98,"context_line":"                action\u003daction), topic\u003dself._compute_topic(ctxt, host))"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAHX%2F%2F6p0%3D","line":96,"in_reply_to":"AAAAHX%2F%2F60k%3D","updated":"2012-05-17 15:28:16.000000000","message":"Ok, I\u0027ll change all the cases where host is specified as option to be required.","commit_id":"91bb942966bdf148a333ed5ecd4332f71e872f2e"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"4de0258723d19e01469adf7ddbe27c284ed6d029","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                orig_image_ref\u003dorig_image_ref),"},{"line_number":142,"context_line":"                topic\u003dself._compute_topic(ctxt, instance[\u0027host\u0027]))"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def refresh_security_group_rules(self, ctxt, security_group_id, host\u003dNone):"},{"line_number":145,"context_line":"        self.cast(ctxt, self.make_msg(\u0027refresh_security_group_rules\u0027,"},{"line_number":146,"context_line":"                security_group_id\u003dsecurity_group_id),"},{"line_number":147,"context_line":"                topic\u003dself._compute_topic(ctxt, host))"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAHX%2F%2F60w%3D","line":144,"updated":"2012-05-16 22:14:31.000000000","message":"Ditto.","commit_id":"91bb942966bdf148a333ed5ecd4332f71e872f2e"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"4de0258723d19e01469adf7ddbe27c284ed6d029","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                topic\u003dself._compute_topic(ctxt, host))"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def refresh_security_group_members(self, ctxt, security_group_id,"},{"line_number":150,"context_line":"            host\u003dNone):"},{"line_number":151,"context_line":"        self.cast(ctxt, self.make_msg(\u0027refresh_security_group_members\u0027,"},{"line_number":152,"context_line":"                security_group_id\u003dsecurity_group_id),"},{"line_number":153,"context_line":"                topic\u003dself._compute_topic(ctxt, host))"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAHX%2F%2F60s%3D","line":150,"updated":"2012-05-16 22:14:31.000000000","message":"Ditto.","commit_id":"91bb942966bdf148a333ed5ecd4332f71e872f2e"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"4de0258723d19e01469adf7ddbe27c284ed6d029","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                security_group_id\u003dsecurity_group_id),"},{"line_number":153,"context_line":"                topic\u003dself._compute_topic(ctxt, host))"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def remove_aggregate_host(self, ctxt, aggregate_id, host_param, host\u003dNone):"},{"line_number":156,"context_line":"        self.cast(ctxt, self.make_msg(\u0027remove_aggregate_host\u0027,"},{"line_number":157,"context_line":"                aggregate_id\u003daggregate_id, host\u003dhost_param),"},{"line_number":158,"context_line":"                topic\u003dself._compute_topic(ctxt, host))"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAHX%2F%2F60o%3D","line":155,"updated":"2012-05-16 22:14:31.000000000","message":"Ditto, I think.","commit_id":"91bb942966bdf148a333ed5ecd4332f71e872f2e"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"4de0258723d19e01469adf7ddbe27c284ed6d029","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                instance_uuid\u003dinstance[\u0027uuid\u0027]),"},{"line_number":179,"context_line":"                topic\u003dself._compute_topic(ctxt, instance[\u0027host\u0027]))"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def revert_resize(self, ctxt, instance, migration_id, host\u003dNone):"},{"line_number":182,"context_line":"        self.cast(ctxt, self.make_msg(\u0027revert_resize\u0027,"},{"line_number":183,"context_line":"                instance_uuid\u003dinstance[\u0027uuid\u0027], migration_id\u003dmigration_id),"},{"line_number":184,"context_line":"                topic\u003dself._compute_topic(ctxt, host))"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAHX%2F%2F61A%3D","line":181,"updated":"2012-05-16 22:14:31.000000000","message":"Ditto.","commit_id":"91bb942966bdf148a333ed5ecd4332f71e872f2e"},{"author":{"_account_id":360,"name":"Dan Prince","email":"dprince@redhat.com","username":"dan-prince"},"change_message_id":"d4a5dfb7bd9b1b192087ac23c0c8ad9f4fe7c641","unresolved":false,"context_lines":[{"line_number":27,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class ComputeAPI(nova.rpc.proxy.RpcProxy, base.Base):"},{"line_number":31,"context_line":"    \u0027\u0027\u0027Client side of the compute rpc API."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    API version history:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHX%2F%2F6T4%3D","line":30,"updated":"2012-05-18 14:08:16.000000000","message":"I\u0027m wondering if we could make it so you don\u0027t need base.Base.\n\nThis class has a single call to the DB below (self.db.queue_get_for) and upon closer inspection that call doesn\u0027t actually use the database at all.\n\nCouldn\u0027t we just factor queue_get_for out of the DB API and then all of our RPC API classes won\u0027t need the database at all right?\n\nPerhaps this is beyond the scope of this review but it would seem that we really don\u0027t need the database for RPC API classes...","commit_id":"2137cf1a3c6aa9339d15d695562e92d1eec3821d"},{"author":{"_account_id":360,"name":"Dan Prince","email":"dprince@redhat.com","username":"dan-prince"},"change_message_id":"909ab7c7e6d4663ea5b90c307b0b81ad7b5cf0cd","unresolved":false,"context_lines":[{"line_number":27,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class ComputeAPI(nova.rpc.proxy.RpcProxy, base.Base):"},{"line_number":31,"context_line":"    \u0027\u0027\u0027Client side of the compute rpc API."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    API version history:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHX%2F%2F6To%3D","line":30,"in_reply_to":"AAAAHX%2F%2F6T4%3D","updated":"2012-05-18 14:10:14.000000000","message":"I would add that I\u0027m fairly happy with this as is... perhaps we can just refactor the queue_get_for in a separate branch?","commit_id":"2137cf1a3c6aa9339d15d695562e92d1eec3821d"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"8f7dedb2ec0fffc208572fc0ddfcc3583374692d","unresolved":false,"context_lines":[{"line_number":27,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class ComputeAPI(nova.rpc.proxy.RpcProxy, base.Base):"},{"line_number":31,"context_line":"    \u0027\u0027\u0027Client side of the compute rpc API."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    API version history:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAHX%2F%2F5%2F8%3D","line":30,"updated":"2012-05-19 00:57:15.000000000","message":"IMO, compute API class should wrap rcp exceptions to computeAPIexceptions","commit_id":"4c9ba1a994015c42af53c5d2e39e94fec771e0fa"}]}
