)]}'
{"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":13431,"name":"Evgeny Antyshev","email":"eantyshev@gmail.com","username":"eantyshev"},"change_message_id":"4c67385c574b8c0c983f5100ec241bc0838f6792","unresolved":false,"context_lines":[{"line_number":1184,"context_line":"                       \u0027has_min_version\u0027, return_value\u003dTrue)"},{"line_number":1185,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.host.Host.get_guest\u0027)"},{"line_number":1186,"context_line":"    def _test_set_admin_password(self, mock_get_guest, ver, mock_image, virt):"},{"line_number":1187,"context_line":"        self.flags(virt_type\u003dvirt, group\u003d\u0027libvirt\u0027)"},{"line_number":1188,"context_line":"        instance \u003d objects.Instance(**self.test_instance)"},{"line_number":1189,"context_line":"        mock_image.return_value \u003d {\"properties\": {"},{"line_number":1190,"context_line":"            \"hw_qemu_guest_agent\": \"yes\"}}"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_6f949b36","line":1187,"updated":"2016-06-17 14:24:44.000000000","message":"AFAIU, set_admin_password() procedure has nothing specific to \"parallels\" libvirt type.\nNo point in this double-check.\nI doubt there\u0027s need for unittests, since the patch has 2 lines. and breaks nothing in existing tests.\n\nYou may probably make special test for _can_set_admin_password, if it worth","commit_id":"d05768ed39ee6000c106859009c8a9787be0afec"},{"author":{"_account_id":13431,"name":"Evgeny Antyshev","email":"eantyshev@gmail.com","username":"eantyshev"},"change_message_id":"4c67385c574b8c0c983f5100ec241bc0838f6792","unresolved":false,"context_lines":[{"line_number":1197,"context_line":"        mock_guest.set_user_password.assert_called_once_with(\"root\", \"123\")"},{"line_number":1198,"context_line":""},{"line_number":1199,"context_line":"    def test_set_admin_password_kvm(self):"},{"line_number":1200,"context_line":"        self._test_set_admin_password(virt \u003d \u0027kvm\u0027)"},{"line_number":1201,"context_line":""},{"line_number":1202,"context_line":"    def test_set_admin_password_parallels(self):"},{"line_number":1203,"context_line":"        self._test_set_admin_password(virt \u003d \u0027parallels\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_6ce2e9d6","line":1200,"updated":"2016-06-17 14:24:44.000000000","message":"JFYI\nStyle mistake: keyword arguments are defined w/o spaces, like: func(key\u003dvalue)","commit_id":"d05768ed39ee6000c106859009c8a9787be0afec"},{"author":{"_account_id":13431,"name":"Evgeny Antyshev","email":"eantyshev@gmail.com","username":"eantyshev"},"change_message_id":"bcf9302d527f07ca7d061bd5969c1d0e2a7cdb8a","unresolved":false,"context_lines":[{"line_number":1200,"context_line":"        self._test_set_admin_password(virt\u003d\u0027kvm\u0027)"},{"line_number":1201,"context_line":""},{"line_number":1202,"context_line":"    def test_set_admin_password_parallels(self):"},{"line_number":1203,"context_line":"        self._test_set_admin_password(virt\u003d\u0027parallels\u0027)"},{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    @mock.patch(\u0027nova.utils.get_image_from_system_metadata\u0027)"},{"line_number":1206,"context_line":"    @mock.patch.object(host.Host,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a9d85d2_613ef0b9","line":1203,"updated":"2016-06-20 07:34:34.000000000","message":"I beleive: if you modify _can_set_admin_password(), then you test only that code. Other parts have nothing specific to \"parallels\"","commit_id":"432075d02be6e32b634b93963b57a11abd01bc91"},{"author":{"_account_id":12408,"name":"Maxim Nestratov","email":"mnestratov@virtuozzo.com","username":"mnestratov"},"change_message_id":"813b305b0d3289b8ef454af64fec48414c3dc5bd","unresolved":false,"context_lines":[{"line_number":1204,"context_line":"                                          ver, mock_image):"},{"line_number":1205,"context_line":"        self.flags(virt_type\u003d\u0027parallels\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":1206,"context_line":"        instance \u003d objects.Instance(**self.test_instance)"},{"line_number":1207,"context_line":"        mock_image.return_value \u003d {\"properties\": {"},{"line_number":1208,"context_line":"            \"hw_qemu_guest_agent\": \"yes\"}}"},{"line_number":1209,"context_line":"        mock_guest \u003d mock.Mock(spec\u003dlibvirt_guest.Guest)"},{"line_number":1210,"context_line":"        mock_get_guest.return_value \u003d mock_guest"},{"line_number":1211,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_5c2f903e","line":1208,"range":{"start_line":1207,"start_character":1,"end_line":1208,"end_character":42},"updated":"2016-06-25 11:27:14.000000000","message":"this property doesn\u0027t make sense now","commit_id":"52ed3c236324747878b8ac86b987f1a12ab77e29"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":12408,"name":"Maxim Nestratov","email":"mnestratov@virtuozzo.com","username":"mnestratov"},"change_message_id":"0fbfcb4311388b1a087182d6e3269f052fa49587","unresolved":false,"context_lines":[{"line_number":1584,"context_line":""},{"line_number":1585,"context_line":"    def _can_set_admin_password(self, image_meta):"},{"line_number":1586,"context_line":"        if (CONF.libvirt.virt_type not in (\u0027kvm\u0027, \u0027qemu\u0027, \u0027parallels\u0027) or"},{"line_number":1587,"context_line":"            not self._host.has_min_version(MIN_LIBVIRT_SET_ADMIN_PASSWD)):"},{"line_number":1588,"context_line":"            raise exception.SetAdminPasswdNotSupported()"},{"line_number":1589,"context_line":""},{"line_number":1590,"context_line":"        if (CONF.libvirt.virt_type \u003d\u003d \u0027parallels\u0027):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_fe21989f","line":1587,"range":{"start_line":1587,"start_character":43,"end_line":1587,"end_character":71},"updated":"2016-06-16 15:45:05.000000000","message":"For parallels this condition should be different I guess. And we have another MIN_LIBVIRT_SET_ADMIN_PASSWD as we implemented this a bit later.","commit_id":"d05768ed39ee6000c106859009c8a9787be0afec"},{"author":{"_account_id":12408,"name":"Maxim Nestratov","email":"mnestratov@virtuozzo.com","username":"mnestratov"},"change_message_id":"0fbfcb4311388b1a087182d6e3269f052fa49587","unresolved":false,"context_lines":[{"line_number":1590,"context_line":"        if (CONF.libvirt.virt_type \u003d\u003d \u0027parallels\u0027):"},{"line_number":1591,"context_line":"            return"},{"line_number":1592,"context_line":""},{"line_number":1593,"context_line":"        hw_qga \u003d image_meta.properties.get(\u0027hw_qemu_guest_agent\u0027, \u0027\u0027)"},{"line_number":1594,"context_line":"        if not strutils.bool_from_string(hw_qga):"},{"line_number":1595,"context_line":"            raise exception.QemuGuestAgentNotEnabled()"},{"line_number":1596,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_3ef320e9","line":1593,"range":{"start_line":1593,"start_character":17,"end_line":1593,"end_character":69},"updated":"2016-06-16 15:45:05.000000000","message":"This check also makes sense for us in case of vm_type\u003dhvm","commit_id":"d05768ed39ee6000c106859009c8a9787be0afec"},{"author":{"_account_id":13431,"name":"Evgeny Antyshev","email":"eantyshev@gmail.com","username":"eantyshev"},"change_message_id":"bcf9302d527f07ca7d061bd5969c1d0e2a7cdb8a","unresolved":false,"context_lines":[{"line_number":1600,"context_line":""},{"line_number":1601,"context_line":"        if (CONF.libvirt.virt_type \u003d\u003d \u0027parallels\u0027):"},{"line_number":1602,"context_line":"            return"},{"line_number":1603,"context_line":""},{"line_number":1604,"context_line":"        hw_qga \u003d image_meta.properties.get(\u0027hw_qemu_guest_agent\u0027, \u0027\u0027)"},{"line_number":1605,"context_line":"        if not strutils.bool_from_string(hw_qga):"},{"line_number":1606,"context_line":"            raise exception.QemuGuestAgentNotEnabled()"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a9d85d2_9e037b0f","line":1603,"updated":"2016-06-20 07:34:34.000000000","message":"I would suggest more plain clauses (for readability\u0027s sake IMHO):\n\nif CONF.libvirt.virt_type \u003d\u003d \u0027parallels\u0027:\n    if not self._host.has_min_version(\n                    MIN_LIBVIRT_PARALLELS_SET_ADMIN_PASSWD)):\n                raise exception.SetAdminPasswdNotSupported()\nelif CONF.libvirt.virt_type in (\u0027kvm\u0027, \u0027qemu\u0027):\n    if not self._host.has_min_version(MIN_LIBVIRT_SET_ADMIN_PASSWD):\n        raise exception.SetAdminPasswdNotSupported()\n    hw_qga \u003d image_meta.properties.get(\u0027hw_qemu_guest_agent\u0027, \u0027\u0027)\n    if not strutils.bool_from_string(hw_qga):\n        raise exception.QemuGuestAgentNotEnabled()\nelse:\n    raise exception.SetAdminPasswdNotSupported()","commit_id":"432075d02be6e32b634b93963b57a11abd01bc91"}],"releasenotes/notes/bp-virtuozzo-instance-admin-password-8278cad73f3be98d.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6948113d98423c54b86d4c400082584463454c3a","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Virtuozzo hypervisor now supports libvirt callback to set admin password"},{"line_number":4,"context_line":"upgrade:"},{"line_number":5,"context_line":"  - Requires libvirt\u003e\u003d2.0.0"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3a98d1f4_4b9f5c03","line":5,"updated":"2016-09-28 18:45:03.000000000","message":"This doesn\u0027t have any context since it shows up separately from the feature section in the release notes:\n\nhttp://docs-draft.openstack.org/43/330643/8/check/gate-nova-releasenotes/52bd920//releasenotes/build/html/unreleased.html#rc1-277\n\nSo let\u0027s just lump this in with the feature note above.","commit_id":"bef9525fd866d9dfa21ebe794b2b20c27c66d820"}]}
