)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"121a166bbbad290d7b30c7696ecb164162e29600","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt: serial console ports count upper limit needs to be checked"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There is a limit of 4 serial ports on qemu_x86. If number of serial port"},{"line_number":10,"context_line":"over limit, qemu will throw error message with"},{"line_number":11,"context_line":"\"libvirtError: internal error:"},{"line_number":12,"context_line":"process exited while connecting to monitor: qemu-system-x86_64: -device"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"7a2fa921_656fd492","line":9,"updated":"2015-10-07 12:13:35.000000000","message":"just curious, so a question only \nbecause the code logic has x86/s390 difference\nso what about powerpc which is also supported in libvirt?","commit_id":"d212d71c38152fd441c8cfc6cba537ea22510cb5"},{"author":{"_account_id":14447,"name":"lyanchih","email":"lyan.h@inwinstack.com","username":"lyanchih"},"change_message_id":"234ef576a4494f0ab8436574c6a2ea78a6ec5328","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt: serial console ports count upper limit needs to be checked"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There is a limit of 4 serial ports on qemu_x86. If number of serial port"},{"line_number":10,"context_line":"over limit, qemu will throw error message with"},{"line_number":11,"context_line":"\"libvirtError: internal error:"},{"line_number":12,"context_line":"process exited while connecting to monitor: qemu-system-x86_64: -device"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"7a2fa921_00134a5c","line":9,"in_reply_to":"7a2fa921_656fd492","updated":"2015-10-08 03:34:49.000000000","message":"Sorry, I don\u0027t have other arch to test limit. Maybe one day some people hit issue about limit that they can commit those in other patch.","commit_id":"d212d71c38152fd441c8cfc6cba537ea22510cb5"}],"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":"eb2df893367df10a184009129e459a6d9fe19d84","unresolved":false,"context_lines":[{"line_number":2536,"context_line":"        mock_get_arch.assert_called_with(image_meta)"},{"line_number":2537,"context_line":"        mock_get_port_number.assert_called_with(flavor,"},{"line_number":2538,"context_line":"                                                image_meta)"},{"line_number":2539,"context_line":""},{"line_number":2540,"context_line":"    @mock.patch(\u0027nova.console.serial.acquire_port\u0027)"},{"line_number":2541,"context_line":"    def test_get_guest_config_serial_console(self, acquire_port):"},{"line_number":2542,"context_line":"        self.flags(enabled\u003dTrue, group\u003d\u0027serial_console\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_98bd49da","line":2539,"updated":"2015-08-06 17:07:25.000000000","message":"nit: code duplication (but this one here is no blocker for me. I does the trick and is maintainable IMO)","commit_id":"c6e47c142aa1de8a2edfa44ffe9d7dac8a765970"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"20014f384645601c96c4e6ac78ac2c42bb2a820e","unresolved":false,"context_lines":[{"line_number":2536,"context_line":"        mock_get_arch.assert_called_with(image_meta)"},{"line_number":2537,"context_line":"        mock_get_port_number.assert_called_with(flavor,"},{"line_number":2538,"context_line":"                                                image_meta)"},{"line_number":2539,"context_line":""},{"line_number":2540,"context_line":"    @mock.patch(\u0027nova.console.serial.acquire_port\u0027)"},{"line_number":2541,"context_line":"    def test_get_guest_config_serial_console(self, acquire_port):"},{"line_number":2542,"context_line":"        self.flags(enabled\u003dTrue, group\u003d\u0027serial_console\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_412ed2fb","line":2539,"in_reply_to":"1a4dcd0f_81b947ce","updated":"2015-08-07 09:23:04.000000000","message":"It\u0027s perfectly fine for me, no worries.","commit_id":"c6e47c142aa1de8a2edfa44ffe9d7dac8a765970"},{"author":{"_account_id":14447,"name":"lyanchih","email":"lyan.h@inwinstack.com","username":"lyanchih"},"change_message_id":"464a061646da314e392f1305a9942ec4bb4f0d94","unresolved":false,"context_lines":[{"line_number":2536,"context_line":"        mock_get_arch.assert_called_with(image_meta)"},{"line_number":2537,"context_line":"        mock_get_port_number.assert_called_with(flavor,"},{"line_number":2538,"context_line":"                                                image_meta)"},{"line_number":2539,"context_line":""},{"line_number":2540,"context_line":"    @mock.patch(\u0027nova.console.serial.acquire_port\u0027)"},{"line_number":2541,"context_line":"    def test_get_guest_config_serial_console(self, acquire_port):"},{"line_number":2542,"context_line":"        self.flags(enabled\u003dTrue, group\u003d\u0027serial_console\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_81b947ce","line":2539,"in_reply_to":"1a4dcd0f_98bd49da","updated":"2015-08-07 01:26:02.000000000","message":"It is not duplication, you can checkout L2513. First is check it wouldn\u0027t raise exception at S390 arch, and second is checking with S390X. If I misunderstood usage of side_effect, please tell me, thank you.","commit_id":"c6e47c142aa1de8a2edfa44ffe9d7dac8a765970"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"02f3c7249a7e2b0cbe8323b95e50141b17815595","unresolved":false,"context_lines":[{"line_number":3663,"context_line":"            guest.features.append(hv)"},{"line_number":3664,"context_line":""},{"line_number":3665,"context_line":"    def _check_number_of_serial_ports(self, guest_arch, num_ports):"},{"line_number":3666,"context_line":"        if guest_arch in (arch.S390, arch.S390X):"},{"line_number":3667,"context_line":"            return"},{"line_number":3668,"context_line":""},{"line_number":3669,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_6ebdc6d6","line":3666,"updated":"2015-07-30 12:11:03.000000000","message":"i do not see any value in this if - it is covered below where guest_arch \u003d\u003d arch.X86_64\n\nmy opinion is that you can drop lines 3666 - 3668","commit_id":"277def74991a59caa3654825919bf9de19273022"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ba5d9836b60e9ea102e3c40d0213d2c2904f140f","unresolved":false,"context_lines":[{"line_number":3663,"context_line":"            guest.features.append(hv)"},{"line_number":3664,"context_line":""},{"line_number":3665,"context_line":"    def _check_number_of_serial_ports(self, guest_arch, num_ports):"},{"line_number":3666,"context_line":"        if guest_arch in (arch.S390, arch.S390X):"},{"line_number":3667,"context_line":"            return"},{"line_number":3668,"context_line":""},{"line_number":3669,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_7ffa4e45","line":3666,"in_reply_to":"3a50d1a3_6ebdc6d6","updated":"2015-07-30 13:14:16.000000000","message":"+1 - You do that check line 3671","commit_id":"277def74991a59caa3654825919bf9de19273022"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"02f3c7249a7e2b0cbe8323b95e50141b17815595","unresolved":false,"context_lines":[{"line_number":3669,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":3670,"context_line":"        # There is a limit of 4 serial ports on qemu_x86"},{"line_number":3671,"context_line":"        if (virt_type \u003d\u003d \"qemu\" and guest_arch \u003d\u003d arch.X86_64 and"},{"line_number":3672,"context_line":"            num_ports \u003e 4):"},{"line_number":3673,"context_line":"            raise exception.SerialPortNumberLimitExceeded(allowed\u003d4)"},{"line_number":3674,"context_line":""},{"line_number":3675,"context_line":"    def _create_serial_console_devices(self, guest, instance, flavor,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_ee90f650","line":3672,"updated":"2015-07-30 12:11:03.000000000","message":"it may be worthwhile defining a global variable for 4 with a descriptive name.","commit_id":"277def74991a59caa3654825919bf9de19273022"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"26e084143048c53f18a3dcbaec1c400991d2bf9b","unresolved":false,"context_lines":[{"line_number":3665,"context_line":"    def _check_number_of_serial_ports(self, guest_arch, num_ports):"},{"line_number":3666,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":3667,"context_line":"        arch_serial_port_limit \u003d {"},{"line_number":3668,"context_line":"            \"qemu\": {arch.X86_64: 4}"},{"line_number":3669,"context_line":"        }"},{"line_number":3670,"context_line":""},{"line_number":3671,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_3b7350b6","line":3668,"updated":"2015-07-31 09:40:52.000000000","message":"I think \"kvm\" has the same limit, but I\u0027m not 100% sure.","commit_id":"218fe7af914e9382effcde268244dcd31921d467"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"74d919e95ac239ffadaa4ffeb30a5e447b0d69be","unresolved":false,"context_lines":[{"line_number":3665,"context_line":"    def _check_number_of_serial_ports(self, guest_arch, num_ports):"},{"line_number":3666,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":3667,"context_line":"        arch_serial_port_limit \u003d {"},{"line_number":3668,"context_line":"            \"qemu\": {arch.X86_64: 4}"},{"line_number":3669,"context_line":"        }"},{"line_number":3670,"context_line":""},{"line_number":3671,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_9499117c","line":3668,"in_reply_to":"3a50d1a3_3b7350b6","updated":"2015-07-31 10:44:56.000000000","message":"Your thinking seems to be true, we need to use driver virtio-serial to increase this number.","commit_id":"218fe7af914e9382effcde268244dcd31921d467"},{"author":{"_account_id":14447,"name":"lyanchih","email":"lyan.h@inwinstack.com","username":"lyanchih"},"change_message_id":"d845cf1c0420c668696a72f312109969c5fb0834","unresolved":false,"context_lines":[{"line_number":3665,"context_line":"    def _check_number_of_serial_ports(self, guest_arch, num_ports):"},{"line_number":3666,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":3667,"context_line":"        arch_serial_port_limit \u003d {"},{"line_number":3668,"context_line":"            \"qemu\": {arch.X86_64: 4}"},{"line_number":3669,"context_line":"        }"},{"line_number":3670,"context_line":""},{"line_number":3671,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_4afe8406","line":3668,"in_reply_to":"3a50d1a3_9499117c","updated":"2015-07-31 11:13:07.000000000","message":"Yes, using  virtio-serial  to increase number of limit is greate idea.\nBut it looks like should modify in other review.","commit_id":"218fe7af914e9382effcde268244dcd31921d467"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"74d919e95ac239ffadaa4ffeb30a5e447b0d69be","unresolved":false,"context_lines":[{"line_number":3670,"context_line":""},{"line_number":3671,"context_line":"        try:"},{"line_number":3672,"context_line":""},{"line_number":3673,"context_line":"            allowed \u003d arch_serial_port_limit[virt_type][guest_arch]"},{"line_number":3674,"context_line":"            if num_ports \u003e allowed:"},{"line_number":3675,"context_line":"                raise exception.SerialPortNumberLimitExceeded("},{"line_number":3676,"context_line":"                    allowed\u003dallowed, virt_type\u003dvirt_type,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_b4d0cdf8","line":3673,"updated":"2015-07-31 10:44:56.000000000","message":"It\u0027s not related to the architecture but to the driver used.","commit_id":"218fe7af914e9382effcde268244dcd31921d467"},{"author":{"_account_id":14447,"name":"lyanchih","email":"lyan.h@inwinstack.com","username":"lyanchih"},"change_message_id":"1c1b4dd1ad2072f0be84daa6da7e2942d7601281","unresolved":false,"context_lines":[{"line_number":3670,"context_line":""},{"line_number":3671,"context_line":"        try:"},{"line_number":3672,"context_line":""},{"line_number":3673,"context_line":"            allowed \u003d arch_serial_port_limit[virt_type][guest_arch]"},{"line_number":3674,"context_line":"            if num_ports \u003e allowed:"},{"line_number":3675,"context_line":"                raise exception.SerialPortNumberLimitExceeded("},{"line_number":3676,"context_line":"                    allowed\u003dallowed, virt_type\u003dvirt_type,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_ccea74d8","line":3673,"in_reply_to":"3a50d1a3_81f8e3c5","updated":"2015-08-03 04:03:07.000000000","message":"Oh!! I don\u0027t know kvm will still using qemu interface, thx.","commit_id":"218fe7af914e9382effcde268244dcd31921d467"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5798901d3d2e4eddae9650a91bef1734e3f5e91d","unresolved":false,"context_lines":[{"line_number":3670,"context_line":""},{"line_number":3671,"context_line":"        try:"},{"line_number":3672,"context_line":""},{"line_number":3673,"context_line":"            allowed \u003d arch_serial_port_limit[virt_type][guest_arch]"},{"line_number":3674,"context_line":"            if num_ports \u003e allowed:"},{"line_number":3675,"context_line":"                raise exception.SerialPortNumberLimitExceeded("},{"line_number":3676,"context_line":"                    allowed\u003dallowed, virt_type\u003dvirt_type,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_81f8e3c5","line":3673,"in_reply_to":"3a50d1a3_aafdc8b2","updated":"2015-07-31 15:46:16.000000000","message":"Even if we are using kvm we will continue to use interface provided by qemu. That is why we should to verify both.","commit_id":"218fe7af914e9382effcde268244dcd31921d467"},{"author":{"_account_id":14447,"name":"lyanchih","email":"lyan.h@inwinstack.com","username":"lyanchih"},"change_message_id":"d845cf1c0420c668696a72f312109969c5fb0834","unresolved":false,"context_lines":[{"line_number":3670,"context_line":""},{"line_number":3671,"context_line":"        try:"},{"line_number":3672,"context_line":""},{"line_number":3673,"context_line":"            allowed \u003d arch_serial_port_limit[virt_type][guest_arch]"},{"line_number":3674,"context_line":"            if num_ports \u003e allowed:"},{"line_number":3675,"context_line":"                raise exception.SerialPortNumberLimitExceeded("},{"line_number":3676,"context_line":"                    allowed\u003dallowed, virt_type\u003dvirt_type,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_aafdc8b2","line":3673,"in_reply_to":"3a50d1a3_b4d0cdf8","updated":"2015-07-31 11:13:07.000000000","message":"Because of limit exceeded was throw by qemu_X86_64.\nI don\u0027t know wheather other virt_type and arch will have same number of limit.\nI don\u0027t find document write about this in kvm.","commit_id":"218fe7af914e9382effcde268244dcd31921d467"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"74d919e95ac239ffadaa4ffeb30a5e447b0d69be","unresolved":false,"context_lines":[{"line_number":3686,"context_line":"            num_ports \u003d hardware.get_number_of_serial_ports("},{"line_number":3687,"context_line":"                flavor, image_meta)"},{"line_number":3688,"context_line":"            # We will create an serial console char devices in other place."},{"line_number":3689,"context_line":"            self._check_number_of_serial_ports(guest_arch, num_ports + 1)"},{"line_number":3690,"context_line":"            for port in six.moves.range(num_ports):"},{"line_number":3691,"context_line":"                if guest_arch in (arch.S390, arch.S390X):"},{"line_number":3692,"context_line":"                    console \u003d vconfig.LibvirtConfigGuestConsole()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_143d01dd","line":3689,"updated":"2015-07-31 10:44:56.000000000","message":"Why this: num_ports + 1? Can you make this simple as possible:\n\n  if virt_type in (\"qemu\", \"kvm\") and\n     guest_arch in (arch.S390, arch.S390X) and\n     num_ports \u003e QEMU_MAX_SERIAL_PORTS:\n    raise SerialPortNumberLimitExceeded( ...)","commit_id":"218fe7af914e9382effcde268244dcd31921d467"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5798901d3d2e4eddae9650a91bef1734e3f5e91d","unresolved":false,"context_lines":[{"line_number":3686,"context_line":"            num_ports \u003d hardware.get_number_of_serial_ports("},{"line_number":3687,"context_line":"                flavor, image_meta)"},{"line_number":3688,"context_line":"            # We will create an serial console char devices in other place."},{"line_number":3689,"context_line":"            self._check_number_of_serial_ports(guest_arch, num_ports + 1)"},{"line_number":3690,"context_line":"            for port in six.moves.range(num_ports):"},{"line_number":3691,"context_line":"                if guest_arch in (arch.S390, arch.S390X):"},{"line_number":3692,"context_line":"                    console \u003d vconfig.LibvirtConfigGuestConsole()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_a1207ff9","line":3689,"in_reply_to":"3a50d1a3_0ac95cac","updated":"2015-07-31 15:46:16.000000000","message":"Hum I do not know if we want to continue to set this terminal when we explicitly request for serial port... at least\n\n  QEMU_MAX_SERIAL_PORTS \u003d3  # Qemu supports 4 serial consoles, we remove 1 because of the PTY one defined","commit_id":"218fe7af914e9382effcde268244dcd31921d467"},{"author":{"_account_id":14447,"name":"lyanchih","email":"lyan.h@inwinstack.com","username":"lyanchih"},"change_message_id":"d845cf1c0420c668696a72f312109969c5fb0834","unresolved":false,"context_lines":[{"line_number":3686,"context_line":"            num_ports \u003d hardware.get_number_of_serial_ports("},{"line_number":3687,"context_line":"                flavor, image_meta)"},{"line_number":3688,"context_line":"            # We will create an serial console char devices in other place."},{"line_number":3689,"context_line":"            self._check_number_of_serial_ports(guest_arch, num_ports + 1)"},{"line_number":3690,"context_line":"            for port in six.moves.range(num_ports):"},{"line_number":3691,"context_line":"                if guest_arch in (arch.S390, arch.S390X):"},{"line_number":3692,"context_line":"                    console \u003d vconfig.LibvirtConfigGuestConsole()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_0ac95cac","line":3689,"in_reply_to":"3a50d1a3_143d01dd","updated":"2015-07-31 11:13:07.000000000","message":"There is another serial console will be created at following line:\nhttps://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L4040","commit_id":"218fe7af914e9382effcde268244dcd31921d467"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"4b09430e8f26d36b5ba4d5d13720a89918d0f2a0","unresolved":false,"context_lines":[{"line_number":3670,"context_line":"        serial_ports_limit \u003d None"},{"line_number":3671,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":3672,"context_line":"        if virt_type in (\"kvm\", \"qemu\"):"},{"line_number":3673,"context_line":"            serial_ports_limit \u003d QEMU_MAX_SERIAL_PORTS"},{"line_number":3674,"context_line":""},{"line_number":3675,"context_line":"        if serial_ports_limit is not None and num_ports \u003e serial_ports_limit:"},{"line_number":3676,"context_line":"            raise exception.SerialPortNumberLimitExceeded("}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_285c1618","line":3673,"updated":"2015-08-03 11:28:05.000000000","message":"I still have to double-check it, but I assume that the platform s390x (IBM z Systems) doesn\u0027t have this upper limit for the serial console. They use the \u003cconsole\u003e tag in the domain XML of the guest to enable the serial console feature.","commit_id":"2666aba8be761f9e489377aaccb6396e078d29ba"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"a86a01170e2aca0bb141eebeed6107a6de309311","unresolved":false,"context_lines":[{"line_number":3672,"context_line":"        if virt_type in (\"kvm\", \"qemu\"):"},{"line_number":3673,"context_line":"            serial_ports_limit \u003d QEMU_MAX_SERIAL_PORTS"},{"line_number":3674,"context_line":""},{"line_number":3675,"context_line":"        if serial_ports_limit is not None and num_ports \u003e serial_ports_limit:"},{"line_number":3676,"context_line":"            raise exception.SerialPortNumberLimitExceeded("},{"line_number":3677,"context_line":"                allowed\u003dserial_ports_limit, virt_type\u003dvirt_type)"},{"line_number":3678,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_7db668dd","line":3675,"updated":"2015-08-03 05:36:26.000000000","message":"The only condition when serial_ports_limit won\u0027t be None seems to be covered in your if statement above (if virt_type in ...)\nIf that\u0027s true, it\u0027s probably a good idea to move the code up...something like this:\n\nif virt_type in (\"kvm, \"qemu\") and num_ports \u003e QEMU_MAX_SERIAL_PORTS:\n    raise exception.xyz...\n\nSaves you from using an additional variable and a few lines of code.","commit_id":"2666aba8be761f9e489377aaccb6396e078d29ba"},{"author":{"_account_id":14447,"name":"lyanchih","email":"lyan.h@inwinstack.com","username":"lyanchih"},"change_message_id":"b7f52bca0b36d44e7520f2b7c48fb620fdf73886","unresolved":false,"context_lines":[{"line_number":3672,"context_line":"        if virt_type in (\"kvm\", \"qemu\"):"},{"line_number":3673,"context_line":"            serial_ports_limit \u003d QEMU_MAX_SERIAL_PORTS"},{"line_number":3674,"context_line":""},{"line_number":3675,"context_line":"        if serial_ports_limit is not None and num_ports \u003e serial_ports_limit:"},{"line_number":3676,"context_line":"            raise exception.SerialPortNumberLimitExceeded("},{"line_number":3677,"context_line":"                allowed\u003dserial_ports_limit, virt_type\u003dvirt_type)"},{"line_number":3678,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_b8515edb","line":3675,"in_reply_to":"3a50d1a3_7db668dd","updated":"2015-08-03 06:37:08.000000000","message":"I though still have other virt type, such as lxc, uml, and xen.\nBut I don\u0027t know whether those virt type have limit of serial console.\nI don\u0027t append them in statement above.\nIf this concern is not necessary, I will remove them and make simple.","commit_id":"2666aba8be761f9e489377aaccb6396e078d29ba"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"d71496e173b0c86374edaab3ff5a1740e7a560e9","unresolved":false,"context_lines":[{"line_number":3697,"context_line":"            num_ports \u003d hardware.get_number_of_serial_ports("},{"line_number":3698,"context_line":"                flavor, image_meta)"},{"line_number":3699,"context_line":"            for port in six.moves.range(num_ports):"},{"line_number":3700,"context_line":"                if guest_arch in (arch.S390, arch.S390X):"},{"line_number":3701,"context_line":"                    console \u003d vconfig.LibvirtConfigGuestConsole()"},{"line_number":3702,"context_line":"                else:"},{"line_number":3703,"context_line":"                    console \u003d vconfig.LibvirtConfigGuestSerial()"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_9ec4f040","side":"PARENT","line":3700,"updated":"2015-08-04 08:42:25.000000000","message":"We should to rework this part like:\n   \n  if guest_arch in (arch.S390, arch.S390X):\n    kind \u003d vconfig.LibvirtConfigGuestConsole\n  else:\n    kind \u003d vconfig.LibvirtConfigGuestSerial\n  self._check_number_of_serial_ports(kind, num_ports)\n  for port in six.moves.range(num_ports):\n    console \u003d kind()\n    ...\n\nWith method _check_number_of_serial_ports like to check whether kind is LibvirtConfigGuestSerial","commit_id":"4a96b90623ffd3814131b37c622e75e4dae812fa"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"1408816765b5a0b0f4e0cd01f61465fade55a5ab","unresolved":false,"context_lines":[{"line_number":3693,"context_line":"        serial_ports_limit \u003d None"},{"line_number":3694,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":3695,"context_line":"        if virt_type in (\"kvm\", \"qemu\"):"},{"line_number":3696,"context_line":"            serial_ports_limit \u003d QEMU_MAX_SERIAL_PORTS"},{"line_number":3697,"context_line":""},{"line_number":3698,"context_line":"        if serial_ports_limit is not None and num_ports \u003e serial_ports_limit:"},{"line_number":3699,"context_line":"            raise exception.SerialPortNumberLimitExceeded("}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_7be3c6d8","line":3696,"updated":"2015-08-03 11:30:13.000000000","message":"I still have to double-check it, but I assume that the platform s390x (IBM z Systems) doesn\u0027t have this upper limit for the serial console. They use the \u003cconsole\u003e tag in the domain XML of the guest to enable the serial console feature.","commit_id":"1a4c6361c28fb8f95d660022b9b5e5dbb0fa0f90"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"d71496e173b0c86374edaab3ff5a1740e7a560e9","unresolved":false,"context_lines":[{"line_number":3693,"context_line":"        serial_ports_limit \u003d None"},{"line_number":3694,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":3695,"context_line":"        if virt_type in (\"kvm\", \"qemu\"):"},{"line_number":3696,"context_line":"            serial_ports_limit \u003d QEMU_MAX_SERIAL_PORTS"},{"line_number":3697,"context_line":""},{"line_number":3698,"context_line":"        if serial_ports_limit is not None and num_ports \u003e serial_ports_limit:"},{"line_number":3699,"context_line":"            raise exception.SerialPortNumberLimitExceeded("}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_1edd4042","line":3696,"in_reply_to":"1a4dcd0f_8e77fed3","updated":"2015-08-04 08:42:25.000000000","message":"+1 - this patch should only address serial console.","commit_id":"1a4c6361c28fb8f95d660022b9b5e5dbb0fa0f90"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"a62d9fe2d5560e60ca3e242b14932901fbc99d1c","unresolved":false,"context_lines":[{"line_number":3693,"context_line":"        serial_ports_limit \u003d None"},{"line_number":3694,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":3695,"context_line":"        if virt_type in (\"kvm\", \"qemu\"):"},{"line_number":3696,"context_line":"            serial_ports_limit \u003d QEMU_MAX_SERIAL_PORTS"},{"line_number":3697,"context_line":""},{"line_number":3698,"context_line":"        if serial_ports_limit is not None and num_ports \u003e serial_ports_limit:"},{"line_number":3699,"context_line":"            raise exception.SerialPortNumberLimitExceeded("}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_8e77fed3","line":3696,"in_reply_to":"1a4dcd0f_c78171fd","updated":"2015-08-03 18:00:44.000000000","message":"On the s390x architecture we don\u0027t use the \"\u003cserial\u003e\" device, which is the restrictive device here. The domain XML of an instance on s390x with 6 \"serial consoles\" looks like [1] (see for multiple \"\u003cconsole\u003e\" devices). This domain XML *cannot* be executed on a x86 platform. I think it would be better to exclude s390x from this number check.\n\n[1] http://paste.openstack.org/show/406781/","commit_id":"1a4c6361c28fb8f95d660022b9b5e5dbb0fa0f90"},{"author":{"_account_id":14447,"name":"lyanchih","email":"lyan.h@inwinstack.com","username":"lyanchih"},"change_message_id":"bf8999e3f5c313187649e4c92d9447a27482f93e","unresolved":false,"context_lines":[{"line_number":3693,"context_line":"        serial_ports_limit \u003d None"},{"line_number":3694,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":3695,"context_line":"        if virt_type in (\"kvm\", \"qemu\"):"},{"line_number":3696,"context_line":"            serial_ports_limit \u003d QEMU_MAX_SERIAL_PORTS"},{"line_number":3697,"context_line":""},{"line_number":3698,"context_line":"        if serial_ports_limit is not None and num_ports \u003e serial_ports_limit:"},{"line_number":3699,"context_line":"            raise exception.SerialPortNumberLimitExceeded("}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_c78171fd","line":3696,"in_reply_to":"3a50d1a3_7be3c6d8","updated":"2015-08-03 16:09:46.000000000","message":"Thanks for your check. I don\u0027t have such platform.....\nI had modify code replace LibvirtConfigGuestSerial to LibvirtConfigGuestConsole in libvirt/qemu_x86.\nQemu will complain \"libvirtError: unsupported configuration: Only the first console can be a serial port\". Following is xml\n\u003cconsole type\u003d\"tcp\"\u003e\n    \u003csource host\u003d\"127.0.0.1\" mode\u003d\"bind\" service\u003d\"10000\"/\u003e\n\u003c/console\u003e\n\u003cconsole type\u003d\"pty\"/\u003e\nTherefore I\u0027m confuse whether s590x can support multiple console.\nBesides it can work if there is only one kind of type which is tcp or pty.","commit_id":"1a4c6361c28fb8f95d660022b9b5e5dbb0fa0f90"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"87b9a5577e21888651e8d124244cda8c6c93f3e8","unresolved":false,"context_lines":[{"line_number":3690,"context_line":"            guest.features.append(hv)"},{"line_number":3691,"context_line":""},{"line_number":3692,"context_line":"    def _check_number_of_char_devices(self, console_cls, num_ports):"},{"line_number":3693,"context_line":"        if console_cls \u003d\u003d vconfig.LibvirtConfigGuestConsole:"},{"line_number":3694,"context_line":"            return"},{"line_number":3695,"context_line":""},{"line_number":3696,"context_line":"        serial_ports_limit \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_aa2da647","line":3693,"updated":"2015-08-05 08:14:56.000000000","message":"It was probably better to pass this condition only if console_cls is equal to vconfig.LibvirtConfigGuestSerial or if not equal to LibvirtConfigGuestSerial, just return.","commit_id":"b7f0e906f6b1ba5b0d6ea3be9e1228cf3b4acdc4"},{"author":{"_account_id":14447,"name":"lyanchih","email":"lyan.h@inwinstack.com","username":"lyanchih"},"change_message_id":"320ff158c9aef12515cf3e6bc705a0abd11d03c4","unresolved":false,"context_lines":[{"line_number":3690,"context_line":"            guest.features.append(hv)"},{"line_number":3691,"context_line":""},{"line_number":3692,"context_line":"    def _check_number_of_char_devices(self, console_cls, num_ports):"},{"line_number":3693,"context_line":"        if console_cls \u003d\u003d vconfig.LibvirtConfigGuestConsole:"},{"line_number":3694,"context_line":"            return"},{"line_number":3695,"context_line":""},{"line_number":3696,"context_line":"        serial_ports_limit \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_430ac822","line":3693,"in_reply_to":"1a4dcd0f_aa2da647","updated":"2015-08-05 10:30:09.000000000","message":"I originally though it can also check number of limit in other char devices like channel device. But this check is focus on serial port limit. Therefore it should only concern with serial device.","commit_id":"b7f0e906f6b1ba5b0d6ea3be9e1228cf3b4acdc4"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"e2d5490d49e4dd370d55d25f28b5a0789fa08ddb","unresolved":false,"context_lines":[{"line_number":399,"context_line":"MIN_LIBVIRT_SET_ADMIN_PASSWD \u003d (1, 2, 16)"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"# number of serial console limit"},{"line_number":402,"context_line":"# Qemu supports 4 serial consoles, we remove 1 because of the PTY one defined"},{"line_number":403,"context_line":"QEMU_MAX_SERIAL_PORTS \u003d 3"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_31a54f46","line":402,"updated":"2015-08-06 08:38:52.000000000","message":"We need to know whether we can remove that PTY one when user specifically ask for serial ports","commit_id":"17f195a09af9a550f4ec911ee0b66c6c54ee57d3"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"687056779533b36c0732150869466f486fc2f569","unresolved":false,"context_lines":[{"line_number":399,"context_line":"MIN_LIBVIRT_SET_ADMIN_PASSWD \u003d (1, 2, 16)"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"# number of serial console limit"},{"line_number":402,"context_line":"# Qemu supports 4 serial consoles, we remove 1 because of the PTY one defined"},{"line_number":403,"context_line":"QEMU_MAX_SERIAL_PORTS \u003d 3"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_acad8685","line":402,"in_reply_to":"1a4dcd0f_31a54f46","updated":"2015-08-06 08:53:20.000000000","message":"I think that\u0027s something to consider in a separate patch. This should just apply the limit based on current impl.","commit_id":"17f195a09af9a550f4ec911ee0b66c6c54ee57d3"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"925814d92df3592445ce2ea90c77e38764984550","unresolved":false,"context_lines":[{"line_number":399,"context_line":"MIN_LIBVIRT_SET_ADMIN_PASSWD \u003d (1, 2, 16)"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"# number of serial console limit"},{"line_number":402,"context_line":"# Qemu supports 4 serial consoles, we remove 1 because of the PTY one defined"},{"line_number":403,"context_line":"QEMU_MAX_SERIAL_PORTS \u003d 3"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_7d6c0635","line":402,"in_reply_to":"1a4dcd0f_acad8685","updated":"2015-08-06 09:54:52.000000000","message":"ack","commit_id":"17f195a09af9a550f4ec911ee0b66c6c54ee57d3"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"8a6cb32b5abdf1731df16251d2c90555e09143a5","unresolved":false,"context_lines":[{"line_number":400,"context_line":"MIN_LIBVIRT_SET_ADMIN_PASSWD \u003d (1, 2, 16)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"# vhostuser queues support"},{"line_number":403,"context_line":"MIN_LIBVIRT_VHOSTUSER_MQ \u003d (1, 2, 17)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"# number of serial console limit"},{"line_number":406,"context_line":"# Qemu supports 4 serial consoles, we remove 1 because of the PTY one defined"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_b2e47dac","line":403,"updated":"2015-08-10 07:20:29.000000000","message":"This is not used in this patch set. Maybe it slipped in by mistake?","commit_id":"d1fc5adbc1fba8652f3e7d39944a15822a2f0719"},{"author":{"_account_id":14447,"name":"lyanchih","email":"lyan.h@inwinstack.com","username":"lyanchih"},"change_message_id":"f00c3f837ea53e997deb95920713ad968e5089ad","unresolved":false,"context_lines":[{"line_number":400,"context_line":"MIN_LIBVIRT_SET_ADMIN_PASSWD \u003d (1, 2, 16)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"# vhostuser queues support"},{"line_number":403,"context_line":"MIN_LIBVIRT_VHOSTUSER_MQ \u003d (1, 2, 17)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"# number of serial console limit"},{"line_number":406,"context_line":"# Qemu supports 4 serial consoles, we remove 1 because of the PTY one defined"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_8d1604a6","line":403,"in_reply_to":"1a4dcd0f_b2e47dac","updated":"2015-08-10 07:53:04.000000000","message":"Oh! This was added when resolve conflict. Thanks for notify.","commit_id":"d1fc5adbc1fba8652f3e7d39944a15822a2f0719"},{"author":{"_account_id":14358,"name":"Marian Horban","email":"m.horban@gmail.com","username":"mhorban"},"change_message_id":"f0109567d30b9aff0f6fdcf302b23d095878bd07","unresolved":false,"context_lines":[{"line_number":452,"context_line":""},{"line_number":453,"context_line":"# number of serial console limit"},{"line_number":454,"context_line":"# Qemu supports 4 serial consoles, we remove 1 because of the PTY one defined"},{"line_number":455,"context_line":"QEMU_MAX_SERIAL_PORTS \u003d 3"},{"line_number":456,"context_line":""},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"class LibvirtDriver(driver.ComputeDriver):"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_2a5aeff2","line":455,"updated":"2015-08-25 13:47:30.000000000","message":"It is confusing: qemu supports 4 serial consoles but QEMU_MAX_SERIAL_PORTS\u003d3. I think QEMU_MAX_SERIAL_PORTS should be 4 and serial_ports_limit variable should be QEMU_MAX_SERIAL_PORTS-1 with comment why we subtract 1.","commit_id":"d2c2e8dc9e26ccc8c06c52662d87e3b1eb19f1f3"},{"author":{"_account_id":14447,"name":"lyanchih","email":"lyan.h@inwinstack.com","username":"lyanchih"},"change_message_id":"d411829407a2556758dc902fb36cac51a769561f","unresolved":false,"context_lines":[{"line_number":452,"context_line":""},{"line_number":453,"context_line":"# number of serial console limit"},{"line_number":454,"context_line":"# Qemu supports 4 serial consoles, we remove 1 because of the PTY one defined"},{"line_number":455,"context_line":"QEMU_MAX_SERIAL_PORTS \u003d 3"},{"line_number":456,"context_line":""},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"class LibvirtDriver(driver.ComputeDriver):"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_a6085a81","line":455,"in_reply_to":"fa1b9901_2a5aeff2","updated":"2015-08-26 02:22:14.000000000","message":"Yes, it will be confuse with why we need to subtract 1. But it is still unavoidable even divide it into two constant variable.","commit_id":"d2c2e8dc9e26ccc8c06c52662d87e3b1eb19f1f3"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"d76fda91a7e69d2366be6f44c6fff6812b9fd90f","unresolved":false,"context_lines":[{"line_number":3842,"context_line":"        serial_ports_limit \u003d None"},{"line_number":3843,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":3844,"context_line":"        if virt_type in (\"kvm\", \"qemu\"):"},{"line_number":3845,"context_line":"            serial_ports_limit \u003d ALLOWED_QEMU_SERIAL_PORTS"},{"line_number":3846,"context_line":""},{"line_number":3847,"context_line":"        if serial_ports_limit is not None and num_ports \u003e serial_ports_limit:"},{"line_number":3848,"context_line":"            raise exception.SerialPortNumberLimitExceeded("}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_103e91b8","line":3845,"updated":"2015-10-02 09:11:56.000000000","message":"virt_type \u003d CONF.libvirt.virt_type\nif virt_type in (\"kvm\", \"qemu\"):\n        if (num_ports \u003e ALLOWED_QEMU_SERIAL_PORTS): \n                  raise\n\nseems ok?","commit_id":"0dd6e87676ad5ba8f2b2c2e984e24ce08bc754b0"},{"author":{"_account_id":14447,"name":"lyanchih","email":"lyan.h@inwinstack.com","username":"lyanchih"},"change_message_id":"dd0aa871bd6fa0e32c6398474c45b959f6244f31","unresolved":false,"context_lines":[{"line_number":3842,"context_line":"        serial_ports_limit \u003d None"},{"line_number":3843,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":3844,"context_line":"        if virt_type in (\"kvm\", \"qemu\"):"},{"line_number":3845,"context_line":"            serial_ports_limit \u003d ALLOWED_QEMU_SERIAL_PORTS"},{"line_number":3846,"context_line":""},{"line_number":3847,"context_line":"        if serial_ports_limit is not None and num_ports \u003e serial_ports_limit:"},{"line_number":3848,"context_line":"            raise exception.SerialPortNumberLimitExceeded("}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_7e6d2903","line":3845,"in_reply_to":"9a1a9d01_103e91b8","updated":"2015-10-05 02:57:12.000000000","message":"I though maybe other virt_type will have other value of ports limit. But this shouldn\u0027t been consider in this patch.I will modify this, thx.","commit_id":"0dd6e87676ad5ba8f2b2c2e984e24ce08bc754b0"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"d76fda91a7e69d2366be6f44c6fff6812b9fd90f","unresolved":false,"context_lines":[{"line_number":3858,"context_line":""},{"line_number":3859,"context_line":"            console_cls \u003d vconfig.LibvirtConfigGuestSerial"},{"line_number":3860,"context_line":"            if guest_arch in (arch.S390, arch.S390X):"},{"line_number":3861,"context_line":"                console_cls \u003d vconfig.LibvirtConfigGuestConsole"},{"line_number":3862,"context_line":"            self._check_number_of_serial_console(console_cls, num_ports)"},{"line_number":3863,"context_line":"            for port in six.moves.range(num_ports):"},{"line_number":3864,"context_line":"                console \u003d console_cls()"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_f0399dd9","line":3861,"updated":"2015-10-02 09:11:56.000000000","message":"maybe \nif xxx in ()\n     cls \u003d vconfig.LibvirtConfigGuestConsole\nelse:\n     cls \u003d vconfig.LibvirtConfigGuestSerial\n     _check_number_of_serial_console() \n\nlooks better","commit_id":"0dd6e87676ad5ba8f2b2c2e984e24ce08bc754b0"},{"author":{"_account_id":14447,"name":"lyanchih","email":"lyan.h@inwinstack.com","username":"lyanchih"},"change_message_id":"dd0aa871bd6fa0e32c6398474c45b959f6244f31","unresolved":false,"context_lines":[{"line_number":3858,"context_line":""},{"line_number":3859,"context_line":"            console_cls \u003d vconfig.LibvirtConfigGuestSerial"},{"line_number":3860,"context_line":"            if guest_arch in (arch.S390, arch.S390X):"},{"line_number":3861,"context_line":"                console_cls \u003d vconfig.LibvirtConfigGuestConsole"},{"line_number":3862,"context_line":"            self._check_number_of_serial_console(console_cls, num_ports)"},{"line_number":3863,"context_line":"            for port in six.moves.range(num_ports):"},{"line_number":3864,"context_line":"                console \u003d console_cls()"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_7e3be9eb","line":3861,"in_reply_to":"9a1a9d01_f0399dd9","updated":"2015-10-05 02:57:12.000000000","message":"done","commit_id":"0dd6e87676ad5ba8f2b2c2e984e24ce08bc754b0"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"121a166bbbad290d7b30c7696ecb164162e29600","unresolved":false,"context_lines":[{"line_number":3840,"context_line":""},{"line_number":3841,"context_line":"    def _check_number_of_serial_console(self, console_cls, num_ports):"},{"line_number":3842,"context_line":"        if not console_cls \u003d\u003d vconfig.LibvirtConfigGuestSerial:"},{"line_number":3843,"context_line":"            return"},{"line_number":3844,"context_line":""},{"line_number":3845,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":3846,"context_line":"        if (virt_type in (\"kvm\", \"qemu\") and"}],"source_content_type":"text/x-python","patch_set":18,"id":"7a2fa921_c5834855","line":3843,"updated":"2015-10-07 12:13:35.000000000","message":"this can be removed ,right?","commit_id":"d212d71c38152fd441c8cfc6cba537ea22510cb5"},{"author":{"_account_id":14447,"name":"lyanchih","email":"lyan.h@inwinstack.com","username":"lyanchih"},"change_message_id":"234ef576a4494f0ab8436574c6a2ea78a6ec5328","unresolved":false,"context_lines":[{"line_number":3840,"context_line":""},{"line_number":3841,"context_line":"    def _check_number_of_serial_console(self, console_cls, num_ports):"},{"line_number":3842,"context_line":"        if not console_cls \u003d\u003d vconfig.LibvirtConfigGuestSerial:"},{"line_number":3843,"context_line":"            return"},{"line_number":3844,"context_line":""},{"line_number":3845,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":3846,"context_line":"        if (virt_type in (\"kvm\", \"qemu\") and"}],"source_content_type":"text/x-python","patch_set":18,"id":"7a2fa921_55334614","line":3843,"in_reply_to":"7a2fa921_c5834855","updated":"2015-10-08 03:34:49.000000000","message":"uh......yes...thx.","commit_id":"d212d71c38152fd441c8cfc6cba537ea22510cb5"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"763d30d1a6c2ecc957dfdc9106f16a3c28a6494e","unresolved":false,"context_lines":[{"line_number":4188,"context_line":"                hv.vapic \u003d True"},{"line_number":4189,"context_line":"            guest.features.append(hv)"},{"line_number":4190,"context_line":""},{"line_number":4191,"context_line":"    def _check_number_of_serial_console(self, console_cls, num_ports):"},{"line_number":4192,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":4193,"context_line":"        if (virt_type in (\"kvm\", \"qemu\") and"},{"line_number":4194,"context_line":"            num_ports \u003e ALLOWED_QEMU_SERIAL_PORTS):"}],"source_content_type":"text/x-python","patch_set":21,"id":"5aef4532_772b5095","line":4191,"range":{"start_line":4191,"start_character":46,"end_line":4191,"end_character":57},"updated":"2016-03-11 09:07:48.000000000","message":"This argument is unused.","commit_id":"f194561a63efc807afa04c5ed462f8392afda04b"},{"author":{"_account_id":14447,"name":"lyanchih","email":"lyan.h@inwinstack.com","username":"lyanchih"},"change_message_id":"dd36a5a867488f5fcedac71eaddc590e81175694","unresolved":false,"context_lines":[{"line_number":4188,"context_line":"                hv.vapic \u003d True"},{"line_number":4189,"context_line":"            guest.features.append(hv)"},{"line_number":4190,"context_line":""},{"line_number":4191,"context_line":"    def _check_number_of_serial_console(self, console_cls, num_ports):"},{"line_number":4192,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":4193,"context_line":"        if (virt_type in (\"kvm\", \"qemu\") and"},{"line_number":4194,"context_line":"            num_ports \u003e ALLOWED_QEMU_SERIAL_PORTS):"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa0719c6_cca9a87d","line":4191,"range":{"start_line":4191,"start_character":46,"end_line":4191,"end_character":57},"in_reply_to":"5aef4532_772b5095","updated":"2016-03-22 08:45:45.000000000","message":"Done","commit_id":"f194561a63efc807afa04c5ed462f8392afda04b"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"b008457034d11a8a244590ab97a53f54c5a74ba6","unresolved":false,"context_lines":[{"line_number":4188,"context_line":"                hv.vapic \u003d True"},{"line_number":4189,"context_line":"            guest.features.append(hv)"},{"line_number":4190,"context_line":""},{"line_number":4191,"context_line":"    def _check_number_of_serial_console(self, num_ports):"},{"line_number":4192,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":4193,"context_line":"        if (virt_type in (\"kvm\", \"qemu\") and"},{"line_number":4194,"context_line":"            num_ports \u003e ALLOWED_QEMU_SERIAL_PORTS):"}],"source_content_type":"text/x-python","patch_set":22,"id":"fa0719c6_add17259","line":4191,"updated":"2016-03-23 16:41:17.000000000","message":"It\u0027s more like a static method. We do not use \u0027self\u0027.\n\n  @staticmethod\n  _check_number_of_serial_console(num_ports)","commit_id":"b67614fe878ea3b6bb6240f9989a21c2c3c0b2df"}]}
