)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"d1fb070926dccc39cb85a2f34d14dacd465bc4bc","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Stop using mox stubs in"},{"line_number":8,"context_line":"nova.tests.unit.virt.vmwareapi.test_configdrive"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"use stub_out for global stubs and mock for more local stubs."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Part of blueprint remove-mox"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"fa69d971_9a4b3db1","line":10,"updated":"2016-01-09 01:48:23.000000000","message":"nit: stub_out is not used","commit_id":"36986d7b23565061f6bdf43ecfb1fe8c5f66ada7"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"91a10acec8771eb57cf127e831d5c3ac8321d8c2","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-01-09 14:34:25 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Stop using mox stubs in"},{"line_number":8,"context_line":"nova.tests.unit.virt.vmwareapi.  test_configdrive"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"switch mox to mock"},{"line_number":11,"context_line":"removed testcase test_create_vm_with_config_drive"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"fa69d971_5f481a5c","line":8,"updated":"2016-01-11 18:14:08.000000000","message":"nit: no space before test_configdrive","commit_id":"b5efdadeabf4f63c3b3ffbe728dbde1588f3dc9d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fbe741f39654907f4835ef7730206ce940c744a4","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-01-09 14:34:25 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Stop using mox stubs in"},{"line_number":8,"context_line":"nova.tests.unit.virt.vmwareapi.  test_configdrive"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"switch mox to mock"},{"line_number":11,"context_line":"removed testcase test_create_vm_with_config_drive"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"da6ed579_4a518661","line":8,"in_reply_to":"fa69d971_5f481a5c","updated":"2016-01-13 15:29:20.000000000","message":"The commit message header should also be on one line under 80 chars.","commit_id":"b5efdadeabf4f63c3b3ffbe728dbde1588f3dc9d"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"361d5942243f8e4520a74801c74f13a3e2495e50","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Stop using mox stubs in test_configdrive"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"switch mox to mock"},{"line_number":10,"context_line":"removed testcase test_create_vm_with_config_drive"},{"line_number":11,"context_line":"which did the same thing as"},{"line_number":12,"context_line":"test_create_vm_with_config_drive_verify_method_invocation"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"ba63e191_909cdf6a","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":7},"updated":"2016-01-19 06:16:40.000000000","message":"These two tests did not test the same thing. One exercises the real deal (the production code path) and the other doesn\u0027t (because it stubs a couple of methods out). \n\nThe one that exercises the actual code demonstrates that it won\u0027t explode for whatever reason in real life. The other one proves that certain actions were taken (like _create_config_drive was called).\n\nRemoving this test may actually decrease test coverage. The coverage of vmwareapi/vmops.py decreased from 36% to 34% with this patch, for example.\n\ntime tox -e cover nova.tests.unit.virt.vmwareapi.test_configdrive","commit_id":"bddd8d5d7100d54dc821bda5009b2e0a5d6ca699"}],"nova/tests/unit/virt/vmwareapi/test_configdrive.py":[{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"fb28a1fe6702877913b753d6a4788710c1cac5f0","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def test_create_vm_with_config_drive_verify_method_invocation(self):"},{"line_number":129,"context_line":"        self.test_instance.config_drive \u003d \u0027True\u0027"},{"line_number":130,"context_line":"        self.mox.StubOutWithMock(vmops.VMwareVMOps, \u0027_create_config_drive\u0027)"},{"line_number":131,"context_line":"        self.mox.StubOutWithMock(vmops.VMwareVMOps, \u0027_attach_cdrom_to_vm\u0027)"},{"line_number":132,"context_line":"        self.conn._vmops._create_config_drive(self.test_instance,"},{"line_number":133,"context_line":"                                               mox.IgnoreArg(),"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_088386cd","line":130,"updated":"2016-01-09 00:55:24.000000000","message":"can you please handle this as well?\ndefine mock for these 2 methods in _spawn()","commit_id":"ef9e1f9d195c9e56b175abda2062d5ff2df6b1ea"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"fb28a1fe6702877913b753d6a4788710c1cac5f0","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def test_create_vm_without_config_drive(self):"},{"line_number":153,"context_line":"        self.test_instance.config_drive \u003d None"},{"line_number":154,"context_line":"        self.mox.StubOutWithMock(vmops.VMwareVMOps, \u0027_create_config_drive\u0027)"},{"line_number":155,"context_line":"        self.mox.StubOutWithMock(vmops.VMwareVMOps, \u0027_attach_cdrom_to_vm\u0027)"},{"line_number":156,"context_line":"        self.mox.ReplayAll()"},{"line_number":157,"context_line":"        # if spawn ends up calling _create_config_drive or"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_c86d6e33","line":154,"updated":"2016-01-09 00:55:24.000000000","message":"2 more.","commit_id":"ef9e1f9d195c9e56b175abda2062d5ff2df6b1ea"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"8000e619dce462d754963541c19c3b2ac14f1e18","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                        network_info\u003dself.network_info,"},{"line_number":126,"context_line":"                        block_device_info\u003dblock_device_info)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_create_config_drive\u0027, return_value\u003d\u0027[ds1] fake.iso\u0027)"},{"line_number":129,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_attach_cdrom_to_vm\u0027)"},{"line_number":130,"context_line":"    def test_create_vm_with_config_drive_verify_method_invocation(self,"},{"line_number":131,"context_line":"                                                                  mock_config_drive,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_dadc55e6","line":128,"updated":"2016-01-09 01:51:17.000000000","message":"didn\u0027t pep8 fail?","commit_id":"36986d7b23565061f6bdf43ecfb1fe8c5f66ada7"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"c1727bcd9a87a97cef2ed3a4d502bc94de90ab10","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        # exception"},{"line_number":171,"context_line":"        self._spawn_vm()"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def test_create_vm_with_config_drive(self):"},{"line_number":174,"context_line":"        self.test_instance.config_drive \u003d \u0027True\u0027"},{"line_number":175,"context_line":"        self._spawn_vm()"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_896455b9","side":"PARENT","line":173,"updated":"2016-01-09 09:40:52.000000000","message":"This test case seems to be removed. If there\u0027s a valid reason, would you mind specifying the same in git commit message?","commit_id":"885b9b496afff88037e4d194c2ebd6e721b5fc5f"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"acf72568c66440a29bee28b118128dae65f6d5b2","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        # exception"},{"line_number":171,"context_line":"        self._spawn_vm()"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def test_create_vm_with_config_drive(self):"},{"line_number":174,"context_line":"        self.test_instance.config_drive \u003d \u0027True\u0027"},{"line_number":175,"context_line":"        self._spawn_vm()"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_1ae66215","side":"PARENT","line":173,"in_reply_to":"fa69d971_896455b9","updated":"2016-01-09 22:35:24.000000000","message":"Done","commit_id":"885b9b496afff88037e4d194c2ebd6e721b5fc5f"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"1feeb0e3f0b2f0c466ec64b157fa7fba15a2aab0","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import fixtures"},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from nova import context"},{"line_number":20,"context_line":"from nova.image import glance"},{"line_number":21,"context_line":"from nova import objects"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_3df56bec","line":18,"updated":"2016-01-09 02:26:20.000000000","message":"not sure why this shows up.  there is no blank line here","commit_id":"55702fd77de51ecaa9a751ad12060e32a02ec72f"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"d9fe91e9e88c3312b34efcad4a0c1e2c67ec0352","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import fixtures"},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from nova import context"},{"line_number":20,"context_line":"from nova.image import glance"},{"line_number":21,"context_line":"from nova import objects"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_3db24be6","line":18,"in_reply_to":"fa69d971_3df56bec","updated":"2016-01-09 02:58:53.000000000","message":"it just indicates a line was removed.","commit_id":"55702fd77de51ecaa9a751ad12060e32a02ec72f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"532577c184e2227501347ac05f2f1f40ea0c4b2c","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                   use_linked_clone\u003dFalse, group\u003d\u0027vmware\u0027)"},{"line_number":49,"context_line":"        self.flags(enabled\u003dFalse, group\u003d\u0027vnc\u0027)"},{"line_number":50,"context_line":"        vmwareapi_fake.reset()"},{"line_number":51,"context_line":"        stubs.set_stubs(self.stubs)"},{"line_number":52,"context_line":"        nova.tests.unit.image.fake.stub_out_image_service(self)"},{"line_number":53,"context_line":"        self.conn \u003d driver.VMwareVCDriver(fake.FakeVirtAPI)"},{"line_number":54,"context_line":"        self.network_info \u003d utils.get_test_network_info()"}],"source_content_type":"text/x-python","patch_set":10,"id":"da6ed579_2a79b2c8","line":51,"range":{"start_line":51,"start_character":8,"end_line":51,"end_character":35},"updated":"2016-01-13 15:31:20.000000000","message":"This is our real problem I think:\n\nhttps://github.com/openstack/nova/blob/master/nova/tests/unit/virt/vmwareapi/stubs.py#L68","commit_id":"b5efdadeabf4f63c3b3ffbe728dbde1588f3dc9d"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"2ab5d5d62c32593bcd9ffc2ffd435095f526771c","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                   use_linked_clone\u003dFalse, group\u003d\u0027vmware\u0027)"},{"line_number":49,"context_line":"        self.flags(enabled\u003dFalse, group\u003d\u0027vnc\u0027)"},{"line_number":50,"context_line":"        vmwareapi_fake.reset()"},{"line_number":51,"context_line":"        stubs.set_stubs(self.stubs)"},{"line_number":52,"context_line":"        nova.tests.unit.image.fake.stub_out_image_service(self)"},{"line_number":53,"context_line":"        self.conn \u003d driver.VMwareVCDriver(fake.FakeVirtAPI)"},{"line_number":54,"context_line":"        self.network_info \u003d utils.get_test_network_info()"}],"source_content_type":"text/x-python","patch_set":10,"id":"da6ed579_c48c8181","line":51,"range":{"start_line":51,"start_character":8,"end_line":51,"end_character":35},"in_reply_to":"da6ed579_2a79b2c8","updated":"2016-01-13 18:13:49.000000000","message":"yes i am addressing that one in https://review.openstack.org/266060","commit_id":"b5efdadeabf4f63c3b3ffbe728dbde1588f3dc9d"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"922f1cd89efc89fde827aa82811a2372eb97195a","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    def test_create_vm_with_config_drive_verify_method_invocation("},{"line_number":131,"context_line":"            self,"},{"line_number":132,"context_line":"            mock_config_drive,"},{"line_number":133,"context_line":"            mock_cdrom):"},{"line_number":134,"context_line":"        self.test_instance.config_drive \u003d \u0027True\u0027"},{"line_number":135,"context_line":"        self._spawn_vm()"},{"line_number":136,"context_line":"        self.assertEqual(mock_config_drive.call_count, 1)"}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_e7274710","line":133,"updated":"2016-01-13 18:49:04.000000000","message":"I think these are backwards, the test params should have the mocks from bottom to top.  And now they\u0027re even less tested than before.  At least the number of args passed was checked previously.","commit_id":"cf926ca31a5e6b9ae5f2df3e94d690a312886a6c"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"c720f9486a50e8e8556b683398522fcb9c1fe7d7","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from nova.virt.vmwareapi import images"},{"line_number":31,"context_line":"from nova.virt.vmwareapi import vm_util"},{"line_number":32,"context_line":"from nova.virt.vmwareapi import vmops"},{"line_number":33,"context_line":"from oslo_vmware.objects import datastore as ds_obj"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class ConfigDriveTestCase(test.NoDBTestCase):"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da6ed579_24a2674c","line":33,"updated":"2016-01-18 15:42:12.000000000","message":"This is unused and part of the pep8 failure.","commit_id":"570fca475a010dae4ff1242b83c8aa9a82bac08d"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"e59e6f1a575945d7e54c07a0e4f7826828cc3226","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from nova.virt.vmwareapi import images"},{"line_number":31,"context_line":"from nova.virt.vmwareapi import vm_util"},{"line_number":32,"context_line":"from nova.virt.vmwareapi import vmops"},{"line_number":33,"context_line":"from oslo_vmware.objects import datastore as ds_obj"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class ConfigDriveTestCase(test.NoDBTestCase):"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba63e191_9477fad3","line":33,"in_reply_to":"da6ed579_24a2674c","updated":"2016-01-19 01:43:00.000000000","message":"Done","commit_id":"570fca475a010dae4ff1242b83c8aa9a82bac08d"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"c720f9486a50e8e8556b683398522fcb9c1fe7d7","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        self._spawn_vm()"},{"line_number":137,"context_line":"        mock_config_drive.assert_called_once_with(self.test_instance, [],"},{"line_number":138,"context_line":"                                                  None, self.network_info, \u0027ds1\u0027,"},{"line_number":139,"context_line":"                                                  \u0027\u0027, \u0027fake-uuid\u0027, \u0027Fake-CookieJar\u0027)"},{"line_number":140,"context_line":"        vm_ref \u003d vm_util.search_vm_ref_by_identifier(self.conn._session,"},{"line_number":141,"context_line":"                                                     self.test_instance[\u0027uuid\u0027])"},{"line_number":142,"context_line":"        vm \u003d vmwareapi_fake._get_object(vm_ref)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da6ed579_247027dc","line":139,"updated":"2016-01-18 15:42:12.000000000","message":"These two lines are too long.","commit_id":"570fca475a010dae4ff1242b83c8aa9a82bac08d"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"e59e6f1a575945d7e54c07a0e4f7826828cc3226","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        self._spawn_vm()"},{"line_number":137,"context_line":"        mock_config_drive.assert_called_once_with(self.test_instance, [],"},{"line_number":138,"context_line":"                                                  None, self.network_info, \u0027ds1\u0027,"},{"line_number":139,"context_line":"                                                  \u0027\u0027, \u0027fake-uuid\u0027, \u0027Fake-CookieJar\u0027)"},{"line_number":140,"context_line":"        vm_ref \u003d vm_util.search_vm_ref_by_identifier(self.conn._session,"},{"line_number":141,"context_line":"                                                     self.test_instance[\u0027uuid\u0027])"},{"line_number":142,"context_line":"        vm \u003d vmwareapi_fake._get_object(vm_ref)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba63e191_5481828e","line":139,"in_reply_to":"da6ed579_247027dc","updated":"2016-01-19 01:43:00.000000000","message":"Done","commit_id":"570fca475a010dae4ff1242b83c8aa9a82bac08d"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"c720f9486a50e8e8556b683398522fcb9c1fe7d7","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                                                  None, self.network_info, \u0027ds1\u0027,"},{"line_number":139,"context_line":"                                                  \u0027\u0027, \u0027fake-uuid\u0027, \u0027Fake-CookieJar\u0027)"},{"line_number":140,"context_line":"        vm_ref \u003d vm_util.search_vm_ref_by_identifier(self.conn._session,"},{"line_number":141,"context_line":"                                                     self.test_instance[\u0027uuid\u0027])"},{"line_number":142,"context_line":"        vm \u003d vmwareapi_fake._get_object(vm_ref)"},{"line_number":143,"context_line":"        ds_ref \u003d vm.datastore.ManagedObjectReference"},{"line_number":144,"context_line":"        mock_cdrom.assert_called_once_with(vm_ref, self.test_instance,"}],"source_content_type":"text/x-python","patch_set":12,"id":"da6ed579_24b9077a","line":141,"updated":"2016-01-18 15:42:12.000000000","message":"Line too long.","commit_id":"570fca475a010dae4ff1242b83c8aa9a82bac08d"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"e59e6f1a575945d7e54c07a0e4f7826828cc3226","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                                                  None, self.network_info, \u0027ds1\u0027,"},{"line_number":139,"context_line":"                                                  \u0027\u0027, \u0027fake-uuid\u0027, \u0027Fake-CookieJar\u0027)"},{"line_number":140,"context_line":"        vm_ref \u003d vm_util.search_vm_ref_by_identifier(self.conn._session,"},{"line_number":141,"context_line":"                                                     self.test_instance[\u0027uuid\u0027])"},{"line_number":142,"context_line":"        vm \u003d vmwareapi_fake._get_object(vm_ref)"},{"line_number":143,"context_line":"        ds_ref \u003d vm.datastore.ManagedObjectReference"},{"line_number":144,"context_line":"        mock_cdrom.assert_called_once_with(vm_ref, self.test_instance,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba63e191_747e06b0","line":141,"in_reply_to":"da6ed579_24b9077a","updated":"2016-01-19 01:43:00.000000000","message":"Done","commit_id":"570fca475a010dae4ff1242b83c8aa9a82bac08d"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"08b66403dd0f5167d489906571b1269058ed1316","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                        block_device_info\u003dblock_device_info)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_create_config_drive\u0027,"},{"line_number":129,"context_line":"                       return_value\u003d\u0027[ds1] fake.iso\u0027)"},{"line_number":130,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_attach_cdrom_to_vm\u0027)"},{"line_number":131,"context_line":"    def test_create_vm_with_config_drive_verify_method_invocation("},{"line_number":132,"context_line":"            self,"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba63e191_165f64e6","line":129,"range":{"start_line":129,"start_character":23,"end_line":129,"end_character":52},"updated":"2016-01-19 16:46:51.000000000","message":"Same: more isn\u0027t better IMHO. I would remove this return value.","commit_id":"1b4f964cb3579ebcc8b635c15a79c63a7186686a"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"a94fd2ccdfdfe306be902ef4b437b6744da0d82f","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                        block_device_info\u003dblock_device_info)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_create_config_drive\u0027,"},{"line_number":129,"context_line":"                       return_value\u003d\u0027[ds1] fake.iso\u0027)"},{"line_number":130,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_attach_cdrom_to_vm\u0027)"},{"line_number":131,"context_line":"    def test_create_vm_with_config_drive_verify_method_invocation("},{"line_number":132,"context_line":"            self,"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba63e191_31ff00ac","line":129,"range":{"start_line":129,"start_character":23,"end_line":129,"end_character":52},"in_reply_to":"ba63e191_0564fe46","updated":"2016-01-19 22:50:52.000000000","message":"Yup, deciphering the unit test\u0027s original intent vs. mox design artifacts is going to be a challenge for this blueprint. Only 900 calls to mox.ReplayAll remaining... ;(","commit_id":"1b4f964cb3579ebcc8b635c15a79c63a7186686a"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"ede3e437653e3aa2235125831df78e38fbb41a51","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                        block_device_info\u003dblock_device_info)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_create_config_drive\u0027,"},{"line_number":129,"context_line":"                       return_value\u003d\u0027[ds1] fake.iso\u0027)"},{"line_number":130,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_attach_cdrom_to_vm\u0027)"},{"line_number":131,"context_line":"    def test_create_vm_with_config_drive_verify_method_invocation("},{"line_number":132,"context_line":"            self,"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba63e191_73cb3554","line":129,"range":{"start_line":129,"start_character":23,"end_line":129,"end_character":52},"in_reply_to":"ba63e191_0564fe46","updated":"2016-01-20 02:53:11.000000000","message":"as it was this was in originally i would like to leave it","commit_id":"1b4f964cb3579ebcc8b635c15a79c63a7186686a"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"5f956f1cd8aba4b441df7bb7c34cc255de2ecfd5","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                        block_device_info\u003dblock_device_info)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_create_config_drive\u0027,"},{"line_number":129,"context_line":"                       return_value\u003d\u0027[ds1] fake.iso\u0027)"},{"line_number":130,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_attach_cdrom_to_vm\u0027)"},{"line_number":131,"context_line":"    def test_create_vm_with_config_drive_verify_method_invocation("},{"line_number":132,"context_line":"            self,"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba63e191_0564fe46","line":129,"range":{"start_line":129,"start_character":23,"end_line":129,"end_character":52},"in_reply_to":"ba63e191_165f64e6","updated":"2016-01-19 21:26:30.000000000","message":"If it\u0027s not necessary I agree.  This is just copying over what the mox test was doing and generally we make a switch like this in two parts: make a 1:1 test so the review can focus on the mox/mock switch, then improve the test so that review has a clear intent.  But if just dropping this doesn\u0027t affect the test then dropping it seems fine to me.","commit_id":"1b4f964cb3579ebcc8b635c15a79c63a7186686a"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"08b66403dd0f5167d489906571b1269058ed1316","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            mock_config_drive):"},{"line_number":135,"context_line":"        self.test_instance.config_drive \u003d \u0027True\u0027"},{"line_number":136,"context_line":"        self._spawn_vm()"},{"line_number":137,"context_line":"        mock_config_drive.assert_called_once_with(self.test_instance,"},{"line_number":138,"context_line":"                                                  [],"},{"line_number":139,"context_line":"                                                  None,"},{"line_number":140,"context_line":"                                                  self.network_info,"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba63e191_56639cdc","line":137,"range":{"start_line":137,"start_character":0,"end_line":137,"end_character":8},"updated":"2016-01-19 16:46:51.000000000","message":"I don\u0027t think more is better in this case, and would replace the assert_called_once_with() calls with simple assertions that just assert that the methods were called at all.\n\nA good test should tell a simple story and test one thing. All this detail leaves the reader thinking it\u0027s important and that it\u0027s the focus of the test (which it isn\u0027t).\n\nNote that the test you are replacing didn\u0027t assert these details. Yes, it asserted the arg count in the methods calls, but that\u0027s just a side effect of the testing framework \u0026 not the story this test is trying to tell. IMHO","commit_id":"1b4f964cb3579ebcc8b635c15a79c63a7186686a"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"f6c5af9218128adc0f9349b182f2f67e1edb6967","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            mock_config_drive):"},{"line_number":135,"context_line":"        self.test_instance.config_drive \u003d \u0027True\u0027"},{"line_number":136,"context_line":"        self._spawn_vm()"},{"line_number":137,"context_line":"        mock_config_drive.assert_called_once_with(self.test_instance,"},{"line_number":138,"context_line":"                                                  [],"},{"line_number":139,"context_line":"                                                  None,"},{"line_number":140,"context_line":"                                                  self.network_info,"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba63e191_70781df3","line":137,"range":{"start_line":137,"start_character":0,"end_line":137,"end_character":8},"in_reply_to":"ba63e191_56639cdc","updated":"2016-01-19 19:24:49.000000000","message":"My original patch had the asset_called_once and alaski said that the previous patch *at least checked the right # of args* so i changed it to explicitly test the params","commit_id":"1b4f964cb3579ebcc8b635c15a79c63a7186686a"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"5f956f1cd8aba4b441df7bb7c34cc255de2ecfd5","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            mock_config_drive):"},{"line_number":135,"context_line":"        self.test_instance.config_drive \u003d \u0027True\u0027"},{"line_number":136,"context_line":"        self._spawn_vm()"},{"line_number":137,"context_line":"        mock_config_drive.assert_called_once_with(self.test_instance,"},{"line_number":138,"context_line":"                                                  [],"},{"line_number":139,"context_line":"                                                  None,"},{"line_number":140,"context_line":"                                                  self.network_info,"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba63e191_c5158649","line":137,"range":{"start_line":137,"start_character":0,"end_line":137,"end_character":8},"in_reply_to":"ba63e191_6b7d92e6","updated":"2016-01-19 21:26:30.000000000","message":"The reason I had an issue with call_count is that the earlier patch mixed up the mocks in the test parameter list, which happens all the time, and simply checking call_count didn\u0027t catch it.  Using mock.ANY would be acceptable to me, my concern is just that an assertion against mock_config_drive should definitely be against a mocked vmops.VMwareVMOps._create_config_drive.  Checking the number of params in the call was how it was done previously so carrying that forward would make this a simple switch from mox to mock.\n\nIf the test is correct and just relies on call_count I\u0027m not going to vote against it, but I like the added assurance in this case.\n\nDiana, I really appreciate you making your case here against what I recommended.  Being a core reviewer does not make me more right and not being a core reviewer doesn\u0027t detract at all :)","commit_id":"1b4f964cb3579ebcc8b635c15a79c63a7186686a"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"1bd917d1b942f97e1051990ddcdebe092f8fbdf9","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            mock_config_drive):"},{"line_number":135,"context_line":"        self.test_instance.config_drive \u003d \u0027True\u0027"},{"line_number":136,"context_line":"        self._spawn_vm()"},{"line_number":137,"context_line":"        mock_config_drive.assert_called_once_with(self.test_instance,"},{"line_number":138,"context_line":"                                                  [],"},{"line_number":139,"context_line":"                                                  None,"},{"line_number":140,"context_line":"                                                  self.network_info,"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba63e191_6b7d92e6","line":137,"range":{"start_line":137,"start_character":0,"end_line":137,"end_character":8},"in_reply_to":"ba63e191_70781df3","updated":"2016-01-19 19:44:05.000000000","message":"I figured it was that comment that sparked the change, but I still think it\u0027s the wrong direction to go in. That said, Laski is a core reviewer \u0026 I\u0027m nobody :)\n\nFYI - I think mock.ANY is similar to mox.IgnoreArg(). I\u0027m not suggesting you change your patch to use it, but it is an alternative middle ground.\n\nhttps://docs.python.org/3/library/unittest.mock.html#unittest.mock.ANY\n\nOf those three options, I still think the simplest one is the best in this case (call_count).\n\nCheers,\n\n--diana","commit_id":"1b4f964cb3579ebcc8b635c15a79c63a7186686a"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"50d2120505c8f60ca8438ada29f7b832a829fc06","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            mock_config_drive):"},{"line_number":135,"context_line":"        self.test_instance.config_drive \u003d \u0027True\u0027"},{"line_number":136,"context_line":"        self._spawn_vm()"},{"line_number":137,"context_line":"        mock_config_drive.assert_called_once_with(self.test_instance,"},{"line_number":138,"context_line":"                                                  [],"},{"line_number":139,"context_line":"                                                  None,"},{"line_number":140,"context_line":"                                                  self.network_info,"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a68dd71_1ec0c2df","line":137,"range":{"start_line":137,"start_character":0,"end_line":137,"end_character":8},"in_reply_to":"ba63e191_97833ccc","updated":"2016-01-21 20:29:22.000000000","message":"I\u0027d like to add the test case to test the arguments in a subsequent patch to keep this patch for just removing mox.","commit_id":"1b4f964cb3579ebcc8b635c15a79c63a7186686a"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"dd9b8ca02fc583232e7b03ab8ec5bfa79eeed48a","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            mock_config_drive):"},{"line_number":135,"context_line":"        self.test_instance.config_drive \u003d \u0027True\u0027"},{"line_number":136,"context_line":"        self._spawn_vm()"},{"line_number":137,"context_line":"        mock_config_drive.assert_called_once_with(self.test_instance,"},{"line_number":138,"context_line":"                                                  [],"},{"line_number":139,"context_line":"                                                  None,"},{"line_number":140,"context_line":"                                                  self.network_info,"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba63e191_2978f88e","line":137,"range":{"start_line":137,"start_character":0,"end_line":137,"end_character":8},"in_reply_to":"ba63e191_97833ccc","updated":"2016-01-19 23:53:08.000000000","message":"Totally agree (about the usefulness/quality of these tests being the heart of the issue).\n\nI\u0027ve removed my -1. GG, as my kid would say. #cheers","commit_id":"1b4f964cb3579ebcc8b635c15a79c63a7186686a"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"a94fd2ccdfdfe306be902ef4b437b6744da0d82f","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            mock_config_drive):"},{"line_number":135,"context_line":"        self.test_instance.config_drive \u003d \u0027True\u0027"},{"line_number":136,"context_line":"        self._spawn_vm()"},{"line_number":137,"context_line":"        mock_config_drive.assert_called_once_with(self.test_instance,"},{"line_number":138,"context_line":"                                                  [],"},{"line_number":139,"context_line":"                                                  None,"},{"line_number":140,"context_line":"                                                  self.network_info,"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba63e191_f1a408ba","line":137,"range":{"start_line":137,"start_character":0,"end_line":137,"end_character":8},"in_reply_to":"ba63e191_c5158649","updated":"2016-01-19 22:50:52.000000000","message":"I too have seen mock\u0027s patch decorators applied in the wrong order by mistake, but I would hate to see every unit test that uses patch decorators have the added burden of having to prove they were applied correctly.","commit_id":"1b4f964cb3579ebcc8b635c15a79c63a7186686a"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"ede3e437653e3aa2235125831df78e38fbb41a51","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            mock_config_drive):"},{"line_number":135,"context_line":"        self.test_instance.config_drive \u003d \u0027True\u0027"},{"line_number":136,"context_line":"        self._spawn_vm()"},{"line_number":137,"context_line":"        mock_config_drive.assert_called_once_with(self.test_instance,"},{"line_number":138,"context_line":"                                                  [],"},{"line_number":139,"context_line":"                                                  None,"},{"line_number":140,"context_line":"                                                  self.network_info,"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba63e191_73f9f57f","line":137,"range":{"start_line":137,"start_character":0,"end_line":137,"end_character":8},"in_reply_to":"ba63e191_c5158649","updated":"2016-01-20 02:53:11.000000000","message":"In this case i will move to using mock.ANY (which i did not know about - still learning mock) to check the # of params","commit_id":"1b4f964cb3579ebcc8b635c15a79c63a7186686a"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"2945c2e4fccc2e03939edaa2ac73604885e18a08","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            mock_config_drive):"},{"line_number":135,"context_line":"        self.test_instance.config_drive \u003d \u0027True\u0027"},{"line_number":136,"context_line":"        self._spawn_vm()"},{"line_number":137,"context_line":"        mock_config_drive.assert_called_once_with(self.test_instance,"},{"line_number":138,"context_line":"                                                  [],"},{"line_number":139,"context_line":"                                                  None,"},{"line_number":140,"context_line":"                                                  self.network_info,"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba63e191_97833ccc","line":137,"range":{"start_line":137,"start_character":0,"end_line":137,"end_character":8},"in_reply_to":"ba63e191_f1a408ba","updated":"2016-01-19 23:42:36.000000000","message":"I agree.  However if the patch decorators are applied incorrectly and the test still passes I think it calls into question the usefulness of the test as written.  In this case it does seem to be a stretch to be concerned with the arguments passed to the mocked methods.  But there should be a test which is concerned with that.\n\nI think this test should be split and have one test that mocks out _configure_config_drive and ensures it\u0027s called with the proper parameters, and another test that calls _configure_config_drive which then ensures that _create_config_drive and _attach_cdrom_to_vm are called properly.","commit_id":"1b4f964cb3579ebcc8b635c15a79c63a7186686a"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"08b66403dd0f5167d489906571b1269058ed1316","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_create_config_drive\u0027)"},{"line_number":154,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_attach_cdrom_to_vm\u0027)"},{"line_number":155,"context_line":"    def test_create_vm_without_config_drive(self,"},{"line_number":156,"context_line":"                                            mock_cdrom,"},{"line_number":157,"context_line":"                                            mock_config_drive):"},{"line_number":158,"context_line":"        self.test_instance.config_drive \u003d None"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba63e191_b69f784f","line":155,"range":{"start_line":155,"start_character":8,"end_line":155,"end_character":43},"updated":"2016-01-19 16:46:51.000000000","message":"Add \"_verify_method_invocation\" suffix to this test name to be consistent with the one above since it is also a \"tracing\" test.","commit_id":"1b4f964cb3579ebcc8b635c15a79c63a7186686a"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"ede3e437653e3aa2235125831df78e38fbb41a51","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_create_config_drive\u0027)"},{"line_number":154,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_attach_cdrom_to_vm\u0027)"},{"line_number":155,"context_line":"    def test_create_vm_without_config_drive(self,"},{"line_number":156,"context_line":"                                            mock_cdrom,"},{"line_number":157,"context_line":"                                            mock_config_drive):"},{"line_number":158,"context_line":"        self.test_instance.config_drive \u003d None"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba63e191_53ee31b5","line":155,"range":{"start_line":155,"start_character":8,"end_line":155,"end_character":43},"in_reply_to":"ba63e191_b69f784f","updated":"2016-01-20 02:53:11.000000000","message":"will do","commit_id":"1b4f964cb3579ebcc8b635c15a79c63a7186686a"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"93b1d2e38eda416ea1889248493db8f228f94289","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    @mock.patch.object(nova.virt.configdrive.ConfigDriveBuilder, \u0027make_drive\u0027)"},{"line_number":113,"context_line":"    @mock.patch.object(images, \u0027upload_iso_to_datastore\u0027)"},{"line_number":114,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_get_instance_metadata\u0027,"},{"line_number":115,"context_line":"                       return_value\u003d\u0027fake_maetadata\u0027)"},{"line_number":116,"context_line":"    def _spawn_vm(self, fake_get_instance_meta,"},{"line_number":117,"context_line":"                  fake_upload, fake_drive,"},{"line_number":118,"context_line":"                  injected_files\u003dNone, admin_password\u003dNone,"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a68dd71_91a23cfc","line":115,"updated":"2016-01-22 13:34:06.000000000","message":"s/fake_maetadata/fake_metadata","commit_id":"1aae33c331afbc6b6a99803d8c8cd5d3f2253a46"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"c13bf96d537d51055f39025fceaf21b6eba5ebae","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    @mock.patch.object(nova.virt.configdrive.ConfigDriveBuilder, \u0027make_drive\u0027)"},{"line_number":113,"context_line":"    @mock.patch.object(images, \u0027upload_iso_to_datastore\u0027)"},{"line_number":114,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_get_instance_metadata\u0027,"},{"line_number":115,"context_line":"                       return_value\u003d\u0027fake_maetadata\u0027)"},{"line_number":116,"context_line":"    def _spawn_vm(self, fake_get_instance_meta,"},{"line_number":117,"context_line":"                  fake_upload, fake_drive,"},{"line_number":118,"context_line":"                  injected_files\u003dNone, admin_password\u003dNone,"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a5de9d1_11e6afe8","line":115,"in_reply_to":"9a68dd71_91a23cfc","updated":"2016-02-02 21:09:36.000000000","message":"Done","commit_id":"1aae33c331afbc6b6a99803d8c8cd5d3f2253a46"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"1b8be94ae2e974bffc46b11fe137bfc63932b2fd","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    @mock.patch.object(nova.virt.configdrive.ConfigDriveBuilder, \u0027make_drive\u0027)"},{"line_number":113,"context_line":"    @mock.patch.object(images, \u0027upload_iso_to_datastore\u0027)"},{"line_number":114,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_get_instance_metadata\u0027,"},{"line_number":115,"context_line":"                       return_value\u003d\u0027fake_maetadata\u0027)"},{"line_number":116,"context_line":"    def _spawn_vm(self, fake_get_instance_meta,"},{"line_number":117,"context_line":"                  fake_upload, fake_drive,"},{"line_number":118,"context_line":"                  injected_files\u003dNone, admin_password\u003dNone,"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a5de9d1_8695fb87","line":115,"in_reply_to":"9a68dd71_91a23cfc","updated":"2016-01-30 22:45:15.000000000","message":"nice catch, that seems unnecessary change here.","commit_id":"1aae33c331afbc6b6a99803d8c8cd5d3f2253a46"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"936ae10b436567b2316268d1ed7b36d6108182fd","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        self.test_instance.config_drive \u003d None"},{"line_number":167,"context_line":"        self._spawn_vm()"},{"line_number":168,"context_line":"        mock_config_drive.assert_not_called()"},{"line_number":169,"context_line":"        mock_cdrom.assert_not_called()"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def test_create_vm_with_config_drive_does_not_throw_exception(self):"},{"line_number":172,"context_line":"        self.test_instance.config_drive \u003d True"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a57f1b5_9a63841a","line":169,"updated":"2016-02-10 16:25:27.000000000","message":"Nice! This test is actually more thorough as a result of switching to mock. +1.","commit_id":"5fda83672ca3900011cf2c8a1d98e1ac155eb19a"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"3b206154feea4456db16935474b82dd23d800e13","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        mock_cdrom.assert_called_once_with(mock.ANY,"},{"line_number":158,"context_line":"                                           mock.ANY,"},{"line_number":159,"context_line":"                                           mock.ANY,"},{"line_number":160,"context_line":"                                           mock.ANY)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_create_config_drive\u0027)"},{"line_number":163,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_attach_cdrom_to_vm\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a061dce_bcb0048d","line":160,"updated":"2016-04-04 20:05:08.000000000","message":"Might be more straightforward to simply check the call count here.","commit_id":"dac67bb18d4eea9164a629c5155ba28098c5396c"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"516a0ca5f2f604349eae86f26af6a9492cc2eba5","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        mock_cdrom.assert_called_once_with(mock.ANY,"},{"line_number":158,"context_line":"                                           mock.ANY,"},{"line_number":159,"context_line":"                                           mock.ANY,"},{"line_number":160,"context_line":"                                           mock.ANY)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_create_config_drive\u0027)"},{"line_number":163,"context_line":"    @mock.patch.object(vmops.VMwareVMOps, \u0027_attach_cdrom_to_vm\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a18252c_0958f9f9","line":160,"in_reply_to":"9a061dce_bcb0048d","updated":"2016-04-11 23:48:51.000000000","message":"true but someone else commented that i was not checking the # of arguments...","commit_id":"dac67bb18d4eea9164a629c5155ba28098c5396c"}]}
