)]}'
{"ironic/drivers/modules/ssh.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e8269685953517cb474b11f9d2bca00649e099b0","unresolved":false,"context_lines":[{"line_number":46,"context_line":"]"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"CONF \u003d cfg.CONF"},{"line_number":49,"context_line":"CONF.register_opts(libvirt_opts)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2FBjw%3D","line":49,"updated":"2014-02-17 15:34:21.000000000","message":"Let\u0027s add this option to the \u0027ssh\u0027 group just like we do with other drivers ipmi and pxe[1][2], e.g:\n\nCONF.register_opts(libvirt_opts, group\u003d\u0027ssh\u0027)\n\n\n[1] https://github.com/openstack/ironic/blob/master/ironic/drivers/modules/ipminative.py#L40\n\n[2] https://github.com/openstack/ironic/blob/master/ironic/drivers/modules/pxe.py#L78","commit_id":"9db9d7a6476766e5dd6f783e5efb6c2ed1484100"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"a845ff001d62e927e75040ed948c4ff6c1539031","unresolved":false,"context_lines":[{"line_number":46,"context_line":"]"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"CONF \u003d cfg.CONF"},{"line_number":49,"context_line":"CONF.register_opts(libvirt_opts)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2B4VU%3D","line":49,"in_reply_to":"AAAAUX%2F%2FBjw%3D","updated":"2014-02-18 13:06:24.000000000","message":"Done","commit_id":"9db9d7a6476766e5dd6f783e5efb6c2ed1484100"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e8269685953517cb474b11f9d2bca00649e099b0","unresolved":false,"context_lines":[{"line_number":103,"context_line":"}"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"if CONF.libvirt_uri:"},{"line_number":106,"context_line":"    COMMAND_SETS[\u0027virsh\u0027][\u0027base_cmd\u0027] \u003d \"LIBVIRT_DEFAULT_URI\u003d%s %s\" % ("},{"line_number":107,"context_line":"        CONF.libvirt_uri, \u0027/usr/bin/virsh\u0027)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2FBno%3D","line":106,"updated":"2014-02-17 15:34:21.000000000","message":"I think we should use the \"--connect\" parameter[1] instead of the env variable here, because if both are present virsh will prioritize the one specified by the --connect parameter [2]\n\n[1] http://linux.die.net/man/1/virsh\n\n[2] http://paste.openstack.org/show/66503/","commit_id":"9db9d7a6476766e5dd6f783e5efb6c2ed1484100"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"a845ff001d62e927e75040ed948c4ff6c1539031","unresolved":false,"context_lines":[{"line_number":103,"context_line":"}"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"if CONF.libvirt_uri:"},{"line_number":106,"context_line":"    COMMAND_SETS[\u0027virsh\u0027][\u0027base_cmd\u0027] \u003d \"LIBVIRT_DEFAULT_URI\u003d%s %s\" % ("},{"line_number":107,"context_line":"        CONF.libvirt_uri, \u0027/usr/bin/virsh\u0027)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2B4VM%3D","line":106,"in_reply_to":"AAAAUX%2F%2FBno%3D","updated":"2014-02-18 13:06:24.000000000","message":"Done","commit_id":"9db9d7a6476766e5dd6f783e5efb6c2ed1484100"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e8269685953517cb474b11f9d2bca00649e099b0","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"if CONF.libvirt_uri:"},{"line_number":106,"context_line":"    COMMAND_SETS[\u0027virsh\u0027][\u0027base_cmd\u0027] \u003d \"LIBVIRT_DEFAULT_URI\u003d%s %s\" % ("},{"line_number":107,"context_line":"        CONF.libvirt_uri, \u0027/usr/bin/virsh\u0027)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"def _normalize_mac(mac):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2FBmY%3D","line":107,"updated":"2014-02-17 15:34:21.000000000","message":"I think we shouldn\u0027t duplicate the \u0027/usr/bin/virsh\u0027 here and in the L69\n\nMay I suggest:\n\nif CONF.libvirt_uri:\n   COMMAND_SETS[\u0027virsh\u0027][\u0027base_cmd\u0027] +\u003d \u0027 --connect %s\u0027 % CONF.libvirt_uri","commit_id":"9db9d7a6476766e5dd6f783e5efb6c2ed1484100"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"a845ff001d62e927e75040ed948c4ff6c1539031","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"if CONF.libvirt_uri:"},{"line_number":106,"context_line":"    COMMAND_SETS[\u0027virsh\u0027][\u0027base_cmd\u0027] \u003d \"LIBVIRT_DEFAULT_URI\u003d%s %s\" % ("},{"line_number":107,"context_line":"        CONF.libvirt_uri, \u0027/usr/bin/virsh\u0027)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"def _normalize_mac(mac):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2B4VI%3D","line":107,"in_reply_to":"AAAAUX%2F%2FBmY%3D","updated":"2014-02-18 13:06:24.000000000","message":"Done","commit_id":"9db9d7a6476766e5dd6f783e5efb6c2ed1484100"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"e315f88b1c343c3652043386fc755f6d33ebc441","unresolved":false,"context_lines":[{"line_number":42,"context_line":"libvirt_opts \u003d ["},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027libvirt_uri\u0027,"},{"line_number":44,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":45,"context_line":"               help\u003d\u0027libvirt uri\u0027)"},{"line_number":46,"context_line":"]"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2B4Hw%3D","line":45,"updated":"2014-02-18 13:31:15.000000000","message":"I think more help needed for this option, examples from commit message will be good point.","commit_id":"34ccdc5c5ab78e1321a6d8f4dbc1ccabdd47037f"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"8d4b343a0457f4618e1a7d7ba6c6a774c040ae6d","unresolved":false,"context_lines":[{"line_number":42,"context_line":"libvirt_opts \u003d ["},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027libvirt_uri\u0027,"},{"line_number":44,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":45,"context_line":"               help\u003d\u0027libvirt uri\u0027)"},{"line_number":46,"context_line":"]"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2B33g%3D","line":45,"in_reply_to":"AAAAUX%2F%2B4Hw%3D","updated":"2014-02-18 13:56:21.000000000","message":"Good idea, I am going to add it. Thanks!","commit_id":"34ccdc5c5ab78e1321a6d8f4dbc1ccabdd47037f"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"cab98fd316a02e03537925d9e22252df86840d40","unresolved":false,"context_lines":[{"line_number":103,"context_line":"}"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"if CONF.ssh.libvirt_uri:"},{"line_number":106,"context_line":"    COMMAND_SETS[\u0027virsh\u0027][\u0027base_cmd\u0027] +\u003d \u0027 --connect %s\u0027 % CONF.ssh.libvirt_uri"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"def _normalize_mac(mac):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2F7Ls%3D","line":106,"updated":"2014-02-24 02:32:31.000000000","message":"This will not work for the non-default value, because the ironic.conf should not be read before ironic/common/service.prepare_service() call, so for the option value of CONF.ssh.libvirt_uri configured in ironic.conf will be the default value \u0027qemu:///system\u0027 always before calling prepare_service().\n\n[1] https://bugs.launchpad.net/ironic/+bug/1279774","commit_id":"31d8c78cf4960d075552b17163a2f6afa7f71053"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"d6c352a53ef0d13210e14143ce2d7dc6d664a3e4","unresolved":false,"context_lines":[{"line_number":103,"context_line":"}"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"if CONF.ssh.libvirt_uri:"},{"line_number":106,"context_line":"    COMMAND_SETS[\u0027virsh\u0027][\u0027base_cmd\u0027] +\u003d \u0027 --connect %s\u0027 % CONF.ssh.libvirt_uri"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"def _normalize_mac(mac):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2FcvI%3D","line":106,"in_reply_to":"AAAAU3%2F%2F2A8%3D","updated":"2014-02-26 15:42:24.000000000","message":"Haomeng, nice catch, indeed! Thanks, I am going to fix it.\n\nLucas, I agree with your suggestion, thanks!","commit_id":"31d8c78cf4960d075552b17163a2f6afa7f71053"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"bce44357cee56c31f18082d3286b4cfb3111a01c","unresolved":false,"context_lines":[{"line_number":103,"context_line":"}"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"if CONF.ssh.libvirt_uri:"},{"line_number":106,"context_line":"    COMMAND_SETS[\u0027virsh\u0027][\u0027base_cmd\u0027] +\u003d \u0027 --connect %s\u0027 % CONF.ssh.libvirt_uri"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"def _normalize_mac(mac):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2F2A8%3D","line":106,"in_reply_to":"AAAAU3%2F%2F7Ls%3D","updated":"2014-02-24 14:49:16.000000000","message":"+1!!!\n\nVery good catch Haomeng. Yeah it\u0027s a problem to evaluate CONF options at import time (it affects other openstack projects as well).\n\nI think that the best way to solve it here would be to encapsulate this COMMAND_SETS dict + the libvirt URI logic in a function, e.g:\n\n\ndef _get_command_sets(virt_type):\n    if virt_type \u003d\u003d \"vbox\":\n        return {...}\n    elif virt_type \u003d\u003d \"vmware\":\n       return {...}\n    elif virt_type \u003d\u003d \"virsh\":\n       virsh_cmds \u003d {...}\n       if CONF.ssh.libvirt_uri:\n           virsh_cmds[\u0027base_cmd\u0027] +\u003d \u0027 --connect %s\u0027 % CONF.ssh.libvirt_uri\n       return virsh_cmds\n    else:\n        raise InvalidParameterValue(\"%s is not a supported virt type\" % virt_type)","commit_id":"31d8c78cf4960d075552b17163a2f6afa7f71053"}],"ironic/tests/drivers/test_ssh.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"210843cc09c2958b305e9208602ced42deaa2552","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        node \u003d db_utils.get_test_node(driver\u003d\u0027fake_ssh\u0027, driver_info\u003dINFO_DICT)"},{"line_number":130,"context_line":"        node[\u0027driver_info\u0027][\u0027ssh_virt_type\u0027] \u003d \u0027virsh\u0027"},{"line_number":131,"context_line":"        info \u003d ssh._parse_driver_info(node)"},{"line_number":132,"context_line":"        self.assertEqual(info[\u0027cmd_set\u0027][\u0027base_cmd\u0027], expected_base_cmd)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"class SSHPrivateMethodsTestCase(base.TestCase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2B39g%3D","line":132,"updated":"2014-02-18 13:46:24.000000000","message":"tiny nit: assertEqual order, the expected value should come first \n\nPreviously it was fixed by: https://review.openstack.org/#/c/71486/","commit_id":"34ccdc5c5ab78e1321a6d8f4dbc1ccabdd47037f"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"8d4b343a0457f4618e1a7d7ba6c6a774c040ae6d","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        node \u003d db_utils.get_test_node(driver\u003d\u0027fake_ssh\u0027, driver_info\u003dINFO_DICT)"},{"line_number":130,"context_line":"        node[\u0027driver_info\u0027][\u0027ssh_virt_type\u0027] \u003d \u0027virsh\u0027"},{"line_number":131,"context_line":"        info \u003d ssh._parse_driver_info(node)"},{"line_number":132,"context_line":"        self.assertEqual(info[\u0027cmd_set\u0027][\u0027base_cmd\u0027], expected_base_cmd)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"class SSHPrivateMethodsTestCase(base.TestCase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2B34o%3D","line":132,"in_reply_to":"AAAAUX%2F%2B39g%3D","updated":"2014-02-18 13:56:21.000000000","message":"Done","commit_id":"34ccdc5c5ab78e1321a6d8f4dbc1ccabdd47037f"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"cab98fd316a02e03537925d9e22252df86840d40","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        self.assertEqual(mac_clean, \"0a1b2c3d4f\")"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def test__parse_driver_info_with_custom_libvirt_uri(self):"},{"line_number":125,"context_line":"        CONF.set_override(\u0027libvirt_uri\u0027, \u0027qemu:///foo\u0027, \u0027ssh\u0027)"},{"line_number":126,"context_line":"        expected_base_cmd \u003d \"/usr/bin/virsh --connect qemu:///foo\""},{"line_number":127,"context_line":"        reload(ssh)"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2F7LA%3D","line":125,"updated":"2014-02-24 02:32:31.000000000","message":"should we need more case to cover the default \u0027qemu:///system\u0027 uri case?","commit_id":"31d8c78cf4960d075552b17163a2f6afa7f71053"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"ac281be642b1a3a2f5aeba1ffa7faa8787f3afba","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    def test__parse_driver_info_with_custom_libvirt_uri(self):"},{"line_number":126,"context_line":"        CONF.set_override(\u0027libvirt_uri\u0027, \u0027qemu:///foo\u0027, \u0027ssh\u0027)"},{"line_number":127,"context_line":"        expected_base_cmd \u003d \"/usr/bin/virsh --connect qemu:///foo\""},{"line_number":128,"context_line":"        reload(ssh)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        node \u003d db_utils.get_test_node(driver\u003d\u0027fake_ssh\u0027, driver_info\u003dINFO_DICT)"},{"line_number":131,"context_line":"        node[\u0027driver_info\u0027][\u0027ssh_virt_type\u0027] \u003d \u0027virsh\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2FcX0%3D","line":128,"updated":"2014-02-26 16:01:08.000000000","message":"nit: reload not needed anymore","commit_id":"70c1716a59ebdb84c773fb8c8a95befb02290b81"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"72132868c30fa177fb8e9025005758e5df22bc89","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    def test__parse_driver_info_with_custom_libvirt_uri(self):"},{"line_number":126,"context_line":"        CONF.set_override(\u0027libvirt_uri\u0027, \u0027qemu:///foo\u0027, \u0027ssh\u0027)"},{"line_number":127,"context_line":"        expected_base_cmd \u003d \"/usr/bin/virsh --connect qemu:///foo\""},{"line_number":128,"context_line":"        reload(ssh)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        node \u003d db_utils.get_test_node(driver\u003d\u0027fake_ssh\u0027, driver_info\u003dINFO_DICT)"},{"line_number":131,"context_line":"        node[\u0027driver_info\u0027][\u0027ssh_virt_type\u0027] \u003d \u0027virsh\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2FcTs%3D","line":128,"in_reply_to":"AAAAU3%2F%2FcX0%3D","updated":"2014-02-26 16:06:22.000000000","message":"oh right. another update is on the way! :-)","commit_id":"70c1716a59ebdb84c773fb8c8a95befb02290b81"}]}
