)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3e24e70fdb50e3ee92304f6c7612b4a6d0b8d4e9","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This converts service and servicegroup to use objects instead of"},{"line_number":10,"context_line":"proxying through conductor."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Adds missing object registration to cert and console scripts."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Related to blueprint liberty-objects"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"3ab451fb_af2be1ea","line":12,"updated":"2015-04-17 16:32:38.000000000","message":"Technically, this could have been done as a separate, unrelated bug-fix patch....","commit_id":"19455514d1366f60c37ebd5e27da675cc7459f80"}],"nova/cmd/cert.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c88fb089e3bc298e225fea3767c64d42030ab565","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    config.parse_args(sys.argv)"},{"line_number":35,"context_line":"    logging.setup(CONF, \"nova\")"},{"line_number":36,"context_line":"    utils.monkey_patch()"},{"line_number":37,"context_line":"    objects.register_all()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    gmr.TextGuruMeditation.setup_autorun(version)"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_afed6427","line":37,"updated":"2015-02-24 11:11:16.000000000","message":"Why do we need this here? we don\u0027t import objects.","commit_id":"7ee277d670c14da8ca221a6be8620b4db54f5446"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"23f8f7d9943801fd76202435aecf4601dbce1309","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    config.parse_args(sys.argv)"},{"line_number":35,"context_line":"    logging.setup(CONF, \"nova\")"},{"line_number":36,"context_line":"    utils.monkey_patch()"},{"line_number":37,"context_line":"    objects.register_all()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    gmr.TextGuruMeditation.setup_autorun(version)"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_def16502","line":37,"in_reply_to":"ba7be1f8_afed6427","updated":"2015-02-24 13:16:36.000000000","message":"We need this to be able to use \"objects.Service...\"  in service.py.\n\nThe same line can be found in most cmd scripts and while it haven\u0027t been  needed here before simply because cert manager itself don\u0027t make use of objects, now that service.py use objects, all cmd scripts must register the objects to function correctly.","commit_id":"7ee277d670c14da8ca221a6be8620b4db54f5446"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"2dc73487af9f9d569ac540c56a6d40af73387cfd","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    config.parse_args(sys.argv)"},{"line_number":35,"context_line":"    logging.setup(CONF, \"nova\")"},{"line_number":36,"context_line":"    utils.monkey_patch()"},{"line_number":37,"context_line":"    objects.register_all()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    gmr.TextGuruMeditation.setup_autorun(version)"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_982a9a8e","line":37,"in_reply_to":"ba7be1f8_def16502","updated":"2015-02-24 16:16:58.000000000","message":"Yes i understand that daemon are running standalone, this seems really not explicit - I guess a note here should be useful.","commit_id":"7ee277d670c14da8ca221a6be8620b4db54f5446"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"293c01a185f0a83cc72e252acbd41f50de42d78b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    config.parse_args(sys.argv)"},{"line_number":35,"context_line":"    logging.setup(CONF, \"nova\")"},{"line_number":36,"context_line":"    utils.monkey_patch()"},{"line_number":37,"context_line":"    objects.register_all()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    gmr.TextGuruMeditation.setup_autorun(version)"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9a80dd14_d6d78549","line":37,"updated":"2015-03-06 14:24:22.000000000","message":"hmm seeing that we now need this in order to use  the nova.service.Service stuff, should we be doing that there and removing it from all the cmd/* files?\n\nOr would that be too implicit?","commit_id":"71f2eb688d103d8b4c9545aab3dccb1983f78abf"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"8f9a26a4556487e49aea042c57534fb73f71a735","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    config.parse_args(sys.argv)"},{"line_number":35,"context_line":"    logging.setup(CONF, \"nova\")"},{"line_number":36,"context_line":"    utils.monkey_patch()"},{"line_number":37,"context_line":"    objects.register_all()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    gmr.TextGuruMeditation.setup_autorun(version)"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9a80dd14_c7d17afc","line":37,"in_reply_to":"9a80dd14_759cef5d","updated":"2015-03-13 12:04:46.000000000","message":"I would actually like to go ahead with this change using the current approach and later submit a separate change for this if that\u0027s ok for everyone.","commit_id":"71f2eb688d103d8b4c9545aab3dccb1983f78abf"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"f159e28eddaa7a4dca680b3d822268ca03c1cf2d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    config.parse_args(sys.argv)"},{"line_number":35,"context_line":"    logging.setup(CONF, \"nova\")"},{"line_number":36,"context_line":"    utils.monkey_patch()"},{"line_number":37,"context_line":"    objects.register_all()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    gmr.TextGuruMeditation.setup_autorun(version)"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9a80dd14_759cef5d","line":37,"in_reply_to":"9a80dd14_b415a9e6","updated":"2015-03-07 10:20:40.000000000","message":"I kind of like this, however some cmd/* files would still need this call to stay.\n\nFiles like dhcpbridge and manage don\u0027t call service.Service at all while others call service.WSGIService. The latter ones could of course be changed to have the register call in service.WSGIService or maybe both classes could derive from a base class that would do it in one place.","commit_id":"71f2eb688d103d8b4c9545aab3dccb1983f78abf"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"12161b0932cfcb05d39258f02e75bfff6b38518b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    config.parse_args(sys.argv)"},{"line_number":35,"context_line":"    logging.setup(CONF, \"nova\")"},{"line_number":36,"context_line":"    utils.monkey_patch()"},{"line_number":37,"context_line":"    objects.register_all()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    gmr.TextGuruMeditation.setup_autorun(version)"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9a80dd14_b415a9e6","line":37,"in_reply_to":"9a80dd14_d6d78549","updated":"2015-03-06 14:27:05.000000000","message":"Actually, you made a good point, we can just ask the Service class to register the objects, that seems the good way for the long term","commit_id":"71f2eb688d103d8b4c9545aab3dccb1983f78abf"}],"nova/cmd/console.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c88fb089e3bc298e225fea3767c64d42030ab565","unresolved":false,"context_lines":[{"line_number":33,"context_line":"def main():"},{"line_number":34,"context_line":"    config.parse_args(sys.argv)"},{"line_number":35,"context_line":"    logging.setup(CONF, \"nova\")"},{"line_number":36,"context_line":"    objects.register_all()"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    gmr.TextGuruMeditation.setup_autorun(version)"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_0f975091","line":36,"updated":"2015-02-24 11:11:16.000000000","message":"Why do we need this here? we don\u0027t import objects.","commit_id":"7ee277d670c14da8ca221a6be8620b4db54f5446"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"23f8f7d9943801fd76202435aecf4601dbce1309","unresolved":false,"context_lines":[{"line_number":33,"context_line":"def main():"},{"line_number":34,"context_line":"    config.parse_args(sys.argv)"},{"line_number":35,"context_line":"    logging.setup(CONF, \"nova\")"},{"line_number":36,"context_line":"    objects.register_all()"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    gmr.TextGuruMeditation.setup_autorun(version)"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_de3fa585","line":36,"in_reply_to":"ba7be1f8_0f975091","updated":"2015-02-24 13:16:36.000000000","message":"See answer in cert.py","commit_id":"7ee277d670c14da8ca221a6be8620b4db54f5446"}],"nova/service.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"f96b6c7f21d0015efa6f936a7a6f278bfaa9c38e","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        self.periodic_interval_max \u003d periodic_interval_max"},{"line_number":148,"context_line":"        self.saved_args, self.saved_kwargs \u003d args, kwargs"},{"line_number":149,"context_line":"        self.backdoor_port \u003d None"},{"line_number":150,"context_line":"        self.conductor_api \u003d conductor.API(use_local\u003ddb_allowed)"},{"line_number":151,"context_line":"        self.conductor_api.wait_until_ready(context.get_admin_context())"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def start(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_9347e4a2","line":150,"updated":"2015-02-17 21:19:48.000000000","message":"if you agree with comments below, can we also remove db_allowed flag?","commit_id":"4a6c3b232b8a8b9a7763481fb8a1da31541826e2"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"f96b6c7f21d0015efa6f936a7a6f278bfaa9c38e","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        self.saved_args, self.saved_kwargs \u003d args, kwargs"},{"line_number":149,"context_line":"        self.backdoor_port \u003d None"},{"line_number":150,"context_line":"        self.conductor_api \u003d conductor.API(use_local\u003ddb_allowed)"},{"line_number":151,"context_line":"        self.conductor_api.wait_until_ready(context.get_admin_context())"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def start(self):"},{"line_number":154,"context_line":"        verstr \u003d version.version_string_with_package()"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_33547853","line":151,"updated":"2015-02-17 21:19:48.000000000","message":"we removed all conductor_api usage\nmaybe we can remove them?","commit_id":"4a6c3b232b8a8b9a7763481fb8a1da31541826e2"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"7b3cf108225d055d5e8df3d455531f1c2f8ff12b","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        self.saved_args, self.saved_kwargs \u003d args, kwargs"},{"line_number":149,"context_line":"        self.backdoor_port \u003d None"},{"line_number":150,"context_line":"        self.conductor_api \u003d conductor.API(use_local\u003ddb_allowed)"},{"line_number":151,"context_line":"        self.conductor_api.wait_until_ready(context.get_admin_context())"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def start(self):"},{"line_number":154,"context_line":"        verstr \u003d version.version_string_with_package()"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_733dfddc","line":151,"in_reply_to":"da86d52c_33547853","updated":"2015-02-18 09:17:36.000000000","message":"Unfortunately I think the call to wait_until_ready() is vital here so that services wait for conductor to be ready to accept incoming calls.","commit_id":"4a6c3b232b8a8b9a7763481fb8a1da31541826e2"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"5a9f1a7b33b97d09d17fe66809f0dc2c49ac17a2","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                    exception.ServiceBinaryExists):"},{"line_number":169,"context_line":"                # NOTE(danms): If we race to create a record with a sibling"},{"line_number":170,"context_line":"                # worker, don\u0027t fail here."},{"line_number":171,"context_line":"                self.service_ref \u003d objects.Service.get_by_args(ctxt, self.host,"},{"line_number":172,"context_line":"                                                               self.binary)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        self.manager.pre_start_hook()"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_6a59c5fd","line":171,"updated":"2015-03-05 15:22:23.000000000","message":"This should actually be using get_by_host_and_binary ... see discussion on https://review.openstack.org/#/c/155832/8/nova/db/sqlalchemy/api.py for some reasons why we want to kill this method.","commit_id":"09ab87151b8fb705a4811373450f66010e10ed8b"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"87b42cf8cb5f4540526de126a3ca7420ae53823a","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                    exception.ServiceBinaryExists):"},{"line_number":169,"context_line":"                # NOTE(danms): If we race to create a record with a sibling"},{"line_number":170,"context_line":"                # worker, don\u0027t fail here."},{"line_number":171,"context_line":"                self.service_ref \u003d objects.Service.get_by_args(ctxt, self.host,"},{"line_number":172,"context_line":"                                                               self.binary)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        self.manager.pre_start_hook()"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_cd72c67b","line":171,"in_reply_to":"9a80dd14_6a59c5fd","updated":"2015-03-05 16:52:16.000000000","message":"Agreed.","commit_id":"09ab87151b8fb705a4811373450f66010e10ed8b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f78f37c72ae7bf299323b2ca1294ac41fd906f2b","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        self.binary \u003d binary"},{"line_number":138,"context_line":"        self.topic \u003d topic"},{"line_number":139,"context_line":"        self.manager_class_name \u003d manager"},{"line_number":140,"context_line":"        self.servicegroup_api \u003d servicegroup.API()"},{"line_number":141,"context_line":"        manager_class \u003d importutils.import_class(self.manager_class_name)"},{"line_number":142,"context_line":"        self.manager \u003d manager_class(host\u003dself.host, *args, **kwargs)"},{"line_number":143,"context_line":"        self.rpcserver \u003d None"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a80dd14_d1a58ab5","line":140,"updated":"2015-03-20 10:55:15.000000000","message":"I don\u0027t get the relation between this remove and your change. Is it due to the objectification, or is this something you added ? \n\nIf that\u0027s something added, could you please leave it not changed and upload a new patch for it only ?","commit_id":"493e53241c7d2b776be36ddbdc8170110596971f"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3e24e70fdb50e3ee92304f6c7612b4a6d0b8d4e9","unresolved":false,"context_lines":[{"line_number":168,"context_line":"            self.service_ref \u003d ("},{"line_number":169,"context_line":"                self.conductor_api.service_get_by_host_and_binary("},{"line_number":170,"context_line":"                    ctxt, self.host, self.binary))"},{"line_number":171,"context_line":"            self.service_id \u003d self.service_ref[\u0027id\u0027]"},{"line_number":172,"context_line":"        except exception.NotFound:"},{"line_number":173,"context_line":"            try:"},{"line_number":174,"context_line":"                self.service_ref \u003d self._create_service_ref(ctxt)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3ab451fb_af4ac181","side":"PARENT","line":171,"updated":"2015-04-17 16:32:38.000000000","message":"I went ahead and verified that this self.service_id attribute was not used anywhere...","commit_id":"232c7afcf6903c582962c8390e095345c8de4cfa"}],"nova/servicegroup/api.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c88fb089e3bc298e225fea3767c64d42030ab565","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        \u0027mc\u0027: \u0027nova.servicegroup.drivers.mc.MemcachedDriver\u0027"},{"line_number":47,"context_line":"    }"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def __new__(cls, *args, **kwargs):"},{"line_number":50,"context_line":"        \u0027\u0027\u0027Create an instance of the servicegroup API."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        args and kwargs are passed down to the servicegroup driver when it gets"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_6f5e0c14","side":"PARENT","line":49,"updated":"2015-02-24 11:11:16.000000000","message":"can we remove the special arguments *args and **kwargs here and the propagation in __init__? - We want to be sure nothing is passed as args/kwargs now","commit_id":"8a6ddbe996f64816cfd0665eb73526a41264662f"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"2dc73487af9f9d569ac540c56a6d40af73387cfd","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        \u0027mc\u0027: \u0027nova.servicegroup.drivers.mc.MemcachedDriver\u0027"},{"line_number":47,"context_line":"    }"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def __new__(cls, *args, **kwargs):"},{"line_number":50,"context_line":"        \u0027\u0027\u0027Create an instance of the servicegroup API."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        args and kwargs are passed down to the servicegroup driver when it gets"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_b3493fb9","side":"PARENT","line":49,"in_reply_to":"ba7be1f8_3e88c1c4","updated":"2015-02-24 16:16:58.000000000","message":"I guess it is since you have updated the doc. (half of the work)","commit_id":"8a6ddbe996f64816cfd0665eb73526a41264662f"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"23f8f7d9943801fd76202435aecf4601dbce1309","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        \u0027mc\u0027: \u0027nova.servicegroup.drivers.mc.MemcachedDriver\u0027"},{"line_number":47,"context_line":"    }"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def __new__(cls, *args, **kwargs):"},{"line_number":50,"context_line":"        \u0027\u0027\u0027Create an instance of the servicegroup API."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        args and kwargs are passed down to the servicegroup driver when it gets"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_3e88c1c4","side":"PARENT","line":49,"in_reply_to":"ba7be1f8_6f5e0c14","updated":"2015-02-24 13:16:36.000000000","message":"Not sure it\u0027s related to this change, so would rather wait and do that in another patch.\n\nFYI, there is another change that rewrites most of this at:\n\nhttps://review.openstack.org/149922","commit_id":"8a6ddbe996f64816cfd0665eb73526a41264662f"}],"nova/servicegroup/drivers/db.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f78f37c72ae7bf299323b2ca1294ac41fd906f2b","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                     instead."},{"line_number":44,"context_line":"        \"\"\""},{"line_number":45,"context_line":"        self.db_allowed \u003d kwargs.get(\u0027db_allowed\u0027, True)"},{"line_number":46,"context_line":"        self.conductor_api \u003d conductor.API(use_local\u003dself.db_allowed)"},{"line_number":47,"context_line":"        self.service_down_time \u003d CONF.service_down_time"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def join(self, member, group, service\u003dNone):"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a80dd14_b189f627","side":"PARENT","line":46,"updated":"2015-03-20 10:55:15.000000000","message":"oh I see, as you\u0027re no longer using the conductor method, then db_allowed is not needed. That\u0027s fine by me.","commit_id":"8a204a48c7acb964b92bed4786fef6fcfaeef14f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f78f37c72ae7bf299323b2ca1294ac41fd906f2b","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        \"\"\"Update the state of this service in the datastore.\"\"\""},{"line_number":95,"context_line":"        try:"},{"line_number":96,"context_line":"            service.service_ref.report_count +\u003d 1"},{"line_number":97,"context_line":"            service.service_ref.save()"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"            # TODO(termie): make this pattern be more elegant."},{"line_number":100,"context_line":"            if getattr(service, \u0027model_disconnected\u0027, False):"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a80dd14_5178ba2a","line":97,"updated":"2015-03-20 10:55:15.000000000","message":"++","commit_id":"493e53241c7d2b776be36ddbdc8170110596971f"}],"nova/tests/unit/db/test_db_api.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5db13d2324d316576c4ed2379bce4d165e8da6ed","unresolved":false,"context_lines":[{"line_number":2741,"context_line":"        for key, value in self._get_base_values().iteritems():"},{"line_number":2742,"context_line":"            self.assertEqual(value, service[key])"},{"line_number":2743,"context_line":""},{"line_number":2744,"context_line":"    def test_service_create_disabled(self):"},{"line_number":2745,"context_line":"        self.flags(enable_new_services\u003dFalse)"},{"line_number":2746,"context_line":"        service \u003d self._create_service({})"},{"line_number":2747,"context_line":"        self.assertTrue(service[\u0027disabled\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a80dd14_94bc2508","line":2744,"updated":"2015-03-06 14:24:25.000000000","message":"nit : adding more coverage for something which was not provided in this patch is not needed and should be in a separate patch, but that\u0027s fine","commit_id":"71f2eb688d103d8b4c9545aab3dccb1983f78abf"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"293c01a185f0a83cc72e252acbd41f50de42d78b","unresolved":false,"context_lines":[{"line_number":2744,"context_line":"    def test_service_create_disabled(self):"},{"line_number":2745,"context_line":"        self.flags(enable_new_services\u003dFalse)"},{"line_number":2746,"context_line":"        service \u003d self._create_service({})"},{"line_number":2747,"context_line":"        self.assertTrue(service[\u0027disabled\u0027])"},{"line_number":2748,"context_line":""},{"line_number":2749,"context_line":"    def test_service_destroy(self):"},{"line_number":2750,"context_line":"        service1 \u003d self._create_service({})"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a80dd14_59d026f6","line":2747,"updated":"2015-03-06 14:24:22.000000000","message":"a somehwat unreled test but I think it can stay in this commit.","commit_id":"71f2eb688d103d8b4c9545aab3dccb1983f78abf"}],"nova/tests/unit/objects/test_objects.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"293c01a185f0a83cc72e252acbd41f50de42d78b","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                       lambda s, c: c)"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"    def _reset_indirection_api(self):"},{"line_number":409,"context_line":"        base.NovaObject.indirection_api \u003d None"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    def setUp(self):"},{"line_number":412,"context_line":"        super(_RemoteTest, self).setUp()"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a80dd14_34f7f9f6","line":409,"updated":"2015-03-06 14:24:22.000000000","message":"hmmm so it seems that like the context manager above - this should really be setting the indirection API to the previous value, but that is a minor point.\n\nAlso - since this is a global - how come it hasn\u0027t been causing other test issues before (we set this to None in the Local test case, but this might affect other tests in theory) - if that is the case this should really be a separate fix.","commit_id":"71f2eb688d103d8b4c9545aab3dccb1983f78abf"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"8f9a26a4556487e49aea042c57534fb73f71a735","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                       lambda s, c: c)"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"    def _reset_indirection_api(self):"},{"line_number":409,"context_line":"        base.NovaObject.indirection_api \u003d None"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    def setUp(self):"},{"line_number":412,"context_line":"        super(_RemoteTest, self).setUp()"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a80dd14_a2f554ee","line":409,"in_reply_to":"9a80dd14_34f7f9f6","updated":"2015-03-13 12:04:46.000000000","message":"Not sure why this hasn\u0027t caused issues before. It sure becomes a problem with this change since now, every time a test starts a conductor service it will immediately remote even the call for its own creation if the indirection api is set.\n\nI have made this a fixture in a change of its own at https://review.openstack.org/164146 that this now depends on.","commit_id":"71f2eb688d103d8b4c9545aab3dccb1983f78abf"}],"nova/tests/unit/test_service.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f78f37c72ae7bf299323b2ca1294ac41fd906f2b","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self.assertEqual(CONF.service_down_time, 25)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"class ServiceTestCase(test.NoDBTestCase):"},{"line_number":97,"context_line":"    \"\"\"Test cases for Services.\"\"\""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a80dd14_51cd1a5c","line":96,"updated":"2015-03-20 10:55:15.000000000","message":"well, I can see why you\u0027re doing and some others could argue against this change by saying you could upload a dependent change for it, but I\u0027m fine with it.","commit_id":"493e53241c7d2b776be36ddbdc8170110596971f"}]}
