)]}'
{"nova/exception.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"80638353924b4faedf81d3b480de5caf6c136ec8","unresolved":false,"context_lines":[{"line_number":482,"context_line":"    msg_fmt \u003d _(\"Compute service of %(host)s is still in use.\")"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"class ComputeDriverException(NovaException):"},{"line_number":486,"context_line":"    \"\"\"Encapsulates an exception raised by a Nova Compute Driver."},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"    Merely instantiating this exception records the current exception"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba8a016a_7b84130a","line":485,"updated":"2015-11-19 11:24:51.000000000","message":"this seems extremely generic, which means I\u0027m not sure what we can do with this in higher level logic.\n\nWe\u0027ve tried to make our Exceptions specific enough that it\u0027s clear how to map them into other things (like return codes to the user). This seems way too broad for that.","commit_id":"121dcd6ac1dd1500b01e539e76d2824a49883f23"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"0beb92e314991c768ae1a27a5eecd4fbcb7f4a2d","unresolved":false,"context_lines":[{"line_number":482,"context_line":"    msg_fmt \u003d _(\"Compute service of %(host)s is still in use.\")"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"class ComputeDriverException(NovaException):"},{"line_number":486,"context_line":"    \"\"\"Encapsulates an exception raised by a Nova Compute Driver."},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"    Merely instantiating this exception records the current exception"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba8a016a_db8ac263","line":485,"in_reply_to":"ba8a016a_7b84130a","updated":"2015-11-19 18:27:12.000000000","message":"As we\u0027ve discussed, I\u0027ve uploaded a patch (see the patch this is on top of) which specializes any exception raised in the HyperVDriver. Those exceptions can be programatically determined, which is why I could do it.\n\nNow, the purpose of this Exception is to wrap any unexpected / undeterminable / unknown Hyper-V specific error the driver might raise. This way, all Hyper-V specific exceptions are wrapped in a NovaException, rather than an os-win library specific one.\n\nNow, the alternative would have been to raise a generic NovaException instead, but this is a biiit more specific, plus, it wraps the driver exception.","commit_id":"121dcd6ac1dd1500b01e539e76d2824a49883f23"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"d00683ca8bef8dc15865964eb612663c32de361f","unresolved":false,"context_lines":[{"line_number":482,"context_line":"    msg_fmt \u003d _(\"Compute service of %(host)s is still in use.\")"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"class ComputeDriverException(NovaException):"},{"line_number":486,"context_line":"    \"\"\"Encapsulates an exception raised by a Nova Compute Driver."},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"    Merely instantiating this exception records the current exception"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba8a016a_b444ac49","line":485,"in_reply_to":"ba8a016a_db8ac263","updated":"2015-11-19 19:04:55.000000000","message":"\"Needed By\" actually. I\u0027ve messed up the Change-Ids...","commit_id":"121dcd6ac1dd1500b01e539e76d2824a49883f23"},{"author":{"_account_id":10210,"name":"Chinmaya Bharadwaj","email":"chinmaya-bharadwaj.a@hpe.com","username":"chinmay"},"change_message_id":"4687dfec0bcabf7d84f1e547d20c06dd9539598c","unresolved":false,"context_lines":[{"line_number":502,"context_line":""},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"class HypervisorTooOld(Invalid):"},{"line_number":505,"context_line":"    msg_fmt \u003d _(\"This compute node\u0027s hypervisor version is not supported.\")"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"class DestinationHypervisorTooOld(Invalid):"}],"source_content_type":"text/x-python","patch_set":38,"id":"ba8a016a_5df8957c","line":505,"updated":"2015-11-23 14:16:01.000000000","message":"It would be better to mention the versions supported. \nsomething like \"HyperV version is older than the supported version %(supported_version)s\", \njust like the class ServiceTooOld(Invalid):  ?\n\nor \n\ncant we re-use the DestinationHypervisorTooOld  ?","commit_id":"d2831847ff212f61ce85b96db20435d21f492525"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"b73b049de2c956d39fd273f88eaf265f520c868f","unresolved":false,"context_lines":[{"line_number":502,"context_line":""},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"class HypervisorTooOld(Invalid):"},{"line_number":505,"context_line":"    msg_fmt \u003d _(\"This compute node\u0027s hypervisor version is not supported.\")"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"class DestinationHypervisorTooOld(Invalid):"}],"source_content_type":"text/x-python","patch_set":38,"id":"ba8a016a_ab50460b","line":505,"in_reply_to":"ba8a016a_5df8957c","updated":"2015-11-23 18:39:28.000000000","message":"Sure, makes sense.\n\nAnd no, I don\u0027t think DestinationHypervisorTooOld fits, it refers specifically to live-migration: when trying to live-migrate to an older node.","commit_id":"d2831847ff212f61ce85b96db20435d21f492525"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"1961d217de8257c0bd7a916f7ecb92ffd71ad350","unresolved":false,"context_lines":[{"line_number":502,"context_line":""},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"class HypervisorTooOld(Invalid):"},{"line_number":505,"context_line":"    msg_fmt \u003d _(\"This compute node\u0027s hypervisor is older than the supported \""},{"line_number":506,"context_line":"                \"version: %(version)s.\")"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"9a8ffd7b_075e81e9","line":505,"updated":"2015-11-24 14:31:46.000000000","message":"Maybe this should be rephrased as \"is older than the minimum supported version\" because as it is now, it suggests that only one specific version is supported.","commit_id":"3238768d25586f5101f767fc3abaf0758758a534"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"136e39d2972a4d16fed734c3ffd855f7779c493d","unresolved":false,"context_lines":[{"line_number":502,"context_line":""},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"class HypervisorTooOld(Invalid):"},{"line_number":505,"context_line":"    msg_fmt \u003d _(\"This compute node\u0027s hypervisor is older than the supported \""},{"line_number":506,"context_line":"                \"version: %(version)s.\")"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"9a8ffd7b_a71d3511","line":505,"in_reply_to":"9a8ffd7b_075e81e9","updated":"2015-11-24 14:36:04.000000000","message":"Done","commit_id":"3238768d25586f5101f767fc3abaf0758758a534"}],"nova/tests/unit/virt/hyperv/test_imagecache.py":[{"author":{"_account_id":10210,"name":"Chinmaya Bharadwaj","email":"chinmaya-bharadwaj.a@hpe.com","username":"chinmay"},"change_message_id":"4687dfec0bcabf7d84f1e547d20c06dd9539598c","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        self.assertEqual(self.instance.root_gb, ret_val)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @mock.patch.object(imagecache.ImageCache, \u0027_get_root_vhd_size_gb\u0027)"},{"line_number":84,"context_line":"    def test_resize_and_cache_vhd_smaller(self, mock_get_vhd_size_gb):"},{"line_number":85,"context_line":"        self.imagecache._vhdutils.get_vhd_info.return_value \u003d {"},{"line_number":86,"context_line":"            \u0027MaxInternalSize\u0027: (self.FAKE_VHD_SIZE_GB + 1) * units.Gi"},{"line_number":87,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":38,"id":"ba8a016a_29a8f376","line":84,"updated":"2015-11-23 14:16:01.000000000","message":"\"if root_vhd_internal_size \u003e vhd_size\", case needs to be covered to right?","commit_id":"d2831847ff212f61ce85b96db20435d21f492525"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"b73b049de2c956d39fd273f88eaf265f520c868f","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        self.assertEqual(self.instance.root_gb, ret_val)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @mock.patch.object(imagecache.ImageCache, \u0027_get_root_vhd_size_gb\u0027)"},{"line_number":84,"context_line":"    def test_resize_and_cache_vhd_smaller(self, mock_get_vhd_size_gb):"},{"line_number":85,"context_line":"        self.imagecache._vhdutils.get_vhd_info.return_value \u003d {"},{"line_number":86,"context_line":"            \u0027MaxInternalSize\u0027: (self.FAKE_VHD_SIZE_GB + 1) * units.Gi"},{"line_number":87,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":38,"id":"ba8a016a_197d2bb1","line":84,"in_reply_to":"ba8a016a_29a8f376","updated":"2015-11-23 18:39:28.000000000","message":"true. But I\u0027m not covering that case in this patch since it is unrelated. I\u0027m only covering changes made in this patch, while trying to keep the changes to a minimum, so it is easier to review and easier to approve, since this is a blocker for every other blueprint we have.\n\nthat being said, it is going to be covered in a future patch.","commit_id":"d2831847ff212f61ce85b96db20435d21f492525"},{"author":{"_account_id":10210,"name":"Chinmaya Bharadwaj","email":"chinmaya-bharadwaj.a@hpe.com","username":"chinmay"},"change_message_id":"4687dfec0bcabf7d84f1e547d20c06dd9539598c","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        }"},{"line_number":88,"context_line":"        mock_get_vhd_size_gb.return_value \u003d self.FAKE_VHD_SIZE_GB"},{"line_number":89,"context_line":"        mock_internal_vhd_size \u003d ("},{"line_number":90,"context_line":"            self.imagecache._vhdutils.get_internal_vhd_size_by_file_size)"},{"line_number":91,"context_line":"        mock_internal_vhd_size.return_value \u003d self.FAKE_VHD_SIZE_GB * units.Gi"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        self.assertRaises(exception.FlavorDiskSmallerThanImage,"}],"source_content_type":"text/x-python","patch_set":38,"id":"ba8a016a_49c45791","line":90,"updated":"2015-11-23 14:16:01.000000000","message":"@mock.patch.object(self.imagecache._vhdutils, \"get_internal_vhd_size_by_file_size\")\nwill be better, so that it will be applicable to just this method.","commit_id":"d2831847ff212f61ce85b96db20435d21f492525"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"b73b049de2c956d39fd273f88eaf265f520c868f","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        }"},{"line_number":88,"context_line":"        mock_get_vhd_size_gb.return_value \u003d self.FAKE_VHD_SIZE_GB"},{"line_number":89,"context_line":"        mock_internal_vhd_size \u003d ("},{"line_number":90,"context_line":"            self.imagecache._vhdutils.get_internal_vhd_size_by_file_size)"},{"line_number":91,"context_line":"        mock_internal_vhd_size.return_value \u003d self.FAKE_VHD_SIZE_GB * units.Gi"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        self.assertRaises(exception.FlavorDiskSmallerThanImage,"}],"source_content_type":"text/x-python","patch_set":38,"id":"ba8a016a_b9189f85","line":90,"in_reply_to":"ba8a016a_49c45791","updated":"2015-11-23 18:39:28.000000000","message":"not really sure what you mean here. self.imagecache._vhdutils is already mocked, while mock_internal_vhd_size is useful below, in the assertion.","commit_id":"d2831847ff212f61ce85b96db20435d21f492525"},{"author":{"_account_id":10210,"name":"Chinmaya Bharadwaj","email":"chinmaya-bharadwaj.a@hpe.com","username":"chinmay"},"change_message_id":"f4f1cb95a6dfb799e8c4214e96ae0d4461ad8d08","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        }"},{"line_number":88,"context_line":"        mock_get_vhd_size_gb.return_value \u003d self.FAKE_VHD_SIZE_GB"},{"line_number":89,"context_line":"        mock_internal_vhd_size \u003d ("},{"line_number":90,"context_line":"            self.imagecache._vhdutils.get_internal_vhd_size_by_file_size)"},{"line_number":91,"context_line":"        mock_internal_vhd_size.return_value \u003d self.FAKE_VHD_SIZE_GB * units.Gi"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        self.assertRaises(exception.FlavorDiskSmallerThanImage,"}],"source_content_type":"text/x-python","patch_set":38,"id":"ba8a016a_ccdb4eec","line":90,"in_reply_to":"ba8a016a_b9189f85","updated":"2015-11-24 06:37:55.000000000","message":"ah, i see. ignore my comment.","commit_id":"d2831847ff212f61ce85b96db20435d21f492525"}],"nova/virt/hyperv/driver.py":[{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"ea13b1bb6e1843304b63a24aa25af20ceab6c3a2","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from nova.virt import driver"},{"line_number":28,"context_line":"from nova.virt.hyperv import eventhandler"},{"line_number":29,"context_line":"from nova.virt.hyperv import hostops"},{"line_number":30,"context_line":"from nova.virt.hyperv import hostutils"},{"line_number":31,"context_line":"from nova.virt.hyperv import livemigrationops"},{"line_number":32,"context_line":"from nova.virt.hyperv import migrationops"},{"line_number":33,"context_line":"from nova.virt.hyperv import rdpconsoleops"}],"source_content_type":"text/x-python","patch_set":20,"id":"da85f559_f8193c7a","line":30,"updated":"2015-11-10 13:05:39.000000000","message":"The hostutils import must be removed.","commit_id":"2e78bb3d88c7e306d784d88e3657a260777ecccc"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"4d6cdbfbdb35fb939c2a46d5b86047827f94a78e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from nova.virt import driver"},{"line_number":28,"context_line":"from nova.virt.hyperv import eventhandler"},{"line_number":29,"context_line":"from nova.virt.hyperv import hostops"},{"line_number":30,"context_line":"from nova.virt.hyperv import hostutils"},{"line_number":31,"context_line":"from nova.virt.hyperv import livemigrationops"},{"line_number":32,"context_line":"from nova.virt.hyperv import migrationops"},{"line_number":33,"context_line":"from nova.virt.hyperv import rdpconsoleops"}],"source_content_type":"text/x-python","patch_set":20,"id":"da85f559_87d44847","line":30,"in_reply_to":"da85f559_f8193c7a","updated":"2015-11-10 14:48:52.000000000","message":"Done","commit_id":"2e78bb3d88c7e306d784d88e3657a260777ecccc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"314ea8999b45bac1a65bf92ec9234ca01350efda","unresolved":false,"context_lines":[{"line_number":40,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def convert_exceptions(function, raised_exception, *expected_exceptions):"},{"line_number":44,"context_line":"    @functools.wraps(function)"},{"line_number":45,"context_line":"    def wrapper(*args, **kwargs):"},{"line_number":46,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":23,"id":"da85f559_a07c92b5","line":43,"updated":"2015-11-11 18:00:02.000000000","message":"expected_exceptions isn\u0027t used.","commit_id":"70bbeafc4466ccc7e1554e8e14196f504e77c2c9"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"25a499af56e1b06b9a3c5a1f1062c3ba5d5d8f9f","unresolved":false,"context_lines":[{"line_number":40,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def convert_exceptions(function, raised_exception, *expected_exceptions):"},{"line_number":44,"context_line":"    @functools.wraps(function)"},{"line_number":45,"context_line":"    def wrapper(*args, **kwargs):"},{"line_number":46,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":23,"id":"da85f559_fc3f87b1","line":43,"in_reply_to":"da85f559_a07c92b5","updated":"2015-11-12 08:08:50.000000000","message":"Done","commit_id":"70bbeafc4466ccc7e1554e8e14196f504e77c2c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"314ea8999b45bac1a65bf92ec9234ca01350efda","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        try:"},{"line_number":47,"context_line":"            return function(*args, **kwargs)"},{"line_number":48,"context_line":"        except exceptions.OSWinException as ex:"},{"line_number":49,"context_line":"            LOG.error(_LE(\"Expected exception encountered. Reraising a \""},{"line_number":50,"context_line":"                          \"Nova exception.\"))"},{"line_number":51,"context_line":"            raise raised_exception(ex.message)"},{"line_number":52,"context_line":"    return wrapper"}],"source_content_type":"text/x-python","patch_set":23,"id":"da85f559_a02a528e","line":49,"updated":"2015-11-11 18:00:02.000000000","message":"We should probably avoid logging an error for every OSWin exception ever raised.  I\u0027m assuming the hyper-v driver code can expect some of them and handle before converting and raising a more specific NovaException.\n\nI guess the point if this is just a catch all though.","commit_id":"70bbeafc4466ccc7e1554e8e14196f504e77c2c9"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"25a499af56e1b06b9a3c5a1f1062c3ba5d5d8f9f","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        try:"},{"line_number":47,"context_line":"            return function(*args, **kwargs)"},{"line_number":48,"context_line":"        except exceptions.OSWinException as ex:"},{"line_number":49,"context_line":"            LOG.error(_LE(\"Expected exception encountered. Reraising a \""},{"line_number":50,"context_line":"                          \"Nova exception.\"))"},{"line_number":51,"context_line":"            raise raised_exception(ex.message)"},{"line_number":52,"context_line":"    return wrapper"}],"source_content_type":"text/x-python","patch_set":23,"id":"da85f559_9c33dbf5","line":49,"in_reply_to":"da85f559_a02a528e","updated":"2015-11-12 08:08:50.000000000","message":"Done","commit_id":"70bbeafc4466ccc7e1554e8e14196f504e77c2c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"314ea8999b45bac1a65bf92ec9234ca01350efda","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        except exceptions.OSWinException as ex:"},{"line_number":49,"context_line":"            LOG.error(_LE(\"Expected exception encountered. Reraising a \""},{"line_number":50,"context_line":"                          \"Nova exception.\"))"},{"line_number":51,"context_line":"            raise raised_exception(ex.message)"},{"line_number":52,"context_line":"    return wrapper"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"da85f559_20474278","line":51,"updated":"2015-11-11 18:00:02.000000000","message":"Use six.text_type(ex)\n\nDo the OSWinExceptions have status codes?","commit_id":"70bbeafc4466ccc7e1554e8e14196f504e77c2c9"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"25a499af56e1b06b9a3c5a1f1062c3ba5d5d8f9f","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        except exceptions.OSWinException as ex:"},{"line_number":49,"context_line":"            LOG.error(_LE(\"Expected exception encountered. Reraising a \""},{"line_number":50,"context_line":"                          \"Nova exception.\"))"},{"line_number":51,"context_line":"            raise raised_exception(ex.message)"},{"line_number":52,"context_line":"    return wrapper"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"da85f559_dc3de3c4","line":51,"in_reply_to":"da85f559_20474278","updated":"2015-11-12 08:08:50.000000000","message":"Done.\n\nNot all of them. There are some exceptions that do not have any status code. For example, HyperVVMNotFoundException can be raised if someone tries to do an operation (start, stop, attach interface, attach volume, etc. etc.) on a VM that does not exist.","commit_id":"70bbeafc4466ccc7e1554e8e14196f504e77c2c9"}],"nova/virt/hyperv/imagecache.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9e25297b59d17e4de494b6bf5d1ded76ee0847c6","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                    vhd_path, root_vhd_size))"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        if root_vhd_internal_size \u003c vhd_size:"},{"line_number":60,"context_line":"            raise exceptions.HyperVException("},{"line_number":61,"context_line":"                _(\"Cannot resize the image to a size smaller than the VHD \""},{"line_number":62,"context_line":"                  \"max. internal size: %(vhd_size)s. Requested disk size: \""},{"line_number":63,"context_line":"                  \"%(root_vhd_size)s\") %"}],"source_content_type":"text/x-python","patch_set":21,"id":"da85f559_dc69c2bf","line":60,"updated":"2015-11-10 15:48:17.000000000","message":"Nova should be handling exceptions from other libraries and translating them to NovaExceptions which go back up the stack.  The compute manager doesn\u0027t know anything about os-win exceptions so we\u0027re likely to leak issues here.","commit_id":"f784566498db650028b89aa988a1550313e645e6"}],"nova/virt/hyperv/migrationops.py":[{"author":{"_account_id":10210,"name":"Chinmaya Bharadwaj","email":"chinmaya-bharadwaj.a@hpe.com","username":"chinmay"},"change_message_id":"4687dfec0bcabf7d84f1e547d20c06dd9539598c","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        if new_root_gb \u003c curr_root_gb:"},{"line_number":107,"context_line":"            raise exception.InstanceFaultRollback("},{"line_number":108,"context_line":"                exception.CannotResizeDisk("},{"line_number":109,"context_line":"                    reason\u003d_(\"Cannot resize the root disk to a smaller size. \""},{"line_number":110,"context_line":"                             \"Current size: %(curr_root_gb)s GB. Requested \""},{"line_number":111,"context_line":"                             \"size: %(new_root_gb)s GB.\") % {"}],"source_content_type":"text/x-python","patch_set":38,"id":"ba8a016a_69ab5b1f","line":108,"updated":"2015-11-23 14:16:01.000000000","message":"i think we can reuse \"ResizeError\" and give the reason.","commit_id":"d2831847ff212f61ce85b96db20435d21f492525"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"e20692957acd669d039ae487e5f29762e0131750","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        if new_root_gb \u003c curr_root_gb:"},{"line_number":107,"context_line":"            raise exception.InstanceFaultRollback("},{"line_number":108,"context_line":"                exception.CannotResizeDisk("},{"line_number":109,"context_line":"                    reason\u003d_(\"Cannot resize the root disk to a smaller size. \""},{"line_number":110,"context_line":"                             \"Current size: %(curr_root_gb)s GB. Requested \""},{"line_number":111,"context_line":"                             \"size: %(new_root_gb)s GB.\") % {"}],"source_content_type":"text/x-python","patch_set":38,"id":"9a8ffd7b_0f0305ba","line":108,"in_reply_to":"ba8a016a_19a9ab7b","updated":"2015-11-24 11:05:33.000000000","message":"Actually, CannotResizeDisk already exists, I see no reason not to use that instead, it is a bit more specific than ResizeError.","commit_id":"d2831847ff212f61ce85b96db20435d21f492525"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"b73b049de2c956d39fd273f88eaf265f520c868f","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        if new_root_gb \u003c curr_root_gb:"},{"line_number":107,"context_line":"            raise exception.InstanceFaultRollback("},{"line_number":108,"context_line":"                exception.CannotResizeDisk("},{"line_number":109,"context_line":"                    reason\u003d_(\"Cannot resize the root disk to a smaller size. \""},{"line_number":110,"context_line":"                             \"Current size: %(curr_root_gb)s GB. Requested \""},{"line_number":111,"context_line":"                             \"size: %(new_root_gb)s GB.\") % {"}],"source_content_type":"text/x-python","patch_set":38,"id":"ba8a016a_19a9ab7b","line":108,"in_reply_to":"ba8a016a_69ab5b1f","updated":"2015-11-23 18:39:28.000000000","message":"Done","commit_id":"d2831847ff212f61ce85b96db20435d21f492525"},{"author":{"_account_id":10210,"name":"Chinmaya Bharadwaj","email":"chinmaya-bharadwaj.a@hpe.com","username":"chinmay"},"change_message_id":"4687dfec0bcabf7d84f1e547d20c06dd9539598c","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    def _check_resize_vhd(self, vhd_path, vhd_info, new_size):"},{"line_number":218,"context_line":"        curr_size \u003d vhd_info[\u0027MaxInternalSize\u0027]"},{"line_number":219,"context_line":"        if new_size \u003c curr_size:"},{"line_number":220,"context_line":"            raise exception.CannotResizeDisk("},{"line_number":221,"context_line":"                reason\u003d_(\"Cannot resize the root disk to a smaller size. \""},{"line_number":222,"context_line":"                         \"Current size: %(curr_root_gb)s GB. Requested \""},{"line_number":223,"context_line":"                         \"size: %(new_root_gb)s GB.\") % {"}],"source_content_type":"text/x-python","patch_set":38,"id":"ba8a016a_e9650b1d","line":220,"updated":"2015-11-23 14:16:01.000000000","message":"same here","commit_id":"d2831847ff212f61ce85b96db20435d21f492525"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"b73b049de2c956d39fd273f88eaf265f520c868f","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    def _check_resize_vhd(self, vhd_path, vhd_info, new_size):"},{"line_number":218,"context_line":"        curr_size \u003d vhd_info[\u0027MaxInternalSize\u0027]"},{"line_number":219,"context_line":"        if new_size \u003c curr_size:"},{"line_number":220,"context_line":"            raise exception.CannotResizeDisk("},{"line_number":221,"context_line":"                reason\u003d_(\"Cannot resize the root disk to a smaller size. \""},{"line_number":222,"context_line":"                         \"Current size: %(curr_root_gb)s GB. Requested \""},{"line_number":223,"context_line":"                         \"size: %(new_root_gb)s GB.\") % {"}],"source_content_type":"text/x-python","patch_set":38,"id":"ba8a016a_79e797e4","line":220,"in_reply_to":"ba8a016a_e9650b1d","updated":"2015-11-23 18:39:28.000000000","message":"Done","commit_id":"d2831847ff212f61ce85b96db20435d21f492525"}],"nova/virt/hyperv/pathutils.py":[{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"14bbc11b390de7cbd60232f5c1e1b748afc18afe","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import os"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from os_win import exceptions"},{"line_number":19,"context_line":"from os_win.utils import pathutils as pathutils"},{"line_number":20,"context_line":"from oslo_config import cfg"},{"line_number":21,"context_line":"from oslo_log import log as logging"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"7a2fa921_21a0fa9e","line":19,"updated":"2015-10-07 08:30:13.000000000","message":"Any reason for \"import pathutils as pathutils\"?","commit_id":"e379c69459cd1fed132a7a57c717737a06b406ca"},{"author":{"_account_id":2067,"name":"sagar-r-nikam","email":"nikam@hp.com","username":"sagar-r-nikam"},"change_message_id":"8495e343fa1b02640832591bdf3354a52565fecc","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from nova import utils"},{"line_number":30,"context_line":"from nova.virt.hyperv import constants"},{"line_number":31,"context_line":"from nova.virt.hyperv import vmutils"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"hyperv_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":37,"id":"ba8a016a_4271b7df","line":32,"updated":"2015-11-21 13:03:42.000000000","message":"Implementing the below mentioned comments, then the import vmutils can be removed","commit_id":"ca9621d672c03ba7394737bf1ee6f35de72778a0"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"2e55bed897b6876baf157a95d4cc138ee4416a7a","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from nova import utils"},{"line_number":30,"context_line":"from nova.virt.hyperv import constants"},{"line_number":31,"context_line":"from nova.virt.hyperv import vmutils"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"hyperv_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":37,"id":"ba8a016a_05ee4fec","line":32,"in_reply_to":"ba8a016a_4271b7df","updated":"2015-11-22 15:27:25.000000000","message":"Done in the next commit: https://review.openstack.org/#/c/247729/5","commit_id":"ca9621d672c03ba7394737bf1ee6f35de72778a0"},{"author":{"_account_id":2067,"name":"sagar-r-nikam","email":"nikam@hp.com","username":"sagar-r-nikam"},"change_message_id":"8495e343fa1b02640832591bdf3354a52565fecc","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        if self._smb_conn_attr:"},{"line_number":60,"context_line":"            return self._smb_conn_attr"},{"line_number":61,"context_line":"        raise vmutils.HyperVException(_(\"The SMB WMI namespace is not \""},{"line_number":62,"context_line":"                                        \"available on this OS version.\"))"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _set_smb_conn(self):"},{"line_number":65,"context_line":"        # The following namespace is not available prior to Windows"}],"source_content_type":"text/x-python","patch_set":37,"id":"ba8a016a_c2a60753","line":62,"updated":"2015-11-21 13:03:42.000000000","message":"Can this be removed","commit_id":"ca9621d672c03ba7394737bf1ee6f35de72778a0"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"2e55bed897b6876baf157a95d4cc138ee4416a7a","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        if self._smb_conn_attr:"},{"line_number":60,"context_line":"            return self._smb_conn_attr"},{"line_number":61,"context_line":"        raise vmutils.HyperVException(_(\"The SMB WMI namespace is not \""},{"line_number":62,"context_line":"                                        \"available on this OS version.\"))"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _set_smb_conn(self):"},{"line_number":65,"context_line":"        # The following namespace is not available prior to Windows"}],"source_content_type":"text/x-python","patch_set":37,"id":"ba8a016a_25cef383","line":62,"in_reply_to":"ba8a016a_c2a60753","updated":"2015-11-22 15:27:25.000000000","message":"Done in the next commit: https://review.openstack.org/#/c/247729/5","commit_id":"ca9621d672c03ba7394737bf1ee6f35de72778a0"},{"author":{"_account_id":2067,"name":"sagar-r-nikam","email":"nikam@hp.com","username":"sagar-r-nikam"},"change_message_id":"8495e343fa1b02640832591bdf3354a52565fecc","unresolved":false,"context_lines":[{"line_number":264,"context_line":"                \u0027Unable to mount SMBFS share: %(smbfs_share)s \u0027"},{"line_number":265,"context_line":"                \u0027WMI exception: %(wmi_exc)s\u0027) % {\u0027smbfs_share\u0027: smbfs_share,"},{"line_number":266,"context_line":"                                                 \u0027wmi_exc\u0027: exc})"},{"line_number":267,"context_line":"            raise vmutils.HyperVException(err_msg)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def unmount_smb_share(self, smbfs_share, force\u003dFalse):"},{"line_number":270,"context_line":"        mappings \u003d self._smb_conn.Msft_SmbMapping(RemotePath\u003dsmbfs_share)"}],"source_content_type":"text/x-python","patch_set":37,"id":"ba8a016a_82679f24","line":267,"updated":"2015-11-21 13:03:42.000000000","message":"same as above","commit_id":"ca9621d672c03ba7394737bf1ee6f35de72778a0"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"2e55bed897b6876baf157a95d4cc138ee4416a7a","unresolved":false,"context_lines":[{"line_number":264,"context_line":"                \u0027Unable to mount SMBFS share: %(smbfs_share)s \u0027"},{"line_number":265,"context_line":"                \u0027WMI exception: %(wmi_exc)s\u0027) % {\u0027smbfs_share\u0027: smbfs_share,"},{"line_number":266,"context_line":"                                                 \u0027wmi_exc\u0027: exc})"},{"line_number":267,"context_line":"            raise vmutils.HyperVException(err_msg)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def unmount_smb_share(self, smbfs_share, force\u003dFalse):"},{"line_number":270,"context_line":"        mappings \u003d self._smb_conn.Msft_SmbMapping(RemotePath\u003dsmbfs_share)"}],"source_content_type":"text/x-python","patch_set":37,"id":"ba8a016a_85b8ffe6","line":267,"in_reply_to":"ba8a016a_82679f24","updated":"2015-11-22 15:27:25.000000000","message":"Done in the next commit: https://review.openstack.org/#/c/247729/5","commit_id":"ca9621d672c03ba7394737bf1ee6f35de72778a0"},{"author":{"_account_id":2067,"name":"sagar-r-nikam","email":"nikam@hp.com","username":"sagar-r-nikam"},"change_message_id":"8495e343fa1b02640832591bdf3354a52565fecc","unresolved":false,"context_lines":[{"line_number":285,"context_line":"                # share, for which reason we\u0027ll simply ignore it in this"},{"line_number":286,"context_line":"                # case."},{"line_number":287,"context_line":"                if force:"},{"line_number":288,"context_line":"                    raise vmutils.HyperVException("},{"line_number":289,"context_line":"                        _(\"Could not unmount share: %s\") % smbfs_share)"}],"source_content_type":"text/x-python","patch_set":37,"id":"ba8a016a_226cb307","line":288,"updated":"2015-11-21 13:03:42.000000000","message":"same as above","commit_id":"ca9621d672c03ba7394737bf1ee6f35de72778a0"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"2e55bed897b6876baf157a95d4cc138ee4416a7a","unresolved":false,"context_lines":[{"line_number":285,"context_line":"                # share, for which reason we\u0027ll simply ignore it in this"},{"line_number":286,"context_line":"                # case."},{"line_number":287,"context_line":"                if force:"},{"line_number":288,"context_line":"                    raise vmutils.HyperVException("},{"line_number":289,"context_line":"                        _(\"Could not unmount share: %s\") % smbfs_share)"}],"source_content_type":"text/x-python","patch_set":37,"id":"ba8a016a_a5a0a3a6","line":288,"in_reply_to":"ba8a016a_226cb307","updated":"2015-11-22 15:27:25.000000000","message":"Done in the next commit: https://review.openstack.org/#/c/247729/5","commit_id":"ca9621d672c03ba7394737bf1ee6f35de72778a0"}],"nova/virt/hyperv/vmops.py":[{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"94d272bbfc3546d6cc1a4484f3db503a3b6a5588","unresolved":false,"context_lines":[{"line_number":352,"context_line":"        if image_prop_vm not in self._hostutils.get_supported_vm_types():"},{"line_number":353,"context_line":"            LOG.error(_LE(\u0027Requested VM Generation %s is not supported on \u0027"},{"line_number":354,"context_line":"                         \u0027 this OS.\u0027), image_prop_vm)"},{"line_number":355,"context_line":"            raise exceptions.HyperVException("},{"line_number":356,"context_line":"                _(\u0027Requested VM Generation %s is not supported on this \u0027"},{"line_number":357,"context_line":"                  \u0027OS.\u0027) % image_prop_vm)"},{"line_number":358,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"da85f559_22b1cae1","line":355,"updated":"2015-11-10 15:08:46.000000000","message":"I\u0027m wondering if it\u0027s ok to raise exceptions defined in a separate module.","commit_id":"f784566498db650028b89aa988a1550313e645e6"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"715455817df809ac691b1c307561722f51875299","unresolved":false,"context_lines":[{"line_number":22,"context_line":"import time"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from eventlet import timeout as etimeout"},{"line_number":25,"context_line":"from os_win import exceptions"},{"line_number":26,"context_line":"from os_win.utils.io import ioutils"},{"line_number":27,"context_line":"from os_win import utilsfactory"},{"line_number":28,"context_line":"from oslo_concurrency import processutils"}],"source_content_type":"text/x-python","patch_set":27,"id":"da85f559_f4830d01","line":25,"updated":"2015-11-12 13:40:50.000000000","message":"I\u0027ve just noticed that we have os_win.exceptions and nova.exception, which may be a bit confusing. Should this be imported with a different name, something like os_win_exc?","commit_id":"523c9384f17ccc429330496ce83c82a9b8cf5337"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"3a8ac0811b4ce4a7a4e5d4abde7966bf8179bccb","unresolved":false,"context_lines":[{"line_number":349,"context_line":"            \u0027hw_machine_type\u0027, default_vm_gen)"},{"line_number":350,"context_line":"        if image_prop_vm not in self._hostutils.get_supported_vm_types():"},{"line_number":351,"context_line":"            reason \u003d _LE(\u0027Requested VM Generation %s is not supported on \u0027"},{"line_number":352,"context_line":"                         \u0027this OS.\u0027) % image_prop_vm"},{"line_number":353,"context_line":"            LOG.error(reason)"},{"line_number":354,"context_line":"            raise exception.InstanceUnacceptable(instance_id\u003dinstance_id,"},{"line_number":355,"context_line":"                                                 reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":36,"id":"ba8a016a_651c226b","line":352,"updated":"2015-11-20 15:21:27.000000000","message":"Is there any reason for this LOG.error? This message will be logged twice, as it will be contained by the exception message.","commit_id":"9f1d67e96d2499748657ba6739e8cfe833ada7a2"}],"nova/virt/hyperv/volumeops.py":[{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"14bbc11b390de7cbd60232f5c1e1b748afc18afe","unresolved":false,"context_lines":[{"line_number":358,"context_line":"    def __init__(self):"},{"line_number":359,"context_line":"        self._pathutils \u003d utilsfactory.get_pathutils()"},{"line_number":360,"context_line":"        self._vmutils \u003d utilsfactory.get_vmutils()"},{"line_number":361,"context_line":"        self._volutils \u003d utilsfactory.get_iscsi_initiator_utils()"},{"line_number":362,"context_line":"        self._username_regex \u003d re.compile(r\u0027user(?:name)?\u003d([^, ]+)\u0027)"},{"line_number":363,"context_line":"        self._password_regex \u003d re.compile(r\u0027pass(?:word)?\u003d([^, ]+)\u0027)"},{"line_number":364,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"7a2fa921_81d78ebe","line":361,"updated":"2015-10-07 08:30:13.000000000","message":"This doesn\u0027t seem to be used anywhere. I think it can be removed.","commit_id":"e379c69459cd1fed132a7a57c717737a06b406ca"}]}
