)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"0dbe025c04699999e1b1130d015a0bf0e420264e","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Solution: return value based on success of build of all the images."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Closes-Bug: 1546804"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I9b3c3fe4f7abe0f25ca5377f6b832f924f50b43f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9aed3d3a_3d0506c2","line":16,"updated":"2016-02-26 09:13:43.000000000","message":"I saw this format many time. In the openstack git message commit wiki[0], `Closes-Bug: #1546804` is recommended. \n\nSo we use the both this two format? Or the only the recommended one?\n\n[0] https://wiki.openstack.org/wiki/GitCommitMessages#Including_external_references","commit_id":"8c83e2ff702d5d3cd998cd6eed950f6bcee8cce8"},{"author":{"_account_id":14027,"name":"Michal Rostecki","email":"mrostecki@suse.de","username":"mrostecki"},"change_message_id":"0fa710226b8936bf9610d523dbb02f90f498aed9","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Solution: return value based on success of build of all the images."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Closes-Bug: 1546804"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I9b3c3fe4f7abe0f25ca5377f6b832f924f50b43f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9aed3d3a_8580f847","line":16,"in_reply_to":"9aed3d3a_3d0506c2","updated":"2016-02-27 18:31:41.000000000","message":"I think this format is fine - notice that the linking to launchpad is working well here.","commit_id":"8c83e2ff702d5d3cd998cd6eed950f6bcee8cce8"},{"author":{"_account_id":16233,"name":"Mauricio Lima","email":"mauriciolimab@gmail.com","username":"limamauricio"},"change_message_id":"0a41ced760ee43acec05411861f434761d8377ed","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Solution: return value based on success of build of all the images."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Closes-Bug: 1546804"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I9b3c3fe4f7abe0f25ca5377f6b832f924f50b43f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7af24918_8d072a81","line":16,"in_reply_to":"9aed3d3a_8580f847","updated":"2016-03-03 19:55:07.000000000","message":"I prefer to follow the patterns, after all they were created to be used. Well, i agree with Jeffrey.","commit_id":"8c83e2ff702d5d3cd998cd6eed950f6bcee8cce8"}],"kolla/cmd/build.py":[{"author":{"_account_id":14119,"name":"Sam Yaple","email":"sam+git@yaple.net","username":"SamYaple"},"change_message_id":"3a5baf2b407bb78951868b326a8796d8b618e90b","unresolved":false,"context_lines":[{"line_number":656,"context_line":"        return queue"},{"line_number":657,"context_line":""},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"def build(conf):"},{"line_number":660,"context_line":"    kolla \u003d KollaWorker(conf)"},{"line_number":661,"context_line":"    kolla.setup_working_dir()"},{"line_number":662,"context_line":"    kolla.find_dockerfiles()"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_197316b3","line":659,"updated":"2016-02-14 19:36:24.000000000","message":"build isnt a good name for this function. For starters it doesnt actually build. This function sets up the tmpdir, sets ups build and push queues, cleans up, etc. Its far mort than just build.","commit_id":"631f1b984cd71a542ba1f01ddde1e635e85d98f3"},{"author":{"_account_id":7600,"name":"Ruslan Kamaldinov","email":"rkamaldinov@mirantis.com","username":"ruhe"},"change_message_id":"5b2aef0673c41dce230408615b135d1cb273b8cb","unresolved":false,"context_lines":[{"line_number":656,"context_line":"        return queue"},{"line_number":657,"context_line":""},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"def build(conf):"},{"line_number":660,"context_line":"    kolla \u003d KollaWorker(conf)"},{"line_number":661,"context_line":"    kolla.setup_working_dir()"},{"line_number":662,"context_line":"    kolla.find_dockerfiles()"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_39feda6b","line":659,"in_reply_to":"dae33548_197316b3","updated":"2016-02-14 20:23:59.000000000","message":"What function name would you recommend? My reasoning behind this name is that this is the main entry function in file build.py, which is an entry point for command line call kolla-build. Usually such functions have the same name as command line calls.","commit_id":"631f1b984cd71a542ba1f01ddde1e635e85d98f3"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"0dbe025c04699999e1b1130d015a0bf0e420264e","unresolved":false,"context_lines":[{"line_number":705,"context_line":"    if conf.debug:"},{"line_number":706,"context_line":"        LOG.setLevel(logging.DEBUG)"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"    result \u003d build(conf)"},{"line_number":709,"context_line":"    bad_results \u003d result[0]"},{"line_number":710,"context_line":""},{"line_number":711,"context_line":"    if len(bad_results) \u003e 0:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aed3d3a_fd6c3e9e","line":708,"updated":"2016-02-26 09:13:43.000000000","message":"result is a bad name, pls use image_statuses","commit_id":"8c83e2ff702d5d3cd998cd6eed950f6bcee8cce8"},{"author":{"_account_id":13642,"name":"Vikram Hosakote","email":"vikram.ganesh@gmail.com","username":"vhosakot"},"change_message_id":"4275eae3968640d424395d02d01ad8afc0894cfe","unresolved":false,"context_lines":[{"line_number":705,"context_line":"    if conf.debug:"},{"line_number":706,"context_line":"        LOG.setLevel(logging.DEBUG)"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"    result \u003d build(conf)"},{"line_number":709,"context_line":"    bad_results \u003d result[0]"},{"line_number":710,"context_line":""},{"line_number":711,"context_line":"    if len(bad_results) \u003e 0:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aed3d3a_07519a62","line":708,"in_reply_to":"9aed3d3a_fd6c3e9e","updated":"2016-02-27 04:20:21.000000000","message":"yes, use image_statuses here instead of result.","commit_id":"8c83e2ff702d5d3cd998cd6eed950f6bcee8cce8"},{"author":{"_account_id":14027,"name":"Michal Rostecki","email":"mrostecki@suse.de","username":"mrostecki"},"change_message_id":"b4886d28f7aac05d5466f587753587cac67bf5c2","unresolved":false,"context_lines":[{"line_number":709,"context_line":"    bad_results \u003d result[0]"},{"line_number":710,"context_line":""},{"line_number":711,"context_line":"    if len(bad_results) \u003e 0:"},{"line_number":712,"context_line":"        return 1"},{"line_number":713,"context_line":"    else:"},{"line_number":714,"context_line":"        return 0"},{"line_number":715,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9aed3d3a_e474affe","line":712,"updated":"2016-02-26 08:18:25.000000000","message":"That will surely not work. Please use sys.exit function to return statuses in Python.","commit_id":"8c83e2ff702d5d3cd998cd6eed950f6bcee8cce8"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"0dbe025c04699999e1b1130d015a0bf0e420264e","unresolved":false,"context_lines":[{"line_number":709,"context_line":"    bad_results \u003d result[0]"},{"line_number":710,"context_line":""},{"line_number":711,"context_line":"    if len(bad_results) \u003e 0:"},{"line_number":712,"context_line":"        return 1"},{"line_number":713,"context_line":"    else:"},{"line_number":714,"context_line":"        return 0"},{"line_number":715,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9aed3d3a_dd697a8d","line":712,"updated":"2016-02-26 09:13:43.000000000","message":"yea. pls use sys.exit here or in the `if __name__ \u003d\u003d \u0027__main__\u0027`","commit_id":"8c83e2ff702d5d3cd998cd6eed950f6bcee8cce8"},{"author":{"_account_id":18652,"name":"Proskurin Kirill","email":"kproskurin@mirantis.com","username":"kproskurin"},"change_message_id":"15edfb8e370aef643cad47c40652e1a252639515","unresolved":false,"context_lines":[{"line_number":741,"context_line":"    result \u003d build(conf)"},{"line_number":742,"context_line":"    bad_results \u003d result[0]"},{"line_number":743,"context_line":""},{"line_number":744,"context_line":"    if len(bad_results) \u003e 0:"},{"line_number":745,"context_line":"        sys.exit(1)"},{"line_number":746,"context_line":"    else:"},{"line_number":747,"context_line":"        sys.exit(0)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_7984555d","line":744,"updated":"2016-04-06 13:50:59.000000000","message":"You could check it with\n\nif bad_result\n\nit will return True if it\u0027s not empty. No need for len() check.","commit_id":"287fd666be77c6ab6ed72245b8d1c1330d90a16b"}],"tests/test_build.py":[{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"0dbe025c04699999e1b1130d015a0bf0e420264e","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        self.useFixture(log_fixture.SetLogLevel([__name__],"},{"line_number":39,"context_line":"                                                logging.logging.INFO))"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        self.CONF \u003d self.useFixture(cfg.Config()).conf"},{"line_number":42,"context_line":"        for group, opts in config.list_opts():"},{"line_number":43,"context_line":"            self.CONF.register_opts(opts, group)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9aed3d3a_1d0ac2d2","line":41,"updated":"2016-02-26 09:13:43.000000000","message":"Why use a capitalized conf? it is not cfg.CONF. use the capial word make it confused.\n\nAnd you are using the fixture in wrong way.\nThe right way is:\n\n    from oslo_config import cfg\n    from kolla.common import config as common_config\n\n    self.conf \u003d cfg.ConfigOpts()\n    common_config.parse(self.conf, [])\n    self.useFixutre(conf)\n    \nwhen need override the value[0].(the fixture will handle the cleanup work)\n  \n    self.conf.set_override(\u0027debug\u0027, True)\n    self.conf.set_override(\u0027threads\u0027, 4)\n\n[0] https://github.com/openstack/oslo.config/blob/master/oslo_config/fixture.py#L51","commit_id":"8c83e2ff702d5d3cd998cd6eed950f6bcee8cce8"},{"author":{"_account_id":7600,"name":"Ruslan Kamaldinov","email":"rkamaldinov@mirantis.com","username":"ruhe"},"change_message_id":"53de2d68791de4118418daba9bace5edef4b1ee6","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        self.useFixture(log_fixture.SetLogLevel([__name__],"},{"line_number":39,"context_line":"                                                logging.logging.INFO))"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        self.CONF \u003d self.useFixture(cfg.Config()).conf"},{"line_number":42,"context_line":"        for group, opts in config.list_opts():"},{"line_number":43,"context_line":"            self.CONF.register_opts(opts, group)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_3155ef1c","line":41,"in_reply_to":"9aed3d3a_1d0ac2d2","updated":"2016-03-08 23:34:12.000000000","message":"Thanks a lot for your suggestion. I really struggled to find a proper way to fixture oslo config. \n\nLet me clarify one thing first. In your example you\u0027re suggesting to have \"self.useFixutre(conf)\". Where does this \"conf\" variable come from? If it is self.conf then this object doesn\u0027t have necessary methods to become a fixture, it doesn\u0027t have setUp and tearDown methods.","commit_id":"8c83e2ff702d5d3cd998cd6eed950f6bcee8cce8"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"0dbe025c04699999e1b1130d015a0bf0e420264e","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    def setUp(self):"},{"line_number":84,"context_line":"        super(BuildTestCentosBinary, self).setUp()"},{"line_number":85,"context_line":"        self.CONF.base \u003d \"centos\""},{"line_number":86,"context_line":"        self.CONF.type \u003d \"binary\""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"class BuildTestCentosSource(BuildTest, base.BaseTestCase):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aed3d3a_7d0f8ee1","line":86,"updated":"2016-02-26 09:13:43.000000000","message":"use self.conf.set_override","commit_id":"8c83e2ff702d5d3cd998cd6eed950f6bcee8cce8"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"0dbe025c04699999e1b1130d015a0bf0e420264e","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    def setUp(self):"},{"line_number":97,"context_line":"        super(BuildTestCentosSource, self).setUp()"},{"line_number":98,"context_line":"        self.CONF.base \u003d \"centos\""},{"line_number":99,"context_line":"        self.CONF.type \u003d \"source\""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"class BuildTestUbuntuSource(BuildTest, base.BaseTestCase):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aed3d3a_5d144af4","line":99,"updated":"2016-02-26 09:13:43.000000000","message":"ditto","commit_id":"8c83e2ff702d5d3cd998cd6eed950f6bcee8cce8"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"0dbe025c04699999e1b1130d015a0bf0e420264e","unresolved":false,"context_lines":[{"line_number":105,"context_line":"    def setUp(self):"},{"line_number":106,"context_line":"        super(BuildTestUbuntuSource, self).setUp()"},{"line_number":107,"context_line":"        self.CONF.base \u003d \"ubuntu\""},{"line_number":108,"context_line":"        self.CONF.type \u003d \"source\""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"class DeployTestCentosBinary(BuildTestCentosBinary):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aed3d3a_bdf916cb","line":108,"updated":"2016-02-26 09:13:43.000000000","message":"ditto","commit_id":"8c83e2ff702d5d3cd998cd6eed950f6bcee8cce8"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"0dbe025c04699999e1b1130d015a0bf0e420264e","unresolved":false,"context_lines":[{"line_number":111,"context_line":"class DeployTestCentosBinary(BuildTestCentosBinary):"},{"line_number":112,"context_line":"    def setUp(self):"},{"line_number":113,"context_line":"        super(DeployTestCentosBinary, self).setUp()"},{"line_number":114,"context_line":"        self.CONF.profile \u003d [\"gate\"]"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"class DeployTestCentosSource(BuildTestCentosSource):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aed3d3a_9df6d2d5","line":114,"updated":"2016-02-26 09:13:43.000000000","message":"ditto","commit_id":"8c83e2ff702d5d3cd998cd6eed950f6bcee8cce8"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"0dbe025c04699999e1b1130d015a0bf0e420264e","unresolved":false,"context_lines":[{"line_number":117,"context_line":"class DeployTestCentosSource(BuildTestCentosSource):"},{"line_number":118,"context_line":"    def setUp(self):"},{"line_number":119,"context_line":"        super(DeployTestCentosSource, self).setUp()"},{"line_number":120,"context_line":"        self.CONF.profile \u003d [\"gate\"]"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"class DeployTestUbuntuSource(BuildTestUbuntuSource):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aed3d3a_fd039eb6","line":120,"updated":"2016-02-26 09:13:43.000000000","message":"ditto","commit_id":"8c83e2ff702d5d3cd998cd6eed950f6bcee8cce8"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"0dbe025c04699999e1b1130d015a0bf0e420264e","unresolved":false,"context_lines":[{"line_number":123,"context_line":"class DeployTestUbuntuSource(BuildTestUbuntuSource):"},{"line_number":124,"context_line":"    def setUp(self):"},{"line_number":125,"context_line":"        super(DeployTestUbuntuSource, self).setUp()"},{"line_number":126,"context_line":"        self.CONF.profile \u003d [\"gate\"]"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aed3d3a_dd005aad","line":126,"updated":"2016-02-26 09:13:43.000000000","message":"ditto","commit_id":"8c83e2ff702d5d3cd998cd6eed950f6bcee8cce8"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"617be77dc4049d2235b34c4af8d3dee0ab3da522","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        self.useFixture(log_fixture.SetLogLevel([__name__],"},{"line_number":39,"context_line":"                                                logging.logging.INFO))"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        self.CONF \u003d self.useFixture(cfg.Config()).conf"},{"line_number":42,"context_line":"        for group, opts in config.list_opts():"},{"line_number":43,"context_line":"            self.CONF.register_opts(opts, group)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_27ac8c33","line":41,"updated":"2016-03-09 01:10:15.000000000","message":"please fix the comments I made in the PS5.\n\nI made a mistake for the code example. Should be\n\n    from oslo_config import cfg\n    from kolla.common import config as common_config\n    conf \u003d cfg.ConfigOpts()\n    common_config.parse(conf, [])\n    self.conf \u003d self.useFixutre(conf)\n\nwhen need override the value[0].(the fixture will handle the cleanup work)\n  \n    self.conf.config(\u0027debug\u0027, True)\n    self.conf.config(\u0027threads\u0027, 4)\n\n[0] https://github.com/openstack/oslo.config/blob/master/oslo_config/fixture.py#L51","commit_id":"f9bfff34dabeda92b35d934f89dacba1b62b432f"},{"author":{"_account_id":13642,"name":"Vikram Hosakote","email":"vikram.ganesh@gmail.com","username":"vhosakot"},"change_message_id":"fefc53912982cc11b71c3c825f04a823f5036773","unresolved":false,"context_lines":[{"line_number":143,"context_line":"class DeployTestCentosSource(BuildTestCentosSource):"},{"line_number":144,"context_line":"    def setUp(self):"},{"line_number":145,"context_line":"        super(DeployTestCentosSource, self).setUp()"},{"line_number":146,"context_line":"        self.CONF.profile \u003d [\"gate\"]"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"class DeployTestOracleLinuxBinary(BuildTestOracleLinuxBinary):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_01f01b66","line":146,"range":{"start_line":146,"start_character":0,"end_line":146,"end_character":36},"updated":"2016-04-07 07:01:23.000000000","message":"Looks like this change failed to build the heka bootstrap container in CentOS source in gate as the  \"kollaglue/centos-source-heka:2.0.0\"  image was not built in gate.  Could you check ?\n\n\nhttp://logs.openstack.org/53/278853/8/check/gate-kolla-dsvm-deploy-centos-source/0032f7a/console.html#_2016-04-06_10_09_28_950","commit_id":"287fd666be77c6ab6ed72245b8d1c1330d90a16b"}]}
