)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3f2aed5e130b53fb24436e4681fbe7d7bda11668","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Make ironic console supporting the nokeepalive mode"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add an option ``[console]sol_mode``, that can be"},{"line_number":10,"context_line":"\"usesolkeepalive\" or \"nokeepalive\". If not set, no"},{"line_number":11,"context_line":"mode will be chosen."},{"line_number":12,"context_line":"This will be used in ipmitool command when entering"},{"line_number":13,"context_line":"Serial Over LAN."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"fa31d9ce_67d7fabf","line":10,"updated":"2017-02-16 15:55:26.000000000","message":"not accurate anymore.","commit_id":"86845798ff48e948adcf49efd5b506e0638a57df"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"93e66a11f258b3cb82f0aaacdaa0a46d23b95e0b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Make ironic console supporting the nokeepalive mode"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add an option ``[console]sol_mode``, that can be"},{"line_number":10,"context_line":"\"usesolkeepalive\" or \"nokeepalive\". If not set, no"},{"line_number":11,"context_line":"mode will be chosen."},{"line_number":12,"context_line":"This will be used in ipmitool command when entering"},{"line_number":13,"context_line":"Serial Over LAN."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"fa31d9ce_09ce335a","line":10,"in_reply_to":"fa31d9ce_67d7fabf","updated":"2017-02-17 10:57:03.000000000","message":"Done","commit_id":"86845798ff48e948adcf49efd5b506e0638a57df"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"d36eb0ce0cfb0f514ea77309a8f5d751bc8c1055","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Make ironic console supporting the nokeepalive mode"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"By default ``ipmitool sol activate`` command sends keepalive"},{"line_number":10,"context_line":"to keep the IPMI session from timing out. In some cases it"},{"line_number":11,"context_line":"breaks long running sol sessions."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This adds an option ``[console]sol_mode``, that can be"},{"line_number":14,"context_line":"\"keepalive\" or \"nokeepalive\". If not set, no"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"fa31d9ce_85567f04","line":11,"range":{"start_line":10,"start_character":42,"end_line":11,"end_character":33},"updated":"2017-02-17 13:42:19.000000000","message":"It would be good to describe problem in more detail.\nIs it related to takeover, when ironic-conductor process\ndied on the node, but console session still alive, and it is impossible to start new console from new conductor that picked this node because ipmi supports only one session?","commit_id":"889650dfa52db96e528b9b8274537b146136f9cc"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"70fc11d6ae09bfdf89b9f446b1d4ebae5d6562d2","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Make ironic console supporting the nokeepalive mode"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"By default ``ipmitool sol activate`` command sends keepalive"},{"line_number":10,"context_line":"to keep the IPMI session from timing out. In some cases it"},{"line_number":11,"context_line":"breaks long running sol sessions."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This adds an option ``[console]sol_mode``, that can be"},{"line_number":14,"context_line":"\"keepalive\" or \"nokeepalive\". If not set, no"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"fa31d9ce_a6e7063f","line":11,"range":{"start_line":10,"start_character":42,"end_line":11,"end_character":33},"in_reply_to":"fa31d9ce_85567f04","updated":"2017-02-17 16:00:53.000000000","message":"Actually, it is not described by the bug reporter in which cases exactly did he encounter a problem. Thanks, I\u0027 ll investigate this question","commit_id":"889650dfa52db96e528b9b8274537b146136f9cc"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"2078cd15b1413b6825314efbcc036c28e38ada3a","unresolved":false,"context_lines":[{"line_number":12,"context_line":"and new conductor has been started but still ipmi session"},{"line_number":13,"context_line":"is still running."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This adds an option ``[console]sol_mode``, that can be"},{"line_number":16,"context_line":"\"keepalive\" or \"nokeepalive\". If not set, no"},{"line_number":17,"context_line":"mode will be chosen."},{"line_number":18,"context_line":"For now it is used in ipmitool command when entering"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"da36d5c6_a624fac4","line":15,"updated":"2017-02-23 20:24:31.000000000","message":"An alternative was proposed on the PTG to make sure that console process actually dies when ironic-conductor dies.","commit_id":"11b97ef3b5d61a46a8b56aa93ab503ffefc2f9e3"}],"etc/ironic/ironic.conf.sample":[{"author":{"_account_id":23220,"name":"Łukasz Leszczuk","email":"lleszczuk@gmail.com","username":"lukl"},"change_message_id":"6a297fb7ca6d9c558b628191f5a6c252e58614cc","unresolved":false,"context_lines":[{"line_number":755,"context_line":""},{"line_number":756,"context_line":"# Mode for the console, usesolkeepalive or nokeepalive."},{"line_number":757,"context_line":"# (ipmitool) (bool value)"},{"line_number":758,"context_line":"#no_keep_alive \u003d False"},{"line_number":759,"context_line":""},{"line_number":760,"context_line":"[cors]"},{"line_number":761,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":2,"id":"5a8bc5a2_da2a64e7","line":758,"updated":"2016-09-22 09:46:27.000000000","message":"ipmitool accepts 2 settings (both optional) `nokeepalive` and `usesolkeepalive`. I believe it would be beneficial to support both.\n\nipmi_cmd in ipmitool driver should have 3 options, a) don\u0027t add any param, b) add \u0027nokeepalive\u0027, c) add \u0027usesolkeepalive\u0027","commit_id":"950cdf66a286bf3e2bc3a4178ee8dde1660f92a7"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"972abc7ff34d8235e0af55ded028a3d11fe83dc5","unresolved":false,"context_lines":[{"line_number":755,"context_line":""},{"line_number":756,"context_line":"# Mode for the ipmitool to enter Serial Over LAN,"},{"line_number":757,"context_line":"# \"None\", \"usesolkeepalive\" or \"nokeepalive\"\u0027"},{"line_number":758,"context_line":"#sol_mode \u003d None"},{"line_number":759,"context_line":""},{"line_number":760,"context_line":"[cors]"},{"line_number":761,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":6,"id":"1a95cdbc_246446b7","line":758,"updated":"2016-10-10 04:55:24.000000000","message":"I see similar settings are in form of \"config \u003d \u003cNone\u003e\" other than \"config \u003d None\". Please recheck that.","commit_id":"9513caed69008e92df849b071b87b14d89f65a8c"},{"author":{"_account_id":19901,"name":"Xu Ao","email":"xuao@awcloud.com","username":"xuao"},"change_message_id":"8f5e899875c33ade34430fd1a3a9b24f3f4582f8","unresolved":false,"context_lines":[{"line_number":755,"context_line":""},{"line_number":756,"context_line":"# Mode for the ipmitool to enter Serial Over LAN,"},{"line_number":757,"context_line":"# \"None\", \"usesolkeepalive\" or \"nokeepalive\"\u0027"},{"line_number":758,"context_line":"#sol_mode \u003d None"},{"line_number":759,"context_line":""},{"line_number":760,"context_line":"[cors]"},{"line_number":761,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":6,"id":"1a95cdbc_3e08ced9","line":758,"in_reply_to":"1a95cdbc_246446b7","updated":"2016-10-10 08:00:01.000000000","message":"Done. \"sol_mode \u003d \u003cNone\u003e\"","commit_id":"9513caed69008e92df849b071b87b14d89f65a8c"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"9995b3a73747ec77daab4df527ec94cbdefb41af","unresolved":false,"context_lines":[{"line_number":746,"context_line":"#terminal_pid_dir \u003d \u003cNone\u003e"},{"line_number":747,"context_line":""},{"line_number":748,"context_line":"# Mode for the ipmitool to enter Serial Over LAN."},{"line_number":749,"context_line":"# If not set, no mode will be chosen. The default is  "},{"line_number":750,"context_line":"# for this option to be unset. (string value)"},{"line_number":751,"context_line":"# Allowed values: usesolkeepalive, nokeepalive"},{"line_number":752,"context_line":"#sol_mode \u003d \u003cNone\u003e"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"1a95cdbc_73d99ff2","line":749,"range":{"start_line":749,"start_character":52,"end_line":749,"end_character":54},"updated":"2016-10-10 13:47:48.000000000","message":"please don\u0027t change this file manually, use tox -egenconfig.","commit_id":"d1ef88ce2f5d2eb3f8bf86d86ae7d331762d8823"},{"author":{"_account_id":14943,"name":"Caio Oliveira","email":"caiobo@lsd.ufcg.edu.br","username":"caiobo"},"change_message_id":"ee85d4f19ecdbd49c8aa3bfc1038ab4e3d7735b6","unresolved":false,"context_lines":[{"line_number":745,"context_line":"# the temporary directory will be used. (string value)"},{"line_number":746,"context_line":"#terminal_pid_dir \u003d \u003cNone\u003e"},{"line_number":747,"context_line":""},{"line_number":748,"context_line":"# Mode for the ipmitool to enter Serial Over LAN.If not set,"},{"line_number":749,"context_line":"# no mode will be chosen. The default is for this option to be"},{"line_number":750,"context_line":"# unset. (string value)"},{"line_number":751,"context_line":"# Allowed values: usesolkeepalive, nokeepalive"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"fa6399be_2af75dd4","line":748,"range":{"start_line":748,"start_character":48,"end_line":748,"end_character":50},"updated":"2016-10-11 18:23:50.000000000","message":"White space here.","commit_id":"739b4fe482ae04789ca70caff9d8cd409fa304fa"},{"author":{"_account_id":19901,"name":"Xu Ao","email":"xuao@awcloud.com","username":"xuao"},"change_message_id":"6cebee96526d87aa08907833ee961d7a901aa977","unresolved":false,"context_lines":[{"line_number":745,"context_line":"# the temporary directory will be used. (string value)"},{"line_number":746,"context_line":"#terminal_pid_dir \u003d \u003cNone\u003e"},{"line_number":747,"context_line":""},{"line_number":748,"context_line":"# Mode for the ipmitool to enter Serial Over LAN.If not set,"},{"line_number":749,"context_line":"# no mode will be chosen. The default is for this option to be"},{"line_number":750,"context_line":"# unset. (string value)"},{"line_number":751,"context_line":"# Allowed values: usesolkeepalive, nokeepalive"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"fa6399be_d5959940","line":748,"range":{"start_line":748,"start_character":48,"end_line":748,"end_character":50},"in_reply_to":"fa6399be_2af75dd4","updated":"2016-10-12 01:22:43.000000000","message":"Oh~Thanks, I\u0027ll fix it next patch.  :\u0027\u0027-|","commit_id":"739b4fe482ae04789ca70caff9d8cd409fa304fa"}],"ironic/conf/console.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"00cbf92f864e56aa631644ef4c29823480cfc03b","unresolved":false,"context_lines":[{"line_number":39,"context_line":"               default\u003d10,"},{"line_number":40,"context_line":"               help\u003d_(\u0027Time (in seconds) to wait for the console subprocess \u0027"},{"line_number":41,"context_line":"                      \u0027to start.\u0027)),"},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027sol_mode\u0027,"},{"line_number":43,"context_line":"               default\u003dNone,"},{"line_number":44,"context_line":"               help\u003d_(\u0027Mode for the ipmitool to enter Serial Over LAN, \u0027"},{"line_number":45,"context_line":"                      \u0027\"None\", \"usesolkeepalive\" or \"nokeepalive\"\u0027)),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_98a65fac","line":42,"range":{"start_line":42,"start_character":16,"end_line":42,"end_character":24},"updated":"2016-10-09 19:03:58.000000000","message":"Can you place it in alphabetical order please?","commit_id":"9513caed69008e92df849b071b87b14d89f65a8c"},{"author":{"_account_id":19901,"name":"Xu Ao","email":"xuao@awcloud.com","username":"xuao"},"change_message_id":"8f5e899875c33ade34430fd1a3a9b24f3f4582f8","unresolved":false,"context_lines":[{"line_number":39,"context_line":"               default\u003d10,"},{"line_number":40,"context_line":"               help\u003d_(\u0027Time (in seconds) to wait for the console subprocess \u0027"},{"line_number":41,"context_line":"                      \u0027to start.\u0027)),"},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027sol_mode\u0027,"},{"line_number":43,"context_line":"               default\u003dNone,"},{"line_number":44,"context_line":"               help\u003d_(\u0027Mode for the ipmitool to enter Serial Over LAN, \u0027"},{"line_number":45,"context_line":"                      \u0027\"None\", \"usesolkeepalive\" or \"nokeepalive\"\u0027)),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_9ecc82bc","line":42,"range":{"start_line":42,"start_character":16,"end_line":42,"end_character":24},"in_reply_to":"1a95cdbc_98a65fac","updated":"2016-10-10 08:00:01.000000000","message":"Done","commit_id":"9513caed69008e92df849b071b87b14d89f65a8c"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"00cbf92f864e56aa631644ef4c29823480cfc03b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    cfg.StrOpt(\u0027sol_mode\u0027,"},{"line_number":43,"context_line":"               default\u003dNone,"},{"line_number":44,"context_line":"               help\u003d_(\u0027Mode for the ipmitool to enter Serial Over LAN, \u0027"},{"line_number":45,"context_line":"                      \u0027\"None\", \"usesolkeepalive\" or \"nokeepalive\"\u0027)),"},{"line_number":46,"context_line":"]"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_789b5366","line":45,"range":{"start_line":45,"start_character":23,"end_line":45,"end_character":65},"updated":"2016-10-09 19:03:58.000000000","message":"Please use choices\u003d[\u0027None\u0027, etc.] in the option definition for this, this will also take care of the value validation.","commit_id":"9513caed69008e92df849b071b87b14d89f65a8c"},{"author":{"_account_id":19901,"name":"Xu Ao","email":"xuao@awcloud.com","username":"xuao"},"change_message_id":"8f5e899875c33ade34430fd1a3a9b24f3f4582f8","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    cfg.StrOpt(\u0027sol_mode\u0027,"},{"line_number":43,"context_line":"               default\u003dNone,"},{"line_number":44,"context_line":"               help\u003d_(\u0027Mode for the ipmitool to enter Serial Over LAN, \u0027"},{"line_number":45,"context_line":"                      \u0027\"None\", \"usesolkeepalive\" or \"nokeepalive\"\u0027)),"},{"line_number":46,"context_line":"]"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_febd8602","line":45,"range":{"start_line":45,"start_character":23,"end_line":45,"end_character":65},"in_reply_to":"1a95cdbc_789b5366","updated":"2016-10-10 08:00:01.000000000","message":"Done","commit_id":"9513caed69008e92df849b071b87b14d89f65a8c"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"9995b3a73747ec77daab4df527ec94cbdefb41af","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                      \u0027If not specified, the temporary directory \u0027"},{"line_number":33,"context_line":"                      \u0027will be used.\u0027)),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027sol_mode\u0027,"},{"line_number":35,"context_line":"               choices\u003d[\u0027usesolkeepalive\u0027, \u0027nokeepalive\u0027],"},{"line_number":36,"context_line":"               help\u003d_(\u0027Mode for the ipmitool to enter Serial Over LAN.\u0027"},{"line_number":37,"context_line":"                      \u0027If not set, no mode will be chosen. The default is \u0027"},{"line_number":38,"context_line":"                      \u0027for this option to be unset.\u0027)),"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a95cdbc_70aef52e","line":35,"updated":"2016-10-10 13:47:48.000000000","message":"Seems a bit hacky, as if default is None, choices does not have to contain it, but maybe that\u0027s OK.","commit_id":"d1ef88ce2f5d2eb3f8bf86d86ae7d331762d8823"},{"author":{"_account_id":19901,"name":"Xu Ao","email":"xuao@awcloud.com","username":"xuao"},"change_message_id":"05d60d9ce25e57f9243100bad91510a69ac4f729","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                      \u0027If not specified, the temporary directory \u0027"},{"line_number":33,"context_line":"                      \u0027will be used.\u0027)),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027sol_mode\u0027,"},{"line_number":35,"context_line":"               choices\u003d[\u0027usesolkeepalive\u0027, \u0027nokeepalive\u0027],"},{"line_number":36,"context_line":"               help\u003d_(\u0027Mode for the ipmitool to enter Serial Over LAN.\u0027"},{"line_number":37,"context_line":"                      \u0027If not set, no mode will be chosen. The default is \u0027"},{"line_number":38,"context_line":"                      \u0027for this option to be unset.\u0027)),"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a95cdbc_e6632faf","line":35,"in_reply_to":"1a95cdbc_70aef52e","updated":"2016-10-11 01:15:30.000000000","message":"Done","commit_id":"d1ef88ce2f5d2eb3f8bf86d86ae7d331762d8823"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"9995b3a73747ec77daab4df527ec94cbdefb41af","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                      \u0027will be used.\u0027)),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027sol_mode\u0027,"},{"line_number":35,"context_line":"               choices\u003d[\u0027usesolkeepalive\u0027, \u0027nokeepalive\u0027],"},{"line_number":36,"context_line":"               help\u003d_(\u0027Mode for the ipmitool to enter Serial Over LAN.\u0027"},{"line_number":37,"context_line":"                      \u0027If not set, no mode will be chosen. The default is \u0027"},{"line_number":38,"context_line":"                      \u0027for this option to be unset.\u0027)),"},{"line_number":39,"context_line":"    cfg.IntOpt(\u0027subprocess_checking_interval\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a95cdbc_f01765a0","line":36,"updated":"2016-10-10 13:47:48.000000000","message":"Missing space at the end of line.","commit_id":"d1ef88ce2f5d2eb3f8bf86d86ae7d331762d8823"},{"author":{"_account_id":19901,"name":"Xu Ao","email":"xuao@awcloud.com","username":"xuao"},"change_message_id":"05d60d9ce25e57f9243100bad91510a69ac4f729","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                      \u0027will be used.\u0027)),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027sol_mode\u0027,"},{"line_number":35,"context_line":"               choices\u003d[\u0027usesolkeepalive\u0027, \u0027nokeepalive\u0027],"},{"line_number":36,"context_line":"               help\u003d_(\u0027Mode for the ipmitool to enter Serial Over LAN.\u0027"},{"line_number":37,"context_line":"                      \u0027If not set, no mode will be chosen. The default is \u0027"},{"line_number":38,"context_line":"                      \u0027for this option to be unset.\u0027)),"},{"line_number":39,"context_line":"    cfg.IntOpt(\u0027subprocess_checking_interval\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a95cdbc_4675c361","line":36,"in_reply_to":"1a95cdbc_f01765a0","updated":"2016-10-11 01:15:30.000000000","message":"Done","commit_id":"d1ef88ce2f5d2eb3f8bf86d86ae7d331762d8823"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"ca47ff466d9b92471f734e500207d368204bb564","unresolved":false,"context_lines":[{"line_number":31,"context_line":"               help\u003d_(\u0027Directory for holding terminal pid files. \u0027"},{"line_number":32,"context_line":"                      \u0027If not specified, the temporary directory \u0027"},{"line_number":33,"context_line":"                      \u0027will be used.\u0027)),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027sol_mode\u0027,"},{"line_number":35,"context_line":"               choices\u003d[\u0027usesolkeepalive\u0027, \u0027nokeepalive\u0027],"},{"line_number":36,"context_line":"               help\u003d_(\u0027Mode for the ipmitool to enter Serial Over LAN.\u0027"},{"line_number":37,"context_line":"                      \u0027If not set, no mode will be chosen. The default is \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_cbaa60d4","line":34,"updated":"2016-10-11 21:00:12.000000000","message":"Do we need to specify required\u003dFalse here, or is that the default?","commit_id":"739b4fe482ae04789ca70caff9d8cd409fa304fa"},{"author":{"_account_id":19901,"name":"Xu Ao","email":"xuao@awcloud.com","username":"xuao"},"change_message_id":"7a68fe7c3c698b454c14035ae8700becd4dc0bbc","unresolved":false,"context_lines":[{"line_number":31,"context_line":"               help\u003d_(\u0027Directory for holding terminal pid files. \u0027"},{"line_number":32,"context_line":"                      \u0027If not specified, the temporary directory \u0027"},{"line_number":33,"context_line":"                      \u0027will be used.\u0027)),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027sol_mode\u0027,"},{"line_number":35,"context_line":"               choices\u003d[\u0027usesolkeepalive\u0027, \u0027nokeepalive\u0027],"},{"line_number":36,"context_line":"               help\u003d_(\u0027Mode for the ipmitool to enter Serial Over LAN.\u0027"},{"line_number":37,"context_line":"                      \u0027If not set, no mode will be chosen. The default is \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_ac3b7437","line":34,"in_reply_to":"fa6399be_cbaa60d4","updated":"2016-10-12 09:40:28.000000000","message":"I think the required is default to be False maybe~","commit_id":"739b4fe482ae04789ca70caff9d8cd409fa304fa"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"ca47ff466d9b92471f734e500207d368204bb564","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                      \u0027If not specified, the temporary directory \u0027"},{"line_number":33,"context_line":"                      \u0027will be used.\u0027)),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027sol_mode\u0027,"},{"line_number":35,"context_line":"               choices\u003d[\u0027usesolkeepalive\u0027, \u0027nokeepalive\u0027],"},{"line_number":36,"context_line":"               help\u003d_(\u0027Mode for the ipmitool to enter Serial Over LAN.\u0027"},{"line_number":37,"context_line":"                      \u0027If not set, no mode will be chosen. The default is \u0027"},{"line_number":38,"context_line":"                      \u0027for this option to be unset.\u0027)),"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_2b4cbc6f","line":35,"range":{"start_line":35,"start_character":25,"end_line":35,"end_character":40},"updated":"2016-10-11 21:00:12.000000000","message":"why not just \"keepalive\" to be consistent with \"nokeepalive\"? It\u0027s already obvious from \"sol_mode\" that this is referencing SOL.\n\nedit: I guess it\u0027s to match the SOL parameter. Do we want to keep a 1:1 mapping between SOL modes and config options?\n\nI see benefits to both. Putting a -1 and awaiting discussion on this point.","commit_id":"739b4fe482ae04789ca70caff9d8cd409fa304fa"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"7f052e3e5649ab96d137c6cf44fc7248e7ac1559","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                      \u0027If not specified, the temporary directory \u0027"},{"line_number":33,"context_line":"                      \u0027will be used.\u0027)),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027sol_mode\u0027,"},{"line_number":35,"context_line":"               choices\u003d[\u0027usesolkeepalive\u0027, \u0027nokeepalive\u0027],"},{"line_number":36,"context_line":"               help\u003d_(\u0027Mode for the ipmitool to enter Serial Over LAN.\u0027"},{"line_number":37,"context_line":"                      \u0027If not set, no mode will be chosen. The default is \u0027"},{"line_number":38,"context_line":"                      \u0027for this option to be unset.\u0027)),"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_72d5adb7","line":35,"range":{"start_line":35,"start_character":25,"end_line":35,"end_character":40},"in_reply_to":"fa6399be_02bd0768","updated":"2016-12-02 11:28:53.000000000","message":"Do you foresee this option being used by other drivers/technologies other than ipmitool (redfish, ipminative, ...) ?\n\nIf so, I think we should make the name more consistent as mario suggested instead of just mapping the names that ipmitool uses.","commit_id":"739b4fe482ae04789ca70caff9d8cd409fa304fa"},{"author":{"_account_id":19901,"name":"Xu Ao","email":"xuao@awcloud.com","username":"xuao"},"change_message_id":"7a68fe7c3c698b454c14035ae8700becd4dc0bbc","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                      \u0027If not specified, the temporary directory \u0027"},{"line_number":33,"context_line":"                      \u0027will be used.\u0027)),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027sol_mode\u0027,"},{"line_number":35,"context_line":"               choices\u003d[\u0027usesolkeepalive\u0027, \u0027nokeepalive\u0027],"},{"line_number":36,"context_line":"               help\u003d_(\u0027Mode for the ipmitool to enter Serial Over LAN.\u0027"},{"line_number":37,"context_line":"                      \u0027If not set, no mode will be chosen. The default is \u0027"},{"line_number":38,"context_line":"                      \u0027for this option to be unset.\u0027)),"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_02bd0768","line":35,"range":{"start_line":35,"start_character":25,"end_line":35,"end_character":40},"in_reply_to":"fa6399be_2b4cbc6f","updated":"2016-10-12 09:40:28.000000000","message":"I am just still not clear about the difference between these two modes, and I\u0027m trying to search for some docs.  :_(","commit_id":"739b4fe482ae04789ca70caff9d8cd409fa304fa"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"0a2c6bbb530484c27a01eed3b4dba2a042befc33","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                      \u0027If not specified, the temporary directory \u0027"},{"line_number":33,"context_line":"                      \u0027will be used.\u0027)),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027sol_mode\u0027,"},{"line_number":35,"context_line":"               choices\u003d[\u0027usesolkeepalive\u0027, \u0027nokeepalive\u0027],"},{"line_number":36,"context_line":"               help\u003d_(\u0027Mode for the ipmitool to enter Serial Over LAN.\u0027"},{"line_number":37,"context_line":"                      \u0027If not set, no mode will be chosen. The default is \u0027"},{"line_number":38,"context_line":"                      \u0027for this option to be unset.\u0027)),"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_24d0aef7","line":35,"range":{"start_line":35,"start_character":25,"end_line":35,"end_character":40},"in_reply_to":"fa6399be_2b4cbc6f","updated":"2017-02-16 15:36:02.000000000","message":"If it would be only ipmitool usage, the mapping would not really matter, but here Lucas is right (may be it is possible) if some other than ipmitool are using this, it should be more abstract","commit_id":"739b4fe482ae04789ca70caff9d8cd409fa304fa"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3f2aed5e130b53fb24436e4681fbe7d7bda11668","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                      \u0027will be used.\u0027)),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027sol_mode\u0027,"},{"line_number":35,"context_line":"               choices\u003d[\u0027keepalive\u0027, \u0027nokeepalive\u0027],"},{"line_number":36,"context_line":"               help\u003d_(\u0027Mode for the ipmitool to enter Serial Over LAN. \u0027"},{"line_number":37,"context_line":"                      \u0027If not set, no mode will be chosen. The default is \u0027"},{"line_number":38,"context_line":"                      \u0027for this option to be unset.\u0027)),"},{"line_number":39,"context_line":"    cfg.IntOpt(\u0027subprocess_checking_interval\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa31d9ce_e7ca0a1a","line":36,"range":{"start_line":36,"start_character":36,"end_line":36,"end_character":44},"updated":"2017-02-16 15:55:26.000000000","message":"If you intend to make it generic, change this to something else, like management controller utilities?","commit_id":"86845798ff48e948adcf49efd5b506e0638a57df"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"c9c9fd0f6a2a4eb14fd51f82c2ebf9f8af5089d6","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                      \u0027will be used.\u0027)),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027sol_mode\u0027,"},{"line_number":35,"context_line":"               choices\u003d[\u0027keepalive\u0027, \u0027nokeepalive\u0027],"},{"line_number":36,"context_line":"               help\u003d_(\u0027Mode for the ipmitool to enter Serial Over LAN. \u0027"},{"line_number":37,"context_line":"                      \u0027If not set, no mode will be chosen. The default is \u0027"},{"line_number":38,"context_line":"                      \u0027for this option to be unset.\u0027)),"},{"line_number":39,"context_line":"    cfg.IntOpt(\u0027subprocess_checking_interval\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa31d9ce_db2153b6","line":36,"range":{"start_line":36,"start_character":36,"end_line":36,"end_character":44},"in_reply_to":"fa31d9ce_e7ca0a1a","updated":"2017-02-17 00:46:37.000000000","message":"+1","commit_id":"86845798ff48e948adcf49efd5b506e0638a57df"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"93e66a11f258b3cb82f0aaacdaa0a46d23b95e0b","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                      \u0027will be used.\u0027)),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027sol_mode\u0027,"},{"line_number":35,"context_line":"               choices\u003d[\u0027keepalive\u0027, \u0027nokeepalive\u0027],"},{"line_number":36,"context_line":"               help\u003d_(\u0027Mode for the ipmitool to enter Serial Over LAN. \u0027"},{"line_number":37,"context_line":"                      \u0027If not set, no mode will be chosen. The default is \u0027"},{"line_number":38,"context_line":"                      \u0027for this option to be unset.\u0027)),"},{"line_number":39,"context_line":"    cfg.IntOpt(\u0027subprocess_checking_interval\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa31d9ce_495f4b0e","line":36,"range":{"start_line":36,"start_character":36,"end_line":36,"end_character":44},"in_reply_to":"fa31d9ce_e7ca0a1a","updated":"2017-02-17 10:57:03.000000000","message":"Done","commit_id":"86845798ff48e948adcf49efd5b506e0638a57df"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"1239c930fb2cfaa0e69b3dc41de9d8adeedaa049","unresolved":false,"context_lines":[{"line_number":31,"context_line":"               help\u003d_(\u0027Directory for holding terminal pid files. \u0027"},{"line_number":32,"context_line":"                      \u0027If not specified, the temporary directory \u0027"},{"line_number":33,"context_line":"                      \u0027will be used.\u0027)),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027sol_mode\u0027,"},{"line_number":35,"context_line":"               choices\u003d[\u0027keepalive\u0027, \u0027nokeepalive\u0027],"},{"line_number":36,"context_line":"               help\u003d_(\u0027Mode for management controller utilities to enter \u0027"},{"line_number":37,"context_line":"                      \u0027Serial Over LAN. If not set, no mode will be chosen. \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa31d9ce_3448ab5b","line":34,"updated":"2017-02-17 12:38:04.000000000","message":"Because it\u0027s IPMI related please add option to \"ipmi\" group.","commit_id":"889650dfa52db96e528b9b8274537b146136f9cc"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"70fc11d6ae09bfdf89b9f446b1d4ebae5d6562d2","unresolved":false,"context_lines":[{"line_number":31,"context_line":"               help\u003d_(\u0027Directory for holding terminal pid files. \u0027"},{"line_number":32,"context_line":"                      \u0027If not specified, the temporary directory \u0027"},{"line_number":33,"context_line":"                      \u0027will be used.\u0027)),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027sol_mode\u0027,"},{"line_number":35,"context_line":"               choices\u003d[\u0027keepalive\u0027, \u0027nokeepalive\u0027],"},{"line_number":36,"context_line":"               help\u003d_(\u0027Mode for management controller utilities to enter \u0027"},{"line_number":37,"context_line":"                      \u0027Serial Over LAN. If not set, no mode will be chosen. \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa31d9ce_fbb8bbc9","line":34,"in_reply_to":"fa31d9ce_3448ab5b","updated":"2017-02-17 16:00:53.000000000","message":"At the previous patch (9th) Lucas proposed to be more abstract, as not only ipmitool can be used here (keepalive is a quite common option)\nIs it worth strong discussion? I am not sure what of solutions is better","commit_id":"889650dfa52db96e528b9b8274537b146136f9cc"}],"ironic/drivers/modules/ipmitool.py":[{"author":{"_account_id":7900,"name":"Tomasz Paszkowski","email":"ss7pro@gmail.com","username":"tpaszkowski"},"change_message_id":"5df00808666957e75e9240ef88a0f42905d3d9eb","unresolved":false,"context_lines":[{"line_number":1205,"context_line":"        if CONF.debug:"},{"line_number":1206,"context_line":"            ipmi_cmd +\u003d \" -v\""},{"line_number":1207,"context_line":"        ipmi_cmd +\u003d \" sol activate\""},{"line_number":1208,"context_line":"        if CONF.console.no_keep_alive:"},{"line_number":1209,"context_line":"            ipmi_cmd +\u003d \" nokeepalive\""},{"line_number":1210,"context_line":"        try:"},{"line_number":1211,"context_line":"            start_method(driver_info[\u0027uuid\u0027], driver_info[\u0027port\u0027], ipmi_cmd)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_55dd476f","line":1208,"updated":"2016-09-22 09:48:21.000000000","message":"We should have a generic option for all possible keepalive modes here (usesolkeepalive, nokeepalive).","commit_id":"950cdf66a286bf3e2bc3a4178ee8dde1660f92a7"},{"author":{"_account_id":7900,"name":"Tomasz Paszkowski","email":"ss7pro@gmail.com","username":"tpaszkowski"},"change_message_id":"1ecf15894df99da8606687e97e322501b909a85b","unresolved":false,"context_lines":[{"line_number":1205,"context_line":"        if CONF.debug:"},{"line_number":1206,"context_line":"            ipmi_cmd +\u003d \" -v\""},{"line_number":1207,"context_line":"        ipmi_cmd +\u003d \" sol activate\""},{"line_number":1208,"context_line":"        if CONF.console.sol_mode \u003d\u003d \u0027nokeepalive\u0027:"},{"line_number":1209,"context_line":"            ipmi_cmd +\u003d \" nokeepalive\""},{"line_number":1210,"context_line":"        elif CONF.console.sol_mode \u003d\u003d \u0027usesolkeepalive\u0027:"},{"line_number":1211,"context_line":"            ipmi_cmd +\u003d \" usesolkeepalive\""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_c8936cf9","line":1208,"updated":"2016-09-22 14:06:25.000000000","message":"Can we add unit test to cover addition of those two options ?","commit_id":"a4fa72ea884d18b87619c27cee5db1050e0b99ec"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"1239c930fb2cfaa0e69b3dc41de9d8adeedaa049","unresolved":false,"context_lines":[{"line_number":1295,"context_line":"        if CONF.debug:"},{"line_number":1296,"context_line":"            ipmi_cmd +\u003d \" -v\""},{"line_number":1297,"context_line":"        ipmi_cmd +\u003d \" sol activate\""},{"line_number":1298,"context_line":"        if CONF.console.sol_mode \u003d\u003d \u0027nokeepalive\u0027:"},{"line_number":1299,"context_line":"            ipmi_cmd +\u003d \" nokeepalive\""},{"line_number":1300,"context_line":"        elif CONF.console.sol_mode \u003d\u003d \u0027keepalive\u0027:"},{"line_number":1301,"context_line":"            ipmi_cmd +\u003d \" usesolkeepalive\""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa31d9ce_f4e37303","line":1298,"updated":"2017-02-17 12:38:04.000000000","message":"nit: please use \"\" in this part of code like near lines.","commit_id":"889650dfa52db96e528b9b8274537b146136f9cc"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"70fc11d6ae09bfdf89b9f446b1d4ebae5d6562d2","unresolved":false,"context_lines":[{"line_number":1295,"context_line":"        if CONF.debug:"},{"line_number":1296,"context_line":"            ipmi_cmd +\u003d \" -v\""},{"line_number":1297,"context_line":"        ipmi_cmd +\u003d \" sol activate\""},{"line_number":1298,"context_line":"        if CONF.console.sol_mode \u003d\u003d \u0027nokeepalive\u0027:"},{"line_number":1299,"context_line":"            ipmi_cmd +\u003d \" nokeepalive\""},{"line_number":1300,"context_line":"        elif CONF.console.sol_mode \u003d\u003d \u0027keepalive\u0027:"},{"line_number":1301,"context_line":"            ipmi_cmd +\u003d \" usesolkeepalive\""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa31d9ce_bbbf23a9","line":1298,"in_reply_to":"fa31d9ce_f4e37303","updated":"2017-02-17 16:00:53.000000000","message":"Done","commit_id":"889650dfa52db96e528b9b8274537b146136f9cc"}],"ironic/tests/unit/drivers/modules/test_ipmitool.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"00cbf92f864e56aa631644ef4c29823480cfc03b","unresolved":false,"context_lines":[{"line_number":1676,"context_line":""},{"line_number":1677,"context_line":"    @mock.patch.object(console_utils, \u0027start_shellinabox_console\u0027,"},{"line_number":1678,"context_line":"                       autospec\u003dTrue)"},{"line_number":1679,"context_line":"    def test__start_console_sol_mode_none(self, mock_start):"},{"line_number":1680,"context_line":"        mock_start.return_value \u003d None"},{"line_number":1681,"context_line":"        CONF.set_override(\u0027sol_mode\u0027, None, group\u003d\u0027console\u0027)"},{"line_number":1682,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_d8ac678e","line":1679,"updated":"2016-10-09 19:03:58.000000000","message":"These three tests can be refactored, as they differ only by one argument in the end of string. Can you introduce a helper method, smth like _test__start_console that would accept the sol mode as an argument and change the expected command string based on that?","commit_id":"9513caed69008e92df849b071b87b14d89f65a8c"},{"author":{"_account_id":19901,"name":"Xu Ao","email":"xuao@awcloud.com","username":"xuao"},"change_message_id":"8f5e899875c33ade34430fd1a3a9b24f3f4582f8","unresolved":false,"context_lines":[{"line_number":1676,"context_line":""},{"line_number":1677,"context_line":"    @mock.patch.object(console_utils, \u0027start_shellinabox_console\u0027,"},{"line_number":1678,"context_line":"                       autospec\u003dTrue)"},{"line_number":1679,"context_line":"    def test__start_console_sol_mode_none(self, mock_start):"},{"line_number":1680,"context_line":"        mock_start.return_value \u003d None"},{"line_number":1681,"context_line":"        CONF.set_override(\u0027sol_mode\u0027, None, group\u003d\u0027console\u0027)"},{"line_number":1682,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_fe54a6ca","line":1679,"in_reply_to":"1a95cdbc_d8ac678e","updated":"2016-10-10 08:00:01.000000000","message":"Done","commit_id":"9513caed69008e92df849b071b87b14d89f65a8c"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"972abc7ff34d8235e0af55ded028a3d11fe83dc5","unresolved":false,"context_lines":[{"line_number":2347,"context_line":"        pw_file \u003d console_utils.make_persistent_password_file("},{"line_number":2348,"context_line":"            path, driver_info[\u0027password\u0027])"},{"line_number":2349,"context_line":""},{"line_number":2350,"context_line":"        expected_cmd \u003d (\"/:%(uid)s:%(gid)s:HOME:ipmitool -H %(address)s\""},{"line_number":2351,"context_line":"                        \" -I lanplus -U %(user)s -f %(pwfile)s\""},{"line_number":2352,"context_line":"                        % {\u0027uid\u0027: os.getuid(),"},{"line_number":2353,"context_line":"                           \u0027gid\u0027: os.getgid(),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_64280e34","line":2350,"updated":"2016-10-10 04:55:24.000000000","message":"There is a related bug for wrong IPMI command for socat console at: https://review.openstack.org/#/c/363647/\nPlease update your code like:\n\nexpected_cmd \u003d (\"ipmitool -H %(address)s\"\n                \" -I lanplus -U %(user)s -f %(pwfile)s\"\n                        % {\u0027address\u0027: driver_info[\u0027address\u0027],\n                           \u0027user\u0027: driver_info[\u0027username\u0027],\n                           \u0027pwfile\u0027: pw_file})","commit_id":"9513caed69008e92df849b071b87b14d89f65a8c"},{"author":{"_account_id":19901,"name":"Xu Ao","email":"xuao@awcloud.com","username":"xuao"},"change_message_id":"8f5e899875c33ade34430fd1a3a9b24f3f4582f8","unresolved":false,"context_lines":[{"line_number":2347,"context_line":"        pw_file \u003d console_utils.make_persistent_password_file("},{"line_number":2348,"context_line":"            path, driver_info[\u0027password\u0027])"},{"line_number":2349,"context_line":""},{"line_number":2350,"context_line":"        expected_cmd \u003d (\"/:%(uid)s:%(gid)s:HOME:ipmitool -H %(address)s\""},{"line_number":2351,"context_line":"                        \" -I lanplus -U %(user)s -f %(pwfile)s\""},{"line_number":2352,"context_line":"                        % {\u0027uid\u0027: os.getuid(),"},{"line_number":2353,"context_line":"                           \u0027gid\u0027: os.getgid(),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_1efeb2ad","line":2350,"in_reply_to":"1a95cdbc_64280e34","updated":"2016-10-10 08:00:01.000000000","message":"I\u0027ll have a rebase after the above patch merged. : )","commit_id":"9513caed69008e92df849b071b87b14d89f65a8c"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"972abc7ff34d8235e0af55ded028a3d11fe83dc5","unresolved":false,"context_lines":[{"line_number":2380,"context_line":"        pw_file \u003d console_utils.make_persistent_password_file("},{"line_number":2381,"context_line":"            path, driver_info[\u0027password\u0027])"},{"line_number":2382,"context_line":""},{"line_number":2383,"context_line":"        expected_cmd \u003d (\"/:%(uid)s:%(gid)s:HOME:ipmitool -H %(address)s\""},{"line_number":2384,"context_line":"                        \" -I lanplus -U %(user)s -f %(pwfile)s\""},{"line_number":2385,"context_line":"                        % {\u0027uid\u0027: os.getuid(),"},{"line_number":2386,"context_line":"                           \u0027gid\u0027: os.getgid(),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_c419e223","line":2383,"updated":"2016-10-10 04:55:24.000000000","message":"ditto","commit_id":"9513caed69008e92df849b071b87b14d89f65a8c"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"972abc7ff34d8235e0af55ded028a3d11fe83dc5","unresolved":false,"context_lines":[{"line_number":2413,"context_line":"        pw_file \u003d console_utils.make_persistent_password_file("},{"line_number":2414,"context_line":"            path, driver_info[\u0027password\u0027])"},{"line_number":2415,"context_line":""},{"line_number":2416,"context_line":"        expected_cmd \u003d (\"/:%(uid)s:%(gid)s:HOME:ipmitool -H %(address)s\""},{"line_number":2417,"context_line":"                        \" -I lanplus -U %(user)s -f %(pwfile)s\""},{"line_number":2418,"context_line":"                        % {\u0027uid\u0027: os.getuid(),"},{"line_number":2419,"context_line":"                           \u0027gid\u0027: os.getgid(),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_04d66a27","line":2416,"updated":"2016-10-10 04:55:24.000000000","message":"ditto","commit_id":"9513caed69008e92df849b071b87b14d89f65a8c"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"9995b3a73747ec77daab4df527ec94cbdefb41af","unresolved":false,"context_lines":[{"line_number":1684,"context_line":"            self.driver.console._start_console("},{"line_number":1685,"context_line":"                driver_info, console_utils.start_shellinabox_console)"},{"line_number":1686,"context_line":""},{"line_number":1687,"context_line":"        file_name \u003d \"%(uuid)s.pw\" % {\u0027uuid\u0027: driver_info[\u0027uuid\u0027]}"},{"line_number":1688,"context_line":"        path \u003d os.path.join(CONF.tempdir, file_name)"},{"line_number":1689,"context_line":"        pw_file \u003d console_utils.make_persistent_password_file("},{"line_number":1690,"context_line":"            path, driver_info[\u0027password\u0027])"},{"line_number":1691,"context_line":""},{"line_number":1692,"context_line":"        base_cmd \u003d (\"/:%(uid)s:%(gid)s:HOME:ipmitool -H %(address)s\""},{"line_number":1693,"context_line":"                    \" -I lanplus -U %(user)s -f %(pwfile)s\""},{"line_number":1694,"context_line":"                    % {\u0027uid\u0027: os.getuid(),"},{"line_number":1695,"context_line":"                       \u0027gid\u0027: os.getgid(),"},{"line_number":1696,"context_line":"                       \u0027address\u0027: driver_info[\u0027address\u0027],"},{"line_number":1697,"context_line":"                       \u0027user\u0027: driver_info[\u0027username\u0027],"},{"line_number":1698,"context_line":"                       \u0027pwfile\u0027: pw_file})"},{"line_number":1699,"context_line":""},{"line_number":1700,"context_line":"        if CONF.debug:"},{"line_number":1701,"context_line":"            base_cmd +\u003d \" -v\""},{"line_number":1702,"context_line":"            base_cmd +\u003d \" sol activate\""},{"line_number":1703,"context_line":"        return base_cmd"},{"line_number":1704,"context_line":""},{"line_number":1705,"context_line":"    @mock.patch.object(console_utils, \u0027start_shellinabox_console\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a95cdbc_73243f0c","line":1702,"range":{"start_line":1687,"start_character":8,"end_line":1702,"end_character":39},"updated":"2016-10-10 13:47:48.000000000","message":"I think you don\u0027t need all this stuff. You can just ensure that:\n\nin case of None, command ends with \"sol activate\";\nin case of \u0027nokeepalive\u0027, it ends with \u0027nokeepalive\u0027;\nin case of \u0027usesolkeepalive\u0027, it ends with \u0027usesolkeepalive\u0027.","commit_id":"d1ef88ce2f5d2eb3f8bf86d86ae7d331762d8823"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"9995b3a73747ec77daab4df527ec94cbdefb41af","unresolved":false,"context_lines":[{"line_number":1702,"context_line":"            base_cmd +\u003d \" sol activate\""},{"line_number":1703,"context_line":"        return base_cmd"},{"line_number":1704,"context_line":""},{"line_number":1705,"context_line":"    @mock.patch.object(console_utils, \u0027start_shellinabox_console\u0027,"},{"line_number":1706,"context_line":"                       autospec\u003dTrue)"},{"line_number":1707,"context_line":"    def test__start_console_sol_mode_none(self, mock_start):"},{"line_number":1708,"context_line":"        base_cmd \u003d self._test__start_console_sol_mode(mock_start, \u0027None\u0027)"},{"line_number":1709,"context_line":"        expected_cmd \u003d base_cmd"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a95cdbc_b3b3274c","line":1706,"range":{"start_line":1705,"start_character":4,"end_line":1706,"end_character":37},"updated":"2016-10-10 13:47:48.000000000","message":"You can move this decorator onto _test__start_console_sol_mode.","commit_id":"d1ef88ce2f5d2eb3f8bf86d86ae7d331762d8823"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"9995b3a73747ec77daab4df527ec94cbdefb41af","unresolved":false,"context_lines":[{"line_number":2288,"context_line":"                                           self.info[\u0027port\u0027],"},{"line_number":2289,"context_line":"                                           mock.ANY)"},{"line_number":2290,"context_line":""},{"line_number":2291,"context_line":"    def _test__start_console_sol_mode(self, mock_start, sol_mode):"},{"line_number":2292,"context_line":"        mock_start.return_value \u003d None"},{"line_number":2293,"context_line":"        CONF.set_override(\u0027sol_mode\u0027, sol_mode, group\u003d\u0027console\u0027)"},{"line_number":2294,"context_line":""},{"line_number":2295,"context_line":"        with task_manager.acquire(self.context,"},{"line_number":2296,"context_line":"                                  self.node.uuid) as task:"},{"line_number":2297,"context_line":"            driver_info \u003d ipmi._parse_driver_info(task.node)"},{"line_number":2298,"context_line":"            self.driver.console._start_console("},{"line_number":2299,"context_line":"                driver_info, console_utils.start_socat_console)"},{"line_number":2300,"context_line":""},{"line_number":2301,"context_line":"        file_name \u003d \"%(uuid)s.pw\" % {\u0027uuid\u0027: driver_info[\u0027uuid\u0027]}"},{"line_number":2302,"context_line":"        path \u003d os.path.join(CONF.tempdir, file_name)"},{"line_number":2303,"context_line":"        pw_file \u003d console_utils.make_persistent_password_file("},{"line_number":2304,"context_line":"            path, driver_info[\u0027password\u0027])"},{"line_number":2305,"context_line":""},{"line_number":2306,"context_line":"        base_cmd \u003d (\"/:%(uid)s:%(gid)s:HOME:ipmitool -H %(address)s\""},{"line_number":2307,"context_line":"                    \" -I lanplus -U %(user)s -f %(pwfile)s\""},{"line_number":2308,"context_line":"                    % {\u0027uid\u0027: os.getuid(),"},{"line_number":2309,"context_line":"                       \u0027gid\u0027: os.getgid(),"},{"line_number":2310,"context_line":"                       \u0027address\u0027: driver_info[\u0027address\u0027],"},{"line_number":2311,"context_line":"                       \u0027user\u0027: driver_info[\u0027username\u0027],"},{"line_number":2312,"context_line":"                       \u0027pwfile\u0027: pw_file})"},{"line_number":2313,"context_line":""},{"line_number":2314,"context_line":"        if CONF.debug:"},{"line_number":2315,"context_line":"            base_cmd +\u003d \" -v\""},{"line_number":2316,"context_line":"            base_cmd +\u003d \" sol activate\""},{"line_number":2317,"context_line":"        return base_cmd"},{"line_number":2318,"context_line":""},{"line_number":2319,"context_line":"    @mock.patch.object(console_utils, \u0027start_socat_console\u0027,"},{"line_number":2320,"context_line":"                       autospec\u003dTrue)"},{"line_number":2321,"context_line":"    def test__start_console_sol_mode_none(self, mock_start):"},{"line_number":2322,"context_line":"        base_cmd \u003d self._test__start_console_sol_mode(mock_start, \u0027None\u0027)"},{"line_number":2323,"context_line":"        expected_cmd \u003d base_cmd"},{"line_number":2324,"context_line":"        mock_start.assert_called_once_with(mock.ANY,"},{"line_number":2325,"context_line":"                                           mock.ANY,"},{"line_number":2326,"context_line":"                                           expected_cmd)"},{"line_number":2327,"context_line":""},{"line_number":2328,"context_line":"    @mock.patch.object(console_utils, \u0027start_socat_console\u0027,"},{"line_number":2329,"context_line":"                       autospec\u003dTrue)"},{"line_number":2330,"context_line":"    def test__start_console_sol_mode_nokeepalive(self, mock_start):"},{"line_number":2331,"context_line":"        base_cmd \u003d self._test__start_console_sol_mode(mock_start,"},{"line_number":2332,"context_line":"                                                      \u0027nokeepalive\u0027)"},{"line_number":2333,"context_line":"        expected_cmd \u003d base_cmd + \" nokeepalive\""},{"line_number":2334,"context_line":"        mock_start.assert_called_once_with(mock.ANY,"},{"line_number":2335,"context_line":"                                           mock.ANY,"},{"line_number":2336,"context_line":"                                           expected_cmd)"},{"line_number":2337,"context_line":""},{"line_number":2338,"context_line":"    @mock.patch.object(console_utils, \u0027start_socat_console\u0027,"},{"line_number":2339,"context_line":"                       autospec\u003dTrue)"},{"line_number":2340,"context_line":"    def test__start_console_sol_mode_usesolkeepalive(self, mock_start):"},{"line_number":2341,"context_line":"        base_cmd \u003d self._test__start_console_sol_mode(mock_start,"},{"line_number":2342,"context_line":"                                                      \u0027usesolkeepalive\u0027)"},{"line_number":2343,"context_line":"        expected_cmd \u003d base_cmd + \" usesolkeepalive\""},{"line_number":2344,"context_line":"        mock_start.assert_called_once_with(mock.ANY,"},{"line_number":2345,"context_line":"                                           mock.ANY,"},{"line_number":2346,"context_line":"                                           expected_cmd)"},{"line_number":2347,"context_line":""},{"line_number":2348,"context_line":"    @mock.patch.object(ipmi.IPMISocatConsole, \u0027_exec_stop_console\u0027,"},{"line_number":2349,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a95cdbc_733fdfb3","line":2346,"range":{"start_line":2291,"start_character":4,"end_line":2346,"end_character":56},"updated":"2016-10-10 13:47:48.000000000","message":"I think it\u0027s OK not to duplicate it in this class.","commit_id":"d1ef88ce2f5d2eb3f8bf86d86ae7d331762d8823"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3f2aed5e130b53fb24436e4681fbe7d7bda11668","unresolved":false,"context_lines":[{"line_number":1979,"context_line":"    def test__start_console_sol_mode_nokeepalive(self):"},{"line_number":1980,"context_line":"        CONF.set_override(\u0027sol_mode\u0027, \u0027nokeepalive\u0027, group\u003d\u0027console\u0027)"},{"line_number":1981,"context_line":"        called_cmd \u003d self._test__start_console_sol_mode()"},{"line_number":1982,"context_line":"        self.assertEqual(called_cmd.split()[-1], \u0027nokeepalive\u0027)"},{"line_number":1983,"context_line":""},{"line_number":1984,"context_line":"    def test__start_console_sol_mode_usesolkeepalive(self):"},{"line_number":1985,"context_line":"        CONF.set_override(\u0027sol_mode\u0027, \u0027keepalive\u0027, group\u003d\u0027console\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa31d9ce_c710a6ae","line":1982,"updated":"2017-02-16 15:55:26.000000000","message":"order should be (expected, observed), ditto in other tests.","commit_id":"86845798ff48e948adcf49efd5b506e0638a57df"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"93e66a11f258b3cb82f0aaacdaa0a46d23b95e0b","unresolved":false,"context_lines":[{"line_number":1979,"context_line":"    def test__start_console_sol_mode_nokeepalive(self):"},{"line_number":1980,"context_line":"        CONF.set_override(\u0027sol_mode\u0027, \u0027nokeepalive\u0027, group\u003d\u0027console\u0027)"},{"line_number":1981,"context_line":"        called_cmd \u003d self._test__start_console_sol_mode()"},{"line_number":1982,"context_line":"        self.assertEqual(called_cmd.split()[-1], \u0027nokeepalive\u0027)"},{"line_number":1983,"context_line":""},{"line_number":1984,"context_line":"    def test__start_console_sol_mode_usesolkeepalive(self):"},{"line_number":1985,"context_line":"        CONF.set_override(\u0027sol_mode\u0027, \u0027keepalive\u0027, group\u003d\u0027console\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa31d9ce_e9dc7f76","line":1982,"in_reply_to":"fa31d9ce_c710a6ae","updated":"2017-02-17 10:57:03.000000000","message":"Done","commit_id":"86845798ff48e948adcf49efd5b506e0638a57df"}],"releasenotes/notes/ipmitool-sol-mode-999122497016bc94.yaml":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"7f052e3e5649ab96d137c6cf44fc7248e7ac1559","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Ipmitool support starting the console in three different modes,"},{"line_number":4,"context_line":"    including default, nokeepalive and usesolkeepalive."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3a71b18c_975f9b40","line":4,"updated":"2016-12-02 11:28:53.000000000","message":"You should mention the new configuration option here. Example:\n\n - A new configuration option ``[console]sol_mode`` was added to\n   enable starting the console in three...","commit_id":"739b4fe482ae04789ca70caff9d8cd409fa304fa"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"0a2c6bbb530484c27a01eed3b4dba2a042befc33","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Ipmitool support starting the console in three different modes,"},{"line_number":4,"context_line":"    including default, nokeepalive and usesolkeepalive."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"fa31d9ce_a1e482ac","line":4,"in_reply_to":"3a71b18c_975f9b40","updated":"2017-02-16 15:36:02.000000000","message":"Done","commit_id":"739b4fe482ae04789ca70caff9d8cd409fa304fa"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"1239c930fb2cfaa0e69b3dc41de9d8adeedaa049","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add configuration option ``[console]sol_mode`` to"},{"line_number":4,"context_line":"    support starting the console in three different modes,"},{"line_number":5,"context_line":"    including ``nokeepalive``, ``keepalive`` and no mode,"},{"line_number":6,"context_line":"    which is default choice."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"fa31d9ce_5487df11","line":4,"range":{"start_line":4,"start_character":36,"end_line":4,"end_character":41},"updated":"2017-02-17 12:38:04.000000000","message":"Two modes. If not set default will be used.","commit_id":"889650dfa52db96e528b9b8274537b146136f9cc"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"70fc11d6ae09bfdf89b9f446b1d4ebae5d6562d2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add configuration option ``[console]sol_mode`` to"},{"line_number":4,"context_line":"    support starting the console in three different modes,"},{"line_number":5,"context_line":"    including ``nokeepalive``, ``keepalive`` and no mode,"},{"line_number":6,"context_line":"    which is default choice."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"fa31d9ce_db5f7773","line":4,"range":{"start_line":4,"start_character":36,"end_line":4,"end_character":41},"in_reply_to":"fa31d9ce_5487df11","updated":"2017-02-17 16:00:53.000000000","message":"yes, did not notice, thanks","commit_id":"889650dfa52db96e528b9b8274537b146136f9cc"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"d36eb0ce0cfb0f514ea77309a8f5d751bc8c1055","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Add configuration option ``[console]sol_mode`` to"},{"line_number":4,"context_line":"    support starting the console in three different modes,"},{"line_number":5,"context_line":"    including ``nokeepalive``, ``keepalive`` and no mode,"},{"line_number":6,"context_line":"    which is default choice."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"fa31d9ce_4581e74c","line":6,"updated":"2017-02-17 13:42:19.000000000","message":"I think that fixes: section also needed, as this patch should fix problem described in the bug.","commit_id":"889650dfa52db96e528b9b8274537b146136f9cc"}]}
