)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"f7e66213f62d809cbcb3017332ece5dade6f2bbd","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Changing return codes for this options:"},{"line_number":17,"context_line":"If can\u0027t locate config, returns 1."},{"line_number":18,"context_line":"If some of demanded servers already running, returns 1."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"For legacy reason the new behaviour is only enforced by `--strict`."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a26ad4f_a29a726c","line":18,"updated":"2015-11-02 23:34:16.000000000","message":"Is there a reason that a different non-zero number cannot be returned in this second failure case?  What about if at least one server does not start?","commit_id":"d64eaf38e71d752512bbc594820af0b30d6024e6"},{"author":{"_account_id":18015,"name":"Peter Lisák","email":"peter.lisak@gmail.com","username":"peter.lisak"},"change_message_id":"d8137ae7dcc8aa8f4d183801fbb64c1325f23f2a","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Changing return codes for this options:"},{"line_number":17,"context_line":"If can\u0027t locate config, returns 1."},{"line_number":18,"context_line":"If some of demanded servers already running, returns 1."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"For legacy reason the new behaviour is only enforced by `--strict`."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"fa80f949_5be78f12","line":18,"in_reply_to":"1a26ad4f_a29a726c","updated":"2015-11-03 11:39:08.000000000","message":"To be honest now I think it was wrong idea to returns 1. It should \u0027ignore\u0027 already-running servers and just start not-running servers. IMHO init script should keep these status codes http://refspecs.linuxfoundation.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html","commit_id":"d64eaf38e71d752512bbc594820af0b30d6024e6"}],"bin/swift-init":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"e08a153717825f0d3aa5cb06700f5951384bbd95","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        if set(ALIASES.keys()).intersection(set(servers)):"},{"line_number":84,"context_line":"            options.strict \u003d False"},{"line_number":85,"context_line":"        else:"},{"line_number":86,"context_line":"            options.strict \u003d True"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    manager \u003d Manager(servers, run_dir\u003doptions.run_dir)"},{"line_number":89,"context_line":"    try:"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"da85f559_d78f8621","line":86,"updated":"2015-11-09 22:38:57.000000000","message":"I think this behavior is essentially untested because it was implemeneted here instead of in the manager?","commit_id":"329d4cc89509d6ddba36f253d6c600f0d39fd777"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"afd370d994f31f5a07568847ce373952d47f4b32","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    # Changing behaviour if missing config"},{"line_number":54,"context_line":"    parser.add_option(\u0027--strict\u0027, dest\u003d\u0027strict\u0027, action\u003d\u0027store_true\u0027,"},{"line_number":55,"context_line":"                      help\u003d\"Return non-zero status code if some config is \""},{"line_number":56,"context_line":"                           \"missing. Default mode if server is explicitly \""},{"line_number":57,"context_line":"                           \"named.\")"},{"line_number":58,"context_line":"    # a negative option for strict"},{"line_number":59,"context_line":"    parser.add_option(\u0027--non-strict\u0027, dest\u003d\u0027strict\u0027, action\u003d\u0027store_false\u0027,"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"9a8ffd7b_1339a741","line":56,"updated":"2015-11-25 14:14:20.000000000","message":"I think this should say\n\n  Default mode if all servers are explicitly named","commit_id":"7b7c6c5249ba598f10770308e05f3d2ad4e60871"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"afd370d994f31f5a07568847ce373952d47f4b32","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    # a negative option for strict"},{"line_number":59,"context_line":"    parser.add_option(\u0027--non-strict\u0027, dest\u003d\u0027strict\u0027, action\u003d\u0027store_false\u0027,"},{"line_number":60,"context_line":"                      help\u003d\"Return zero status code even if some config is \""},{"line_number":61,"context_line":"                           \"missing. Default mode if server is one of aliases \""},{"line_number":62,"context_line":"                           \"`all`, `main` or `rest`.\")"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    options, args \u003d parser.parse_args()"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"9a8ffd7b_f383c3ca","line":61,"updated":"2015-11-25 14:14:20.000000000","message":"I think this should say:\n\n  Default mode if any server is one of aliases","commit_id":"7b7c6c5249ba598f10770308e05f3d2ad4e60871"}],"swift/common/db_replicator.py":[{"author":{"_account_id":16896,"name":"Ondřej Nový","email":"novy@ondrej.org","username":"onovy"},"change_message_id":"c31b31cf9a8aaadff9864336c93124931f9b5850","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        self.mount_check \u003d config_true_value(conf.get(\u0027mount_check\u0027, \u0027true\u0027))"},{"line_number":158,"context_line":"        self.bind_ip \u003d conf.get(\u0027bind_ip\u0027, \u00270.0.0.0\u0027)"},{"line_number":159,"context_line":"        self.port \u003d int(conf.get(\u0027bind_port\u0027, self.default_port))"},{"line_number":160,"context_line":"        self.logger.info(\"PORTISKO %s\", self.port)"},{"line_number":161,"context_line":"        concurrency \u003d int(conf.get(\u0027concurrency\u0027, 8))"},{"line_number":162,"context_line":"        self.cpool \u003d GreenPool(size\u003dconcurrency)"},{"line_number":163,"context_line":"        swift_dir \u003d conf.get(\u0027swift_dir\u0027, \u0027/etc/swift\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da85f559_51cabe50","line":160,"updated":"2015-11-15 14:45:35.000000000","message":"debug? :)","commit_id":"3da77379bfd6e8417da37259478d7d3e0ea1ecd0"}],"swift/common/manager.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"e08a153717825f0d3aa5cb06700f5951384bbd95","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                # convert glob to regex"},{"line_number":185,"context_line":"                self.server_names.update(["},{"line_number":186,"context_line":"                    s for s in ALL_SERVERS if"},{"line_number":187,"context_line":"                    re.match(server.replace(\u0027*\u0027, \u0027.*\u0027), s)])"},{"line_number":188,"context_line":"            else:"},{"line_number":189,"context_line":"                self.server_names.add(server)"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da85f559_7791fa51","side":"PARENT","line":187,"updated":"2015-11-09 22:38:57.000000000","message":"does anyone have an opinion on the default of:\n\nswift-init object-* start\n\nIt looks like an alias to me, but the default behavior here is going to be strict since that doesn\u0027t explicitly appear in ALIASES.\n\nI was thinking maybe:\n\n    if len(self.server_names) !\u003d len(servers):\n        self._default_strict \u003d False","commit_id":"7242c4a006c39f6f5a3e53607dc5e2998328b3c2"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"becdbcdfa9f2e3dbb0e8bccf15d584724dcadcba","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                # convert glob to regex"},{"line_number":185,"context_line":"                self.server_names.update(["},{"line_number":186,"context_line":"                    s for s in ALL_SERVERS if"},{"line_number":187,"context_line":"                    re.match(server.replace(\u0027*\u0027, \u0027.*\u0027), s)])"},{"line_number":188,"context_line":"            else:"},{"line_number":189,"context_line":"                self.server_names.add(server)"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da85f559_9a0fe3e0","side":"PARENT","line":187,"in_reply_to":"da85f559_7791fa51","updated":"2015-11-09 23:02:24.000000000","message":"I agree - that seems better for backwards compatibility","commit_id":"7242c4a006c39f6f5a3e53607dc5e2998328b3c2"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"e08a153717825f0d3aa5cb06700f5951384bbd95","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        setup_env()"},{"line_number":210,"context_line":"        status \u003d 0"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        strict \u003d kwargs.get(\u0027strict\u0027, False)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        for server in self.servers:"},{"line_number":215,"context_line":"            status +\u003d 0 if server.launch(**kwargs) else 1"}],"source_content_type":"text/x-python","patch_set":6,"id":"da85f559_b7852208","line":212,"updated":"2015-11-09 22:38:57.000000000","message":"... and then here get self._default_strict (maybe?)","commit_id":"329d4cc89509d6ddba36f253d6c600f0d39fd777"}],"test/unit/common/test_manager.py":[{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"bd5a4ac4f5b53d9ab2b196e9b3d22afcb5f147d9","unresolved":false,"context_lines":[{"line_number":1696,"context_line":""},{"line_number":1697,"context_line":"            def launch(self, **kwargs):"},{"line_number":1698,"context_line":"                self.called[\u0027launch\u0027].append(kwargs)"},{"line_number":1699,"context_line":"                return {123: \u0027proxy\u0027}"},{"line_number":1700,"context_line":""},{"line_number":1701,"context_line":"            def wait(self, **kwargs):"},{"line_number":1702,"context_line":"                self.called[\u0027wait\u0027].append(kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a26ad4f_8218961f","line":1699,"updated":"2015-11-02 23:31:49.000000000","message":"I am not really familiar with these particular tests.  what is the significance of changing this return to be non-empty?","commit_id":"d64eaf38e71d752512bbc594820af0b30d6024e6"},{"author":{"_account_id":18015,"name":"Peter Lisák","email":"peter.lisak@gmail.com","username":"peter.lisak"},"change_message_id":"d8137ae7dcc8aa8f4d183801fbb64c1325f23f2a","unresolved":false,"context_lines":[{"line_number":1696,"context_line":""},{"line_number":1697,"context_line":"            def launch(self, **kwargs):"},{"line_number":1698,"context_line":"                self.called[\u0027launch\u0027].append(kwargs)"},{"line_number":1699,"context_line":"                return {123: \u0027proxy\u0027}"},{"line_number":1700,"context_line":""},{"line_number":1701,"context_line":"            def wait(self, **kwargs):"},{"line_number":1702,"context_line":"                self.called[\u0027wait\u0027].append(kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_18810d90","line":1699,"in_reply_to":"1a26ad4f_8218961f","updated":"2015-11-03 11:39:08.000000000","message":"Before the returned value was ignored in function start, but now it is tested if server started successfully.","commit_id":"d64eaf38e71d752512bbc594820af0b30d6024e6"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"78290653204a45d0912c0560c05ff86ffa4087c9","unresolved":false,"context_lines":[{"line_number":1696,"context_line":""},{"line_number":1697,"context_line":"            def launch(self, **kwargs):"},{"line_number":1698,"context_line":"                self.called[\u0027launch\u0027].append(kwargs)"},{"line_number":1699,"context_line":"                return {123: \u0027proxy\u0027}"},{"line_number":1700,"context_line":""},{"line_number":1701,"context_line":"            def wait(self, **kwargs):"},{"line_number":1702,"context_line":"                self.called[\u0027wait\u0027].append(kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_5be216d7","line":1699,"in_reply_to":"fa80f949_18810d90","updated":"2015-11-03 19:53:57.000000000","message":"RE: \"I don\u0027t understand all the test changes\"\n\n... since these tests don\u0027t use strict\u003dTrue - this change doesn\u0027t effect the outcome of the test?  I don\u0027t even think these test validate the return value most of the time...","commit_id":"d64eaf38e71d752512bbc594820af0b30d6024e6"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"afd370d994f31f5a07568847ce373952d47f4b32","unresolved":false,"context_lines":[{"line_number":1556,"context_line":"        # test default strict"},{"line_number":1557,"context_line":"        m \u003d manager.Manager([\u0027proxy\u0027])"},{"line_number":1558,"context_line":"        self.assertEqual(m._default_strict, True)"},{"line_number":1559,"context_line":"        # aliases"},{"line_number":1560,"context_line":"        m \u003d manager.Manager([\u0027main\u0027])"},{"line_number":1561,"context_line":"        self.assertEqual(m._default_strict, False)"},{"line_number":1562,"context_line":"        m \u003d manager.Manager([\u0027proxy*\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a8ffd7b_0145d615","line":1559,"updated":"2015-11-25 14:14:20.000000000","message":"nit: could have tested for all aliases (main, all, rest)","commit_id":"7b7c6c5249ba598f10770308e05f3d2ad4e60871"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"afd370d994f31f5a07568847ce373952d47f4b32","unresolved":false,"context_lines":[{"line_number":1689,"context_line":"            # test no config with alias"},{"line_number":1690,"context_line":"            m \u003d manager.Manager([\u0027main\u0027, \u0027noconfig\u0027])"},{"line_number":1691,"context_line":"            status \u003d m.start()"},{"line_number":1692,"context_line":"            self.assertEqual(status, 0)"},{"line_number":1693,"context_line":"            for server in m.servers:"},{"line_number":1694,"context_line":"                self.assertEqual(server.called[\u0027launch\u0027], [{}])"},{"line_number":1695,"context_line":"                self.assertEqual(server.called[\u0027wait\u0027], [{}])"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a8ffd7b_7ced65ee","line":1692,"updated":"2015-11-25 14:14:20.000000000","message":"interesting - so default is non-strict if *any* server is an alias","commit_id":"7b7c6c5249ba598f10770308e05f3d2ad4e60871"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"afd370d994f31f5a07568847ce373952d47f4b32","unresolved":false,"context_lines":[{"line_number":1756,"context_line":"            self.assertEqual(status, 1)"},{"line_number":1757,"context_line":"            for server in m.servers:"},{"line_number":1758,"context_line":"                self.assertEqual(server.called[\u0027launch\u0027], [{\u0027strict\u0027: True}])"},{"line_number":1759,"context_line":"                self.assertEqual(server.called[\u0027wait\u0027], [{\u0027strict\u0027: True}])"},{"line_number":1760,"context_line":""},{"line_number":1761,"context_line":"        finally:"},{"line_number":1762,"context_line":"            manager.setup_env \u003d old_setup_env"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a8ffd7b_9ca4c9a6","line":1759,"updated":"2015-11-25 14:14:20.000000000","message":"very comprehensive tests. thank you!","commit_id":"7b7c6c5249ba598f10770308e05f3d2ad4e60871"}]}
