)]}'
{"bin/keystone-all":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"2d4828ba564c5731b1585d87d894e5041af7bdff","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import logging"},{"line_number":19,"context_line":"import os"},{"line_number":20,"context_line":"import signal"},{"line_number":21,"context_line":"import sys"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# If ../keystone/__init__.py exists, add ../ to Python search path, so that"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAASn%2F%2FaR4%3D","side":"PARENT","line":20,"updated":"2013-09-05 01:40:45.000000000","message":"Why was the signal handling dropped?","commit_id":"30615ee007d8a98fbaab6929993d85bea8b9cd63"},{"author":{"_account_id":7500,"name":"Peter Feiner","email":"peter@gridcentric.ca","username":"peter"},"change_message_id":"49cf68fe8aa751896fd099d4e092f0b73410f350","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import logging"},{"line_number":19,"context_line":"import os"},{"line_number":20,"context_line":"import signal"},{"line_number":21,"context_line":"import sys"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# If ../keystone/__init__.py exists, add ../ to Python search path, so that"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAASn%2F%2FYbE%3D","side":"PARENT","line":20,"in_reply_to":"AAAASn%2F%2FaR4%3D","updated":"2013-09-05 12:54:01.000000000","message":"It\u0027s done by keystone.openstack.common.service.","commit_id":"30615ee007d8a98fbaab6929993d85bea8b9cd63"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7c2ae4e097bc827bac1abf00c9d8904b887cb66d","unresolved":false,"context_lines":[{"line_number":47,"context_line":"from keystone.common import utils"},{"line_number":48,"context_line":"from keystone import config"},{"line_number":49,"context_line":"from keystone.openstack.common.gettextutils import _"},{"line_number":50,"context_line":"from keystone.openstack.common import service"},{"line_number":51,"context_line":"from keystone.openstack.common import systemd"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"1ae5cdf2_5064fa48","line":50,"updated":"2014-06-06 17:02:48.000000000","message":"add module\u003dservice to openstack-common.conf","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"7cafc0dd85efe4682ac9342324a5e150c32618ec","unresolved":false,"context_lines":[{"line_number":47,"context_line":"from keystone.common import utils"},{"line_number":48,"context_line":"from keystone import config"},{"line_number":49,"context_line":"from keystone.openstack.common.gettextutils import _"},{"line_number":50,"context_line":"from keystone.openstack.common import service"},{"line_number":51,"context_line":"from keystone.openstack.common import systemd"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"1ae5cdf2_989ea406","line":50,"in_reply_to":"1ae5cdf2_5064fa48","updated":"2014-06-06 20:41:21.000000000","message":"Yup -- thanks :-)","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7c2ae4e097bc827bac1abf00c9d8904b887cb66d","unresolved":false,"context_lines":[{"line_number":57,"context_line":"class ServerWrapper(object):"},{"line_number":58,"context_line":"    \"\"\"Wraps a Server with some launching info \u0026 capabilities.\"\"\""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def __init__(self, server, workers):"},{"line_number":61,"context_line":"        self.server \u003d server"},{"line_number":62,"context_line":"        self.workers \u003d workers"},{"line_number":63,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"1ae5cdf2_b03d3e2f","line":60,"updated":"2014-06-06 17:02:48.000000000","message":"suggest change \"workers\" to \"worker_count\" otherwise I\u0027d expect the type to be a list of workers.","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"7cafc0dd85efe4682ac9342324a5e150c32618ec","unresolved":false,"context_lines":[{"line_number":57,"context_line":"class ServerWrapper(object):"},{"line_number":58,"context_line":"    \"\"\"Wraps a Server with some launching info \u0026 capabilities.\"\"\""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def __init__(self, server, workers):"},{"line_number":61,"context_line":"        self.server \u003d server"},{"line_number":62,"context_line":"        self.workers \u003d workers"},{"line_number":63,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"1ae5cdf2_f31b4b1a","line":60,"in_reply_to":"1ae5cdf2_b03d3e2f","updated":"2014-06-06 20:41:21.000000000","message":"Glance, Nova and the oslo service library we\u0027re using here use \u0027workers\u0027 as an int counter, Swift uses ... worker_count. I think either is probably ok. I\u0027m inclined to leave as is unless you feel that\u0027s unacceptable.","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7c2ae4e097bc827bac1abf00c9d8904b887cb66d","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def launch_with(self, launcher):"},{"line_number":65,"context_line":"        self.server.listen()"},{"line_number":66,"context_line":"        if self.workers \u003e 1:"},{"line_number":67,"context_line":"            launcher.launch_service(self.server, self.workers)"},{"line_number":68,"context_line":"        else:"},{"line_number":69,"context_line":"            launcher.launch_service(self.server)"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"1ae5cdf2_f0f0a693","line":66,"updated":"2014-06-06 17:02:48.000000000","message":"why do we have to do this and can\u0027t just always use launcher.launch_service(self.server, self.workers) ?\n\n(add a comment)","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"7cafc0dd85efe4682ac9342324a5e150c32618ec","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def launch_with(self, launcher):"},{"line_number":65,"context_line":"        self.server.listen()"},{"line_number":66,"context_line":"        if self.workers \u003e 1:"},{"line_number":67,"context_line":"            launcher.launch_service(self.server, self.workers)"},{"line_number":68,"context_line":"        else:"},{"line_number":69,"context_line":"            launcher.launch_service(self.server)"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"1ae5cdf2_3854b020","line":66,"in_reply_to":"1ae5cdf2_f0f0a693","updated":"2014-06-06 20:41:21.000000000","message":"I\u0027ll need to take a look. (I\u0027ve just rebased the code as verbatim as possible.)","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7c2ae4e097bc827bac1abf00c9d8904b887cb66d","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            launcher.launch_service(self.server)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"def create_server(conf, name, host, port, workers):"},{"line_number":73,"context_line":"    app \u003d deploy.loadapp(\u0027config:%s\u0027 % conf, name\u003dname)"},{"line_number":74,"context_line":"    server \u003d environment.Server(app, host\u003dhost, port\u003dport,"},{"line_number":75,"context_line":"                                keepalive\u003dCONF.tcp_keepalive,"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"1ae5cdf2_d0d64ac3","line":72,"updated":"2014-06-06 17:02:48.000000000","message":"change workers to worker_count","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"}],"etc/keystone.conf.sample":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7938fcb3f3fc62993c5a2947fbfed85911f514bc","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"# The number of worker processes to serve the public and admin WSGI"},{"line_number":20,"context_line":"# applications respectively."},{"line_number":21,"context_line":"# public_workers \u003d 2"},{"line_number":22,"context_line":"# admin_workers \u003d 2"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# The port number which the OpenStack Compute service listens on"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAASn%2F%2FsBI%3D","line":21,"updated":"2013-08-30 21:05:31.000000000","message":"I think the default should be 1 if this is going into Havana.","commit_id":"13ab70fc6af989a0817146d1b8e486f0b7ff617f"},{"author":{"_account_id":7500,"name":"Peter Feiner","email":"peter@gridcentric.ca","username":"peter"},"change_message_id":"1ba379936fc7d0c008821e178474d034c36eb288","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"# The number of worker processes to serve the public and admin WSGI"},{"line_number":20,"context_line":"# applications respectively."},{"line_number":21,"context_line":"# public_workers \u003d 2"},{"line_number":22,"context_line":"# admin_workers \u003d 2"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# The port number which the OpenStack Compute service listens on"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAASn%2F%2FYa0%3D","line":21,"in_reply_to":"AAAASn%2F%2FsBI%3D","updated":"2013-09-05 12:55:51.000000000","message":"Done","commit_id":"13ab70fc6af989a0817146d1b8e486f0b7ff617f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7938fcb3f3fc62993c5a2947fbfed85911f514bc","unresolved":false,"context_lines":[{"line_number":19,"context_line":"# The number of worker processes to serve the public and admin WSGI"},{"line_number":20,"context_line":"# applications respectively."},{"line_number":21,"context_line":"# public_workers \u003d 2"},{"line_number":22,"context_line":"# admin_workers \u003d 2"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# The port number which the OpenStack Compute service listens on"},{"line_number":25,"context_line":"# compute_port \u003d 8774"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAASn%2F%2FsBE%3D","line":22,"updated":"2013-08-30 21:05:31.000000000","message":"I think the default should be 1 if this is going into Havana.","commit_id":"13ab70fc6af989a0817146d1b8e486f0b7ff617f"},{"author":{"_account_id":7500,"name":"Peter Feiner","email":"peter@gridcentric.ca","username":"peter"},"change_message_id":"1ba379936fc7d0c008821e178474d034c36eb288","unresolved":false,"context_lines":[{"line_number":19,"context_line":"# The number of worker processes to serve the public and admin WSGI"},{"line_number":20,"context_line":"# applications respectively."},{"line_number":21,"context_line":"# public_workers \u003d 2"},{"line_number":22,"context_line":"# admin_workers \u003d 2"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# The port number which the OpenStack Compute service listens on"},{"line_number":25,"context_line":"# compute_port \u003d 8774"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAASn%2F%2FYaw%3D","line":22,"in_reply_to":"AAAASn%2F%2FsBE%3D","updated":"2013-09-05 12:55:51.000000000","message":"Done","commit_id":"13ab70fc6af989a0817146d1b8e486f0b7ff617f"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"27b3f8d6e70d0e183bd684548a2ae145493027a9","unresolved":false,"context_lines":[{"line_number":23,"context_line":"#admin_bind_host\u003d0.0.0.0"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"# The number of worker processes to serve the public and admin WSGI"},{"line_number":26,"context_line":"# applications respectively."},{"line_number":27,"context_line":"# public_workers \u003d 1"},{"line_number":28,"context_line":"# admin_workers \u003d 1"},{"line_number":29,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":6,"id":"1ae5cdf2_42648bb8","line":26,"updated":"2014-06-12 06:42:03.000000000","message":"this text should be in the \"help\" attribute as keystone.conf.sample is auto-generated.","commit_id":"91845a3411b6e1ebaa6f20c6e8143484889d9db1"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"8d5a7a49c1ab354f19bca49274725eb2ab5d3601","unresolved":false,"context_lines":[{"line_number":23,"context_line":"#admin_bind_host\u003d0.0.0.0"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"# The number of worker processes to serve the public and admin WSGI"},{"line_number":26,"context_line":"# applications respectively."},{"line_number":27,"context_line":"# public_workers \u003d 1"},{"line_number":28,"context_line":"# admin_workers \u003d 1"},{"line_number":29,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":6,"id":"1ae5cdf2_fb0c5944","line":26,"in_reply_to":"1ae5cdf2_42648bb8","updated":"2014-06-12 11:59:09.000000000","message":"Ah, I didn\u0027t realise -- thanks!","commit_id":"91845a3411b6e1ebaa6f20c6e8143484889d9db1"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"27b3f8d6e70d0e183bd684548a2ae145493027a9","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"# The number of worker processes to serve the public and admin WSGI"},{"line_number":26,"context_line":"# applications respectively."},{"line_number":27,"context_line":"# public_workers \u003d 1"},{"line_number":28,"context_line":"# admin_workers \u003d 1"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"# The port which the OpenStack Compute service listens on."}],"source_content_type":"application/octet-stream","patch_set":6,"id":"1ae5cdf2_02b8c30f","line":27,"updated":"2014-06-12 06:42:03.000000000","message":"why default to 1? Is there a standard recommendation so we can get some mileage out of this thing?","commit_id":"91845a3411b6e1ebaa6f20c6e8143484889d9db1"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"8d5a7a49c1ab354f19bca49274725eb2ab5d3601","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"# The number of worker processes to serve the public and admin WSGI"},{"line_number":26,"context_line":"# applications respectively."},{"line_number":27,"context_line":"# public_workers \u003d 1"},{"line_number":28,"context_line":"# admin_workers \u003d 1"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"# The port which the OpenStack Compute service listens on."}],"source_content_type":"application/octet-stream","patch_set":6,"id":"1ae5cdf2_f6139059","line":27,"in_reply_to":"1ae5cdf2_02b8c30f","updated":"2014-06-12 11:59:09.000000000","message":"Do you mean a standard as in \u0027what do other projects do\u0027? If so, they typically either pick \u00271\u0027 or else dynamically set to the number of processes (outside the scope of this patch).\n\nIn terms of mileage: this patch defaults to \u00272\u0027 for the functional tests, so we should get mileage there.","commit_id":"91845a3411b6e1ebaa6f20c6e8143484889d9db1"}],"keystone/common/config.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"87bdd2cd56c268af0f5cc628e06e11c96208f777","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        cfg.StrOpt(\u0027admin_endpoint\u0027,"},{"line_number":37,"context_line":"                   default\u003d\u0027http://localhost:%(admin_port)s/\u0027),"},{"line_number":38,"context_line":"        cfg.IntOpt(\u0027public_workers\u0027, default\u003d1),"},{"line_number":39,"context_line":"        cfg.IntOpt(\u0027admin_workers\u0027, default\u003d1),"},{"line_number":40,"context_line":"        cfg.StrOpt(\u0027onready\u0027),"},{"line_number":41,"context_line":"        cfg.StrOpt(\u0027auth_admin_prefix\u0027, default\u003d\u0027\u0027),"},{"line_number":42,"context_line":"        cfg.StrOpt(\u0027policy_file\u0027, default\u003d\u0027policy.json\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASX%2F%2Fzjk%3D","line":39,"updated":"2013-08-27 00:30:13.000000000","message":"as common a dual core CPU\u0027s and hyperthreading are, I\u0027d be happy to default to 2 or 4\n\nthese should also be documented in keystone.conf.sample","commit_id":"6b1e9c40cb48b7d81ba485e52a1d4c4bc3535d73"},{"author":{"_account_id":7500,"name":"Peter Feiner","email":"peter@gridcentric.ca","username":"peter"},"change_message_id":"791197aa423bfafe059e73fb53bbe7fb1a5677ca","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        cfg.StrOpt(\u0027admin_endpoint\u0027,"},{"line_number":37,"context_line":"                   default\u003d\u0027http://localhost:%(admin_port)s/\u0027),"},{"line_number":38,"context_line":"        cfg.IntOpt(\u0027public_workers\u0027, default\u003d1),"},{"line_number":39,"context_line":"        cfg.IntOpt(\u0027admin_workers\u0027, default\u003d1),"},{"line_number":40,"context_line":"        cfg.StrOpt(\u0027onready\u0027),"},{"line_number":41,"context_line":"        cfg.StrOpt(\u0027auth_admin_prefix\u0027, default\u003d\u0027\u0027),"},{"line_number":42,"context_line":"        cfg.StrOpt(\u0027policy_file\u0027, default\u003d\u0027policy.json\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2F92g%3D","line":39,"in_reply_to":"AAAASX%2F%2Fzjk%3D","updated":"2013-08-27 13:09:08.000000000","message":"Done","commit_id":"6b1e9c40cb48b7d81ba485e52a1d4c4bc3535d73"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7938fcb3f3fc62993c5a2947fbfed85911f514bc","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                   default\u003d\u0027http://localhost:%(public_port)s/\u0027),"},{"line_number":36,"context_line":"        cfg.StrOpt(\u0027admin_endpoint\u0027,"},{"line_number":37,"context_line":"                   default\u003d\u0027http://localhost:%(admin_port)s/\u0027),"},{"line_number":38,"context_line":"        cfg.IntOpt(\u0027public_workers\u0027, default\u003d2),"},{"line_number":39,"context_line":"        cfg.IntOpt(\u0027admin_workers\u0027, default\u003d2),"},{"line_number":40,"context_line":"        cfg.StrOpt(\u0027onready\u0027),"},{"line_number":41,"context_line":"        cfg.StrOpt(\u0027auth_admin_prefix\u0027, default\u003d\u0027\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FsBY%3D","line":38,"updated":"2013-08-30 21:05:31.000000000","message":"I think the default should be 1 if this is going into Havana.","commit_id":"13ab70fc6af989a0817146d1b8e486f0b7ff617f"},{"author":{"_account_id":7500,"name":"Peter Feiner","email":"peter@gridcentric.ca","username":"peter"},"change_message_id":"1ba379936fc7d0c008821e178474d034c36eb288","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                   default\u003d\u0027http://localhost:%(public_port)s/\u0027),"},{"line_number":36,"context_line":"        cfg.StrOpt(\u0027admin_endpoint\u0027,"},{"line_number":37,"context_line":"                   default\u003d\u0027http://localhost:%(admin_port)s/\u0027),"},{"line_number":38,"context_line":"        cfg.IntOpt(\u0027public_workers\u0027, default\u003d2),"},{"line_number":39,"context_line":"        cfg.IntOpt(\u0027admin_workers\u0027, default\u003d2),"},{"line_number":40,"context_line":"        cfg.StrOpt(\u0027onready\u0027),"},{"line_number":41,"context_line":"        cfg.StrOpt(\u0027auth_admin_prefix\u0027, default\u003d\u0027\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FYas%3D","line":38,"in_reply_to":"AAAASn%2F%2FsBY%3D","updated":"2013-09-05 12:55:51.000000000","message":"Done","commit_id":"13ab70fc6af989a0817146d1b8e486f0b7ff617f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7938fcb3f3fc62993c5a2947fbfed85911f514bc","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        cfg.StrOpt(\u0027admin_endpoint\u0027,"},{"line_number":37,"context_line":"                   default\u003d\u0027http://localhost:%(admin_port)s/\u0027),"},{"line_number":38,"context_line":"        cfg.IntOpt(\u0027public_workers\u0027, default\u003d2),"},{"line_number":39,"context_line":"        cfg.IntOpt(\u0027admin_workers\u0027, default\u003d2),"},{"line_number":40,"context_line":"        cfg.StrOpt(\u0027onready\u0027),"},{"line_number":41,"context_line":"        cfg.StrOpt(\u0027auth_admin_prefix\u0027, default\u003d\u0027\u0027),"},{"line_number":42,"context_line":"        cfg.StrOpt(\u0027policy_file\u0027, default\u003d\u0027policy.json\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FsBU%3D","line":39,"updated":"2013-08-30 21:05:31.000000000","message":"I think the default should be 1 if this is going into Havana.","commit_id":"13ab70fc6af989a0817146d1b8e486f0b7ff617f"},{"author":{"_account_id":7500,"name":"Peter Feiner","email":"peter@gridcentric.ca","username":"peter"},"change_message_id":"1ba379936fc7d0c008821e178474d034c36eb288","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        cfg.StrOpt(\u0027admin_endpoint\u0027,"},{"line_number":37,"context_line":"                   default\u003d\u0027http://localhost:%(admin_port)s/\u0027),"},{"line_number":38,"context_line":"        cfg.IntOpt(\u0027public_workers\u0027, default\u003d2),"},{"line_number":39,"context_line":"        cfg.IntOpt(\u0027admin_workers\u0027, default\u003d2),"},{"line_number":40,"context_line":"        cfg.StrOpt(\u0027onready\u0027),"},{"line_number":41,"context_line":"        cfg.StrOpt(\u0027auth_admin_prefix\u0027, default\u003d\u0027\u0027),"},{"line_number":42,"context_line":"        cfg.StrOpt(\u0027policy_file\u0027, default\u003d\u0027policy.json\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FYao%3D","line":39,"in_reply_to":"AAAASn%2F%2FsBU%3D","updated":"2013-09-05 12:55:51.000000000","message":"Done","commit_id":"13ab70fc6af989a0817146d1b8e486f0b7ff617f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7c2ae4e097bc827bac1abf00c9d8904b887cb66d","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                        \u0027to set this value if the base URL contains a path \u0027"},{"line_number":70,"context_line":"                        \u0027(e.g. /prefix/v2.0) or the endpoint should be found \u0027"},{"line_number":71,"context_line":"                        \u0027on a different server.\u0027),"},{"line_number":72,"context_line":"        cfg.IntOpt(\u0027public_workers\u0027, default\u003d1),"},{"line_number":73,"context_line":"        cfg.IntOpt(\u0027admin_workers\u0027, default\u003d1),"},{"line_number":74,"context_line":"        # default max request size is 112k"},{"line_number":75,"context_line":"        cfg.IntOpt(\u0027max_request_body_size\u0027, default\u003d114688,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_b000de36","line":72,"updated":"2014-06-06 17:02:48.000000000","message":"I don\u0027t think this can default to multiple workers since we\u0027ve got some runway.","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"5688e51f7489ec1eb05b18767138634d416c5868","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                        \u0027to set this value if the base URL contains a path \u0027"},{"line_number":70,"context_line":"                        \u0027(e.g. /prefix/v2.0) or the endpoint should be found \u0027"},{"line_number":71,"context_line":"                        \u0027on a different server.\u0027),"},{"line_number":72,"context_line":"        cfg.IntOpt(\u0027public_workers\u0027, default\u003d1),"},{"line_number":73,"context_line":"        cfg.IntOpt(\u0027admin_workers\u0027, default\u003d1),"},{"line_number":74,"context_line":"        # default max request size is 112k"},{"line_number":75,"context_line":"        cfg.IntOpt(\u0027max_request_body_size\u0027, default\u003d114688,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_ab9f634f","line":72,"in_reply_to":"1ae5cdf2_134d17c5","updated":"2014-06-09 15:36:51.000000000","message":"We could, but I\u0027m inclined to be conservative here and stick with the existing default. \n\nOther services either seem to have \u00271\u0027 or else dynamically set to the number of cpus available (outside the scope of this patch).\n\nIf there\u0027s consensus to increase I\u0027m happy to do so.","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c9d4d8ba7549e2880c1d657d825a5996aab77a71","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                        \u0027to set this value if the base URL contains a path \u0027"},{"line_number":70,"context_line":"                        \u0027(e.g. /prefix/v2.0) or the endpoint should be found \u0027"},{"line_number":71,"context_line":"                        \u0027on a different server.\u0027),"},{"line_number":72,"context_line":"        cfg.IntOpt(\u0027public_workers\u0027, default\u003d1),"},{"line_number":73,"context_line":"        cfg.IntOpt(\u0027admin_workers\u0027, default\u003d1),"},{"line_number":74,"context_line":"        # default max request size is 112k"},{"line_number":75,"context_line":"        cfg.IntOpt(\u0027max_request_body_size\u0027, default\u003d114688,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_134d17c5","line":72,"in_reply_to":"1ae5cdf2_182e14a6","updated":"2014-06-06 20:45:43.000000000","message":"Sorry, I reworked it and then it made no sense... was trying to say:\n\nThis can default to multiple workers since we\u0027ve got some runway.","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"7cafc0dd85efe4682ac9342324a5e150c32618ec","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                        \u0027to set this value if the base URL contains a path \u0027"},{"line_number":70,"context_line":"                        \u0027(e.g. /prefix/v2.0) or the endpoint should be found \u0027"},{"line_number":71,"context_line":"                        \u0027on a different server.\u0027),"},{"line_number":72,"context_line":"        cfg.IntOpt(\u0027public_workers\u0027, default\u003d1),"},{"line_number":73,"context_line":"        cfg.IntOpt(\u0027admin_workers\u0027, default\u003d1),"},{"line_number":74,"context_line":"        # default max request size is 112k"},{"line_number":75,"context_line":"        cfg.IntOpt(\u0027max_request_body_size\u0027, default\u003d114688,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_182e14a6","line":72,"in_reply_to":"1ae5cdf2_b000de36","updated":"2014-06-06 20:41:21.000000000","message":"Can you clarify? Not sure I get what you mean. Thanks.","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"27b3f8d6e70d0e183bd684548a2ae145493027a9","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                        \u0027to set this value if the base URL contains a path \u0027"},{"line_number":70,"context_line":"                        \u0027(e.g. /prefix/v2.0) or the endpoint should be found \u0027"},{"line_number":71,"context_line":"                        \u0027on a different server.\u0027),"},{"line_number":72,"context_line":"        cfg.IntOpt(\u0027public_workers\u0027, default\u003d1),"},{"line_number":73,"context_line":"        cfg.IntOpt(\u0027admin_workers\u0027, default\u003d1),"},{"line_number":74,"context_line":"        # default max request size is 112k"},{"line_number":75,"context_line":"        cfg.IntOpt(\u0027max_request_body_size\u0027, default\u003d114688,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_c26fbb90","line":72,"updated":"2014-06-12 06:42:03.000000000","message":"cfg.IntOpt(\u0027public_workers\u0027, default\u003d1,\n                  help\u003d\u0027The number of worker processes to serve the public application\u0027)\n\nsame with the one below","commit_id":"91845a3411b6e1ebaa6f20c6e8143484889d9db1"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"8d5a7a49c1ab354f19bca49274725eb2ab5d3601","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                        \u0027to set this value if the base URL contains a path \u0027"},{"line_number":70,"context_line":"                        \u0027(e.g. /prefix/v2.0) or the endpoint should be found \u0027"},{"line_number":71,"context_line":"                        \u0027on a different server.\u0027),"},{"line_number":72,"context_line":"        cfg.IntOpt(\u0027public_workers\u0027, default\u003d1),"},{"line_number":73,"context_line":"        cfg.IntOpt(\u0027admin_workers\u0027, default\u003d1),"},{"line_number":74,"context_line":"        # default max request size is 112k"},{"line_number":75,"context_line":"        cfg.IntOpt(\u0027max_request_body_size\u0027, default\u003d114688,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_962c0c9b","line":72,"in_reply_to":"1ae5cdf2_c26fbb90","updated":"2014-06-12 11:59:09.000000000","message":"Yes - thanks.","commit_id":"91845a3411b6e1ebaa6f20c6e8143484889d9db1"}],"keystone/common/environment/eventlet_server.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7938fcb3f3fc62993c5a2947fbfed85911f514bc","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def listen(self, key\u003dNone, backlog\u003d128):"},{"line_number":50,"context_line":"        \"\"\"Create and start listening on socket."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        Call before forking worker processes."},{"line_number":53,"context_line":"        \"\"\""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        if self.socket is not None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FsA8%3D","line":52,"updated":"2013-08-30 21:05:31.000000000","message":"add a comment that this raises Exception if this has been called already.\n\nAlso add a comment that if this is successful then, self.socket is set to the socket to listen on.\n\nAlso, add unit tests.","commit_id":"13ab70fc6af989a0817146d1b8e486f0b7ff617f"},{"author":{"_account_id":7500,"name":"Peter Feiner","email":"peter@gridcentric.ca","username":"peter"},"change_message_id":"1ba379936fc7d0c008821e178474d034c36eb288","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def listen(self, key\u003dNone, backlog\u003d128):"},{"line_number":50,"context_line":"        \"\"\"Create and start listening on socket."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        Call before forking worker processes."},{"line_number":53,"context_line":"        \"\"\""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        if self.socket is not None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FYaY%3D","line":52,"in_reply_to":"AAAASn%2F%2FsA8%3D","updated":"2013-09-05 12:55:51.000000000","message":"Will do.","commit_id":"13ab70fc6af989a0817146d1b8e486f0b7ff617f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7938fcb3f3fc62993c5a2947fbfed85911f514bc","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        try:"},{"line_number":128,"context_line":"            eventlet.wsgi.server(socket, application, custom_pool\u003dself.pool,"},{"line_number":129,"context_line":"                                 log\u003dlogging.WritableLogger(log))"},{"line_number":130,"context_line":"        except greenlet.GreenletExit:"},{"line_number":131,"context_line":"            pass"},{"line_number":132,"context_line":"        except Exception:"},{"line_number":133,"context_line":"            LOG.exception(_(\u0027Server error\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FsBc%3D","line":130,"updated":"2013-08-30 21:05:31.000000000","message":"add a comment why it\u0027s ok to ignore this error.","commit_id":"13ab70fc6af989a0817146d1b8e486f0b7ff617f"},{"author":{"_account_id":7500,"name":"Peter Feiner","email":"peter@gridcentric.ca","username":"peter"},"change_message_id":"1ba379936fc7d0c008821e178474d034c36eb288","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        try:"},{"line_number":128,"context_line":"            eventlet.wsgi.server(socket, application, custom_pool\u003dself.pool,"},{"line_number":129,"context_line":"                                 log\u003dlogging.WritableLogger(log))"},{"line_number":130,"context_line":"        except greenlet.GreenletExit:"},{"line_number":131,"context_line":"            pass"},{"line_number":132,"context_line":"        except Exception:"},{"line_number":133,"context_line":"            LOG.exception(_(\u0027Server error\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FYaU%3D","line":130,"in_reply_to":"AAAASn%2F%2FsBc%3D","updated":"2013-09-05 12:55:51.000000000","message":"ok.","commit_id":"13ab70fc6af989a0817146d1b8e486f0b7ff617f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7c2ae4e097bc827bac1abf00c9d8904b887cb66d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        \"\"\"Run a WSGI server with the given application.\"\"\""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        if self.socket is None:"},{"line_number":55,"context_line":"            self.listen(key, backlog)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        self.greenthread \u003d self.pool.spawn(self._run,"},{"line_number":58,"context_line":"                                           self.application,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_10f8b248","line":55,"updated":"2014-06-06 17:02:48.000000000","message":"use keyword arguments for keyword params -- key\u003dkey,backlog\u003dbacklog. That way we can change the args easier.","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"7cafc0dd85efe4682ac9342324a5e150c32618ec","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        \"\"\"Run a WSGI server with the given application.\"\"\""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        if self.socket is None:"},{"line_number":55,"context_line":"            self.listen(key, backlog)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        self.greenthread \u003d self.pool.spawn(self._run,"},{"line_number":58,"context_line":"                                           self.application,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_3802f00b","line":55,"in_reply_to":"1ae5cdf2_10f8b248","updated":"2014-06-06 20:41:21.000000000","message":"Yup","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7c2ae4e097bc827bac1abf00c9d8904b887cb66d","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                                          server_side\u003dTrue,"},{"line_number":98,"context_line":"                                          cert_reqs\u003dcert_reqs,"},{"line_number":99,"context_line":"                                          ca_certs\u003dself.ca_certs)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        # Optionally enable keepalive on the wsgi socket."},{"line_number":102,"context_line":"        if self.keepalive:"},{"line_number":103,"context_line":"            _socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_10a6f253","line":100,"updated":"2014-06-06 17:02:48.000000000","message":"doesn\u0027t the change on the previous line break ssl? I\u0027ll have to try it.","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"7cafc0dd85efe4682ac9342324a5e150c32618ec","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                                          server_side\u003dTrue,"},{"line_number":98,"context_line":"                                          cert_reqs\u003dcert_reqs,"},{"line_number":99,"context_line":"                                          ca_certs\u003dself.ca_certs)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        # Optionally enable keepalive on the wsgi socket."},{"line_number":102,"context_line":"        if self.keepalive:"},{"line_number":103,"context_line":"            _socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_53febf06","line":100,"in_reply_to":"1ae5cdf2_10a6f253","updated":"2014-06-06 20:41:21.000000000","message":"Not sure -- this is a WIP at the moment. If you test and see breakage let me know -- thanks.","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"5688e51f7489ec1eb05b18767138634d416c5868","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                                          server_side\u003dTrue,"},{"line_number":98,"context_line":"                                          cert_reqs\u003dcert_reqs,"},{"line_number":99,"context_line":"                                          ca_certs\u003dself.ca_certs)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        # Optionally enable keepalive on the wsgi socket."},{"line_number":102,"context_line":"        if self.keepalive:"},{"line_number":103,"context_line":"            _socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_a6923a9d","line":100,"in_reply_to":"1ae5cdf2_53febf06","updated":"2014-06-09 15:36:51.000000000","message":"I think you\u0027re right -- that I missed a line here. Good spot :-)","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7c2ae4e097bc827bac1abf00c9d8904b887cb66d","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        try:"},{"line_number":140,"context_line":"            eventlet.wsgi.server(socket, application, custom_pool\u003dself.pool,"},{"line_number":141,"context_line":"                                 log\u003dlog.WritableLogger(logger), debug\u003dFalse)"},{"line_number":142,"context_line":"        except greenlet.GreenletExit:"},{"line_number":143,"context_line":"            pass"},{"line_number":144,"context_line":"        except Exception:"},{"line_number":145,"context_line":"            LOG.exception(_(\u0027Server error\u0027))"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_706c9609","line":142,"updated":"2014-06-06 17:02:48.000000000","message":"Add a comment why this exception should be eaten and not even logged.","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"5688e51f7489ec1eb05b18767138634d416c5868","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        try:"},{"line_number":140,"context_line":"            eventlet.wsgi.server(socket, application, custom_pool\u003dself.pool,"},{"line_number":141,"context_line":"                                 log\u003dlog.WritableLogger(logger), debug\u003dFalse)"},{"line_number":142,"context_line":"        except greenlet.GreenletExit:"},{"line_number":143,"context_line":"            pass"},{"line_number":144,"context_line":"        except Exception:"},{"line_number":145,"context_line":"            LOG.exception(_(\u0027Server error\u0027))"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_46825601","line":142,"in_reply_to":"1ae5cdf2_3319337a","updated":"2014-06-09 15:36:51.000000000","message":"This is a repeat of the code just above: line 133.\nI think this is for the same reason, ie waiting for all servers to exit.","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"7cafc0dd85efe4682ac9342324a5e150c32618ec","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        try:"},{"line_number":140,"context_line":"            eventlet.wsgi.server(socket, application, custom_pool\u003dself.pool,"},{"line_number":141,"context_line":"                                 log\u003dlog.WritableLogger(logger), debug\u003dFalse)"},{"line_number":142,"context_line":"        except greenlet.GreenletExit:"},{"line_number":143,"context_line":"            pass"},{"line_number":144,"context_line":"        except Exception:"},{"line_number":145,"context_line":"            LOG.exception(_(\u0027Server error\u0027))"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_3319337a","line":142,"in_reply_to":"1ae5cdf2_706c9609","updated":"2014-06-06 20:41:21.000000000","message":"I\u0027m not sure what Peter was thinking at this point -- do you have any idea?","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"}],"keystone/tests/core.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7c2ae4e097bc827bac1abf00c9d8904b887cb66d","unresolved":false,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    def config_overrides(self):"},{"line_number":332,"context_line":"        self.config_fixture.config(policy_file\u003ddirs.etc(\u0027policy.json\u0027))"},{"line_number":333,"context_line":"        self.config_fixture.config(public_workers\u003d2)"},{"line_number":334,"context_line":"        self.config_fixture.config(admin_workers\u003d2)"},{"line_number":335,"context_line":"        self.config_fixture.config(policy_file\u003ddirs.etc(\u0027policy.json\u0027))"},{"line_number":336,"context_line":"        self.config_fixture.config("}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_30176e56","line":333,"updated":"2014-06-06 17:02:48.000000000","message":"add a comment why this is here.","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7c2ae4e097bc827bac1abf00c9d8904b887cb66d","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        self.config_fixture.config(policy_file\u003ddirs.etc(\u0027policy.json\u0027))"},{"line_number":333,"context_line":"        self.config_fixture.config(public_workers\u003d2)"},{"line_number":334,"context_line":"        self.config_fixture.config(admin_workers\u003d2)"},{"line_number":335,"context_line":"        self.config_fixture.config(policy_file\u003ddirs.etc(\u0027policy.json\u0027))"},{"line_number":336,"context_line":"        self.config_fixture.config("},{"line_number":337,"context_line":"            group\u003d\u0027auth\u0027,"},{"line_number":338,"context_line":"            methods\u003d[\u0027keystone.auth.plugins.external.DefaultDomain\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_102b5295","line":335,"updated":"2014-06-06 17:02:48.000000000","message":"this needs be done twice?","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"7cafc0dd85efe4682ac9342324a5e150c32618ec","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        self.config_fixture.config(policy_file\u003ddirs.etc(\u0027policy.json\u0027))"},{"line_number":333,"context_line":"        self.config_fixture.config(public_workers\u003d2)"},{"line_number":334,"context_line":"        self.config_fixture.config(admin_workers\u003d2)"},{"line_number":335,"context_line":"        self.config_fixture.config(policy_file\u003ddirs.etc(\u0027policy.json\u0027))"},{"line_number":336,"context_line":"        self.config_fixture.config("},{"line_number":337,"context_line":"            group\u003d\u0027auth\u0027,"},{"line_number":338,"context_line":"            methods\u003d[\u0027keystone.auth.plugins.external.DefaultDomain\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_d33f2fb4","line":335,"in_reply_to":"1ae5cdf2_102b5295","updated":"2014-06-06 20:41:21.000000000","message":"Nope. I\u0027ll remove one.","commit_id":"420ea574ebf68f2520f0fe82799bdbc74eef6bad"}]}
