)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41152ca5b6a3c83a405269dc4ad32d63e696cca6","unresolved":false,"context_lines":[{"line_number":13,"context_line":"to the placement service. A TODO was added to remove that handling"},{"line_number":14,"context_line":"in Stein, so it\u0027s time to remove it."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Note that with the removal of that error handling, the API response"},{"line_number":17,"context_line":"in both add host to aggregate and remove host from aggregate APIs"},{"line_number":18,"context_line":"will be a 500. An error in add_host_to_aggregate should be remedied"},{"line_number":19,"context_line":"by running the \"nova-manage placement sync_aggregates\" command but"},{"line_number":20,"context_line":"a failure in remove_host_from_aggregate will not be. As such we"},{"line_number":21,"context_line":"might want to consider rolling back changes on failure in the"},{"line_number":22,"context_line":"latter case."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: I4dfbed3e41c4952efc2900a063cb22753539d6cb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7faddb67_cee69b45","line":22,"range":{"start_line":16,"start_character":0,"end_line":22,"end_character":12},"updated":"2019-07-08 20:05:45.000000000","message":"@Eric, this is why I haven\u0027t moved very fast on this - haven\u0027t put the thought into these error cases.","commit_id":"5ecb06d49dd817662b0ddbdcc5023e2e9389781b"}],"nova/api/openstack/compute/aggregates.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"12edb73d046742b914908b223aa501e4c7f8ae5e","unresolved":false,"context_lines":[{"line_number":180,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":181,"context_line":"        except (exception.InvalidAggregateAction,"},{"line_number":182,"context_line":"                exception.ResourceProviderUpdateConflict):"},{"line_number":183,"context_line":"            msg \u003d _(\u0027Cannot remove host %(host)s in aggregate %(id)s\u0027) % {"},{"line_number":184,"context_line":"                        \u0027host\u0027: host, \u0027id\u0027: id}"},{"line_number":185,"context_line":"            raise exc.HTTPConflict(explanation\u003dmsg)"},{"line_number":186,"context_line":"        return self._marshall_aggregate(req, aggregate)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_153f3025","line":183,"updated":"2019-11-04 14:33:33.000000000","message":"Huh, this doesn\u0027t really give the admin any hint as to what failed. We should probably log the thing that failed before raising a new message. Different patch though.","commit_id":"61a528311de710edceb23955b0f49358682760b0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"78eb59ee94f629e833c744c5143d33c2c80a5429","unresolved":false,"context_lines":[{"line_number":180,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":181,"context_line":"        except (exception.InvalidAggregateAction,"},{"line_number":182,"context_line":"                exception.ResourceProviderUpdateConflict):"},{"line_number":183,"context_line":"            msg \u003d _(\u0027Cannot remove host %(host)s in aggregate %(id)s\u0027) % {"},{"line_number":184,"context_line":"                        \u0027host\u0027: host, \u0027id\u0027: id}"},{"line_number":185,"context_line":"            raise exc.HTTPConflict(explanation\u003dmsg)"},{"line_number":186,"context_line":"        return self._marshall_aggregate(req, aggregate)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_f577f4cf","line":183,"in_reply_to":"3fa7e38b_153f3025","updated":"2019-11-04 14:42:10.000000000","message":"https://review.opendev.org/#/c/692833/","commit_id":"61a528311de710edceb23955b0f49358682760b0"}],"nova/compute/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c6886423ecc8f68c3549526837e12cf39fc9ed7e","unresolved":false,"context_lines":[{"line_number":5612,"context_line":"            # would just be confused). So, we just log a warning here, noting"},{"line_number":5613,"context_line":"            # that on the next run of nova-manage placement sync_aggregates"},{"line_number":5614,"context_line":"            # things will go back to normal"},{"line_number":5615,"context_line":"            # FIXME(mriedem): sync_aggregates does not actually handle"},{"line_number":5616,"context_line":"            # removals, as such should we rollback the changes we made above?"},{"line_number":5617,"context_line":"            # If so, it would probably be easier to do the placement stuff"},{"line_number":5618,"context_line":"            # first."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_f2db8ae6","line":5615,"updated":"2019-11-04 13:40:04.000000000","message":"Yeah I\u0027m going to do the placement stuff first b/c if we fail that we can\u0027t roll it back very easily, at least we can\u0027t with sync_aggregates. There are lots of things that could go wrong in this method and none of it is atomic though.","commit_id":"5ecb06d49dd817662b0ddbdcc5023e2e9389781b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"12edb73d046742b914908b223aa501e4c7f8ae5e","unresolved":false,"context_lines":[{"line_number":5791,"context_line":"        aggregate.delete_host(host_name)"},{"line_number":5792,"context_line":"        self.query_client.update_aggregates(context, [aggregate])"},{"line_number":5793,"context_line":"        self._update_az_cache_for_host(context, host_name, aggregate.metadata)"},{"line_number":5794,"context_line":"        self.compute_rpcapi.remove_aggregate_host(context,"},{"line_number":5795,"context_line":"                aggregate\u003daggregate, host_param\u003dhost_name, host\u003dhost_name)"},{"line_number":5796,"context_line":"        compute_utils.notify_about_aggregate_update(context,"},{"line_number":5797,"context_line":"                                                    \"removehost.end\","}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_d54438ba","line":5794,"updated":"2019-11-04 14:33:33.000000000","message":"Note that the only thing that implements this is the xenapi driver. We should be doing this before aggregate.delete_host above otherwise we can\u0027t retry this operation. Not for this change though.","commit_id":"61a528311de710edceb23955b0f49358682760b0"}],"nova/scheduler/client/report.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c6886423ecc8f68c3549526837e12cf39fc9ed7e","unresolved":false,"context_lines":[{"line_number":2235,"context_line":"                          required."},{"line_number":2236,"context_line":"        :param rp_uuid: UUID of the resource provider to add to the aggregate."},{"line_number":2237,"context_line":"                        Either host_name or rp_uuid is required."},{"line_number":2238,"context_line":"        :raises: `exceptions.PlacementAPIConnectFailure` if unable to connect"},{"line_number":2239,"context_line":"                  to the placement service"},{"line_number":2240,"context_line":"        :raises: `exceptions.ResourceProviderNotFound` if no resource provider"},{"line_number":2241,"context_line":"                  matching the host name could be found from the placement API"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_32d602c5","line":2238,"updated":"2019-11-04 13:40:04.000000000","message":"This is all done by https://review.opendev.org/#/c/664062/ now.","commit_id":"5ecb06d49dd817662b0ddbdcc5023e2e9389781b"}]}
