)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"f2b82b8a26eb753527a2297c4694ea043d17cebf","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Nikolay Fedotov \u003cnfedotov@cisco.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-02-04 15:20:29 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove the host resolution in get_ipmi_address"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Hostname is not used as ipmi_address"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9fdfeff1_c82a658f","line":7,"range":{"start_line":7,"start_character":11,"end_line":7,"end_character":15},"updated":"2019-03-01 13:24:37.000000000","message":"nit: feels like \u0027the\u0027 is not needed","commit_id":"2eca410680211353d29c81db47cfb0a285ecec0f"}],"ironic_inspector/common/ironic.py":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"a457f3c32d595947690705af5ad01b27763aaf0a","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            continue"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        try:"},{"line_number":72,"context_line":"            ip \u003d socket.gethostbyname(value)"},{"line_number":73,"context_line":"        except socket.gaierror:"},{"line_number":74,"context_line":"            msg \u003d _(\u0027Failed to resolve the hostname (%(value)s)\u0027"},{"line_number":75,"context_line":"                    \u0027 for node %(uuid)s\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_95659e4c","side":"PARENT","line":72,"range":{"start_line":72,"start_character":17,"end_line":72,"end_character":44},"updated":"2018-12-21 03:29:25.000000000","message":"no idea about this, at least I haven\u0027t seen hostname been set as an ipmi_address. If this is not intentional, I think we can just remove it, we also didn\u0027t resolve host in the ironic.","commit_id":"8d41543c1b0ac88233a42c08ad5348d576d57962"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"4e88dd1ef07f0a0ceb5859f484bb2c30c4736f23","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            continue"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        try:"},{"line_number":72,"context_line":"            ip \u003d socket.gethostbyname(value)"},{"line_number":73,"context_line":"        except socket.gaierror:"},{"line_number":74,"context_line":"            msg \u003d _(\u0027Failed to resolve the hostname (%(value)s)\u0027"},{"line_number":75,"context_line":"                    \u0027 for node %(uuid)s\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f769fc5_283aefe6","side":"PARENT","line":72,"range":{"start_line":72,"start_character":17,"end_line":72,"end_character":44},"in_reply_to":"3f79a3b5_01207049","updated":"2018-12-24 01:35:56.000000000","message":"inspector didn\u0027t really use bmc address to control nodes, so my preference is to remove the host resolution.\n\nas to the loopback check below, I think it\u0027s unnecessary too, a node enrolled with loopback address will have other issues exposed sooner or later.","commit_id":"8d41543c1b0ac88233a42c08ad5348d576d57962"},{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"8ec69ec5e641d1590c98bc888af48d2f994dfbd5","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            continue"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        try:"},{"line_number":72,"context_line":"            ip \u003d socket.gethostbyname(value)"},{"line_number":73,"context_line":"        except socket.gaierror:"},{"line_number":74,"context_line":"            msg \u003d _(\u0027Failed to resolve the hostname (%(value)s)\u0027"},{"line_number":75,"context_line":"                    \u0027 for node %(uuid)s\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_01207049","side":"PARENT","line":72,"range":{"start_line":72,"start_character":17,"end_line":72,"end_character":44},"in_reply_to":"3f79a3b5_95659e4c","updated":"2018-12-21 09:06:46.000000000","message":"Or we can move the method to ironic-lib and let other ironic projects to resolve hostname.  What is the best way?","commit_id":"8d41543c1b0ac88233a42c08ad5348d576d57962"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"a457f3c32d595947690705af5ad01b27763aaf0a","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                elif family \u003d\u003d socket.AF_INET6:"},{"line_number":78,"context_line":"                    ips.append(sockaddr[0])"},{"line_number":79,"context_line":"            # NOTE(nfedotov): Is IPv4 more preferable?"},{"line_number":80,"context_line":"            ip \u003d ips[0]"},{"line_number":81,"context_line":"        except socket.gaierror:"},{"line_number":82,"context_line":"            msg \u003d _(\u0027Failed to resolve the hostname (%(value)s)\u0027"},{"line_number":83,"context_line":"                    \u0027 for node %(uuid)s\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_15242e19","line":80,"updated":"2018-12-21 03:29:25.000000000","message":"I added an ip_version option not long before, but it\u0027s limited to iptables. I feel we need a global configuration option for user to specify the desired family.","commit_id":"24753866f0dd89174e60dd44af9955b459bc0fed"},{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"8ec69ec5e641d1590c98bc888af48d2f994dfbd5","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                elif family \u003d\u003d socket.AF_INET6:"},{"line_number":78,"context_line":"                    ips.append(sockaddr[0])"},{"line_number":79,"context_line":"            # NOTE(nfedotov): Is IPv4 more preferable?"},{"line_number":80,"context_line":"            ip \u003d ips[0]"},{"line_number":81,"context_line":"        except socket.gaierror:"},{"line_number":82,"context_line":"            msg \u003d _(\u0027Failed to resolve the hostname (%(value)s)\u0027"},{"line_number":83,"context_line":"                    \u0027 for node %(uuid)s\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_41ce68b6","line":80,"in_reply_to":"3f79a3b5_15242e19","updated":"2018-12-21 09:06:46.000000000","message":"Ok. Could recommend the configuration option name and section where it should reside?","commit_id":"24753866f0dd89174e60dd44af9955b459bc0fed"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"4e88dd1ef07f0a0ceb5859f484bb2c30c4736f23","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                elif family \u003d\u003d socket.AF_INET6:"},{"line_number":78,"context_line":"                    ips.append(sockaddr[0])"},{"line_number":79,"context_line":"            # NOTE(nfedotov): Is IPv4 more preferable?"},{"line_number":80,"context_line":"            ip \u003d ips[0]"},{"line_number":81,"context_line":"        except socket.gaierror:"},{"line_number":82,"context_line":"            msg \u003d _(\u0027Failed to resolve the hostname (%(value)s)\u0027"},{"line_number":83,"context_line":"                    \u0027 for node %(uuid)s\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f769fc5_684b0787","line":80,"in_reply_to":"3f79a3b5_41ce68b6","updated":"2018-12-24 01:35:56.000000000","message":"typically it\u0027s named \"ip_version\", I guess default section would be a suitable place, though we haven\u0027t done so.","commit_id":"24753866f0dd89174e60dd44af9955b459bc0fed"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"7983b01920f68fbf97d0c89f770e3f4233b626db","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    # NOTE(sambetts): IPMI Address is useless to us if bridging is enabled so"},{"line_number":63,"context_line":"    # just ignore it and return None"},{"line_number":64,"context_line":"    if node.driver_info.get(\"ipmi_bridging\", \"no\") !\u003d \"no\":"},{"line_number":65,"context_line":"        return"},{"line_number":66,"context_line":"    for name in ipmi_fields:"},{"line_number":67,"context_line":"        value \u003d node.driver_info.get(name)"},{"line_number":68,"context_line":"        if not value:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_41f394a0","side":"PARENT","line":65,"range":{"start_line":65,"start_character":8,"end_line":65,"end_character":14},"updated":"2019-03-04 02:56:03.000000000","message":"Not related to this patch, but this appears a bit strange to me, the logic means I have to remove unrelated ipmi information if I want to make ilo/drac driver works.","commit_id":"8d41543c1b0ac88233a42c08ad5348d576d57962"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"7983b01920f68fbf97d0c89f770e3f4233b626db","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    IRONIC_SESSION \u003d None"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"def get_ipmi_address(node):"},{"line_number":61,"context_line":"    none_address \u003d (None, [])"},{"line_number":62,"context_line":"    ipmi_fields \u003d [\u0027ipmi_address\u0027] + CONF.ipmi_address_fields"},{"line_number":63,"context_line":"    # NOTE(sambetts): IPMI Address is useless to us if bridging is enabled so"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_21c8d054","line":60,"range":{"start_line":60,"start_character":4,"end_line":60,"end_character":20},"updated":"2019-03-04 02:56:03.000000000","message":"It\u0027ll be good to have a docstring for this method, for this patch has changed the type of return value.","commit_id":"2eca410680211353d29c81db47cfb0a285ecec0f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"f2b82b8a26eb753527a2297c4694ea043d17cebf","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"def get_ipmi_address(node):"},{"line_number":61,"context_line":"    none_address \u003d (None, [])"},{"line_number":62,"context_line":"    ipmi_fields \u003d [\u0027ipmi_address\u0027] + CONF.ipmi_address_fields"},{"line_number":63,"context_line":"    # NOTE(sambetts): IPMI Address is useless to us if bridging is enabled so"},{"line_number":64,"context_line":"    # just ignore it and return None"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_dfea159e","line":61,"range":{"start_line":61,"start_character":19,"end_line":61,"end_character":20},"updated":"2019-03-01 13:24:37.000000000","message":"nit: extra parens","commit_id":"2eca410680211353d29c81db47cfb0a285ecec0f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"bbd5ca3998c2705e49f6549a8e57de9f8cafdf5c","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                    LOG.warning(\u0027Ignoring loopback BMC address %s\u0027, ip,"},{"line_number":79,"context_line":"                                node_info\u003dnode)"},{"line_number":80,"context_line":"                elif family \u003d\u003d socket.AF_INET:"},{"line_number":81,"context_line":"                    ips.insert(0, ip)"},{"line_number":82,"context_line":"                elif family \u003d\u003d socket.AF_INET6:"},{"line_number":83,"context_line":"                    ips.append(ip)"},{"line_number":84,"context_line":"        except socket.gaierror:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_5a31a00a","line":81,"updated":"2019-02-28 14:41:50.000000000","message":"Out of curiosity, why insert versus append as with the AF_INET6 socket.","commit_id":"2eca410680211353d29c81db47cfb0a285ecec0f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"f2b82b8a26eb753527a2297c4694ea043d17cebf","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                    LOG.warning(\u0027Ignoring loopback BMC address %s\u0027, ip,"},{"line_number":79,"context_line":"                                node_info\u003dnode)"},{"line_number":80,"context_line":"                elif family \u003d\u003d socket.AF_INET:"},{"line_number":81,"context_line":"                    ips.insert(0, ip)"},{"line_number":82,"context_line":"                elif family \u003d\u003d socket.AF_INET6:"},{"line_number":83,"context_line":"                    ips.append(ip)"},{"line_number":84,"context_line":"        except socket.gaierror:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_df3f751f","line":81,"in_reply_to":"9fdfeff1_5a31a00a","updated":"2019-03-01 13:24:37.000000000","message":"perhaps this would position IPv4 ahead of IPv6...?","commit_id":"2eca410680211353d29c81db47cfb0a285ecec0f"},{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"9d3580b008df4315b7fe4ba1ef25837f64420462","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                    LOG.warning(\u0027Ignoring loopback BMC address %s\u0027, ip,"},{"line_number":79,"context_line":"                                node_info\u003dnode)"},{"line_number":80,"context_line":"                elif family \u003d\u003d socket.AF_INET:"},{"line_number":81,"context_line":"                    ips.insert(0, ip)"},{"line_number":82,"context_line":"                elif family \u003d\u003d socket.AF_INET6:"},{"line_number":83,"context_line":"                    ips.append(ip)"},{"line_number":84,"context_line":"        except socket.gaierror:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_02ada12f","line":81,"in_reply_to":"9fdfeff1_df3f751f","updated":"2019-03-01 17:37:52.000000000","message":"Yes. I do not like that either.","commit_id":"2eca410680211353d29c81db47cfb0a285ecec0f"},{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"aa2ea765df8e6bc898f981c72b8ae807528637cd","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                                     \u0027uuid\u0027: node.uuid},"},{"line_number":89,"context_line":"                              node_info\u003dnode)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        return (value, ips) if ips else none_address"},{"line_number":92,"context_line":"    return none_address"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_2f5f6973","line":91,"updated":"2019-02-04 12:23:42.000000000","message":"Does it look better now if get_ipmi_address returns tuple (ipmi_address, \u003clist of resolved IPs\u003e)  ?","commit_id":"2eca410680211353d29c81db47cfb0a285ecec0f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"bbd5ca3998c2705e49f6549a8e57de9f8cafdf5c","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                                     \u0027uuid\u0027: node.uuid},"},{"line_number":89,"context_line":"                              node_info\u003dnode)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        return (value, ips) if ips else none_address"},{"line_number":92,"context_line":"    return none_address"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_7d049e15","line":91,"in_reply_to":"9fdfeff1_2f5f6973","updated":"2019-02-28 14:41:50.000000000","message":"That seems kind of reasonable to me.","commit_id":"2eca410680211353d29c81db47cfb0a285ecec0f"},{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"9d3580b008df4315b7fe4ba1ef25837f64420462","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                                     \u0027uuid\u0027: node.uuid},"},{"line_number":89,"context_line":"                              node_info\u003dnode)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        return (value, ips) if ips else none_address"},{"line_number":92,"context_line":"    return none_address"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_ddcbf84f","line":91,"in_reply_to":"9fdfeff1_7d049e15","updated":"2019-03-01 17:37:52.000000000","message":"I would like to make the method return (value, ipv4, ipv6). I noticed the  server\u0027s BMC (at least from two manufacturers) could have only two addresses at all, IPv4 and IPv6. Thus it does not make sense to return IPs in form of variable-size list. Sure for real web resources a hostname can points to \u003e2 IPs. But here it seems like one IP per version is the most worse case.\nBy the way the ironic-python-agent cannot discover IPv6 BMC address. Finishing patch for it if you do not mind.\nAnother patch could be for \"Enrolling nodes with IPv6 address\". I mean IPA sends v4(Ok) and v6(no implemented) address to inspector and the inspector must decided which IP to use while enrolling/creating or searching (node_cache.find_node...) a node. \nSo it seems like the patch turns into small feature. Yes? Do you need a blueprint?","commit_id":"2eca410680211353d29c81db47cfb0a285ecec0f"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"7983b01920f68fbf97d0c89f770e3f4233b626db","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                                     \u0027uuid\u0027: node.uuid},"},{"line_number":89,"context_line":"                              node_info\u003dnode)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        return (value, ips) if ips else none_address"},{"line_number":92,"context_line":"    return none_address"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_c1b9c4cb","line":91,"in_reply_to":"9fdfeff1_ddcbf84f","updated":"2019-03-04 02:56:03.000000000","message":"IPv6 support is a continuing work, I guess it doesn\u0027t need a blueprint (spec in ironic world).","commit_id":"2eca410680211353d29c81db47cfb0a285ecec0f"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"28416c91ba21699cf175ae58eac70ff2c1f8e63d","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    Possible names of BMC address value examined in order of list"},{"line_number":64,"context_line":"    [\u0027ipmi_address\u0027] + CONF.ipmi_address_fields. The value could"},{"line_number":65,"context_line":"    be an IP address or a hostname. DNS lookup performed for each"},{"line_number":66,"context_line":"    non empty value."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    The first valid BMC address value returned along with"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_0d8fe4cd","line":65,"range":{"start_line":65,"start_character":61,"end_line":65,"end_character":65},"updated":"2019-03-05 03:01:01.000000000","message":"not each of them, just the first of a non-empty address :)","commit_id":"4f94aea0daace1f5f2fa56489d1e7c1cc37b45dc"},{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"93946a5d2f8e22da8a228c4322846984e0631b90","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    Possible names of BMC address value examined in order of list"},{"line_number":64,"context_line":"    [\u0027ipmi_address\u0027] + CONF.ipmi_address_fields. The value could"},{"line_number":65,"context_line":"    be an IP address or a hostname. DNS lookup performed for each"},{"line_number":66,"context_line":"    non empty value."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    The first valid BMC address value returned along with"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_fe632440","line":65,"range":{"start_line":65,"start_character":61,"end_line":65,"end_character":65},"in_reply_to":"9fdfeff1_0d8fe4cd","updated":"2019-03-05 07:33:09.000000000","message":"Thanks","commit_id":"4f94aea0daace1f5f2fa56489d1e7c1cc37b45dc"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"28416c91ba21699cf175ae58eac70ff2c1f8e63d","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                elif family \u003d\u003d socket.AF_INET:"},{"line_number":95,"context_line":"                    ipv4 \u003d ip"},{"line_number":96,"context_line":"                elif family \u003d\u003d socket.AF_INET6:"},{"line_number":97,"context_line":"                    ipv6 \u003d ip"},{"line_number":98,"context_line":"        except socket.gaierror:"},{"line_number":99,"context_line":"            msg \u003d _(\u0027Failed to resolve the hostname (%(value)s)\u0027"},{"line_number":100,"context_line":"                    \u0027 for node %(uuid)s\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_edbf005e","line":97,"updated":"2019-03-05 03:01:01.000000000","message":"actually personally I like the ips list() version, but this also works for me.","commit_id":"4f94aea0daace1f5f2fa56489d1e7c1cc37b45dc"},{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"93946a5d2f8e22da8a228c4322846984e0631b90","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                elif family \u003d\u003d socket.AF_INET:"},{"line_number":95,"context_line":"                    ipv4 \u003d ip"},{"line_number":96,"context_line":"                elif family \u003d\u003d socket.AF_INET6:"},{"line_number":97,"context_line":"                    ipv6 \u003d ip"},{"line_number":98,"context_line":"        except socket.gaierror:"},{"line_number":99,"context_line":"            msg \u003d _(\u0027Failed to resolve the hostname (%(value)s)\u0027"},{"line_number":100,"context_line":"                    \u0027 for node %(uuid)s\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_f9001e03","line":97,"in_reply_to":"9fdfeff1_edbf005e","updated":"2019-03-05 07:33:09.000000000","message":"Yes, \n* the list could fit many IPs. In general a hostname can point to many IPs but here BMC has only two. \n* Mixing v4 and v6 in one list looks Ok for now. Moreover it seems like there is a list of v4 addresses where sometimes could be v6 addresses. But actually v6 is replacement for v4 and they are not compatible.\n* Having incompatible things in one list may result in need of doing odd \u0027if ip is v4/v6\u0027 checks after getting an item.","commit_id":"4f94aea0daace1f5f2fa56489d1e7c1cc37b45dc"}],"ironic_inspector/introspect.py":[{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"093ec4626a784d92db01abc1a3f89f6b2e25f27a","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            raise utils.Error(msg % validation.power[\u0027reason\u0027],"},{"line_number":54,"context_line":"                              node_info\u003dnode)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    bmc_address \u003d ir_utils.get_ipmi_address(node)"},{"line_number":57,"context_line":"    node_info \u003d node_cache.start_introspection(node.uuid,"},{"line_number":58,"context_line":"                                               bmc_address\u003dbmc_address,"},{"line_number":59,"context_line":"                                               manage_boot\u003dmanage_boot,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fdfeff1_774ee838","side":"PARENT","line":56,"updated":"2019-01-30 17:12:37.000000000","message":"What is purpose of resolving the hostname? What does not it use original value? \nIt seems like the IP address used in ironic_inspector/introspect.py  because need to check if BMC address already used. But in order to start inspection we may use hostname. ipmitool resolves hostname if it is given instead of IP. Correct?","commit_id":"8d41543c1b0ac88233a42c08ad5348d576d57962"},{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"8813bf47906265bfb656a123ceff38db890810a4","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            raise utils.Error(msg % validation.power[\u0027reason\u0027],"},{"line_number":54,"context_line":"                              node_info\u003dnode)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    bmc_address \u003d ir_utils.get_ipmi_address(node)"},{"line_number":57,"context_line":"    node_info \u003d node_cache.start_introspection(node.uuid,"},{"line_number":58,"context_line":"                                               bmc_address\u003dbmc_address,"},{"line_number":59,"context_line":"                                               manage_boot\u003dmanage_boot,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fdfeff1_e53e95b6","side":"PARENT","line":56,"in_reply_to":"9fdfeff1_60f61b66","updated":"2019-01-31 10:37:47.000000000","message":"Yes, Introspection data in the IP format but it is analysed later. Now, here there is not need to resolve \u0027ipmi_address\u0027 (could be a hostname) Correct?","commit_id":"8d41543c1b0ac88233a42c08ad5348d576d57962"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"edaa0e16f3645550e187649a4f9daf120ee0e1cc","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            raise utils.Error(msg % validation.power[\u0027reason\u0027],"},{"line_number":54,"context_line":"                              node_info\u003dnode)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    bmc_address \u003d ir_utils.get_ipmi_address(node)"},{"line_number":57,"context_line":"    node_info \u003d node_cache.start_introspection(node.uuid,"},{"line_number":58,"context_line":"                                               bmc_address\u003dbmc_address,"},{"line_number":59,"context_line":"                                               manage_boot\u003dmanage_boot,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fdfeff1_60f61b66","side":"PARENT","line":56,"in_reply_to":"9fdfeff1_774ee838","updated":"2019-01-31 03:32:25.000000000","message":"I _think_ it\u0027s because introspection data collected by IPA is in the IP format, unless you can collect BMC hostname in the bare metal.","commit_id":"8d41543c1b0ac88233a42c08ad5348d576d57962"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"68394fe83ed4a9f3c705b18ee17dc61b6a33a38b","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            raise utils.Error(msg % validation.power[\u0027reason\u0027],"},{"line_number":54,"context_line":"                              node_info\u003dnode)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    bmc_address \u003d ir_utils.get_ipmi_address(node)"},{"line_number":57,"context_line":"    node_info \u003d node_cache.start_introspection(node.uuid,"},{"line_number":58,"context_line":"                                               bmc_address\u003dbmc_address,"},{"line_number":59,"context_line":"                                               manage_boot\u003dmanage_boot,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fdfeff1_3697e24a","side":"PARENT","line":56,"in_reply_to":"9fdfeff1_e53e95b6","updated":"2019-02-01 03:04:51.000000000","message":"If we could not resolve correct IP address here, lazy resolution won\u0027t help either, and I think we need to raise it early.","commit_id":"8d41543c1b0ac88233a42c08ad5348d576d57962"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"be860756419dcaf53b29c13cd2ac92347ac6c16f","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    bmc_address, bmc_ipv4, bmc_ipv6 \u003d ir_utils.get_ipmi_address(node)"},{"line_number":57,"context_line":"    node_info \u003d node_cache.start_introspection(node.uuid,"},{"line_number":58,"context_line":"                                               bmc_address\u003dbmc_address,"},{"line_number":59,"context_line":"                                               manage_boot\u003dmanage_boot,"},{"line_number":60,"context_line":"                                               ironic\u003dironic)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5fc1f717_826dc305","line":58,"range":{"start_line":58,"start_character":47,"end_line":58,"end_character":70},"updated":"2019-03-08 14:27:08.000000000","message":"How does it work with lookup? E.g. if we put a hostname here, but receive IP address from the machine, how will lookup work?","commit_id":"771f2d396b23510364cfb05582175d44cf3b44e6"}],"ironic_inspector/locale/en_GB/LC_MESSAGES/ironic_inspector.po":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"fd74aec4fd8787c1cfb982b174c3216b53384592","unresolved":false,"context_lines":[{"line_number":148,"context_line":"#, python-format"},{"line_number":149,"context_line":"msgid \"IP Address (%(value)s) is not correctly formatted for node %(uuid)s\""},{"line_number":150,"context_line":"msgstr \"IP Address (%(value)s) is not correctly formatted for node %(uuid)s\""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"#, python-format"},{"line_number":153,"context_line":"msgid \"Failed to set boot device to PXE: %s\""},{"line_number":154,"context_line":"msgstr \"Failed to set boot device to PXE: %s\""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"9fdfeff1_e1856dd0","line":151,"updated":"2019-01-28 08:48:48.000000000","message":"I don\u0027t remember but I have an impression that translation file should not be touched, patch will be proposed by bots when translation is done by translation team.","commit_id":"b7825a7279d4b4841be8b3829edd8ac472a0207e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6450458a031b23983166cc533d89276a8c5f1e4a","unresolved":false,"context_lines":[{"line_number":148,"context_line":"#, python-format"},{"line_number":149,"context_line":"msgid \"IP Address (%(value)s) is not correctly formatted for node %(uuid)s\""},{"line_number":150,"context_line":"msgstr \"IP Address (%(value)s) is not correctly formatted for node %(uuid)s\""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"#, python-format"},{"line_number":153,"context_line":"msgid \"Failed to set boot device to PXE: %s\""},{"line_number":154,"context_line":"msgstr \"Failed to set boot device to PXE: %s\""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"9fdfeff1_52a9a521","line":151,"in_reply_to":"9fdfeff1_d70ca7ed","updated":"2019-01-28 12:02:41.000000000","message":"Yeah, translation files are updated automatically","commit_id":"b7825a7279d4b4841be8b3829edd8ac472a0207e"},{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"5953af9d5575a2c325b407150fe9896398b8a7ea","unresolved":false,"context_lines":[{"line_number":148,"context_line":"#, python-format"},{"line_number":149,"context_line":"msgid \"IP Address (%(value)s) is not correctly formatted for node %(uuid)s\""},{"line_number":150,"context_line":"msgstr \"IP Address (%(value)s) is not correctly formatted for node %(uuid)s\""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"#, python-format"},{"line_number":153,"context_line":"msgid \"Failed to set boot device to PXE: %s\""},{"line_number":154,"context_line":"msgstr \"Failed to set boot device to PXE: %s\""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"9fdfeff1_d70ca7ed","line":151,"in_reply_to":"9fdfeff1_e1856dd0","updated":"2019-01-28 10:38:49.000000000","message":"I do not know how it works either. I am ok with any change here.","commit_id":"b7825a7279d4b4841be8b3829edd8ac472a0207e"}],"ironic_inspector/plugins/discovery.py":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"7983b01920f68fbf97d0c89f770e3f4233b626db","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        #                  impact on performance on big clusters"},{"line_number":61,"context_line":"        nodes \u003d ironic.node.list(fields\u003d(\u0027uuid\u0027, \u0027driver_info\u0027), limit\u003d0)"},{"line_number":62,"context_line":"        for node in nodes:"},{"line_number":63,"context_line":"            bcm_address, bmc_ips \u003d ir_utils.get_ipmi_address(node)"},{"line_number":64,"context_line":"            if ipmi_address in bmc_ips:"},{"line_number":65,"context_line":"                raise utils.Error("},{"line_number":66,"context_line":"                    _(\u0027Node %(uuid)s already has BMC address \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_813c1ce2","line":63,"range":{"start_line":63,"start_character":12,"end_line":63,"end_character":15},"updated":"2019-03-04 02:56:03.000000000","message":"nit: bmc","commit_id":"2eca410680211353d29c81db47cfb0a285ecec0f"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"7983b01920f68fbf97d0c89f770e3f4233b626db","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        nodes \u003d ironic.node.list(fields\u003d(\u0027uuid\u0027, \u0027driver_info\u0027), limit\u003d0)"},{"line_number":62,"context_line":"        for node in nodes:"},{"line_number":63,"context_line":"            bcm_address, bmc_ips \u003d ir_utils.get_ipmi_address(node)"},{"line_number":64,"context_line":"            if ipmi_address in bmc_ips:"},{"line_number":65,"context_line":"                raise utils.Error("},{"line_number":66,"context_line":"                    _(\u0027Node %(uuid)s already has BMC address \u0027"},{"line_number":67,"context_line":"                      \u0027%(ipmi_address)s, not enrolling\u0027) %"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_6142586b","line":64,"range":{"start_line":64,"start_character":15,"end_line":64,"end_character":38},"updated":"2019-03-04 02:56:03.000000000","message":"Dmitry said there are people using hostname as ipmi_address, I suspect we need to include bmc_address above in the range test, but this is out of this patch, and I have no idea how that works in introspection.","commit_id":"2eca410680211353d29c81db47cfb0a285ecec0f"}],"releasenotes/notes/ipv6-bmc-address-start-inspection-7a72794f25eb9f19.yaml":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"28416c91ba21699cf175ae58eac70ff2c1f8e63d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"9fdfeff1_c858ea32","line":5,"updated":"2019-03-05 03:01:01.000000000","message":"this is not very descriptive, could you add more context on what this patch is addressing?\n\nE.g.:\n\nFixes an issue that when an enrolled ironic node has IPv6 address as its BMC address, introspection fails due to address resolution failure.\n\nPardon my phrasing, I am not good at this, but you know the idea :)","commit_id":"4f94aea0daace1f5f2fa56489d1e7c1cc37b45dc"},{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"93946a5d2f8e22da8a228c4322846984e0631b90","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"9fdfeff1_9e58d88a","line":5,"in_reply_to":"9fdfeff1_c858ea32","updated":"2019-03-05 07:33:09.000000000","message":"Thanks.","commit_id":"4f94aea0daace1f5f2fa56489d1e7c1cc37b45dc"}]}
