)]}'
{"nova/tests/unit/virt/hyperv/test_block_device_manager.py":[{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"380121fbd612d5b315d9d18ea6251970d7148e4d","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self._check_validate_and_update_bdi()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def test_validate_and_update_bdi_insufficient_slots(self):"},{"line_number":99,"context_line":"        self._check_validate_and_update_bdi(slots\u003d0)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @mock.patch.object(block_device_manager.BlockDeviceInfoManager,"},{"line_number":102,"context_line":"                       \u0027_get_available_controller_slot\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1aa78d24_5e8a6ac0","line":99,"updated":"2016-07-05 09:49:03.000000000","message":"This would be easier to follow if you\u0027d remain slots to \u0027available_slots\u0027","commit_id":"e90a4b13a1a0c363cc99d9767491ce742a0ad22a"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"58ca631c198082df242399495b2ed37f493f5a58","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self._check_validate_and_update_bdi()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def test_validate_and_update_bdi_insufficient_slots(self):"},{"line_number":99,"context_line":"        self._check_validate_and_update_bdi(slots\u003d0)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @mock.patch.object(block_device_manager.BlockDeviceInfoManager,"},{"line_number":102,"context_line":"                       \u0027_get_available_controller_slot\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1aa78d24_61fa2bbf","line":99,"in_reply_to":"1aa78d24_5e8a6ac0","updated":"2016-07-06 21:57:49.000000000","message":"Done","commit_id":"e90a4b13a1a0c363cc99d9767491ce742a0ad22a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"25fe758c6bd53d888df742802fcbcc93c7f2fd49","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self._check_validate_and_update_bdi()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def test_validate_and_update_bdi_insufficient_slots(self):"},{"line_number":99,"context_line":"        self._check_validate_and_update_bdi(slots\u003d0)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @mock.patch.object(block_device_manager.BlockDeviceInfoManager,"},{"line_number":102,"context_line":"                       \u0027_get_available_controller_slot\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1aa78d24_26be1a65","line":99,"in_reply_to":"1aa78d24_5e8a6ac0","updated":"2016-07-06 18:52:56.000000000","message":"s/remain/rename/ ?","commit_id":"e90a4b13a1a0c363cc99d9767491ce742a0ad22a"}],"nova/tests/unit/virt/hyperv/test_driver.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"6a7165233b2bf511c57d7f5733ccf136e0da644d","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            self.assertEqual(\u0027foofoo\u0027, trace.tb_frame.f_locals[\u0027foo\u0027])"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def test_need_legacy_block_device_info(self):"},{"line_number":114,"context_line":"        self.assertFalse(self.driver.need_legacy_block_device_info)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    @mock.patch.object(driver.eventhandler, \u0027InstanceEventHandler\u0027)"},{"line_number":117,"context_line":"    def test_init_host(self, mock_InstanceEventHandler):"}],"source_content_type":"text/x-python","patch_set":18,"id":"3aaa91ec_14b36a99","line":114,"updated":"2016-06-23 19:37:03.000000000","message":"this seems like an odd thing to test honestly, because that property litterally only returns False","commit_id":"cf93f75889d6ccfae15a062b573c68e149b1d492"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"d763f074c7b983433e449a211a50cd7ef0ad6c5e","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            self.assertEqual(\u0027foofoo\u0027, trace.tb_frame.f_locals[\u0027foo\u0027])"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def test_need_legacy_block_device_info(self):"},{"line_number":114,"context_line":"        self.assertFalse(self.driver.need_legacy_block_device_info)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    @mock.patch.object(driver.eventhandler, \u0027InstanceEventHandler\u0027)"},{"line_number":117,"context_line":"    def test_init_host(self, mock_InstanceEventHandler):"}],"source_content_type":"text/x-python","patch_set":18,"id":"3aaa91ec_fda5e1a1","line":114,"in_reply_to":"3aaa91ec_14b36a99","updated":"2016-06-23 20:34:54.000000000","message":"Done","commit_id":"cf93f75889d6ccfae15a062b573c68e149b1d492"}],"nova/tests/unit/virt/hyperv/test_imagecache.py":[{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"267c0a78723c19789446511bef3f44dbc590e2f2","unresolved":false,"context_lines":[{"line_number":138,"context_line":"         expected_image_path) \u003d self._prepare_get_cached_image(False, False)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        # path doesn\u0027t exist until fetched."},{"line_number":141,"context_line":"        self.imagecache._pathutils.exists.side_effect \u003d [False, False, False,"},{"line_number":142,"context_line":"            True]"},{"line_number":143,"context_line":"        mock_fetch.side_effect \u003d exception.InvalidImageRef("},{"line_number":144,"context_line":"            image_href\u003dself.FAKE_IMAGE_REF)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_8066bf4e","line":141,"updated":"2016-06-01 11:45:33.000000000","message":"It would be nice to fix the indentation here.","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"2b816c7d2bd82599c7177738c832246344fc811b","unresolved":false,"context_lines":[{"line_number":138,"context_line":"         expected_image_path) \u003d self._prepare_get_cached_image(False, False)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        # path doesn\u0027t exist until fetched."},{"line_number":141,"context_line":"        self.imagecache._pathutils.exists.side_effect \u003d [False, False, False,"},{"line_number":142,"context_line":"            True]"},{"line_number":143,"context_line":"        mock_fetch.side_effect \u003d exception.InvalidImageRef("},{"line_number":144,"context_line":"            image_href\u003dself.FAKE_IMAGE_REF)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_17b1d88f","line":141,"in_reply_to":"9abb7d3a_8066bf4e","updated":"2016-06-03 18:28:57.000000000","message":"Done","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"267c0a78723c19789446511bef3f44dbc590e2f2","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            \u0027VirtualSize\u0027: self.instance.root_gb + 1}"},{"line_number":182,"context_line":"        (expected_path,"},{"line_number":183,"context_line":"         expected_vhd_path) \u003d self._prepare_get_cached_image("},{"line_number":184,"context_line":"             rescue_image_id\u003dfake_rescue_image_id)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        self.assertRaises(exception.ImageUnacceptable,"},{"line_number":187,"context_line":"                          self.imagecache.get_cached_image,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_0025af07","line":184,"updated":"2016-06-01 11:45:33.000000000","message":"Looks like an unrelated change.","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"2b816c7d2bd82599c7177738c832246344fc811b","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            \u0027VirtualSize\u0027: self.instance.root_gb + 1}"},{"line_number":182,"context_line":"        (expected_path,"},{"line_number":183,"context_line":"         expected_vhd_path) \u003d self._prepare_get_cached_image("},{"line_number":184,"context_line":"             rescue_image_id\u003dfake_rescue_image_id)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        self.assertRaises(exception.ImageUnacceptable,"},{"line_number":187,"context_line":"                          self.imagecache.get_cached_image,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_97a148ac","line":184,"in_reply_to":"9abb7d3a_0025af07","updated":"2016-06-03 18:28:57.000000000","message":"Done","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"6a7165233b2bf511c57d7f5733ccf136e0da644d","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    @mock.patch.object(imagecache.images, \u0027fetch\u0027)"},{"line_number":122,"context_line":"    def test_get_cached_image_with_fetch(self, mock_fetch):"},{"line_number":123,"context_line":"        (expected_path,"},{"line_number":124,"context_line":"         expected_image_path) \u003d self._prepare_get_cached_image(False, False)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        result \u003d self.imagecache.get_cached_image(self.context, self.instance)"},{"line_number":127,"context_line":"        self.assertEqual(expected_image_path, result)"}],"source_content_type":"text/x-python","patch_set":18,"id":"3aaa91ec_147a4abd","line":124,"range":{"start_line":124,"start_character":18,"end_line":124,"end_character":23},"updated":"2016-06-23 19:37:03.000000000","message":"changing all these unrelated names here makes it a lot harder to understand what is going on here.","commit_id":"cf93f75889d6ccfae15a062b573c68e149b1d492"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"d763f074c7b983433e449a211a50cd7ef0ad6c5e","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    @mock.patch.object(imagecache.images, \u0027fetch\u0027)"},{"line_number":122,"context_line":"    def test_get_cached_image_with_fetch(self, mock_fetch):"},{"line_number":123,"context_line":"        (expected_path,"},{"line_number":124,"context_line":"         expected_image_path) \u003d self._prepare_get_cached_image(False, False)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        result \u003d self.imagecache.get_cached_image(self.context, self.instance)"},{"line_number":127,"context_line":"        self.assertEqual(expected_image_path, result)"}],"source_content_type":"text/x-python","patch_set":18,"id":"3aaa91ec_1da9cd7b","line":124,"range":{"start_line":124,"start_character":18,"end_line":124,"end_character":23},"in_reply_to":"3aaa91ec_147a4abd","updated":"2016-06-23 20:34:54.000000000","message":"Done","commit_id":"cf93f75889d6ccfae15a062b573c68e149b1d492"}],"nova/tests/unit/virt/hyperv/test_migrationops.py":[{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"267c0a78723c19789446511bef3f44dbc590e2f2","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            mock.call(mock.sentinel.dest_path),"},{"line_number":137,"context_line":"            mock.call(mock.sentinel.revert_path)])"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def _test_check_target_flavor(self, root_gb):"},{"line_number":140,"context_line":"        mock_instance \u003d fake_instance.fake_instance_obj(self.context)"},{"line_number":141,"context_line":"        mock_instance.root_gb \u003d root_gb"},{"line_number":142,"context_line":"        mock_flavor \u003d mock.MagicMock(root_gb\u003d1)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_4346a14f","line":139,"updated":"2016-06-01 11:45:33.000000000","message":"This change seems unrelated.","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"2b816c7d2bd82599c7177738c832246344fc811b","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            mock.call(mock.sentinel.dest_path),"},{"line_number":137,"context_line":"            mock.call(mock.sentinel.revert_path)])"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def _test_check_target_flavor(self, root_gb):"},{"line_number":140,"context_line":"        mock_instance \u003d fake_instance.fake_instance_obj(self.context)"},{"line_number":141,"context_line":"        mock_instance.root_gb \u003d root_gb"},{"line_number":142,"context_line":"        mock_flavor \u003d mock.MagicMock(root_gb\u003d1)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_b2cd7ab9","line":139,"in_reply_to":"9abb7d3a_4346a14f","updated":"2016-06-03 18:28:57.000000000","message":"Done","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"267c0a78723c19789446511bef3f44dbc590e2f2","unresolved":false,"context_lines":[{"line_number":279,"context_line":"    def test_finish_revert_migration_no_root_vhd(self):"},{"line_number":280,"context_line":"        mock_instance \u003d fake_instance.fake_instance_obj(self.context)"},{"line_number":281,"context_line":"        root_device \u003d {\u0027type\u0027: constants.DISK}"},{"line_number":282,"context_line":"        bdi \u003d {\u0027root_disk\u0027: root_device,"},{"line_number":283,"context_line":"               \u0027ephemerals\u0027: []}"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        self._migrationops._pathutils.lookup_root_vhd_path.return_value \u003d None"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_03ae59e5","line":282,"updated":"2016-06-01 11:45:33.000000000","message":"Should we put this bdi in a common place to avoid some duplicated code?","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"2b816c7d2bd82599c7177738c832246344fc811b","unresolved":false,"context_lines":[{"line_number":279,"context_line":"    def test_finish_revert_migration_no_root_vhd(self):"},{"line_number":280,"context_line":"        mock_instance \u003d fake_instance.fake_instance_obj(self.context)"},{"line_number":281,"context_line":"        root_device \u003d {\u0027type\u0027: constants.DISK}"},{"line_number":282,"context_line":"        bdi \u003d {\u0027root_disk\u0027: root_device,"},{"line_number":283,"context_line":"               \u0027ephemerals\u0027: []}"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        self._migrationops._pathutils.lookup_root_vhd_path.return_value \u003d None"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_16eef1b3","line":282,"in_reply_to":"9abb7d3a_03ae59e5","updated":"2016-06-03 18:28:57.000000000","message":"Done","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"2b816c7d2bd82599c7177738c832246344fc811b","unresolved":false,"context_lines":[{"line_number":407,"context_line":"            block_device_info\u003dblock_device_info)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        if not root_device[\u0027type\u0027] \u003d\u003d constants.VOLUME:"},{"line_number":410,"context_line":"            root_device[\u0027path\u0027] \u003d lookup_root_vhd.return_value"},{"line_number":411,"context_line":"            lookup_root_vhd.assert_called_with(mock_instance.name)"},{"line_number":412,"context_line":"            expected_get_info \u003d [mock.call(root_device[\u0027path\u0027])]"},{"line_number":413,"context_line":"            mock_vhd_info.get.assert_called_once_with(\"ParentPath\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_404f13bd","line":410,"updated":"2016-06-03 18:28:57.000000000","message":"should be root_device_path, otherwise you\u0027re overwritting the value set by the method.","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"cd77b5945edab49700c6ef541469b38366e71af2","unresolved":false,"context_lines":[{"line_number":407,"context_line":"            block_device_info\u003dblock_device_info)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        if not root_device[\u0027type\u0027] \u003d\u003d constants.VOLUME:"},{"line_number":410,"context_line":"            root_device[\u0027path\u0027] \u003d lookup_root_vhd.return_value"},{"line_number":411,"context_line":"            lookup_root_vhd.assert_called_with(mock_instance.name)"},{"line_number":412,"context_line":"            expected_get_info \u003d [mock.call(root_device[\u0027path\u0027])]"},{"line_number":413,"context_line":"            mock_vhd_info.get.assert_called_once_with(\"ParentPath\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_968661d9","line":410,"in_reply_to":"9abb7d3a_404f13bd","updated":"2016-06-03 18:31:32.000000000","message":"Done","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"267c0a78723c19789446511bef3f44dbc590e2f2","unresolved":false,"context_lines":[{"line_number":486,"context_line":"        mock_get_vhd_format \u003d mock_vhdutils.get_best_supported_vhd_format"},{"line_number":487,"context_line":"        mock_get_vhd_format.return_value \u003d mock.sentinel.VHD_FORMAT"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"        if fail:"},{"line_number":490,"context_line":"            self.assertRaises(exception.DiskNotFound,"},{"line_number":491,"context_line":"                              self._migrationops._check_ephemeral_disks,"},{"line_number":492,"context_line":"                              mock_instance, mock_ephemerals)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_23fd5db4","line":489,"updated":"2016-06-01 11:45:33.000000000","message":"I\u0027d pass the expected exception instead.","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"2b816c7d2bd82599c7177738c832246344fc811b","unresolved":false,"context_lines":[{"line_number":486,"context_line":"        mock_get_vhd_format \u003d mock_vhdutils.get_best_supported_vhd_format"},{"line_number":487,"context_line":"        mock_get_vhd_format.return_value \u003d mock.sentinel.VHD_FORMAT"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"        if fail:"},{"line_number":490,"context_line":"            self.assertRaises(exception.DiskNotFound,"},{"line_number":491,"context_line":"                              self._migrationops._check_ephemeral_disks,"},{"line_number":492,"context_line":"                              mock_instance, mock_ephemerals)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_45856557","line":489,"in_reply_to":"9abb7d3a_23fd5db4","updated":"2016-06-03 18:28:57.000000000","message":"Done","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"267c0a78723c19789446511bef3f44dbc590e2f2","unresolved":false,"context_lines":[{"line_number":497,"context_line":""},{"line_number":498,"context_line":"        self.assertEqual(mock.sentinel.PATH0, mock_ephemerals[0][\u0027path\u0027])"},{"line_number":499,"context_line":"        if resize:"},{"line_number":500,"context_line":"            self.assertEqual(mock.sentinel.PATH1, mock_ephemerals[1][\u0027path\u0027])"},{"line_number":501,"context_line":"            mock_get_vhd_format.assert_called_once_with()"},{"line_number":502,"context_line":"            self.assertEqual(mock.sentinel.VHD_FORMAT,"},{"line_number":503,"context_line":"                             mock_ephemerals[1][\u0027format\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_83efe91c","line":500,"updated":"2016-06-01 11:45:33.000000000","message":"I\u0027d use lowercase for the sentinels for consistency.","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"2b816c7d2bd82599c7177738c832246344fc811b","unresolved":false,"context_lines":[{"line_number":497,"context_line":""},{"line_number":498,"context_line":"        self.assertEqual(mock.sentinel.PATH0, mock_ephemerals[0][\u0027path\u0027])"},{"line_number":499,"context_line":"        if resize:"},{"line_number":500,"context_line":"            self.assertEqual(mock.sentinel.PATH1, mock_ephemerals[1][\u0027path\u0027])"},{"line_number":501,"context_line":"            mock_get_vhd_format.assert_called_once_with()"},{"line_number":502,"context_line":"            self.assertEqual(mock.sentinel.VHD_FORMAT,"},{"line_number":503,"context_line":"                             mock_ephemerals[1][\u0027format\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_a57c1173","line":500,"in_reply_to":"9abb7d3a_83efe91c","updated":"2016-06-03 18:28:57.000000000","message":"Done","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"}],"nova/tests/unit/virt/hyperv/test_vmops.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"2b816c7d2bd82599c7177738c832246344fc811b","unresolved":false,"context_lines":[{"line_number":550,"context_line":"             {\u0027hw_machine_type\u0027: constants.IMAGE_PROP_VM_GEN_2}})"},{"line_number":551,"context_line":"        self._vmops._hostutils.get_supported_vm_types.return_value \u003d ["},{"line_number":552,"context_line":"            constants.IMAGE_PROP_VM_GEN_1, constants.IMAGE_PROP_VM_GEN_2]"},{"line_number":553,"context_line":"        self._vmops._vhdutils.get_vhd_format.return_value \u003d ("},{"line_number":554,"context_line":"            constants.DISK_FORMAT_VHD)"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"        self.assertRaises(exception.InstanceUnacceptable,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_f2cc2263","side":"PARENT","line":553,"updated":"2016-06-03 18:28:57.000000000","message":"unrelated change.","commit_id":"2bba8f6f3d38c98c605a9d6bf923d47f3db3b49a"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"cd77b5945edab49700c6ef541469b38366e71af2","unresolved":false,"context_lines":[{"line_number":550,"context_line":"             {\u0027hw_machine_type\u0027: constants.IMAGE_PROP_VM_GEN_2}})"},{"line_number":551,"context_line":"        self._vmops._hostutils.get_supported_vm_types.return_value \u003d ["},{"line_number":552,"context_line":"            constants.IMAGE_PROP_VM_GEN_1, constants.IMAGE_PROP_VM_GEN_2]"},{"line_number":553,"context_line":"        self._vmops._vhdutils.get_vhd_format.return_value \u003d ("},{"line_number":554,"context_line":"            constants.DISK_FORMAT_VHD)"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"        self.assertRaises(exception.InstanceUnacceptable,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_76ee5d8c","side":"PARENT","line":553,"in_reply_to":"9abb7d3a_f2cc2263","updated":"2016-06-03 18:31:32.000000000","message":"Done","commit_id":"2bba8f6f3d38c98c605a9d6bf923d47f3db3b49a"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"2b816c7d2bd82599c7177738c832246344fc811b","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                                        mock.sentinel.VM_GEN_1)"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"        mock_create_root_device.assert_called_once_with(self.context,"},{"line_number":297,"context_line":"            mock_instance)"},{"line_number":298,"context_line":"        mock_check_vm_image_type.assert_called_once_with("},{"line_number":299,"context_line":"            mock_instance.uuid, mock.sentinel.VM_GEN_1,"},{"line_number":300,"context_line":"            mock.sentinel.VHD_PATH)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_6c605636","line":297,"updated":"2016-06-03 18:28:57.000000000","message":"indentation.","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"cd77b5945edab49700c6ef541469b38366e71af2","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                                        mock.sentinel.VM_GEN_1)"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"        mock_create_root_device.assert_called_once_with(self.context,"},{"line_number":297,"context_line":"            mock_instance)"},{"line_number":298,"context_line":"        mock_check_vm_image_type.assert_called_once_with("},{"line_number":299,"context_line":"            mock_instance.uuid, mock.sentinel.VM_GEN_1,"},{"line_number":300,"context_line":"            mock.sentinel.VHD_PATH)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_b65a8581","line":297,"in_reply_to":"9abb7d3a_6c605636","updated":"2016-06-03 18:31:32.000000000","message":"Done","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"2b816c7d2bd82599c7177738c832246344fc811b","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        mock_instance \u003d fake_instance.fake_instance_obj(self.context)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"        mock_ephemeral_info \u003d {\u0027path\u0027: \u0027fake_eph_path\u0027,"},{"line_number":354,"context_line":"                               \u0027format\u0027: \u0027vhd\u0027,"},{"line_number":355,"context_line":"                               \u0027size\u0027: 10}"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"        mock_create_dynamic_vhd \u003d self._vmops._vhdutils.create_dynamic_vhd"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_0f7d3cb1","line":354,"updated":"2016-06-03 18:28:57.000000000","message":"unnecessary.","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"cd77b5945edab49700c6ef541469b38366e71af2","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        mock_instance \u003d fake_instance.fake_instance_obj(self.context)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"        mock_ephemeral_info \u003d {\u0027path\u0027: \u0027fake_eph_path\u0027,"},{"line_number":354,"context_line":"                               \u0027format\u0027: \u0027vhd\u0027,"},{"line_number":355,"context_line":"                               \u0027size\u0027: 10}"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"        mock_create_dynamic_vhd \u003d self._vmops._vhdutils.create_dynamic_vhd"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_f6540d55","line":354,"in_reply_to":"9abb7d3a_0f7d3cb1","updated":"2016-06-03 18:31:32.000000000","message":"Done","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"2b816c7d2bd82599c7177738c832246344fc811b","unresolved":false,"context_lines":[{"line_number":386,"context_line":"                    fake_vm_gen\u003dconstants.VM_GEN_2):"},{"line_number":387,"context_line":"        mock_instance \u003d fake_instance.fake_instance_obj(self.context)"},{"line_number":388,"context_line":"        mock_image_meta \u003d mock.MagicMock()"},{"line_number":389,"context_line":"        root_device_info \u003d mock.sentinel.ROOT_DEV_INFO"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        mock_get_image_vm_gen.return_value \u003d fake_vm_gen"},{"line_number":392,"context_line":"        fake_config_drive_path \u003d mock_create_config_drive.return_value"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_e2ca8f4e","line":389,"updated":"2016-06-03 18:28:57.000000000","message":"argument is not necessary, if we set its value here.","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"cd77b5945edab49700c6ef541469b38366e71af2","unresolved":false,"context_lines":[{"line_number":386,"context_line":"                    fake_vm_gen\u003dconstants.VM_GEN_2):"},{"line_number":387,"context_line":"        mock_instance \u003d fake_instance.fake_instance_obj(self.context)"},{"line_number":388,"context_line":"        mock_image_meta \u003d mock.MagicMock()"},{"line_number":389,"context_line":"        root_device_info \u003d mock.sentinel.ROOT_DEV_INFO"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        mock_get_image_vm_gen.return_value \u003d fake_vm_gen"},{"line_number":392,"context_line":"        fake_config_drive_path \u003d mock_create_config_drive.return_value"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_d64f49bc","line":389,"in_reply_to":"9abb7d3a_e2ca8f4e","updated":"2016-06-03 18:31:32.000000000","message":"Done","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"267c0a78723c19789446511bef3f44dbc590e2f2","unresolved":false,"context_lines":[{"line_number":438,"context_line":""},{"line_number":439,"context_line":"    def test_spawn(self):"},{"line_number":440,"context_line":"        root_device_info \u003d mock.sentinel.ROOT_DEV_INFO"},{"line_number":441,"context_line":"        block_device_info \u003d {\u0027ephemerals\u0027: [], \u0027root_disk\u0027: root_device_info}"},{"line_number":442,"context_line":"        self._test_spawn(exists\u003dFalse, root_device_info\u003droot_device_info,"},{"line_number":443,"context_line":"                         block_device_info\u003dblock_device_info,"},{"line_number":444,"context_line":"                         configdrive_required\u003dTrue, fail\u003dNone)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_63f125cd","line":441,"updated":"2016-06-01 11:45:33.000000000","message":"Ditto for the common bdi.","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"2b816c7d2bd82599c7177738c832246344fc811b","unresolved":false,"context_lines":[{"line_number":438,"context_line":""},{"line_number":439,"context_line":"    def test_spawn(self):"},{"line_number":440,"context_line":"        root_device_info \u003d mock.sentinel.ROOT_DEV_INFO"},{"line_number":441,"context_line":"        block_device_info \u003d {\u0027ephemerals\u0027: [], \u0027root_disk\u0027: root_device_info}"},{"line_number":442,"context_line":"        self._test_spawn(exists\u003dFalse, root_device_info\u003droot_device_info,"},{"line_number":443,"context_line":"                         block_device_info\u003dblock_device_info,"},{"line_number":444,"context_line":"                         configdrive_required\u003dTrue, fail\u003dNone)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_e2260f15","line":441,"in_reply_to":"9abb7d3a_63f125cd","updated":"2016-06-03 18:28:57.000000000","message":"Done","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"2b816c7d2bd82599c7177738c832246344fc811b","unresolved":false,"context_lines":[{"line_number":533,"context_line":"    @mock.patch.object(vmops.volumeops.VolumeOps, \u0027attach_volume\u0027)"},{"line_number":534,"context_line":"    def test_attach_root_device_volume(self, mock_attach_volume):"},{"line_number":535,"context_line":"        mock_instance \u003d fake_instance.fake_instance_obj(self.context)"},{"line_number":536,"context_line":"        root_device_info \u003d {\u0027type\u0027: os_win_const.VOLUME,"},{"line_number":537,"context_line":"                            \u0027connection_info\u0027: mock.sentinel.CONN_INFO,"},{"line_number":538,"context_line":"                            \u0027disk_bus\u0027: constants.CTRL_TYPE_IDE}"},{"line_number":539,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_dd0f6fdf","line":536,"updated":"2016-06-03 18:28:57.000000000","message":"not os_win_const, just constants.","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"cd77b5945edab49700c6ef541469b38366e71af2","unresolved":false,"context_lines":[{"line_number":533,"context_line":"    @mock.patch.object(vmops.volumeops.VolumeOps, \u0027attach_volume\u0027)"},{"line_number":534,"context_line":"    def test_attach_root_device_volume(self, mock_attach_volume):"},{"line_number":535,"context_line":"        mock_instance \u003d fake_instance.fake_instance_obj(self.context)"},{"line_number":536,"context_line":"        root_device_info \u003d {\u0027type\u0027: os_win_const.VOLUME,"},{"line_number":537,"context_line":"                            \u0027connection_info\u0027: mock.sentinel.CONN_INFO,"},{"line_number":538,"context_line":"                            \u0027disk_bus\u0027: constants.CTRL_TYPE_IDE}"},{"line_number":539,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_76c77d12","line":536,"in_reply_to":"9abb7d3a_dd0f6fdf","updated":"2016-06-03 18:31:32.000000000","message":"Done","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"faabea1cdf2cb78b3e72ca9cae668c55a4fcd49a","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    @mock.patch.object(vmops.VMOps, \u0027check_vm_image_type\u0027)"},{"line_number":156,"context_line":"    @mock.patch.object(vmops.VMOps, \u0027_create_root_vhd\u0027)"},{"line_number":157,"context_line":"    def _check_create_root_device_type_disk(self, mock_create_root_device,"},{"line_number":158,"context_line":"                                            mock_check_vm_image_type):"},{"line_number":159,"context_line":"        mock_instance \u003d fake_instance.fake_instance_obj(self.context)"},{"line_number":160,"context_line":"        mock_root_disk_info \u003d {\u0027type\u0027: constants.DISK}"}],"source_content_type":"text/x-python","patch_set":17,"id":"7aa08908_19fd6cb1","line":157,"updated":"2016-06-17 13:09:10.000000000","message":"test_create_root_device_type_disk","commit_id":"1a98b36ce3a77d0c9bf0506b0719408de315ac1c"}],"nova/virt/hyperv/block_device_manager.py":[{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"380121fbd612d5b315d9d18ea6251970d7148e4d","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        root_disk[\u0027disk_bus\u0027] \u003d (constants.CTRL_TYPE_IDE if"},{"line_number":103,"context_line":"            vm_gen \u003d\u003d constants.VM_GEN_1 else constants.CTRL_TYPE_SCSI)"},{"line_number":104,"context_line":"        (root_disk[\u0027drive_addr\u0027],"},{"line_number":105,"context_line":"         root_disk[\u0027ctrl_disk_addr\u0027]) \u003d self._get_available_controller_slot("},{"line_number":106,"context_line":"            root_disk[\u0027disk_bus\u0027], slot_map)"},{"line_number":107,"context_line":"        root_disk[\u0027boot_index\u0027] \u003d 0"},{"line_number":108,"context_line":"        root_disk[\u0027mount_device\u0027] \u003d root_device"}],"source_content_type":"text/x-python","patch_set":23,"id":"1aa78d24_9eae9283","line":105,"updated":"2016-07-05 09:49:03.000000000","message":"Just an observation: we set disk addresses (slots) here, but we never use them. We attempt to get a free slot again when actually attaching disks.","commit_id":"e90a4b13a1a0c363cc99d9767491ce742a0ad22a"}],"nova/virt/hyperv/imagecache.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"5b4ca6e7932f5b7c38c6a8d58efafb4ae791d436","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        # Note: rescue images are not resized."},{"line_number":136,"context_line":"        is_vhd \u003d image_path.split(\u0027.\u0027)[-1].lower() \u003d\u003d \u0027vhd\u0027"},{"line_number":137,"context_line":"        if (CONF.use_cow_images and is_vhd and not rescue_image_id):"},{"line_number":138,"context_line":"            # Resize the base VHD image as it\u0027s not possible to resize a"},{"line_number":139,"context_line":"            # differencing VHD. This does not apply to VHDX images."},{"line_number":140,"context_line":"            resized_image_path \u003d self._resize_and_cache_vhd(instance,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_f7cdf2b7","line":137,"updated":"2015-11-17 11:24:58.000000000","message":"no need for ( )","commit_id":"f0b63b443c9edf8ae34f79a37b8b0eac34348e5f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"52f0eddf37e810407a0e975b5b0fd35507247d51","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                try:"},{"line_number":110,"context_line":"                    images.fetch(context, image_id, base_image_path,"},{"line_number":111,"context_line":"                                 instance.user_id,"},{"line_number":112,"context_line":"                                 instance.project_id)"},{"line_number":113,"context_line":"                    if image_type \u003d\u003d \u0027iso\u0027:"},{"line_number":114,"context_line":"                        format_ext \u003d \u0027iso\u0027"},{"line_number":115,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_997c3fed","line":112,"updated":"2016-05-23 20:29:18.000000000","message":"user_id and project_id are no longer required. the ci will fail on this.","commit_id":"fca6c2cce000d8f6efd586c8a507fa132f530c28"},{"author":{"_account_id":12604,"name":"Adelina Tuvenie","email":"atuvenie@cloudbasesolutions.com","username":"atuvenie"},"change_message_id":"71dbb71980c38199f38eab71b85fbeb4c5a36b32","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                try:"},{"line_number":110,"context_line":"                    images.fetch(context, image_id, base_image_path,"},{"line_number":111,"context_line":"                                 instance.user_id,"},{"line_number":112,"context_line":"                                 instance.project_id)"},{"line_number":113,"context_line":"                    if image_type \u003d\u003d \u0027iso\u0027:"},{"line_number":114,"context_line":"                        format_ext \u003d \u0027iso\u0027"},{"line_number":115,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_ec5496cb","line":112,"in_reply_to":"bab6814e_997c3fed","updated":"2016-05-24 10:39:14.000000000","message":"Done","commit_id":"fca6c2cce000d8f6efd586c8a507fa132f530c28"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"52f0eddf37e810407a0e975b5b0fd35507247d51","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                                 instance.user_id,"},{"line_number":112,"context_line":"                                 instance.project_id)"},{"line_number":113,"context_line":"                    if image_type \u003d\u003d \u0027iso\u0027:"},{"line_number":114,"context_line":"                        format_ext \u003d \u0027iso\u0027"},{"line_number":115,"context_line":"                    else:"},{"line_number":116,"context_line":"                        format_ext \u003d self._vhdutils.get_vhd_format("},{"line_number":117,"context_line":"                            base_image_path)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_d9a2474b","line":114,"updated":"2016-05-23 20:29:18.000000000","message":"a test case with iso would be nice.","commit_id":"fca6c2cce000d8f6efd586c8a507fa132f530c28"},{"author":{"_account_id":12604,"name":"Adelina Tuvenie","email":"atuvenie@cloudbasesolutions.com","username":"atuvenie"},"change_message_id":"71dbb71980c38199f38eab71b85fbeb4c5a36b32","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                                 instance.user_id,"},{"line_number":112,"context_line":"                                 instance.project_id)"},{"line_number":113,"context_line":"                    if image_type \u003d\u003d \u0027iso\u0027:"},{"line_number":114,"context_line":"                        format_ext \u003d \u0027iso\u0027"},{"line_number":115,"context_line":"                    else:"},{"line_number":116,"context_line":"                        format_ext \u003d self._vhdutils.get_vhd_format("},{"line_number":117,"context_line":"                            base_image_path)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_3d452617","line":114,"in_reply_to":"bab6814e_d9a2474b","updated":"2016-05-24 10:39:14.000000000","message":"Done","commit_id":"fca6c2cce000d8f6efd586c8a507fa132f530c28"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"6a7165233b2bf511c57d7f5733ccf136e0da644d","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                    image_path \u003d test_path"},{"line_number":121,"context_line":"                    break"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"            if not image_path:"},{"line_number":124,"context_line":"                try:"},{"line_number":125,"context_line":"                    images.fetch(context, image_id, base_image_path)"},{"line_number":126,"context_line":"                    if image_type \u003d\u003d \u0027iso\u0027:"}],"source_content_type":"text/x-python","patch_set":18,"id":"3aaa91ec_148c0ad9","line":123,"updated":"2016-06-23 19:37:03.000000000","message":"renaming all these unrelated variables in this patch is actually making the relevant changes quite hard to see","commit_id":"cf93f75889d6ccfae15a062b573c68e149b1d492"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"d763f074c7b983433e449a211a50cd7ef0ad6c5e","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                    image_path \u003d test_path"},{"line_number":121,"context_line":"                    break"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"            if not image_path:"},{"line_number":124,"context_line":"                try:"},{"line_number":125,"context_line":"                    images.fetch(context, image_id, base_image_path)"},{"line_number":126,"context_line":"                    if image_type \u003d\u003d \u0027iso\u0027:"}],"source_content_type":"text/x-python","patch_set":18,"id":"3aaa91ec_5de4f5df","line":123,"in_reply_to":"3aaa91ec_148c0ad9","updated":"2016-06-23 20:34:54.000000000","message":"Done","commit_id":"cf93f75889d6ccfae15a062b573c68e149b1d492"}],"nova/virt/hyperv/migrationops.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"5b4ca6e7932f5b7c38c6a8d58efafb4ae791d436","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                          \"%(curr_eph_gb)s GB. Requested total size: \""},{"line_number":130,"context_line":"                          \"%(new_eph_gb)s GB\") %"},{"line_number":131,"context_line":"                        {\u0027curr_eph_gb\u0027: curr_eph_gb,"},{"line_number":132,"context_line":"                         \u0027new_eph_gb\u0027: new_eph_gb}))"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def migrate_disk_and_power_off(self, context, instance, dest,"},{"line_number":135,"context_line":"                                   flavor, network_info,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_7c02490d","line":132,"updated":"2015-11-17 11:24:58.000000000","message":"this should be a bug report with a bug fix.","commit_id":"f0b63b443c9edf8ae34f79a37b8b0eac34348e5f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"5b4ca6e7932f5b7c38c6a8d58efafb4ae791d436","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                instance_name, eph_name)"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"            if not eph[\u0027path\u0027] and not resize_instance:"},{"line_number":331,"context_line":"                raise vmutils.HyperVException(_(\"Cannot find ephemeral VHD \""},{"line_number":332,"context_line":"                                                \"file for instance: %s\") %"},{"line_number":333,"context_line":"                                              instance_name)"},{"line_number":334,"context_line":"            if resize_instance and not eph[\u0027path\u0027] and new_eph_gb:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_b7644ae5","line":331,"updated":"2015-11-17 11:24:58.000000000","message":"os_win.exceptions.HyperVException.","commit_id":"f0b63b443c9edf8ae34f79a37b8b0eac34348e5f"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"ca9b50de55ef869898c1fbe1d194face17303b1f","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        instance_name \u003d instance.name"},{"line_number":170,"context_line":"        self._revert_migration_files(instance_name)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        image_meta \u003d self._imagecache.get_image_details(context, instance)"},{"line_number":173,"context_line":"        vm_gen \u003d self._vmops.get_image_vm_generation(image_meta)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        self._block_dev_manager.validate_and_update_bdi("}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_41e26aa0","line":172,"updated":"2016-04-05 18:03:18.000000000","message":"This method does not exist.","commit_id":"911bc76e5e7dbebcb58ee9aa4be43f6e191fff11"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"2b816c7d2bd82599c7177738c832246344fc811b","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        self._revert_migration_files(instance_name)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        image_meta \u003d self._imagecache.get_image_details(context, instance)"},{"line_number":173,"context_line":"        vm_gen \u003d self._vmops.get_image_vm_generation(image_meta)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        self._block_dev_manager.validate_and_update_bdi("},{"line_number":176,"context_line":"            instance, image_meta, vm_gen, block_device_info)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_7bd00654","line":173,"updated":"2016-06-03 18:28:57.000000000","message":"receives 2 arguments.","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"cd77b5945edab49700c6ef541469b38366e71af2","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        self._revert_migration_files(instance_name)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        image_meta \u003d self._imagecache.get_image_details(context, instance)"},{"line_number":173,"context_line":"        vm_gen \u003d self._vmops.get_image_vm_generation(image_meta)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        self._block_dev_manager.validate_and_update_bdi("},{"line_number":176,"context_line":"            instance, image_meta, vm_gen, block_device_info)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_d6fd893c","line":173,"in_reply_to":"9abb7d3a_7bd00654","updated":"2016-06-03 18:31:32.000000000","message":"Done","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"2b816c7d2bd82599c7177738c832246344fc811b","unresolved":false,"context_lines":[{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        instance_name \u003d instance.name"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        vm_gen \u003d self._vmops.get_image_vm_generation(instance.uuid, image_meta)"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        self._block_dev_manager.validate_and_update_bdi("},{"line_number":275,"context_line":"            instance, image_meta, vm_gen, block_device_info)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_20b5af30","line":272,"updated":"2016-06-03 18:28:57.000000000","message":"it requires 3 params.","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"cd77b5945edab49700c6ef541469b38366e71af2","unresolved":false,"context_lines":[{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        instance_name \u003d instance.name"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        vm_gen \u003d self._vmops.get_image_vm_generation(instance.uuid, image_meta)"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        self._block_dev_manager.validate_and_update_bdi("},{"line_number":275,"context_line":"            instance, image_meta, vm_gen, block_device_info)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_7695bde2","line":272,"in_reply_to":"9abb7d3a_20b5af30","updated":"2016-06-03 18:31:32.000000000","message":"actually, just 2.","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"b50c6f04aa38493b3727b86d220f7ce01601450f","unresolved":false,"context_lines":[{"line_number":314,"context_line":""},{"line_number":315,"context_line":"            if not eph[\u0027path\u0027] and not resize_instance:"},{"line_number":316,"context_line":"                raise exception.DiskNotFound(location\u003deph[\u0027path\u0027])"},{"line_number":317,"context_line":"            if resize_instance and not eph[\u0027path\u0027] and new_eph_gb:"},{"line_number":318,"context_line":"                eph[\u0027format\u0027] \u003d ("},{"line_number":319,"context_line":"                    self._vhdutils.get_best_supported_vhd_format())"},{"line_number":320,"context_line":"                eph[\u0027path\u0027] \u003d self._pathutils.get_ephemeral_vhd_path("}],"source_content_type":"text/x-python","patch_set":21,"id":"3aaa91ec_2aadfae8","line":317,"updated":"2016-06-27 10:51:23.000000000","message":"This changes the previous behavior, as we are no longer resizing ephemeral disks.","commit_id":"315c8d07976d637731f5f9904649862e42a66a16"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"380121fbd612d5b315d9d18ea6251970d7148e4d","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        instance_name \u003d instance.name"},{"line_number":310,"context_line":"        new_eph_gb \u003d instance.get(\u0027ephemeral_gb\u0027, 0) * units.Gi"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        if len(ephemerals) \u003d\u003d 1:"},{"line_number":313,"context_line":"            # Resize only if there is one ephemeral. If there are more than 1,"},{"line_number":314,"context_line":"            # resizing them can be problematic."},{"line_number":315,"context_line":"            ephemerals[0][\u0027size\u0027] \u003d new_eph_gb"}],"source_content_type":"text/x-python","patch_set":23,"id":"1aa78d24_fed4f6bd","line":312,"updated":"2016-07-05 09:49:03.000000000","message":"Should we log a warning or info message otherwise?","commit_id":"e90a4b13a1a0c363cc99d9767491ce742a0ad22a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d05f6927b9e4776e384f837bbdf5c5bb7f33911c","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        instance_name \u003d instance.name"},{"line_number":310,"context_line":"        new_eph_gb \u003d instance.get(\u0027ephemeral_gb\u0027, 0) * units.Gi"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        if len(ephemerals) \u003d\u003d 1:"},{"line_number":313,"context_line":"            # Resize only if there is one ephemeral. If there are more than 1,"},{"line_number":314,"context_line":"            # resizing them can be problematic."},{"line_number":315,"context_line":"            ephemerals[0][\u0027size\u0027] \u003d new_eph_gb"}],"source_content_type":"text/x-python","patch_set":23,"id":"1aa78d24_763a869a","line":312,"in_reply_to":"1aa78d24_33e5b0a7","updated":"2016-07-06 22:25:05.000000000","message":"Looking at the libvirt code, this mirrors the (kinda dumb) behavior of libvirt in this case, so I think it\u0027s fine. A comment/todo here to mirror the one in libvirt might be good.","commit_id":"e90a4b13a1a0c363cc99d9767491ce742a0ad22a"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"268928494fa9caf6996d68b2f28f52bbefa61911","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        instance_name \u003d instance.name"},{"line_number":310,"context_line":"        new_eph_gb \u003d instance.get(\u0027ephemeral_gb\u0027, 0) * units.Gi"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        if len(ephemerals) \u003d\u003d 1:"},{"line_number":313,"context_line":"            # Resize only if there is one ephemeral. If there are more than 1,"},{"line_number":314,"context_line":"            # resizing them can be problematic."},{"line_number":315,"context_line":"            ephemerals[0][\u0027size\u0027] \u003d new_eph_gb"}],"source_content_type":"text/x-python","patch_set":23,"id":"1aa78d24_d511a75e","line":312,"in_reply_to":"1aa78d24_763a869a","updated":"2016-07-07 05:14:42.000000000","message":"Done","commit_id":"e90a4b13a1a0c363cc99d9767491ce742a0ad22a"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"58ca631c198082df242399495b2ed37f493f5a58","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        instance_name \u003d instance.name"},{"line_number":310,"context_line":"        new_eph_gb \u003d instance.get(\u0027ephemeral_gb\u0027, 0) * units.Gi"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        if len(ephemerals) \u003d\u003d 1:"},{"line_number":313,"context_line":"            # Resize only if there is one ephemeral. If there are more than 1,"},{"line_number":314,"context_line":"            # resizing them can be problematic."},{"line_number":315,"context_line":"            ephemerals[0][\u0027size\u0027] \u003d new_eph_gb"}],"source_content_type":"text/x-python","patch_set":23,"id":"1aa78d24_d370ac74","line":312,"in_reply_to":"1aa78d24_c6f75657","updated":"2016-07-06 21:57:49.000000000","message":"from what I understood in libvirt, it doesn\u0027t treat this case either. there\u0027s really no way to know how to resize multiple ephemerals. [1]\n\nFor example, you have a flavor with ephemeral size 3 gb, and you have eph1\u003d1gb and eph2\u003d2gb (you can\u0027t have total sum bigger than 3gb). Then you resize to a flavor with 4gb eph. What can you do? Which eph do you increase?\n\n[1] https://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L7140\n\nhonestly, instead of passing ephemerals on boot via --block_device mappings, they should be in flavor extra_specs, similarly to numa topology. This way, you will have full flexibility on how you\u0027re going to resize the ephemerals (add more, remove some, resize one of them, etc.). But that\u0027s beside the point of the spec.","commit_id":"e90a4b13a1a0c363cc99d9767491ce742a0ad22a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8a7f4f8c468528ccfbe752b7a8b44ae3477645cc","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        instance_name \u003d instance.name"},{"line_number":310,"context_line":"        new_eph_gb \u003d instance.get(\u0027ephemeral_gb\u0027, 0) * units.Gi"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        if len(ephemerals) \u003d\u003d 1:"},{"line_number":313,"context_line":"            # Resize only if there is one ephemeral. If there are more than 1,"},{"line_number":314,"context_line":"            # resizing them can be problematic."},{"line_number":315,"context_line":"            ephemerals[0][\u0027size\u0027] \u003d new_eph_gb"}],"source_content_type":"text/x-python","patch_set":23,"id":"1aa78d24_33e5b0a7","line":312,"in_reply_to":"1aa78d24_d370ac74","updated":"2016-07-06 22:11:47.000000000","message":"Yep, I\u0027m cool with not supporting it, I\u0027m just wondering if we should raise here to block it, like you do on L328. I guess that\u0027s more of an error condition where this is just excluding the others?\n\nSeems weird to call this _check_ephemeral_disks() and silently ignore the multiple ephemeral case when we know we can\u0027t support it.","commit_id":"e90a4b13a1a0c363cc99d9767491ce742a0ad22a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"25fe758c6bd53d888df742802fcbcc93c7f2fd49","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        instance_name \u003d instance.name"},{"line_number":310,"context_line":"        new_eph_gb \u003d instance.get(\u0027ephemeral_gb\u0027, 0) * units.Gi"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        if len(ephemerals) \u003d\u003d 1:"},{"line_number":313,"context_line":"            # Resize only if there is one ephemeral. If there are more than 1,"},{"line_number":314,"context_line":"            # resizing them can be problematic."},{"line_number":315,"context_line":"            ephemerals[0][\u0027size\u0027] \u003d new_eph_gb"}],"source_content_type":"text/x-python","patch_set":23,"id":"1aa78d24_c6f75657","line":312,"in_reply_to":"1aa78d24_fed4f6bd","updated":"2016-07-06 18:52:56.000000000","message":"And/or should we be failing? This method looks like it means \"assert everything is okay\".. Should we allow more than one ephemeral to continue?","commit_id":"e90a4b13a1a0c363cc99d9767491ce742a0ad22a"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"58ca631c198082df242399495b2ed37f493f5a58","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        instance_name \u003d instance.name"},{"line_number":310,"context_line":"        new_eph_gb \u003d instance.get(\u0027ephemeral_gb\u0027, 0) * units.Gi"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        if len(ephemerals) \u003d\u003d 1:"},{"line_number":313,"context_line":"            # Resize only if there is one ephemeral. If there are more than 1,"},{"line_number":314,"context_line":"            # resizing them can be problematic."},{"line_number":315,"context_line":"            ephemerals[0][\u0027size\u0027] \u003d new_eph_gb"}],"source_content_type":"text/x-python","patch_set":23,"id":"1aa78d24_61a4eba5","line":312,"in_reply_to":"1aa78d24_fed4f6bd","updated":"2016-07-06 21:57:49.000000000","message":"Done","commit_id":"e90a4b13a1a0c363cc99d9767491ce742a0ad22a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"07a7abfad1853ebfcf3669699304b69a5cdee7df","unresolved":false,"context_lines":[{"line_number":319,"context_line":"            # New ephemeral size is different from the original ephemeral size"},{"line_number":320,"context_line":"            # and there are multiple ephemerals."},{"line_number":321,"context_line":"            LOG.warn(_LW(\"Cannot resize multiple ephemeral disks for \""},{"line_number":322,"context_line":"                         \"instance.\"), instance\u003dinstance)"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"        for index, eph in enumerate(ephemerals):"},{"line_number":325,"context_line":"            eph_name \u003d \"eph%s\" % index"}],"source_content_type":"text/x-python","patch_set":25,"id":"1aa78d24_7141350b","line":322,"updated":"2016-07-11 16:24:53.000000000","message":"Feels like this should throw an exception, but I guess consistency wins.","commit_id":"76c6359ed44702279ba4bb9d2542d3cc9772c4f2"}],"nova/virt/hyperv/vmops.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"5b4ca6e7932f5b7c38c6a8d58efafb4ae791d436","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        self._vif_driver \u003d None"},{"line_number":140,"context_line":"        self._load_vif_driver_class()"},{"line_number":141,"context_line":"        self._vm_log_writers \u003d {}"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def _load_vif_driver_class(self):"},{"line_number":145,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_5cc5053a","line":142,"updated":"2015-11-17 11:24:58.000000000","message":"unrelated change.","commit_id":"f0b63b443c9edf8ae34f79a37b8b0eac34348e5f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"5b4ca6e7932f5b7c38c6a8d58efafb4ae791d436","unresolved":false,"context_lines":[{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        self._block_device_manager.validate_and_update_bdi("},{"line_number":296,"context_line":"            instance, image_meta, vm_gen, block_device_info)"},{"line_number":297,"context_line":"        root_device \u003d block_device_info[\u0027root_disk\u0027]"},{"line_number":298,"context_line":"        self._create_root_device(context, instance, root_device, vm_gen)"},{"line_number":299,"context_line":"        self._create_ephemerals(instance, block_device_info[\u0027ephemerals\u0027])"},{"line_number":300,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_3cc041e0","line":297,"updated":"2015-11-17 11:24:58.000000000","message":"wondering if block_device_info is not an object by now...","commit_id":"f0b63b443c9edf8ae34f79a37b8b0eac34348e5f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"5b4ca6e7932f5b7c38c6a8d58efafb4ae791d436","unresolved":false,"context_lines":[{"line_number":337,"context_line":"        self._attach_ephemerals(instance_name, block_device_info[\u0027ephemerals\u0027])"},{"line_number":338,"context_line":"        self._volumeops.attach_volumes("},{"line_number":339,"context_line":"            block_device_info[\u0027block_device_mapping\u0027], instance_name)"},{"line_number":340,"context_line":"        "},{"line_number":341,"context_line":"        for vif in network_info:"},{"line_number":342,"context_line":"            LOG.debug(\u0027Creating nic for instance\u0027, instance\u003dinstance)"},{"line_number":343,"context_line":"            self._vmutils.create_nic(instance_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_bcfe7136","line":340,"updated":"2015-11-17 11:24:58.000000000","message":"pep8 is going to be sad about this. :(","commit_id":"f0b63b443c9edf8ae34f79a37b8b0eac34348e5f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"5b4ca6e7932f5b7c38c6a8d58efafb4ae791d436","unresolved":false,"context_lines":[{"line_number":378,"context_line":"                                           ctrl_disk_addr, drive_type)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    def get_image_vm_generation(self, image_meta):"},{"line_number":381,"context_line":"        image_props \u003d image_meta[\u0027properties\u0027]"},{"line_number":382,"context_line":"        default_vm_gen \u003d self._hostutils.get_default_vm_generation()"},{"line_number":383,"context_line":"        image_prop_vm \u003d image_props.get(constants.IMAGE_PROP_VM_GEN,"},{"line_number":384,"context_line":"                                        default_vm_gen)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_7c4569b1","line":381,"updated":"2015-11-17 11:24:58.000000000","message":"image_meta is an object. so you get the properties as follows:\n\n    image_meta.properties.get(...)\n\nsee how it was before this change.","commit_id":"f0b63b443c9edf8ae34f79a37b8b0eac34348e5f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"5b4ca6e7932f5b7c38c6a8d58efafb4ae791d436","unresolved":false,"context_lines":[{"line_number":381,"context_line":"        image_props \u003d image_meta[\u0027properties\u0027]"},{"line_number":382,"context_line":"        default_vm_gen \u003d self._hostutils.get_default_vm_generation()"},{"line_number":383,"context_line":"        image_prop_vm \u003d image_props.get(constants.IMAGE_PROP_VM_GEN,"},{"line_number":384,"context_line":"                                        default_vm_gen)"},{"line_number":385,"context_line":"        if image_prop_vm not in self._hostutils.get_supported_vm_types():"},{"line_number":386,"context_line":"            LOG.error(_LE(\u0027Requested VM Generation %s is not supported on \u0027"},{"line_number":387,"context_line":"                         \u0027 this OS.\u0027), image_prop_vm)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_fc5dd979","line":384,"updated":"2015-11-17 11:24:58.000000000","message":"unrelated change.","commit_id":"f0b63b443c9edf8ae34f79a37b8b0eac34348e5f"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"b49429252a22c74fe4d5070bff2bd9a9cff80a2d","unresolved":false,"context_lines":[{"line_number":238,"context_line":"    def _create_ephemerals(self, instance, ephemerals):"},{"line_number":239,"context_line":"        for index, eph in enumerate(ephemerals):"},{"line_number":240,"context_line":"            eph[\u0027format\u0027] \u003d self._vhdutils.get_best_supported_vhd_format()"},{"line_number":241,"context_line":"            eph_name \u003d \"eph%s\" % index"},{"line_number":242,"context_line":"            eph[\u0027path\u0027] \u003d self._pathutils.get_ephemeral_vhd_path("},{"line_number":243,"context_line":"                instance.name, eph[\u0027format\u0027], eph_name)"},{"line_number":244,"context_line":"            self._create_ephemeral_disk(instance.name, eph)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_2076f36f","line":241,"updated":"2016-06-01 11:36:02.000000000","message":"Maybe it would be easier/safer to just pass the ephemeral disk index to pathutils instead of building the file name here.\n\nThe same thing is done in migrationops.","commit_id":"65866e925dfb20b57432396fdc896c0279179dda"}]}
