)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"60b54c852211e884cbb41f1f1fd55f4efb9e35c3","unresolved":false,"context_lines":[{"line_number":9,"context_line":"XenServer has released os-xenapi lib on pypi, this patch is to"},{"line_number":10,"context_line":"use os-xenapi in nova project. In this patch, we only change"},{"line_number":11,"context_line":"the usage of XenAPI to os-xenapi. In the future patch, we will"},{"line_number":12,"context_line":"delete the unused files."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I424dfcd507c4b7fbeea5245cc1c234dec01d5781"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a71b18c_576ee301","line":12,"updated":"2016-12-02 11:11:12.000000000","message":"I\u0027d say \"The next patch in the series will remove the unused files\"","commit_id":"3a35dd634abc9a4789817978af9f71170236557a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f80fd251514386faded3ebd375d1e4b92d2c3c54","unresolved":false,"context_lines":[{"line_number":11,"context_line":"the usage of XenAPI to os-xenapi and fix unit tests. In the next"},{"line_number":12,"context_line":"patch, we will delete those unused files."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partially-Implements: blueprint os-xenapi-libray"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I424dfcd507c4b7fbeea5245cc1c234dec01d5781"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3a71b18c_63336cf7","line":14,"range":{"start_line":14,"start_character":32,"end_line":14,"end_character":48},"updated":"2016-12-07 13:37:29.000000000","message":"The blueprint is actually add-os-xenapi-library. Please update this and the topic branch name to link this to launchpad correctly.","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"ba53a8856b855e223887e8d07e50987b766257a9","unresolved":false,"context_lines":[{"line_number":11,"context_line":"the usage of XenAPI to os-xenapi and fix unit tests. In the next"},{"line_number":12,"context_line":"patch, we will delete those unused files."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partially-Implements: blueprint os-xenapi-libray"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I424dfcd507c4b7fbeea5245cc1c234dec01d5781"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3a71b18c_ea89accb","line":14,"range":{"start_line":14,"start_character":32,"end_line":14,"end_character":48},"in_reply_to":"3a71b18c_63336cf7","updated":"2016-12-09 11:03:21.000000000","message":"Yes, I will change it to *add-os-xenapi-library*, thanks for pointing out:)","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"}],"nova/tests/unit/virt/xenapi/client/test_session.py":[{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"1690fc14c6c74b9ed7c951c99445267aef46435a","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from nova.tests.unit.virt.xenapi import stubs"},{"line_number":23,"context_line":"from nova import version"},{"line_number":24,"context_line":"from nova.virt.xenapi.client import session"},{"line_number":25,"context_line":"from nova.virt.xenapi import fake as xenapi_fake"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class SessionTestCase(stubs.XenAPITestBaseNoDB):"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a6eadb0_2f19c779","side":"PARENT","line":25,"range":{"start_line":25,"start_character":37,"end_line":25,"end_character":48},"updated":"2016-12-15 06:20:47.000000000","message":"We delete fake.XenAPI, so there is no need to import fake here as it use fake.XenAPI in Line 208\nI suggest we delete folder tests/unit/virt/xenapi/client as all the tests are moved to os-xenapi","commit_id":"199d3d81ee44b7fa79eb443468cbfc7b118c2266"}],"nova/tests/unit/virt/xenapi/image/test_glance.py":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"8ebc13036ba24a33b177899974558a0df86995d8","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    @mock.patch.object(random, \u0027shuffle\u0027)"},{"line_number":94,"context_line":"    @mock.patch.object(time, \u0027sleep\u0027)"},{"line_number":95,"context_line":"    @mock.patch.object(compute_utils, \u0027add_instance_fault_from_exc\u0027)"},{"line_number":96,"context_line":"    def test_download_image_retry(self, mock_fault, mock_sleep,"},{"line_number":97,"context_line":"                                  mock_shuffle, mock_make_uuid_stack):"},{"line_number":98,"context_line":"        params \u003d self._get_download_params()"},{"line_number":99,"context_line":"        self.flags(num_retries\u003d2, group\u003d\u0027glance\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_204e0ac1","line":96,"updated":"2016-12-06 10:02:49.000000000","message":"Why are we no longer testing the logging here?  I\u0027d rather this was just a refactor with no changes in functionality.","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"caf2c09776c599c3645e833751c5e59485439b4e","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    @mock.patch.object(random, \u0027shuffle\u0027)"},{"line_number":94,"context_line":"    @mock.patch.object(time, \u0027sleep\u0027)"},{"line_number":95,"context_line":"    @mock.patch.object(compute_utils, \u0027add_instance_fault_from_exc\u0027)"},{"line_number":96,"context_line":"    def test_download_image_retry(self, mock_fault, mock_sleep,"},{"line_number":97,"context_line":"                                  mock_shuffle, mock_make_uuid_stack):"},{"line_number":98,"context_line":"        params \u003d self._get_download_params()"},{"line_number":99,"context_line":"        self.flags(num_retries\u003d2, group\u003d\u0027glance\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_c67e4e69","line":96,"in_reply_to":"3a71b18c_204e0ac1","updated":"2016-12-06 10:34:48.000000000","message":"There is no change in function, I just thought os-xenapi is a lib, nova unit tests don\u0027t need to check the details on os-xenapi\u0027s session","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"cb02e8f869c634c03de6fd004f6d3e1289a712e0","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    @mock.patch.object(random, \u0027shuffle\u0027)"},{"line_number":94,"context_line":"    @mock.patch.object(time, \u0027sleep\u0027)"},{"line_number":95,"context_line":"    @mock.patch.object(compute_utils, \u0027add_instance_fault_from_exc\u0027)"},{"line_number":96,"context_line":"    def test_download_image_retry(self, mock_fault, mock_sleep,"},{"line_number":97,"context_line":"                                  mock_shuffle, mock_make_uuid_stack):"},{"line_number":98,"context_line":"        params \u003d self._get_download_params()"},{"line_number":99,"context_line":"        self.flags(num_retries\u003d2, group\u003d\u0027glance\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_6ef19395","line":96,"in_reply_to":"3a71b18c_c67e4e69","updated":"2016-12-07 14:10:28.000000000","message":"It\u0027s a good point; but if Nova requires this sort of logging then Nova should be doing the logging itself rather than verifying an external library.\n\nI\u0027m okay with removing this logging, but there should be a note in the commit message - for example \"Removing parts of Unit Tests which check now internal os-xenapi workings\"","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"}],"nova/tests/unit/virt/xenapi/stubs.py":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"8ebc13036ba24a33b177899974558a0df86995d8","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import fixtures"},{"line_number":21,"context_line":"import mock"},{"line_number":22,"context_line":"from os_xenapi.client import session"},{"line_number":23,"context_line":"from oslo_serialization import jsonutils"},{"line_number":24,"context_line":"import six"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_20e52aa7","line":22,"updated":"2016-12-06 10:02:49.000000000","message":"Ordering-wise, shouldn\u0027t this come after oslo?","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"caf2c09776c599c3645e833751c5e59485439b4e","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import fixtures"},{"line_number":21,"context_line":"import mock"},{"line_number":22,"context_line":"from os_xenapi.client import session"},{"line_number":23,"context_line":"from oslo_serialization import jsonutils"},{"line_number":24,"context_line":"import six"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_e6e0aa2b","line":22,"in_reply_to":"3a71b18c_20e52aa7","updated":"2016-12-06 10:34:48.000000000","message":"Based on pep8, this shoulb in front of oslo, as oslo_ v.s. os_","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"cb02e8f869c634c03de6fd004f6d3e1289a712e0","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import fixtures"},{"line_number":21,"context_line":"import mock"},{"line_number":22,"context_line":"from os_xenapi.client import session"},{"line_number":23,"context_line":"from oslo_serialization import jsonutils"},{"line_number":24,"context_line":"import six"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_8e1c2fc3","line":22,"in_reply_to":"3a71b18c_e6e0aa2b","updated":"2016-12-07 14:10:28.000000000","message":"OK, thanks.","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"}],"nova/tests/unit/virt/xenapi/test_xenapi.py":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"8ebc13036ba24a33b177899974558a0df86995d8","unresolved":false,"context_lines":[{"line_number":1491,"context_line":"                                    expected_name)"},{"line_number":1492,"context_line":"        self.assertEqual(inst_uuid, fake_inst[\u0027uuid\u0027])"},{"line_number":1493,"context_line":""},{"line_number":1494,"context_line":"    def test_session_virtapi(self):"},{"line_number":1495,"context_line":"        was \u003d {\u0027called\u0027: False}"},{"line_number":1496,"context_line":""},{"line_number":1497,"context_line":"        def fake_aggregate_get_by_host(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_c0b8f677","side":"PARENT","line":1494,"updated":"2016-12-06 10:02:49.000000000","message":"These don\u0027t seem to specifcially depend on session - why have these been removed?","commit_id":"474c2ef28234dacc658e9a78762cac66ef7fe334"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"caf2c09776c599c3645e833751c5e59485439b4e","unresolved":false,"context_lines":[{"line_number":1491,"context_line":"                                    expected_name)"},{"line_number":1492,"context_line":"        self.assertEqual(inst_uuid, fake_inst[\u0027uuid\u0027])"},{"line_number":1493,"context_line":""},{"line_number":1494,"context_line":"    def test_session_virtapi(self):"},{"line_number":1495,"context_line":"        was \u003d {\u0027called\u0027: False}"},{"line_number":1496,"context_line":""},{"line_number":1497,"context_line":"        def fake_aggregate_get_by_host(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_7b50b332","side":"PARENT","line":1494,"in_reply_to":"3a71b18c_c0b8f677","updated":"2016-12-06 10:34:48.000000000","message":"In os_xenapi, Session has delete the pool function, so the two testcases are out of date, see https://github.com/openstack/nova/blob/master/nova/virt/xenapi/client/session.py#L144\nhttps://github.com/openstack/os-xenapi/blob/master/os_xenapi/client/session.py#L134","commit_id":"474c2ef28234dacc658e9a78762cac66ef7fe334"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"8ebc13036ba24a33b177899974558a0df86995d8","unresolved":false,"context_lines":[{"line_number":3053,"context_line":"                                         xenhost_uuid\u003d\u0027fake_uuid\u0027))"},{"line_number":3054,"context_line":"        self.assertTrue(fake_join_slave.called)"},{"line_number":3055,"context_line":""},{"line_number":3056,"context_line":"    def test_add_to_aggregate_first_host(self):"},{"line_number":3057,"context_line":"        def fake_pool_set_name_label(self, session, pool_ref, name):"},{"line_number":3058,"context_line":"            fake_pool_set_name_label.called \u003d True"},{"line_number":3059,"context_line":"        self.stubs.Set(xenapi_fake.SessionBase, \"pool_set_name_label\","}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_e0b33296","side":"PARENT","line":3056,"updated":"2016-12-06 10:02:49.000000000","message":"Why removed?","commit_id":"474c2ef28234dacc658e9a78762cac66ef7fe334"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"caf2c09776c599c3645e833751c5e59485439b4e","unresolved":false,"context_lines":[{"line_number":3053,"context_line":"                                         xenhost_uuid\u003d\u0027fake_uuid\u0027))"},{"line_number":3054,"context_line":"        self.assertTrue(fake_join_slave.called)"},{"line_number":3055,"context_line":""},{"line_number":3056,"context_line":"    def test_add_to_aggregate_first_host(self):"},{"line_number":3057,"context_line":"        def fake_pool_set_name_label(self, session, pool_ref, name):"},{"line_number":3058,"context_line":"            fake_pool_set_name_label.called \u003d True"},{"line_number":3059,"context_line":"        self.stubs.Set(xenapi_fake.SessionBase, \"pool_set_name_label\","}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_a65792c8","side":"PARENT","line":3056,"in_reply_to":"3a71b18c_e0b33296","updated":"2016-12-06 10:34:48.000000000","message":"We removed the pool in Session, so there is no call as \"pool.create\"","commit_id":"474c2ef28234dacc658e9a78762cac66ef7fe334"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"8ebc13036ba24a33b177899974558a0df86995d8","unresolved":false,"context_lines":[{"line_number":4135,"context_line":"        self.mox.ReplayAll()"},{"line_number":4136,"context_line":"        self.assertRaises(xenapi_fake.Failure, session._verify_plugin_version)"},{"line_number":4137,"context_line":""},{"line_number":4138,"context_line":"    def test_verify_current_version_matches(self):"},{"line_number":4139,"context_line":"        session \u003d self._get_mock_xapisession({})"},{"line_number":4140,"context_line":""},{"line_number":4141,"context_line":"        # Import the plugin to extract its version"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_db3d47c5","side":"PARENT","line":4138,"updated":"2016-12-06 10:02:49.000000000","message":"Does this need to be removed in this change, or should it be removed in a follow up change?\nIdeally I think we should have relatively minimal changes to support os-xenapi here, then a follow up change to clean up nova (the one that deletes files too)","commit_id":"474c2ef28234dacc658e9a78762cac66ef7fe334"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"caf2c09776c599c3645e833751c5e59485439b4e","unresolved":false,"context_lines":[{"line_number":4135,"context_line":"        self.mox.ReplayAll()"},{"line_number":4136,"context_line":"        self.assertRaises(xenapi_fake.Failure, session._verify_plugin_version)"},{"line_number":4137,"context_line":""},{"line_number":4138,"context_line":"    def test_verify_current_version_matches(self):"},{"line_number":4139,"context_line":"        session \u003d self._get_mock_xapisession({})"},{"line_number":4140,"context_line":""},{"line_number":4141,"context_line":"        # Import the plugin to extract its version"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_66e01ace","side":"PARENT","line":4138,"in_reply_to":"3a71b18c_db3d47c5","updated":"2016-12-06 10:34:48.000000000","message":"This is because we didn\u0027t _verify_plugin_version() during session\u0027s __init__(), I remember we don\u0027t make decision on the final version, so we comment this function ATM and thus this testcase for testing the version isn\u0027t right\nhttps://github.com/openstack/os-xenapi/blob/master/os_xenapi/client/session.py#L94","commit_id":"474c2ef28234dacc658e9a78762cac66ef7fe334"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"8ebc13036ba24a33b177899974558a0df86995d8","unresolved":false,"context_lines":[{"line_number":4029,"context_line":"        session.PLUGIN_REQUIRED_VERSION \u003d \u00272.4\u0027"},{"line_number":4030,"context_line":""},{"line_number":4031,"context_line":"        self.mox.StubOutWithMock(session, \u0027call_plugin_serialized\u0027)"},{"line_number":4032,"context_line":"        session.call_plugin_serialized(\u0027dom0_plugin_version.py\u0027, \u0027get_version\u0027,"},{"line_number":4033,"context_line":"                            ).AndReturn(\"2.4\")"},{"line_number":4034,"context_line":""},{"line_number":4035,"context_line":"        self.mox.ReplayAll()"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_bb0b2b23","line":4032,"updated":"2016-12-06 10:02:49.000000000","message":"I guess this is OK, but we need to make it clear that this will be followed by a change which uses os-xenapi to check the version.","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"3c33ac4e905fbf107812c7b3235a044769b8d353","unresolved":false,"context_lines":[{"line_number":1491,"context_line":"                                    expected_name)"},{"line_number":1492,"context_line":"        self.assertEqual(inst_uuid, fake_inst[\u0027uuid\u0027])"},{"line_number":1493,"context_line":""},{"line_number":1494,"context_line":"    def test_session_virtapi(self):"},{"line_number":1495,"context_line":"        was \u003d {\u0027called\u0027: False}"},{"line_number":1496,"context_line":""},{"line_number":1497,"context_line":"        def fake_aggregate_get_by_host(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a6eadb0_c7023c09","side":"PARENT","line":1494,"updated":"2016-12-14 03:47:34.000000000","message":"Delete the two testcases as we don\u0027t need use nova\u0027s metadata for xenapi session","commit_id":"474c2ef28234dacc658e9a78762cac66ef7fe334"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"3c33ac4e905fbf107812c7b3235a044769b8d353","unresolved":false,"context_lines":[{"line_number":4011,"context_line":"        self.assertTrue(self.called_fake_get_vm_opaque_ref)"},{"line_number":4012,"context_line":""},{"line_number":4013,"context_line":""},{"line_number":4014,"context_line":"class XenAPISessionTestCase(test.NoDBTestCase):"},{"line_number":4015,"context_line":"    def _get_mock_xapisession(self, software_version):"},{"line_number":4016,"context_line":"        class MockXapiSession(xenapi_session.XenAPISession):"},{"line_number":4017,"context_line":"            def __init__(_ignore):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a6eadb0_5c07df1b","side":"PARENT","line":4014,"updated":"2016-12-14 03:47:34.000000000","message":"This testcase is to test virt/xenapi/client/session.py which is moved to os-xenapi and the testcase is also moved to os-xenapi, so delete it here","commit_id":"474c2ef28234dacc658e9a78762cac66ef7fe334"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"d1533699b4ded5b4cefe82e9ad932ba1d63d2995","unresolved":false,"context_lines":[{"line_number":4018,"context_line":"        self.assertTrue(self.called_fake_get_vm_opaque_ref)"},{"line_number":4019,"context_line":""},{"line_number":4020,"context_line":""},{"line_number":4021,"context_line":"class XenAPISessionTestCase(test.NoDBTestCase):"},{"line_number":4022,"context_line":"    def _get_mock_xapisession(self, software_version):"},{"line_number":4023,"context_line":"        class MockXapiSession(xenapi_session.XenAPISession):"},{"line_number":4024,"context_line":"            def __init__(_ignore):"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a6eadb0_0f616bd3","side":"PARENT","line":4021,"updated":"2016-12-15 06:31:36.000000000","message":"This TestCase has been moved to os-xenapi","commit_id":"199d3d81ee44b7fa79eb443468cbfc7b118c2266"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1d3c17e1337b6054c2ab838f6e74d1deca1d6e05","unresolved":false,"context_lines":[{"line_number":4018,"context_line":"        self.assertTrue(self.called_fake_get_vm_opaque_ref)"},{"line_number":4019,"context_line":""},{"line_number":4020,"context_line":""},{"line_number":4021,"context_line":"class XenAPISessionTestCase(test.NoDBTestCase):"},{"line_number":4022,"context_line":"    def _get_mock_xapisession(self, software_version):"},{"line_number":4023,"context_line":"        class MockXapiSession(xenapi_session.XenAPISession):"},{"line_number":4024,"context_line":"            def __init__(_ignore):"}],"source_content_type":"text/x-python","patch_set":18,"id":"da4df55a_d719b089","side":"PARENT","line":4021,"updated":"2016-12-27 19:55:39.000000000","message":"OK these are in the library:\n\nhttps://github.com/openstack/os-xenapi/blob/master/os_xenapi/tests/client/test_session.py#L248\n\nSo that\u0027s good.","commit_id":"8e170ec3b410b1881edaa3d8becd4292f1c03243"}],"nova/virt/xenapi/driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1d3c17e1337b6054c2ab838f6e74d1deca1d6e05","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                              \u0027connection_password to use \u0027"},{"line_number":80,"context_line":"                              \u0027compute_driver\u003dxenapi.XenAPIDriver\u0027))"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        self._session \u003d session.XenAPISession(url, username, password,"},{"line_number":83,"context_line":"                                              originator\u003d\"nova\")"},{"line_number":84,"context_line":"        self._volumeops \u003d volumeops.VolumeOps(self._session)"},{"line_number":85,"context_line":"        self._host_state \u003d None"},{"line_number":86,"context_line":"        self._host \u003d host.Host(self._session, self.virtapi)"}],"source_content_type":"text/x-python","patch_set":18,"id":"da4df55a_97048818","line":83,"range":{"start_line":82,"start_character":8,"end_line":83,"end_character":64},"updated":"2016-12-27 19:55:39.000000000","message":"This completely explodes in the xenserver CI:\n\nhttp://dd6b71949550285df7dc-dda4e480e005aaa13ec303551d2d8155.r49.cf1.rackcdn.com/59/406059/18/check/dsvm-tempest-neutron-network/72cc17b/logs/screen-n-cpu.txt.gz\n\n2016-12-16 09:50:07.612 15446 CRITICAL nova [req-d99c78e6-f219-4d41-860e-5eb5cb7ffe06 - -] Failure: [\u0027XENAPI_MISSING_PLUGIN\u0027, \u0027dom0_plugin_version.py\u0027]\n2016-12-16 09:50:07.612 15446 ERROR nova Traceback (most recent call last):\n2016-12-16 09:50:07.612 15446 ERROR nova   File \"/usr/local/bin/nova-compute\", line 10, in \u003cmodule\u003e\n2016-12-16 09:50:07.612 15446 ERROR nova     sys.exit(main())\n2016-12-16 09:50:07.612 15446 ERROR nova   File \"/opt/stack/new/nova/nova/cmd/compute.py\", line 56, in main\n2016-12-16 09:50:07.612 15446 ERROR nova     topic\u003dCONF.compute_topic)\n2016-12-16 09:50:07.612 15446 ERROR nova   File \"/opt/stack/new/nova/nova/service.py\", line 225, in create\n2016-12-16 09:50:07.612 15446 ERROR nova     periodic_interval_max\u003dperiodic_interval_max)\n2016-12-16 09:50:07.612 15446 ERROR nova   File \"/opt/stack/new/nova/nova/service.py\", line 102, in __init__\n2016-12-16 09:50:07.612 15446 ERROR nova     self.manager \u003d manager_class(host\u003dself.host, *args, **kwargs)\n2016-12-16 09:50:07.612 15446 ERROR nova   File \"/opt/stack/new/nova/nova/compute/manager.py\", line 541, in __init__\n2016-12-16 09:50:07.612 15446 ERROR nova     self.driver \u003d driver.load_compute_driver(self.virtapi, compute_driver)\n2016-12-16 09:50:07.612 15446 ERROR nova   File \"/opt/stack/new/nova/nova/virt/driver.py\", line 1615, in load_compute_driver\n2016-12-16 09:50:07.612 15446 ERROR nova     virtapi)\n2016-12-16 09:50:07.612 15446 ERROR nova   File \"/usr/local/lib/python2.7/dist-packages/oslo_utils/importutils.py\", line 44, in import_object\n2016-12-16 09:50:07.612 15446 ERROR nova     return import_class(import_str)(*args, **kwargs)\n2016-12-16 09:50:07.612 15446 ERROR nova   File \"/opt/stack/new/nova/nova/virt/xenapi/driver.py\", line 83, in __init__\n2016-12-16 09:50:07.612 15446 ERROR nova     originator\u003d\"nova\")\n2016-12-16 09:50:07.612 15446 ERROR nova   File \"/usr/local/lib/python2.7/dist-packages/os_xenapi/client/session.py\", line 94, in __init__\n2016-12-16 09:50:07.612 15446 ERROR nova     self._verify_plugin_version()\n2016-12-16 09:50:07.612 15446 ERROR nova   File \"/usr/local/lib/python2.7/dist-packages/os_xenapi/client/session.py\", line 110, in _verify_plugin_version\n2016-12-16 09:50:07.612 15446 ERROR nova     \u0027dom0_plugin_version.py\u0027, \u0027get_version\u0027)\n2016-12-16 09:50:07.612 15446 ERROR nova   File \"/usr/local/lib/python2.7/dist-packages/os_xenapi/client/session.py\", line 218, in call_plugin_serialized\n2016-12-16 09:50:07.612 15446 ERROR nova     rv \u003d self.call_plugin(plugin, fn, params)\n2016-12-16 09:50:07.612 15446 ERROR nova   File \"/usr/local/lib/python2.7/dist-packages/os_xenapi/client/session.py\", line 214, in call_plugin\n2016-12-16 09:50:07.612 15446 ERROR nova     self.host_ref, plugin, fn, args)\n2016-12-16 09:50:07.612 15446 ERROR nova   File \"/usr/local/lib/python2.7/dist-packages/os_xenapi/client/session.py\", line 293, in _unwrap_plugin_exceptions\n2016-12-16 09:50:07.612 15446 ERROR nova     return func(*args, **kwargs)\n2016-12-16 09:50:07.612 15446 ERROR nova   File \"/usr/local/lib/python2.7/dist-packages/os_xenapi/client/XenAPI.py\", line 239, in __call__\n2016-12-16 09:50:07.612 15446 ERROR nova     return self.__send(self.__name, args)\n2016-12-16 09:50:07.612 15446 ERROR nova   File \"/usr/local/lib/python2.7/dist-packages/os_xenapi/client/XenAPI.py\", line 130, in xenapi_request\n2016-12-16 09:50:07.612 15446 ERROR nova     result \u003d _parse_result(getattr(self, methodname)(*full_params))\n2016-12-16 09:50:07.612 15446 ERROR nova   File \"/usr/local/lib/python2.7/dist-packages/os_xenapi/client/XenAPI.py\", line 212, in _parse_result\n2016-12-16 09:50:07.612 15446 ERROR nova     raise Failure(result[\u0027ErrorDescription\u0027])\n2016-12-16 09:50:07.612 15446 ERROR nova Failure: [\u0027XENAPI_MISSING_PLUGIN\u0027, \u0027dom0_plugin_version.py\u0027]\n2016-12-16 09:50:07.612 15446 ERROR nova","commit_id":"7412196e2d59ec1ce817f841fac8e3cdf5871c56"}],"nova/virt/xenapi/fake.py":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"8ebc13036ba24a33b177899974558a0df86995d8","unresolved":false,"context_lines":[{"line_number":479,"context_line":"    return jsonutils.dumps(arg)"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"class Failure(XenAPI.Failure):"},{"line_number":483,"context_line":"    pass"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_1b55ffc4","line":482,"updated":"2016-12-06 10:02:49.000000000","message":"I don\u0027t like how this looks; can\u0027t we use (or import?) XenAPI.Failure?","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"caf2c09776c599c3645e833751c5e59485439b4e","unresolved":false,"context_lines":[{"line_number":479,"context_line":"    return jsonutils.dumps(arg)"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"class Failure(XenAPI.Failure):"},{"line_number":483,"context_line":"    pass"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_c6856ecf","line":482,"in_reply_to":"3a71b18c_1b55ffc4","updated":"2016-12-06 10:34:48.000000000","message":"changing this way can reduce the changes in testcases, so I just inherit XenAPI.Failure, but agree with you, using XenAPI.Failure is better, I\u0027ll change this","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"8ebc13036ba24a33b177899974558a0df86995d8","unresolved":false,"context_lines":[{"line_number":518,"context_line":"        if \u0027other_config\u0027 not in db_ref:"},{"line_number":519,"context_line":"            db_ref[\u0027other_config\u0027] \u003d {}"},{"line_number":520,"context_line":"        if key in db_ref[\u0027other_config\u0027]:"},{"line_number":521,"context_line":"            raise Failure("},{"line_number":522,"context_line":"                [\u0027MAP_DUPLICATE_KEY\u0027, \u0027VBD\u0027, \u0027other_config\u0027, vbd_ref, key])"},{"line_number":523,"context_line":"        db_ref[\u0027other_config\u0027][key] \u003d value"},{"line_number":524,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_7b6433b8","line":521,"updated":"2016-12-06 10:02:49.000000000","message":"If there are no code changes here, let\u0027s not change the formatting.","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"caf2c09776c599c3645e833751c5e59485439b4e","unresolved":false,"context_lines":[{"line_number":518,"context_line":"        if \u0027other_config\u0027 not in db_ref:"},{"line_number":519,"context_line":"            db_ref[\u0027other_config\u0027] \u003d {}"},{"line_number":520,"context_line":"        if key in db_ref[\u0027other_config\u0027]:"},{"line_number":521,"context_line":"            raise Failure("},{"line_number":522,"context_line":"                [\u0027MAP_DUPLICATE_KEY\u0027, \u0027VBD\u0027, \u0027other_config\u0027, vbd_ref, key])"},{"line_number":523,"context_line":"        db_ref[\u0027other_config\u0027][key] \u003d value"},{"line_number":524,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_e670aa0d","line":521,"in_reply_to":"3a71b18c_7b6433b8","updated":"2016-12-06 10:34:48.000000000","message":"I see, with the above comments, I will use XenAPI.Failure here","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"8ebc13036ba24a33b177899974558a0df86995d8","unresolved":false,"context_lines":[{"line_number":616,"context_line":"        if \u0027other_config\u0027 not in db_ref:"},{"line_number":617,"context_line":"            db_ref[\u0027other_config\u0027] \u003d {}"},{"line_number":618,"context_line":"        if key in db_ref[\u0027other_config\u0027]:"},{"line_number":619,"context_line":"            raise Failure("},{"line_number":620,"context_line":"                [\u0027MAP_DUPLICATE_KEY\u0027, \u0027VDI\u0027, \u0027other_config\u0027, vdi_ref, key])"},{"line_number":621,"context_line":"        db_ref[\u0027other_config\u0027][key] \u003d value"},{"line_number":622,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_db754764","line":619,"updated":"2016-12-06 10:02:49.000000000","message":"Keep formatting","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"caf2c09776c599c3645e833751c5e59485439b4e","unresolved":false,"context_lines":[{"line_number":616,"context_line":"        if \u0027other_config\u0027 not in db_ref:"},{"line_number":617,"context_line":"            db_ref[\u0027other_config\u0027] \u003d {}"},{"line_number":618,"context_line":"        if key in db_ref[\u0027other_config\u0027]:"},{"line_number":619,"context_line":"            raise Failure("},{"line_number":620,"context_line":"                [\u0027MAP_DUPLICATE_KEY\u0027, \u0027VDI\u0027, \u0027other_config\u0027, vdi_ref, key])"},{"line_number":621,"context_line":"        db_ref[\u0027other_config\u0027][key] \u003d value"},{"line_number":622,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_46723e12","line":619,"in_reply_to":"3a71b18c_db754764","updated":"2016-12-06 10:34:48.000000000","message":"Will do","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"8ebc13036ba24a33b177899974558a0df86995d8","unresolved":false,"context_lines":[{"line_number":800,"context_line":"    def _VM_reboot(self, session, vm_ref):"},{"line_number":801,"context_line":"        db_ref \u003d _db_content[\u0027VM\u0027][vm_ref]"},{"line_number":802,"context_line":"        if db_ref[\u0027power_state\u0027] !\u003d \u0027Running\u0027:"},{"line_number":803,"context_line":"            raise Failure([\u0027VM_BAD_POWER_STATE\u0027, \u0027fake-opaque-ref\u0027,"},{"line_number":804,"context_line":"                 db_ref[\u0027power_state\u0027].lower(), \u0027halted\u0027])"},{"line_number":805,"context_line":"        db_ref[\u0027power_state\u0027] \u003d \u0027Running\u0027"},{"line_number":806,"context_line":"        db_ref[\u0027domid\u0027] \u003d \u0027%d\u0027 % (random.randrange(1, 1 \u003c\u003c 16))"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_bb5a4bf0","line":803,"updated":"2016-12-06 10:02:49.000000000","message":"Keep formatting","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"caf2c09776c599c3645e833751c5e59485439b4e","unresolved":false,"context_lines":[{"line_number":800,"context_line":"    def _VM_reboot(self, session, vm_ref):"},{"line_number":801,"context_line":"        db_ref \u003d _db_content[\u0027VM\u0027][vm_ref]"},{"line_number":802,"context_line":"        if db_ref[\u0027power_state\u0027] !\u003d \u0027Running\u0027:"},{"line_number":803,"context_line":"            raise Failure([\u0027VM_BAD_POWER_STATE\u0027, \u0027fake-opaque-ref\u0027,"},{"line_number":804,"context_line":"                 db_ref[\u0027power_state\u0027].lower(), \u0027halted\u0027])"},{"line_number":805,"context_line":"        db_ref[\u0027power_state\u0027] \u003d \u0027Running\u0027"},{"line_number":806,"context_line":"        db_ref[\u0027domid\u0027] \u003d \u0027%d\u0027 % (random.randrange(1, 1 \u003c\u003c 16))"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_8666164f","line":803,"in_reply_to":"3a71b18c_bb5a4bf0","updated":"2016-12-06 10:34:48.000000000","message":"Will do","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"8ebc13036ba24a33b177899974558a0df86995d8","unresolved":false,"context_lines":[{"line_number":1057,"context_line":"    def _check_session(self, params):"},{"line_number":1058,"context_line":"        if (self._session is None or"},{"line_number":1059,"context_line":"                self._session not in _db_content[\u0027session\u0027]):"},{"line_number":1060,"context_line":"            raise Failure("},{"line_number":1061,"context_line":"                [\u0027HANDLE_INVALID\u0027, \u0027session\u0027, self._session])"},{"line_number":1062,"context_line":"        if len(params) \u003d\u003d 0 or params[0] !\u003d self._session:"},{"line_number":1063,"context_line":"            LOG.debug(\u0027Raising NotImplemented\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_fb704374","line":1060,"updated":"2016-12-06 10:02:49.000000000","message":"Keep formatting","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"caf2c09776c599c3645e833751c5e59485439b4e","unresolved":false,"context_lines":[{"line_number":1057,"context_line":"    def _check_session(self, params):"},{"line_number":1058,"context_line":"        if (self._session is None or"},{"line_number":1059,"context_line":"                self._session not in _db_content[\u0027session\u0027]):"},{"line_number":1060,"context_line":"            raise Failure("},{"line_number":1061,"context_line":"                [\u0027HANDLE_INVALID\u0027, \u0027session\u0027, self._session])"},{"line_number":1062,"context_line":"        if len(params) \u003d\u003d 0 or params[0] !\u003d self._session:"},{"line_number":1063,"context_line":"            LOG.debug(\u0027Raising NotImplemented\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_a6595290","line":1060,"in_reply_to":"3a71b18c_fb704374","updated":"2016-12-06 10:34:48.000000000","message":"Will do","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"8ebc13036ba24a33b177899974558a0df86995d8","unresolved":false,"context_lines":[{"line_number":1066,"context_line":"    def _check_arg_count(self, params, expected):"},{"line_number":1067,"context_line":"        actual \u003d len(params)"},{"line_number":1068,"context_line":"        if actual !\u003d expected:"},{"line_number":1069,"context_line":"            raise Failure("},{"line_number":1070,"context_line":"                [\u0027MESSAGE_PARAMETER_COUNT_MISMATCH\u0027, expected, actual])"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"    def _get_by_field(self, recs, k, v, return_singleton):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_3b671bb8","line":1069,"updated":"2016-12-06 10:02:49.000000000","message":"Keep formatting","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"caf2c09776c599c3645e833751c5e59485439b4e","unresolved":false,"context_lines":[{"line_number":1066,"context_line":"    def _check_arg_count(self, params, expected):"},{"line_number":1067,"context_line":"        actual \u003d len(params)"},{"line_number":1068,"context_line":"        if actual !\u003d expected:"},{"line_number":1069,"context_line":"            raise Failure("},{"line_number":1070,"context_line":"                [\u0027MESSAGE_PARAMETER_COUNT_MISMATCH\u0027, expected, actual])"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"    def _get_by_field(self, recs, k, v, return_singleton):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_c65c8e7f","line":1069,"in_reply_to":"3a71b18c_3b671bb8","updated":"2016-12-06 10:34:48.000000000","message":"Will do","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"}],"nova/virt/xenapi/volume_utils.py":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"8ebc13036ba24a33b177899974558a0df86995d8","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        vdi_import_path \u003d _get_vdi_import_path(session, task_ref, vdi_ref,"},{"line_number":389,"context_line":"                                               disk_format)"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        with session.http_connection(session) as conn:"},{"line_number":392,"context_line":"            try:"},{"line_number":393,"context_line":"                _stream_to_vdi(conn, vdi_import_path, file_size, file_obj)"},{"line_number":394,"context_line":"            except Exception as e:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_5b2f773e","line":391,"updated":"2016-12-06 10:02:49.000000000","message":"This is weird; http_connection will clearly already have the session passed as \u0027this\u0027 as it\u0027s a member object.","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"caf2c09776c599c3645e833751c5e59485439b4e","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        vdi_import_path \u003d _get_vdi_import_path(session, task_ref, vdi_ref,"},{"line_number":389,"context_line":"                                               disk_format)"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        with session.http_connection(session) as conn:"},{"line_number":392,"context_line":"            try:"},{"line_number":393,"context_line":"                _stream_to_vdi(conn, vdi_import_path, file_size, file_obj)"},{"line_number":394,"context_line":"            except Exception as e:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_a69eb204","line":391,"in_reply_to":"3a71b18c_5b2f773e","updated":"2016-12-06 10:34:48.000000000","message":"I will check this, I remember it\u0027s related with unit test, will figure out clearly","commit_id":"8ab2e81e44884be91dda94cfc5bb54f611a078db"}],"tools/xenserver/destroy_cached_images.py":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"60b54c852211e884cbb41f1f1fd55f4efb9e35c3","unresolved":false,"context_lines":[{"line_number":28,"context_line":"import os"},{"line_number":29,"context_line":"import sys"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from os_xenaip.client import session"},{"line_number":32,"context_line":"from oslo_config import cfg"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"# If ../nova/__init__.py exists, add ../ to Python search path, so that"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a71b18c_d794b3e3","line":31,"updated":"2016-12-02 11:11:12.000000000","message":"xenapi :)","commit_id":"3a35dd634abc9a4789817978af9f71170236557a"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"28a7f113fb5006de55ef2465d0c79739ab06fd64","unresolved":false,"context_lines":[{"line_number":28,"context_line":"import os"},{"line_number":29,"context_line":"import sys"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from os_xenaip.client import session"},{"line_number":32,"context_line":"from oslo_config import cfg"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"# If ../nova/__init__.py exists, add ../ to Python search path, so that"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a71b18c_8a157f41","line":31,"in_reply_to":"3a71b18c_d794b3e3","updated":"2016-12-05 01:17:34.000000000","message":"sorry for my mistake, will test it since our requirements for os-xenapi get merged","commit_id":"3a35dd634abc9a4789817978af9f71170236557a"}]}
