)]}'
{"nova/cmd/scheduler.py":[{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"e75350a50c6176195081597abc3abb447a3a3dd5","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from nova import utils"},{"line_number":29,"context_line":"from nova import version"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"CONF \u003d cfg.CONF"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def main():"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba8a016a_e2aa1285","line":31,"updated":"2015-11-23 09:47:20.000000000","message":"This should be ``CONF \u003d nova.conf.CONF`` I guess? (Which would make the import of \"cfg\" in line 21 obsolete)","commit_id":"920b2558da3ab90d2850e1e15a89819da662e51b"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"f272b910455c45f43d072e997354e52d439b5175","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from nova import utils"},{"line_number":29,"context_line":"from nova import version"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"CONF \u003d cfg.CONF"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def main():"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba8a016a_eabe4ffe","line":31,"in_reply_to":"ba8a016a_e2aa1285","updated":"2015-11-23 17:01:48.000000000","message":"Done","commit_id":"920b2558da3ab90d2850e1e15a89819da662e51b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8fcddfe628eab09baac06d7c954a5657597a8e13","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from nova import utils"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"CONF \u003d cfg.CONF"},{"line_number":30,"context_line":"CONF.import_opt(\u0027scheduler_topic\u0027, \u0027nova.scheduler.rpcapi\u0027)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def main():"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a8ffd7b_40383cd3","side":"PARENT","line":30,"updated":"2015-12-03 10:12:44.000000000","message":"See, that removal is a bit making me torn, because I liked the previous pattern where we were explicitly mentioning in the header that we were using *that* conf opt.\n\nBy reading the spec, there is a bullet #3 that mentions that we can remove that, but that\u0027s a bit unclear.\nhttp://specs.openstack.org/openstack/nova-specs/specs/mitaka/approved/centralize-config-options.html#technical-view\n\n@Markus, could you please help me shed some light?","commit_id":"e6408cd380fcdc3be62bd3dc876f2cdd6f97671b"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"08ab7404ac24a320c552bb395d7b0d3173711422","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from nova import utils"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"CONF \u003d cfg.CONF"},{"line_number":30,"context_line":"CONF.import_opt(\u0027scheduler_topic\u0027, \u0027nova.scheduler.rpcapi\u0027)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def main():"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a8ffd7b_8bb72584","side":"PARENT","line":30,"in_reply_to":"9a8ffd7b_40383cd3","updated":"2015-12-03 10:44:30.000000000","message":"True, the explicitness is reduced a bit. The technical reason why the \"import_opt\" here is **necessary** is that it does this under the cover:\n\n    __import__(module_str)\n    self._get_opt_info(name, group)\n\nWithout the __import__ function it wouldn\u0027t work. That\u0027s the magic which happens here. This technical necessity is not needed with the new approach. Everything is done after you import \"nova.conf\". No need for importing other modules to get access of the config options which are declared there. CONF is global. That\u0027s what it was and still is. Declaring it in one module doesn\u0027t separate anything. Signalizing cohesion should be done by grouping IMO. For example, if the XEN driver uses a ``CONF.vmware.option1`` we see by the group ``vmware`` that something is fishy.\n\n\u003cpicky-mode\u003e At the end of the day the description of the config option (as an interface to the ops) should describe where in the code it can be used \u003c/picky-mode\u003e","commit_id":"e6408cd380fcdc3be62bd3dc876f2cdd6f97671b"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"08ab7404ac24a320c552bb395d7b0d3173711422","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from nova import service"},{"line_number":27,"context_line":"from nova import utils"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"CONF \u003d nova.conf.CONF"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def main():"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a8ffd7b_860abc1e","line":29,"updated":"2015-12-03 10:44:30.000000000","message":"Read this as:\n\n    \"I, the module nova/cmd/scheduler.py, want access to the\n    option space we offer to the ops, and you, nova.conf.py,\n    are responsible to ensure that this can be done without\n    errors.\"","commit_id":"5dbdd6ed2bdcb6e52189e824b3526dde109be017"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"99a05be0ec6e81a79bf32068ef9da84e5c292b0e","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from nova import service"},{"line_number":27,"context_line":"from nova import utils"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"CONF \u003d nova.conf.CONF"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def main():"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a8ffd7b_a607c0c8","line":29,"in_reply_to":"9a8ffd7b_860abc1e","updated":"2015-12-03 11:02:51.000000000","message":"Okay, after our convo on IRC, I feel that the code readiness is still not exactly impacted, because we can still know where it\u0027s created and lookup at the details.","commit_id":"5dbdd6ed2bdcb6e52189e824b3526dde109be017"}],"nova/conf/scheduler.py":[{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"0266dc5a069e25416c6ba0ab42807d2ce4a6377f","unresolved":false,"context_lines":[{"line_number":22,"context_line":"                              help\u003d"},{"line_number":23,"context_line":"\"\"\"Driver to use for the scheduler."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"The driver is the way that a selection is made from available resources when a"},{"line_number":26,"context_line":"request is received. Different drivers use different algorithms for matching a"},{"line_number":27,"context_line":"request to a resource provider. For example, the ChanceScheduler simply picks a"},{"line_number":28,"context_line":"host at random., while the FilterScheduler applies a series of pass/fail tests"},{"line_number":29,"context_line":"to the collection of hosts to reject unsuitable hosts, and then applies a"},{"line_number":30,"context_line":"series of weighers to determine the best fit."}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_9d8dd27d","line":27,"range":{"start_line":25,"start_character":0,"end_line":27,"end_character":31},"updated":"2015-11-16 17:40:38.000000000","message":"That\u0027s text I would expect in an OptGroup, like: \n\n    \"sched_driver_group \u003d cfg.OptGroup(name\u003dscheduler\",\n                                       help\u003d\"The driver ...\")","commit_id":"b13625465ef63976806327326c79da64048bc7e6"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"0266dc5a069e25416c6ba0ab42807d2ce4a6377f","unresolved":false,"context_lines":[{"line_number":30,"context_line":"series of weighers to determine the best fit."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"To use a different driver than the default, specify that driver\u0027s entry point"},{"line_number":33,"context_line":"in nova.conf. "},{"line_number":34,"context_line":"\"\"\"),"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"sched_driver_period_opt \u003d cfg.IntOpt(\"scheduler_driver_task_period\","}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_5d944a36","line":33,"updated":"2015-11-16 17:40:38.000000000","message":"Maybe something like this?\n\nPossible values:\n\nThe fully qualified name of a python class which can be\nimported as a python module. Upstream schedulers are:\n  \n* nova.scheduler.filter_scheduler.FilterScheduler\n  applies a series of pass/fail tests to the collection of\n  hosts to reject unsuitable hosts, and then applies a series\n  of weighers to determine the best fit.\n* nova.scheduler.filter_scheduler.ChanceScheduler\n  Simply picks a host at random\n\nServices which consume this:\n\n* ``nova-scheduler``\n\nInterdependencies to other options:\n\n* None","commit_id":"b13625465ef63976806327326c79da64048bc7e6"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"0266dc5a069e25416c6ba0ab42807d2ce4a6377f","unresolved":false,"context_lines":[{"line_number":56,"context_line":"           ]"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"def register_opts(conf):"},{"line_number":59,"context_line":"    conf.register_opts(ALL_OPTS)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_c28939cc","line":59,"updated":"2015-11-16 17:40:38.000000000","message":"The \"OptGroup\" object is missing. It has the \"help\" attribute too. Would then be:\n\n    conf.register_opts(ALL_OPTS, sched_driver_group)","commit_id":"b13625465ef63976806327326c79da64048bc7e6"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"0266dc5a069e25416c6ba0ab42807d2ce4a6377f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ba8a016a_9d4632be","line":60,"updated":"2015-11-16 17:40:38.000000000","message":"\"nova/scheduler/opts.py\" has to point to the moved config options to create the \"nova.conf.sample\" file with \"tox -e genconfig\". That\u0027s what I used \"list_opts\" for in https://review.openstack.org/#/c/244177/3/nova/conf/serial_console.py,cm","commit_id":"b13625465ef63976806327326c79da64048bc7e6"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"be8ce980daf7f62f6a36d3df6a7bcea287089fa4","unresolved":false,"context_lines":[{"line_number":115,"context_line":"             \u0027with the value of service_down_time, but exactly how they \u0027"},{"line_number":116,"context_line":"             \u0027interact will depend on your choice of scheduler driver.\u0027)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"SCHED_MGR_OPTS \u003d ["},{"line_number":119,"context_line":"        driver_opt,"},{"line_number":120,"context_line":"        driver_period_opt,"},{"line_number":121,"context_line":"        ]"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_35c59d3b","line":118,"updated":"2015-11-17 17:59:36.000000000","message":"I\u0027m not quite sure about the \"sub-arrays\" like this one. I see that you use this to signalize where in the code they are used. Personally, I\u0027d rather not have this knowledge here. A code grep for specific options would give me the same insight.","commit_id":"43d4290f4c68bae8eb6a74cfe44f5480a7e8d978"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"7452d01ce1792ad1a3fedadfba7d292baba384c2","unresolved":false,"context_lines":[{"line_number":115,"context_line":"             \u0027with the value of service_down_time, but exactly how they \u0027"},{"line_number":116,"context_line":"             \u0027interact will depend on your choice of scheduler driver.\u0027)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"SCHED_MGR_OPTS \u003d ["},{"line_number":119,"context_line":"        driver_opt,"},{"line_number":120,"context_line":"        driver_period_opt,"},{"line_number":121,"context_line":"        ]"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_2baea085","line":118,"in_reply_to":"ba8a016a_35c59d3b","updated":"2015-11-17 18:37:02.000000000","message":"OK, I added these to help connect with the original files. But I agree that they are pretty useless otherwise.","commit_id":"43d4290f4c68bae8eb6a74cfe44f5480a7e8d978"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"be8ce980daf7f62f6a36d3df6a7bcea287089fa4","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        driver_period_opt,"},{"line_number":121,"context_line":"        ]"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"ALL_OPTS \u003d (FILT_SCHED_OPTS +"},{"line_number":124,"context_line":"            IRONIC_HOST_MGR_OPTS +"},{"line_number":125,"context_line":"            HOST_MGR_OPTS +"},{"line_number":126,"context_line":"            RPCAPI_OPTS +"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_55a62154","line":123,"updated":"2015-11-17 17:59:36.000000000","message":"The \"nova/scheduler/opts.py\" needs to be changed in order to use this. Otherwise the generation of the \"nova.conf.sample\" file with \"tox -e genconfig\" won\u0027t work.","commit_id":"43d4290f4c68bae8eb6a74cfe44f5480a7e8d978"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"7452d01ce1792ad1a3fedadfba7d292baba384c2","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        driver_period_opt,"},{"line_number":121,"context_line":"        ]"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"ALL_OPTS \u003d (FILT_SCHED_OPTS +"},{"line_number":124,"context_line":"            IRONIC_HOST_MGR_OPTS +"},{"line_number":125,"context_line":"            HOST_MGR_OPTS +"},{"line_number":126,"context_line":"            RPCAPI_OPTS +"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_abfe1069","line":123,"in_reply_to":"ba8a016a_55a62154","updated":"2015-11-17 18:37:02.000000000","message":"Yeah, I was saving that for when I was done. Just posting this so that you and John could bounce ideas off of it.","commit_id":"43d4290f4c68bae8eb6a74cfe44f5480a7e8d978"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"be8ce980daf7f62f6a36d3df6a7bcea287089fa4","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"def register_opts(conf):"},{"line_number":132,"context_line":"    conf.register_opts(ALL_OPTS)"},{"line_number":133,"context_line":"    conf.register_opt(rpcapi_cap_opt, \u0027upgrade_levels\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_15641947","line":132,"updated":"2015-11-17 17:59:36.000000000","message":"That\u0027s the understanding issue I had in the IRC discussion. I thought you are going to use the group \"scheduler\" here which would have been backwards incompatible. But I was wrong, that\u0027s good like it is here.","commit_id":"43d4290f4c68bae8eb6a74cfe44f5480a7e8d978"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b6e84d137fcc3ffce87be6850abc80c4f15c494c","unresolved":false,"context_lines":[{"line_number":231,"context_line":"               max_instances_per_host_opt,"},{"line_number":232,"context_line":"               ram_weight_mult_opt,"},{"line_number":233,"context_line":"               io_ops_weight_mult_opt,"},{"line_number":234,"context_line":"               scheduler_max_att_opt,"},{"line_number":235,"context_line":"              ]"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"ALL_OPTS \u003d itertools.chain("}],"source_content_type":"text/x-python","patch_set":9,"id":"9a8ffd7b_5fb1698e","line":234,"updated":"2015-11-25 15:06:48.000000000","message":"Do we need all these to have locals? Maybe they could just be inlined? If this is the prevailing style, happy to go with it though.","commit_id":"a9ba0dbd61659d3ef805416701b92efd7b70a206"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"cd52992a594f698bd29d680da6779e23caa268d0","unresolved":false,"context_lines":[{"line_number":231,"context_line":"               max_instances_per_host_opt,"},{"line_number":232,"context_line":"               ram_weight_mult_opt,"},{"line_number":233,"context_line":"               io_ops_weight_mult_opt,"},{"line_number":234,"context_line":"               scheduler_max_att_opt,"},{"line_number":235,"context_line":"              ]"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"ALL_OPTS \u003d itertools.chain("}],"source_content_type":"text/x-python","patch_set":9,"id":"9a8ffd7b_821c5a14","line":234,"in_reply_to":"9a8ffd7b_5fb1698e","updated":"2015-11-25 15:14:27.000000000","message":"I think it\u0027s helpful to make the groupings clear, and to make it easier to add a new option without forgetting to register it. But it\u0027s not critical to the functioning of the code, of course.","commit_id":"a9ba0dbd61659d3ef805416701b92efd7b70a206"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"478ca61762b8273249a3f8a634e95514da65370e","unresolved":false,"context_lines":[{"line_number":231,"context_line":"               max_instances_per_host_opt,"},{"line_number":232,"context_line":"               ram_weight_mult_opt,"},{"line_number":233,"context_line":"               io_ops_weight_mult_opt,"},{"line_number":234,"context_line":"               scheduler_max_att_opt,"},{"line_number":235,"context_line":"              ]"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"ALL_OPTS \u003d itertools.chain("}],"source_content_type":"text/x-python","patch_set":9,"id":"9a8ffd7b_f604ff7e","line":234,"in_reply_to":"9a8ffd7b_821c5a14","updated":"2015-11-25 17:20:28.000000000","message":"I mean we should put the cfg.StrOpt declarations into SIMPLE_OPTS. That will make them easier to add without forgetting to register. Right now, you might add one above but forget to add it here.","commit_id":"a9ba0dbd61659d3ef805416701b92efd7b70a206"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"99a05be0ec6e81a79bf32068ef9da84e5c292b0e","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    cfg.BoolOpt(\"attestation_insecure_ssl\","},{"line_number":143,"context_line":"            default\u003dFalse,"},{"line_number":144,"context_line":"            help\u003d\"Disable SSL cert verification for Attestation service\")"},{"line_number":145,"context_line":"]"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"max_io_ops_per_host_opt \u003d cfg.IntOpt(\"max_io_ops_per_host\","},{"line_number":148,"context_line":"        default\u003d8,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a8ffd7b_51ad6ce7","line":145,"updated":"2015-12-03 11:02:51.000000000","message":"micro-nit: that group should probably be moved below to not mix with the the other single opts.","commit_id":"5dbdd6ed2bdcb6e52189e824b3526dde109be017"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"99a05be0ec6e81a79bf32068ef9da84e5c292b0e","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"scheduler_max_att_opt \u003d cfg.IntOpt(\"scheduler_max_attempts\","},{"line_number":208,"context_line":"            default\u003d3,"},{"line_number":209,"context_line":"            help\u003d\"Maximum number of attempts to schedule an instance\")"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"SIMPLE_OPTS \u003d [host_subset_size_opt,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a8ffd7b_f16020d1","line":209,"updated":"2015-12-03 11:02:51.000000000","message":"micro-nit: that should be perhaps moved above to not confuse with the metrics opts.","commit_id":"5dbdd6ed2bdcb6e52189e824b3526dde109be017"}],"nova/opts.py":[{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"d42d0d2e72a1c2aae6464b383cf8402b2231fb05","unresolved":false,"context_lines":[{"line_number":79,"context_line":"             nova.cmd.novnc.opts,"},{"line_number":80,"context_line":"             nova.cmd.novncproxy.opts,"},{"line_number":81,"context_line":"             nova.cmd.spicehtml5proxy.opts,"},{"line_number":82,"context_line":"             nova.conf.scheduler.ALL_OPTS,"},{"line_number":83,"context_line":"             nova.console.manager.console_manager_opts,"},{"line_number":84,"context_line":"             nova.console.rpcapi.rpcapi_opts,"},{"line_number":85,"context_line":"             nova.console.xvp.xvp_opts,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a8ffd7b_f427eec7","line":82,"updated":"2015-11-26 11:53:48.000000000","message":"When generating the \"nova.conf.sample\" file, this will also put the \"trusted_opts\" into the DEFAULT group, which isn\u0027t the right one. You can see that when you search for \n\n    #attestation_server \u003d \u003cNone\u003e\n\nin the docs job output: http://docs-draft.openstack.org/91/245891/10/check/gate-nova-docs/bdd026c//doc/build/html/sample_config.html\n\nIt\u0027s there in the \"DEFAULT\" section *AND* in the \"trusted_computing\" section.","commit_id":"94795e05d275b210a7d767d9acd14779b4128c11"}],"nova/scheduler/opts.py":[{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"e75350a50c6176195081597abc3abb447a3a3dd5","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    return ["},{"line_number":18,"context_line":"        (\u0027DEFAULT\u0027,"},{"line_number":19,"context_line":"         nova.conf.scheduler.SIMPLE_OPTS),"},{"line_number":20,"context_line":"        (\u0027metrics\u0027, nova.conf.scheduler.metrics_weight_opts),"},{"line_number":21,"context_line":"        (\u0027trusted_computing\u0027,"},{"line_number":22,"context_line":"         nova.conf.scheduler.trusted_opts),"},{"line_number":23,"context_line":"        (\u0027upgrade_levels\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba8a016a_e2e692e7","line":20,"updated":"2015-11-23 09:47:20.000000000","message":"I did this in a different way, but both works fine. I\u0027m going to refactor those spread \"opts.py\" modules anyway after the config options are moved to the central location.","commit_id":"920b2558da3ab90d2850e1e15a89819da662e51b"}],"nova/tests/unit/conf_fixture.py":[{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"e75350a50c6176195081597abc3abb447a3a3dd5","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":"CONF.import_opt(\u0027use_ipv6\u0027, \u0027nova.netconf\u0027)"},{"line_number":27,"context_line":"CONF.import_opt(\u0027host\u0027, \u0027nova.netconf\u0027)"},{"line_number":28,"context_line":"CONF.import_opt(\u0027scheduler_driver\u0027, \u0027nova.scheduler.manager\u0027)"},{"line_number":29,"context_line":"CONF.import_opt(\u0027fake_network\u0027, \u0027nova.network.linux_net\u0027)"},{"line_number":30,"context_line":"CONF.import_opt(\u0027network_size\u0027, \u0027nova.network.manager\u0027)"},{"line_number":31,"context_line":"CONF.import_opt(\u0027num_networks\u0027, \u0027nova.network.manager\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba8a016a_a2ddea71","side":"PARENT","line":28,"updated":"2015-11-23 09:47:20.000000000","message":"This was just an unused import, right?","commit_id":"855891574144d0c68b2d732d05f7c37fca1b1723"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"4fb57f86ed6dfdcf7a0a59715df09d33f5929b4e","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":"CONF.import_opt(\u0027use_ipv6\u0027, \u0027nova.netconf\u0027)"},{"line_number":27,"context_line":"CONF.import_opt(\u0027host\u0027, \u0027nova.netconf\u0027)"},{"line_number":28,"context_line":"CONF.import_opt(\u0027scheduler_driver\u0027, \u0027nova.scheduler.manager\u0027)"},{"line_number":29,"context_line":"CONF.import_opt(\u0027fake_network\u0027, \u0027nova.network.linux_net\u0027)"},{"line_number":30,"context_line":"CONF.import_opt(\u0027network_size\u0027, \u0027nova.network.manager\u0027)"},{"line_number":31,"context_line":"CONF.import_opt(\u0027num_networks\u0027, \u0027nova.network.manager\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba8a016a_0d308de7","side":"PARENT","line":28,"in_reply_to":"ba8a016a_a2ddea71","updated":"2015-11-23 17:11:18.000000000","message":"Yeah - I went to update it, and saw that it wasn\u0027t used.","commit_id":"855891574144d0c68b2d732d05f7c37fca1b1723"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"99a05be0ec6e81a79bf32068ef9da84e5c292b0e","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":"CONF.import_opt(\u0027use_ipv6\u0027, \u0027nova.netconf\u0027)"},{"line_number":27,"context_line":"CONF.import_opt(\u0027host\u0027, \u0027nova.netconf\u0027)"},{"line_number":28,"context_line":"CONF.import_opt(\u0027scheduler_driver\u0027, \u0027nova.scheduler.manager\u0027)"},{"line_number":29,"context_line":"CONF.import_opt(\u0027fake_network\u0027, \u0027nova.network.linux_net\u0027)"},{"line_number":30,"context_line":"CONF.import_opt(\u0027network_size\u0027, \u0027nova.network.manager\u0027)"},{"line_number":31,"context_line":"CONF.import_opt(\u0027num_networks\u0027, \u0027nova.network.manager\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a8ffd7b_46cff455","side":"PARENT","line":28,"updated":"2015-12-03 11:02:51.000000000","message":"That said, here I think we should still provide the explicit import that way :\n\nCONF.import_opt(\u0027scheduler_driver\u0027, \u0027nova.conf.scheduler\u0027)\n\nuntil all the below imports are done using the nova.conf.CONF object\n\nIf not, we are not sure that the attribute will be correctly loaded, right?","commit_id":"e6408cd380fcdc3be62bd3dc876f2cdd6f97671b"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"6d0a504b0c4a2388cf64b299d1e8d24b3da491a8","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":"CONF.import_opt(\u0027use_ipv6\u0027, \u0027nova.netconf\u0027)"},{"line_number":27,"context_line":"CONF.import_opt(\u0027host\u0027, \u0027nova.netconf\u0027)"},{"line_number":28,"context_line":"CONF.import_opt(\u0027scheduler_driver\u0027, \u0027nova.scheduler.manager\u0027)"},{"line_number":29,"context_line":"CONF.import_opt(\u0027fake_network\u0027, \u0027nova.network.linux_net\u0027)"},{"line_number":30,"context_line":"CONF.import_opt(\u0027network_size\u0027, \u0027nova.network.manager\u0027)"},{"line_number":31,"context_line":"CONF.import_opt(\u0027num_networks\u0027, \u0027nova.network.manager\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a8ffd7b_69019f04","side":"PARENT","line":28,"in_reply_to":"9a8ffd7b_46cff455","updated":"2015-12-03 13:31:25.000000000","message":"The module with the unit test will import the functional module under test. The functional module will import the conf module. The conf module will ensure that those are available in the global CONF object. When the unit tests get executed, it\u0027s already available.","commit_id":"e6408cd380fcdc3be62bd3dc876f2cdd6f97671b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0dfade5bb1e5d8899c9f577e233538ca3c939ba0","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from nova import paths"},{"line_number":23,"context_line":"from nova.tests.unit import utils"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":"CONF.import_opt(\u0027use_ipv6\u0027, \u0027nova.netconf\u0027)"},{"line_number":27,"context_line":"CONF.import_opt(\u0027host\u0027, \u0027nova.netconf\u0027)"},{"line_number":28,"context_line":"CONF.import_opt(\u0027fake_network\u0027, \u0027nova.network.linux_net\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a8ffd7b_ecb11d48","line":25,"updated":"2015-12-03 13:50:38.000000000","message":"I guess we could move this over to the import nova.conf pattern?","commit_id":"5dbdd6ed2bdcb6e52189e824b3526dde109be017"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"27f81eeca7dcc610cff268a185360a601fd82b0d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from nova import paths"},{"line_number":23,"context_line":"from nova.tests.unit import utils"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":"CONF.import_opt(\u0027use_ipv6\u0027, \u0027nova.netconf\u0027)"},{"line_number":27,"context_line":"CONF.import_opt(\u0027host\u0027, \u0027nova.netconf\u0027)"},{"line_number":28,"context_line":"CONF.import_opt(\u0027fake_network\u0027, \u0027nova.network.linux_net\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_a3c19730","line":25,"in_reply_to":"7a740942_5472047e","updated":"2015-12-03 21:47:26.000000000","message":"Right, that sounds a good way to address the change by also using the new way to access the global CONF object even in that file.","commit_id":"5dbdd6ed2bdcb6e52189e824b3526dde109be017"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"cdb289c8342fd11fa1470c3101fc1a39081b1b85","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from nova import paths"},{"line_number":23,"context_line":"from nova.tests.unit import utils"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":"CONF.import_opt(\u0027use_ipv6\u0027, \u0027nova.netconf\u0027)"},{"line_number":27,"context_line":"CONF.import_opt(\u0027host\u0027, \u0027nova.netconf\u0027)"},{"line_number":28,"context_line":"CONF.import_opt(\u0027fake_network\u0027, \u0027nova.network.linux_net\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_5472047e","line":25,"in_reply_to":"9a8ffd7b_ecb11d48","updated":"2015-12-03 15:29:14.000000000","message":"Which means doing:\n\n    import nova.conf\n    CONF \u003d nova.conf.CONF\n\nIt\u0027s more explicit (although I still think not necessary)","commit_id":"5dbdd6ed2bdcb6e52189e824b3526dde109be017"}]}
