)]}'
{"networking_odl/cmd/set_ovs_hostconfigs.py":[{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"eb0e8e9116845de6f464179590137ea11539fead","unresolved":false,"context_lines":[{"line_number":60,"context_line":"import subprocess"},{"line_number":61,"context_line":"import sys"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"from neutron.common import config"},{"line_number":64,"context_line":"from oslo_config import cfg"},{"line_number":65,"context_line":"from oslo_log import log"},{"line_number":66,"context_line":"from oslo_serialization import jsonutils"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf57530f_6befbd87","line":63,"range":{"start_line":63,"start_character":0,"end_line":63,"end_character":33},"updated":"2017-09-20 00:31:19.000000000","message":"This command is independent from neutron, neutron-lib because this is supposed to run on compute-node without dependency of neutron.\n\nsetup_logging would need to be copied with modification.","commit_id":"2d212587d160deec488def7be8dafb73350f9c96"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"780a8b1b4de4e31dfc08d583afe07dec9496fc75","unresolved":false,"context_lines":[{"line_number":55,"context_line":"\"\"\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"import logging"},{"line_number":59,"context_line":"import os"},{"line_number":60,"context_line":"import socket"},{"line_number":61,"context_line":"import subprocess"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f515b1d_1a608d32","line":58,"range":{"start_line":58,"start_character":0,"end_line":58,"end_character":14},"updated":"2017-09-21 21:27:49.000000000","message":"Why do you use logging instead of oslo_log?\nWe can assume oslo_log package as it\u0027s library.","commit_id":"f751e418033a136df26ddfda16513dfae05f4323"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"e202440ae06785f3f9d5732c3895b32f5d6f5dee","unresolved":false,"context_lines":[{"line_number":55,"context_line":"\"\"\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"import logging"},{"line_number":59,"context_line":"import os"},{"line_number":60,"context_line":"import socket"},{"line_number":61,"context_line":"import subprocess"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_4ec50b3c","line":58,"range":{"start_line":58,"start_character":0,"end_line":58,"end_character":14},"in_reply_to":"3f4b6375_13a3d651","updated":"2017-10-19 06:16:30.000000000","message":"Although it may be overkill, it\u0027s quite common to use LOG for command. Please see under files neutron/cmd/","commit_id":"f751e418033a136df26ddfda16513dfae05f4323"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"9a13c7c5593e7b2b1eb5cb443c02bb444dfaad4f","unresolved":false,"context_lines":[{"line_number":55,"context_line":"\"\"\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"import logging"},{"line_number":59,"context_line":"import os"},{"line_number":60,"context_line":"import socket"},{"line_number":61,"context_line":"import subprocess"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_13a3d651","line":58,"range":{"start_line":58,"start_character":0,"end_line":58,"end_character":14},"in_reply_to":"7f515b1d_1a608d32","updated":"2017-10-18 09:22:21.000000000","message":"Why do we even need logging in a command line script?\n\nI\u0027d say change everything to print to either stdout or stderr ass appropriate..\n\nAt most we can perhaps use syslog though I think for a script it\u0027s overkill.","commit_id":"f751e418033a136df26ddfda16513dfae05f4323"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"780a8b1b4de4e31dfc08d583afe07dec9496fc75","unresolved":false,"context_lines":[{"line_number":477,"context_line":"    # of deployment therefore it does not worth adding complexity."},{"line_number":478,"context_line":"    logging.basicConfig(format\u003d\u0027%(asctime)s.%(msecs)03d %(process)d \u0027"},{"line_number":479,"context_line":"                               \u0027%(levelname)s %(name)s [-] %(message)s\u0027,"},{"line_number":480,"context_line":"                        level\u003dlogging.DEBUG)"},{"line_number":481,"context_line":"    if not LOG.handlers:"},{"line_number":482,"context_line":"        LOG.addHandler(logging.StreamHandler())"},{"line_number":483,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f515b1d_fad931f4","line":480,"range":{"start_line":480,"start_character":30,"end_line":480,"end_character":44},"updated":"2017-09-21 21:27:49.000000000","message":"DEBUG?\nIf you\u0027d like to use it, probably --verbose or --debug option can be added.","commit_id":"f751e418033a136df26ddfda16513dfae05f4323"},{"author":{"_account_id":26507,"name":"Michel Peterson","email":"michel@redhat.com","username":"mpeterson"},"change_message_id":"f54102a6a8eca4410ba1ebd62c756cf2124480d8","unresolved":false,"context_lines":[{"line_number":254,"context_line":"            \"\"\")),"},{"line_number":255,"context_line":"    cfg.StrOpt("},{"line_number":256,"context_line":"        \u0027log_file\u0027,"},{"line_number":257,"context_line":"        default\u003d\u0027/var/log/neutron/neutron-ovs-hostconfigs.log\u0027,"},{"line_number":258,"context_line":"        help\u003d_(\"\"\""},{"line_number":259,"context_line":"            Log file."},{"line_number":260,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_f41bcfc6","line":257,"range":{"start_line":257,"start_character":17,"end_line":257,"end_character":34},"updated":"2017-10-25 12:39:16.000000000","message":"actually aren\u0027t there config variables that exist for this already in oslo_config?\n\nI\u0027d argue the same for L249 as well.","commit_id":"46b3cca9f69a3448cdce9c22b75a5aeed8660030"},{"author":{"_account_id":13912,"name":"rajiv","email":"thenakliman@gmail.com","username":"rajiv.kumar"},"change_message_id":"50a737f3218c881e9750f217c9a3f630cc870f78","unresolved":false,"context_lines":[{"line_number":254,"context_line":"            \"\"\")),"},{"line_number":255,"context_line":"    cfg.StrOpt("},{"line_number":256,"context_line":"        \u0027log_file\u0027,"},{"line_number":257,"context_line":"        default\u003d\u0027/var/log/neutron/neutron-ovs-hostconfigs.log\u0027,"},{"line_number":258,"context_line":"        help\u003d_(\"\"\""},{"line_number":259,"context_line":"            Log file."},{"line_number":260,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_11cae419","line":257,"range":{"start_line":257,"start_character":17,"end_line":257,"end_character":34},"in_reply_to":"3f4b6375_f41bcfc6","updated":"2017-10-27 06:50:02.000000000","message":"Done","commit_id":"46b3cca9f69a3448cdce9c22b75a5aeed8660030"},{"author":{"_account_id":26507,"name":"Michel Peterson","email":"michel@redhat.com","username":"mpeterson"},"change_message_id":"f54102a6a8eca4410ba1ebd62c756cf2124480d8","unresolved":false,"context_lines":[{"line_number":478,"context_line":"        return subprocess.check_output(command_line).strip()"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"def setup_logging(conf):"},{"line_number":482,"context_line":"    cfg.CONF.log_file \u003d conf.log_file"},{"line_number":483,"context_line":"    logging.register_options(cfg.CONF)"},{"line_number":484,"context_line":"    logging.setup(cfg.CONF, \u0027neutron\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_b40c37a5","line":481,"updated":"2017-10-25 12:39:16.000000000","message":"1) Why there are no tests for this change? \n\n2) What happens if we try to write the log and we don\u0027t have permissions?\n\n3) How can the user log to stdout/stderr if they want?","commit_id":"46b3cca9f69a3448cdce9c22b75a5aeed8660030"},{"author":{"_account_id":13912,"name":"rajiv","email":"thenakliman@gmail.com","username":"rajiv.kumar"},"change_message_id":"50a737f3218c881e9750f217c9a3f630cc870f78","unresolved":false,"context_lines":[{"line_number":478,"context_line":"        return subprocess.check_output(command_line).strip()"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"def setup_logging(conf):"},{"line_number":482,"context_line":"    cfg.CONF.log_file \u003d conf.log_file"},{"line_number":483,"context_line":"    logging.register_options(cfg.CONF)"},{"line_number":484,"context_line":"    logging.setup(cfg.CONF, \u0027neutron\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_c615903e","line":481,"in_reply_to":"3f4b6375_b40c37a5","updated":"2017-10-27 06:50:02.000000000","message":"Done, if script does not have write permission then stack trace appears on console.","commit_id":"46b3cca9f69a3448cdce9c22b75a5aeed8660030"},{"author":{"_account_id":26507,"name":"Michel Peterson","email":"michel@redhat.com","username":"mpeterson"},"change_message_id":"f54102a6a8eca4410ba1ebd62c756cf2124480d8","unresolved":false,"context_lines":[{"line_number":488,"context_line":"    \"\"\"Main.\"\"\""},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"    conf \u003d setup_conf(args)"},{"line_number":491,"context_line":"    setup_logging(conf)"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"    if os.geteuid() !\u003d 0:"},{"line_number":494,"context_line":"        LOG.error(\u0027Root permissions are required to configure ovsdb.\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_d415739d","line":491,"range":{"start_line":491,"start_character":18,"end_line":491,"end_character":22},"updated":"2017-10-25 12:39:16.000000000","message":"pass `conf.log_file` already, not the whole reference to the whole `conf`","commit_id":"46b3cca9f69a3448cdce9c22b75a5aeed8660030"},{"author":{"_account_id":13912,"name":"rajiv","email":"thenakliman@gmail.com","username":"rajiv.kumar"},"change_message_id":"50a737f3218c881e9750f217c9a3f630cc870f78","unresolved":false,"context_lines":[{"line_number":488,"context_line":"    \"\"\"Main.\"\"\""},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"    conf \u003d setup_conf(args)"},{"line_number":491,"context_line":"    setup_logging(conf)"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"    if os.geteuid() !\u003d 0:"},{"line_number":494,"context_line":"        LOG.error(\u0027Root permissions are required to configure ovsdb.\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_b1d2f0cf","line":491,"range":{"start_line":491,"start_character":18,"end_line":491,"end_character":22},"in_reply_to":"3f4b6375_d415739d","updated":"2017-10-27 06:50:02.000000000","message":"Done","commit_id":"46b3cca9f69a3448cdce9c22b75a5aeed8660030"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"a84738b1dabe05bf93e7e127391f9b71d3c54277","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        help\u003d_(\"\"\""},{"line_number":259,"context_line":"            Log file."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"            NOTE: When log file is not specified then logs appears on console"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"            Default: --log_file\u003dNone\u0027"},{"line_number":264,"context_line":"            \"\"\")),"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_3997d33d","line":261,"range":{"start_line":261,"start_character":70,"end_line":261,"end_character":77},"updated":"2017-10-27 20:38:45.000000000","message":"nit: more specifically stdout.","commit_id":"6a32222bbf6591d83c08f1157b4bf378a82b7550"},{"author":{"_account_id":13912,"name":"rajiv","email":"thenakliman@gmail.com","username":"rajiv.kumar"},"change_message_id":"acfe9e628a07cfe2d7bf94d140b10aee108d7cd8","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        help\u003d_(\"\"\""},{"line_number":259,"context_line":"            Log file."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"            NOTE: When log file is not specified then logs appears on console"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"            Default: --log_file\u003dNone\u0027"},{"line_number":264,"context_line":"            \"\"\")),"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_bc7035de","line":261,"range":{"start_line":261,"start_character":70,"end_line":261,"end_character":77},"in_reply_to":"3f4b6375_3997d33d","updated":"2017-11-02 02:58:28.000000000","message":"Done","commit_id":"6a32222bbf6591d83c08f1157b4bf378a82b7550"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"a84738b1dabe05bf93e7e127391f9b71d3c54277","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            OVS VHostUser socket directory."},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"            Default: --vhostuser_socket_dir\u003d/var/run/openvswitch"},{"line_number":254,"context_line":"            \"\"\")),"},{"line_number":255,"context_line":"    cfg.StrOpt("},{"line_number":256,"context_line":"        \u0027log_file\u0027,"},{"line_number":257,"context_line":"        default\u003dNone,"},{"line_number":258,"context_line":"        help\u003d_(\"\"\""},{"line_number":259,"context_line":"            Log file."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"            NOTE: When log file is not specified then logs appears on console"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"            Default: --log_file\u003dNone\u0027"},{"line_number":264,"context_line":"            \"\"\")),"},{"line_number":265,"context_line":"]"},{"line_number":266,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_798d4b29","line":263,"range":{"start_line":254,"start_character":0,"end_line":263,"end_character":37},"updated":"2017-10-27 20:38:45.000000000","message":"unlike neutron utility commands, do you want to specify log file?\n\ntypically logger command helps in such case.","commit_id":"6a32222bbf6591d83c08f1157b4bf378a82b7550"},{"author":{"_account_id":13912,"name":"rajiv","email":"thenakliman@gmail.com","username":"rajiv.kumar"},"change_message_id":"acfe9e628a07cfe2d7bf94d140b10aee108d7cd8","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            OVS VHostUser socket directory."},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"            Default: --vhostuser_socket_dir\u003d/var/run/openvswitch"},{"line_number":254,"context_line":"            \"\"\")),"},{"line_number":255,"context_line":"    cfg.StrOpt("},{"line_number":256,"context_line":"        \u0027log_file\u0027,"},{"line_number":257,"context_line":"        default\u003dNone,"},{"line_number":258,"context_line":"        help\u003d_(\"\"\""},{"line_number":259,"context_line":"            Log file."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"            NOTE: When log file is not specified then logs appears on console"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"            Default: --log_file\u003dNone\u0027"},{"line_number":264,"context_line":"            \"\"\")),"},{"line_number":265,"context_line":"]"},{"line_number":266,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_dc6bf1ee","line":263,"range":{"start_line":254,"start_character":0,"end_line":263,"end_character":37},"in_reply_to":"3f4b6375_798d4b29","updated":"2017-11-02 02:58:28.000000000","message":"We don\u0027t have services on compute node unlike in neutron. So i think, it makes sense to specify log_file. Do you have some other approach in your mind.","commit_id":"6a32222bbf6591d83c08f1157b4bf378a82b7550"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"a84738b1dabe05bf93e7e127391f9b71d3c54277","unresolved":false,"context_lines":[{"line_number":485,"context_line":"    # if script does not have write permission in the directory then"},{"line_number":486,"context_line":"    # stack trace appear on console."},{"line_number":487,"context_line":"    logging.register_options(cfg.CONF)"},{"line_number":488,"context_line":"    logging.setup(cfg.CONF, \u0027neutron\u0027)"},{"line_number":489,"context_line":"    LOG.info(\"Logging enabled!\")"},{"line_number":490,"context_line":""},{"line_number":491,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_d922ff01","line":488,"range":{"start_line":488,"start_character":28,"end_line":488,"end_character":37},"updated":"2017-10-27 20:38:45.000000000","message":"the product name should be specific to this command. at least not neutron, but something related to networking-odl for debug.","commit_id":"6a32222bbf6591d83c08f1157b4bf378a82b7550"},{"author":{"_account_id":13912,"name":"rajiv","email":"thenakliman@gmail.com","username":"rajiv.kumar"},"change_message_id":"acfe9e628a07cfe2d7bf94d140b10aee108d7cd8","unresolved":false,"context_lines":[{"line_number":485,"context_line":"    # if script does not have write permission in the directory then"},{"line_number":486,"context_line":"    # stack trace appear on console."},{"line_number":487,"context_line":"    logging.register_options(cfg.CONF)"},{"line_number":488,"context_line":"    logging.setup(cfg.CONF, \u0027neutron\u0027)"},{"line_number":489,"context_line":"    LOG.info(\"Logging enabled!\")"},{"line_number":490,"context_line":""},{"line_number":491,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_7c72bde5","line":488,"range":{"start_line":488,"start_character":28,"end_line":488,"end_character":37},"in_reply_to":"3f4b6375_d922ff01","updated":"2017-11-02 02:58:28.000000000","message":"Done","commit_id":"6a32222bbf6591d83c08f1157b4bf378a82b7550"},{"author":{"_account_id":26507,"name":"Michel Peterson","email":"michel@redhat.com","username":"mpeterson"},"change_message_id":"6e47348b1f696dd955c9ba9ed3348ff48b403c9a","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        help\u003d_(\"\"\""},{"line_number":259,"context_line":"            Log file."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"            NOTE: When log file is not specified then logs appears on console"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"            Default: --log_file\u003dNone\u0027"},{"line_number":264,"context_line":"            \"\"\")),"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f4b6375_029fe2b4","line":261,"range":{"start_line":261,"start_character":70,"end_line":261,"end_character":77},"updated":"2017-10-30 11:46:17.000000000","message":"stdout\n\nIf you need to submit another PS then modify this.","commit_id":"bb8350cd1014c89d4beb4cc4a1f3d77531117f32"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"930e736d8a1a4109e45b5c44a4dd1a71da933978","unresolved":false,"context_lines":[{"line_number":481,"context_line":""},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"def setup_logging(log_file):"},{"line_number":484,"context_line":"    cfg.CONF.log_file \u003d log_file"},{"line_number":485,"context_line":"    # if script does not have write permission in the directory then"},{"line_number":486,"context_line":"    # stack trace appear on console."},{"line_number":487,"context_line":"    logging.register_options(cfg.CONF)"},{"line_number":488,"context_line":"    logging.setup(cfg.CONF, \u0027networking-odl\u0027)"},{"line_number":489,"context_line":"    LOG.info(\"Logging enabled!\")"},{"line_number":490,"context_line":""},{"line_number":491,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_c57194e0","line":488,"range":{"start_line":484,"start_character":0,"end_line":488,"end_character":45},"updated":"2017-11-01 10:29:34.000000000","message":"looks very hack-ish.  are you trying to avoid registering the full set of oslo.log options?  why?","commit_id":"494cee180892d5cdb45db8ee1a2a233f330335e6"},{"author":{"_account_id":13912,"name":"rajiv","email":"thenakliman@gmail.com","username":"rajiv.kumar"},"change_message_id":"acfe9e628a07cfe2d7bf94d140b10aee108d7cd8","unresolved":false,"context_lines":[{"line_number":481,"context_line":""},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"def setup_logging(log_file):"},{"line_number":484,"context_line":"    cfg.CONF.log_file \u003d log_file"},{"line_number":485,"context_line":"    # if script does not have write permission in the directory then"},{"line_number":486,"context_line":"    # stack trace appear on console."},{"line_number":487,"context_line":"    logging.register_options(cfg.CONF)"},{"line_number":488,"context_line":"    logging.setup(cfg.CONF, \u0027networking-odl\u0027)"},{"line_number":489,"context_line":"    LOG.info(\"Logging enabled!\")"},{"line_number":490,"context_line":""},{"line_number":491,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_f43788af","line":488,"range":{"start_line":484,"start_character":0,"end_line":488,"end_character":45},"in_reply_to":"3f4b6375_c57194e0","updated":"2017-11-02 02:58:28.000000000","message":"yes, i am trying to avoid registering full set of oslo.log option. This script will run on compute node and compute node does not have neutron.conf, so we can not use neutron conf file, we will have to register all options. And this script runs only at deployment time and once therefor i think, it is not worth doing them.","commit_id":"494cee180892d5cdb45db8ee1a2a233f330335e6"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"cef662236474fd70be6507afaee3129cbf346b6c","unresolved":false,"context_lines":[{"line_number":481,"context_line":""},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"def setup_logging(log_file):"},{"line_number":484,"context_line":"    cfg.CONF.log_file \u003d log_file"},{"line_number":485,"context_line":"    # if script does not have write permission in the directory then"},{"line_number":486,"context_line":"    # stack trace appear on console."},{"line_number":487,"context_line":"    logging.register_options(cfg.CONF)"},{"line_number":488,"context_line":"    logging.setup(cfg.CONF, \u0027networking-odl\u0027)"},{"line_number":489,"context_line":"    LOG.info(\"Logging enabled!\")"},{"line_number":490,"context_line":""},{"line_number":491,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_c15dd347","line":488,"range":{"start_line":484,"start_character":0,"end_line":488,"end_character":45},"in_reply_to":"3f4b6375_f43788af","updated":"2017-11-02 20:01:02.000000000","message":"it\u0027s worthwhile to explain as comment.\nHere we don\u0027t want to depend on Neutron. But it\u0027s okay to depend on oslo.log options because we can safely assume nova-compute is running which requires oslo.log.","commit_id":"494cee180892d5cdb45db8ee1a2a233f330335e6"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"a75563b9b324a84aeb655c75d7048071a5b8b040","unresolved":false,"context_lines":[{"line_number":485,"context_line":"    # to register, but neutron.conf is not present on compute node therefore"},{"line_number":486,"context_line":"    # we can not dependant on it. However, nova-compute is present on compute"},{"line_number":487,"context_line":"    # node, so code can depend on oslo log"},{"line_number":488,"context_line":"    cfg.CONF.log_file \u003d log_file"},{"line_number":489,"context_line":"    # if script does not have write permission in the directory then"},{"line_number":490,"context_line":"    # stack trace appear on console."},{"line_number":491,"context_line":"    logging.register_options(cfg.CONF)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f4b6375_980a5787","line":488,"range":{"start_line":488,"start_character":4,"end_line":488,"end_character":32},"updated":"2017-11-07 16:46:25.000000000","message":"Why is this necessary?\nsetup_config() does it?\nand at line 500, it already reference it.","commit_id":"3576ec5d7582331c2fbc7f44dc9c6c7bd12487f3"}],"networking_odl/tests/unit/cmd/test_set_ovs_hostconfigs.py":[{"author":{"_account_id":26507,"name":"Michel Peterson","email":"michel@redhat.com","username":"mpeterson"},"change_message_id":"dbb2688ba914c57fb02090a29895d7674695326e","unresolved":false,"context_lines":[{"line_number":277,"context_line":"            set_ovs_hostconfigs.os, \"geteuid\", return_value\u003dreturn_value)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def test_log_on_console_msg(self):"},{"line_number":280,"context_line":"        # NOTE(rajivk): exception logging bypasses the main stream"},{"line_number":281,"context_line":"        # and goes to stderr. Suggests on a better way to do this are"},{"line_number":282,"context_line":"        # welcomed."},{"line_number":283,"context_line":"        out \u003d sys.stdout"},{"line_number":284,"context_line":"        sys.stdout \u003d six.StringIO()"},{"line_number":285,"context_line":"        set_ovs_hostconfigs.main(())"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_887c1b21","line":282,"range":{"start_line":280,"start_character":7,"end_line":282,"end_character":19},"updated":"2017-10-30 08:54:54.000000000","message":"A better way would be to do it with a context manager like this:\n\n@contextmanager\ndef capture(command, *args, **kwargs):\n  out, sys.stdout \u003d sys.stdout, StringIO()\n  try:\n    command(*args, **kwargs)\n    sys.stdout.seek(0)\n    yield sys.stdout.read()\n  finally:\n    sys.stdout \u003d out\n\n(from: http://schinckel.net/2013/04/15/capture-and-test-sys.stdout-sys.stderr-in-unittest.testcase/ )","commit_id":"6a32222bbf6591d83c08f1157b4bf378a82b7550"},{"author":{"_account_id":26507,"name":"Michel Peterson","email":"michel@redhat.com","username":"mpeterson"},"change_message_id":"dbb2688ba914c57fb02090a29895d7674695326e","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        out \u003d sys.stdout"},{"line_number":284,"context_line":"        sys.stdout \u003d six.StringIO()"},{"line_number":285,"context_line":"        set_ovs_hostconfigs.main(())"},{"line_number":286,"context_line":"        log_line \u003d \"permissions are required to configure ovsdb\""},{"line_number":287,"context_line":"        self.assertNotEqual(-1, sys.stdout.getvalue().find(log_line))"},{"line_number":288,"context_line":"        sys.stdout \u003d out"},{"line_number":289,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_a89c775d","line":286,"range":{"start_line":286,"start_character":19,"end_line":286,"end_character":64},"updated":"2017-10-30 08:54:54.000000000","message":"make it a constant.","commit_id":"6a32222bbf6591d83c08f1157b4bf378a82b7550"},{"author":{"_account_id":26507,"name":"Michel Peterson","email":"michel@redhat.com","username":"mpeterson"},"change_message_id":"dbb2688ba914c57fb02090a29895d7674695326e","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        set_ovs_hostconfigs.main(())"},{"line_number":286,"context_line":"        log_line \u003d \"permissions are required to configure ovsdb\""},{"line_number":287,"context_line":"        self.assertNotEqual(-1, sys.stdout.getvalue().find(log_line))"},{"line_number":288,"context_line":"        sys.stdout \u003d out"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def test_log_in_file(self):"},{"line_number":291,"context_line":"        with tempfile.TemporaryFile() as fp:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_88e53b0d","line":288,"range":{"start_line":288,"start_character":8,"end_line":288,"end_character":24},"updated":"2017-10-30 08:54:54.000000000","message":"first of all, this needs to happen disregarding the result of the test, ie: if the assert fails then an exception is raised and the stdout is never going to be restored.","commit_id":"6a32222bbf6591d83c08f1157b4bf378a82b7550"},{"author":{"_account_id":26507,"name":"Michel Peterson","email":"michel@redhat.com","username":"mpeterson"},"change_message_id":"dbb2688ba914c57fb02090a29895d7674695326e","unresolved":false,"context_lines":[{"line_number":290,"context_line":"    def test_log_in_file(self):"},{"line_number":291,"context_line":"        with tempfile.TemporaryFile() as fp:"},{"line_number":292,"context_line":"            set_ovs_hostconfigs.main((\"--log_file\u003d%s\" % fp.name,))"},{"line_number":293,"context_line":"            logs \u003d [\"Logging Enabled!\","},{"line_number":294,"context_line":"                    \"permissions are required to configure ovsdb\"]"},{"line_number":295,"context_line":"            for line, count in fp.readline():"},{"line_number":296,"context_line":"                self.assertNotEqual(-1, line.find(logs[count]))"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_689e7f55","line":294,"range":{"start_line":293,"start_character":12,"end_line":294,"end_character":66},"updated":"2017-10-30 08:54:54.000000000","message":"constants","commit_id":"6a32222bbf6591d83c08f1157b4bf378a82b7550"}]}
