)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"a9d3553f960b22a2941a6ad33f7eb2ec27502db4","unresolved":false,"context_lines":[{"line_number":7,"context_line":"libvirt: do not return serial address if disabled on destination"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"During live migration, the check on destination host is returning the"},{"line_number":10,"context_line":"address of serial proxy even if diabled. This commit is adding a"},{"line_number":11,"context_line":"condition to avoid such case."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I01dc0424ea3cf5576ed9d2b49a7a3e458324fbe4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7a77a97e_1d32fbf1","line":10,"range":{"start_line":10,"start_character":32,"end_line":10,"end_character":39},"updated":"2016-11-15 10:59:37.000000000","message":"s/disabled","commit_id":"d2b0e319e204eb9cf0804a81b1639434f3b2a24c"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"a9d3553f960b22a2941a6ad33f7eb2ec27502db4","unresolved":false,"context_lines":[{"line_number":6857,"context_line":"                       \u0027_create_shared_storage_test_file\u0027,"},{"line_number":6858,"context_line":"                       return_value\u003d\u0027fake\u0027)"},{"line_number":6859,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027compareCPU\u0027)"},{"line_number":6860,"context_line":"    def test_check_can_live_migrate_dest_fills_listen_addrs("},{"line_number":6861,"context_line":"            self, mock_cpu, mock_test_file, mock_svc):"},{"line_number":6862,"context_line":"        # Tests that check_can_live_migrate_destination returns the listen"},{"line_number":6863,"context_line":"        # addresses required by check_can_live_migrate_source."}],"source_content_type":"text/x-python","patch_set":1,"id":"7a77a97e_20494a60","line":6860,"range":{"start_line":6860,"start_character":4,"end_line":6860,"end_character":59},"updated":"2016-11-15 10:59:37.000000000","message":"could you add a similar test for the case when serial console is disabled","commit_id":"d2b0e319e204eb9cf0804a81b1639434f3b2a24c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"aec57213aac59e50aab5400e9b1abf1cf2c2998b","unresolved":false,"context_lines":[{"line_number":6886,"context_line":"                       \u0027_create_shared_storage_test_file\u0027,"},{"line_number":6887,"context_line":"                       return_value\u003d\u0027fake\u0027)"},{"line_number":6888,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027compareCPU\u0027)"},{"line_number":6889,"context_line":"    def test_check_can_live_migrate_dest_ensure_serial_adds_not_set("},{"line_number":6890,"context_line":"            self, mock_cpu, mock_test_file, mock_svc):"},{"line_number":6891,"context_line":"        self.flags(proxyclient_address\u003d\u0027203.0.113.56\u0027, group\u003d\u0027serial_console\u0027)"},{"line_number":6892,"context_line":"        mock_cpu.return_value \u003d 1"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_74cce435","line":6889,"updated":"2016-11-15 12:37:43.000000000","message":"s/adds/addr :/","commit_id":"deb4182fbf32a7109e6f892314650012ff5cee17"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"a28d7c9cdad452d70c8162a4e280f3c27832ee4e","unresolved":false,"context_lines":[{"line_number":6888,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027compareCPU\u0027)"},{"line_number":6889,"context_line":"    def test_check_can_live_migrate_dest_ensure_serial_adds_not_set("},{"line_number":6890,"context_line":"            self, mock_cpu, mock_test_file, mock_svc):"},{"line_number":6891,"context_line":"        self.flags(proxyclient_address\u003d\u0027203.0.113.56\u0027, group\u003d\u0027serial_console\u0027)"},{"line_number":6892,"context_line":"        mock_cpu.return_value \u003d 1"},{"line_number":6893,"context_line":""},{"line_number":6894,"context_line":"        instance_ref \u003d objects.Instance(**self.test_instance)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_826157d6","line":6891,"updated":"2016-11-21 12:49:10.000000000","message":"nit: We could be explicit here, by adding the line:\n\n    self.flags(enabled\u003dFalse group\u003d\u0027serial_console\u0027)\n\n\"False\" is the default value for that config option, but it would improve the readability IMO.","commit_id":"1008bc71c0049f547342acdb192ef5c98b62d352"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"a28d7c9cdad452d70c8162a4e280f3c27832ee4e","unresolved":false,"context_lines":[{"line_number":6889,"context_line":"    def test_check_can_live_migrate_dest_ensure_serial_adds_not_set("},{"line_number":6890,"context_line":"            self, mock_cpu, mock_test_file, mock_svc):"},{"line_number":6891,"context_line":"        self.flags(proxyclient_address\u003d\u0027203.0.113.56\u0027, group\u003d\u0027serial_console\u0027)"},{"line_number":6892,"context_line":"        mock_cpu.return_value \u003d 1"},{"line_number":6893,"context_line":""},{"line_number":6894,"context_line":"        instance_ref \u003d objects.Instance(**self.test_instance)"},{"line_number":6895,"context_line":"        instance_ref.vcpu_model \u003d test_vcpu_model.fake_vcpumodel"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_6247db1d","line":6892,"updated":"2016-11-21 12:49:10.000000000","message":"nit: This mocking of a return value could be in the decorator declaration.","commit_id":"1008bc71c0049f547342acdb192ef5c98b62d352"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"a6819d4550018ac978a9da1518fd85c2f789d0fb","unresolved":false,"context_lines":[{"line_number":6899,"context_line":"        result \u003d drvr.check_can_live_migrate_destination("},{"line_number":6900,"context_line":"            self.context, instance_ref, compute_info, compute_info)"},{"line_number":6901,"context_line":""},{"line_number":6902,"context_line":"        self.assertEqual(\u0027\u0027, str(result.serial_listen_addr))"},{"line_number":6903,"context_line":""},{"line_number":6904,"context_line":"    @mock.patch.object(libvirt_driver.LibvirtDriver,"},{"line_number":6905,"context_line":"                       \u0027_create_shared_storage_test_file\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_aabfccfa","line":6902,"updated":"2016-11-22 14:58:20.000000000","message":"This assert statement will be change in ps5 to check for None, as this is the value which signals \"not-set\".","commit_id":"8a873d5dc80905969bd033606098f2d11a2c1318"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"a9d3553f960b22a2941a6ad33f7eb2ec27502db4","unresolved":false,"context_lines":[{"line_number":5448,"context_line":"        data.image_type \u003d CONF.libvirt.images_type"},{"line_number":5449,"context_line":"        data.graphics_listen_addr_vnc \u003d CONF.vnc.vncserver_listen"},{"line_number":5450,"context_line":"        data.graphics_listen_addr_spice \u003d CONF.spice.server_listen"},{"line_number":5451,"context_line":"        data.serial_listen_addr \u003d (CONF.serial_console.enabled"},{"line_number":5452,"context_line":"                                   and CONF.serial_console.proxyclient_address"},{"line_number":5453,"context_line":"                                   or \u0027\u0027)"},{"line_number":5454,"context_line":"        # Notes(eliqiao): block_migration and disk_over_commit are not"},{"line_number":5455,"context_line":"        # nullable, so just don\u0027t set them if they are None"},{"line_number":5456,"context_line":"        if block_migration is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a77a97e_1d7f5bab","line":5453,"range":{"start_line":5451,"start_character":34,"end_line":5453,"end_character":41},"updated":"2016-11-15 10:59:37.000000000","message":"my personal preference for this would be:\n(CONF.serial_console.proxyclient_address if CONF.serial_console.enabled else \u0027\u0027)","commit_id":"d2b0e319e204eb9cf0804a81b1639434f3b2a24c"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"42d1d03b0dbb75f5bca21a6f5fb9bacb1b112679","unresolved":false,"context_lines":[{"line_number":5450,"context_line":"        data.graphics_listen_addr_spice \u003d CONF.spice.server_listen"},{"line_number":5451,"context_line":"        data.serial_listen_addr \u003d (CONF.serial_console.enabled"},{"line_number":5452,"context_line":"                                   and CONF.serial_console.proxyclient_address"},{"line_number":5453,"context_line":"                                   or \u0027\u0027)"},{"line_number":5454,"context_line":"        # Notes(eliqiao): block_migration and disk_over_commit are not"},{"line_number":5455,"context_line":"        # nullable, so just don\u0027t set them if they are None"},{"line_number":5456,"context_line":"        if block_migration is not None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_1aa116aa","line":5453,"range":{"start_line":5453,"start_character":38,"end_line":5453,"end_character":40},"updated":"2016-11-15 14:25:14.000000000","message":"as discussed on irc, let\u0027s check that there is no difference between empty string and None here","commit_id":"deb4182fbf32a7109e6f892314650012ff5cee17"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"22e5e75f2da1aa61119c5eaad432a6b849ca59ca","unresolved":false,"context_lines":[{"line_number":5450,"context_line":"        data.graphics_listen_addr_spice \u003d CONF.spice.server_listen"},{"line_number":5451,"context_line":"        data.serial_listen_addr \u003d (CONF.serial_console.enabled"},{"line_number":5452,"context_line":"                                   and CONF.serial_console.proxyclient_address"},{"line_number":5453,"context_line":"                                   or \u0027\u0027)"},{"line_number":5454,"context_line":"        # Notes(eliqiao): block_migration and disk_over_commit are not"},{"line_number":5455,"context_line":"        # nullable, so just don\u0027t set them if they are None"},{"line_number":5456,"context_line":"        if block_migration is not None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_b0dda172","line":5453,"range":{"start_line":5453,"start_character":38,"end_line":5453,"end_character":40},"in_reply_to":"7a77a97e_1aa116aa","updated":"2016-11-15 14:57:02.000000000","message":"On the other hand - can we just leave this serial_listen_addr property without setting value?\n\nif CONF.serial_console.enabled:\n    data.serial_listen_addr \u003d CONF.serial_console.proxyclient_address\n\nWe don\u0027t check value of migrate_data.serial_listen_addr manually, but we use serial_listen_addr from migration.py that handles such case: https://github.com/openstack/nova/blob/4f33047d07f5a11b208c344fe206aba01cd8e6fe/nova/virt/libvirt/migration.py#L50","commit_id":"deb4182fbf32a7109e6f892314650012ff5cee17"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5e03f2df94d7a04e3d4e27690934c5390d927024","unresolved":false,"context_lines":[{"line_number":5450,"context_line":"        data.graphics_listen_addr_spice \u003d CONF.spice.server_listen"},{"line_number":5451,"context_line":"        data.serial_listen_addr \u003d (CONF.serial_console.enabled"},{"line_number":5452,"context_line":"                                   and CONF.serial_console.proxyclient_address"},{"line_number":5453,"context_line":"                                   or \u0027\u0027)"},{"line_number":5454,"context_line":"        # Notes(eliqiao): block_migration and disk_over_commit are not"},{"line_number":5455,"context_line":"        # nullable, so just don\u0027t set them if they are None"},{"line_number":5456,"context_line":"        if block_migration is not None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_70a5c902","line":5453,"in_reply_to":"7a77a97e_1aa116aa","updated":"2016-11-15 14:55:24.000000000","message":"What do you mean ? we never pass in a case where proxyclient_address is None","commit_id":"deb4182fbf32a7109e6f892314650012ff5cee17"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"27edbe11eb0fa9053b1a05e019f4b89e17a7c4de","unresolved":false,"context_lines":[{"line_number":5450,"context_line":"        data.graphics_listen_addr_spice \u003d CONF.spice.server_listen"},{"line_number":5451,"context_line":"        data.serial_listen_addr \u003d (CONF.serial_console.enabled"},{"line_number":5452,"context_line":"                                   and CONF.serial_console.proxyclient_address"},{"line_number":5453,"context_line":"                                   or \u0027\u0027)"},{"line_number":5454,"context_line":"        # Notes(eliqiao): block_migration and disk_over_commit are not"},{"line_number":5455,"context_line":"        # nullable, so just don\u0027t set them if they are None"},{"line_number":5456,"context_line":"        if block_migration is not None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_f090f997","line":5453,"in_reply_to":"7a77a97e_70a5c902","updated":"2016-11-15 14:56:27.000000000","message":"At least I can remove that condition https://github.com/openstack/nova/blob/master/nova/virt/libvirt/migration.py#L53","commit_id":"deb4182fbf32a7109e6f892314650012ff5cee17"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f7c1d554720ec724dedd01814fb339d7130b8e00","unresolved":false,"context_lines":[{"line_number":5450,"context_line":"        data.graphics_listen_addr_spice \u003d CONF.spice.server_listen"},{"line_number":5451,"context_line":"        data.serial_listen_addr \u003d (CONF.serial_console.enabled"},{"line_number":5452,"context_line":"                                   and CONF.serial_console.proxyclient_address"},{"line_number":5453,"context_line":"                                   or \u0027\u0027)"},{"line_number":5454,"context_line":"        # Notes(eliqiao): block_migration and disk_over_commit are not"},{"line_number":5455,"context_line":"        # nullable, so just don\u0027t set them if they are None"},{"line_number":5456,"context_line":"        if block_migration is not None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_3fc1242f","line":5453,"in_reply_to":"7a77a97e_b0dda172","updated":"2016-11-16 16:19:34.000000000","message":"Please see: https://review.openstack.org/#/c/398389/1","commit_id":"deb4182fbf32a7109e6f892314650012ff5cee17"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"a28d7c9cdad452d70c8162a4e280f3c27832ee4e","unresolved":false,"context_lines":[{"line_number":5448,"context_line":"        data.image_type \u003d CONF.libvirt.images_type"},{"line_number":5449,"context_line":"        data.graphics_listen_addr_vnc \u003d CONF.vnc.vncserver_listen"},{"line_number":5450,"context_line":"        data.graphics_listen_addr_spice \u003d CONF.spice.server_listen"},{"line_number":5451,"context_line":"        data.serial_listen_addr \u003d (CONF.serial_console.enabled"},{"line_number":5452,"context_line":"                                   and CONF.serial_console.proxyclient_address"},{"line_number":5453,"context_line":"                                   or \u0027\u0027)"},{"line_number":5454,"context_line":"        # Notes(eliqiao): block_migration and disk_over_commit are not"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_a773c514","line":5451,"updated":"2016-11-21 12:49:10.000000000","message":"Today I learned that this is the same as:\n\n    data.serial_listen_addr \u003d CONF.serial_console.proxyclient_address if CONF.serial_console.enabled else \u0027\u0027\n\nI did not expect this. Python is funny sometimes.","commit_id":"1008bc71c0049f547342acdb192ef5c98b62d352"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d823ea7cd31c1ae37615cee77867beb8f06e78be","unresolved":false,"context_lines":[{"line_number":5450,"context_line":"        data.graphics_listen_addr_spice \u003d CONF.spice.server_listen"},{"line_number":5451,"context_line":"        data.serial_listen_addr \u003d (CONF.serial_console.enabled"},{"line_number":5452,"context_line":"                                   and CONF.serial_console.proxyclient_address"},{"line_number":5453,"context_line":"                                   or \u0027\u0027)"},{"line_number":5454,"context_line":"        # Notes(eliqiao): block_migration and disk_over_commit are not"},{"line_number":5455,"context_line":"        # nullable, so just don\u0027t set them if they are None"},{"line_number":5456,"context_line":"        if block_migration is not None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_9200fb67","line":5453,"updated":"2016-11-18 17:41:05.000000000","message":"Why do this? Now people have to consider whether the field is really an address or an empty string. Why not just set it to None if this feature is disabled? This seems very strange to me.","commit_id":"1008bc71c0049f547342acdb192ef5c98b62d352"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"34978e16afb60c45a5f12fbbf27336ca89ce4e74","unresolved":false,"context_lines":[{"line_number":5450,"context_line":"        data.graphics_listen_addr_spice \u003d CONF.spice.server_listen"},{"line_number":5451,"context_line":"        data.serial_listen_addr \u003d (CONF.serial_console.enabled"},{"line_number":5452,"context_line":"                                   and CONF.serial_console.proxyclient_address"},{"line_number":5453,"context_line":"                                   or \u0027\u0027)"},{"line_number":5454,"context_line":"        # Notes(eliqiao): block_migration and disk_over_commit are not"},{"line_number":5455,"context_line":"        # nullable, so just don\u0027t set them if they are None"},{"line_number":5456,"context_line":"        if block_migration is not None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_c0998fd2","line":5453,"in_reply_to":"7a77a97e_9200fb67","updated":"2016-11-21 10:50:30.000000000","message":"You way to see that works, it\u0027s just an other point of view;\n\n - We want to avoid any bad conversions like: str(data.serial_listen_addr) which is going to return \u0027none\u0027 and which is going to be considered as true\n - serial_listen_addr has been defined as a StringField, seems more natural to pass a string.","commit_id":"1008bc71c0049f547342acdb192ef5c98b62d352"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"a28d7c9cdad452d70c8162a4e280f3c27832ee4e","unresolved":false,"context_lines":[{"line_number":5450,"context_line":"        data.graphics_listen_addr_spice \u003d CONF.spice.server_listen"},{"line_number":5451,"context_line":"        data.serial_listen_addr \u003d (CONF.serial_console.enabled"},{"line_number":5452,"context_line":"                                   and CONF.serial_console.proxyclient_address"},{"line_number":5453,"context_line":"                                   or \u0027\u0027)"},{"line_number":5454,"context_line":"        # Notes(eliqiao): block_migration and disk_over_commit are not"},{"line_number":5455,"context_line":"        # nullable, so just don\u0027t set them if they are None"},{"line_number":5456,"context_line":"        if block_migration is not None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_c72fe1a5","line":5453,"in_reply_to":"7a77a97e_c0998fd2","updated":"2016-11-21 12:49:10.000000000","message":"Correct me if I\u0027m wrong, but my assumption was that having \u0027\u0027 or None isn\u0027t important as we can check with:\n\n    if data.serial_listen_addr:\n        # do stuff\n\nThat catches both cases, an empty string or None. IOW, I don\u0027t see the point here, to be honest.","commit_id":"1008bc71c0049f547342acdb192ef5c98b62d352"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7b2c747bc2bf63f4e5fae10aec8e543429b2b094","unresolved":false,"context_lines":[{"line_number":5464,"context_line":"        data.graphics_listen_addr_spice \u003d CONF.spice.server_listen"},{"line_number":5465,"context_line":"        data.serial_listen_addr \u003d (CONF.serial_console.enabled"},{"line_number":5466,"context_line":"                                   and CONF.serial_console.proxyclient_address"},{"line_number":5467,"context_line":"                                   or \u0027\u0027)"},{"line_number":5468,"context_line":"        # Notes(eliqiao): block_migration and disk_over_commit are not"},{"line_number":5469,"context_line":"        # nullable, so just don\u0027t set them if they are None"},{"line_number":5470,"context_line":"        if block_migration is not None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_79914d52","line":5467,"updated":"2016-11-21 15:24:44.000000000","message":"This should be \"or None\".","commit_id":"8a873d5dc80905969bd033606098f2d11a2c1318"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"a6819d4550018ac978a9da1518fd85c2f789d0fb","unresolved":false,"context_lines":[{"line_number":5464,"context_line":"        data.graphics_listen_addr_spice \u003d CONF.spice.server_listen"},{"line_number":5465,"context_line":"        data.serial_listen_addr \u003d (CONF.serial_console.enabled"},{"line_number":5466,"context_line":"                                   and CONF.serial_console.proxyclient_address"},{"line_number":5467,"context_line":"                                   or \u0027\u0027)"},{"line_number":5468,"context_line":"        # Notes(eliqiao): block_migration and disk_over_commit are not"},{"line_number":5469,"context_line":"        # nullable, so just don\u0027t set them if they are None"},{"line_number":5470,"context_line":"        if block_migration is not None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_2aec9c28","line":5467,"in_reply_to":"7a77a97e_79914d52","updated":"2016-11-22 14:58:20.000000000","message":"DONE. In ps5, \"serial_listen_addr \u003d\u003d None\" will signal that the serial console feature is deactivated on the live-migration target node.","commit_id":"8a873d5dc80905969bd033606098f2d11a2c1318"}],"nova/virt/libvirt/migration.py":[{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"743ed1d9dc8e7599c6f1815157db9858e1217e99","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    # compute RPC version pin. Until we can bump that major (which we"},{"line_number":56,"context_line":"    # can do just before Ocata releases), we may still get a legacy"},{"line_number":57,"context_line":"    # dict over the wire, converted to an object, and thus is may be unset"},{"line_number":58,"context_line":"    # here."},{"line_number":59,"context_line":"    if migrate_data.obj_attr_is_set(\u0027serial_listen_addr\u0027):"},{"line_number":60,"context_line":"        # NOTE (markus_z): The value of \u0027serial_listen_addr\u0027 is either"},{"line_number":61,"context_line":"        # an IP address (as string type) or None. There\u0027s no need of a"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a77a97e_52c98e78","line":58,"updated":"2016-11-22 15:40:44.000000000","message":"++, good to have that there","commit_id":"e4ed3a3a741625df045c0589db85b5262064ef48"}]}
