)]}'
{"nova/api/openstack/compute/contrib/floating_ips.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"8205e0491ad51382bc1b85a6a5c9ad58d487796f","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        try:"},{"line_number":153,"context_line":"            address \u003d self.network_api.allocate_floating_ip(context, pool)"},{"line_number":154,"context_line":"            ip \u003d self.network_api.get_floating_ip_by_address(context, address)"},{"line_number":155,"context_line":"        except exception.NoMoreFloatingIps as ex:"},{"line_number":156,"context_line":"            if pool:"},{"line_number":157,"context_line":"                msg \u003d _(\"No more floating ips in pool %s.\") % pool"},{"line_number":158,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAFX%2F%2F%2Fck%3D","line":155,"updated":"2012-04-06 17:56:31.000000000","message":"Don\u0027t need the \u0027as ex\u0027 as it\u0027s not used.","commit_id":"2de5e1372d9782eb7ee30483cc3058d6ffbb9f1e"}],"nova/rpc/amqp.py":[{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"0a499976dffa0d6ec717d9c781671feaddc4d39d","unresolved":false,"context_lines":[{"line_number":25,"context_line":"AMQP, but is deprecated and predates this code."},{"line_number":26,"context_line":"\"\"\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"import cPickle as pickle"},{"line_number":29,"context_line":"import inspect"},{"line_number":30,"context_line":"import sys"},{"line_number":31,"context_line":"import uuid"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFH%2F%2F%2FiY%3D","line":28,"updated":"2012-03-23 20:22:39.000000000","message":"This appears to be unused","commit_id":"84ecf9703703e1ea0303c288df997d1d06d1b374"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"8a10cda19553417c5b35bdfee2e1d9ce5b31c539","unresolved":false,"context_lines":[{"line_number":25,"context_line":"AMQP, but is deprecated and predates this code."},{"line_number":26,"context_line":"\"\"\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"import cPickle as pickle"},{"line_number":29,"context_line":"import inspect"},{"line_number":30,"context_line":"import sys"},{"line_number":31,"context_line":"import uuid"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFH%2F%2F%2FBk%3D","line":28,"in_reply_to":"AAAAFH%2F%2F%2FiY%3D","updated":"2012-03-26 17:46:55.000000000","message":"good catch, pyflakes didn\u0027t notice for some reason","commit_id":"84ecf9703703e1ea0303c288df997d1d06d1b374"}],"nova/rpc/common.py":[{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"0a499976dffa0d6ec717d9c781671feaddc4d39d","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                        {\u0027__str__\u0027: str_override})"},{"line_number":211,"context_line":"        try:"},{"line_number":212,"context_line":"            #NOTE(ameade): only works on user defined Exceptions"},{"line_number":213,"context_line":"            failure.__class__ \u003d new_ex_type"},{"line_number":214,"context_line":"        except TypeError as e:"},{"line_number":215,"context_line":"            #try to add the traceback to the exception message"},{"line_number":216,"context_line":"            failure.args \u003d (message,) + failure.args[1:]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFH%2F%2F%2FiM%3D","line":213,"updated":"2012-03-23 20:22:39.000000000","message":"Could add a comment explaining in more detail what you\u0027re doing here?\n\nI think you\u0027re dynamically creating a new Exception with \u0027_Remote\u0027 added to the name and then swapping it into the unpickled exception?","commit_id":"84ecf9703703e1ea0303c288df997d1d06d1b374"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"8a10cda19553417c5b35bdfee2e1d9ce5b31c539","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                        {\u0027__str__\u0027: str_override})"},{"line_number":211,"context_line":"        try:"},{"line_number":212,"context_line":"            #NOTE(ameade): only works on user defined Exceptions"},{"line_number":213,"context_line":"            failure.__class__ \u003d new_ex_type"},{"line_number":214,"context_line":"        except TypeError as e:"},{"line_number":215,"context_line":"            #try to add the traceback to the exception message"},{"line_number":216,"context_line":"            failure.args \u003d (message,) + failure.args[1:]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFH%2F%2F%2FBs%3D","line":213,"in_reply_to":"AAAAFH%2F%2F%2FiM%3D","updated":"2012-03-26 17:46:55.000000000","message":"yeah exactly, I\u0027ll beef up the note a bit","commit_id":"84ecf9703703e1ea0303c288df997d1d06d1b374"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"4fd3d4fb72db6b4cab7602a1f20e73e73d4f55c5","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        \u0027kwargs\u0027: kwargs"},{"line_number":193,"context_line":"    }"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    json_data \u003d json.dumps(data)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    return json_data"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAFH%2F%2F8vg%3D","line":195,"updated":"2012-04-02 20:16:03.000000000","message":"shouldn\u0027t there be some explicit checking in the event json.load/dump encounters something it can\u0027t handle? We ran into a lot of problems with json in nova.utils.to_primitive()\n\nFor example, a datetime in the kwargs?","commit_id":"5d1437ffebb092b7d2bc8edb9fca102ae16becee"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"f44e654cb99e776c680a0b0e42964283a6b7f102","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        \u0027kwargs\u0027: kwargs"},{"line_number":193,"context_line":"    }"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    json_data \u003d json.dumps(data)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    return json_data"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAFH%2F%2F8Ac%3D","line":195,"in_reply_to":"AAAAFH%2F%2F8vg%3D","updated":"2012-04-04 15:34:12.000000000","message":"sure makes sense, would using nova.utils.dumps be sufficient?","commit_id":"5d1437ffebb092b7d2bc8edb9fca102ae16becee"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"4fd3d4fb72db6b4cab7602a1f20e73e73d4f55c5","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"def deserialize_remote_exception(data):"},{"line_number":201,"context_line":"    failure \u003d json.loads(str(data))"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    trace \u003d failure.get(\u0027tb\u0027, [])"},{"line_number":204,"context_line":"    message \u003d failure.get(\u0027message\u0027, \"\") + \"\\n\" + \"\\n\".join(trace)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAFH%2F%2F8vc%3D","line":201,"updated":"2012-04-02 20:16:03.000000000","message":"Same comment as above.","commit_id":"5d1437ffebb092b7d2bc8edb9fca102ae16becee"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"8205e0491ad51382bc1b85a6a5c9ad58d487796f","unresolved":false,"context_lines":[{"line_number":210,"context_line":"    if not module in FLAGS.allowed_rpc_exception_modules:"},{"line_number":211,"context_line":"        return RemoteError(name, failure.get(\u0027message\u0027), trace)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    __import__(module)"},{"line_number":214,"context_line":"    mod \u003d sys.modules[module]"},{"line_number":215,"context_line":"    try:"},{"line_number":216,"context_line":"        klass \u003d getattr(mod, name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAFX%2F%2F%2FcY%3D","line":213,"updated":"2012-04-06 17:56:31.000000000","message":"Should we fall back to RemoteError if the orig module is not available?","commit_id":"2de5e1372d9782eb7ee30483cc3058d6ffbb9f1e"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"8205e0491ad51382bc1b85a6a5c9ad58d487796f","unresolved":false,"context_lines":[{"line_number":235,"context_line":"    except TypeError as e:"},{"line_number":236,"context_line":"        #NOTE(ameade): If a core exception then just add the traceback to the"},{"line_number":237,"context_line":"        #first exception argument."},{"line_number":238,"context_line":"        failure.args \u003d (message,) + failure.args[1:]"},{"line_number":239,"context_line":"    return failure"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAFX%2F%2F%2Fcc%3D","line":238,"updated":"2012-04-06 17:56:31.000000000","message":"nit: I prefer to see a space after \u0027#\u0027 for consistency because most of nova is this way and I find comments easily to read with the space.  However, I don\u0027t see this as a requirement in HACKING, so I won\u0027t -1 for it.","commit_id":"2de5e1372d9782eb7ee30483cc3058d6ffbb9f1e"}],"nova/scheduler/driver.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"8205e0491ad51382bc1b85a6a5c9ad58d487796f","unresolved":false,"context_lines":[{"line_number":362,"context_line":"                     {\"method\": \u0027compare_cpu\u0027,"},{"line_number":363,"context_line":"                      \"args\": {\u0027cpu_info\u0027: oservice_ref[\u0027cpu_info\u0027]}})"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        except Exception:"},{"line_number":366,"context_line":"            src \u003d instance_ref[\u0027host\u0027]"},{"line_number":367,"context_line":"            LOG.exception(_(\"host %(dest)s is not compatible with \""},{"line_number":368,"context_line":"                                \"original host %(src)s.\") % locals())"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAFX%2F%2F%2FcM%3D","line":365,"updated":"2012-04-06 17:56:31.000000000","message":"This should probably catch exception.InvalidCPUInfo now, since we can get the real exception?  At least, this is true for libvirt.  For xenapi, it appears a NotImplemented would be raised.","commit_id":"2de5e1372d9782eb7ee30483cc3058d6ffbb9f1e"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"8205e0491ad51382bc1b85a6a5c9ad58d487796f","unresolved":false,"context_lines":[{"line_number":453,"context_line":"                           {\"method\": \u0027get_instance_disk_info\u0027,"},{"line_number":454,"context_line":"                            \"args\": {\u0027instance_name\u0027: instance_ref[\u0027name\u0027]}})"},{"line_number":455,"context_line":"            disk_infos \u003d utils.loads(ret)"},{"line_number":456,"context_line":"        except Exception:"},{"line_number":457,"context_line":"            LOG.exception(_(\"host %(dest)s is not compatible with \""},{"line_number":458,"context_line":"                                \"original host %(src)s.\") % locals())"},{"line_number":459,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAFX%2F%2F%2FcI%3D","line":456,"updated":"2012-04-06 17:56:31.000000000","message":"I\u0027m sure there\u0027s a more specific exception raised for this as well... I didn\u0027t go digging.","commit_id":"2de5e1372d9782eb7ee30483cc3058d6ffbb9f1e"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"11cf01ce9a11e8aea54c70f9bd8aa5f2985bc3b3","unresolved":false,"context_lines":[{"line_number":453,"context_line":"                           {\"method\": \u0027get_instance_disk_info\u0027,"},{"line_number":454,"context_line":"                            \"args\": {\u0027instance_name\u0027: instance_ref[\u0027name\u0027]}})"},{"line_number":455,"context_line":"            disk_infos \u003d utils.loads(ret)"},{"line_number":456,"context_line":"        except Exception:"},{"line_number":457,"context_line":"            LOG.exception(_(\"host %(dest)s is not compatible with \""},{"line_number":458,"context_line":"                                \"original host %(src)s.\") % locals())"},{"line_number":459,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAFX%2F%2F%2FbU%3D","line":456,"in_reply_to":"AAAAFX%2F%2F%2FcI%3D","updated":"2012-04-06 18:55:21.000000000","message":"I\u0027m not sure this except statement should even be here. Heck there isn\u0027t even a \u0027src\u0027 local variable. get_instance_disk_info doesn\u0027t seem to have any exceptions it will raise.","commit_id":"2de5e1372d9782eb7ee30483cc3058d6ffbb9f1e"}],"nova/tests/rpc/common.py":[{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"4fd3d4fb72db6b4cab7602a1f20e73e73d4f55c5","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        yield value + 2"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    @staticmethod"},{"line_number":226,"context_line":"    def fail(context, value):"},{"line_number":227,"context_line":"        \"\"\"Raises an exception with the value sent in.\"\"\""},{"line_number":228,"context_line":"        raise NotImplementedError(value)"},{"line_number":229,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAFH%2F%2F8xY%3D","line":226,"updated":"2012-04-02 20:16:03.000000000","message":"Don\u0027t really like the naming here as it causes confusion with unittest.fail()","commit_id":"5d1437ffebb092b7d2bc8edb9fca102ae16becee"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"f44e654cb99e776c680a0b0e42964283a6b7f102","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        yield value + 2"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    @staticmethod"},{"line_number":226,"context_line":"    def fail(context, value):"},{"line_number":227,"context_line":"        \"\"\"Raises an exception with the value sent in.\"\"\""},{"line_number":228,"context_line":"        raise NotImplementedError(value)"},{"line_number":229,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAFH%2F%2F8AY%3D","line":226,"in_reply_to":"AAAAFH%2F%2F8xY%3D","updated":"2012-04-04 15:34:12.000000000","message":"agreed","commit_id":"5d1437ffebb092b7d2bc8edb9fca102ae16becee"}],"nova/tests/rpc/test_carrot.py":[{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"0a499976dffa0d6ec717d9c781671feaddc4d39d","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        self.rpc.ConnectionPool.put(conn2)"},{"line_number":44,"context_line":"        self.assertEqual(conn1, conn2)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def test_call_exception(self):"},{"line_number":47,"context_line":"        \"\"\"Test that exception gets passed back properly."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        rpc.call returns an Exception object.  The value of the"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFH%2F%2F%2FiI%3D","line":46,"updated":"2012-03-23 20:22:39.000000000","message":"I see these tests are duplicated in test_kombu.py as well. Any reason they couldn\u0027t go into common.BaseRpcTestCase?","commit_id":"84ecf9703703e1ea0303c288df997d1d06d1b374"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"834fba76dae6e3705f9c4067d3b5b33649df9d27","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        self.rpc.ConnectionPool.put(conn2)"},{"line_number":44,"context_line":"        self.assertEqual(conn1, conn2)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def test_call_exception(self):"},{"line_number":47,"context_line":"        \"\"\"Test that exception gets passed back properly."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        rpc.call returns an Exception object.  The value of the"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFH%2F%2F%2FA8%3D","line":46,"in_reply_to":"AAAAFH%2F%2F%2FB4%3D","updated":"2012-03-26 17:57:27.000000000","message":"I\u0027m not sure if there is any value in testing them in impl_fake right now but I may not fully understand impl_fake right now.\n\nAn alternative would be to create a mix-in class in common and then use that in impl_kombu and impl_rabbit","commit_id":"84ecf9703703e1ea0303c288df997d1d06d1b374"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"8a10cda19553417c5b35bdfee2e1d9ce5b31c539","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        self.rpc.ConnectionPool.put(conn2)"},{"line_number":44,"context_line":"        self.assertEqual(conn1, conn2)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def test_call_exception(self):"},{"line_number":47,"context_line":"        \"\"\"Test that exception gets passed back properly."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        rpc.call returns an Exception object.  The value of the"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFH%2F%2F%2FB4%3D","line":46,"in_reply_to":"AAAAFH%2F%2F%2FiI%3D","updated":"2012-03-26 17:46:55.000000000","message":"One really annoying thing was that when they were in common they ran with every different test case, including impl_fake. I just think that it is clunky trying to maintain a single test that may require different stubs. \n\nIf I were to leave these tests in common then I need to spend time making impl_fake more robust. Thoughts on that?","commit_id":"84ecf9703703e1ea0303c288df997d1d06d1b374"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"ad777a80c600a6f232068f97766e8d75fb3211e6","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        \"\"\""},{"line_number":51,"context_line":"        value \u003d \"This is the exception message\""},{"line_number":52,"context_line":"        self.assertRaises(Exception,"},{"line_number":53,"context_line":"                          self.rpc.call,"},{"line_number":54,"context_line":"                          self.context,"},{"line_number":55,"context_line":"                          \u0027test\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAFH%2F%2F%2B3w%3D","line":52,"updated":"2012-03-26 21:02:35.000000000","message":"HACKING forbids using assertRaises(Exception, ...\n\nIt really needs to be a more specific exception.","commit_id":"987ad23aabbf848d1a870c2356b5bbcf639f0b14"}],"nova/tests/rpc/test_common.py":[{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"bc69bdafaab8f0d92a54ba18c90b6cb1325822a2","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 United States Government as represented by the"},{"line_number":4,"context_line":"# Administrator of the National Aeronautics and Space Administration."},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":8,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAFH%2F%2F%2B1I%3D","line":5,"updated":"2012-03-26 22:02:15.000000000","message":"Since you wrote this, it probably should be copyright OpenStack LLC","commit_id":"c3ad7d047ba396ec895a6c566cdd21eec452e0c0"}],"nova/tests/rpc/test_kombu.py":[{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"ad777a80c600a6f232068f97766e8d75fb3211e6","unresolved":false,"context_lines":[{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        \"\"\""},{"line_number":292,"context_line":"        value \u003d \"This is the exception message\""},{"line_number":293,"context_line":"        self.assertRaises(Exception,"},{"line_number":294,"context_line":"                          self.rpc.call,"},{"line_number":295,"context_line":"                          self.context,"},{"line_number":296,"context_line":"                          \u0027test\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAFH%2F%2F%2B3s%3D","line":293,"updated":"2012-03-26 21:02:35.000000000","message":"Same HACKING violation here","commit_id":"987ad23aabbf848d1a870c2356b5bbcf639f0b14"}]}
