)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5f9199867f407ea439440bfdc79c05f39bba0618","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Lucas Alvares Gomes \u003clucasagomes@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-14 15:24:21 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Ironic: Fix delete instance when spawming"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Nova allows issuein a \"nova delete\" command when the instance is being"},{"line_number":10,"context_line":"spawnmed, that wasn\u0027t working in Ironic because the spawn() in the Ironic"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a016987_712cb1ab","line":7,"range":{"start_line":7,"start_character":33,"end_line":7,"end_character":41},"updated":"2015-05-14 14:58:28.000000000","message":"\"spawning\" is misspelled.","commit_id":"3777b9f77810ebb1b0397c86b27cc29e053161c7"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c3b5ca75e181ce8d4add287eade81f5b93d50e3d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Lucas Alvares Gomes \u003clucasagomes@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-14 15:24:21 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Ironic: Fix delete instance when spawming"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Nova allows issuein a \"nova delete\" command when the instance is being"},{"line_number":10,"context_line":"spawnmed, that wasn\u0027t working in Ironic because the spawn() in the Ironic"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a016987_348d0732","line":7,"in_reply_to":"7a016987_712cb1ab","updated":"2015-05-14 15:03:16.000000000","message":"Done","commit_id":"3777b9f77810ebb1b0397c86b27cc29e053161c7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5f9199867f407ea439440bfdc79c05f39bba0618","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Ironic: Fix delete instance when spawming"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Nova allows issuein a \"nova delete\" command when the instance is being"},{"line_number":10,"context_line":"spawnmed, that wasn\u0027t working in Ironic because the spawn() in the Ironic"},{"line_number":11,"context_line":"nova driver doesn\u0027t return until the node have been deployed or error"},{"line_number":12,"context_line":"out and that causes Ironic to hold a lock that prevents the instance"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a016987_311d1974","line":9,"range":{"start_line":9,"start_character":12,"end_line":9,"end_character":19},"updated":"2015-05-14 14:58:28.000000000","message":"\"issuing\" is misspelled.","commit_id":"3777b9f77810ebb1b0397c86b27cc29e053161c7"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c3b5ca75e181ce8d4add287eade81f5b93d50e3d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Ironic: Fix delete instance when spawming"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Nova allows issuein a \"nova delete\" command when the instance is being"},{"line_number":10,"context_line":"spawnmed, that wasn\u0027t working in Ironic because the spawn() in the Ironic"},{"line_number":11,"context_line":"nova driver doesn\u0027t return until the node have been deployed or error"},{"line_number":12,"context_line":"out and that causes Ironic to hold a lock that prevents the instance"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a016987_14820b01","line":9,"in_reply_to":"7a016987_311d1974","updated":"2015-05-14 15:03:16.000000000","message":"Done","commit_id":"3777b9f77810ebb1b0397c86b27cc29e053161c7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5f9199867f407ea439440bfdc79c05f39bba0618","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Ironic: Fix delete instance when spawming"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Nova allows issuein a \"nova delete\" command when the instance is being"},{"line_number":10,"context_line":"spawnmed, that wasn\u0027t working in Ironic because the spawn() in the Ironic"},{"line_number":11,"context_line":"nova driver doesn\u0027t return until the node have been deployed or error"},{"line_number":12,"context_line":"out and that causes Ironic to hold a lock that prevents the instance"},{"line_number":13,"context_line":"termination to call destroy() in the Ironic nova driver."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a016987_d10c8544","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":8},"updated":"2015-05-14 14:58:28.000000000","message":"\"spawned\" is misspelled.","commit_id":"3777b9f77810ebb1b0397c86b27cc29e053161c7"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c3b5ca75e181ce8d4add287eade81f5b93d50e3d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Ironic: Fix delete instance when spawming"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Nova allows issuein a \"nova delete\" command when the instance is being"},{"line_number":10,"context_line":"spawnmed, that wasn\u0027t working in Ironic because the spawn() in the Ironic"},{"line_number":11,"context_line":"nova driver doesn\u0027t return until the node have been deployed or error"},{"line_number":12,"context_line":"out and that causes Ironic to hold a lock that prevents the instance"},{"line_number":13,"context_line":"termination to call destroy() in the Ironic nova driver."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a016987_f4864f12","line":10,"in_reply_to":"7a016987_d10c8544","updated":"2015-05-14 15:03:16.000000000","message":"Done","commit_id":"3777b9f77810ebb1b0397c86b27cc29e053161c7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5f9199867f407ea439440bfdc79c05f39bba0618","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Nova allows issuein a \"nova delete\" command when the instance is being"},{"line_number":10,"context_line":"spawnmed, that wasn\u0027t working in Ironic because the spawn() in the Ironic"},{"line_number":11,"context_line":"nova driver doesn\u0027t return until the node have been deployed or error"},{"line_number":12,"context_line":"out and that causes Ironic to hold a lock that prevents the instance"},{"line_number":13,"context_line":"termination to call destroy() in the Ironic nova driver."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a016987_54ff6301","line":11,"range":{"start_line":11,"start_character":64,"end_line":11,"end_character":69},"updated":"2015-05-14 14:58:28.000000000","message":"\"errored\" ?","commit_id":"3777b9f77810ebb1b0397c86b27cc29e053161c7"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c3b5ca75e181ce8d4add287eade81f5b93d50e3d","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Nova allows issuein a \"nova delete\" command when the instance is being"},{"line_number":10,"context_line":"spawnmed, that wasn\u0027t working in Ironic because the spawn() in the Ironic"},{"line_number":11,"context_line":"nova driver doesn\u0027t return until the node have been deployed or error"},{"line_number":12,"context_line":"out and that causes Ironic to hold a lock that prevents the instance"},{"line_number":13,"context_line":"termination to call destroy() in the Ironic nova driver."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a016987_b479f731","line":11,"in_reply_to":"7a016987_54ff6301","updated":"2015-05-14 15:03:16.000000000","message":"Done","commit_id":"3777b9f77810ebb1b0397c86b27cc29e053161c7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5f9199867f407ea439440bfdc79c05f39bba0618","unresolved":false,"context_lines":[{"line_number":12,"context_line":"out and that causes Ironic to hold a lock that prevents the instance"},{"line_number":13,"context_line":"termination to call destroy() in the Ironic nova driver."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch fixes that problem by making the loop waiting the node to"},{"line_number":16,"context_line":"get active (or error) in Ironic to also look at the instance task_state"},{"line_number":17,"context_line":"and see if it\u0027s being deleted. In case the instance is being deleted"},{"line_number":18,"context_line":"mid deployment operation we break the loop releasing the lock and then"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a016987_542643bb","line":15,"range":{"start_line":15,"start_character":49,"end_line":15,"end_character":56},"updated":"2015-05-14 14:58:28.000000000","message":"\"waiting on\" ?","commit_id":"3777b9f77810ebb1b0397c86b27cc29e053161c7"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c3b5ca75e181ce8d4add287eade81f5b93d50e3d","unresolved":false,"context_lines":[{"line_number":12,"context_line":"out and that causes Ironic to hold a lock that prevents the instance"},{"line_number":13,"context_line":"termination to call destroy() in the Ironic nova driver."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch fixes that problem by making the loop waiting the node to"},{"line_number":16,"context_line":"get active (or error) in Ironic to also look at the instance task_state"},{"line_number":17,"context_line":"and see if it\u0027s being deleted. In case the instance is being deleted"},{"line_number":18,"context_line":"mid deployment operation we break the loop releasing the lock and then"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a016987_74737f4e","line":15,"in_reply_to":"7a016987_542643bb","updated":"2015-05-14 15:03:16.000000000","message":"Done","commit_id":"3777b9f77810ebb1b0397c86b27cc29e053161c7"}],"nova/virt/ironic/driver.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"623a473d96b2aed24e84225b0c82fd38edd6f3b8","unresolved":false,"context_lines":[{"line_number":362,"context_line":""},{"line_number":363,"context_line":"    def _wait_for_active(self, context, ironicclient, instance):"},{"line_number":364,"context_line":"        \"\"\"Wait for the node to be marked as ACTIVE in Ironic.\"\"\""},{"line_number":365,"context_line":"        instance \u003d objects.Instance.get_by_uuid(context, instance.uuid)"},{"line_number":366,"context_line":"        if instance.task_state \u003d\u003d task_states.DELETING:"},{"line_number":367,"context_line":"            raise exception.InstanceDeployFailure("},{"line_number":368,"context_line":"                _(\"Instance %s provisioning was aborted\") % instance.uuid)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_899387a3","line":365,"updated":"2015-05-14 13:45:29.000000000","message":"Just do instance.refresh() here instead.","commit_id":"6b9d341dbe69f21356c4d745f0247742e970827c"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"f0c0ac4f9fe2ba99343680914c2ecffc1801ac5f","unresolved":false,"context_lines":[{"line_number":362,"context_line":""},{"line_number":363,"context_line":"    def _wait_for_active(self, context, ironicclient, instance):"},{"line_number":364,"context_line":"        \"\"\"Wait for the node to be marked as ACTIVE in Ironic.\"\"\""},{"line_number":365,"context_line":"        instance \u003d objects.Instance.get_by_uuid(context, instance.uuid)"},{"line_number":366,"context_line":"        if instance.task_state \u003d\u003d task_states.DELETING:"},{"line_number":367,"context_line":"            raise exception.InstanceDeployFailure("},{"line_number":368,"context_line":"                _(\"Instance %s provisioning was aborted\") % instance.uuid)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_1b26be68","line":365,"in_reply_to":"7a016987_899387a3","updated":"2015-05-14 14:13:25.000000000","message":"awesome +1 thanks","commit_id":"6b9d341dbe69f21356c4d745f0247742e970827c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5f9199867f407ea439440bfdc79c05f39bba0618","unresolved":false,"context_lines":[{"line_number":363,"context_line":"    def _wait_for_active(self, ironicclient, instance):"},{"line_number":364,"context_line":"        \"\"\"Wait for the node to be marked as ACTIVE in Ironic.\"\"\""},{"line_number":365,"context_line":"        instance.refresh()"},{"line_number":366,"context_line":"        if instance.task_state \u003d\u003d task_states.DELETING:"},{"line_number":367,"context_line":"            raise exception.InstanceDeployFailure("},{"line_number":368,"context_line":"                _(\"Instance %s provisioning was aborted\") % instance.uuid)"},{"line_number":369,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_5482c353","line":366,"updated":"2015-05-14 14:58:28.000000000","message":"I wonder if it would be better to check for !\u003d SPAWNING. That way if we got separated from the controller and it eventually did a local delete, we wouldn\u0027t keep waiting here when we discovered that the instance went into DELETED vm_state, when task_state !\u003d DELETING (i.e. because it\u0027s done).","commit_id":"3777b9f77810ebb1b0397c86b27cc29e053161c7"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c3b5ca75e181ce8d4add287eade81f5b93d50e3d","unresolved":false,"context_lines":[{"line_number":363,"context_line":"    def _wait_for_active(self, ironicclient, instance):"},{"line_number":364,"context_line":"        \"\"\"Wait for the node to be marked as ACTIVE in Ironic.\"\"\""},{"line_number":365,"context_line":"        instance.refresh()"},{"line_number":366,"context_line":"        if instance.task_state \u003d\u003d task_states.DELETING:"},{"line_number":367,"context_line":"            raise exception.InstanceDeployFailure("},{"line_number":368,"context_line":"                _(\"Instance %s provisioning was aborted\") % instance.uuid)"},{"line_number":369,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_f4b88fe7","line":366,"in_reply_to":"7a016987_5482c353","updated":"2015-05-14 15:03:16.000000000","message":"Hmm right that\u0027s a good suggestion. I will change the code to do that","commit_id":"3777b9f77810ebb1b0397c86b27cc29e053161c7"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"1da3adb17797b15b7fb58bc4a6783b56aa3c6879","unresolved":false,"context_lines":[{"line_number":363,"context_line":"    def _wait_for_active(self, ironicclient, instance):"},{"line_number":364,"context_line":"        \"\"\"Wait for the node to be marked as ACTIVE in Ironic.\"\"\""},{"line_number":365,"context_line":"        instance.refresh()"},{"line_number":366,"context_line":"        if instance.task_state \u003d\u003d task_states.DELETING:"},{"line_number":367,"context_line":"            raise exception.InstanceDeployFailure("},{"line_number":368,"context_line":"                _(\"Instance %s provisioning was aborted\") % instance.uuid)"},{"line_number":369,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_140c4b93","line":366,"in_reply_to":"7a016987_f4b88fe7","updated":"2015-05-14 15:06:10.000000000","message":"Oh no, actually it wouldn\u0027t be a good idea... Because other task_states we need to wait here too. For example \"rebuilding\".\n\nPerhaps we could check a list of possible erroneous errors instead of everything but SPAWNING","commit_id":"3777b9f77810ebb1b0397c86b27cc29e053161c7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9ea2f54e7716c9b8f2685308857d82a1d767a30e","unresolved":false,"context_lines":[{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    def _wait_for_active(self, ironicclient, instance):"},{"line_number":365,"context_line":"        \"\"\"Wait for the node to be marked as ACTIVE in Ironic.\"\"\""},{"line_number":366,"context_line":"        instance.refresh()"},{"line_number":367,"context_line":"        if (instance.task_state \u003d\u003d task_states.DELETING or"},{"line_number":368,"context_line":"            instance.vm_state in (vm_states.ERROR, vm_states.DELETED)):"},{"line_number":369,"context_line":"            raise exception.InstanceDeployFailure("}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_f62521c2","line":366,"updated":"2015-05-14 23:48:51.000000000","message":"Hmm, I wonder if we should have done this at the end of the loop. The first time through, we\u0027re going to immediately refresh the instance for no real reason, right?","commit_id":"ea3967a1fb47297608defd680286fd9051ff5bbe"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"3ae250ca7d06040dc96f1a57f64615f0821bae95","unresolved":false,"context_lines":[{"line_number":364,"context_line":"    def _wait_for_active(self, ironicclient, instance):"},{"line_number":365,"context_line":"        \"\"\"Wait for the node to be marked as ACTIVE in Ironic.\"\"\""},{"line_number":366,"context_line":"        instance.refresh()"},{"line_number":367,"context_line":"        if (instance.task_state \u003d\u003d task_states.DELETING or"},{"line_number":368,"context_line":"            instance.vm_state in (vm_states.ERROR, vm_states.DELETED)):"},{"line_number":369,"context_line":"            raise exception.InstanceDeployFailure("},{"line_number":370,"context_line":"                _(\"Instance %s provisioning was aborted\") % instance.uuid)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_aa8d0b7d","line":367,"updated":"2015-05-14 16:59:47.000000000","message":"might be a dumb question (cuz I\u0027m not that familiar with nova) -- do we need to worry about SOFT_DELETING?","commit_id":"ea3967a1fb47297608defd680286fd9051ff5bbe"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"3ae250ca7d06040dc96f1a57f64615f0821bae95","unresolved":false,"context_lines":[{"line_number":367,"context_line":"        if (instance.task_state \u003d\u003d task_states.DELETING or"},{"line_number":368,"context_line":"            instance.vm_state in (vm_states.ERROR, vm_states.DELETED)):"},{"line_number":369,"context_line":"            raise exception.InstanceDeployFailure("},{"line_number":370,"context_line":"                _(\"Instance %s provisioning was aborted\") % instance.uuid)"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"        node \u003d _validate_instance_and_node(ironicclient, instance)"},{"line_number":373,"context_line":"        if node.provision_state \u003d\u003d ironic_states.ACTIVE:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_6ac153e4","line":370,"updated":"2015-05-14 16:59:47.000000000","message":"Would it be clearer to whoever sees this if it said something about the instance being deleted? Eg, \u0027.. was aborted due to instance being deleted or in an error state\u0027?","commit_id":"ea3967a1fb47297608defd680286fd9051ff5bbe"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9ea2f54e7716c9b8f2685308857d82a1d767a30e","unresolved":false,"context_lines":[{"line_number":367,"context_line":"        if (instance.task_state \u003d\u003d task_states.DELETING or"},{"line_number":368,"context_line":"            instance.vm_state in (vm_states.ERROR, vm_states.DELETED)):"},{"line_number":369,"context_line":"            raise exception.InstanceDeployFailure("},{"line_number":370,"context_line":"                _(\"Instance %s provisioning was aborted\") % instance.uuid)"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"        node \u003d _validate_instance_and_node(ironicclient, instance)"},{"line_number":373,"context_line":"        if node.provision_state \u003d\u003d ironic_states.ACTIVE:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_f65e4144","line":370,"in_reply_to":"7a016987_6ac153e4","updated":"2015-05-14 23:48:51.000000000","message":"They would have had to take that action, so I don\u0027t think it matters that much, no.","commit_id":"ea3967a1fb47297608defd680286fd9051ff5bbe"}]}
