)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13883,"name":"Adam Reznechek","email":"adreznec@us.ibm.com","username":"adrez"},"change_message_id":"b21973b820f72db16b2371b662a57680a2ef1e26","unresolved":false,"context_lines":[{"line_number":10,"context_line":"which third-party drivers were loading their compute driver from out of"},{"line_number":11,"context_line":"tree, resulting failures such as the following starting up n-cpu:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"2016-04-25 23:53:46.581 32459 INFO nova.virt.driver [-] Loading compute"},{"line_number":14,"context_line":"driver \u0027nova_powervm.virt.powervm.driver.PowerVMDriver\u0027"},{"line_number":15,"context_line":"2016-04-25 23:53:46.582 32459 ERROR nova.virt.driver [-] Unable to load"},{"line_number":16,"context_line":"the virtualization driver"},{"line_number":17,"context_line":"2016-04-25 23:53:46.582 32459 ERROR nova.virt.driver Traceback (most"},{"line_number":18,"context_line":"recent call last):"},{"line_number":19,"context_line":"2016-04-25 23:53:46.582 32459 ERROR nova.virt.driver File"},{"line_number":20,"context_line":"\"/opt/stack/nova/nova/virt/driver.py\", line 1623, in load_compute_driver"},{"line_number":21,"context_line":"2016-04-25 23:53:46.582 32459 ERROR nova.virt.driver virtapi)"},{"line_number":22,"context_line":"2016-04-25 23:53:46.582 32459 ERROR nova.virt.driver File"},{"line_number":23,"context_line":"\"/usr/local/lib/python2.7/dist-packages/oslo_utils/importutils.py\", line"},{"line_number":24,"context_line":"44, in import_object"},{"line_number":25,"context_line":"2016-04-25 23:53:46.582 32459 ERROR nova.virt.driver return"},{"line_number":26,"context_line":"import_class(import_str)(*args, **kwargs)"},{"line_number":27,"context_line":"2016-04-25 23:53:46.582 32459 ERROR nova.virt.driver File"},{"line_number":28,"context_line":"\"/usr/local/lib/python2.7/dist-packages/oslo_utils/importutils.py\", line"},{"line_number":29,"context_line":"30, in import_class"},{"line_number":30,"context_line":"2016-04-25 23:53:46.582 32459 ERROR nova.virt.driver __import__(mod_str)"},{"line_number":31,"context_line":"2016-04-25 23:53:46.582 32459 ERROR nova.virt.driver ImportError: No"},{"line_number":32,"context_line":"module named nova_powervm.virt.powervm.driver"},{"line_number":33,"context_line":"2016-04-25 23:53:46.582 32459 ERROR nova.virt.driver"},{"line_number":34,"context_line":"n-cpu failed to start"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"This change set declares the nova.virt namespace per PEP420"},{"line_number":37,"context_line":"(https://www.python.org/dev/peps/pep-0420/), allowing third parties to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a122d0e_5902f6b4","line":34,"range":{"start_line":13,"start_character":0,"end_line":34,"end_character":21},"updated":"2016-04-28 14:17:12.000000000","message":"I\u0027m not sure we really need to get this specific on the error in the commit message.","commit_id":"c0a71da0be1568ee15737c2095855f2097fa5655"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"44e4205b63271c0993761f0b8448a69d413082a2","unresolved":false,"context_lines":[{"line_number":10,"context_line":"which third-party drivers were loading their compute driver from out of"},{"line_number":11,"context_line":"tree, resulting failures such as the following starting up n-cpu:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"2016-04-25 23:53:46.581 32459 INFO nova.virt.driver [-] Loading compute"},{"line_number":14,"context_line":"driver \u0027nova_powervm.virt.powervm.driver.PowerVMDriver\u0027"},{"line_number":15,"context_line":"2016-04-25 23:53:46.582 32459 ERROR nova.virt.driver [-] Unable to load"},{"line_number":16,"context_line":"the virtualization driver"},{"line_number":17,"context_line":"2016-04-25 23:53:46.582 32459 ERROR nova.virt.driver Traceback (most"},{"line_number":18,"context_line":"recent call last):"},{"line_number":19,"context_line":"2016-04-25 23:53:46.582 32459 ERROR nova.virt.driver File"},{"line_number":20,"context_line":"\"/opt/stack/nova/nova/virt/driver.py\", line 1623, in load_compute_driver"},{"line_number":21,"context_line":"2016-04-25 23:53:46.582 32459 ERROR nova.virt.driver virtapi)"},{"line_number":22,"context_line":"2016-04-25 23:53:46.582 32459 ERROR nova.virt.driver File"},{"line_number":23,"context_line":"\"/usr/local/lib/python2.7/dist-packages/oslo_utils/importutils.py\", line"},{"line_number":24,"context_line":"44, in import_object"},{"line_number":25,"context_line":"2016-04-25 23:53:46.582 32459 ERROR nova.virt.driver return"},{"line_number":26,"context_line":"import_class(import_str)(*args, **kwargs)"},{"line_number":27,"context_line":"2016-04-25 23:53:46.582 32459 ERROR nova.virt.driver File"},{"line_number":28,"context_line":"\"/usr/local/lib/python2.7/dist-packages/oslo_utils/importutils.py\", line"},{"line_number":29,"context_line":"30, in import_class"},{"line_number":30,"context_line":"2016-04-25 23:53:46.582 32459 ERROR nova.virt.driver __import__(mod_str)"},{"line_number":31,"context_line":"2016-04-25 23:53:46.582 32459 ERROR nova.virt.driver ImportError: No"},{"line_number":32,"context_line":"module named nova_powervm.virt.powervm.driver"},{"line_number":33,"context_line":"2016-04-25 23:53:46.582 32459 ERROR nova.virt.driver"},{"line_number":34,"context_line":"n-cpu failed to start"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"This change set declares the nova.virt namespace per PEP420"},{"line_number":37,"context_line":"(https://www.python.org/dev/peps/pep-0420/), allowing third parties to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a122d0e_d933a660","line":34,"range":{"start_line":13,"start_character":0,"end_line":34,"end_character":21},"in_reply_to":"1a122d0e_5902f6b4","updated":"2016-04-28 14:28:55.000000000","message":"Fair - the stack trace is in the bug, which is linked from the Partial-Bug tag.","commit_id":"c0a71da0be1568ee15737c2095855f2097fa5655"},{"author":{"_account_id":13883,"name":"Adam Reznechek","email":"adreznec@us.ibm.com","username":"adrez"},"change_message_id":"b21973b820f72db16b2371b662a57680a2ef1e26","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from that of the real nova project; and still have packages thereunder"},{"line_number":40,"context_line":"found by nova.virt.driver.load_compute_driver."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Usage:"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"1) Create a directory structure in your third-party package such as:"},{"line_number":45,"context_line":"    nova/virt/third_party/"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"2) Populate each directory with __init__.py.  They may be empty except"},{"line_number":48,"context_line":"for nova/virt/__init__.py, which should contain some variation of:"},{"line_number":49,"context_line":"    __import__(\u0027pkg_resources\u0027).declare_namespace(__name__)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"3) Create nova/virt/third_party/driver.py containing your"},{"line_number":52,"context_line":"nova.virt.driver.ComputeDriver subclass, e.g."},{"line_number":53,"context_line":"    class ThirdPartyDriver(nova.virt.driver.ComputeDriver):"},{"line_number":54,"context_line":"        ..."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"4) Ensure your package installs your nova/ subdirectory somewhere in the"},{"line_number":57,"context_line":"sys.path that nova will pick up.  E.g. in setup.cfg:"},{"line_number":58,"context_line":"    [files]"},{"line_number":59,"context_line":"    packages \u003d"},{"line_number":60,"context_line":"        third_party"},{"line_number":61,"context_line":"        nova"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"5) In your nova.conf, specify compute_driver as the path to your"},{"line_number":64,"context_line":"ComputeDriver subclass, *minus* the nova.virt part of the namespace,"},{"line_number":65,"context_line":"e.g."},{"line_number":66,"context_line":"    compute_driver \u003d third_party.driver.ThirdPartyDriver"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Change-Id: I78c0ca85cb6ee2e370214a89a203f6f099748930"},{"line_number":69,"context_line":"Partial-Bug: 1575335"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a122d0e_7931b2a1","line":66,"range":{"start_line":42,"start_character":0,"end_line":66,"end_character":56},"updated":"2016-04-28 14:17:12.000000000","message":"Is the commit message the right place to document usage?","commit_id":"c0a71da0be1568ee15737c2095855f2097fa5655"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"44e4205b63271c0993761f0b8448a69d413082a2","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from that of the real nova project; and still have packages thereunder"},{"line_number":40,"context_line":"found by nova.virt.driver.load_compute_driver."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Usage:"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"1) Create a directory structure in your third-party package such as:"},{"line_number":45,"context_line":"    nova/virt/third_party/"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"2) Populate each directory with __init__.py.  They may be empty except"},{"line_number":48,"context_line":"for nova/virt/__init__.py, which should contain some variation of:"},{"line_number":49,"context_line":"    __import__(\u0027pkg_resources\u0027).declare_namespace(__name__)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"3) Create nova/virt/third_party/driver.py containing your"},{"line_number":52,"context_line":"nova.virt.driver.ComputeDriver subclass, e.g."},{"line_number":53,"context_line":"    class ThirdPartyDriver(nova.virt.driver.ComputeDriver):"},{"line_number":54,"context_line":"        ..."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"4) Ensure your package installs your nova/ subdirectory somewhere in the"},{"line_number":57,"context_line":"sys.path that nova will pick up.  E.g. in setup.cfg:"},{"line_number":58,"context_line":"    [files]"},{"line_number":59,"context_line":"    packages \u003d"},{"line_number":60,"context_line":"        third_party"},{"line_number":61,"context_line":"        nova"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"5) In your nova.conf, specify compute_driver as the path to your"},{"line_number":64,"context_line":"ComputeDriver subclass, *minus* the nova.virt part of the namespace,"},{"line_number":65,"context_line":"e.g."},{"line_number":66,"context_line":"    compute_driver \u003d third_party.driver.ThirdPartyDriver"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Change-Id: I78c0ca85cb6ee2e370214a89a203f6f099748930"},{"line_number":69,"context_line":"Partial-Bug: 1575335"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a122d0e_99c92e29","line":66,"range":{"start_line":42,"start_character":0,"end_line":66,"end_character":56},"in_reply_to":"1a122d0e_7931b2a1","updated":"2016-04-28 14:28:55.000000000","message":"Yeah, I was wondering about that.  Is there some kind of readme or release note I can use to document how to load an out-of-tree driver?\n\nHowever, given the direction of leaving this generically as a \"namespace composition\" thing, that would go in a separate change set anyway.","commit_id":"c0a71da0be1568ee15737c2095855f2097fa5655"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"87883ea4ea74374807e56452533606c742aae88a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Declare nova.virt namespace"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change set declares the nova.virt namespace per PEP420"},{"line_number":10,"context_line":"(https://www.python.org/dev/peps/pep-0420/), allowing third parties to"},{"line_number":11,"context_line":"install their own nova/virt/* directory structure in a location separate"},{"line_number":12,"context_line":"from that of the real nova project.  One use case is to allow the"},{"line_number":13,"context_line":"loading of third-party compute drivers since"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a122d0e_40603aa5","line":10,"range":{"start_line":10,"start_character":43,"end_line":10,"end_character":45},"updated":"2016-04-28 14:54:53.000000000","message":"The commit message should end here. The use of third party drivers is not supported or encouraged and this message implies that it is. There are good reasons for adding this namespace but it is not being done to encourage third party drivers.","commit_id":"62b4defd552e273322976df9b57d21edf7ed6d17"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"b2385d7e8146fcef3d0b5509029934053e5be080","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Declare nova.virt namespace"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change set declares the nova.virt namespace per PEP420"},{"line_number":10,"context_line":"(https://www.python.org/dev/peps/pep-0420/), allowing third parties to"},{"line_number":11,"context_line":"install their own nova/virt/* directory structure in a location separate"},{"line_number":12,"context_line":"from that of the real nova project.  One use case is to allow the"},{"line_number":13,"context_line":"loading of third-party compute drivers since"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a122d0e_a092ee54","line":10,"range":{"start_line":10,"start_character":43,"end_line":10,"end_character":45},"in_reply_to":"1a122d0e_40603aa5","updated":"2016-04-28 14:59:47.000000000","message":"I think we should just change third party everywhere to \u0027out-of-tree\u0027 virt drivers?\n\nThird party is not what is encouraged or supported, but I thought there was the intention to have a path to allow a virt driver to come in tree once it is mature enough.","commit_id":"62b4defd552e273322976df9b57d21edf7ed6d17"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e384ad2165f471e0f941f71af71efcd9ad74851b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Declare nova.virt namespace"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change set declares the nova.virt namespace per PEP420"},{"line_number":10,"context_line":"(https://www.python.org/dev/peps/pep-0420/), allowing third parties to"},{"line_number":11,"context_line":"install their own nova/virt/* directory structure in a location separate"},{"line_number":12,"context_line":"from that of the real nova project.  One use case is to allow the"},{"line_number":13,"context_line":"loading of third-party compute drivers since"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a122d0e_e0a6a6a9","line":10,"range":{"start_line":10,"start_character":43,"end_line":10,"end_character":45},"in_reply_to":"1a122d0e_a092ee54","updated":"2016-04-28 15:01:03.000000000","message":"No, out of tree virt drivers is a worse thing I think.","commit_id":"62b4defd552e273322976df9b57d21edf7ed6d17"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"12c47082257028606c3777980550ad16e9bac85b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Declare nova.virt namespace"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change set declares the nova.virt namespace per PEP420"},{"line_number":10,"context_line":"(https://www.python.org/dev/peps/pep-0420/), allowing third parties to"},{"line_number":11,"context_line":"install their own nova/virt/* directory structure in a location separate"},{"line_number":12,"context_line":"from that of the real nova project.  One use case is to allow the"},{"line_number":13,"context_line":"loading of third-party compute drivers since"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a122d0e_a03cae2f","line":10,"range":{"start_line":10,"start_character":43,"end_line":10,"end_character":45},"in_reply_to":"1a122d0e_e0a6a6a9","updated":"2016-04-28 15:03:54.000000000","message":"Edited per IRC discussion (I think).","commit_id":"62b4defd552e273322976df9b57d21edf7ed6d17"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a5cb37ab5ab75324e81535a49b43d3d05aa84b57","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This change set declares the nova.virt namespace per PEP420"},{"line_number":10,"context_line":"(https://www.python.org/dev/peps/pep-0420/), allowing third parties to"},{"line_number":11,"context_line":"install their own nova/virt/* directory structure in a location separate"},{"line_number":12,"context_line":"from that of the real nova project.  One use case is to allow the"},{"line_number":13,"context_line":"loading of third-party compute drivers since"},{"line_number":14,"context_line":"8eb03de1eb83a6cd2d4d41804e1b8253f94e5400 (see bug)."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I78c0ca85cb6ee2e370214a89a203f6f099748930"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a122d0e_20637eb2","line":13,"range":{"start_line":12,"start_character":37,"end_line":13,"end_character":44},"updated":"2016-04-28 14:55:43.000000000","message":"I know this seems super nit-ish, but I _really_ don\u0027t want to have a sentence like this persisted in our commit log for all time. I think people will find this and think we\u0027re changing our policy.\n\nCan you just nuke this?\n\nIf you really want to keep it, you could say:\n\n This allows composing nova.virt for drivers under test from separate packages","commit_id":"62b4defd552e273322976df9b57d21edf7ed6d17"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"12c47082257028606c3777980550ad16e9bac85b","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This change set declares the nova.virt namespace per PEP420"},{"line_number":10,"context_line":"(https://www.python.org/dev/peps/pep-0420/), allowing third parties to"},{"line_number":11,"context_line":"install their own nova/virt/* directory structure in a location separate"},{"line_number":12,"context_line":"from that of the real nova project.  One use case is to allow the"},{"line_number":13,"context_line":"loading of third-party compute drivers since"},{"line_number":14,"context_line":"8eb03de1eb83a6cd2d4d41804e1b8253f94e5400 (see bug)."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I78c0ca85cb6ee2e370214a89a203f6f099748930"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a122d0e_80337261","line":13,"range":{"start_line":12,"start_character":37,"end_line":13,"end_character":44},"in_reply_to":"1a122d0e_20637eb2","updated":"2016-04-28 15:03:54.000000000","message":"Done","commit_id":"62b4defd552e273322976df9b57d21edf7ed6d17"}],"nova/tests/unit/virt/test_driver.py":[{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"209997f145108a396d3e224711848a04b9b3024d","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    def test_load_third_party_driver(self):"},{"line_number":88,"context_line":"        \"\"\"Declared nova.virt namespace allows loading from out of tree.\"\"\""},{"line_number":89,"context_line":"        # This path contains a nova/virt/* directory structure"},{"line_number":90,"context_line":"        path \u003d \u0027nova/tests/unit/virt/third_party_driver\u0027"},{"line_number":91,"context_line":"        sys.path.append(path)"},{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            tpdrv \u003d driver.load_compute_driver("}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_160e9f8b","line":90,"range":{"start_line":90,"start_character":37,"end_line":90,"end_character":55},"updated":"2016-04-27 22:43:03.000000000","message":"I\u0027d call it an out_of_tree_driver throughout.","commit_id":"c0a71da0be1568ee15737c2095855f2097fa5655"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"44e4205b63271c0993761f0b8448a69d413082a2","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    def test_load_third_party_driver(self):"},{"line_number":88,"context_line":"        \"\"\"Declared nova.virt namespace allows loading from out of tree.\"\"\""},{"line_number":89,"context_line":"        # This path contains a nova/virt/* directory structure"},{"line_number":90,"context_line":"        path \u003d \u0027nova/tests/unit/virt/third_party_driver\u0027"},{"line_number":91,"context_line":"        sys.path.append(path)"},{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            tpdrv \u003d driver.load_compute_driver("}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_39df3ad7","line":90,"range":{"start_line":90,"start_character":37,"end_line":90,"end_character":55},"in_reply_to":"1a122d0e_160e9f8b","updated":"2016-04-28 14:28:55.000000000","message":"Moot in light of removal of tests.","commit_id":"c0a71da0be1568ee15737c2095855f2097fa5655"}],"nova/tests/unit/virt/third_party_driver/nova/virt/third_party/driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6ca71041fc3166fafedfcdf1df84a0d0639c9c69","unresolved":false,"context_lines":[{"line_number":1,"context_line":"from nova.virt import driver"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"class ThirdPartyDriver(driver.ComputeDriver):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_3680fbbe","line":1,"updated":"2016-04-27 22:43:10.000000000","message":"As an IBMer, I know you need a copyright in here.","commit_id":"c0a71da0be1568ee15737c2095855f2097fa5655"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"209997f145108a396d3e224711848a04b9b3024d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"from nova.virt import driver"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"class ThirdPartyDriver(driver.ComputeDriver):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_76271312","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":28},"updated":"2016-04-27 22:43:03.000000000","message":"Probably add copyright here?","commit_id":"c0a71da0be1568ee15737c2095855f2097fa5655"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"44e4205b63271c0993761f0b8448a69d413082a2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"from nova.virt import driver"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"class ThirdPartyDriver(driver.ComputeDriver):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_9d6599e2","line":1,"in_reply_to":"1a122d0e_3680fbbe","updated":"2016-04-28 14:28:55.000000000","message":"Moot in light of removal of test code.","commit_id":"c0a71da0be1568ee15737c2095855f2097fa5655"}],"nova/virt/__init__.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6ca71041fc3166fafedfcdf1df84a0d0639c9c69","unresolved":false,"context_lines":[{"line_number":1,"context_line":"__import__(\u0027pkg_resources\u0027).declare_namespace(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_766ef32f","line":1,"updated":"2016-04-27 22:43:10.000000000","message":"Copyright.","commit_id":"c0a71da0be1568ee15737c2095855f2097fa5655"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"209997f145108a396d3e224711848a04b9b3024d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"__import__(\u0027pkg_resources\u0027).declare_namespace(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_5624970b","line":1,"updated":"2016-04-27 22:43:03.000000000","message":"Not sure if one is needed here...","commit_id":"c0a71da0be1568ee15737c2095855f2097fa5655"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ae424ec036bd36705c8ce7f44cba2cc592a02da3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"__import__(\u0027pkg_resources\u0027).declare_namespace(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_8adf160c","line":1,"in_reply_to":"1a122d0e_766ef32f","updated":"2016-04-28 11:58:58.000000000","message":"This is the only actual change we need here right?","commit_id":"c0a71da0be1568ee15737c2095855f2097fa5655"},{"author":{"_account_id":13883,"name":"Adam Reznechek","email":"adreznec@us.ibm.com","username":"adrez"},"change_message_id":"b21973b820f72db16b2371b662a57680a2ef1e26","unresolved":false,"context_lines":[{"line_number":1,"context_line":"__import__(\u0027pkg_resources\u0027).declare_namespace(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_f9e4a20d","line":1,"in_reply_to":"1a122d0e_8adf160c","updated":"2016-04-28 14:17:12.000000000","message":"Yes, this is the key functional bit.","commit_id":"c0a71da0be1568ee15737c2095855f2097fa5655"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"44e4205b63271c0993761f0b8448a69d413082a2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"__import__(\u0027pkg_resources\u0027).declare_namespace(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_1da069f3","line":1,"in_reply_to":"1a122d0e_f9e4a20d","updated":"2016-04-28 14:28:55.000000000","message":"Roger wilco.  Wasn\u0027t sure to whom to attribute the copyright.  Will use IBM, I guess...","commit_id":"c0a71da0be1568ee15737c2095855f2097fa5655"}]}
