)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6a586a515e2701b9c47576faab11f972df49adb9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Chris Krelle \u003cnobodycam@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-04-16 10:42:34 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add Logging"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adds INFO level logging to the ssh driver. Current logging makes it"},{"line_number":10,"context_line":"difficult to debug the ssh driver. This patch adds info level logging"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAXH%2F%2FH4Y%3D","line":7,"updated":"2014-04-23 20:46:45.000000000","message":"Could you expand this first line? At least \"add more logging to ssh driver\". As it is now it\u0027s like we never had logging before :)","commit_id":"eaff80c6e5e8d72704fa8c36a5774152869fc9c1"}],"ironic/conductor/manager.py":[{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"5394f1200c6854635bf74a4e84225c4c231ff3c9","unresolved":false,"context_lines":[{"line_number":230,"context_line":"                 async task."},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        \"\"\""},{"line_number":233,"context_line":"        LOG.audit(_(\"node %(node)s desired new state: %(state)s.\") %"},{"line_number":234,"context_line":"                    {\u0027node\u0027: node_id, \u0027state\u0027: new_state})"},{"line_number":235,"context_line":"        LOG.debug(_(\"RPC change_node_power_state called for node %(node)s. \""},{"line_number":236,"context_line":"                    \"The desired new state is %(state)s.\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F9Yps%3D","line":233,"updated":"2014-04-04 22:03:19.000000000","message":"I would not audit it here...","commit_id":"8165e1cefcf7b0c588f9a90c78ddb914cee9b770"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"d0cf039df62b0b587894c3c084751b571dd38100","unresolved":false,"context_lines":[{"line_number":230,"context_line":"                 async task."},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        \"\"\""},{"line_number":233,"context_line":"        LOG.audit(_(\"node %(node)s desired new state: %(state)s.\") %"},{"line_number":234,"context_line":"                    {\u0027node\u0027: node_id, \u0027state\u0027: new_state})"},{"line_number":235,"context_line":"        LOG.debug(_(\"RPC change_node_power_state called for node %(node)s. \""},{"line_number":236,"context_line":"                    \"The desired new state is %(state)s.\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAW3%2F%2FmLE%3D","line":233,"in_reply_to":"AAAAWH%2F9Yps%3D","updated":"2014-04-11 22:01:59.000000000","message":"removed.","commit_id":"8165e1cefcf7b0c588f9a90c78ddb914cee9b770"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"d0cf039df62b0b587894c3c084751b571dd38100","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        LOG.debug(_(\"RPC change_node_power_state called for node %(node)s. \""},{"line_number":236,"context_line":"                    \"The desired new state is %(state)s.\")"},{"line_number":237,"context_line":"                    % {\u0027node\u0027: node_id, \u0027state\u0027: new_state})"},{"line_number":238,"context_line":"        "},{"line_number":239,"context_line":"        task \u003d task_manager.TaskManager(context, node_id, shared\u003dFalse)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAW3%2F%2FmK4%3D","line":238,"updated":"2014-04-11 22:01:59.000000000","message":"WhiteSpace fixed.","commit_id":"8165e1cefcf7b0c588f9a90c78ddb914cee9b770"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"5394f1200c6854635bf74a4e84225c4c231ff3c9","unresolved":false,"context_lines":[{"line_number":474,"context_line":"    def _do_sync_power_state(self, task):"},{"line_number":475,"context_line":"        node \u003d task.node"},{"line_number":476,"context_line":"        power_state \u003d None"},{"line_number":477,"context_line":"        LOG.info(_(\"Syncing node %s power state\") % node.uuid)"},{"line_number":478,"context_line":"        try:"},{"line_number":479,"context_line":"            power_state \u003d task.driver.power.get_power_state(task, node)"},{"line_number":480,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F9YoQ%3D","line":477,"updated":"2014-04-04 22:03:19.000000000","message":"this will be too chatty. No need to log every time this is called, IMO.","commit_id":"8165e1cefcf7b0c588f9a90c78ddb914cee9b770"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"d0cf039df62b0b587894c3c084751b571dd38100","unresolved":false,"context_lines":[{"line_number":474,"context_line":"    def _do_sync_power_state(self, task):"},{"line_number":475,"context_line":"        node \u003d task.node"},{"line_number":476,"context_line":"        power_state \u003d None"},{"line_number":477,"context_line":"        LOG.info(_(\"Syncing node %s power state\") % node.uuid)"},{"line_number":478,"context_line":"        try:"},{"line_number":479,"context_line":"            power_state \u003d task.driver.power.get_power_state(task, node)"},{"line_number":480,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAW3%2F%2FmKw%3D","line":477,"in_reply_to":"AAAAWH%2F9YoQ%3D","updated":"2014-04-11 22:01:59.000000000","message":"removed.","commit_id":"8165e1cefcf7b0c588f9a90c78ddb914cee9b770"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"5394f1200c6854635bf74a4e84225c4c231ff3c9","unresolved":false,"context_lines":[{"line_number":549,"context_line":"            self.power_state_sync_count[node.uuid] +\u003d 1"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"    @periodic_task.periodic_task("},{"line_number":552,"context_line":"            spacing\u003dCONF.conductor.sync_power_state_interval)"},{"line_number":553,"context_line":"    def _sync_power_states(self, context):"},{"line_number":554,"context_line":"        filters \u003d {\u0027reserved\u0027: False, \u0027maintenance\u0027: False}"},{"line_number":555,"context_line":"        columns \u003d [\u0027id\u0027, \u0027uuid\u0027, \u0027driver\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F9Yn0%3D","line":552,"updated":"2014-04-04 22:03:19.000000000","message":"worth adding a LOG.info here, at the start of the periodic task","commit_id":"8165e1cefcf7b0c588f9a90c78ddb914cee9b770"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"d0cf039df62b0b587894c3c084751b571dd38100","unresolved":false,"context_lines":[{"line_number":549,"context_line":"            self.power_state_sync_count[node.uuid] +\u003d 1"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"    @periodic_task.periodic_task("},{"line_number":552,"context_line":"            spacing\u003dCONF.conductor.sync_power_state_interval)"},{"line_number":553,"context_line":"    def _sync_power_states(self, context):"},{"line_number":554,"context_line":"        filters \u003d {\u0027reserved\u0027: False, \u0027maintenance\u0027: False}"},{"line_number":555,"context_line":"        columns \u003d [\u0027id\u0027, \u0027uuid\u0027, \u0027driver\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAW3%2F%2FmHI%3D","line":552,"in_reply_to":"AAAAWH%2F9Yn0%3D","updated":"2014-04-11 22:01:59.000000000","message":"added.","commit_id":"8165e1cefcf7b0c588f9a90c78ddb914cee9b770"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"892065f64ce0f1dd4e9e63a3f37d79c5447859be","unresolved":false,"context_lines":[{"line_number":751,"context_line":"        \"\"\""},{"line_number":752,"context_line":"        with task_manager.acquire(context, node_id) as task:"},{"line_number":753,"context_line":"            node \u003d task.node"},{"line_number":754,"context_line":"            LOG.info(_(\"Destroy_node call for node %s\") % node.uuid)"},{"line_number":755,"context_line":"            if node.instance_uuid is not None:"},{"line_number":756,"context_line":"                raise exception.NodeAssociated(node\u003dnode.uuid,"},{"line_number":757,"context_line":"                                               instance\u003dnode.instance_uuid)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAW3%2F%2FWaw%3D","line":754,"updated":"2014-04-15 08:23:04.000000000","message":"Small nits. Please don\u0027t interpolate Python\u0027s logging :)\n\n    LOG.info(_(\"Destroy_node call for node %s\"), node.uuid)","commit_id":"8ceb40394b1e4eacc465070ab01b977d52ee8d11"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6a586a515e2701b9c47576faab11f972df49adb9","unresolved":false,"context_lines":[{"line_number":560,"context_line":"    @periodic_task.periodic_task("},{"line_number":561,"context_line":"            spacing\u003dCONF.conductor.sync_power_state_interval)"},{"line_number":562,"context_line":"    def _sync_power_states(self, context):"},{"line_number":563,"context_line":"        LOG.info(_(\"Starting power state sync.\"))"},{"line_number":564,"context_line":"        filters \u003d {\u0027reserved\u0027: False, \u0027maintenance\u0027: False}"},{"line_number":565,"context_line":"        columns \u003d [\u0027id\u0027, \u0027uuid\u0027, \u0027driver\u0027]"},{"line_number":566,"context_line":"        node_list \u003d self.dbapi.get_nodeinfo_list(columns\u003dcolumns,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAXH%2F%2FH3c%3D","line":563,"updated":"2014-04-23 20:46:45.000000000","message":"Please make it `debug`. This message does not really carry any essential information, and as it is a periodic task, it will clutter the logs.","commit_id":"eaff80c6e5e8d72704fa8c36a5774152869fc9c1"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e0266517bf0902384b041a5e1ee0b29058d3e804","unresolved":false,"context_lines":[{"line_number":560,"context_line":"    @periodic_task.periodic_task("},{"line_number":561,"context_line":"            spacing\u003dCONF.conductor.sync_power_state_interval)"},{"line_number":562,"context_line":"    def _sync_power_states(self, context):"},{"line_number":563,"context_line":"        LOG.info(_(\"Starting power state sync.\"))"},{"line_number":564,"context_line":"        filters \u003d {\u0027reserved\u0027: False, \u0027maintenance\u0027: False}"},{"line_number":565,"context_line":"        columns \u003d [\u0027id\u0027, \u0027uuid\u0027, \u0027driver\u0027]"},{"line_number":566,"context_line":"        node_list \u003d self.dbapi.get_nodeinfo_list(columns\u003dcolumns,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAXH%2F%2FEgY%3D","line":563,"in_reply_to":"AAAAXH%2F%2FH3c%3D","updated":"2014-04-24 08:49:49.000000000","message":"+1... I usually use info when the task is completed successfully. e.g\n\nL543 could have a:\n\nLOG.info(\"Node %(node)s is now %(new_power_state)s\", {...})","commit_id":"eaff80c6e5e8d72704fa8c36a5774152869fc9c1"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6a586a515e2701b9c47576faab11f972df49adb9","unresolved":false,"context_lines":[{"line_number":751,"context_line":"        \"\"\""},{"line_number":752,"context_line":"        with task_manager.acquire(context, node_id) as task:"},{"line_number":753,"context_line":"            node \u003d task.node"},{"line_number":754,"context_line":"            LOG.info(_(\"Destroy_node call for node %s\") % node.uuid)"},{"line_number":755,"context_line":"            if node.instance_uuid is not None:"},{"line_number":756,"context_line":"                raise exception.NodeAssociated(node\u003dnode.uuid,"},{"line_number":757,"context_line":"                                               instance\u003dnode.instance_uuid)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAXH%2F%2FH3A%3D","line":754,"updated":"2014-04-23 20:46:45.000000000","message":"% node.uuid  -\u003e  , node.uuid\n\nthis is what you fixed on line 322, I\u0027m not sure it\u0027s necessary.","commit_id":"eaff80c6e5e8d72704fa8c36a5774152869fc9c1"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e0266517bf0902384b041a5e1ee0b29058d3e804","unresolved":false,"context_lines":[{"line_number":751,"context_line":"        \"\"\""},{"line_number":752,"context_line":"        with task_manager.acquire(context, node_id) as task:"},{"line_number":753,"context_line":"            node \u003d task.node"},{"line_number":754,"context_line":"            LOG.info(_(\"Destroy_node call for node %s\") % node.uuid)"},{"line_number":755,"context_line":"            if node.instance_uuid is not None:"},{"line_number":756,"context_line":"                raise exception.NodeAssociated(node\u003dnode.uuid,"},{"line_number":757,"context_line":"                                               instance\u003dnode.instance_uuid)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAXH%2F%2FEgE%3D","line":754,"in_reply_to":"AAAAXH%2F%2FH3A%3D","updated":"2014-04-24 08:49:49.000000000","message":"debug level as well","commit_id":"eaff80c6e5e8d72704fa8c36a5774152869fc9c1"}],"ironic/conductor/utils.py":[{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"5394f1200c6854635bf74a4e84225c4c231ff3c9","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                  \"Error: %(error)s\") % {"},{"line_number":115,"context_line":"                    \u0027target\u0027: new_state, \u0027error\u0027: e}"},{"line_number":116,"context_line":"    else:"},{"line_number":117,"context_line":"        # success!"},{"line_number":118,"context_line":"        node[\u0027power_state\u0027] \u003d new_state"},{"line_number":119,"context_line":"    finally:"},{"line_number":120,"context_line":"        node[\u0027target_power_state\u0027] \u003d states.NOSTATE"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F9YmY%3D","line":117,"updated":"2014-04-04 22:03:19.000000000","message":"I would prefer the LOG.audit be added here, when the driver is actually called.\n\naudit logs may be consumed by notification services (eg, ceilometer) that specifically want to track when things change, so an audit log of an attempted change is not very helpful","commit_id":"8165e1cefcf7b0c588f9a90c78ddb914cee9b770"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"d0cf039df62b0b587894c3c084751b571dd38100","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                  \"Error: %(error)s\") % {"},{"line_number":115,"context_line":"                    \u0027target\u0027: new_state, \u0027error\u0027: e}"},{"line_number":116,"context_line":"    else:"},{"line_number":117,"context_line":"        # success!"},{"line_number":118,"context_line":"        node[\u0027power_state\u0027] \u003d new_state"},{"line_number":119,"context_line":"    finally:"},{"line_number":120,"context_line":"        node[\u0027target_power_state\u0027] \u003d states.NOSTATE"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAW3%2F%2FmHE%3D","line":117,"in_reply_to":"AAAAWH%2F9YmY%3D","updated":"2014-04-11 22:01:59.000000000","message":"ah good point. done.","commit_id":"8165e1cefcf7b0c588f9a90c78ddb914cee9b770"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"892065f64ce0f1dd4e9e63a3f37d79c5447859be","unresolved":false,"context_lines":[{"line_number":112,"context_line":"                    \u0027target\u0027: new_state, \u0027error\u0027: e}"},{"line_number":113,"context_line":"    else:"},{"line_number":114,"context_line":"        # success!"},{"line_number":115,"context_line":"        LOG.audit(_(\"Node %(node)s set to power state: %(state)s\") %"},{"line_number":116,"context_line":"                  {\u0027node\u0027: node.uuid, \u0027state\u0027: new_state})"},{"line_number":117,"context_line":"        node[\u0027power_state\u0027] \u003d new_state"},{"line_number":118,"context_line":"    finally:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAW3%2F%2FWZ0%3D","line":115,"updated":"2014-04-15 08:23:04.000000000","message":"ditto","commit_id":"8ceb40394b1e4eacc465070ab01b977d52ee8d11"}],"ironic/drivers/modules/ssh.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"64e634ff99b96007ed566a9f3dd553467393f228","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    :raises: SSHCommandFailed on an error from ssh."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    \"\"\""},{"line_number":136,"context_line":"    LOG.info(_(\"Attempting to execute SSH cmd %s.\") % cmd_to_exec)"},{"line_number":137,"context_line":"    try:"},{"line_number":138,"context_line":"        output_list \u003d processutils.ssh_execute(ssh_obj,"},{"line_number":139,"context_line":"                                               cmd_to_exec)[0].split(\u0027\\n\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F9elg%3D","line":136,"updated":"2014-04-04 08:44:12.000000000","message":"I think this log here should be DEBUG level, as it\u0027s logging a command so this is the kind of information that developers would be interested when trying to debug a problem. INFO is more about someone not so technical trying to understand the context of an error.","commit_id":"0b7c858f81bed65a084867eda3a28d55e7871cd7"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"17c926256185a4fb475f87a18f61b30cc58fbe73","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    :raises: SSHCommandFailed on an error from ssh."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    \"\"\""},{"line_number":136,"context_line":"    LOG.info(_(\"Attempting to execute SSH cmd %s.\") % cmd_to_exec)"},{"line_number":137,"context_line":"    try:"},{"line_number":138,"context_line":"        output_list \u003d processutils.ssh_execute(ssh_obj,"},{"line_number":139,"context_line":"                                               cmd_to_exec)[0].split(\u0027\\n\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F9bwQ%3D","line":136,"in_reply_to":"AAAAWH%2F9elg%3D","updated":"2014-04-04 15:03:14.000000000","message":"Ahh yes, makes perfect sense. Done","commit_id":"0b7c858f81bed65a084867eda3a28d55e7871cd7"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"06753aaa71b6661d19a110e164296e87e451d7b3","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    :raises: SSHCommandFailed on an error from ssh."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    \"\"\""},{"line_number":136,"context_line":"    LOG.debug(_(\"Attempting to execute SSH cmd %s.\") % cmd_to_exec)"},{"line_number":137,"context_line":"    try:"},{"line_number":138,"context_line":"        output_list \u003d processutils.ssh_execute(ssh_obj,"},{"line_number":139,"context_line":"                                               cmd_to_exec)[0].split(\u0027\\n\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F9bMI%3D","line":136,"updated":"2014-04-04 15:54:14.000000000","message":"I think it would be better to somehow delineate the command being executed from the log sentence. Perhaps surround it with quotes or replace with:\n\n\"Attempting to execute SSH cmd: %s\"","commit_id":"7cfc884527bdbf0b57ab4a1149fc2d43a1f54cdf"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"5394f1200c6854635bf74a4e84225c4c231ff3c9","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    :raises: SSHCommandFailed on an error from ssh."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    \"\"\""},{"line_number":136,"context_line":"    LOG.debug(_(\"Attempting to execute SSH cmd %s.\") % cmd_to_exec)"},{"line_number":137,"context_line":"    try:"},{"line_number":138,"context_line":"        output_list \u003d processutils.ssh_execute(ssh_obj,"},{"line_number":139,"context_line":"                                               cmd_to_exec)[0].split(\u0027\\n\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F9Ylc%3D","line":136,"updated":"2014-04-04 22:03:19.000000000","message":"do we really need to log every single command that is executed? how about just the ones that fail?","commit_id":"8165e1cefcf7b0c588f9a90c78ddb914cee9b770"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"d0cf039df62b0b587894c3c084751b571dd38100","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    :raises: SSHCommandFailed on an error from ssh."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    \"\"\""},{"line_number":136,"context_line":"    LOG.debug(_(\"Attempting to execute SSH cmd %s.\") % cmd_to_exec)"},{"line_number":137,"context_line":"    try:"},{"line_number":138,"context_line":"        output_list \u003d processutils.ssh_execute(ssh_obj,"},{"line_number":139,"context_line":"                                               cmd_to_exec)[0].split(\u0027\\n\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAW3%2F%2FmFE%3D","line":136,"in_reply_to":"AAAAWH%2F9Ylc%3D","updated":"2014-04-11 22:01:59.000000000","message":"removed.","commit_id":"8165e1cefcf7b0c588f9a90c78ddb914cee9b770"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"5394f1200c6854635bf74a4e84225c4c231ff3c9","unresolved":false,"context_lines":[{"line_number":300,"context_line":"    :returns: one of ironic.common.states POWER_ON or ERROR."},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    \"\"\""},{"line_number":303,"context_line":"    LOG.info(_(\"Attempting to power on node.\"))"},{"line_number":304,"context_line":"    current_pstate \u003d _get_power_status(ssh_obj, driver_info)"},{"line_number":305,"context_line":"    if current_pstate \u003d\u003d states.POWER_ON:"},{"line_number":306,"context_line":"        _power_off(ssh_obj, driver_info)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F9YlY%3D","line":303,"updated":"2014-04-04 22:03:19.000000000","message":"I might remove this, or use debug, but definitely not info.","commit_id":"8165e1cefcf7b0c588f9a90c78ddb914cee9b770"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"5394f1200c6854635bf74a4e84225c4c231ff3c9","unresolved":false,"context_lines":[{"line_number":327,"context_line":"    :returns: one of ironic.common.states POWER_OFF or ERROR."},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    \"\"\""},{"line_number":330,"context_line":"    LOG.info(_(\"Attempting to power off node.\"))"},{"line_number":331,"context_line":"    current_pstate \u003d _get_power_status(ssh_obj, driver_info)"},{"line_number":332,"context_line":"    if current_pstate \u003d\u003d states.POWER_OFF:"},{"line_number":333,"context_line":"        return current_pstate"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F9YlQ%3D","line":330,"updated":"2014-04-04 22:03:19.000000000","message":"ditto.","commit_id":"8165e1cefcf7b0c588f9a90c78ddb914cee9b770"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"5394f1200c6854635bf74a4e84225c4c231ff3c9","unresolved":false,"context_lines":[{"line_number":458,"context_line":"        :raises: SSHCommandFailed on an error from ssh."},{"line_number":459,"context_line":"        :raises: SSHConnectFailed if ssh failed to connect to the node."},{"line_number":460,"context_line":"        \"\"\""},{"line_number":461,"context_line":"        LOG.info(_(\"Attempting to reboot node.\"))"},{"line_number":462,"context_line":"        driver_info \u003d _parse_driver_info(node)"},{"line_number":463,"context_line":"        driver_info[\u0027macs\u0027] \u003d _get_nodes_mac_addresses(task, node)"},{"line_number":464,"context_line":"        ssh_obj \u003d _get_connection(node)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F9YlM%3D","line":461,"updated":"2014-04-04 22:03:19.000000000","message":"ditto","commit_id":"8165e1cefcf7b0c588f9a90c78ddb914cee9b770"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"d0cf039df62b0b587894c3c084751b571dd38100","unresolved":false,"context_lines":[{"line_number":458,"context_line":"        :raises: SSHCommandFailed on an error from ssh."},{"line_number":459,"context_line":"        :raises: SSHConnectFailed if ssh failed to connect to the node."},{"line_number":460,"context_line":"        \"\"\""},{"line_number":461,"context_line":"        LOG.info(_(\"Attempting to reboot node.\"))"},{"line_number":462,"context_line":"        driver_info \u003d _parse_driver_info(node)"},{"line_number":463,"context_line":"        driver_info[\u0027macs\u0027] \u003d _get_nodes_mac_addresses(task, node)"},{"line_number":464,"context_line":"        ssh_obj \u003d _get_connection(node)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAW3%2F%2FmEA%3D","line":461,"in_reply_to":"AAAAWH%2F9YlM%3D","updated":"2014-04-11 22:01:59.000000000","message":"removed.","commit_id":"8165e1cefcf7b0c588f9a90c78ddb914cee9b770"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"d71bb521116ea6ecdbbd9e1402d0ad146b4b68c4","unresolved":false,"context_lines":[{"line_number":315,"context_line":"    if current_pstate \u003d\u003d states.POWER_ON:"},{"line_number":316,"context_line":"        return current_pstate"},{"line_number":317,"context_line":"    else:"},{"line_number":318,"context_line":"        LOG.info(_(\"Failed to power on node: %s\") % node_name)"},{"line_number":319,"context_line":"        return states.ERROR"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAW3%2F%2Fg7Y%3D","line":318,"updated":"2014-04-14 03:12:23.000000000","message":"Is \u0027info\u0027 the right log level here?  Should an error state be \u0027info\u0027 log level?","commit_id":"8ceb40394b1e4eacc465070ab01b977d52ee8d11"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"892065f64ce0f1dd4e9e63a3f37d79c5447859be","unresolved":false,"context_lines":[{"line_number":315,"context_line":"    if current_pstate \u003d\u003d states.POWER_ON:"},{"line_number":316,"context_line":"        return current_pstate"},{"line_number":317,"context_line":"    else:"},{"line_number":318,"context_line":"        LOG.info(_(\"Failed to power on node: %s\") % node_name)"},{"line_number":319,"context_line":"        return states.ERROR"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAW3%2F%2FWZs%3D","line":318,"updated":"2014-04-15 08:23:04.000000000","message":"ditto","commit_id":"8ceb40394b1e4eacc465070ab01b977d52ee8d11"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"a713d537c7f7dd63fc70c6ad52363c96296302f3","unresolved":false,"context_lines":[{"line_number":315,"context_line":"    if current_pstate \u003d\u003d states.POWER_ON:"},{"line_number":316,"context_line":"        return current_pstate"},{"line_number":317,"context_line":"    else:"},{"line_number":318,"context_line":"        LOG.info(_(\"Failed to power on node: %s\") % node_name)"},{"line_number":319,"context_line":"        return states.ERROR"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAW3%2F%2FVvY%3D","line":318,"in_reply_to":"AAAAW3%2F%2FWZs%3D","updated":"2014-04-15 09:37:05.000000000","message":"I also think that it shouldn\u0027t be INFO here. I think INFO is good for general information, like generating a storyline of the application. e.g INFO service started; INFO service stopped; INFO power state is now \"active\" etc...\n\nFor me this log is an ERROR, because the operation of powering on the node failed. It\u0027s not a WARN because the error already happened and we don\u0027t have any fallback for it, like a retry mechanism. Nor it\u0027s CRITICAL because it only affects this operation and not the whole service.","commit_id":"8ceb40394b1e4eacc465070ab01b977d52ee8d11"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"360e22944d6c9b676c67b7d93c552d797072a70b","unresolved":false,"context_lines":[{"line_number":315,"context_line":"    if current_pstate \u003d\u003d states.POWER_ON:"},{"line_number":316,"context_line":"        return current_pstate"},{"line_number":317,"context_line":"    else:"},{"line_number":318,"context_line":"        LOG.info(_(\"Failed to power on node: %s\") % node_name)"},{"line_number":319,"context_line":"        return states.ERROR"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAW3%2F%2FWDA%3D","line":318,"in_reply_to":"AAAAW3%2F%2Fac8%3D","updated":"2014-04-15 09:02:43.000000000","message":"A few thoughts...\n\n* processutils is not generating DEBUG level logs any longer:\nhttp://git.openstack.org/cgit/openstack/ironic/tree/ironic/common/service.py#n73\n\n* I don\u0027t think that an error should be recorded at the INFO log level. It should be WARN at the very least, if it\u0027s logged.\n\n* if this returns states.ERROR, then the calling method (eg/ SSHPower.set_power_state) is going to raise an exception, which will get logged as necessary. There\u0027s no need to log it twice.","commit_id":"8ceb40394b1e4eacc465070ab01b977d52ee8d11"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"e092296659930dd8f834530f91fd456301f84f36","unresolved":false,"context_lines":[{"line_number":315,"context_line":"    if current_pstate \u003d\u003d states.POWER_ON:"},{"line_number":316,"context_line":"        return current_pstate"},{"line_number":317,"context_line":"    else:"},{"line_number":318,"context_line":"        LOG.info(_(\"Failed to power on node: %s\") % node_name)"},{"line_number":319,"context_line":"        return states.ERROR"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAW3%2F%2Fac8%3D","line":318,"in_reply_to":"AAAAW3%2F%2Fg7Y%3D","updated":"2014-04-14 18:39:49.000000000","message":"Michael,\nThe purpose of this patch is add info level logging. At debug level the error should get logged by ironic/openstack/common/processutils.py","commit_id":"8ceb40394b1e4eacc465070ab01b977d52ee8d11"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"d71bb521116ea6ecdbbd9e1402d0ad146b4b68c4","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    if current_pstate \u003d\u003d states.POWER_OFF:"},{"line_number":343,"context_line":"        return current_pstate"},{"line_number":344,"context_line":"    else:"},{"line_number":345,"context_line":"        LOG.info(_(\"Failed to power off node: %s\") % node_name)"},{"line_number":346,"context_line":"        return states.ERROR"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAW3%2F%2Fg7U%3D","line":345,"updated":"2014-04-14 03:12:23.000000000","message":"Is \u0027info\u0027 the right log level here?  Should an error state be \u0027info\u0027 log level?","commit_id":"8ceb40394b1e4eacc465070ab01b977d52ee8d11"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"892065f64ce0f1dd4e9e63a3f37d79c5447859be","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    if current_pstate \u003d\u003d states.POWER_OFF:"},{"line_number":343,"context_line":"        return current_pstate"},{"line_number":344,"context_line":"    else:"},{"line_number":345,"context_line":"        LOG.info(_(\"Failed to power off node: %s\") % node_name)"},{"line_number":346,"context_line":"        return states.ERROR"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAW3%2F%2FWZY%3D","line":345,"updated":"2014-04-15 08:23:04.000000000","message":"ditto","commit_id":"8ceb40394b1e4eacc465070ab01b977d52ee8d11"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"e092296659930dd8f834530f91fd456301f84f36","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    if current_pstate \u003d\u003d states.POWER_OFF:"},{"line_number":343,"context_line":"        return current_pstate"},{"line_number":344,"context_line":"    else:"},{"line_number":345,"context_line":"        LOG.info(_(\"Failed to power off node: %s\") % node_name)"},{"line_number":346,"context_line":"        return states.ERROR"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAW3%2F%2Facs%3D","line":345,"in_reply_to":"AAAAW3%2F%2Fg7U%3D","updated":"2014-04-14 18:39:49.000000000","message":"see answer above.","commit_id":"8ceb40394b1e4eacc465070ab01b977d52ee8d11"}]}
