)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"aea8edc5bcf93604c741db89f086388a39556139","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The support for running KVM with libvirt on s390/s390x architectures"},{"line_number":10,"context_line":"was documented as requiring libvirt \u003e\u003d 1.0.4 and qemu \u003e\u003d 1.4.0,"},{"line_number":11,"context_line":"however, not check was added to the init_host() method in the libvirt"},{"line_number":12,"context_line":"driver. This could lead to users deploying Nova on unsupported"},{"line_number":13,"context_line":"hypervisor platforms."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7a016987_8b0c5f3c","line":11,"updated":"2015-05-15 21:14:45.000000000","message":"however, no check....","commit_id":"662981ce12ea6ea784f82c549cf6de4ca472eae9"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"32ae974d7482698ca896281dc357570b2d66f2bb","unresolved":false,"context_lines":[{"line_number":14,"context_line":"that in fact the min versions can be libvirt 1.2.13 and QEMU 2.3,"},{"line_number":15,"context_line":"so this change adds such a check."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Blueprint: libvirt-kvm-systemz"},{"line_number":18,"context_line":"Change-Id: I2851624a8cdaf353df3386e1e3e3cc0e35af41ec"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1a4dcd0f_1dc1b82e","line":17,"updated":"2015-08-10 11:15:23.000000000","message":"I wish we didn\u0027t add patches for already implemented blueprints :(","commit_id":"60c04847ea8ff40cde26f5a3b8a1003b1a165ae9"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"cad430832c6596cd9ca3efb986dfcfd1d111749c","unresolved":false,"context_lines":[{"line_number":642,"context_line":"    @mock.patch.object(host.Host, \"has_min_version\")"},{"line_number":643,"context_line":"    @mock.patch.object(arch, \"from_host\")"},{"line_number":644,"context_line":"    def test_min_version_s390_fail(self, mock_arch, mock_version):"},{"line_number":645,"context_line":"        mock_arch.return_value \u003d arch.S390X"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"        def fake_version(lv_ver\u003dNone, hv_ver\u003dNone, hv_type\u003dNone):"},{"line_number":648,"context_line":"            if (lv_ver is not None and"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_482894e2","line":645,"updated":"2015-05-18 08:23:59.000000000","message":"The mocked architecture return_value could be in the decorator.","commit_id":"662981ce12ea6ea784f82c549cf6de4ca472eae9"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"c92f3c3067231d3abb076590f757a9a7216443e8","unresolved":false,"context_lines":[{"line_number":642,"context_line":"    @mock.patch.object(host.Host, \"has_min_version\")"},{"line_number":643,"context_line":"    @mock.patch.object(arch, \"from_host\")"},{"line_number":644,"context_line":"    def test_min_version_s390_fail(self, mock_arch, mock_version):"},{"line_number":645,"context_line":"        mock_arch.return_value \u003d arch.S390X"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"        def fake_version(lv_ver\u003dNone, hv_ver\u003dNone, hv_type\u003dNone):"},{"line_number":648,"context_line":"            if (lv_ver is not None and"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_8a9676ee","line":645,"in_reply_to":"7a016987_482894e2","updated":"2015-05-18 16:24:36.000000000","message":"Yep indeed","commit_id":"662981ce12ea6ea784f82c549cf6de4ca472eae9"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"cad430832c6596cd9ca3efb986dfcfd1d111749c","unresolved":false,"context_lines":[{"line_number":652,"context_line":"                hv_ver \u003c\u003d libvirt_driver.MIN_QEMU_S390_VERSION):"},{"line_number":653,"context_line":"                return False"},{"line_number":654,"context_line":""},{"line_number":655,"context_line":"        mock_version.side_effect \u003d fake_version"},{"line_number":656,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":657,"context_line":"        self.assertRaises(exception.NovaException,"},{"line_number":658,"context_line":"                          drvr.init_host,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_a8f2686d","line":655,"updated":"2015-05-18 08:23:59.000000000","message":"I think you had a good reason to do it that way instead of just returning False from the mock. Could you help me to understand this please?","commit_id":"662981ce12ea6ea784f82c549cf6de4ca472eae9"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"c92f3c3067231d3abb076590f757a9a7216443e8","unresolved":false,"context_lines":[{"line_number":652,"context_line":"                hv_ver \u003c\u003d libvirt_driver.MIN_QEMU_S390_VERSION):"},{"line_number":653,"context_line":"                return False"},{"line_number":654,"context_line":""},{"line_number":655,"context_line":"        mock_version.side_effect \u003d fake_version"},{"line_number":656,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":657,"context_line":"        self.assertRaises(exception.NovaException,"},{"line_number":658,"context_line":"                          drvr.init_host,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_4aa07e43","line":655,"in_reply_to":"7a016987_a8f2686d","updated":"2015-05-18 16:24:36.000000000","message":"Actually mocking has_min_version was a bad idea - i should have mocked the fake libvirt connection instead.","commit_id":"662981ce12ea6ea784f82c549cf6de4ca472eae9"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"cad430832c6596cd9ca3efb986dfcfd1d111749c","unresolved":false,"context_lines":[{"line_number":670,"context_line":"            if (lv_ver is not None and"},{"line_number":671,"context_line":"                lv_ver \u003e libvirt_driver.MIN_QEMU_S390_VERSION):"},{"line_number":672,"context_line":"                return False"},{"line_number":673,"context_line":""},{"line_number":674,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":675,"context_line":"        drvr.init_host(\"dummyhost\")"},{"line_number":676,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_28f55882","line":673,"updated":"2015-05-18 08:23:59.000000000","message":"The assignment of \"fake_version\" to \"side_effect\" is missing.","commit_id":"662981ce12ea6ea784f82c549cf6de4ca472eae9"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"53de66ebcaea721b64fa8ecce88d4a905919ebc0","unresolved":false,"context_lines":[{"line_number":384,"context_line":""},{"line_number":385,"context_line":"# s/390 \u0026 s/390x architectures with KVM"},{"line_number":386,"context_line":"MIN_LIBVIRT_KVM_S390_VERSION \u003d (1, 0, 4)"},{"line_number":387,"context_line":"MIN_QEMU_S390_VERSION \u003d (1, 4, 0)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"class LibvirtDriver(driver.ComputeDriver):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_a04ca39e","line":387,"updated":"2015-05-19 11:56:17.000000000","message":"I\u0027m still checking the exact versions with the kvm for system z developers. I hope to get an answer in the next few days. Please wait for a +1 from my side.","commit_id":"d82113e88754dfc55b3b0f2914837f15bd5275e5"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"1e132992609c125b6c5a6bbfe989b090d7738904","unresolved":false,"context_lines":[{"line_number":384,"context_line":""},{"line_number":385,"context_line":"# s/390 \u0026 s/390x architectures with KVM"},{"line_number":386,"context_line":"MIN_LIBVIRT_KVM_S390_VERSION \u003d (1, 0, 4)"},{"line_number":387,"context_line":"MIN_QEMU_S390_VERSION \u003d (1, 4, 0)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"class LibvirtDriver(driver.ComputeDriver):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_c9017f6c","line":387,"in_reply_to":"7a016987_a04ca39e","updated":"2015-05-26 12:04:09.000000000","message":"@Daniel: After discussing with the \"kvm on z\" developers, the lowest versions we can safely say are libvirt 1.2.13 and qemu 2.3 for s390.","commit_id":"d82113e88754dfc55b3b0f2914837f15bd5275e5"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"9b3db01de0996acf8ed7dda3f3885dbe2a010bb8","unresolved":false,"context_lines":[{"line_number":384,"context_line":""},{"line_number":385,"context_line":"# s/390 \u0026 s/390x architectures with KVM"},{"line_number":386,"context_line":"MIN_LIBVIRT_KVM_S390_VERSION \u003d (1, 0, 4)"},{"line_number":387,"context_line":"MIN_QEMU_S390_VERSION \u003d (1, 4, 0)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"class LibvirtDriver(driver.ComputeDriver):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_89d707bf","line":387,"in_reply_to":"7a016987_c9017f6c","updated":"2015-05-26 12:08:18.000000000","message":"Ok, will update this.","commit_id":"d82113e88754dfc55b3b0f2914837f15bd5275e5"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"5537ed992d81b3536f66894a4c016fc8a8527bd4","unresolved":false,"context_lines":[{"line_number":566,"context_line":"        if (CONF.libvirt.virt_type in (\u0027kvm\u0027, \u0027qemu\u0027) and"},{"line_number":567,"context_line":"            arch.from_host() in (arch.S390, arch.S390X) and"},{"line_number":568,"context_line":"            not self._host.has_min_version(MIN_LIBVIRT_KVM_S390_VERSION,"},{"line_number":569,"context_line":"                                           MIN_QEMU_S390_VERSION)):"},{"line_number":570,"context_line":"            raise exception.NovaException("},{"line_number":571,"context_line":"                _(\u0027Running Nova with qemu/kvm virt_type on s390/s390x \u0027"},{"line_number":572,"context_line":"                  \u0027requires libvirt version %(libvirt_ver)s and \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_cab7c338","line":569,"updated":"2015-05-19 06:45:47.000000000","message":"I think we should specify a libvirt hypervisor driver type of host.HV_DRIVER_QEMU, just to be clear.","commit_id":"d82113e88754dfc55b3b0f2914837f15bd5275e5"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"16fd327da1403b84db8322164fbc63967df237f3","unresolved":false,"context_lines":[{"line_number":566,"context_line":"        if (CONF.libvirt.virt_type in (\u0027kvm\u0027, \u0027qemu\u0027) and"},{"line_number":567,"context_line":"            arch.from_host() in (arch.S390, arch.S390X) and"},{"line_number":568,"context_line":"            not self._host.has_min_version(MIN_LIBVIRT_KVM_S390_VERSION,"},{"line_number":569,"context_line":"                                           MIN_QEMU_S390_VERSION)):"},{"line_number":570,"context_line":"            raise exception.NovaException("},{"line_number":571,"context_line":"                _(\u0027Running Nova with qemu/kvm virt_type on s390/s390x \u0027"},{"line_number":572,"context_line":"                  \u0027requires libvirt version %(libvirt_ver)s and \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_f1ef0fe7","line":569,"in_reply_to":"7a016987_4a3f5387","updated":"2015-05-19 13:50:53.000000000","message":"I don\u0027t think there\u0027s any real benefit to doing that - the vast majority of code in the driver checks the virt_type config, so if anything that is preferable.","commit_id":"d82113e88754dfc55b3b0f2914837f15bd5275e5"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"9cb7610d0b94c905359467ea076cd07600aa5c0d","unresolved":false,"context_lines":[{"line_number":566,"context_line":"        if (CONF.libvirt.virt_type in (\u0027kvm\u0027, \u0027qemu\u0027) and"},{"line_number":567,"context_line":"            arch.from_host() in (arch.S390, arch.S390X) and"},{"line_number":568,"context_line":"            not self._host.has_min_version(MIN_LIBVIRT_KVM_S390_VERSION,"},{"line_number":569,"context_line":"                                           MIN_QEMU_S390_VERSION)):"},{"line_number":570,"context_line":"            raise exception.NovaException("},{"line_number":571,"context_line":"                _(\u0027Running Nova with qemu/kvm virt_type on s390/s390x \u0027"},{"line_number":572,"context_line":"                  \u0027requires libvirt version %(libvirt_ver)s and \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_4a3f5387","line":569,"in_reply_to":"7a016987_cab7c338","updated":"2015-05-19 06:48:09.000000000","message":"that would let us remove the check against CONF.libvirt.virt_type","commit_id":"d82113e88754dfc55b3b0f2914837f15bd5275e5"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"8c74cb4f3d5ed30db63916a0cb7630968725c3ba","unresolved":false,"context_lines":[{"line_number":566,"context_line":"        if (CONF.libvirt.virt_type in (\u0027kvm\u0027, \u0027qemu\u0027) and"},{"line_number":567,"context_line":"            arch.from_host() in (arch.S390, arch.S390X) and"},{"line_number":568,"context_line":"            not self._host.has_min_version(MIN_LIBVIRT_KVM_S390_VERSION,"},{"line_number":569,"context_line":"                                           MIN_QEMU_S390_VERSION)):"},{"line_number":570,"context_line":"            raise exception.NovaException("},{"line_number":571,"context_line":"                _(\u0027Running Nova with qemu/kvm virt_type on s390/s390x \u0027"},{"line_number":572,"context_line":"                  \u0027requires libvirt version %(libvirt_ver)s and \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_58cddfb5","line":569,"in_reply_to":"7a016987_f1ef0fe7","updated":"2015-05-19 19:06:59.000000000","message":"why do we have the hypervisor driver type in has_min_version if we\u0027re not going to use it?  (but I\u0027ll remove the -1)","commit_id":"d82113e88754dfc55b3b0f2914837f15bd5275e5"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"1e132992609c125b6c5a6bbfe989b090d7738904","unresolved":false,"context_lines":[{"line_number":567,"context_line":"            arch.from_host() in (arch.S390, arch.S390X) and"},{"line_number":568,"context_line":"            not self._host.has_min_version(MIN_LIBVIRT_KVM_S390_VERSION,"},{"line_number":569,"context_line":"                                           MIN_QEMU_S390_VERSION)):"},{"line_number":570,"context_line":"            raise exception.NovaException("},{"line_number":571,"context_line":"                _(\u0027Running Nova with qemu/kvm virt_type on s390/s390x \u0027"},{"line_number":572,"context_line":"                  \u0027requires libvirt version %(libvirt_ver)s and \u0027"},{"line_number":573,"context_line":"                  \u0027qemu version %(qemu_ver)s\u0027) %"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_297813f8","line":570,"updated":"2015-05-26 12:04:09.000000000","message":"Could you please help me to understand why the we raise an exception? Wouldn\u0027t a warning be enough?","commit_id":"d82113e88754dfc55b3b0f2914837f15bd5275e5"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"9b3db01de0996acf8ed7dda3f3885dbe2a010bb8","unresolved":false,"context_lines":[{"line_number":567,"context_line":"            arch.from_host() in (arch.S390, arch.S390X) and"},{"line_number":568,"context_line":"            not self._host.has_min_version(MIN_LIBVIRT_KVM_S390_VERSION,"},{"line_number":569,"context_line":"                                           MIN_QEMU_S390_VERSION)):"},{"line_number":570,"context_line":"            raise exception.NovaException("},{"line_number":571,"context_line":"                _(\u0027Running Nova with qemu/kvm virt_type on s390/s390x \u0027"},{"line_number":572,"context_line":"                  \u0027requires libvirt version %(libvirt_ver)s and \u0027"},{"line_number":573,"context_line":"                  \u0027qemu version %(qemu_ver)s\u0027) %"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_69928bf8","line":570,"in_reply_to":"7a016987_297813f8","updated":"2015-05-26 12:08:18.000000000","message":"The minimum required versions indicate the libvirt version below which we expect Nova to be broken / non-functional in some way. As such it is counteproductive to allow the user to continue, so we raise an exception to force them to deploy a usable version. See also line 542 and 548 where we do the similar checks","commit_id":"d82113e88754dfc55b3b0f2914837f15bd5275e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b3ede9dbbd0b7775ccf9fe5cd7600751bbc20b68","unresolved":false,"context_lines":[{"line_number":338,"context_line":"    VIR_DOMAIN_PMSUSPENDED: power_state.SUSPENDED,"},{"line_number":339,"context_line":"}"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"# This is effectively the min version for i686/x86_64 + KVM/QEMU"},{"line_number":342,"context_line":"MIN_LIBVIRT_VERSION \u003d (0, 9, 11)"},{"line_number":343,"context_line":"# When the above version matches/exceeds this version"},{"line_number":344,"context_line":"# delete it \u0026 corresponding code using it"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_7e918046","line":341,"updated":"2015-08-05 17:05:33.000000000","message":"And ppc64?","commit_id":"00b070dad88c091e014b69adf304ea415157815b"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"39925b8fc4d06411fce4e0f4c193d90435bde3fa","unresolved":false,"context_lines":[{"line_number":338,"context_line":"    VIR_DOMAIN_PMSUSPENDED: power_state.SUSPENDED,"},{"line_number":339,"context_line":"}"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"# This is effectively the min version for i686/x86_64 + KVM/QEMU"},{"line_number":342,"context_line":"MIN_LIBVIRT_VERSION \u003d (0, 9, 11)"},{"line_number":343,"context_line":"# When the above version matches/exceeds this version"},{"line_number":344,"context_line":"# delete it \u0026 corresponding code using it"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_79bc3adc","line":341,"in_reply_to":"1a4dcd0f_7e918046","updated":"2015-08-05 17:21:01.000000000","message":"I\u0027m reasonably sure ppc64 requires a newer version of libvirt than this, so I didn\u0027t include it in this comment. Unfortunately I don\u0027t really know what min version it does required. Not sure who to poke to discover this really.","commit_id":"00b070dad88c091e014b69adf304ea415157815b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b3ede9dbbd0b7775ccf9fe5cd7600751bbc20b68","unresolved":false,"context_lines":[{"line_number":587,"context_line":"                                           MIN_QEMU_S390_VERSION)):"},{"line_number":588,"context_line":"            raise exception.NovaException("},{"line_number":589,"context_line":"                _(\u0027Running Nova with qemu/kvm virt_type on s390/s390x \u0027"},{"line_number":590,"context_line":"                  \u0027requires libvirt version %(libvirt_ver)s and \u0027"},{"line_number":591,"context_line":"                  \u0027qemu version %(qemu_ver)s\u0027) %"},{"line_number":592,"context_line":"                {\u0027libvirt_ver\u0027: self._version_to_string("},{"line_number":593,"context_line":"                    MIN_LIBVIRT_KVM_S390_VERSION),"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_feccb06b","line":590,"updated":"2015-08-05 17:05:33.000000000","message":"I\u0027d suggest saying \u0027requires at least\u0027 or at the end add \u0027or greater\u0027 like in the MIN_LIBVIRT_VERSION check above.","commit_id":"00b070dad88c091e014b69adf304ea415157815b"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"39925b8fc4d06411fce4e0f4c193d90435bde3fa","unresolved":false,"context_lines":[{"line_number":587,"context_line":"                                           MIN_QEMU_S390_VERSION)):"},{"line_number":588,"context_line":"            raise exception.NovaException("},{"line_number":589,"context_line":"                _(\u0027Running Nova with qemu/kvm virt_type on s390/s390x \u0027"},{"line_number":590,"context_line":"                  \u0027requires libvirt version %(libvirt_ver)s and \u0027"},{"line_number":591,"context_line":"                  \u0027qemu version %(qemu_ver)s\u0027) %"},{"line_number":592,"context_line":"                {\u0027libvirt_ver\u0027: self._version_to_string("},{"line_number":593,"context_line":"                    MIN_LIBVIRT_KVM_S390_VERSION),"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_f9d04a21","line":590,"in_reply_to":"1a4dcd0f_feccb06b","updated":"2015-08-05 17:21:01.000000000","message":"ok","commit_id":"00b070dad88c091e014b69adf304ea415157815b"}]}
