)]}'
{"etc/api-paste.ini":[{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"[DEFAULT]"},{"line_number":2,"context_line":"# Path to the extensions.  Note that this can be a colon-separated list of"},{"line_number":3,"context_line":"# paths.  For example:"},{"line_number":4,"context_line":"# api_extensions_path \u003d extensions:/path/to/more/extensions:/even/more/extensions"}],"source_content_type":"text/x-properties","patch_set":10,"id":"AAAAHn%2F%2F88Y%3D","line":1,"updated":"2012-06-05 16:58:56.000000000","message":"I think splitting out api-paste.ini should have been a separate patch after the work to port to cfg - it shouldn\u0027t have been necessary to port to cfg","commit_id":"286b2f736e32f36986e112b42b07d4b48ac1ec6d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"[DEFAULT]"},{"line_number":2,"context_line":"# Path to the extensions.  Note that this can be a colon-separated list of"},{"line_number":3,"context_line":"# paths.  For example:"},{"line_number":4,"context_line":"# api_extensions_path \u003d extensions:/path/to/more/extensions:/even/more/extensions"}],"source_content_type":"text/x-properties","patch_set":10,"id":"AAAAHn%2F%2F8tw%3D","line":1,"in_reply_to":"AAAAHn%2F%2F88Y%3D","updated":"2012-06-05 17:45:32.000000000","message":"Yes, you are correct. This could be done in a separate task. I will move this back into the quantum.conf. All of the modules that I looked a had them in separate files so I just thought that it was cleaner and more in line with the other projects...","commit_id":"286b2f736e32f36986e112b42b07d4b48ac1ec6d"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"unresolved":false,"context_lines":[{"line_number":5,"context_line":"# The __path__ of quantum.extensions is appended to this, so if your"},{"line_number":6,"context_line":"# extensions are in there you don\u0027t need to specify them here"},{"line_number":7,"context_line":"api_extensions_path \u003d"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"[composite:quantum]"},{"line_number":10,"context_line":"use \u003d egg:Paste#urlmap"},{"line_number":11,"context_line":"/: quantumversions"}],"source_content_type":"text/x-properties","patch_set":10,"id":"AAAAHn%2F%2F88Q%3D","line":8,"updated":"2012-06-05 16:58:56.000000000","message":"This should be in quantum.conf, no? e.g. you have:\n\n  cfg.StrOpt(\u0027api_extensions_path\u0027, default\u003d\"\")","commit_id":"286b2f736e32f36986e112b42b07d4b48ac1ec6d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":5,"context_line":"# The __path__ of quantum.extensions is appended to this, so if your"},{"line_number":6,"context_line":"# extensions are in there you don\u0027t need to specify them here"},{"line_number":7,"context_line":"api_extensions_path \u003d"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"[composite:quantum]"},{"line_number":10,"context_line":"use \u003d egg:Paste#urlmap"},{"line_number":11,"context_line":"/: quantumversions"}],"source_content_type":"text/x-properties","patch_set":10,"id":"AAAAHn%2F%2F8uU%3D","line":8,"in_reply_to":"AAAAHn%2F%2F88Q%3D","updated":"2012-06-05 17:45:32.000000000","message":"Originally I had it in the quantum.conf file. The unit tests did not pass until I moved it to the paste file.","commit_id":"286b2f736e32f36986e112b42b07d4b48ac1ec6d"}],"etc/plugins.ini":[{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"[PLUGIN]"},{"line_number":2,"context_line":"# Quantum plugin provider module"},{"line_number":3,"context_line":"provider \u003d quantum.plugins.sample.SamplePlugin.FakePlugin"}],"source_content_type":"text/x-properties","patch_set":10,"id":"AAAAHn%2F%2F88M%3D","side":"PARENT","line":1,"updated":"2012-06-05 16:58:56.000000000","message":"Nice, good to see this file going","commit_id":"1cc89804a3ca97e6cae72e070112011bb3cecb60"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"[PLUGIN]"},{"line_number":2,"context_line":"# Quantum plugin provider module"},{"line_number":3,"context_line":"provider \u003d quantum.plugins.sample.SamplePlugin.FakePlugin"}],"source_content_type":"text/x-properties","patch_set":16,"id":"AAAAIX%2F%2F%2BZ4%3D","side":"PARENT","line":3,"updated":"2012-06-12 16:55:41.000000000","message":"great to see this going away.  Can you file a bug to update the docs for F-2?  Or if you\u0027re feeling ambitious, go ahead and update them.  https://github.com/openstack/openstack-manuals/blob/master/doc/src/docbkx/openstack-network-connectivity-admin/quantum-admin-guide.xml","commit_id":"c0d0e891c000a7f2b8940b0bbf2c01957a33fa14"}],"etc/quantum.conf":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[PLUGIN]"},{"line_number":17,"context_line":"# Quantum plugin provider module"},{"line_number":18,"context_line":"provider \u003d quantum.plugins.sample.SamplePlugin.FakePlugin"}],"source_content_type":"text/plain","patch_set":9,"id":"AAAAHn%2F%2F9Kc%3D","line":18,"updated":"2012-06-05 04:27:29.000000000","message":"I also think this should be in api-paste.ini as routes local config or global config since the plugin provider is initialized by router.","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[PLUGIN]"},{"line_number":17,"context_line":"# Quantum plugin provider module"},{"line_number":18,"context_line":"provider \u003d quantum.plugins.sample.SamplePlugin.FakePlugin"}],"source_content_type":"text/plain","patch_set":9,"id":"AAAAHn%2F%2F9Ds%3D","line":18,"in_reply_to":"AAAAHn%2F%2F9EE%3D","updated":"2012-06-05 08:40:58.000000000","message":"Maybe I do not understand, but the get_plugin calls cls() if no instance is defined - which in turn reads \"plugin_provider \u003d cfg.CONF.PLUGIN.provider\".\nThis is always from the quantum.conf file","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[PLUGIN]"},{"line_number":17,"context_line":"# Quantum plugin provider module"},{"line_number":18,"context_line":"provider \u003d quantum.plugins.sample.SamplePlugin.FakePlugin"}],"source_content_type":"text/plain","patch_set":9,"id":"AAAAHn%2F%2F9EE%3D","line":18,"in_reply_to":"AAAAHn%2F%2F9Gk%3D","updated":"2012-06-05 08:12:41.000000000","message":"In router, we have code:\n plugin \u003d manager.QuantumManager.get_plugin(options)\nrouter can be configured by global and local configs. So I think the Plugin should be in api-paster.ini as router\u0027s local or global config.","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[PLUGIN]"},{"line_number":17,"context_line":"# Quantum plugin provider module"},{"line_number":18,"context_line":"provider \u003d quantum.plugins.sample.SamplePlugin.FakePlugin"}],"source_content_type":"text/plain","patch_set":9,"id":"AAAAHn%2F%2F9Gk%3D","line":18,"in_reply_to":"AAAAHn%2F%2F9Kc%3D","updated":"2012-06-05 07:54:07.000000000","message":"When the quantum service starts the quantum.conf is read into cfg.CONF (via config.parse(sys.argv)).\nIn the Quantum manager the plugin is loaded from the name cfg.CONF.PLUGIN.provider. This class is later used by the routes.\nThus I do not think that this should be in the api-paste.ini. (Hope that this makes sense)","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"unresolved":false,"context_lines":[{"line_number":11,"context_line":"# Port the bind the API server to"},{"line_number":12,"context_line":"bind_port \u003d 9696"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"api_paste_config \u003d api-paste.ini"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[PLUGIN]"},{"line_number":17,"context_line":"# Quantum plugin provider module"}],"source_content_type":"text/plain","patch_set":10,"id":"AAAAHn%2F%2F88A%3D","line":14,"updated":"2012-06-05 16:58:56.000000000","message":"Compare to glance\u0027s approach:\n\n  [paste_deploy]\n  config_file \u003d /etc/quantum/api-paste.ini\n\nSee Ibd7aefe95706fb50e4e353c14eb6dab0f948331f\n\nAgain, I\u0027d do the api-paste.ini split out in a separate patch","commit_id":"286b2f736e32f36986e112b42b07d4b48ac1ec6d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":11,"context_line":"# Port the bind the API server to"},{"line_number":12,"context_line":"bind_port \u003d 9696"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"api_paste_config \u003d api-paste.ini"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[PLUGIN]"},{"line_number":17,"context_line":"# Quantum plugin provider module"}],"source_content_type":"text/plain","patch_set":10,"id":"AAAAHn%2F%2F8to%3D","line":14,"in_reply_to":"AAAAHn%2F%2F88A%3D","updated":"2012-06-05 17:45:32.000000000","message":"ACK","commit_id":"286b2f736e32f36986e112b42b07d4b48ac1ec6d"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"api_paste_config \u003d api-paste.ini"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[PLUGIN]"},{"line_number":17,"context_line":"# Quantum plugin provider module"},{"line_number":18,"context_line":"provider \u003d quantum.plugins.sample.SamplePlugin.FakePlugin"}],"source_content_type":"text/plain","patch_set":10,"id":"AAAAHn%2F%2F874%3D","line":16,"updated":"2012-06-05 16:58:56.000000000","message":"Would prefer just \"plugin\" to \"PLUGIN\"\n\nAlso, why not just:\n\n  [DEFAULT]\n  plugin \u003d quantum.plugins.sample.SamplePlugin.FakePlugin\n\n?","commit_id":"286b2f736e32f36986e112b42b07d4b48ac1ec6d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"api_paste_config \u003d api-paste.ini"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[PLUGIN]"},{"line_number":17,"context_line":"# Quantum plugin provider module"},{"line_number":18,"context_line":"provider \u003d quantum.plugins.sample.SamplePlugin.FakePlugin"}],"source_content_type":"text/plain","patch_set":10,"id":"AAAAHn%2F%2F8tk%3D","line":16,"in_reply_to":"AAAAHn%2F%2F874%3D","updated":"2012-06-05 17:45:32.000000000","message":"I was just trying to be consistent with the existing names and sections.","commit_id":"286b2f736e32f36986e112b42b07d4b48ac1ec6d"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":21,"context_line":"[plugin]"},{"line_number":22,"context_line":"# Quantum plugin provider module"},{"line_number":23,"context_line":"provider \u003d quantum.plugins.sample.SamplePlugin.FakePlugin"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"[composite:quantum]"},{"line_number":26,"context_line":"use \u003d egg:Paste#urlmap"},{"line_number":27,"context_line":"/: quantumversions"}],"source_content_type":"text/plain","patch_set":22,"id":"AAAAIn%2F%2F%2FwI%3D","line":24,"updated":"2012-06-14 11:25:16.000000000","message":"This provider is for v1.x, can we move this option to be under a certain app so that it is router related. For example:\n[app:quantumapiapp_v2_0]\nplugin_provider \u003d quantum.db.db_base_plugin_v2.QuantumDbPluginV2\npaste.app_factory \u003d quantum.api.v2.router:APIRouter.factory\n[app:quantumapiapp_v1_1]\nplugin_provider \u003d quantum.plugins.sample.SamplePlugin.FakePlugin\npaste.app_factory \u003d quantum.api:APIRouterV11.factory\n\nAlso, how does our provider get its own configuration file?","commit_id":"785e3796ab5feef78e1ad499d369556c393f4e8c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":21,"context_line":"[plugin]"},{"line_number":22,"context_line":"# Quantum plugin provider module"},{"line_number":23,"context_line":"provider \u003d quantum.plugins.sample.SamplePlugin.FakePlugin"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"[composite:quantum]"},{"line_number":26,"context_line":"use \u003d egg:Paste#urlmap"},{"line_number":27,"context_line":"/: quantumversions"}],"source_content_type":"text/plain","patch_set":22,"id":"AAAAIn%2F%2F%2Fkg%3D","line":24,"in_reply_to":"AAAAIn%2F%2F%2FmU%3D","updated":"2012-06-14 16:30:20.000000000","message":"I am not familiar with any plans to support more than one plugin. By mistake the above lines were not removed. This has opened a whole new can or worms :)","commit_id":"785e3796ab5feef78e1ad499d369556c393f4e8c"},{"author":{"_account_id":2350,"name":"Willian Molinari","email":"pothix@pothix.com","username":"pothix"},"unresolved":false,"context_lines":[{"line_number":21,"context_line":"[plugin]"},{"line_number":22,"context_line":"# Quantum plugin provider module"},{"line_number":23,"context_line":"provider \u003d quantum.plugins.sample.SamplePlugin.FakePlugin"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"[composite:quantum]"},{"line_number":26,"context_line":"use \u003d egg:Paste#urlmap"},{"line_number":27,"context_line":"/: quantumversions"}],"source_content_type":"text/plain","patch_set":22,"id":"AAAAIn%2F%2F%2FmU%3D","line":24,"in_reply_to":"AAAAIn%2F%2F%2Fvk%3D","updated":"2012-06-14 16:11:39.000000000","message":"Is there any plans to support multiple plugins? I don\u0027t think so. Anyway, we really need to change the name \"plugin\" to something like \"backend\" but we need other discussion for it.","commit_id":"785e3796ab5feef78e1ad499d369556c393f4e8c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":21,"context_line":"[plugin]"},{"line_number":22,"context_line":"# Quantum plugin provider module"},{"line_number":23,"context_line":"provider \u003d quantum.plugins.sample.SamplePlugin.FakePlugin"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"[composite:quantum]"},{"line_number":26,"context_line":"use \u003d egg:Paste#urlmap"},{"line_number":27,"context_line":"/: quantumversions"}],"source_content_type":"text/plain","patch_set":22,"id":"AAAAIn%2F%2F%2Fvk%3D","line":24,"in_reply_to":"AAAAIn%2F%2F%2FwI%3D","updated":"2012-06-14 11:43:53.000000000","message":"This was removed and is now core_plugin.\nThis plugin should support v2. Yes, this is broken at the moment\nThe issue of supporting multiple plugins should be discussed. This is not part of the scope of this task","commit_id":"785e3796ab5feef78e1ad499d369556c393f4e8c"}],"etc/quantum/plugins/ryu/ryu.ini":[{"author":{"_account_id":704,"name":"Edgar Magana","email":"emagana@gmail.com","username":"emagana"},"unresolved":false,"context_lines":[{"line_number":11,"context_line":"# openflow_rest_api \u003d \u003chost IP address of ofp rest api service\u003e:\u003cport: 8080\u003e"},{"line_number":12,"context_line":"openflow_controller \u003d 127.0.0.1:6633"},{"line_number":13,"context_line":"openflow_rest_api \u003d 127.0.0.1:8080"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[AGENT]"},{"line_number":16,"context_line":"# Change to \"sudo quantum-rootwrap\" to limit commands that can be run"},{"line_number":17,"context_line":"# as root."}],"source_content_type":"text/x-properties","patch_set":15,"id":"AAAAIX%2F%2F%2BjE%3D","line":14,"updated":"2012-06-12 06:35:09.000000000","message":"I would prefer to see the last two lines commented out instead of the first ones","commit_id":"37604ff83c32b1f3c32660f1cd0609631a2a5395"}],"quantum/common/config.py":[{"author":{"_account_id":385,"name":"Jason Kölker","email":"jason@koelker.net","username":"jason-koelker"},"change_message_id":"5b9a5efc0913cc94c30ec712dcc309bef27ed24c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from paste import deploy"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from quantum.common import flags"},{"line_number":31,"context_line":"from quantum.common import logging"},{"line_number":32,"context_line":"from quantum.openstack.common import cfg"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAHn%2F%2F90s%3D","line":31,"updated":"2012-06-04 14:37:01.000000000","message":"I\u0027d rather we not replicate the stdlibrary. Could we rename it logutils and then use the proper logging module as imported above?","commit_id":"41c34260992255be3edeca43f79b7df1e41a8737"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"02e959e1c5ab02b3919a43eb620c4adebbe3b5e2","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from paste import deploy"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from quantum.common import flags"},{"line_number":31,"context_line":"from quantum.common import logging"},{"line_number":32,"context_line":"from quantum.openstack.common import cfg"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAHn%2F%2F9z4%3D","line":31,"in_reply_to":"AAAAHn%2F%2F90s%3D","updated":"2012-06-04 15:20:46.000000000","message":"Done","commit_id":"41c34260992255be3edeca43f79b7df1e41a8737"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    config_path \u003d paste_config_file"},{"line_number":174,"context_line":"    if not os.path.exists(config_path):"},{"line_number":175,"context_line":"        config_path \u003d cfg.CONF.find_file(config_path)"},{"line_number":176,"context_line":"    LOG.info(\"Config paste file: %s\", config_path)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHn%2F%2F9NI%3D","line":175,"updated":"2012-06-05 02:07:13.000000000","message":"I think we should find paste_config_file relative to quantum.conf file. I.e, if the paste_config_file is relative, we should find it relative to quantum.conf. If it is absolute path, we just get that file.  It is more clearer.","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    config_path \u003d paste_config_file"},{"line_number":174,"context_line":"    if not os.path.exists(config_path):"},{"line_number":175,"context_line":"        config_path \u003d cfg.CONF.find_file(config_path)"},{"line_number":176,"context_line":"    LOG.info(\"Config paste file: %s\", config_path)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHn%2F%2F9Do%3D","line":175,"in_reply_to":"AAAAHn%2F%2F9EA%3D","updated":"2012-06-05 08:40:58.000000000","message":"The cfg code finds the quantum.conf file. I am not sure that I understand. I followed the implementations from nova for this.","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    config_path \u003d paste_config_file"},{"line_number":174,"context_line":"    if not os.path.exists(config_path):"},{"line_number":175,"context_line":"        config_path \u003d cfg.CONF.find_file(config_path)"},{"line_number":176,"context_line":"    LOG.info(\"Config paste file: %s\", config_path)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHn%2F%2F9EA%3D","line":175,"in_reply_to":"AAAAHn%2F%2F9Gg%3D","updated":"2012-06-05 08:12:41.000000000","message":"to find quantum.conf, we can use cfg.CONF.find_file(config_path), but to find the accompanying api-paste.ini, I think we should adopt relative to quantum.conf way or absolute way.","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    config_path \u003d paste_config_file"},{"line_number":174,"context_line":"    if not os.path.exists(config_path):"},{"line_number":175,"context_line":"        config_path \u003d cfg.CONF.find_file(config_path)"},{"line_number":176,"context_line":"    LOG.info(\"Config paste file: %s\", config_path)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHn%2F%2F9Gg%3D","line":175,"in_reply_to":"AAAAHn%2F%2F9NI%3D","updated":"2012-06-05 07:54:07.000000000","message":"From what I understand the cfg.CONF.find_file gets the path according to what you have described (this is what is none with nova)","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    try:"},{"line_number":179,"context_line":"        conf \u003d deploy.appconfig(\"config:%s\" % config_path, name\u003dapp_name)"},{"line_number":180,"context_line":"    except Exception, e:"},{"line_number":181,"context_line":"        raise RuntimeError(\"Error trying to load config %s: %s\""},{"line_number":182,"context_line":"                           % (config_path, e))"},{"line_number":183,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHn%2F%2F9NU%3D","line":180,"updated":"2012-06-05 02:07:13.000000000","message":"Exception as e?","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    try:"},{"line_number":179,"context_line":"        conf \u003d deploy.appconfig(\"config:%s\" % config_path, name\u003dapp_name)"},{"line_number":180,"context_line":"    except Exception, e:"},{"line_number":181,"context_line":"        raise RuntimeError(\"Error trying to load config %s: %s\""},{"line_number":182,"context_line":"                           % (config_path, e))"},{"line_number":183,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHn%2F%2F9Gc%3D","line":180,"in_reply_to":"AAAAHn%2F%2F9NU%3D","updated":"2012-06-05 07:54:07.000000000","message":"Done","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"unresolved":false,"context_lines":[{"line_number":36,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def _find_facility_from_flags():"},{"line_number":40,"context_line":"    facility_names \u003d logging.handlers.SysLogHandler.facility_names"},{"line_number":41,"context_line":"    facility \u003d getattr(logging.handlers.SysLogHandler,"},{"line_number":42,"context_line":"                       cfg.CONF.syslog_log_facility,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAHn%2F%2F87k%3D","line":39,"updated":"2012-06-05 16:58:56.000000000","message":"The config.py code was originally copied from glance. It would be good to go back and compare to a more recent version of glance\u0027s code now that glance is also using cfg\n\nBest to look at the code in I222d3c58308bc2f504cd802c0c8405d3baa2e49a","commit_id":"286b2f736e32f36986e112b42b07d4b48ac1ec6d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":36,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def _find_facility_from_flags():"},{"line_number":40,"context_line":"    facility_names \u003d logging.handlers.SysLogHandler.facility_names"},{"line_number":41,"context_line":"    facility \u003d getattr(logging.handlers.SysLogHandler,"},{"line_number":42,"context_line":"                       cfg.CONF.syslog_log_facility,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAHn%2F%2F8tY%3D","line":39,"in_reply_to":"AAAAHn%2F%2F87k%3D","updated":"2012-06-05 17:45:32.000000000","message":"I took this form the latest nova code. \nPersonally I think that the best thing would be to have openstack common have logging support - this is common for all modules. \nI\u0027ll check out the task - thanks","commit_id":"286b2f736e32f36986e112b42b07d4b48ac1ec6d"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"unresolved":false,"context_lines":[{"line_number":176,"context_line":"    LOG.info(\"Config paste file: %s\", config_path)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    try:"},{"line_number":179,"context_line":"        conf \u003d deploy.appconfig(\"config:%s\" % config_path, name\u003dapp_name)"},{"line_number":180,"context_line":"    except Exception as e:"},{"line_number":181,"context_line":"        raise RuntimeError(\"Error trying to load config %s: %s\""},{"line_number":182,"context_line":"                           % (config_path, e))"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAHn%2F%2F87g%3D","line":179,"updated":"2012-06-05 16:58:56.000000000","message":"Why do we still need this? I would have thought any options that we used to read using pastedeploy we\u0027d now read using cfg","commit_id":"286b2f736e32f36986e112b42b07d4b48ac1ec6d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":176,"context_line":"    LOG.info(\"Config paste file: %s\", config_path)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    try:"},{"line_number":179,"context_line":"        conf \u003d deploy.appconfig(\"config:%s\" % config_path, name\u003dapp_name)"},{"line_number":180,"context_line":"    except Exception as e:"},{"line_number":181,"context_line":"        raise RuntimeError(\"Error trying to load config %s: %s\""},{"line_number":182,"context_line":"                           % (config_path, e))"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAHn%2F%2F8tI%3D","line":179,"in_reply_to":"AAAAHn%2F%2F87g%3D","updated":"2012-06-05 17:45:32.000000000","message":"I need to look into this in a bit more detail.\n1. I am going to be moving the paste config back into the quantum.conf.\n2. I think, and may be wrong, that if the past information is in configuration file then this needs to be done.","commit_id":"286b2f736e32f36986e112b42b07d4b48ac1ec6d"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"unresolved":false,"context_lines":[{"line_number":207,"context_line":"def parse(args):"},{"line_number":208,"context_line":"    cfg.CONF(args\u003dargs, project\u003d\u0027quantum\u0027)"},{"line_number":209,"context_line":"    cfg.CONF.register_opts(bind_opts)"},{"line_number":210,"context_line":"    cfg.CONF.register_opts(plugin_opts, \"PLUGIN\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAHn%2F%2F87Y%3D","line":210,"updated":"2012-06-05 16:58:56.000000000","message":"I\u0027d prefer this stuff to go to the top of the file as:\n\n  CONF \u003d cfg.CONF\n\n  bind_opts \u003d [\n      ...\n      ]\n  plugin_opts \u003d [\n      ...\n      ]\n\n  CONF.register_opts(bind_opts)\n  CONF.register_opts(plugin_opts)\n\n  def parse(args):\n      return CONF(args\u003dargs, project\u003d\u0027quantum\u0027)\n\nThat\u0027s the pattern other projects are using","commit_id":"286b2f736e32f36986e112b42b07d4b48ac1ec6d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":207,"context_line":"def parse(args):"},{"line_number":208,"context_line":"    cfg.CONF(args\u003dargs, project\u003d\u0027quantum\u0027)"},{"line_number":209,"context_line":"    cfg.CONF.register_opts(bind_opts)"},{"line_number":210,"context_line":"    cfg.CONF.register_opts(plugin_opts, \"PLUGIN\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAHn%2F%2F8tE%3D","line":210,"in_reply_to":"AAAAHn%2F%2F87Y%3D","updated":"2012-06-05 17:45:32.000000000","message":"OK. Will do","commit_id":"286b2f736e32f36986e112b42b07d4b48ac1ec6d"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"bind_opts \u003d ["},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027bind_host\u0027, default\u003d\u00270.0.0.0\u0027),"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAHn%2F%2F8WA%3D","line":36,"updated":"2012-06-06 14:33:18.000000000","message":"This commit really needs to get rid of the FLAGS variabl and probably the flags module\n\ncfg is supposed to replace flags","commit_id":"a54fa5bb45693314577eae00a6155fc1256033bf"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"unresolved":false,"context_lines":[{"line_number":45,"context_line":"    cfg.StrOpt(\u0027provider\u0027,"},{"line_number":46,"context_line":"               default\u003d\u0027quantum.plugins.sample.SamplePlugin.FakePlugin\u0027),"},{"line_number":47,"context_line":"]"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"def parse(args):"},{"line_number":51,"context_line":"    cfg.CONF(args\u003dargs, project\u003d\u0027quantum\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAHn%2F%2F8V8%3D","line":48,"updated":"2012-06-06 14:33:18.000000000","message":"I\u0027d register the options at module scope\n\n  CONF \u003d cfg.CONF\n\n  CONF.register_opts(bind_opts)\n  CONF.register_opts(plugin_opts, \u0027plugin\u0027)\n\n\n  def parse(args):\n      CONF(args\u003dargs, project\u003d\u0027quantum\u0027)","commit_id":"a54fa5bb45693314577eae00a6155fc1256033bf"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"unresolved":false,"context_lines":[{"line_number":175,"context_line":"    LOG.info(\"Config paste file: %s\", config_path)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    try:"},{"line_number":178,"context_line":"        conf \u003d deploy.appconfig(\"config:%s\" % config_path, name\u003dapp_name)"},{"line_number":179,"context_line":"    except Exception as e:"},{"line_number":180,"context_line":"        raise RuntimeError(\"Error trying to load config %s: %s\""},{"line_number":181,"context_line":"                           % (config_path, e))"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAHn%2F%2F8Vs%3D","line":178,"updated":"2012-06-06 14:33:18.000000000","message":"this appconfig thing shouldn\u0027t be needed\n\nif it\u0027s still needed, it\u0027s because something somewhere is using the dict returned to look up a config value and should be changed from\n\n  conf[\u0027foo\u0027]\n\nto\n\n  CONF.foo\n\nit looks like its this code is the last remaining user:\n\n  config.get(\u0027api_extensions_path\u0027, \u0027\u0027)\n\nwhich would explain why you needed to leave that option in api-paste.ini\n\nIMHO, you should just convert it over to cfg","commit_id":"a54fa5bb45693314577eae00a6155fc1256033bf"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":40,"context_line":"]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"plugin_opts \u003d ["},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027provider\u0027,"},{"line_number":44,"context_line":"               default\u003d\u0027quantum.plugins.sample.SamplePlugin.FakePlugin\u0027),"},{"line_number":45,"context_line":"]"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAIX%2F%2F%2BZo%3D","line":43,"updated":"2012-06-12 16:55:41.000000000","message":"i\u0027ve always thought \u0027provider\u0027 was a bad name, and since we\u0027re forcing all of the config to change, I wonder if now is a good time to fix this. maybe something like \"core_plugin\" or \"core_plugin_provider\"?  I think the future we will likely allow quantum to load additional \"non-core\" APIs (e.g., load-balancing) that may have their own plugins.\n\nI could go either way, but just thought I\u0027d mention it.","commit_id":"bd4ab25eb33dc9e19bc5deaec980e8a5689c94d9"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":40,"context_line":"]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"plugin_opts \u003d ["},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027provider\u0027,"},{"line_number":44,"context_line":"               default\u003d\u0027quantum.plugins.sample.SamplePlugin.FakePlugin\u0027),"},{"line_number":45,"context_line":"]"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAIX%2F%2F%2BXA%3D","line":43,"in_reply_to":"AAAAIX%2F%2F%2BZo%3D","updated":"2012-06-12 17:24:14.000000000","message":"Done","commit_id":"bd4ab25eb33dc9e19bc5deaec980e8a5689c94d9"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":109,"context_line":"    config_path \u003d config_file"},{"line_number":110,"context_line":"    if not os.path.exists(config_path):"},{"line_number":111,"context_line":"        config_path \u003d cfg.CONF.find_file(config_path)"},{"line_number":112,"context_line":"    LOG.info(\"Config paste file: %s\", config_path)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    try:"},{"line_number":115,"context_line":"        app \u003d deploy.loadapp(\"config:%s\" % config_path, name\u003dapp_name)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAIX%2F%2F%2BAo%3D","line":112,"updated":"2012-06-13 09:10:05.000000000","message":"we must make sure the paste file is in absolute path mode:\nconfig_path \u003d os.path.abspath(config_path)\n?","commit_id":"b27b3e447587c9d7ddaf30fd3fdb4e6fe821619e"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":109,"context_line":"    config_path \u003d config_file"},{"line_number":110,"context_line":"    if not os.path.exists(config_path):"},{"line_number":111,"context_line":"        config_path \u003d cfg.CONF.find_file(config_path)"},{"line_number":112,"context_line":"    LOG.info(\"Config paste file: %s\", config_path)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    try:"},{"line_number":115,"context_line":"        app \u003d deploy.loadapp(\"config:%s\" % config_path, name\u003dapp_name)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAIX%2F%2F9%2B8%3D","line":112,"in_reply_to":"AAAAIX%2F%2F%2BAM%3D","updated":"2012-06-13 11:55:35.000000000","message":"Yes, even with that way, the config_path must be absolute path","commit_id":"b27b3e447587c9d7ddaf30fd3fdb4e6fe821619e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":109,"context_line":"    config_path \u003d config_file"},{"line_number":110,"context_line":"    if not os.path.exists(config_path):"},{"line_number":111,"context_line":"        config_path \u003d cfg.CONF.find_file(config_path)"},{"line_number":112,"context_line":"    LOG.info(\"Config paste file: %s\", config_path)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    try:"},{"line_number":115,"context_line":"        app \u003d deploy.loadapp(\"config:%s\" % config_path, name\u003dapp_name)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAIX%2F%2F%2BAM%3D","line":112,"in_reply_to":"AAAAIX%2F%2F%2BAo%3D","updated":"2012-06-13 11:25:24.000000000","message":"At the moment the paste file is part of the quantum configuration file. Once this task is completed and approved I would like to move the paste file out of the configuration file into a seperate file. \nI\u0027d like to follow the glance implementation - the quantum configuration file will contain a path to the paste configuration file. If not then it will be done by checking all of the default configuration directories...","commit_id":"b27b3e447587c9d7ddaf30fd3fdb4e6fe821619e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":109,"context_line":"    config_path \u003d config_file"},{"line_number":110,"context_line":"    if not os.path.exists(config_path):"},{"line_number":111,"context_line":"        config_path \u003d cfg.CONF.find_file(config_path)"},{"line_number":112,"context_line":"    LOG.info(\"Config paste file: %s\", config_path)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    try:"},{"line_number":115,"context_line":"        app \u003d deploy.loadapp(\"config:%s\" % config_path, name\u003dapp_name)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAIX%2F%2F994%3D","line":112,"in_reply_to":"AAAAIX%2F%2F9%2B8%3D","updated":"2012-06-13 12:08:50.000000000","message":"I am not exactly sure that I understand. The configration file passed to the method is \"quantum.conf\". The full path to the file needs to be passed to the paste app. The code below appends the full path.\nWhat did I miss?\nif not os.path.exists(config_path):\n        config_path \u003d cfg.CONF.find_file(config_path)","commit_id":"b27b3e447587c9d7ddaf30fd3fdb4e6fe821619e"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":109,"context_line":"    config_path \u003d config_file"},{"line_number":110,"context_line":"    if not os.path.exists(config_path):"},{"line_number":111,"context_line":"        config_path \u003d cfg.CONF.find_file(config_path)"},{"line_number":112,"context_line":"    LOG.info(\"Config paste file: %s\", config_path)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    try:"},{"line_number":115,"context_line":"        app \u003d deploy.loadapp(\"config:%s\" % config_path, name\u003dapp_name)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAIX%2F%2F9%2Bo%3D","line":112,"updated":"2012-06-13 11:58:13.000000000","message":"Hi\nseems the relative path here will fail the deploy.loadapp, so please fix it before we get it in.","commit_id":"dd4eb184b8439dd757f6e72484454ff1c4281c36"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    cfg.IntOpt(\u0027bind_port\u0027, default\u003d9696),"},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027api_extensions_path\u0027, default\u003d\"\"),"},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027core_plugin\u0027,"},{"line_number":40,"context_line":"               default\u003d\u0027quantum.plugins.sample.SamplePlugin.FakePlugin\u0027),"},{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"# Register the configuration options"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAIn%2F%2F%2FwA%3D","line":40,"updated":"2012-06-14 11:25:16.000000000","message":"I cannot see the core_plugin under etc/quantum.conf. Instead I see:\n[plugin]\n# Quantum plugin provider module\nprovider \u003d quantum.plugins.sample.SamplePlugin.FakePlugin","commit_id":"785e3796ab5feef78e1ad499d369556c393f4e8c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":37,"context_line":"    cfg.IntOpt(\u0027bind_port\u0027, default\u003d9696),"},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027api_extensions_path\u0027, default\u003d\"\"),"},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027core_plugin\u0027,"},{"line_number":40,"context_line":"               default\u003d\u0027quantum.plugins.sample.SamplePlugin.FakePlugin\u0027),"},{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"# Register the configuration options"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAIn%2F%2F%2Fvg%3D","line":40,"in_reply_to":"AAAAIn%2F%2F%2FwA%3D","updated":"2012-06-14 11:43:53.000000000","message":"Done\n\nThe magic of this is that now it does not need to be defined int he configuration file - this provides the default.","commit_id":"785e3796ab5feef78e1ad499d369556c393f4e8c"}],"quantum/common/logutils.py":[{"author":{"_account_id":385,"name":"Jason Kölker","email":"jason@koelker.net","username":"jason-koelker"},"unresolved":false,"context_lines":[{"line_number":58,"context_line":"# handlers"},{"line_number":59,"context_line":"StreamHandler \u003d logging.StreamHandler"},{"line_number":60,"context_line":"WatchedFileHandler \u003d WatchedFileHandler"},{"line_number":61,"context_line":"SysLogHandler \u003d SysLogHandler"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"def log_debug(f):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAHn%2F%2F9yc%3D","line":61,"updated":"2012-06-04 15:25:27.000000000","message":"Sorry, what i meant earlier is everything above here should not be here. It belongs in the stdlib and should only be imported from there.","commit_id":"af20ef07a43e7bd006f199ee008c74593c6bac39"}],"quantum/common/utils.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":115,"context_line":"# TODO(sirp): when/if utils is extracted to common library, we should remove"},{"line_number":116,"context_line":"# the argument\u0027s default."},{"line_number":117,"context_line":"def default_flagfile(filename\u003d\u0027quantum.conf\u0027):"},{"line_number":118,"context_line":"    for arg in sys.argv:"},{"line_number":119,"context_line":"        if arg.find(\u0027flagfile\u0027) !\u003d -1:"},{"line_number":120,"context_line":"            break"},{"line_number":121,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAIX%2F%2F%2BZA%3D","line":118,"updated":"2012-06-12 16:55:41.000000000","message":"is this function actually used?  It seems like it no longer is (if it every was) used to lookup config files.  \n\n(that said, there\u0027s seems to be a fair amount of unused junk here which will probably have to be handled by an different patch)","commit_id":"bd4ab25eb33dc9e19bc5deaec980e8a5689c94d9"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":115,"context_line":"# TODO(sirp): when/if utils is extracted to common library, we should remove"},{"line_number":116,"context_line":"# the argument\u0027s default."},{"line_number":117,"context_line":"def default_flagfile(filename\u003d\u0027quantum.conf\u0027):"},{"line_number":118,"context_line":"    for arg in sys.argv:"},{"line_number":119,"context_line":"        if arg.find(\u0027flagfile\u0027) !\u003d -1:"},{"line_number":120,"context_line":"            break"},{"line_number":121,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAIX%2F%2F%2BWo%3D","line":118,"in_reply_to":"AAAAIX%2F%2F%2BZA%3D","updated":"2012-06-12 17:24:14.000000000","message":"Done","commit_id":"bd4ab25eb33dc9e19bc5deaec980e8a5689c94d9"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":200,"context_line":"        return getattr(backend, key)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"def find_config_file(options, args, config_file\u003d\u0027quantum.conf\u0027):"},{"line_number":204,"context_line":"    \"\"\""},{"line_number":205,"context_line":"    Return the first config file found."},{"line_number":206,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAIX%2F%2F%2BY8%3D","line":203,"updated":"2012-06-12 16:55:41.000000000","message":"I\u0027m a bit confused here.  Within Nova, their copy of  openstack/common/cfg.py has a definition for \"find_config_files\", but the quantum copy of openstack/common/cfg.py does not.  Any idea what is going on here? \n\nFor Quantum, we have extra logic in the \"find_confg_files\" method to handle plugins.  I thought I saw an email that talked about folding plugin config into the main quantum.conf as well (which I think makes sense).  Perhaps that\u0027s a separate patch, but that might let us use an openstack.common version of the function.\n\nAlso, I believe the quantum verison of the file has slightly different logic than most other openstack services, in that we look for config files relative to the cwd where quantum-server was invoked, which can be really confusing.  I\u0027d prefer to move away from this to a more standard approach.","commit_id":"bd4ab25eb33dc9e19bc5deaec980e8a5689c94d9"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        return getattr(backend, key)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"def find_config_file(options, args, config_file\u003d\u0027quantum.conf\u0027):"},{"line_number":190,"context_line":"    \"\"\""},{"line_number":191,"context_line":"    Return the first config file found."},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAIn%2F%2F%2Bck%3D","line":189,"updated":"2012-06-17 23:06:10.000000000","message":"I suggest to use the same searching dirs as sever and paste deploy\u0027s quantum.conf. In addition, no one plugin use the quantum.conf as config file, so the default file name should be removed.","commit_id":"06615f6167c1e24fd99e50406f96fcb286115acb"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        return getattr(backend, key)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"def find_config_file(options, args, config_file\u003d\u0027quantum.conf\u0027):"},{"line_number":191,"context_line":"    \"\"\""},{"line_number":192,"context_line":"    Return the first config file found."},{"line_number":193,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAIn%2F%2F%2BRU%3D","line":190,"updated":"2012-06-18 13:50:37.000000000","message":"the default file \u0027quantum.conf\u0027 is not used by any plugin, so we can remove the default file.\nAnd any reference of this function has none as args, so we can remove args","commit_id":"6bd4d36bc0af5d6dbc2ba6b91f770ae06aee2b75"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":187,"context_line":"        return getattr(backend, key)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"def find_config_file(options, args, config_file\u003d\u0027quantum.conf\u0027):"},{"line_number":191,"context_line":"    \"\"\""},{"line_number":192,"context_line":"    Return the first config file found."},{"line_number":193,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAIn%2F%2F%2BQo%3D","line":190,"in_reply_to":"AAAAIn%2F%2F%2BRU%3D","updated":"2012-06-18 15:15:45.000000000","message":"Done","commit_id":"6bd4d36bc0af5d6dbc2ba6b91f770ae06aee2b75"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":199,"context_line":"    \"\"\""},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    fix_path \u003d lambda p: os.path.abspath(os.path.expanduser(p))"},{"line_number":202,"context_line":"    if options.get(\u0027config_file\u0027):"},{"line_number":203,"context_line":"        if os.path.exists(options[\u0027config_file\u0027]):"},{"line_number":204,"context_line":"            return fix_path(options[\u0027config_file\u0027])"},{"line_number":205,"context_line":"    elif args:"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAIn%2F%2F%2BRQ%3D","line":202,"updated":"2012-06-18 13:50:37.000000000","message":"Do we have any reference passing in the config_file in options? If not remove this logic.","commit_id":"6bd4d36bc0af5d6dbc2ba6b91f770ae06aee2b75"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":199,"context_line":"    \"\"\""},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    fix_path \u003d lambda p: os.path.abspath(os.path.expanduser(p))"},{"line_number":202,"context_line":"    if options.get(\u0027config_file\u0027):"},{"line_number":203,"context_line":"        if os.path.exists(options[\u0027config_file\u0027]):"},{"line_number":204,"context_line":"            return fix_path(options[\u0027config_file\u0027])"},{"line_number":205,"context_line":"    elif args:"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAIn%2F%2F%2BQk%3D","line":202,"in_reply_to":"AAAAIn%2F%2F%2BRQ%3D","updated":"2012-06-18 15:15:45.000000000","message":"Done","commit_id":"6bd4d36bc0af5d6dbc2ba6b91f770ae06aee2b75"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            return fix_path(options[\u0027config_file\u0027])"},{"line_number":205,"context_line":"    elif args:"},{"line_number":206,"context_line":"        if os.path.exists(args[0]):"},{"line_number":207,"context_line":"            return fix_path(args[0])"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    dir_to_common \u003d os.path.dirname(os.path.abspath(__file__))"},{"line_number":210,"context_line":"    root \u003d os.path.join(dir_to_common, \u0027..\u0027, \u0027..\u0027, \u0027..\u0027, \u0027..\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAIn%2F%2F%2BRM%3D","line":207,"updated":"2012-06-18 13:50:37.000000000","message":"It seems we have no reference passing the non none args, if it is right, we can remove the logic here.","commit_id":"6bd4d36bc0af5d6dbc2ba6b91f770ae06aee2b75"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":204,"context_line":"            return fix_path(options[\u0027config_file\u0027])"},{"line_number":205,"context_line":"    elif args:"},{"line_number":206,"context_line":"        if os.path.exists(args[0]):"},{"line_number":207,"context_line":"            return fix_path(args[0])"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    dir_to_common \u003d os.path.dirname(os.path.abspath(__file__))"},{"line_number":210,"context_line":"    root \u003d os.path.join(dir_to_common, \u0027..\u0027, \u0027..\u0027, \u0027..\u0027, \u0027..\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAIn%2F%2F%2BQM%3D","line":207,"in_reply_to":"AAAAIn%2F%2F%2BRM%3D","updated":"2012-06-18 15:15:45.000000000","message":"Done","commit_id":"6bd4d36bc0af5d6dbc2ba6b91f770ae06aee2b75"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            return fix_path(args[0])"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    dir_to_common \u003d os.path.dirname(os.path.abspath(__file__))"},{"line_number":210,"context_line":"    root \u003d os.path.join(dir_to_common, \u0027..\u0027, \u0027..\u0027, \u0027..\u0027, \u0027..\u0027)"},{"line_number":211,"context_line":"    # Handle standard directory search for the config file"},{"line_number":212,"context_line":"    config_file_dirs \u003d cfg._get_config_dirs(\u0027quantum\u0027)"},{"line_number":213,"context_line":"    if \u0027plugin\u0027 in options:"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAIn%2F%2F%2BRE%3D","line":210,"updated":"2012-06-18 13:50:37.000000000","message":"I think, we should remove the whole root logic here, it is looking for plugin conf file from code dir. We should look for plugin config file from plugins/{pluginname}/{pluginname}.ini of cfg.get-config-dirs(), also with the dir of current quantum server\u0027s config file at the beginning.","commit_id":"6bd4d36bc0af5d6dbc2ba6b91f770ae06aee2b75"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":207,"context_line":"            return fix_path(args[0])"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    dir_to_common \u003d os.path.dirname(os.path.abspath(__file__))"},{"line_number":210,"context_line":"    root \u003d os.path.join(dir_to_common, \u0027..\u0027, \u0027..\u0027, \u0027..\u0027, \u0027..\u0027)"},{"line_number":211,"context_line":"    # Handle standard directory search for the config file"},{"line_number":212,"context_line":"    config_file_dirs \u003d cfg._get_config_dirs(\u0027quantum\u0027)"},{"line_number":213,"context_line":"    if \u0027plugin\u0027 in options:"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAIn%2F%2F%2BQI%3D","line":210,"in_reply_to":"AAAAIn%2F%2F%2BRE%3D","updated":"2012-06-18 15:15:45.000000000","message":"Done","commit_id":"6bd4d36bc0af5d6dbc2ba6b91f770ae06aee2b75"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        plugins \u003d [fix_path(os.path.join(root, \u0027plugins\u0027, p, \u0027etc\u0027))"},{"line_number":221,"context_line":"                   for p in os.listdir(os.path.join(root, \u0027plugins\u0027))]"},{"line_number":222,"context_line":"        plugins \u003d [p for p in plugins if os.path.isdir(p)]"},{"line_number":223,"context_line":"        config_file_dirs.extend(plugins)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    for cfg_dir in config_file_dirs:"},{"line_number":226,"context_line":"        cfg_file \u003d os.path.join(cfg_dir, config_file)"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAIn%2F%2F%2BQ8%3D","line":223,"updated":"2012-06-18 13:50:37.000000000","message":"root logic can be remove","commit_id":"6bd4d36bc0af5d6dbc2ba6b91f770ae06aee2b75"}],"quantum/openstack/common/cfg.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":930,"context_line":"        self.usage \u003d usage"},{"line_number":931,"context_line":"        self.default_config_files \u003d default_config_files"},{"line_number":932,"context_line":""},{"line_number":933,"context_line":"    def __clear_cache(f):"},{"line_number":934,"context_line":"        @functools.wraps(f)"},{"line_number":935,"context_line":"        def __inner(self, *args, **kwargs):"},{"line_number":936,"context_line":"            if kwargs.pop(\u0027clear_cache\u0027, True):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHn%2F%2F9NY%3D","line":933,"updated":"2012-06-05 02:07:13.000000000","message":"Since it is defined as instance method, the first parameter should be self. We had better define it as staticmethod here by @staticmethod","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":930,"context_line":"        self.usage \u003d usage"},{"line_number":931,"context_line":"        self.default_config_files \u003d default_config_files"},{"line_number":932,"context_line":""},{"line_number":933,"context_line":"    def __clear_cache(f):"},{"line_number":934,"context_line":"        @functools.wraps(f)"},{"line_number":935,"context_line":"        def __inner(self, *args, **kwargs):"},{"line_number":936,"context_line":"            if kwargs.pop(\u0027clear_cache\u0027, True):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHn%2F%2F9GQ%3D","line":933,"in_reply_to":"AAAAHn%2F%2F9NY%3D","updated":"2012-06-05 07:54:07.000000000","message":"This is a file from openstack common. I think that this change should be done in the openstack common code (we just import the file). Maybe we can open a bug for this? Not exactly sure how this works for openstack common","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":20,"context_line":"The schema for each option is defined using the Opt sub-classes, e.g.:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"::"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    common_opts \u003d ["},{"line_number":25,"context_line":"        cfg.StrOpt(\u0027bind_host\u0027,"},{"line_number":26,"context_line":"                   default\u003d\u00270.0.0.0\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAIX%2F%2F%2BYw%3D","line":23,"updated":"2012-06-12 16:55:41.000000000","message":"Just wanted to confirm that this is a new copy of the file from openstack-common repo being copied in, and not a local change made by you, right?","commit_id":"bd4ab25eb33dc9e19bc5deaec980e8a5689c94d9"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":20,"context_line":"The schema for each option is defined using the Opt sub-classes, e.g.:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"::"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    common_opts \u003d ["},{"line_number":25,"context_line":"        cfg.StrOpt(\u0027bind_host\u0027,"},{"line_number":26,"context_line":"                   default\u003d\u00270.0.0.0\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAIX%2F%2F%2BWk%3D","line":23,"in_reply_to":"AAAAIX%2F%2F%2BYw%3D","updated":"2012-06-12 17:24:14.000000000","message":"Yes, this is the file imported from openstack-common","commit_id":"bd4ab25eb33dc9e19bc5deaec980e8a5689c94d9"}],"quantum/plugins/cisco/common/cisco_credentials.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import logging as LOG"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from quantum.common.utils import find_config_file"},{"line_number":22,"context_line":"from quantum.plugins.cisco.common import cisco_configparser as confp"},{"line_number":23,"context_line":"from quantum.plugins.cisco.common import cisco_constants as const"},{"line_number":24,"context_line":"from quantum.plugins.cisco.common import cisco_exceptions as cexc"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAIX%2F%2F%2BYs%3D","line":21,"updated":"2012-06-12 16:55:41.000000000","message":"same comment about using find_config_file from common","commit_id":"bd4ab25eb33dc9e19bc5deaec980e8a5689c94d9"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import logging as LOG"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from quantum.common.utils import find_config_file"},{"line_number":22,"context_line":"from quantum.plugins.cisco.common import cisco_configparser as confp"},{"line_number":23,"context_line":"from quantum.plugins.cisco.common import cisco_constants as const"},{"line_number":24,"context_line":"from quantum.plugins.cisco.common import cisco_exceptions as cexc"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAIX%2F%2F%2BWI%3D","line":21,"in_reply_to":"AAAAIX%2F%2F%2BYs%3D","updated":"2012-06-12 17:24:14.000000000","message":"This will be dealt with in the next phase - at the moment the agent configurations are still read from their independent configuration files. We need to decide if we want to continue to work with this model or use one configuration file. I\u0027ll send a mail to the list tomorrow to see if there is some kind if consensus.","commit_id":"bd4ab25eb33dc9e19bc5deaec980e8a5689c94d9"}],"quantum/plugins/linuxbridge/common/config.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":40,"context_line":"]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def parse(config_file):"},{"line_number":44,"context_line":"    conf \u003d cfg.CONF"},{"line_number":45,"context_line":"    if \u0027default_config_files\u0027 in conf:"},{"line_number":46,"context_line":"        conf.default_config_files.append(config_file)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHn%2F%2F9LY%3D","line":43,"updated":"2012-06-05 02:07:13.000000000","message":"about the config_file search in l2network_db.py. we should use the same logic as the openstack common, not the one in our own find_config_file()","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":40,"context_line":"]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def parse(config_file):"},{"line_number":44,"context_line":"    conf \u003d cfg.CONF"},{"line_number":45,"context_line":"    if \u0027default_config_files\u0027 in conf:"},{"line_number":46,"context_line":"        conf.default_config_files.append(config_file)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHn%2F%2F9EY%3D","line":43,"in_reply_to":"AAAAHn%2F%2F9LY%3D","updated":"2012-06-05 07:54:07.000000000","message":"If possible I would like to tackle this in a different task - need to understand of the cfg module has some kind of support for this.","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def parse(config_file):"},{"line_number":44,"context_line":"    conf \u003d cfg.CONF"},{"line_number":45,"context_line":"    if \u0027default_config_files\u0027 in conf:"},{"line_number":46,"context_line":"        conf.default_config_files.append(config_file)"},{"line_number":47,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHn%2F%2F9Lg%3D","line":44,"updated":"2012-06-05 02:07:13.000000000","message":"cfg.CONF is used by quantum_server to start up. After that this variable should be immutable. But here we reuse it again, it will cause problem since some values will be overwritten. I suggest we use one new variable.","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def parse(config_file):"},{"line_number":44,"context_line":"    conf \u003d cfg.CONF"},{"line_number":45,"context_line":"    if \u0027default_config_files\u0027 in conf:"},{"line_number":46,"context_line":"        conf.default_config_files.append(config_file)"},{"line_number":47,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHn%2F%2F9Dk%3D","line":44,"in_reply_to":"AAAAHn%2F%2F9D8%3D","updated":"2012-06-05 08:40:58.000000000","message":"The config file is appended to the list of configuration files. In the end it is the same global data structure that has appened attributes","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def parse(config_file):"},{"line_number":44,"context_line":"    conf \u003d cfg.CONF"},{"line_number":45,"context_line":"    if \u0027default_config_files\u0027 in conf:"},{"line_number":46,"context_line":"        conf.default_config_files.append(config_file)"},{"line_number":47,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHn%2F%2F9D8%3D","line":44,"in_reply_to":"AAAAHn%2F%2F9GM%3D","updated":"2012-06-05 08:12:41.000000000","message":"in fact, we not only append some items, we also replace some, for example, the config_file. I suggest use a new variable.","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def parse(config_file):"},{"line_number":44,"context_line":"    conf \u003d cfg.CONF"},{"line_number":45,"context_line":"    if \u0027default_config_files\u0027 in conf:"},{"line_number":46,"context_line":"        conf.default_config_files.append(config_file)"},{"line_number":47,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHn%2F%2F9GM%3D","line":44,"in_reply_to":"AAAAHn%2F%2F9Lg%3D","updated":"2012-06-05 07:54:07.000000000","message":"The common config code appends the new entries to the global data structure. I think that this is ok","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"unresolved":false,"context_lines":[{"line_number":46,"context_line":"        conf.default_config_files.append(config_file)"},{"line_number":47,"context_line":"    else:"},{"line_number":48,"context_line":"        conf.default_config_files \u003d [config_file]"},{"line_number":49,"context_line":"    conf(args\u003d[], default_config_files\u003dconf.default_config_files)"},{"line_number":50,"context_line":"    conf.register_opts(vlan_opts, \"VLANS\")"},{"line_number":51,"context_line":"    conf.register_opts(database_opts, \"DATABASE\")"},{"line_number":52,"context_line":"    conf.register_opts(bridge_opts, \"LINUX_BRIDGE\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAHn%2F%2F8xI%3D","line":49,"updated":"2012-06-05 16:58:56.000000000","message":"Nice ... you almost had me persuaded that this could work ... but it won\u0027t :)\n\ncfg basically represents a stack of configuration files followed by the command line arguments\n\nYou\u0027re basically trying to add the plugin\u0027s configuration file to the top of that stack when the plugin is loaded\n\nThat means you\u0027d be able to define values for plugin specific config in quantum.conf and generic config in the plugin config file\n\nWhat happens if you define\n\n  [PLUGIN]\n  provider \u003d ...\n\nin the linuxbridge plugin file? It\u0027s allowed, and if the code ever looks at the value after the plugin has been loaded it will find it has been changed\n\nAlso, if e.g. you had passed --debug on the command line, then the debug setting would be lost after the provider config was loaded ... that\u0027s because you\u0027re passing args\u003d[] to conf()\n\nIf you passed args\u003dNone to CONF(), that wouldn\u0027t work either - default_config_files is completely ignored if --config-file is specified on the command line\n\n\nI actually don\u0027t understand why the current version doesn\u0027t work just fine for you? Just avoiding the use of the global CONF object should work, right?","commit_id":"286b2f736e32f36986e112b42b07d4b48ac1ec6d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":46,"context_line":"        conf.default_config_files.append(config_file)"},{"line_number":47,"context_line":"    else:"},{"line_number":48,"context_line":"        conf.default_config_files \u003d [config_file]"},{"line_number":49,"context_line":"    conf(args\u003d[], default_config_files\u003dconf.default_config_files)"},{"line_number":50,"context_line":"    conf.register_opts(vlan_opts, \"VLANS\")"},{"line_number":51,"context_line":"    conf.register_opts(database_opts, \"DATABASE\")"},{"line_number":52,"context_line":"    conf.register_opts(bridge_opts, \"LINUX_BRIDGE\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAHn%2F%2F8s0%3D","line":49,"in_reply_to":"AAAAHn%2F%2F8xI%3D","updated":"2012-06-05 17:45:32.000000000","message":"Good catch. It actually does work but has the bugs that you mention :)\nThe purpose fo this change was to ensure that we support the global config for the RPC support.\nWhat do you suggest that we do here?\nI should have given this more thought and have taken it to the community prior to implementing. I am thinking that the best thing to do is:\nHave quantum.conf file which contains a section for the plugin - this file will be shared by the agents and quantum service running the plugin. This should have have separate paste files to keep things simple for the agents.\nI\u0027ll send a mail to the community.","commit_id":"286b2f736e32f36986e112b42b07d4b48ac1ec6d"}],"quantum/plugins/openvswitch/common/config.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def parse(config_file):"},{"line_number":39,"context_line":"    conf \u003d cfg.CONF"},{"line_number":40,"context_line":"    if \u0027default_config_files\u0027 in conf:"},{"line_number":41,"context_line":"        conf.default_config_files.append(config_file)"},{"line_number":42,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHn%2F%2F9Lc%3D","line":39,"updated":"2012-06-05 02:07:13.000000000","message":"cfg.CONF is used by quantum-server to parse quantum.conf. After that it should be fixed as immutable. we had better return a new variable here.","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def parse(config_file):"},{"line_number":39,"context_line":"    conf \u003d cfg.CONF"},{"line_number":40,"context_line":"    if \u0027default_config_files\u0027 in conf:"},{"line_number":41,"context_line":"        conf.default_config_files.append(config_file)"},{"line_number":42,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHn%2F%2F9GI%3D","line":39,"in_reply_to":"AAAAHn%2F%2F9Lc%3D","updated":"2012-06-05 07:54:07.000000000","message":"The common config code appends the new entries to the global data structure. I think that this is ok","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"}],"quantum/plugins/ryu/common/config.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"def parse(config_file):"},{"line_number":38,"context_line":"    conf \u003d cfg.CONF"},{"line_number":39,"context_line":"    if \u0027default_config_files\u0027 in conf:"},{"line_number":40,"context_line":"        conf.default_config_files.append(config_file)"},{"line_number":41,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHn%2F%2F9LU%3D","line":38,"updated":"2012-06-05 02:07:13.000000000","message":"cfg.CONF is used to parse quantum.conf, after that it should be fixed as immutable.","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"def parse(config_file):"},{"line_number":38,"context_line":"    conf \u003d cfg.CONF"},{"line_number":39,"context_line":"    if \u0027default_config_files\u0027 in conf:"},{"line_number":40,"context_line":"        conf.default_config_files.append(config_file)"},{"line_number":41,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHn%2F%2F9GA%3D","line":38,"in_reply_to":"AAAAHn%2F%2F9LU%3D","updated":"2012-06-05 07:54:07.000000000","message":"The common config code appends the new entries to the global data structure. I think that this is ok","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"}],"quantum/plugins/ryu/ovs_quantum_plugin_base.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            if os.path.exists(conf_file):"},{"line_number":61,"context_line":"                configfile \u003d conf_file"},{"line_number":62,"context_line":"            else:"},{"line_number":63,"context_line":"                configfile \u003d find_config(os.path.abspath("},{"line_number":64,"context_line":"                    os.path.dirname(__file__)))"},{"line_number":65,"context_line":"        if configfile is None:"},{"line_number":66,"context_line":"            raise Exception(\"Configuration file \\\"%s\\\" doesn\u0027t exist\" %"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHn%2F%2F9LE%3D","line":63,"updated":"2012-06-05 02:07:13.000000000","message":"Can we use the openstack common logic to find the  configfile?","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":60,"context_line":"            if os.path.exists(conf_file):"},{"line_number":61,"context_line":"                configfile \u003d conf_file"},{"line_number":62,"context_line":"            else:"},{"line_number":63,"context_line":"                configfile \u003d find_config(os.path.abspath("},{"line_number":64,"context_line":"                    os.path.dirname(__file__)))"},{"line_number":65,"context_line":"        if configfile is None:"},{"line_number":66,"context_line":"            raise Exception(\"Configuration file \\\"%s\\\" doesn\u0027t exist\" %"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAHn%2F%2F9FU%3D","line":63,"in_reply_to":"AAAAHn%2F%2F9LE%3D","updated":"2012-06-05 07:54:07.000000000","message":"If possible I would like to tackle this in a different task - need to understand of the cfg module has some kind of support for this.","commit_id":"8ca6ab240c34412b09980c1bbc3aeda16aa3eb0c"},{"author":{"_account_id":2350,"name":"Willian Molinari","email":"pothix@pothix.com","username":"pothix"},"unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":"# @author: Isaku Yamahata"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import ConfigParser"},{"line_number":20,"context_line":"from abc import ABCMeta, abstractmethod"},{"line_number":21,"context_line":"import logging as LOG"},{"line_number":22,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAIX%2F%2F%2Bt8%3D","line":19,"updated":"2012-06-11 20:38:55.000000000","message":"Is this line really needed?","commit_id":"37604ff83c32b1f3c32660f1cd0609631a2a5395"}],"quantum/server/__init__.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def main():"},{"line_number":32,"context_line":"    # the configuration will be read into the cfg.CONF global data structure"},{"line_number":33,"context_line":"    config.parse(sys.argv)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    try:"},{"line_number":36,"context_line":"        quantum_service \u003d service.serve_wsgi(service.QuantumApiService)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAIX%2F%2F%2BAk%3D","line":33,"updated":"2012-06-13 09:10:05.000000000","message":"can we add:\n    #       ~/.${project}/\n#      ~/\n#      /etc/${project}/\n#      /etc/\n    if not cfg.CONF.config_file:\n        sys.exit(\"ERROR: config file not found under ~/ and /etc/quantum and specified by --config-file option\")\nSo that it will exit as soon as possible if there is no config file found","commit_id":"b27b3e447587c9d7ddaf30fd3fdb4e6fe821619e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def main():"},{"line_number":32,"context_line":"    # the configuration will be read into the cfg.CONF global data structure"},{"line_number":33,"context_line":"    config.parse(sys.argv)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    try:"},{"line_number":36,"context_line":"        quantum_service \u003d service.serve_wsgi(service.QuantumApiService)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAIX%2F%2F%2BAI%3D","line":33,"in_reply_to":"AAAAIX%2F%2F%2BAk%3D","updated":"2012-06-13 11:25:24.000000000","message":"Done","commit_id":"b27b3e447587c9d7ddaf30fd3fdb4e6fe821619e"}],"quantum/service.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def _run_wsgi(app_name):"},{"line_number":89,"context_line":"    app \u003d config.load_paste_app(app_name, \"quantum.conf\")"},{"line_number":90,"context_line":"    if not app:"},{"line_number":91,"context_line":"        LOG.error(_(\u0027No known API applications configured in %s.\u0027),"},{"line_number":92,"context_line":"                  paste_config_file)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAIX%2F%2F%2BAs%3D","line":89,"updated":"2012-06-13 09:10:05.000000000","message":"since we have no api-paste.ini, why not use cfg.CONF.config_file directly?","commit_id":"b27b3e447587c9d7ddaf30fd3fdb4e6fe821619e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def _run_wsgi(app_name):"},{"line_number":89,"context_line":"    app \u003d config.load_paste_app(app_name, \"quantum.conf\")"},{"line_number":90,"context_line":"    if not app:"},{"line_number":91,"context_line":"        LOG.error(_(\u0027No known API applications configured in %s.\u0027),"},{"line_number":92,"context_line":"                  paste_config_file)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAIX%2F%2F9%2Fc%3D","line":89,"in_reply_to":"AAAAIX%2F%2F%2BAs%3D","updated":"2012-06-13 11:25:24.000000000","message":"The method load_paste extracts the paste configuration from the configuration file.\nAs mentioned above this will be in the next stage.","commit_id":"b27b3e447587c9d7ddaf30fd3fdb4e6fe821619e"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5c68293d2e7ad9144717ff55eecae8d19c82b3b3","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    app \u003d config.load_paste_app(app_name, \"quantum.conf\")"},{"line_number":90,"context_line":"    if not app:"},{"line_number":91,"context_line":"        LOG.error(_(\u0027No known API applications configured in %s.\u0027),"},{"line_number":92,"context_line":"                  paste_config_file)"},{"line_number":93,"context_line":"        return"},{"line_number":94,"context_line":"    server \u003d wsgi.Server(\"Quantum\")"},{"line_number":95,"context_line":"    server.start(app, cfg.CONF.bind_port, cfg.CONF.bind_host)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAIX%2F%2F%2BA4%3D","line":92,"updated":"2012-06-13 09:10:05.000000000","message":"Where is paste_config_file defined?","commit_id":"b27b3e447587c9d7ddaf30fd3fdb4e6fe821619e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":89,"context_line":"    app \u003d config.load_paste_app(app_name, \"quantum.conf\")"},{"line_number":90,"context_line":"    if not app:"},{"line_number":91,"context_line":"        LOG.error(_(\u0027No known API applications configured in %s.\u0027),"},{"line_number":92,"context_line":"                  paste_config_file)"},{"line_number":93,"context_line":"        return"},{"line_number":94,"context_line":"    server \u003d wsgi.Server(\"Quantum\")"},{"line_number":95,"context_line":"    server.start(app, cfg.CONF.bind_port, cfg.CONF.bind_host)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAIX%2F%2F9%2FY%3D","line":92,"in_reply_to":"AAAAIX%2F%2F%2BA4%3D","updated":"2012-06-13 11:25:24.000000000","message":"Done\nGood call :).","commit_id":"b27b3e447587c9d7ddaf30fd3fdb4e6fe821619e"}],"quantum/tests/etc/quantum.conf.test":[{"author":{"_account_id":385,"name":"Jason Kölker","email":"jason@koelker.net","username":"jason-koelker"},"change_message_id":"5b9a5efc0913cc94c30ec712dcc309bef27ed24c","unresolved":false,"context_lines":[{"line_number":3,"context_line":"verbose \u003d True"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"# Show debugging output in logs (sets DEBUG log level output)"},{"line_number":6,"context_line":"debug \u003d False "},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"# Address to bind the API server"},{"line_number":9,"context_line":"bind_host \u003d 0.0.0.0"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"AAAAHn%2F%2F90o%3D","line":6,"updated":"2012-06-04 14:37:01.000000000","message":"Attack of the whitespace! ;)","commit_id":"41c34260992255be3edeca43f79b7df1e41a8737"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"02e959e1c5ab02b3919a43eb620c4adebbe3b5e2","unresolved":false,"context_lines":[{"line_number":3,"context_line":"verbose \u003d True"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"# Show debugging output in logs (sets DEBUG log level output)"},{"line_number":6,"context_line":"debug \u003d False "},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"# Address to bind the API server"},{"line_number":9,"context_line":"bind_host \u003d 0.0.0.0"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"AAAAHn%2F%2F90A%3D","line":6,"in_reply_to":"AAAAHn%2F%2F90o%3D","updated":"2012-06-04 15:20:46.000000000","message":"Done","commit_id":"41c34260992255be3edeca43f79b7df1e41a8737"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":9,"context_line":"bind_host \u003d 0.0.0.0"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# Port the bind the API server to"},{"line_number":12,"context_line":"bind_port \u003d 9676"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"# Path to the extensions"},{"line_number":15,"context_line":"api_extensions_path \u003d unit/extensions"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAAIX%2F%2F%2BYk%3D","line":12,"updated":"2012-06-12 16:55:41.000000000","message":"is this so test could be run on same box as service is running?  If so, i\u0027d add some comment here about using an alternate port for testing.","commit_id":"bd4ab25eb33dc9e19bc5deaec980e8a5689c94d9"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":9,"context_line":"bind_host \u003d 0.0.0.0"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# Port the bind the API server to"},{"line_number":12,"context_line":"bind_port \u003d 9676"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"# Path to the extensions"},{"line_number":15,"context_line":"api_extensions_path \u003d unit/extensions"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAAIX%2F%2F%2BWc%3D","line":12,"in_reply_to":"AAAAIX%2F%2F%2BYk%3D","updated":"2012-06-12 17:24:14.000000000","message":"Changed back - led to too much confusion :)","commit_id":"bd4ab25eb33dc9e19bc5deaec980e8a5689c94d9"}],"quantum/tests/unit/_test_api.py":[{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"unresolved":false,"context_lines":[{"line_number":121,"context_line":"        args \u003d [\u0027--config-file\u0027, etcdir(\u0027quantum.conf.test\u0027)]"},{"line_number":122,"context_line":"        config.parse(args\u003dargs)"},{"line_number":123,"context_line":"        # Update the plugin"},{"line_number":124,"context_line":"        cfg.CONF.set_override(\u0027provider\u0027, test_config[\u0027plugin_name\u0027], \u0027plugin\u0027)"},{"line_number":125,"context_line":"        api_router_cls \u003d importutils.import_class(api_router_klass)"},{"line_number":126,"context_line":"        self.api \u003d api_router_cls()"},{"line_number":127,"context_line":"        self.tenant_id \u003d \"test_tenant\""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAHn%2F%2F8VY%3D","line":124,"updated":"2012-06-06 14:33:18.000000000","message":"You should do FLAGS.reset() in teardDown() to unset this override","commit_id":"a54fa5bb45693314577eae00a6155fc1256033bf"}]}
