)]}'
{"ironic/db/sqlalchemy/api.py":[{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"c32c016eb06af649f562a459be6fb984186c36a0","unresolved":false,"context_lines":[{"line_number":796,"context_line":"                  .all())"},{"line_number":797,"context_line":"        return [row[\u0027hostname\u0027] for row in result]"},{"line_number":798,"context_line":""},{"line_number":799,"context_line":"    def get_remains_conductors(self):"},{"line_number":800,"context_line":"        def _translate_column_query_result(db_column):"},{"line_number":801,"context_line":"            # db_column values looks like [(u\u0027localhost\u0027,)]"},{"line_number":802,"context_line":"            return [value[0] for value in db_column]"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_f39968c5","line":799,"range":{"start_line":799,"start_character":12,"end_line":799,"end_character":19},"updated":"2016-07-06 21:54:13.000000000","message":"Can you explain what you mean by \"remains\"?\n\nI think you mean the set of conductor names that have nodes reserved but are not registered conductors.\n\nWhy not something like \"get_unregistered_conductors\"? Or \"get_missing_conductors\"?","commit_id":"3ca761e4bb987ff85780095b8b6d8f9445435dfb"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"7dfd9a4cf62f547067602cd6289aa9e770f9045d","unresolved":false,"context_lines":[{"line_number":796,"context_line":"                  .all())"},{"line_number":797,"context_line":"        return [row[\u0027hostname\u0027] for row in result]"},{"line_number":798,"context_line":""},{"line_number":799,"context_line":"    def get_remains_conductors(self):"},{"line_number":800,"context_line":"        def _translate_column_query_result(db_column):"},{"line_number":801,"context_line":"            # db_column values looks like [(u\u0027localhost\u0027,)]"},{"line_number":802,"context_line":"            return [value[0] for value in db_column]"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_0d804df4","line":799,"range":{"start_line":799,"start_character":12,"end_line":799,"end_character":19},"in_reply_to":"1aa78d24_f39968c5","updated":"2016-07-07 01:42:57.000000000","message":"I am not good at naming....missing_conductors sounds better.","commit_id":"3ca761e4bb987ff85780095b8b6d8f9445435dfb"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"c32c016eb06af649f562a459be6fb984186c36a0","unresolved":false,"context_lines":[{"line_number":802,"context_line":"            return [value[0] for value in db_column]"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"        # Query all nodes\u0027 reservation and return a list of unique values"},{"line_number":805,"context_line":"        result1 \u003d (model_query(models.Node.reservation)"},{"line_number":806,"context_line":"                   .filter(models.Node.reservation !\u003d sql.null())"},{"line_number":807,"context_line":"                   .distinct().all())"},{"line_number":808,"context_line":"        result2 \u003d model_query(models.Conductor.hostname).all()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_53a15cf7","line":805,"range":{"start_line":805,"start_character":8,"end_line":805,"end_character":15},"updated":"2016-07-06 21:54:13.000000000","message":"nit: can we give this a more descriptive variable name?","commit_id":"3ca761e4bb987ff85780095b8b6d8f9445435dfb"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"7dfd9a4cf62f547067602cd6289aa9e770f9045d","unresolved":false,"context_lines":[{"line_number":802,"context_line":"            return [value[0] for value in db_column]"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"        # Query all nodes\u0027 reservation and return a list of unique values"},{"line_number":805,"context_line":"        result1 \u003d (model_query(models.Node.reservation)"},{"line_number":806,"context_line":"                   .filter(models.Node.reservation !\u003d sql.null())"},{"line_number":807,"context_line":"                   .distinct().all())"},{"line_number":808,"context_line":"        result2 \u003d model_query(models.Conductor.hostname).all()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_2d71c944","line":805,"range":{"start_line":805,"start_character":8,"end_line":805,"end_character":15},"in_reply_to":"1aa78d24_53a15cf7","updated":"2016-07-07 01:42:57.000000000","message":"Sure","commit_id":"3ca761e4bb987ff85780095b8b6d8f9445435dfb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"456e277e2880855d19a6e6d6339145e710f4904f","unresolved":false,"context_lines":[{"line_number":802,"context_line":"            return [value[0] for value in db_column]"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"        # Query all nodes\u0027 reservation and return a list of unique values"},{"line_number":805,"context_line":"        res_cond_db \u003d (model_query(models.Node.reservation)"},{"line_number":806,"context_line":"                       .filter(models.Node.reservation !\u003d sql.null())"},{"line_number":807,"context_line":"                       .distinct().all())"},{"line_number":808,"context_line":"        reg_cond_db \u003d model_query(models.Conductor.hostname).all()"},{"line_number":809,"context_line":""},{"line_number":810,"context_line":"        reservered_cond \u003d _translate_column_query_result(res_cond_db)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_0178b02a","line":807,"range":{"start_line":805,"start_character":8,"end_line":807,"end_character":41},"updated":"2016-07-14 14:01:02.000000000","message":"This has potential of catching a restarting conductor. I wonder if we need to check that the last modification time is further than CONF.conductor.heartbeat_timeout seconds away.","commit_id":"1dba9823ecbc54b2852d44eca92178979e682ec8"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"7112177c80a0088bc5d1e2f847ce308490aef3c2","unresolved":false,"context_lines":[{"line_number":802,"context_line":"            return [value[0] for value in db_column]"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"        # Query all nodes\u0027 reservation and return a list of unique values"},{"line_number":805,"context_line":"        res_cond_db \u003d (model_query(models.Node.reservation)"},{"line_number":806,"context_line":"                       .filter(models.Node.reservation !\u003d sql.null())"},{"line_number":807,"context_line":"                       .distinct().all())"},{"line_number":808,"context_line":"        reg_cond_db \u003d model_query(models.Conductor.hostname).all()"},{"line_number":809,"context_line":""},{"line_number":810,"context_line":"        reservered_cond \u003d _translate_column_query_result(res_cond_db)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_b148ebb4","line":807,"range":{"start_line":805,"start_character":8,"end_line":807,"end_character":41},"in_reply_to":"1aa78d24_0178b02a","updated":"2016-07-15 02:47:42.000000000","message":"I am not quite sure I understand your case. \n\nFirstly, this method only return conductors which were deleted.\n\nSecondly, this may catch a miss conductor in L805-806 and it could restart(re-register) after this query. But if the restarting conductor is still alive and registered, it will not be regarded as the missing conductors in L812.  So I think this is fine.\n\nBut if you are talking the conductor will re-register and clear the lock after L812, I think _check_deploying_status can handle this.","commit_id":"1dba9823ecbc54b2852d44eca92178979e682ec8"}]}
