)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ab49d7e56a038c94f5dc58528e55eae3d214cfe3","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Mock seamicroclient lib in unit tests if not present"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Mock the python-seamicroclient library from within ironic/tests/drivers"},{"line_number":10,"context_line":"so that test_seamicro.py can import ironic/drivers/seamicro and run the"},{"line_number":11,"context_line":"unit tests on it, even when the external library is not present."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I4f2cd75b2c64a5a280a5d45d5cea058fd432815b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7adec928_36a58c53","line":10,"updated":"2014-05-08 15:09:36.000000000","message":"nit: ironic/drivers/modules/seamicro.","commit_id":"b5ce1fee23e34baa0c0b44e4f5782080d29bce65"}],"ironic/tests/drivers/__init__.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"a27d4bbd6afc3806528218440f0dd415e68b8901","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":"from ironic.tests.drivers import third_party_driver_mocks   # noqa"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_281c64c1","line":16,"updated":"2014-05-20 20:53:43.000000000","message":"You could __import__(\u0027ironic.tests.drivers.third_part*\u0027)  to avoid the \u0027unused import\u0027 problem.  But this is fine with me.","commit_id":"b5ce1fee23e34baa0c0b44e4f5782080d29bce65"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"8781c3e1efadf569b4f50eb734de88aa8c577321","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":"from ironic.tests.drivers import third_party_driver_mocks   # noqa"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_e0a3eeaf","line":16,"in_reply_to":"7adec928_281c64c1","updated":"2014-06-03 22:13:35.000000000","message":"I\u0027d rather not glob imports -- I\u0027m pretty sure there only needs to be one file to handle this","commit_id":"b5ce1fee23e34baa0c0b44e4f5782080d29bce65"}],"ironic/tests/drivers/test_seamicro.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"23c9305a63ce21db6ff2bba80fd02505f6002a25","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    sys.modules[\u0027seamicroclient\u0027] \u003d smc"},{"line_number":43,"context_line":"    sys.modules[\u0027seamicroclient.client\u0027] \u003d smc.client"},{"line_number":44,"context_line":"    sys.modules[\u0027seamicroclient.exceptions\u0027] \u003d smc.exceptions"},{"line_number":45,"context_line":"    reload(seamicro)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"from seamicroclient import exceptions as seamicro_client_exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXX%2F%2F7L4%3D","line":45,"updated":"2014-04-25 08:59:49.000000000","message":"This seems only slightly hacky. :)  I don\u0027t have a real problem with it, but it seems that you don\u0027t necessarily need to set the modules in sys.modules reload the seamicro module.  You could simply:\n\nseamico.client \u003d smc.client\n\nseamicro.exceptions \u003d smc.exceptions","commit_id":"c76b39a765cee53007d7579e82c540d3fa44554c"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"4239565b096d4a7059310559752bc261f655323b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    sys.modules[\u0027seamicroclient\u0027] \u003d smc"},{"line_number":43,"context_line":"    sys.modules[\u0027seamicroclient.client\u0027] \u003d smc.client"},{"line_number":44,"context_line":"    sys.modules[\u0027seamicroclient.exceptions\u0027] \u003d smc.exceptions"},{"line_number":45,"context_line":"    reload(seamicro)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"from seamicroclient import exceptions as seamicro_client_exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FALY%3D","line":45,"updated":"2014-04-24 18:22:47.000000000","message":"should this be reload(seamicroclient) ?","commit_id":"c76b39a765cee53007d7579e82c540d3fa44554c"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"916aae6aeef7900bffc2dcd50f39ab307a808b01","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    sys.modules[\u0027seamicroclient\u0027] \u003d smc"},{"line_number":43,"context_line":"    sys.modules[\u0027seamicroclient.client\u0027] \u003d smc.client"},{"line_number":44,"context_line":"    sys.modules[\u0027seamicroclient.exceptions\u0027] \u003d smc.exceptions"},{"line_number":45,"context_line":"    reload(seamicro)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"from seamicroclient import exceptions as seamicro_client_exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXX%2F%2F%2FvQ%3D","line":45,"in_reply_to":"AAAAXH%2F%2FALY%3D","updated":"2014-04-24 18:58:40.000000000","message":"nevermind","commit_id":"c76b39a765cee53007d7579e82c540d3fa44554c"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"97dc9785f271b6d093af19f495ca6fa2b9d9fd8e","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    sys.modules[\u0027seamicroclient\u0027] \u003d smc"},{"line_number":43,"context_line":"    sys.modules[\u0027seamicroclient.client\u0027] \u003d smc.client"},{"line_number":44,"context_line":"    sys.modules[\u0027seamicroclient.exceptions\u0027] \u003d smc.exceptions"},{"line_number":45,"context_line":"    reload(seamicro)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"from seamicroclient import exceptions as seamicro_client_exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_53f14dcc","line":45,"in_reply_to":"AAAAXX%2F%2F1QY%3D","updated":"2014-04-30 17:30:16.000000000","message":"Oh stevedore.","commit_id":"c76b39a765cee53007d7579e82c540d3fa44554c"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"f01d5f9b6ea777ca5f720e0f5b0229e6601c7a57","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    sys.modules[\u0027seamicroclient\u0027] \u003d smc"},{"line_number":43,"context_line":"    sys.modules[\u0027seamicroclient.client\u0027] \u003d smc.client"},{"line_number":44,"context_line":"    sys.modules[\u0027seamicroclient.exceptions\u0027] \u003d smc.exceptions"},{"line_number":45,"context_line":"    reload(seamicro)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"from seamicroclient import exceptions as seamicro_client_exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXX%2F%2F1QY%3D","line":45,"in_reply_to":"AAAAXX%2F%2F7L4%3D","updated":"2014-04-25 22:31:31.000000000","message":"Does not work -- stevedore is loading the drivers.fake_seamicro plugin and fails if we don\u0027t update sys.modules beforehand.\n\n\n  Traceback (most recent call last):\n  File \"ironic/tests/drivers/test_seamicro.py\", line 285, in setUp\n    mgr_utils.mock_the_extension_manager(driver\u003d\u0027fake_seamicro\u0027)\n  File \"ironic/tests/conductor/utils.py\", line 51, in mock_the_extension_manager\n    entry_point, True, [], {}, False)\n  File \"/opt/source/ironic/.tox/venv/local/lib/python2.7/site-packages/stevedore/enabled.py\", line 66, in _load_one_plugin\n    verify_requirements,\n  File \"/opt/source/ironic/.tox/venv/local/lib/python2.7/site-packages/stevedore/extension.py\", line 180, in _load_one_plugin\n    obj \u003d plugin(*invoke_args, **invoke_kwds)\n  File \"ironic/drivers/fake.py\", line 89, in __init__\n    reason\u003d\"Unable to import seamicroclient library\")\n  DriverLoadError: Driver FakeSeaMicroDriver could not be loaded. Reason: Unable to import seamicroclient library.","commit_id":"c76b39a765cee53007d7579e82c540d3fa44554c"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"23c9305a63ce21db6ff2bba80fd02505f6002a25","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    reload(seamicro)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"from seamicroclient import exceptions as seamicro_client_exception"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class Fake_Server():"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXX%2F%2F7JU%3D","line":48,"updated":"2014-04-25 08:59:49.000000000","message":"And if you followed my suggestion, you could just seamicro_client_exceptions \u003d smc.exceptions also in the above \u0027if\u0027.","commit_id":"c76b39a765cee53007d7579e82c540d3fa44554c"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ab49d7e56a038c94f5dc58528e55eae3d214cfe3","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from ironic.tests.db import utils as db_utils"},{"line_number":30,"context_line":"from ironic.tests.objects import utils as obj_utils"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from seamicroclient import exceptions as seamicro_client_exception"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"INFO_DICT \u003d db_utils.get_test_seamicro_info()"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_6823b305","line":32,"updated":"2014-05-08 15:09:36.000000000","message":"Wondering why you put this here instead of after \u0027import mock\u0027.","commit_id":"b5ce1fee23e34baa0c0b44e4f5782080d29bce65"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"a0d2a582cba2b4266fc1c162d79f42f83e719710","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from ironic.tests.db import utils as db_utils"},{"line_number":30,"context_line":"from ironic.tests.objects import utils as obj_utils"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from seamicroclient import exceptions as seamicro_client_exception"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"INFO_DICT \u003d db_utils.get_test_seamicro_info()"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_e3278b62","line":32,"in_reply_to":"7adec928_6823b305","updated":"2014-05-21 05:51:59.000000000","message":"If this is order dependent, I\u0027d like a comment on the import stating the import requirement","commit_id":"b5ce1fee23e34baa0c0b44e4f5782080d29bce65"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"a27d4bbd6afc3806528218440f0dd415e68b8901","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from ironic.tests.db import utils as db_utils"},{"line_number":30,"context_line":"from ironic.tests.objects import utils as obj_utils"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from seamicroclient import exceptions as seamicro_client_exception"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"INFO_DICT \u003d db_utils.get_test_seamicro_info()"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_a88794d6","line":32,"in_reply_to":"7adec928_6823b305","updated":"2014-05-20 20:53:43.000000000","message":"It has to be after the new third_party mocks module is loaded, which means it has to be after ironic.tests.drivers is loaded. But yeah, since this test module is in that directory, I would think it would certainly be loaded already.","commit_id":"b5ce1fee23e34baa0c0b44e4f5782080d29bce65"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"8781c3e1efadf569b4f50eb734de88aa8c577321","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from ironic.tests.db import utils as db_utils"},{"line_number":30,"context_line":"from ironic.tests.objects import utils as obj_utils"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from seamicroclient import exceptions as seamicro_client_exception"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"INFO_DICT \u003d db_utils.get_test_seamicro_info()"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_00c29a58","line":32,"in_reply_to":"7adec928_a88794d6","updated":"2014-06-03 22:13:35.000000000","message":"Not order dependent. I\u0027ll move it.","commit_id":"b5ce1fee23e34baa0c0b44e4f5782080d29bce65"}],"ironic/tests/drivers/third_party_driver_mocks.py":[{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"c97152c5cec8aa94e88becf2d73dc326793b02ff","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    seamicroclient"},{"line_number":25,"context_line":"\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"import mock"},{"line_number":28,"context_line":"import sys"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from ironic.drivers.modules import seamicro"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_872b93ea","line":27,"updated":"2014-05-08 09:00:02.000000000","message":"`mock` is not a built-in module","commit_id":"f79e78447f2fd26326857ce361831aae0ebfeedb"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"253070fe0437881332e2357bd786463bd155a1e9","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    seamicroclient"},{"line_number":25,"context_line":"\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"import mock"},{"line_number":28,"context_line":"import sys"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from ironic.drivers.modules import seamicro"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_e5944c39","line":27,"in_reply_to":"7adec928_872b93ea","updated":"2014-05-08 13:00:12.000000000","message":"Done","commit_id":"f79e78447f2fd26326857ce361831aae0ebfeedb"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ab49d7e56a038c94f5dc58528e55eae3d214cfe3","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"import mock"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from ironic.drivers.modules import seamicro"},{"line_number":32,"context_line":"from ironic.openstack.common import importutils"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_8b4b9958","line":31,"updated":"2014-05-08 15:09:36.000000000","message":"Why does this (and the reload later) need to be done? I don\u0027t actually understand how the __init__ is done so maybe it is a dumb question. test_seamicro.py imports this; is it a question of timing?","commit_id":"b5ce1fee23e34baa0c0b44e4f5782080d29bce65"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"a0d2a582cba2b4266fc1c162d79f42f83e719710","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"import mock"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from ironic.drivers.modules import seamicro"},{"line_number":32,"context_line":"from ironic.openstack.common import importutils"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_b2fd3a71","line":31,"in_reply_to":"7adec928_482a90e8","updated":"2014-05-21 05:51:59.000000000","message":"...either that or a comment to that fact.  Either way, we need to make it explicit that we\u0027re fussing with the import ordering/reloading.","commit_id":"b5ce1fee23e34baa0c0b44e4f5782080d29bce65"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"8781c3e1efadf569b4f50eb734de88aa8c577321","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"import mock"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from ironic.drivers.modules import seamicro"},{"line_number":32,"context_line":"from ironic.openstack.common import importutils"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_80cdca87","line":31,"in_reply_to":"7adec928_482a90e8","updated":"2014-06-03 22:13:35.000000000","message":"I like this suggestion, thanks!","commit_id":"b5ce1fee23e34baa0c0b44e4f5782080d29bce65"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"8781c3e1efadf569b4f50eb734de88aa8c577321","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"import mock"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from ironic.drivers.modules import seamicro"},{"line_number":32,"context_line":"from ironic.openstack.common import importutils"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_00661ac1","line":31,"in_reply_to":"7adec928_8b4b9958","updated":"2014-06-03 22:13:35.000000000","message":"The doc string on L15-23 explains this, but i\u0027ll add some more comments.","commit_id":"b5ce1fee23e34baa0c0b44e4f5782080d29bce65"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"a27d4bbd6afc3806528218440f0dd415e68b8901","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"import mock"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from ironic.drivers.modules import seamicro"},{"line_number":32,"context_line":"from ironic.openstack.common import importutils"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_482a90e8","line":31,"in_reply_to":"7adec928_8b4b9958","updated":"2014-05-20 20:53:43.000000000","message":"if ironic.drivers.modules.seamicro happened to get imported before this module... then it would think there is no seamicroclient available, so it would need to be reloaded.\n\nI suppose you could remove this import and you could change the below to be:\n\nif \u0027ironic.drivers.modules.seamicro\u0027 in sys.modules:\n    reload(sys.modules[\u0027ironic.drivers.modules.seamicro\u0027])","commit_id":"b5ce1fee23e34baa0c0b44e4f5782080d29bce65"}]}
