)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"846073f382c49a602c16eac68d635fdce05735a5","unresolved":false,"context_lines":[{"line_number":11,"context_line":"status, it is out of control by our deploy timeout mechanism,"},{"line_number":12,"context_line":"the node will hang for ever."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"[1] https://github.com/openstack/ironic/blob/d8c182bd13414e7d278b7fda4c2e48e088f9572d/ironic/conductor/manager.py#L995"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"In this patch, we add code to cover the nodes in \u0027deploying\u0027 status."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a961159_a4f088fe","line":14,"updated":"2015-01-10 03:50:13.000000000","message":"Better to remove the github code location from commit message.  This won\u0027t be correct at some point later on, might not be even be correct after this code is merged.","commit_id":"9703de9ef17c19d541c96e79a29d039bb9f972f4"}],"ironic/conductor/manager.py":[{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"846073f382c49a602c16eac68d635fdce05735a5","unresolved":false,"context_lines":[{"line_number":804,"context_line":"        if not callback_timeout:"},{"line_number":805,"context_line":"            return"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"        filters \u003d {\u0027reserved\u0027: False,"},{"line_number":808,"context_line":"                   \u0027maintenance\u0027: False,"},{"line_number":809,"context_line":"                   \u0027provisioned_before\u0027: callback_timeout}"},{"line_number":810,"context_line":"        columns \u003d [\u0027uuid\u0027, \u0027driver\u0027, \u0027provision_state\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_0445dc14","line":807,"updated":"2015-01-10 03:50:13.000000000","message":"I think we reserve a node while doing deployment, so I would expect reservation to be non-empty when the node is DEPLOYING. So I guess we cannot have reserved\u003dFalse and provision_state\u003dDEPLOYING.","commit_id":"9703de9ef17c19d541c96e79a29d039bb9f972f4"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"145d0904eb82672edd4109ac34b70a0e3d35fb00","unresolved":false,"context_lines":[{"line_number":804,"context_line":"        if not callback_timeout:"},{"line_number":805,"context_line":"            return"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"        filters \u003d {\u0027reserved\u0027: False,"},{"line_number":808,"context_line":"                   \u0027maintenance\u0027: False,"},{"line_number":809,"context_line":"                   \u0027provisioned_before\u0027: callback_timeout}"},{"line_number":810,"context_line":"        columns \u003d [\u0027uuid\u0027, \u0027driver\u0027, \u0027provision_state\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_548dc7d2","line":807,"in_reply_to":"3a961159_0445dc14","updated":"2015-01-12 02:07:32.000000000","message":"yes, make sense, will remove reserved from the filter","commit_id":"9703de9ef17c19d541c96e79a29d039bb9f972f4"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"71a3a321015828422b37fe13891d629a7a9e4129","unresolved":false,"context_lines":[{"line_number":804,"context_line":"        if not callback_timeout:"},{"line_number":805,"context_line":"            return"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"        filters \u003d {\u0027reserved\u0027: False,"},{"line_number":808,"context_line":"                   \u0027maintenance\u0027: False,"},{"line_number":809,"context_line":"                   \u0027provisioned_before\u0027: callback_timeout}"},{"line_number":810,"context_line":"        columns \u003d [\u0027uuid\u0027, \u0027driver\u0027, \u0027provision_state\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_902e588b","line":807,"in_reply_to":"3a961159_548dc7d2","updated":"2015-01-12 05:58:02.000000000","message":"As discussed, this is risky thing in multi-conductor environment.  It\u0027s risky to break the reservation during DEPLOYING especially when the node is being deployed from another conductor.  Unless we stop the other conductor/thread from never attempting to resume the deploy (assuming it got stuck while DEPLOYING due to some I/O issue), it can lead to race conditions.\n\nBut this is a good thing to do when we have dead conductor while DEPLOYING a node.","commit_id":"9703de9ef17c19d541c96e79a29d039bb9f972f4"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"846073f382c49a602c16eac68d635fdce05735a5","unresolved":false,"context_lines":[{"line_number":815,"context_line":"                                    sort_dir\u003d\u0027asc\u0027)"},{"line_number":816,"context_line":""},{"line_number":817,"context_line":"        workers_count \u003d 0"},{"line_number":818,"context_line":"        for (node_uuid, driver, provision_state) in node_list:"},{"line_number":819,"context_line":"            if not self._mapped_to_this_conductor(node_uuid, driver):"},{"line_number":820,"context_line":"                continue"},{"line_number":821,"context_line":"            if provision_state not in (states.DEPLOYWAIT, states.DEPLOYING):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_2452d8de","line":818,"updated":"2015-01-10 03:50:13.000000000","message":"Have you thought about moving this change to DBAPI.  I mean add support for specifying multiple provision states in \u0027provision_state\u0027 as filter.  I would think it is a much better place to do it.  DB would do a much better job of filtering than what we would do in the code when there are large number of nodes.","commit_id":"9703de9ef17c19d541c96e79a29d039bb9f972f4"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"145d0904eb82672edd4109ac34b70a0e3d35fb00","unresolved":false,"context_lines":[{"line_number":815,"context_line":"                                    sort_dir\u003d\u0027asc\u0027)"},{"line_number":816,"context_line":""},{"line_number":817,"context_line":"        workers_count \u003d 0"},{"line_number":818,"context_line":"        for (node_uuid, driver, provision_state) in node_list:"},{"line_number":819,"context_line":"            if not self._mapped_to_this_conductor(node_uuid, driver):"},{"line_number":820,"context_line":"                continue"},{"line_number":821,"context_line":"            if provision_state not in (states.DEPLOYWAIT, states.DEPLOYING):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_b46a6beb","line":818,"in_reply_to":"3a961159_2452d8de","updated":"2015-01-12 02:07:32.000000000","message":"yes I want to add into our api [1], but not sure how to add \u0027and condition\u0027 with \u0027query.filter_by\u0027 call, maybe we need the condition is \u0027 provision_state\u003d states.DEPLOYWAIT or  provision_state states.DEPLOYING\u0027, so do you know how to implement such filter?\n\n[1] https://github.com/openstack/ironic/blob/b2121442204f5148c96a2016dc9f2721b48c1fcc/ironic/db/sqlalchemy/api.py#L162","commit_id":"9703de9ef17c19d541c96e79a29d039bb9f972f4"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e45f198671089b085cbc4769694dadb3ab2c26f","unresolved":false,"context_lines":[{"line_number":819,"context_line":"            if not self._mapped_to_this_conductor(node_uuid, driver):"},{"line_number":820,"context_line":"                continue"},{"line_number":821,"context_line":"            if provision_state not in (states.DEPLOYWAIT, states.DEPLOYING):"},{"line_number":822,"context_line":"                continue"},{"line_number":823,"context_line":"            try:"},{"line_number":824,"context_line":"                with task_manager.acquire(context, node_uuid) as task:"},{"line_number":825,"context_line":"                    # NOTE(comstud): Recheck maintenance and provision_state"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_850c7f94","line":822,"updated":"2015-01-09 09:52:16.000000000","message":"maybe make this tuple a constant, so that we don\u0027t repeat it in code?","commit_id":"9703de9ef17c19d541c96e79a29d039bb9f972f4"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"145d0904eb82672edd4109ac34b70a0e3d35fb00","unresolved":false,"context_lines":[{"line_number":819,"context_line":"            if not self._mapped_to_this_conductor(node_uuid, driver):"},{"line_number":820,"context_line":"                continue"},{"line_number":821,"context_line":"            if provision_state not in (states.DEPLOYWAIT, states.DEPLOYING):"},{"line_number":822,"context_line":"                continue"},{"line_number":823,"context_line":"            try:"},{"line_number":824,"context_line":"                with task_manager.acquire(context, node_uuid) as task:"},{"line_number":825,"context_line":"                    # NOTE(comstud): Recheck maintenance and provision_state"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_d46ff7fa","line":822,"in_reply_to":"3a961159_850c7f94","updated":"2015-01-12 02:07:32.000000000","message":"ok","commit_id":"9703de9ef17c19d541c96e79a29d039bb9f972f4"}],"ironic/tests/conductor/test_manager.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e45f198671089b085cbc4769694dadb3ab2c26f","unresolved":false,"context_lines":[{"line_number":2159,"context_line":"        self.service \u003d manager.ConductorManager(\u0027hostname\u0027, \u0027test-topic\u0027)"},{"line_number":2160,"context_line":"        self.service.dbapi \u003d self.dbapi"},{"line_number":2161,"context_line":""},{"line_number":2162,"context_line":"        self.node \u003d self._create_node(provision_state\u003dstates.DEPLOYWAIT)"},{"line_number":2163,"context_line":"        self.task \u003d self._create_task(node\u003dself.node)"},{"line_number":2164,"context_line":""},{"line_number":2165,"context_line":"        self.node2 \u003d self._create_node(provision_state\u003dstates.DEPLOYWAIT)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_2513cbb8","line":2162,"updated":"2015-01-09 09:52:16.000000000","message":"we need a test on DEPLOYING as well","commit_id":"9703de9ef17c19d541c96e79a29d039bb9f972f4"}]}
