)]}'
{"ironic_python_agent/hardware.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7d6d53b07866220c8c27ed9ec3ef034477abc043","unresolved":false,"context_lines":[{"line_number":935,"context_line":"        try:"},{"line_number":936,"context_line":"            for channel in range(255):"},{"line_number":937,"context_line":"                out, _e \u003d utils.execute("},{"line_number":938,"context_line":"                    \"ipmitool lan print \" + str(channel+1) +"},{"line_number":939,"context_line":"                    \" | grep -e \u0027IP Address [^S]\u0027 \""},{"line_number":940,"context_line":"                    \"| awk \u0027{ print $4 }\u0027\", shell\u003dTrue)"},{"line_number":941,"context_line":"                if out.strip() !\u003d \u00270.0.0.0\u0027:"},{"line_number":942,"context_line":"                    return out.strip()"},{"line_number":943,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f1d235d_6d968897","line":940,"range":{"start_line":938,"start_character":20,"end_line":940,"end_character":42},"updated":"2017-07-08 12:56:28.000000000","message":"I\u0027d prefer we used string formatting instead of concatenation. Then we won\u0027t need the str() call either.","commit_id":"1941ad4a96b541c200707814200fbaa40c40e1e1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"79c00ba9c9a0a6fb6943f56a39e9f087da66b597","unresolved":false,"context_lines":[{"line_number":946,"context_line":"            LOG.warning(\"Cannot get BMC address: %s\", e)"},{"line_number":947,"context_line":"            return"},{"line_number":948,"context_line":""},{"line_number":949,"context_line":"        return \u00270.0.0.0\u0027"},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"    def get_clean_steps(self, node, ports):"},{"line_number":952,"context_line":"        return ["}],"source_content_type":"text/x-python","patch_set":1,"id":"3f1d235d_a3dad647","line":949,"range":{"start_line":949,"start_character":15,"end_line":949,"end_character":24},"updated":"2017-07-05 17:14:32.000000000","message":"Is this really the right thing to do?","commit_id":"1941ad4a96b541c200707814200fbaa40c40e1e1"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"55a2fb2d1e43b4521aa7fba47268ce5ccbd05ed4","unresolved":false,"context_lines":[{"line_number":946,"context_line":"            LOG.warning(\"Cannot get BMC address: %s\", e)"},{"line_number":947,"context_line":"            return"},{"line_number":948,"context_line":""},{"line_number":949,"context_line":"        return \u00270.0.0.0\u0027"},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"    def get_clean_steps(self, node, ports):"},{"line_number":952,"context_line":"        return ["}],"source_content_type":"text/x-python","patch_set":1,"id":"3f1d235d_ca8d8cd4","line":949,"updated":"2017-07-07 19:12:36.000000000","message":"We return None, and please keep returning it.","commit_id":"1941ad4a96b541c200707814200fbaa40c40e1e1"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7d6d53b07866220c8c27ed9ec3ef034477abc043","unresolved":false,"context_lines":[{"line_number":946,"context_line":"            LOG.warning(\"Cannot get BMC address: %s\", e)"},{"line_number":947,"context_line":"            return"},{"line_number":948,"context_line":""},{"line_number":949,"context_line":"        return \u00270.0.0.0\u0027"},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"    def get_clean_steps(self, node, ports):"},{"line_number":952,"context_line":"        return ["}],"source_content_type":"text/x-python","patch_set":1,"id":"3f1d235d_8d81e44d","line":949,"in_reply_to":"3f1d235d_8c332d63","updated":"2017-07-08 12:56:28.000000000","message":"Hmm, I was confused by line 947. I have to admit, I don\u0027t know in which cases we return 0.0.0.0, I have to trust you on this. Could you please leave a comment here explaining it?","commit_id":"1941ad4a96b541c200707814200fbaa40c40e1e1"},{"author":{"_account_id":23757,"name":"Mateusz Kowalski","email":"mko@redhat.com","username":"makowals"},"change_message_id":"51a358c9e8b828f87d53e35dff4437125caba63e","unresolved":false,"context_lines":[{"line_number":946,"context_line":"            LOG.warning(\"Cannot get BMC address: %s\", e)"},{"line_number":947,"context_line":"            return"},{"line_number":948,"context_line":""},{"line_number":949,"context_line":"        return \u00270.0.0.0\u0027"},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"    def get_clean_steps(self, node, ports):"},{"line_number":952,"context_line":"        return ["}],"source_content_type":"text/x-python","patch_set":1,"id":"3f1d235d_eea55548","line":949,"range":{"start_line":949,"start_character":15,"end_line":949,"end_character":24},"in_reply_to":"3f1d235d_a3dad647","updated":"2017-07-05 17:57:54.000000000","message":"That\u0027s exactly the behaviour we have right now. What else would you expect to return in case no IP configured for BMC ?","commit_id":"1941ad4a96b541c200707814200fbaa40c40e1e1"},{"author":{"_account_id":23757,"name":"Mateusz Kowalski","email":"mko@redhat.com","username":"makowals"},"change_message_id":"7e74cd6625728bd569b897b8e3445a5d249268bb","unresolved":false,"context_lines":[{"line_number":946,"context_line":"            LOG.warning(\"Cannot get BMC address: %s\", e)"},{"line_number":947,"context_line":"            return"},{"line_number":948,"context_line":""},{"line_number":949,"context_line":"        return \u00270.0.0.0\u0027"},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"    def get_clean_steps(self, node, ports):"},{"line_number":952,"context_line":"        return ["}],"source_content_type":"text/x-python","patch_set":1,"id":"3f1d235d_8c332d63","line":949,"in_reply_to":"3f1d235d_ca8d8cd4","updated":"2017-07-07 22:31:54.000000000","message":"Well, I would still want to better understand reasoning behind this one. We have tested it with the BMCs which use other lan channel, and in no case there is None returned, it\u0027s always either real IP address or 0.0.0.0. Could you point me to the code path which would end up returning None ?","commit_id":"1941ad4a96b541c200707814200fbaa40c40e1e1"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"e3620c166d20cbdfb5b4ecfc3eb6b96b10fe3fb5","unresolved":false,"context_lines":[{"line_number":937,"context_line":"                out, e \u003d utils.execute("},{"line_number":938,"context_line":"                    \"ipmitool lan print {0!s} | grep -e \u0027IP Address [^S]\u0027 \""},{"line_number":939,"context_line":"                    \"| awk \u0027{{ print $4 }}\u0027\".format(channel + 1), shell\u003dTrue)"},{"line_number":940,"context_line":"                if out.strip() !\u003d \u00270.0.0.0\u0027 and e \u003d\u003d \u0027\u0027:"},{"line_number":941,"context_line":"                    return out.strip()"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"        except (processutils.ProcessExecutionError, OSError) as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_ef6daa98","line":940,"range":{"start_line":940,"start_character":19,"end_line":940,"end_character":43},"updated":"2017-07-14 09:20:56.000000000","message":"should we also check that out.strip() is not an empty string? (eg if there is no \u0027IP Address\u0027 entry in the output at all it can happen, not sure it\u0027s possible though).","commit_id":"ab74df230e2664cf55756c557f7e16385cff8b20"},{"author":{"_account_id":23757,"name":"Mateusz Kowalski","email":"mko@redhat.com","username":"makowals"},"change_message_id":"509ac7f8bbe38a4074826f591c05befad1467f4b","unresolved":false,"context_lines":[{"line_number":937,"context_line":"                out, e \u003d utils.execute("},{"line_number":938,"context_line":"                    \"ipmitool lan print {0!s} | grep -e \u0027IP Address [^S]\u0027 \""},{"line_number":939,"context_line":"                    \"| awk \u0027{{ print $4 }}\u0027\".format(channel + 1), shell\u003dTrue)"},{"line_number":940,"context_line":"                if out.strip() !\u003d \u00270.0.0.0\u0027 and e \u003d\u003d \u0027\u0027:"},{"line_number":941,"context_line":"                    return out.strip()"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"        except (processutils.ProcessExecutionError, OSError) as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_efc5aa3d","line":940,"range":{"start_line":940,"start_character":19,"end_line":940,"end_character":43},"in_reply_to":"1f1a1f67_ef6daa98","updated":"2017-07-14 09:33:01.000000000","message":"We are querying specific lan channel, so by the logical design (access from network interface) there should always be a field called \"IP Address\". Otherwise it would mean we have a very exotic platform for which IPMI is not meant to be accessed through IP network. I\u0027m not sure if it even exists; if someone has any info about it, please let me know","commit_id":"ab74df230e2664cf55756c557f7e16385cff8b20"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"2ba327ab6b084f5ca255650c2d770d6f36fe0f38","unresolved":false,"context_lines":[{"line_number":937,"context_line":"                out, e \u003d utils.execute("},{"line_number":938,"context_line":"                    \"ipmitool lan print {0!s} | grep -e \u0027IP Address [^S]\u0027 \""},{"line_number":939,"context_line":"                    \"| awk \u0027{{ print $4 }}\u0027\".format(channel + 1), shell\u003dTrue)"},{"line_number":940,"context_line":"                if out.strip() !\u003d \u00270.0.0.0\u0027 and e \u003d\u003d \u0027\u0027:"},{"line_number":941,"context_line":"                    return out.strip()"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"        except (processutils.ProcessExecutionError, OSError) as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_6a9f4803","line":940,"range":{"start_line":940,"start_character":19,"end_line":940,"end_character":43},"in_reply_to":"1f1a1f67_efc5aa3d","updated":"2017-07-14 10:20:52.000000000","message":"tested on one server I have access to, \"ipmitool lan print 14\" gives me the following return value from execute:\n\n (\u0027Cipher Suite Priv Max   : Not Available\\nBad Password Threshold  : Not Available\\n\u0027, \u0027\u0027)","commit_id":"ab74df230e2664cf55756c557f7e16385cff8b20"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"b2ccf58d4ca91fd06a251b35c3a45a4d86e6cfd2","unresolved":false,"context_lines":[{"line_number":937,"context_line":"                out, e \u003d utils.execute("},{"line_number":938,"context_line":"                    \"ipmitool lan print {0!s} | grep -e \u0027IP Address [^S]\u0027 \""},{"line_number":939,"context_line":"                    \"| awk \u0027{{ print $4 }}\u0027\".format(channel + 1), shell\u003dTrue)"},{"line_number":940,"context_line":"                if out.strip() !\u003d \u0027\u0027 and out.strip() !\u003d \u00270.0.0.0\u0027 and e \u003d\u003d \u0027\u0027:"},{"line_number":941,"context_line":"                    return out.strip()"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"        except (processutils.ProcessExecutionError, OSError) as e:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f1a1f67_409c6d5c","line":940,"range":{"start_line":940,"start_character":19,"end_line":940,"end_character":65},"updated":"2017-07-14 11:30:48.000000000","message":"nit - out.strip() not in (\u0027\u0027, \u00270.0.0.0\u0027)\n\nplease add a unit test for this case.","commit_id":"39a7526cb2228991c95b9e29607a756eaf1485fe"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"e61490a0250ae9f5e3fddebe6e9246471e9d1dd4","unresolved":false,"context_lines":[{"line_number":933,"context_line":"        utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_si\u0027)"},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"        try:"},{"line_number":936,"context_line":"            for channel in range(255):"},{"line_number":937,"context_line":"                out, e \u003d utils.execute("},{"line_number":938,"context_line":"                    \"ipmitool lan print {0!s} | grep -e \u0027IP Address [^S]\u0027 \""},{"line_number":939,"context_line":"                    \"| awk \u0027{{ print $4 }}\u0027\".format(channel + 1), shell\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f1a1f67_8d2695ba","line":936,"range":{"start_line":936,"start_character":33,"end_line":936,"end_character":36},"updated":"2017-07-20 08:19:53.000000000","message":"why 255? according to specification only 16 channels are supported https://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/ipmi-second-gen-interface-spec-v2-rev1-1.pdf","commit_id":"61611f91dce7424382b99dcff34bd5e164b1e68e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ea19a93837a4b1970851a290e49830a6cec325fc","unresolved":false,"context_lines":[{"line_number":935,"context_line":"        try:"},{"line_number":936,"context_line":"            for channel in range(255):"},{"line_number":937,"context_line":"                out, e \u003d utils.execute("},{"line_number":938,"context_line":"                    \"ipmitool lan print {0!s} | grep -e \u0027IP Address [^S]\u0027 \""},{"line_number":939,"context_line":"                    \"| awk \u0027{{ print $4 }}\u0027\".format(channel + 1), shell\u003dTrue)"},{"line_number":940,"context_line":"                if out.strip() not in (\u0027\u0027, \u00270.0.0.0\u0027) and e \u003d\u003d \u0027\u0027:"},{"line_number":941,"context_line":"                    return out.strip()"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f1a1f67_825eb673","line":938,"updated":"2017-07-18 08:48:55.000000000","message":"nit: \"!s\" is redundant","commit_id":"61611f91dce7424382b99dcff34bd5e164b1e68e"},{"author":{"_account_id":23757,"name":"Mateusz Kowalski","email":"mko@redhat.com","username":"makowals"},"change_message_id":"33fa556a0405bdcda078a19a84b8c2d09f57c3af","unresolved":false,"context_lines":[{"line_number":935,"context_line":"        try:"},{"line_number":936,"context_line":"            for channel in range(255):"},{"line_number":937,"context_line":"                out, e \u003d utils.execute("},{"line_number":938,"context_line":"                    \"ipmitool lan print {0!s} | grep -e \u0027IP Address [^S]\u0027 \""},{"line_number":939,"context_line":"                    \"| awk \u0027{{ print $4 }}\u0027\".format(channel + 1), shell\u003dTrue)"},{"line_number":940,"context_line":"                if out.strip() not in (\u0027\u0027, \u00270.0.0.0\u0027) and e \u003d\u003d \u0027\u0027:"},{"line_number":941,"context_line":"                    return out.strip()"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f1a1f67_ad2e438f","line":938,"in_reply_to":"1f1a1f67_825eb673","updated":"2017-07-18 08:58:38.000000000","message":"Without !s I was forced to do str(channel+1) inside format. This syntax is more elegant in my opinion, but I can revert it if that\u0027s more acceptable way.","commit_id":"61611f91dce7424382b99dcff34bd5e164b1e68e"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"e61490a0250ae9f5e3fddebe6e9246471e9d1dd4","unresolved":false,"context_lines":[{"line_number":935,"context_line":"        try:"},{"line_number":936,"context_line":"            for channel in range(255):"},{"line_number":937,"context_line":"                out, e \u003d utils.execute("},{"line_number":938,"context_line":"                    \"ipmitool lan print {0!s} | grep -e \u0027IP Address [^S]\u0027 \""},{"line_number":939,"context_line":"                    \"| awk \u0027{{ print $4 }}\u0027\".format(channel + 1), shell\u003dTrue)"},{"line_number":940,"context_line":"                if out.strip() not in (\u0027\u0027, \u00270.0.0.0\u0027) and e \u003d\u003d \u0027\u0027:"},{"line_number":941,"context_line":"                    return out.strip()"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f1a1f67_4d587df9","line":938,"in_reply_to":"1f1a1f67_ad2e438f","updated":"2017-07-20 08:19:53.000000000","message":"ipmittol lan print ...|awk \u0027/IP Address[[:space:]]*:/ {print $4}\n\nawk can match regex, no need to use grep here.","commit_id":"61611f91dce7424382b99dcff34bd5e164b1e68e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ea19a93837a4b1970851a290e49830a6cec325fc","unresolved":false,"context_lines":[{"line_number":937,"context_line":"                out, e \u003d utils.execute("},{"line_number":938,"context_line":"                    \"ipmitool lan print {0!s} | grep -e \u0027IP Address [^S]\u0027 \""},{"line_number":939,"context_line":"                    \"| awk \u0027{{ print $4 }}\u0027\".format(channel + 1), shell\u003dTrue)"},{"line_number":940,"context_line":"                if out.strip() not in (\u0027\u0027, \u00270.0.0.0\u0027) and e \u003d\u003d \u0027\u0027:"},{"line_number":941,"context_line":"                    return out.strip()"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"        except (processutils.ProcessExecutionError, OSError) as e:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f1a1f67_62571a5a","line":940,"updated":"2017-07-18 08:48:55.000000000","message":"Why do you need the check on the value of \"e\"? This will make it fail on any warnings \"ipmitool\" may issue, and any actual errors are handled by the try..except block below.\n\nactually, it won\u0027t work. the first invalid channel will raise ProcessExecutionError, and the iteration will stop. you won\u0027t reach the correct channel, which on my test machine is \"1\". I think you need to move the loop out of the try..except block.","commit_id":"61611f91dce7424382b99dcff34bd5e164b1e68e"},{"author":{"_account_id":23757,"name":"Mateusz Kowalski","email":"mko@redhat.com","username":"makowals"},"change_message_id":"33fa556a0405bdcda078a19a84b8c2d09f57c3af","unresolved":false,"context_lines":[{"line_number":937,"context_line":"                out, e \u003d utils.execute("},{"line_number":938,"context_line":"                    \"ipmitool lan print {0!s} | grep -e \u0027IP Address [^S]\u0027 \""},{"line_number":939,"context_line":"                    \"| awk \u0027{{ print $4 }}\u0027\".format(channel + 1), shell\u003dTrue)"},{"line_number":940,"context_line":"                if out.strip() not in (\u0027\u0027, \u00270.0.0.0\u0027) and e \u003d\u003d \u0027\u0027:"},{"line_number":941,"context_line":"                    return out.strip()"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"        except (processutils.ProcessExecutionError, OSError) as e:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f1a1f67_cd005f04","line":940,"in_reply_to":"1f1a1f67_62571a5a","updated":"2017-07-18 08:58:38.000000000","message":"Well, from what I observed for invalid channel you get stderr \"Invalid channel: 55\" but no exception, that\u0027s why this logic.\n\nRegarding the second, everything is okay, are we checking the same code ? I start iterating channels from 1, so everything is okay and for your test machine it should work like a charm.\n\nLet me know if I\u0027m missing something bigger here.","commit_id":"61611f91dce7424382b99dcff34bd5e164b1e68e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"498811330882bf949c539f1670e58679bbb90dba","unresolved":false,"context_lines":[{"line_number":937,"context_line":"                out, e \u003d utils.execute("},{"line_number":938,"context_line":"                    \"ipmitool lan print {0!s} | grep -e \u0027IP Address [^S]\u0027 \""},{"line_number":939,"context_line":"                    \"| awk \u0027{{ print $4 }}\u0027\".format(channel + 1), shell\u003dTrue)"},{"line_number":940,"context_line":"                if out.strip() not in (\u0027\u0027, \u00270.0.0.0\u0027) and e \u003d\u003d \u0027\u0027:"},{"line_number":941,"context_line":"                    return out.strip()"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"        except (processutils.ProcessExecutionError, OSError) as e:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f1a1f67_6d726baf","line":940,"in_reply_to":"1f1a1f67_cd005f04","updated":"2017-07-18 09:03:40.000000000","message":"Oh, I know what is going on. Using pipes hides the return code of the ipmitool call. Mmmmm, this will work, but still a bit dirty. Are you sure ipmitool never outputs any warnings when used on a correct channel?","commit_id":"61611f91dce7424382b99dcff34bd5e164b1e68e"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"f5fe2a6cd5b67a785eeeda5c344337c6ba134274","unresolved":false,"context_lines":[{"line_number":933,"context_line":"        utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_si\u0027)"},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"        try:"},{"line_number":936,"context_line":"            for channel in range(16):"},{"line_number":937,"context_line":"                out, e \u003d utils.execute("},{"line_number":938,"context_line":"                    \"ipmitool lan print {} | awk \u0027/IP Address[[:space:]]*:/\""},{"line_number":939,"context_line":"                    \" {{print $4}}\u0027\".format(channel + 1), shell\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff346bd7_decbbf47","line":936,"updated":"2017-07-25 11:52:10.000000000","message":"so the 0 is valid channel number, why you start looking from channel 1?","commit_id":"965a8c6b85e9900aaea27beb7a8c28a50704192d"},{"author":{"_account_id":23757,"name":"Mateusz Kowalski","email":"mko@redhat.com","username":"makowals"},"change_message_id":"45c3b4eee8b83f0c42447b4d1636ae9acf1e6b1e","unresolved":false,"context_lines":[{"line_number":933,"context_line":"        utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_si\u0027)"},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"        try:"},{"line_number":936,"context_line":"            for channel in range(16):"},{"line_number":937,"context_line":"                out, e \u003d utils.execute("},{"line_number":938,"context_line":"                    \"ipmitool lan print {} | awk \u0027/IP Address[[:space:]]*:/\""},{"line_number":939,"context_line":"                    \" {{print $4}}\u0027\".format(channel + 1), shell\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"df3967d1_35c50af2","line":936,"in_reply_to":"df3967d1_32bf60b1","updated":"2017-08-03 06:48:12.000000000","message":"It can work when you connect remotely -- it will indeed return you a channel you have used. But in case of IPA, ipmi calls are done inband (using /dev/ipmi) so yet another channel is used ... So in this case it does not help.\n\nMaking a note about supported range of channels is indeed helpful\n\n~ ipmitool channel info 14\nChannel 0xf info:\n  Channel Medium Type   : System Interface\n  Channel Protocol Type : KCS\n  Session Support       : session-less\n  Active Session Count  : 0\n  Protocol Vendor ID    : 7154\n\n~ ipmitool lan print 0xf\nInvalid channel: 15","commit_id":"965a8c6b85e9900aaea27beb7a8c28a50704192d"},{"author":{"_account_id":23757,"name":"Mateusz Kowalski","email":"mko@redhat.com","username":"makowals"},"change_message_id":"001152c038dc53fe110e79fde5ef19f2ff407b63","unresolved":false,"context_lines":[{"line_number":933,"context_line":"        utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_si\u0027)"},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"        try:"},{"line_number":936,"context_line":"            for channel in range(16):"},{"line_number":937,"context_line":"                out, e \u003d utils.execute("},{"line_number":938,"context_line":"                    \"ipmitool lan print {} | awk \u0027/IP Address[[:space:]]*:/\""},{"line_number":939,"context_line":"                    \" {{print $4}}\u0027\".format(channel + 1), shell\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff346bd7_e16ee294","line":936,"in_reply_to":"ff346bd7_1ed4a7bc","updated":"2017-07-25 12:14:42.000000000","message":"0 is reserved internally, it\u0027s not a valid channel for communication; this loop goes from 1..16 (in next line I use channel+1 !)","commit_id":"965a8c6b85e9900aaea27beb7a8c28a50704192d"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3f8434846dee0fe59cb73f3379c4329204f3e42b","unresolved":false,"context_lines":[{"line_number":933,"context_line":"        utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_si\u0027)"},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"        try:"},{"line_number":936,"context_line":"            for channel in range(16):"},{"line_number":937,"context_line":"                out, e \u003d utils.execute("},{"line_number":938,"context_line":"                    \"ipmitool lan print {} | awk \u0027/IP Address[[:space:]]*:/\""},{"line_number":939,"context_line":"                    \" {{print $4}}\u0027\".format(channel + 1), shell\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff346bd7_1ed4a7bc","line":936,"in_reply_to":"ff346bd7_decbbf47","updated":"2017-07-25 11:59:23.000000000","message":"range actually starts with 0 and goes up to 15 here.","commit_id":"965a8c6b85e9900aaea27beb7a8c28a50704192d"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"0ab44d39b9afb29cdca97ad4fe000eded1b20927","unresolved":false,"context_lines":[{"line_number":933,"context_line":"        utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_si\u0027)"},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"        try:"},{"line_number":936,"context_line":"            for channel in range(16):"},{"line_number":937,"context_line":"                out, e \u003d utils.execute("},{"line_number":938,"context_line":"                    \"ipmitool lan print {} | awk \u0027/IP Address[[:space:]]*:/\""},{"line_number":939,"context_line":"                    \" {{print $4}}\u0027\".format(channel + 1), shell\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"df3967d1_32bf60b1","line":936,"in_reply_to":"ff346bd7_e16ee294","updated":"2017-08-03 05:38:11.000000000","message":"having a note here about channel 0 would be good. Also according to specification it is possible to get info about current configured channel (please have look Page 49 ) [0]\nif send \u0027ipmitool channel info 14\u0027 (it is reserved to getting info about current configured channel) for example:\n\nipmitool -H X.X.X.X -U user -Ppassword channel info 14\nChannel 0x1 info:\n  Channel Medium Type   : 802.3 LAN\n  Channel Protocol Type : IPMB-1.0\n  Session Support       : multi-session\n  Active Session Count  : 1\n  Protocol Vendor ID    : 7154\n  Volatile(active) Settings\n    Alerting            : enabled\n    Per-message Auth    : enabled\n    User Level Auth     : enabled\n    Access Mode         : always available\n  Non-Volatile Settings\n    Alerting            : enabled\n    Per-message Auth    : enabled\n    User Level Auth     : enabled\n    Access Mode         : always available\n\nipmitool -H X.X.X.X -U user -Ppassword lan print 0x1\nSet in Progress         : Set Complete\nAuth Type Support       : NONE MD2 MD5 PASSWORD OEM \nAuth Type Enable        : Callback : NONE MD2 MD5 PASSWORD OEM \n                        : User     : NONE MD2 MD5 PASSWORD OEM \n                        : Operator : NONE MD2 MD5 PASSWORD OEM \n                        : Admin    : NONE MD2 MD5 PASSWORD OEM \n                        : OEM      : \nIP Address Source       : Static Address\nIP Address              : 185.8.58.249\nSubnet Mask             : 255.255.255.0\nMAC Address             : 00:25:90:ce:05:23\nSNMP Community String   : AMI\nIP Header               : TTL\u003d0x40 Flags\u003d0x40 Precedence\u003d0x00 TOS\u003d0x10\nBMC ARP Control         : ARP Responses Enabled, Gratuitous ARP Disabled\nGratituous ARP Intrvl   : 0.0 seconds\nDefault Gateway IP      : 185.8.58.1\nDefault Gateway MAC     : 00:00:00:00:00:00\nBackup Gateway IP       : 0.0.0.0\nBackup Gateway MAC      : 00:00:00:00:00:00\n802.1q VLAN ID          : Disabled\n802.1q VLAN Priority    : 0\nRMCP+ Cipher Suites     : 0,1,2,3,6,7,8,11,12\nCipher Suite Priv Max   : XaaaXXaaaXXaaXX\n                        :     X\u003dCipher Suite Unused\n                        :     c\u003dCALLBACK\n                        :     u\u003dUSER\n                        :     o\u003dOPERATOR\n                        :     a\u003dADMIN\n                        :     O\u003dOEM\nBad Password Threshold  : 0\nInvalid password disable: no\nAttempt Count Reset Int.: 0\nUser Lockout Interval   : 0\n\nCould you please check if it is cover your case?\n\n[0] https://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/ipmi-second-gen-interface-spec-v2-rev1-1.pdf","commit_id":"965a8c6b85e9900aaea27beb7a8c28a50704192d"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"905bb85b84b74f8136182228818a65904d2ee2e0","unresolved":false,"context_lines":[{"line_number":934,"context_line":""},{"line_number":935,"context_line":"        try:"},{"line_number":936,"context_line":"            # From all the channels 0-15, only 1-7 can be assigned to different"},{"line_number":937,"context_line":"            # types of communication media and protocols and effectively used"},{"line_number":938,"context_line":"            for channel in range(7):"},{"line_number":939,"context_line":"                out, e \u003d utils.execute("},{"line_number":940,"context_line":"                    \"ipmitool lan print {} | awk \u0027/IP Address[[:space:]]*:/\""}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_2b2c6baa","line":937,"updated":"2017-08-03 23:04:50.000000000","message":"Can a unit test be added to show that the for loop works? We have a failing value and then a good value. It returns the good value.","commit_id":"d46e4c13f7904a6e83d6dfb078972af1cded22cf"},{"author":{"_account_id":23757,"name":"Mateusz Kowalski","email":"mko@redhat.com","username":"makowals"},"change_message_id":"0fb28e27375ee9112c6a3119ed3c3c466ccb8059","unresolved":false,"context_lines":[{"line_number":934,"context_line":""},{"line_number":935,"context_line":"        try:"},{"line_number":936,"context_line":"            # From all the channels 0-15, only 1-7 can be assigned to different"},{"line_number":937,"context_line":"            # types of communication media and protocols and effectively used"},{"line_number":938,"context_line":"            for channel in range(7):"},{"line_number":939,"context_line":"                out, e \u003d utils.execute("},{"line_number":940,"context_line":"                    \"ipmitool lan print {} | awk \u0027/IP Address[[:space:]]*:/\""}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_2d547652","line":937,"in_reply_to":"df3967d1_2b2c6baa","updated":"2017-08-04 08:48:23.000000000","message":"You cannot. If you get \"Invalid channel\" error, you won\u0027t have a following correct one as they appear in order. Though it may be right to have a unit test for different errors in the meantime. Done","commit_id":"d46e4c13f7904a6e83d6dfb078972af1cded22cf"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"9724316446f7a3415e69c6f523f9716a6f48a892","unresolved":false,"context_lines":[{"line_number":934,"context_line":""},{"line_number":935,"context_line":"        try:"},{"line_number":936,"context_line":"            # From all the channels 0-15, only 1-7 can be assigned to different"},{"line_number":937,"context_line":"            # types of communication media and protocols and effectively used"},{"line_number":938,"context_line":"            for channel in range(7):"},{"line_number":939,"context_line":"                out, e \u003d utils.execute("},{"line_number":940,"context_line":"                    \"ipmitool lan print {} | awk \u0027/IP Address[[:space:]]*:/\""}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_020df88e","line":937,"in_reply_to":"df3967d1_2d547652","updated":"2017-08-04 13:46:02.000000000","message":"Then should we be checking for invalid channel and then just break?","commit_id":"d46e4c13f7904a6e83d6dfb078972af1cded22cf"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"905bb85b84b74f8136182228818a65904d2ee2e0","unresolved":false,"context_lines":[{"line_number":935,"context_line":"        try:"},{"line_number":936,"context_line":"            # From all the channels 0-15, only 1-7 can be assigned to different"},{"line_number":937,"context_line":"            # types of communication media and protocols and effectively used"},{"line_number":938,"context_line":"            for channel in range(7):"},{"line_number":939,"context_line":"                out, e \u003d utils.execute("},{"line_number":940,"context_line":"                    \"ipmitool lan print {} | awk \u0027/IP Address[[:space:]]*:/\""},{"line_number":941,"context_line":"                    \" {{print $4}}\u0027\".format(channel + 1), shell\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_cb527f3b","line":938,"range":{"start_line":938,"start_character":12,"end_line":938,"end_character":35},"updated":"2017-08-03 23:04:50.000000000","message":"nit: Why not\n\n for channel in range(1, 8):\n\nSo line 941, doesn\u0027t have \u0027channel + 1\u0027","commit_id":"d46e4c13f7904a6e83d6dfb078972af1cded22cf"},{"author":{"_account_id":23757,"name":"Mateusz Kowalski","email":"mko@redhat.com","username":"makowals"},"change_message_id":"0fb28e27375ee9112c6a3119ed3c3c466ccb8059","unresolved":false,"context_lines":[{"line_number":935,"context_line":"        try:"},{"line_number":936,"context_line":"            # From all the channels 0-15, only 1-7 can be assigned to different"},{"line_number":937,"context_line":"            # types of communication media and protocols and effectively used"},{"line_number":938,"context_line":"            for channel in range(7):"},{"line_number":939,"context_line":"                out, e \u003d utils.execute("},{"line_number":940,"context_line":"                    \"ipmitool lan print {} | awk \u0027/IP Address[[:space:]]*:/\""},{"line_number":941,"context_line":"                    \" {{print $4}}\u0027\".format(channel + 1), shell\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_ed49ceb6","line":938,"range":{"start_line":938,"start_character":12,"end_line":938,"end_character":35},"in_reply_to":"df3967d1_cb527f3b","updated":"2017-08-04 08:48:23.000000000","message":"Done","commit_id":"d46e4c13f7904a6e83d6dfb078972af1cded22cf"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"b03969ae25b45eb0e7c3195337d080ff97d33bbb","unresolved":false,"context_lines":[{"line_number":937,"context_line":"            # types of communication media and protocols and effectively used"},{"line_number":938,"context_line":"            for channel in range(7):"},{"line_number":939,"context_line":"                out, e \u003d utils.execute("},{"line_number":940,"context_line":"                    \"ipmitool lan print {} | awk \u0027/IP Address[[:space:]]*:/\""},{"line_number":941,"context_line":"                    \" {{print $4}}\u0027\".format(channel + 1), shell\u003dTrue)"},{"line_number":942,"context_line":"                if out.strip() not in (\u0027\u0027, \u00270.0.0.0\u0027) and e \u003d\u003d \u0027\u0027:"},{"line_number":943,"context_line":"                    return out.strip()"}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_dba14896","line":940,"updated":"2017-08-03 10:22:35.000000000","message":"Also I have concern about sending all this commands to ipmi without any delay. For example when doing remote calls we have a delay between ipmi commands [0], sending them to often may cause bmc crash (not sure if it is related when calling ipmi locally)\n\nLeaving this up to next reviewers, as by default when lan is configured on 1 channel we will do only one call.\n\n[0] https://github.com/openstack/ironic/blob/master/etc/ironic/ironic.conf.sample#L1928","commit_id":"d46e4c13f7904a6e83d6dfb078972af1cded22cf"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"4349f389c0308a5f01d83ff9800582f307149321","unresolved":false,"context_lines":[{"line_number":937,"context_line":"            # types of communication media and protocols and effectively used"},{"line_number":938,"context_line":"            for channel in range(7):"},{"line_number":939,"context_line":"                out, e \u003d utils.execute("},{"line_number":940,"context_line":"                    \"ipmitool lan print {} | awk \u0027/IP Address[[:space:]]*:/\""},{"line_number":941,"context_line":"                    \" {{print $4}}\u0027\".format(channel + 1), shell\u003dTrue)"},{"line_number":942,"context_line":"                if out.strip() not in (\u0027\u0027, \u00270.0.0.0\u0027) and e \u003d\u003d \u0027\u0027:"},{"line_number":943,"context_line":"                    return out.strip()"}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_a69660ef","line":940,"in_reply_to":"df3967d1_dba14896","updated":"2017-08-03 15:23:07.000000000","message":"I don\u0027t think this is something we need to concern ourselves with too much, because that delay was geared for network based queries. In this case, we have kernel code, and a device (that hopefully locks/blocks), where as the network wise we might have really quirky network stacks in the BMCs that we are ultimately breaking.","commit_id":"d46e4c13f7904a6e83d6dfb078972af1cded22cf"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"905bb85b84b74f8136182228818a65904d2ee2e0","unresolved":false,"context_lines":[{"line_number":939,"context_line":"                out, e \u003d utils.execute("},{"line_number":940,"context_line":"                    \"ipmitool lan print {} | awk \u0027/IP Address[[:space:]]*:/\""},{"line_number":941,"context_line":"                    \" {{print $4}}\u0027\".format(channel + 1), shell\u003dTrue)"},{"line_number":942,"context_line":"                if out.strip() not in (\u0027\u0027, \u00270.0.0.0\u0027) and e \u003d\u003d \u0027\u0027:"},{"line_number":943,"context_line":"                    return out.strip()"},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"        except (processutils.ProcessExecutionError, OSError) as e:"}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_6bb39399","line":942,"updated":"2017-08-03 23:04:50.000000000","message":"Is there a unit test for this? As in, what if the value is 192.168.1.1, but we have error text?\n\n\nnit, I guess: \nSeems like this could be:\n\n if out.strip() and not e:\n    return out.strip()\n\nSince \u00270.0.0.0\u0027 is the default we will return on line 952, not sure why we don\u0027t return it here.","commit_id":"d46e4c13f7904a6e83d6dfb078972af1cded22cf"},{"author":{"_account_id":23757,"name":"Mateusz Kowalski","email":"mko@redhat.com","username":"makowals"},"change_message_id":"0fb28e27375ee9112c6a3119ed3c3c466ccb8059","unresolved":false,"context_lines":[{"line_number":939,"context_line":"                out, e \u003d utils.execute("},{"line_number":940,"context_line":"                    \"ipmitool lan print {} | awk \u0027/IP Address[[:space:]]*:/\""},{"line_number":941,"context_line":"                    \" {{print $4}}\u0027\".format(channel + 1), shell\u003dTrue)"},{"line_number":942,"context_line":"                if out.strip() not in (\u0027\u0027, \u00270.0.0.0\u0027) and e \u003d\u003d \u0027\u0027:"},{"line_number":943,"context_line":"                    return out.strip()"},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"        except (processutils.ProcessExecutionError, OSError) as e:"}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_4829e8e3","line":942,"in_reply_to":"df3967d1_6bb39399","updated":"2017-08-04 08:48:23.000000000","message":"Done","commit_id":"d46e4c13f7904a6e83d6dfb078972af1cded22cf"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"6df8b408ec1edf20a3c26d5f4da04a88725f5abc","unresolved":false,"context_lines":[{"line_number":939,"context_line":"                out, e \u003d utils.execute("},{"line_number":940,"context_line":"                    \"ipmitool lan print {} | awk \u0027/IP Address[[:space:]]*:/\""},{"line_number":941,"context_line":"                    \" {{print $4}}\u0027\".format(channel), shell\u003dTrue)"},{"line_number":942,"context_line":"                if out.strip() not in (\u0027\u0027, \u00270.0.0.0\u0027) and \\"},{"line_number":943,"context_line":"                        not e.startswith(\"Invalid channel\"):"},{"line_number":944,"context_line":"                    return out.strip()"},{"line_number":945,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"df3967d1_a2f74c8b","line":942,"updated":"2017-08-04 13:51:07.000000000","message":"Style issue. I\u0027m not a fan of back-quotes.\n\n if out.strip() and not e.startswith(\"Invalid channel\"):\n\nI still don\u0027t think we need to check for \u00270.0.0.0\u0027. Can you explain why we do?","commit_id":"5a458fa941544cb5c83dfe4ac98220c40d991159"},{"author":{"_account_id":23757,"name":"Mateusz Kowalski","email":"mko@redhat.com","username":"makowals"},"change_message_id":"03bdeb27290af4b209478c3a8130d9fb3012d236","unresolved":false,"context_lines":[{"line_number":939,"context_line":"                out, e \u003d utils.execute("},{"line_number":940,"context_line":"                    \"ipmitool lan print {} | awk \u0027/IP Address[[:space:]]*:/\""},{"line_number":941,"context_line":"                    \" {{print $4}}\u0027\".format(channel), shell\u003dTrue)"},{"line_number":942,"context_line":"                if out.strip() not in (\u0027\u0027, \u00270.0.0.0\u0027) and \\"},{"line_number":943,"context_line":"                        not e.startswith(\"Invalid channel\"):"},{"line_number":944,"context_line":"                    return out.strip()"},{"line_number":945,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"df3967d1_2d534d19","line":942,"in_reply_to":"df3967d1_a2f74c8b","updated":"2017-08-04 13:59:21.000000000","message":"You can have valid channel with 0.0.0.0, that\u0027s exactly the purpose of this patch. Right now IPA does not detect it and just returns 0.0.0.0 what is wrong. In case we get 0.0.0.0 on a correct channel, we need to keep looking","commit_id":"5a458fa941544cb5c83dfe4ac98220c40d991159"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"6df8b408ec1edf20a3c26d5f4da04a88725f5abc","unresolved":false,"context_lines":[{"line_number":940,"context_line":"                    \"ipmitool lan print {} | awk \u0027/IP Address[[:space:]]*:/\""},{"line_number":941,"context_line":"                    \" {{print $4}}\u0027\".format(channel), shell\u003dTrue)"},{"line_number":942,"context_line":"                if out.strip() not in (\u0027\u0027, \u00270.0.0.0\u0027) and \\"},{"line_number":943,"context_line":"                        not e.startswith(\"Invalid channel\"):"},{"line_number":944,"context_line":"                    return out.strip()"},{"line_number":945,"context_line":""},{"line_number":946,"context_line":"        except (processutils.ProcessExecutionError, OSError) as e:"}],"source_content_type":"text/x-python","patch_set":9,"id":"df3967d1_a26aac16","line":943,"updated":"2017-08-04 13:51:07.000000000","message":"Also, should it be:\n\n if e.startswith(\"Invalid channel):\n     break\n\n if out.strip():\n    return out.strip()\n\nIn patch set 7 it was commented that once \"Invalid channel\" is seen, there can not be any good results after that. So seems like stopping the for loop makes sense if see \"Invalid channel\".","commit_id":"5a458fa941544cb5c83dfe4ac98220c40d991159"},{"author":{"_account_id":19072,"name":"Xavier","email":"marcusrafael@lsd.ufcg.edu.br","username":"marcusrafael"},"change_message_id":"b0b2dfd7343f93abc08977d822d780076eee3094","unresolved":false,"context_lines":[{"line_number":926,"context_line":""},{"line_number":927,"context_line":"        return True"},{"line_number":928,"context_line":""},{"line_number":929,"context_line":"    def get_bmc_address(self):"},{"line_number":930,"context_line":"        # These modules are rarely loaded automatically"},{"line_number":931,"context_line":"        utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_msghandler\u0027)"},{"line_number":932,"context_line":"        utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_devintf\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f436f4f_cabb39e3","line":929,"range":{"start_line":929,"start_character":8,"end_line":929,"end_character":23},"updated":"2017-08-08 14:49:26.000000000","message":"nit: I\u0027d like a docstring here explaining what the method does instead of commenting the code and warning it could return 0.0.0.0 if none of lan channels is properly configured.","commit_id":"3abbc64bd0c25682c7f1b25f421727b630851e18"}],"releasenotes/notes/multiple-lan-channels-ee32d80150f990bf.yaml":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"0efea17e90573b94e8d7b6065d4e3bf4d66e968d","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    IPMI interface can be configured to use lan channel different than"},{"line_number":5,"context_line":"    a default one. In that case querying it will return 0.0.0.0 as an IP"},{"line_number":6,"context_line":"    address of not configured interface. In order to get the real IP address,"},{"line_number":7,"context_line":"    we need to iterate through all the possible channels."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"ff346bd7_0ea93c7a","line":6,"range":{"start_line":6,"start_character":12,"end_line":6,"end_character":40},"updated":"2017-07-24 13:18:41.000000000","message":"nit: or of a BMC that is not accessible from with-in the running operating system.","commit_id":"965a8c6b85e9900aaea27beb7a8c28a50704192d"},{"author":{"_account_id":23757,"name":"Mateusz Kowalski","email":"mko@redhat.com","username":"makowals"},"change_message_id":"bfbbde8a0e8618cf480b8499945e1e409d261c08","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    IPMI interface can be configured to use lan channel different than"},{"line_number":5,"context_line":"    a default one. In that case querying it will return 0.0.0.0 as an IP"},{"line_number":6,"context_line":"    address of not configured interface. In order to get the real IP address,"},{"line_number":7,"context_line":"    we need to iterate through all the possible channels."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"ff346bd7_8ed52cbc","line":6,"range":{"start_line":6,"start_character":12,"end_line":6,"end_character":40},"in_reply_to":"ff346bd7_0ea93c7a","updated":"2017-07-24 13:23:22.000000000","message":"But in that case BMC is accessible from the OS (/dev/ipmi), but not through the network","commit_id":"965a8c6b85e9900aaea27beb7a8c28a50704192d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"4349f389c0308a5f01d83ff9800582f307149321","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    IPMI interface can be configured to use lan channel different than"},{"line_number":5,"context_line":"    a default one. In that case querying it will return 0.0.0.0 as an IP"},{"line_number":6,"context_line":"    address of not configured interface. In order to get the real IP address,"},{"line_number":7,"context_line":"    we need to iterate through all the possible channels."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"df3967d1_86523c3a","line":6,"range":{"start_line":6,"start_character":4,"end_line":6,"end_character":39},"updated":"2017-08-03 15:23:07.000000000","message":"nit: address representing an interface lacking configuration.","commit_id":"d46e4c13f7904a6e83d6dfb078972af1cded22cf"}],"tox.ini":[{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"15bd9e13710638080b0037857e36dfd7b6a09701","unresolved":false,"context_lines":[{"line_number":67,"context_line":"exclude \u003d .venv,.git,.tox,dist,doc,*lib/python*,*egg,build,tools,imagebuild/tinyipa/tinyipafinal,imagebuild/tinyipa/tinyipabuild"},{"line_number":68,"context_line":"import-order-style \u003d pep8"},{"line_number":69,"context_line":"application-import-names \u003d ironic_python_agent"},{"line_number":70,"context_line":"# [H106] Dont put vim configuration in source files."},{"line_number":71,"context_line":"# [H203] Use assertIs(Not)None to check for None."},{"line_number":72,"context_line":"# [H904] Delay string interpolations at logging calls."},{"line_number":73,"context_line":"enable-extensions\u003dH106,H203,H904"}],"source_content_type":"text/x-properties","patch_set":13,"id":"9f436f4f_e64a9a25","line":70,"updated":"2017-08-09 13:26:43.000000000","message":"Why is this being changed?","commit_id":"28855ef097ac3c411598f8b9d1f214dd8dca4d22"},{"author":{"_account_id":23757,"name":"Mateusz Kowalski","email":"mko@redhat.com","username":"makowals"},"change_message_id":"70501fedd7fe9bbf6110cf233860e5d312f5bfdf","unresolved":false,"context_lines":[{"line_number":67,"context_line":"exclude \u003d .venv,.git,.tox,dist,doc,*lib/python*,*egg,build,tools,imagebuild/tinyipa/tinyipafinal,imagebuild/tinyipa/tinyipabuild"},{"line_number":68,"context_line":"import-order-style \u003d pep8"},{"line_number":69,"context_line":"application-import-names \u003d ironic_python_agent"},{"line_number":70,"context_line":"# [H106] Dont put vim configuration in source files."},{"line_number":71,"context_line":"# [H203] Use assertIs(Not)None to check for None."},{"line_number":72,"context_line":"# [H904] Delay string interpolations at logging calls."},{"line_number":73,"context_line":"enable-extensions\u003dH106,H203,H904"}],"source_content_type":"text/x-properties","patch_set":13,"id":"9f436f4f_4694c637","line":70,"in_reply_to":"9f436f4f_e64a9a25","updated":"2017-08-09 13:34:55.000000000","message":"Because of my mistake, it should be a separate patch ... ’ should be changed to \u0027","commit_id":"28855ef097ac3c411598f8b9d1f214dd8dca4d22"}]}
