)]}'
{"monasca_setup/detection/plugins/libvirt.py":[{"author":{"_account_id":23735,"name":"sumitjami","email":"sjamgade@suse.com","username":"nthforloop"},"change_message_id":"78f8846ad60524e70f74eea1edba78c52bcc8815","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        try:"},{"line_number":225,"context_line":"            return utils.load_oslo_configuration(proc\u003dnova_cmd,"},{"line_number":226,"context_line":"                                                 project\u003d\u0027nova\u0027,"},{"line_number":227,"context_line":"                                                 for_opts\u003d_REQUIRED_OPTS)"},{"line_number":228,"context_line":"        except cfg.Error:"},{"line_number":229,"context_line":"            log.exception(\u0027Failed to load nova configuration\u0027)"},{"line_number":230,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":5,"id":"df140735_54379de4","line":227,"updated":"2017-05-31 10:47:31.000000000","message":"I think this function is not really required, Since its just calling the utils function, but that is upto you.","commit_id":"2b57c4b8fc75cc27a5203ce5dbe0f4b0bddc7ba4"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"c84c99bd587eca60f30a8f8a2ed89fe9ca307a46","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        try:"},{"line_number":225,"context_line":"            return utils.load_oslo_configuration(proc\u003dnova_cmd,"},{"line_number":226,"context_line":"                                                 project\u003d\u0027nova\u0027,"},{"line_number":227,"context_line":"                                                 for_opts\u003d_REQUIRED_OPTS)"},{"line_number":228,"context_line":"        except cfg.Error:"},{"line_number":229,"context_line":"            log.exception(\u0027Failed to load nova configuration\u0027)"},{"line_number":230,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":5,"id":"df140735_f4bc71dd","line":227,"in_reply_to":"df140735_54379de4","updated":"2017-05-31 10:57:53.000000000","message":"I didn\u0027t want to put any error control into the utils to leave a decision how to handle them to the caller, that\u0027s why the upper level function.","commit_id":"2b57c4b8fc75cc27a5203ce5dbe0f4b0bddc7ba4"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"b6622b5397f63b207e2a44039407395125546676","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        try:"},{"line_number":225,"context_line":"            return utils.load_oslo_configuration(proc\u003dnova_cmd,"},{"line_number":226,"context_line":"                                                 project\u003d\u0027nova\u0027,"},{"line_number":227,"context_line":"                                                 for_opts\u003d_REQUIRED_OPTS)"},{"line_number":228,"context_line":"        except cfg.Error:"},{"line_number":229,"context_line":"            log.exception(\u0027Failed to load nova configuration\u0027)"},{"line_number":230,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":5,"id":"df140735_6fe76814","line":227,"in_reply_to":"df140735_54ad5d2f","updated":"2017-05-31 11:34:22.000000000","message":"I had sth like it in my mind - but that sounded like something much bigger and not necessarily needed as some checks could query several different projects configuration in the same time. Even if that\u0027s not a case now - it is still possible.","commit_id":"2b57c4b8fc75cc27a5203ce5dbe0f4b0bddc7ba4"},{"author":{"_account_id":23735,"name":"sumitjami","email":"sjamgade@suse.com","username":"nthforloop"},"change_message_id":"f0a8d52d8181c4b8e1fced0aa8e82130b3fb3098","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        try:"},{"line_number":225,"context_line":"            return utils.load_oslo_configuration(proc\u003dnova_cmd,"},{"line_number":226,"context_line":"                                                 project\u003d\u0027nova\u0027,"},{"line_number":227,"context_line":"                                                 for_opts\u003d_REQUIRED_OPTS)"},{"line_number":228,"context_line":"        except cfg.Error:"},{"line_number":229,"context_line":"            log.exception(\u0027Failed to load nova configuration\u0027)"},{"line_number":230,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":5,"id":"df140735_cfb8b32b","line":227,"in_reply_to":"df140735_6fe76814","updated":"2017-05-31 11:56:58.000000000","message":"I am trying to say is this method too \u0027nova\u0027 specific, while it doesnt need to be.","commit_id":"2b57c4b8fc75cc27a5203ce5dbe0f4b0bddc7ba4"},{"author":{"_account_id":23735,"name":"sumitjami","email":"sjamgade@suse.com","username":"nthforloop"},"change_message_id":"b1523058e9f8172ae8265526a24c356e21c715b9","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        try:"},{"line_number":225,"context_line":"            return utils.load_oslo_configuration(proc\u003dnova_cmd,"},{"line_number":226,"context_line":"                                                 project\u003d\u0027nova\u0027,"},{"line_number":227,"context_line":"                                                 for_opts\u003d_REQUIRED_OPTS)"},{"line_number":228,"context_line":"        except cfg.Error:"},{"line_number":229,"context_line":"            log.exception(\u0027Failed to load nova configuration\u0027)"},{"line_number":230,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":5,"id":"df140735_54ad5d2f","line":227,"in_reply_to":"df140735_f4bc71dd","updated":"2017-05-31 11:17:48.000000000","message":"then I would suggest writing it in a manner so that it can be elevated to the base class, with call like `load_oslo_conf(_REQUIRED_OPTS)` when required.\n\nBut may be that functionality should be added separately.","commit_id":"2b57c4b8fc75cc27a5203ce5dbe0f4b0bddc7ba4"}],"monasca_setup/detection/utils.py":[{"author":{"_account_id":23735,"name":"sumitjami","email":"sjamgade@suse.com","username":"nthforloop"},"change_message_id":"a700d1d8e3c3645156afa3d090a14dac758066ee","unresolved":false,"context_lines":[{"line_number":119,"context_line":"               if arg_name in proc_cmd else None)"},{"line_number":120,"context_line":"        return val"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    config_file \u003d _get_cmd_arg_value(\u0027--config-file\u0027)"},{"line_number":123,"context_line":"    config_dir \u003d _get_cmd_arg_value(\u0027--config-dir\u0027)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    # NOTE(trebskit) keep this update to default *project* setup"}],"source_content_type":"text/x-python","patch_set":4,"id":"df140735_e076efa4","line":122,"range":{"start_line":122,"start_character":18,"end_line":122,"end_character":36},"updated":"2017-05-31 08:40:19.000000000","message":"config-file and config-dir can appear multiple times on the command line\n\nI would suggest passing the entire command line as it is to CONF, and let it parse the required the stuff","commit_id":"24dd865c4022fe49a892dbcc4f21cd399668e822"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"a8623f20c32d83b529b635dcac26ec51d4b21d83","unresolved":false,"context_lines":[{"line_number":119,"context_line":"               if arg_name in proc_cmd else None)"},{"line_number":120,"context_line":"        return val"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    config_file \u003d _get_cmd_arg_value(\u0027--config-file\u0027)"},{"line_number":123,"context_line":"    config_dir \u003d _get_cmd_arg_value(\u0027--config-dir\u0027)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    # NOTE(trebskit) keep this update to default *project* setup"}],"source_content_type":"text/x-python","patch_set":4,"id":"df140735_e0e94f1a","line":122,"range":{"start_line":122,"start_character":18,"end_line":122,"end_character":36},"in_reply_to":"df140735_e076efa4","updated":"2017-05-31 08:42:08.000000000","message":"Thx for that tip, I thought you can just set it once ;-)","commit_id":"24dd865c4022fe49a892dbcc4f21cd399668e822"},{"author":{"_account_id":23735,"name":"sumitjami","email":"sjamgade@suse.com","username":"nthforloop"},"change_message_id":"78f8846ad60524e70f74eea1edba78c52bcc8815","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    \"\"\""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    proc_cmd \u003d proc.as_dict([\u0027cmdline\u0027])[\u0027cmdline\u0027]"},{"line_number":133,"context_line":"    proc_conf \u003d cfg.CONF("},{"line_number":134,"context_line":"        args\u003dproc_cmd[1:],"},{"line_number":135,"context_line":"        project\u003dproject,"},{"line_number":136,"context_line":"        prog\u003dprog"}],"source_content_type":"text/x-python","patch_set":5,"id":"df140735_b47039a7","line":133,"updated":"2017-05-31 10:47:31.000000000","message":"libvirt.py is passing in cmdline already. May be just use the [1:] slice of cmdline here.","commit_id":"2b57c4b8fc75cc27a5203ce5dbe0f4b0bddc7ba4"},{"author":{"_account_id":23735,"name":"sumitjami","email":"sjamgade@suse.com","username":"nthforloop"},"change_message_id":"b1523058e9f8172ae8265526a24c356e21c715b9","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    \"\"\""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    proc_cmd \u003d proc.as_dict([\u0027cmdline\u0027])[\u0027cmdline\u0027]"},{"line_number":133,"context_line":"    proc_conf \u003d cfg.CONF("},{"line_number":134,"context_line":"        args\u003dproc_cmd[1:],"},{"line_number":135,"context_line":"        project\u003dproject,"},{"line_number":136,"context_line":"        prog\u003dprog"}],"source_content_type":"text/x-python","patch_set":5,"id":"df140735_54ff9d33","line":133,"in_reply_to":"df140735_54e2fd02","updated":"2017-05-31 11:17:48.000000000","message":"I dont think we need to tie loading-oslo-config to Process object from psutil.\n\nIt Will also help testing the function if we just pass `[cmdline]`.","commit_id":"2b57c4b8fc75cc27a5203ce5dbe0f4b0bddc7ba4"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"b6622b5397f63b207e2a44039407395125546676","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    \"\"\""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    proc_cmd \u003d proc.as_dict([\u0027cmdline\u0027])[\u0027cmdline\u0027]"},{"line_number":133,"context_line":"    proc_conf \u003d cfg.CONF("},{"line_number":134,"context_line":"        args\u003dproc_cmd[1:],"},{"line_number":135,"context_line":"        project\u003dproject,"},{"line_number":136,"context_line":"        prog\u003dprog"}],"source_content_type":"text/x-python","patch_set":5,"id":"df140735_cf31d4a4","line":133,"in_reply_to":"df140735_54ff9d33","updated":"2017-05-31 11:34:22.000000000","message":"ok, I take that, let\u0027s pass cmdline here.","commit_id":"2b57c4b8fc75cc27a5203ce5dbe0f4b0bddc7ba4"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"c84c99bd587eca60f30a8f8a2ed89fe9ca307a46","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    \"\"\""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    proc_cmd \u003d proc.as_dict([\u0027cmdline\u0027])[\u0027cmdline\u0027]"},{"line_number":133,"context_line":"    proc_conf \u003d cfg.CONF("},{"line_number":134,"context_line":"        args\u003dproc_cmd[1:],"},{"line_number":135,"context_line":"        project\u003dproject,"},{"line_number":136,"context_line":"        prog\u003dprog"}],"source_content_type":"text/x-python","patch_set":5,"id":"df140735_54e2fd02","line":133,"in_reply_to":"df140735_b47039a7","updated":"2017-05-31 10:57:53.000000000","message":"libvirt.py is actually passing entire proc here and I\u0027d like to keep it that way. In case of any mods along how we process arguments there is few places to refactor the code.","commit_id":"2b57c4b8fc75cc27a5203ce5dbe0f4b0bddc7ba4"},{"author":{"_account_id":23735,"name":"sumitjami","email":"sjamgade@suse.com","username":"nthforloop"},"change_message_id":"b1523058e9f8172ae8265526a24c356e21c715b9","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    )"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    for no in for_opts:"},{"line_number":140,"context_line":"        proc_conf.register_opt(**no)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    return proc_conf"},{"line_number":143,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"df140735_f4beb163","line":140,"updated":"2017-05-31 11:17:48.000000000","message":"calling cfg.CONF() initializes the CONF object, it does not return anything.\n\nsomething like this `proc_conf \u003d cfg.CONF` should get the job done","commit_id":"2b57c4b8fc75cc27a5203ce5dbe0f4b0bddc7ba4"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"b6622b5397f63b207e2a44039407395125546676","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    )"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    for no in for_opts:"},{"line_number":140,"context_line":"        proc_conf.register_opt(**no)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    return proc_conf"},{"line_number":143,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"df140735_4ff4a4cf","line":140,"in_reply_to":"df140735_f4beb163","updated":"2017-05-31 11:34:22.000000000","message":"hmm...wouldn\u0027t it be a bit problematic that oslo.cfg keeps everything global for entire interpreter ? As in - that\u0027s pretty much a singleton ? I just thought of that, hmm..maybe let\u0027s create ConfigOpts here instead of using CONF object from oslo_config ?","commit_id":"2b57c4b8fc75cc27a5203ce5dbe0f4b0bddc7ba4"}],"setup.cfg":[{"author":{"_account_id":20033,"name":"Artur Basiak","email":"artur.basiak@ts.fujitsu.com","username":"abasiak"},"change_message_id":"06eeda4cf248f06aa056ba6621a25512fe379a5e","unresolved":false,"context_lines":[{"line_number":51,"context_line":"   monasca-common \u003e\u003d 1.4.0"},{"line_number":52,"context_line":"libvirt \u003d"},{"line_number":53,"context_line":"   python-novaclient\u003e\u003d7.1.0"},{"line_number":54,"context_line":"   python-neutronclient\u003e\u003d6.2.0,!\u003d6.3.0"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"[global]"},{"line_number":57,"context_line":"setup-hooks \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":15,"id":"7f231b9d_f79493ea","line":54,"updated":"2017-06-12 12:02:35.000000000","message":"Missing libvirt-python library here.","commit_id":"7823780175f5fe25b36715d622ee88e7d0f193e9"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"6b2b620f649fe126e6839c30ed9622e4828d22b2","unresolved":false,"context_lines":[{"line_number":51,"context_line":"   monasca-common \u003e\u003d 1.4.0"},{"line_number":52,"context_line":"libvirt \u003d"},{"line_number":53,"context_line":"   python-novaclient\u003e\u003d7.1.0"},{"line_number":54,"context_line":"   python-neutronclient\u003e\u003d6.2.0,!\u003d6.3.0"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"[global]"},{"line_number":57,"context_line":"setup-hooks \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":15,"id":"7f231b9d_855f4971","line":54,"in_reply_to":"7f231b9d_f79493ea","updated":"2017-06-13 04:36:53.000000000","message":"Done","commit_id":"7823780175f5fe25b36715d622ee88e7d0f193e9"}]}
