)]}'
{"etc/octavia.conf":[{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"e92bfed197a0e54e21f9ce19b282c16775b6f292","unresolved":false,"context_lines":[{"line_number":7,"context_line":"# bind_port \u003d 9876"},{"line_number":8,"context_line":"# api_handler \u003d queue_producer"},{"line_number":9,"context_line":"#"},{"line_number":10,"context_line":"# How should authentication be handles (keystone, noauth)"},{"line_number":11,"context_line":"# auth_strategy \u003d keystone"},{"line_number":12,"context_line":"#"},{"line_number":13,"context_line":"# Plugin options are hot_plug_plugin (Hot-pluggable controller plugin)"}],"source_content_type":"text/plain","patch_set":4,"id":"bacf61ea_ac793931","line":10,"range":{"start_line":10,"start_character":31,"end_line":10,"end_character":38},"updated":"2016-08-05 22:30:39.000000000","message":"nit: handled","commit_id":"7cd42f8a2a118fdc462b0324233409bd2b46a737"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"55fa8739dae6bd8f2ebf12f69dd07d1f6af20011","unresolved":false,"context_lines":[{"line_number":8,"context_line":"# api_handler \u003d queue_producer"},{"line_number":9,"context_line":"#"},{"line_number":10,"context_line":"# How should authentication be handled (keystone, noauth)"},{"line_number":11,"context_line":"# auth_strategy \u003d keystone"},{"line_number":12,"context_line":"#"},{"line_number":13,"context_line":"# Plugin options are hot_plug_plugin (Hot-pluggable controller plugin)"},{"line_number":14,"context_line":"#"}],"source_content_type":"text/plain","patch_set":8,"id":"1ac06dbe_e82f503c","line":11,"range":{"start_line":11,"start_character":18,"end_line":11,"end_character":26},"updated":"2016-08-24 19:13:15.000000000","message":"This should match the default in config.py","commit_id":"c885fd4aad37adbc974321db286ab4501a5ab10b"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"dc123b4d2f6b0df2c6f1f14b794937f7db7e3c11","unresolved":false,"context_lines":[{"line_number":8,"context_line":"# api_handler \u003d queue_producer"},{"line_number":9,"context_line":"#"},{"line_number":10,"context_line":"# How should authentication be handled (keystone, noauth)"},{"line_number":11,"context_line":"# auth_strategy \u003d keystone"},{"line_number":12,"context_line":"#"},{"line_number":13,"context_line":"# Plugin options are hot_plug_plugin (Hot-pluggable controller plugin)"},{"line_number":14,"context_line":"#"}],"source_content_type":"text/plain","patch_set":8,"id":"1ac06dbe_c30237b4","line":11,"range":{"start_line":11,"start_character":18,"end_line":11,"end_character":26},"in_reply_to":"1ac06dbe_e82f503c","updated":"2016-08-24 19:31:08.000000000","message":"Done","commit_id":"c885fd4aad37adbc974321db286ab4501a5ab10b"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"b340e01f5196688defc859238ad870f5604c1431","unresolved":false,"context_lines":[{"line_number":8,"context_line":"# api_handler \u003d queue_producer"},{"line_number":9,"context_line":"#"},{"line_number":10,"context_line":"# How should authentication be handled (keystone, noauth)"},{"line_number":11,"context_line":"# auth_strategy \u003d noauth"},{"line_number":12,"context_line":"#"},{"line_number":13,"context_line":"# Plugin options are hot_plug_plugin (Hot-pluggable controller plugin)"},{"line_number":14,"context_line":"#"}],"source_content_type":"text/plain","patch_set":21,"id":"1a6eadb0_76b6ce3e","line":11,"updated":"2016-12-12 15:26:19.000000000","message":"Is this really the best default. This might hurt us in the future","commit_id":"1ace351fd80fdedacb0a2e40f25455050386044b"}],"octavia/api/app.py":[{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"38b40f89c29bceb2e851da792fe2fb5c368caa3c","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def _wrap_app(app):"},{"line_number":49,"context_line":"    app \u003d request_id.RequestId(app)"},{"line_number":50,"context_line":"    if cfg.CONF.auth_strategy \u003d\u003d \u0027keystone\u0027:"},{"line_number":51,"context_line":"        app \u003d auth_token.AuthProtocol(app, {})"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_72f4ef86","line":49,"range":{"start_line":49,"start_character":0,"end_line":49,"end_character":35},"updated":"2016-08-24 18:49:00.000000000","message":"Nit: Missing docstring describing what this method does.","commit_id":"ae3f2875922c999e28de3554a4bf79c3e937cab8"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"2d1f6a71ce7f6209cfd6cf54e5f952fc3270bff5","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def _wrap_app(app):"},{"line_number":49,"context_line":"    app \u003d request_id.RequestId(app)"},{"line_number":50,"context_line":"    if cfg.CONF.auth_strategy \u003d\u003d \u0027keystone\u0027:"},{"line_number":51,"context_line":"        app \u003d auth_token.AuthProtocol(app, {})"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_28eb28b2","line":49,"range":{"start_line":49,"start_character":0,"end_line":49,"end_character":35},"in_reply_to":"1ac06dbe_72f4ef86","updated":"2016-08-24 19:30:59.000000000","message":"Done","commit_id":"ae3f2875922c999e28de3554a4bf79c3e937cab8"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f8207eec73060d0cff0d0dc075bb24696349ef0e","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    app \u003d cors.CORS(app, cfg.CONF)"},{"line_number":59,"context_line":"    app.set_latent("},{"line_number":60,"context_line":"        allow_headers\u003d[\u0027X-Auth-Token\u0027, \u0027X-Openstack-Request-Id\u0027],"},{"line_number":61,"context_line":"        allow_methods\u003d[\u0027GET\u0027, \u0027PUT\u0027, \u0027POST\u0027, \u0027DELETE\u0027, \u0027PATCH\u0027],"},{"line_number":62,"context_line":"        expose_headers\u003d[\u0027X-Auth-Token\u0027, \u0027X-Openstack-Request-Id\u0027]"},{"line_number":63,"context_line":"    )"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_4d82f6c9","line":61,"range":{"start_line":61,"start_character":55,"end_line":61,"end_character":62},"updated":"2016-08-24 19:10:11.000000000","message":"Do we really need PATCH?  I don\u0027t think we use it in our API.","commit_id":"ae3f2875922c999e28de3554a4bf79c3e937cab8"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"2d1f6a71ce7f6209cfd6cf54e5f952fc3270bff5","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    app \u003d cors.CORS(app, cfg.CONF)"},{"line_number":59,"context_line":"    app.set_latent("},{"line_number":60,"context_line":"        allow_headers\u003d[\u0027X-Auth-Token\u0027, \u0027X-Openstack-Request-Id\u0027],"},{"line_number":61,"context_line":"        allow_methods\u003d[\u0027GET\u0027, \u0027PUT\u0027, \u0027POST\u0027, \u0027DELETE\u0027, \u0027PATCH\u0027],"},{"line_number":62,"context_line":"        expose_headers\u003d[\u0027X-Auth-Token\u0027, \u0027X-Openstack-Request-Id\u0027]"},{"line_number":63,"context_line":"    )"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_48e664e9","line":61,"range":{"start_line":61,"start_character":55,"end_line":61,"end_character":62},"in_reply_to":"1ac06dbe_4d82f6c9","updated":"2016-08-24 19:30:59.000000000","message":"Done","commit_id":"ae3f2875922c999e28de3554a4bf79c3e937cab8"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"62b290b012618f14a5dbd175a60062559dfad9c7","unresolved":false,"context_lines":[{"line_number":48,"context_line":"def _wrap_app(app):"},{"line_number":49,"context_line":"    \"\"\"Wraps wsgi app with additional middlewares.\"\"\""},{"line_number":50,"context_line":"    app \u003d request_id.RequestId(app)"},{"line_number":51,"context_line":"    if cfg.CONF.auth_strategy \u003d\u003d \u0027keystone\u0027:"},{"line_number":52,"context_line":"        app \u003d auth_token.AuthProtocol(app, {})"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    # This should be the last middleware in the list (which results in"}],"source_content_type":"text/x-python","patch_set":18,"id":"7a77a97e_5c0df88e","line":51,"range":{"start_line":51,"start_character":33,"end_line":51,"end_character":43},"updated":"2016-11-17 00:42:56.000000000","message":"This should be in the constants file","commit_id":"47fc12698574643c3591e917a7c69d029e47fe4c"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"59296388b99755f59b7e4aa6d0ce0cbf3e14d8b0","unresolved":false,"context_lines":[{"line_number":48,"context_line":"def _wrap_app(app):"},{"line_number":49,"context_line":"    \"\"\"Wraps wsgi app with additional middlewares.\"\"\""},{"line_number":50,"context_line":"    app \u003d request_id.RequestId(app)"},{"line_number":51,"context_line":"    if cfg.CONF.auth_strategy \u003d\u003d \u0027keystone\u0027:"},{"line_number":52,"context_line":"        app \u003d auth_token.AuthProtocol(app, {})"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    # This should be the last middleware in the list (which results in"}],"source_content_type":"text/x-python","patch_set":18,"id":"7a77a97e_5995e384","line":51,"range":{"start_line":51,"start_character":33,"end_line":51,"end_character":43},"in_reply_to":"7a77a97e_5c0df88e","updated":"2016-11-17 16:14:42.000000000","message":"Done","commit_id":"47fc12698574643c3591e917a7c69d029e47fe4c"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"b340e01f5196688defc859238ad870f5604c1431","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    app \u003d cors.CORS(app, cfg.CONF)"},{"line_number":61,"context_line":"    app.set_latent("},{"line_number":62,"context_line":"        allow_headers\u003d[\u0027X-Auth-Token\u0027, \u0027X-Openstack-Request-Id\u0027],"},{"line_number":63,"context_line":"        allow_methods\u003d[\u0027GET\u0027, \u0027PUT\u0027, \u0027POST\u0027, \u0027DELETE\u0027],"},{"line_number":64,"context_line":"        expose_headers\u003d[\u0027X-Auth-Token\u0027, \u0027X-Openstack-Request-Id\u0027]"},{"line_number":65,"context_line":"    )"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"1a6eadb0_d6c962ae","line":63,"updated":"2016-12-12 15:26:19.000000000","message":"HEAD? I can see us adding that when people are polling for something, e.g. stats","commit_id":"1ace351fd80fdedacb0a2e40f25455050386044b"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"d48ca69060dabff3b86c69c0c92e4735dcd5ef30","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    app \u003d cors.CORS(app, cfg.CONF)"},{"line_number":61,"context_line":"    app.set_latent("},{"line_number":62,"context_line":"        allow_headers\u003d[\u0027X-Auth-Token\u0027, \u0027X-Openstack-Request-Id\u0027],"},{"line_number":63,"context_line":"        allow_methods\u003d[\u0027GET\u0027, \u0027PUT\u0027, \u0027POST\u0027, \u0027DELETE\u0027],"},{"line_number":64,"context_line":"        expose_headers\u003d[\u0027X-Auth-Token\u0027, \u0027X-Openstack-Request-Id\u0027]"},{"line_number":65,"context_line":"    )"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"1a6eadb0_f2af417b","line":63,"in_reply_to":"1a6eadb0_d6c962ae","updated":"2016-12-12 18:16:17.000000000","message":"meh I\u0027d say we add it when we know we need it","commit_id":"1ace351fd80fdedacb0a2e40f25455050386044b"}],"octavia/api/config.py":[{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"6ac12bd8f1ca8b379971adde1683628e6bf3a288","unresolved":false,"context_lines":[{"line_number":19,"context_line":"app \u003d {"},{"line_number":20,"context_line":"    \u0027root\u0027: \u0027octavia.api.root_controller.RootController\u0027,"},{"line_number":21,"context_line":"    \u0027modules\u0027: [\u0027octavia.api\u0027],"},{"line_number":22,"context_line":"    \u0027hooks\u0027: lambda: [hooks.ContextHook()],"},{"line_number":23,"context_line":"    \u0027debug\u0027: False"},{"line_number":24,"context_line":"}"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_ae81ed91","line":22,"updated":"2016-08-08 15:37:25.000000000","message":"Yes, I needed some one place to configure them because tests are loading that config file to create testing environment and our app.py is also loading that file to take the app and wmse so I moved that hooks here.","commit_id":"7cd42f8a2a118fdc462b0324233409bd2b46a737"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"e92bfed197a0e54e21f9ce19b282c16775b6f292","unresolved":false,"context_lines":[{"line_number":19,"context_line":"app \u003d {"},{"line_number":20,"context_line":"    \u0027root\u0027: \u0027octavia.api.root_controller.RootController\u0027,"},{"line_number":21,"context_line":"    \u0027modules\u0027: [\u0027octavia.api\u0027],"},{"line_number":22,"context_line":"    \u0027hooks\u0027: lambda: [hooks.ContextHook()],"},{"line_number":23,"context_line":"    \u0027debug\u0027: False"},{"line_number":24,"context_line":"}"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_ecd4d1e9","line":22,"range":{"start_line":22,"start_character":4,"end_line":22,"end_character":42},"updated":"2016-08-05 22:30:39.000000000","message":"did you move this here so that what hooks are loaded are more configurable? Just wondering\n\nanyway, this is failing:\nhttp://logs.openstack.org/65/265065/4/check/gate-neutron-lbaasv2-dsvm-healthmonitor/59b1282/logs/screen-o-api.txt.gz\n\nIf you remove the lambda: then it seems to work locally.  The pecan documentation does say to put the lambda but it apparently is wrong.","commit_id":"7cd42f8a2a118fdc462b0324233409bd2b46a737"}],"octavia/api/v1/hooks.py":[{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"6ac12bd8f1ca8b379971adde1683628e6bf3a288","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        or admin substring. Otherwise it is set to False."},{"line_number":39,"context_line":"    \"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def on_route(self, state):"},{"line_number":42,"context_line":"        user_id \u003d state.request.headers.get(\u0027X-User-Id\u0027)"},{"line_number":43,"context_line":"        user_name \u003d state.request.headers.get(\u0027X-User\u0027)"},{"line_number":44,"context_line":"        user_name \u003d state.request.headers.get(\u0027X-User-Name\u0027, user_name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_4e74b1ce","line":41,"updated":"2016-08-08 15:37:25.000000000","message":"I don\u0027t know but all tests look that works and I was sitting for a whole day to find why my requests doesn\u0027t have a octavia_context and finally I found out that we need to use on_route - we\u0027re using our octavia_context in pecan _lookup","commit_id":"7cd42f8a2a118fdc462b0324233409bd2b46a737"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"e92bfed197a0e54e21f9ce19b282c16775b6f292","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        or admin substring. Otherwise it is set to False."},{"line_number":39,"context_line":"    \"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def on_route(self, state):"},{"line_number":42,"context_line":"        user_id \u003d state.request.headers.get(\u0027X-User-Id\u0027)"},{"line_number":43,"context_line":"        user_name \u003d state.request.headers.get(\u0027X-User\u0027)"},{"line_number":44,"context_line":"        user_name \u003d state.request.headers.get(\u0027X-User-Name\u0027, user_name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_cc28ede4","line":41,"updated":"2016-08-05 22:30:39.000000000","message":"I\u0027m curious as to why i changed this to \"before\" in PS 1.  Unfortunately, I have no clue and can\u0027t remember 7 months ago :)","commit_id":"7cd42f8a2a118fdc462b0324233409bd2b46a737"}],"octavia/common/config.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f8207eec73060d0cff0d0dc075bb24696349ef0e","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    cfg.StrOpt(\u0027auth_strategy\u0027, default\u003d\u0027noauth\u0027,"},{"line_number":39,"context_line":"               choices\u003d[\u0027noauth\u0027, \u0027keystone\u0027],"},{"line_number":40,"context_line":"               help\u003d_(\"The auth strategy for requests.\")),"},{"line_number":41,"context_line":"    cfg.StrOpt(\u0027api_handler\u0027, default\u003d\u0027simulated_handler\u0027,"},{"line_number":42,"context_line":"               help\u003d_(\"The handler that the API communicates with\")),"},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027api_paste_config\u0027, default\u003d\"api-paste.ini\","},{"line_number":44,"context_line":"               help\u003d_(\"The API paste config file to use\")),"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_ad2baa93","line":41,"range":{"start_line":41,"start_character":39,"end_line":41,"end_character":56},"updated":"2016-08-24 19:10:11.000000000","message":"Um, NO","commit_id":"ae3f2875922c999e28de3554a4bf79c3e937cab8"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"2d1f6a71ce7f6209cfd6cf54e5f952fc3270bff5","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    cfg.StrOpt(\u0027auth_strategy\u0027, default\u003d\u0027noauth\u0027,"},{"line_number":39,"context_line":"               choices\u003d[\u0027noauth\u0027, \u0027keystone\u0027],"},{"line_number":40,"context_line":"               help\u003d_(\"The auth strategy for requests.\")),"},{"line_number":41,"context_line":"    cfg.StrOpt(\u0027api_handler\u0027, default\u003d\u0027simulated_handler\u0027,"},{"line_number":42,"context_line":"               help\u003d_(\"The handler that the API communicates with\")),"},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027api_paste_config\u0027, default\u003d\"api-paste.ini\","},{"line_number":44,"context_line":"               help\u003d_(\"The API paste config file to use\")),"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_2887a8d8","line":41,"range":{"start_line":41,"start_character":39,"end_line":41,"end_character":56},"in_reply_to":"1ac06dbe_ad2baa93","updated":"2016-08-24 19:30:59.000000000","message":"Done","commit_id":"ae3f2875922c999e28de3554a4bf79c3e937cab8"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0261d85748974a7bec2547d4ffaf2b75177e1494","unresolved":false,"context_lines":[{"line_number":34,"context_line":"              help\u003d_(\"The host IP to bind to\")),"},{"line_number":35,"context_line":"    cfg.PortOpt(\u0027bind_port\u0027, default\u003d9876,"},{"line_number":36,"context_line":"                help\u003d_(\"The port to bind to\")),"},{"line_number":37,"context_line":"    cfg.StrOpt(\u0027auth_strategy\u0027, default\u003d\u0027noauth\u0027,"},{"line_number":38,"context_line":"               choices\u003d[\u0027noauth\u0027, \u0027keystone\u0027],"},{"line_number":39,"context_line":"               help\u003d_(\"The auth strategy for requests.\")),"},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027api_handler\u0027, default\u003d\u0027queue_producer\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa6399be_0e946689","line":37,"range":{"start_line":37,"start_character":32,"end_line":37,"end_character":49},"updated":"2016-10-11 21:37:02.000000000","message":"If the neutron_lbaas octavia driver is passing us a token, why don\u0027t we have this keystone by default?","commit_id":"10d7baccc14a7f88657319213f1c87dcc47eb9f3"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"62b290b012618f14a5dbd175a60062559dfad9c7","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                help\u003d_(\"The port to bind to\")),"},{"line_number":37,"context_line":"    cfg.StrOpt(\u0027auth_strategy\u0027, default\u003d\u0027noauth\u0027,"},{"line_number":38,"context_line":"               choices\u003d[\u0027noauth\u0027, \u0027keystone\u0027],"},{"line_number":39,"context_line":"               help\u003d_(\"The auth strategy for requests.\")),"},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027api_handler\u0027, default\u003d\u0027queue_producer\u0027,"},{"line_number":41,"context_line":"               help\u003d_(\"The handler that the API communicates with\")),"},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027api_paste_config\u0027, default\u003d\"api-paste.ini\","}],"source_content_type":"text/x-python","patch_set":18,"id":"7a77a97e_3c359cf6","line":39,"range":{"start_line":39,"start_character":23,"end_line":39,"end_character":54},"updated":"2016-11-17 00:42:56.000000000","message":"Can we clarify this to say that it is the auth_strategy for the API?","commit_id":"47fc12698574643c3591e917a7c69d029e47fe4c"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"59296388b99755f59b7e4aa6d0ce0cbf3e14d8b0","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                help\u003d_(\"The port to bind to\")),"},{"line_number":37,"context_line":"    cfg.StrOpt(\u0027auth_strategy\u0027, default\u003d\u0027noauth\u0027,"},{"line_number":38,"context_line":"               choices\u003d[\u0027noauth\u0027, \u0027keystone\u0027],"},{"line_number":39,"context_line":"               help\u003d_(\"The auth strategy for requests.\")),"},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027api_handler\u0027, default\u003d\u0027queue_producer\u0027,"},{"line_number":41,"context_line":"               help\u003d_(\"The handler that the API communicates with\")),"},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027api_paste_config\u0027, default\u003d\"api-paste.ini\","}],"source_content_type":"text/x-python","patch_set":18,"id":"7a77a97e_d9ef331c","line":39,"range":{"start_line":39,"start_character":23,"end_line":39,"end_character":54},"in_reply_to":"7a77a97e_3c359cf6","updated":"2016-11-17 16:14:42.000000000","message":"Done","commit_id":"47fc12698574643c3591e917a7c69d029e47fe4c"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"fa2c426ff74054ba105351950fed057226d9b6c4","unresolved":false,"context_lines":[{"line_number":35,"context_line":"              help\u003d_(\"The host IP to bind to\")),"},{"line_number":36,"context_line":"    cfg.PortOpt(\u0027bind_port\u0027, default\u003d9876,"},{"line_number":37,"context_line":"                help\u003d_(\"The port to bind to\")),"},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027auth_strategy\u0027, default\u003dconstants.NOAUTH,"},{"line_number":39,"context_line":"               choices\u003d[constants.NOAUTH, constants.KEYSTONE],"},{"line_number":40,"context_line":"               help\u003d_(\"The auth strategy for API requests.\")),"},{"line_number":41,"context_line":"    cfg.StrOpt(\u0027api_handler\u0027, default\u003d\u0027queue_producer\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a74a57a_090acbd2","line":38,"updated":"2016-11-23 09:42:35.000000000","message":"why do we default to noauth now? I believe we should test keystone by default.","commit_id":"1ace351fd80fdedacb0a2e40f25455050386044b"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"978e009396ee15a29ee10e2527b39c3d2ba53846","unresolved":false,"context_lines":[{"line_number":35,"context_line":"              help\u003d_(\"The host IP to bind to\")),"},{"line_number":36,"context_line":"    cfg.PortOpt(\u0027bind_port\u0027, default\u003d9876,"},{"line_number":37,"context_line":"                help\u003d_(\"The port to bind to\")),"},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027auth_strategy\u0027, default\u003dconstants.NOAUTH,"},{"line_number":39,"context_line":"               choices\u003d[constants.NOAUTH, constants.KEYSTONE],"},{"line_number":40,"context_line":"               help\u003d_(\"The auth strategy for API requests.\")),"},{"line_number":41,"context_line":"    cfg.StrOpt(\u0027api_handler\u0027, default\u003d\u0027queue_producer\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a74a57a_d80328b7","line":38,"in_reply_to":"5a74a57a_090acbd2","updated":"2016-11-23 17:02:45.000000000","message":"Unfortunately, Neutron LBaaSv2 driver is not forwarding tokens so it\u0027s not working with current architecture. We\u0027re planning to add new tests and change that when we\u0027re gonna start with writing this new merged API.","commit_id":"1ace351fd80fdedacb0a2e40f25455050386044b"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"b340e01f5196688defc859238ad870f5604c1431","unresolved":false,"context_lines":[{"line_number":35,"context_line":"              help\u003d_(\"The host IP to bind to\")),"},{"line_number":36,"context_line":"    cfg.PortOpt(\u0027bind_port\u0027, default\u003d9876,"},{"line_number":37,"context_line":"                help\u003d_(\"The port to bind to\")),"},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027auth_strategy\u0027, default\u003dconstants.NOAUTH,"},{"line_number":39,"context_line":"               choices\u003d[constants.NOAUTH, constants.KEYSTONE],"},{"line_number":40,"context_line":"               help\u003d_(\"The auth strategy for API requests.\")),"},{"line_number":41,"context_line":"    cfg.StrOpt(\u0027api_handler\u0027, default\u003d\u0027queue_producer\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"1a6eadb0_3648d62d","line":38,"in_reply_to":"5a74a57a_d80328b7","updated":"2016-12-12 15:26:19.000000000","message":"Same as Miguel. I think we should not default and rather set it in the devstack script to noauth","commit_id":"1ace351fd80fdedacb0a2e40f25455050386044b"}],"octavia/common/keystone.py":[{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"fa2c426ff74054ba105351950fed057226d9b6c4","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def __init__(self, section\u003dconstants.SERVICE_AUTH):"},{"line_number":27,"context_line":"        self._session \u003d None"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"        self.section \u003d section"},{"line_number":30,"context_line":"        ks_loading.register_auth_conf_options(cfg.CONF, self.section)"},{"line_number":31,"context_line":"        ks_loading.register_session_conf_options(cfg.CONF, self.section)"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a74a57a_89f6dbd5","line":28,"updated":"2016-11-23 09:42:35.000000000","message":"nit: unrelated","commit_id":"1ace351fd80fdedacb0a2e40f25455050386044b"}],"octavia/tests/functional/api/v1/base.py":[{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"e92bfed197a0e54e21f9ce19b282c16775b6f292","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _make_app(self):"},{"line_number":75,"context_line":"        return pecan.testing.load_test_app("},{"line_number":76,"context_line":"            {\u0027app\u0027: pconfig.app, \u0027wsme\u0027: pconfig.wsme})"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def _get_full_path(self, path):"},{"line_number":79,"context_line":"        return \u0027\u0027.join([self.BASE_PATH, path])"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_d9f54a83","line":76,"updated":"2016-08-05 22:30:39.000000000","message":"unnecessary change, but meh","commit_id":"7cd42f8a2a118fdc462b0324233409bd2b46a737"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"dbfd0fbc3f93b0423e16756a06cdd3e84a7a34b1","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        cfg.CONF.set_override(\u0027api_handler\u0027, \u0027simulated_handler\u0027)"},{"line_number":54,"context_line":"        cfg.CONF.set_override(\u0027network_driver\u0027, \u0027network_noop_driver\u0027,"},{"line_number":55,"context_line":"                              group\u003d\u0027controller_worker\u0027)"},{"line_number":56,"context_line":"        cfg.CONF.set_override(\u0027auth_strategy\u0027, \u0027noauth\u0027)"},{"line_number":57,"context_line":"        self.lb_repo \u003d repositories.LoadBalancerRepository()"},{"line_number":58,"context_line":"        self.listener_repo \u003d repositories.ListenerRepository()"},{"line_number":59,"context_line":"        self.listener_stats_repo \u003d repositories.ListenerStatisticsRepository()"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_d21fa3b5","line":56,"range":{"start_line":56,"start_character":48,"end_line":56,"end_character":54},"updated":"2016-08-24 18:54:01.000000000","message":"The default looks to already be \u0027noauth\u0027 so I believe this is not needed here. Is there a reason I\u0027m not seeing?","commit_id":"ae3f2875922c999e28de3554a4bf79c3e937cab8"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"4633a9ba57a7bf98b1efaed4656675366ca6e640","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        cfg.CONF.set_override(\u0027api_handler\u0027, \u0027simulated_handler\u0027)"},{"line_number":54,"context_line":"        cfg.CONF.set_override(\u0027network_driver\u0027, \u0027network_noop_driver\u0027,"},{"line_number":55,"context_line":"                              group\u003d\u0027controller_worker\u0027)"},{"line_number":56,"context_line":"        cfg.CONF.set_override(\u0027auth_strategy\u0027, \u0027noauth\u0027)"},{"line_number":57,"context_line":"        self.lb_repo \u003d repositories.LoadBalancerRepository()"},{"line_number":58,"context_line":"        self.listener_repo \u003d repositories.ListenerRepository()"},{"line_number":59,"context_line":"        self.listener_stats_repo \u003d repositories.ListenerStatisticsRepository()"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_03628f16","line":56,"range":{"start_line":56,"start_character":48,"end_line":56,"end_character":54},"in_reply_to":"1ac06dbe_883e9c27","updated":"2016-08-24 19:38:17.000000000","message":"Well, I guess I only bring this up as having the default function properly without being overridden is the only form of testing we have at this point for any of this. Not a biggie, consider it a nit.","commit_id":"ae3f2875922c999e28de3554a4bf79c3e937cab8"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"2d1f6a71ce7f6209cfd6cf54e5f952fc3270bff5","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        cfg.CONF.set_override(\u0027api_handler\u0027, \u0027simulated_handler\u0027)"},{"line_number":54,"context_line":"        cfg.CONF.set_override(\u0027network_driver\u0027, \u0027network_noop_driver\u0027,"},{"line_number":55,"context_line":"                              group\u003d\u0027controller_worker\u0027)"},{"line_number":56,"context_line":"        cfg.CONF.set_override(\u0027auth_strategy\u0027, \u0027noauth\u0027)"},{"line_number":57,"context_line":"        self.lb_repo \u003d repositories.LoadBalancerRepository()"},{"line_number":58,"context_line":"        self.listener_repo \u003d repositories.ListenerRepository()"},{"line_number":59,"context_line":"        self.listener_stats_repo \u003d repositories.ListenerStatisticsRepository()"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_883e9c27","line":56,"range":{"start_line":56,"start_character":48,"end_line":56,"end_character":54},"in_reply_to":"1ac06dbe_c8e6d443","updated":"2016-08-24 19:30:59.000000000","message":"Exactly it was my idea.","commit_id":"ae3f2875922c999e28de3554a4bf79c3e937cab8"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f8207eec73060d0cff0d0dc075bb24696349ef0e","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        cfg.CONF.set_override(\u0027api_handler\u0027, \u0027simulated_handler\u0027)"},{"line_number":54,"context_line":"        cfg.CONF.set_override(\u0027network_driver\u0027, \u0027network_noop_driver\u0027,"},{"line_number":55,"context_line":"                              group\u003d\u0027controller_worker\u0027)"},{"line_number":56,"context_line":"        cfg.CONF.set_override(\u0027auth_strategy\u0027, \u0027noauth\u0027)"},{"line_number":57,"context_line":"        self.lb_repo \u003d repositories.LoadBalancerRepository()"},{"line_number":58,"context_line":"        self.listener_repo \u003d repositories.ListenerRepository()"},{"line_number":59,"context_line":"        self.listener_stats_repo \u003d repositories.ListenerStatisticsRepository()"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_c8e6d443","line":56,"range":{"start_line":56,"start_character":48,"end_line":56,"end_character":54},"in_reply_to":"1ac06dbe_d21fa3b5","updated":"2016-08-24 19:10:11.000000000","message":"This is true, but at some point the default will need to be keystone auth, so it\u0027s cool to have this here now.","commit_id":"ae3f2875922c999e28de3554a4bf79c3e937cab8"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"dbfd0fbc3f93b0423e16756a06cdd3e84a7a34b1","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        self.addCleanup(reset_pecan)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _make_app(self):"},{"line_number":75,"context_line":"        return pecan.testing.load_test_app("},{"line_number":76,"context_line":"            {\u0027app\u0027: pconfig.app, \u0027wsme\u0027: pconfig.wsme})"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def _get_full_path(self, path):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_5211f35c","line":75,"range":{"start_line":75,"start_character":42,"end_line":75,"end_character":43},"updated":"2016-08-24 18:54:01.000000000","message":"This also probably doesnt need to be here.","commit_id":"ae3f2875922c999e28de3554a4bf79c3e937cab8"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"2d1f6a71ce7f6209cfd6cf54e5f952fc3270bff5","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        self.addCleanup(reset_pecan)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _make_app(self):"},{"line_number":75,"context_line":"        return pecan.testing.load_test_app("},{"line_number":76,"context_line":"            {\u0027app\u0027: pconfig.app, \u0027wsme\u0027: pconfig.wsme})"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def _get_full_path(self, path):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_68224003","line":75,"range":{"start_line":75,"start_character":42,"end_line":75,"end_character":43},"in_reply_to":"1ac06dbe_5211f35c","updated":"2016-08-24 19:30:59.000000000","message":"You\u0027re telling that we should use the normal app for tests and not that from testing?","commit_id":"ae3f2875922c999e28de3554a4bf79c3e937cab8"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"4633a9ba57a7bf98b1efaed4656675366ca6e640","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        self.addCleanup(reset_pecan)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _make_app(self):"},{"line_number":75,"context_line":"        return pecan.testing.load_test_app("},{"line_number":76,"context_line":"            {\u0027app\u0027: pconfig.app, \u0027wsme\u0027: pconfig.wsme})"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def _get_full_path(self, path):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_c3fb5746","line":75,"range":{"start_line":75,"start_character":42,"end_line":75,"end_character":43},"in_reply_to":"1ac06dbe_68224003","updated":"2016-08-24 19:38:17.000000000","message":"Sorry no, I was referring to the formatting. Just a nit though.","commit_id":"ae3f2875922c999e28de3554a4bf79c3e937cab8"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0261d85748974a7bec2547d4ffaf2b75177e1494","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        cfg.CONF.set_override(\u0027api_handler\u0027, \u0027simulated_handler\u0027)"},{"line_number":54,"context_line":"        cfg.CONF.set_override(\u0027network_driver\u0027, \u0027network_noop_driver\u0027,"},{"line_number":55,"context_line":"                              group\u003d\u0027controller_worker\u0027)"},{"line_number":56,"context_line":"        cfg.CONF.set_override(\u0027auth_strategy\u0027, \u0027noauth\u0027)"},{"line_number":57,"context_line":"        self.lb_repo \u003d repositories.LoadBalancerRepository()"},{"line_number":58,"context_line":"        self.listener_repo \u003d repositories.ListenerRepository()"},{"line_number":59,"context_line":"        self.listener_stats_repo \u003d repositories.ListenerStatisticsRepository()"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa6399be_8ed5d644","line":56,"range":{"start_line":56,"start_character":8,"end_line":56,"end_character":56},"updated":"2016-10-11 21:37:02.000000000","message":"This needs to be updated per patch: https://review.openstack.org/#/c/381344/\n\nThe merge conflict might catch this.","commit_id":"10d7baccc14a7f88657319213f1c87dcc47eb9f3"}],"releasenotes/notes/enable-keystone-on-api-b3ebb132ad5ab308.yaml":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0261d85748974a7bec2547d4ffaf2b75177e1494","unresolved":false,"context_lines":[{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - After setting \"auth_strategy \u003d keystone\" all incoming requests to Octavia"},{"line_number":6,"context_line":"    API will be verified using Keystone are they send by authenticated person."},{"line_number":7,"context_line":"    By default this feature is disabled to not interact with existing"},{"line_number":8,"context_line":"    environment configuration."},{"line_number":9,"context_line":"upgrade:"},{"line_number":10,"context_line":"  - This feature add new configuration value \"auth_strategy\" which by default"},{"line_number":11,"context_line":"    is set for \"noauth\"."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"fa6399be_4ebc9e05","line":8,"range":{"start_line":7,"start_character":0,"end_line":8,"end_character":30},"updated":"2016-10-11 21:37:02.000000000","message":"Same question about the default.","commit_id":"10d7baccc14a7f88657319213f1c87dcc47eb9f3"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"fa2c426ff74054ba105351950fed057226d9b6c4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - After setting \"auth_strategy \u003d keystone\" all incoming requests to Octavia"},{"line_number":6,"context_line":"    API will be verified using Keystone are they send by authenticated person."},{"line_number":7,"context_line":"    By default that option is disabled because Neutron LBaaS v2 is not"},{"line_number":8,"context_line":"    supporting that functionality properly."},{"line_number":9,"context_line":"upgrade:"},{"line_number":10,"context_line":"  - This feature add new configuration value \"auth_strategy\" which by default"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"5a74a57a_69209f4a","line":7,"updated":"2016-11-23 09:42:35.000000000","message":"hmmm, I see.\n\nDo we test this in the scenario?\n\nwe should make sure auth is properly tested.","commit_id":"1ace351fd80fdedacb0a2e40f25455050386044b"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"978e009396ee15a29ee10e2527b39c3d2ba53846","unresolved":false,"context_lines":[{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - After setting \"auth_strategy \u003d keystone\" all incoming requests to Octavia"},{"line_number":6,"context_line":"    API will be verified using Keystone are they send by authenticated person."},{"line_number":7,"context_line":"    By default that option is disabled because Neutron LBaaS v2 is not"},{"line_number":8,"context_line":"    supporting that functionality properly."},{"line_number":9,"context_line":"upgrade:"},{"line_number":10,"context_line":"  - This feature add new configuration value \"auth_strategy\" which by default"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"5a74a57a_78b934e9","line":7,"in_reply_to":"5a74a57a_69209f4a","updated":"2016-11-23 17:02:45.000000000","message":"So again for now not, we\u0027re not testing that in scenario tests. We\u0027re planning to add them when we\u0027re gonna start with new API.","commit_id":"1ace351fd80fdedacb0a2e40f25455050386044b"}]}
