)]}'
{"nova/conductor/manager.py":[{"author":{"_account_id":12927,"name":"Lan Qi song","email":"lqs933@foxmail.com","username":"lqisong"},"change_message_id":"5345f258c74b497170dd42de0654b4976bb84e53","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                # NOTE(sbauza): Only Juno computes are still calling this"},{"line_number":281,"context_line":"                # conductor method for getting service_get_by_compute_node,"},{"line_number":282,"context_line":"                # but expect a compute_node field so we can safely add it."},{"line_number":283,"context_line":"                result[\u0027compute_node\u0027"},{"line_number":284,"context_line":"                       ] \u003d objects.ComputeNodeList.get_all_by_host("},{"line_number":285,"context_line":"                           context, result[\u0027host\u0027])"},{"line_number":286,"context_line":"                # FIXME(comstud) Potentially remove this on bump to v3.0"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_5d4009a5","line":283,"updated":"2015-03-13 03:11:10.000000000","message":"From my test, this line should be something like that: (result is a Service Object, we can\u0027t use it as dict)\n\nresult \u003d jsonutils.to_primitive(result)\nresult[\u0027compute_node\u0027\n         ] \u003d jsonutils.to_primitive(objects.ComputeNodeList.get_all_by_host(\n                  context, result[\u0027host\u0027]))\n# FIXME(comstud) Potentially remove this on bump to v3.0\nresult \u003d [result]\nreturn result","commit_id":"cb7977466833df01c6ed7e8405bb1f7b6b5ea523"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6fa38b577c407eb1c922e03239d99918639fba98","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                # NOTE(sbauza): Only Juno computes are still calling this"},{"line_number":281,"context_line":"                # conductor method for getting service_get_by_compute_node,"},{"line_number":282,"context_line":"                # but expect a compute_node field so we can safely add it."},{"line_number":283,"context_line":"                result[\u0027compute_node\u0027"},{"line_number":284,"context_line":"                       ] \u003d objects.ComputeNodeList.get_all_by_host("},{"line_number":285,"context_line":"                           context, result[\u0027host\u0027])"},{"line_number":286,"context_line":"                # FIXME(comstud) Potentially remove this on bump to v3.0"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_dcb5c832","line":283,"in_reply_to":"9a80dd14_5d4009a5","updated":"2015-03-13 12:57:51.000000000","message":"Look at L299, it returns a dict from result so you don\u0027t need to primitive it directly.","commit_id":"cb7977466833df01c6ed7e8405bb1f7b6b5ea523"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"30332fb172742d3e17bf8a7f4a410b2cee7960f8","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                # NOTE(sbauza): Only Juno computes are still calling this"},{"line_number":281,"context_line":"                # conductor method for getting service_get_by_compute_node,"},{"line_number":282,"context_line":"                # but expect a compute_node field so we can safely add it."},{"line_number":283,"context_line":"                result[\u0027compute_node\u0027"},{"line_number":284,"context_line":"                       ] \u003d objects.ComputeNodeList.get_all_by_host("},{"line_number":285,"context_line":"                           context, result[\u0027host\u0027])"},{"line_number":286,"context_line":"                # FIXME(comstud) Potentially remove this on bump to v3.0"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_e562da3c","line":283,"in_reply_to":"9a80dd14_62bd0568","updated":"2015-03-13 21:29:35.000000000","message":"@Lan, that\u0027s weird because I explicitely tested to add a keyed ComputeNode object to a SQLA inherited object and it did work smoothly...\n\nAt least, I can\u0027t find any trouble by looking at old/n-cpu logs for partial Grenade on the dependent patch that fixed the 2nd problem you mentioned (ie. conductor not getting the Juno version of Service and cycling)","commit_id":"cb7977466833df01c6ed7e8405bb1f7b6b5ea523"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"d3fc1e5d789d3a2b369d1388c1648b24b3c5ba2f","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                # NOTE(sbauza): Only Juno computes are still calling this"},{"line_number":281,"context_line":"                # conductor method for getting service_get_by_compute_node,"},{"line_number":282,"context_line":"                # but expect a compute_node field so we can safely add it."},{"line_number":283,"context_line":"                result[\u0027compute_node\u0027"},{"line_number":284,"context_line":"                       ] \u003d objects.ComputeNodeList.get_all_by_host("},{"line_number":285,"context_line":"                           context, result[\u0027host\u0027])"},{"line_number":286,"context_line":"                # FIXME(comstud) Potentially remove this on bump to v3.0"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_62bd0568","line":283,"in_reply_to":"9a80dd14_815a05f0","updated":"2015-03-13 19:13:25.000000000","message":"I don\u0027t think that is a problem. The service object returned from the db query inherits from NovaBase that in turn inherits from oslo.db\u0027s ModelBase, which allows \u0027dict\u0027 access by implementing __getitem__ and __setitem__. Of course you could also write result.host and result.compute_node to access the properties, but this should be fine.\n\nI think however there is a problem (or rather it was) that you are prohibited to set compute_node on the SQLAlchemy service object returned by the db query since it is in detached state.\n\nNow after https://review.openstack.org/155319 merged, everything should be fine again, because compute_node is no longer a relationship, just a regular property of the object.\n\nCan you please test this again on latest master and see if the problem remains.","commit_id":"cb7977466833df01c6ed7e8405bb1f7b6b5ea523"},{"author":{"_account_id":12927,"name":"Lan Qi song","email":"lqs933@foxmail.com","username":"lqisong"},"change_message_id":"3a3664978dd75e151b644526c87b19171c126328","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                # NOTE(sbauza): Only Juno computes are still calling this"},{"line_number":281,"context_line":"                # conductor method for getting service_get_by_compute_node,"},{"line_number":282,"context_line":"                # but expect a compute_node field so we can safely add it."},{"line_number":283,"context_line":"                result[\u0027compute_node\u0027"},{"line_number":284,"context_line":"                       ] \u003d objects.ComputeNodeList.get_all_by_host("},{"line_number":285,"context_line":"                           context, result[\u0027host\u0027])"},{"line_number":286,"context_line":"                # FIXME(comstud) Potentially remove this on bump to v3.0"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_815a05f0","line":283,"in_reply_to":"9a80dd14_dcb5c832","updated":"2015-03-13 15:02:03.000000000","message":"I know that, but we can\u0027t use this style \u0027result[\u0027host\u0027]\u0027  to get \"host\" from a service object, I have tested it, it broken at line 285.","commit_id":"cb7977466833df01c6ed7e8405bb1f7b6b5ea523"},{"author":{"_account_id":12927,"name":"Lan Qi song","email":"lqs933@foxmail.com","username":"lqisong"},"change_message_id":"c201182dce16095c3f525b859106df3d0b3a6f25","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                # NOTE(sbauza): Only Juno computes are still calling this"},{"line_number":281,"context_line":"                # conductor method for getting service_get_by_compute_node,"},{"line_number":282,"context_line":"                # but expect a compute_node field so we can safely add it."},{"line_number":283,"context_line":"                result[\u0027compute_node\u0027"},{"line_number":284,"context_line":"                       ] \u003d objects.ComputeNodeList.get_all_by_host("},{"line_number":285,"context_line":"                           context, result[\u0027host\u0027])"},{"line_number":286,"context_line":"                # FIXME(comstud) Potentially remove this on bump to v3.0"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_6116be4a","line":283,"in_reply_to":"9a80dd14_e562da3c","updated":"2015-03-16 05:11:51.000000000","message":"@Hans, I think you are right, I tried the latest master code and the problem was gone, thanks!\n@Sylvain, thanks for this patch, could you also help find why grenade-partial-ncpu can\u0027t work ? I am afraid other patches may also break the upgrade function. Thanks!","commit_id":"cb7977466833df01c6ed7e8405bb1f7b6b5ea523"}]}
