)]}'
{"openstack/clustering/v1/_async_resource.py":[{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"c973c0612428e7b2240aed650f9b4da3975037d7","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        :raises: :exc:`~openstack.exceptions.ResourceNotFound` if"},{"line_number":32,"context_line":"                 the resource was not found."},{"line_number":33,"context_line":"        \"\"\""},{"line_number":34,"context_line":"        response \u003d self._raw_delete(session, error_message)"},{"line_number":35,"context_line":"        return self._delete_response(response)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _delete_response(self, response):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_ffdfe662","line":34,"range":{"start_line":34,"start_character":45,"end_line":34,"end_character":58},"updated":"2019-02-01 14:46:31.000000000","message":"This does not appear to be used in the underlying call. Wondering if the parameter to delete() even needs to be here, given that?","commit_id":"5a2104517b7770219232c24fea3e6b09ff821547"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"3ea42d42f7a12001c992c614a83da111851af908","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        :raises: :exc:`~openstack.exceptions.ResourceNotFound` if"},{"line_number":32,"context_line":"                 the resource was not found."},{"line_number":33,"context_line":"        \"\"\""},{"line_number":34,"context_line":"        response \u003d self._raw_delete(session, error_message)"},{"line_number":35,"context_line":"        return self._delete_response(response)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _delete_response(self, response):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_3fa00e90","line":34,"range":{"start_line":34,"start_character":45,"end_line":34,"end_character":58},"in_reply_to":"9fdfeff1_ffdfe662","updated":"2019-02-01 15:01:24.000000000","message":"It does need to be - because the base class delete() accepts it and uses it. But ...","commit_id":"5a2104517b7770219232c24fea3e6b09ff821547"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"3ea42d42f7a12001c992c614a83da111851af908","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        return self._delete_response(response)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _delete_response(self, response):"},{"line_number":38,"context_line":"        location \u003d response.headers[\u0027Location\u0027]"},{"line_number":39,"context_line":"        action_id \u003d location.split(\u0027/\u0027)[-1]"},{"line_number":40,"context_line":"        action \u003d _action.Action.existing("},{"line_number":41,"context_line":"            id\u003daction_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_dfaa226f","line":38,"updated":"2019-02-01 15:01:24.000000000","message":"Lookie here - we\u0027re not ever throwing an exception if we get a remote exception. Whoops!","commit_id":"5a2104517b7770219232c24fea3e6b09ff821547"}],"openstack/clustering/v1/_proxy.py":[{"author":{"_account_id":27224,"name":"Duc Truong","email":"duc.openstack@gmail.com","username":"dtruong2"},"change_message_id":"421853066fb4424afa79b1053cd3c10a5800f258","unresolved":false,"context_lines":[{"line_number":995,"context_line":"        :raises: :class:`~openstack.exceptions.ResourceTimeout` if transition"},{"line_number":996,"context_line":"                 to delete failed to occur in the specified seconds."},{"line_number":997,"context_line":"        \"\"\""},{"line_number":998,"context_line":"        # TODO(mordred) This is not going to work with the ActionStatus"},{"line_number":999,"context_line":"        # returned by things around here."},{"line_number":1000,"context_line":"        return resource.wait_for_delete(self, res, interval, wait)"},{"line_number":1001,"context_line":""},{"line_number":1002,"context_line":"    def services(self, **query):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_368095c0","line":999,"range":{"start_line":998,"start_character":8,"end_line":999,"end_character":41},"updated":"2019-01-17 23:34:44.000000000","message":"For ActionStatus, we need to query the location url.  The response contains a `status` field (https://developer.openstack.org/api-ref/clustering/?expanded\u003dshow-action-details-detail#id264)\nIf the status is SUCCEEDED, then the delete is considered success.  If the status is FAILED, then the delete is considered failed.","commit_id":"570809f9f4eb1a811a994eb75ebb7f2d7f6ccf1e"}],"openstack/resource.py":[{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"3085325b26cb494334cb5547c9b724bdeaa30d4e","unresolved":false,"context_lines":[{"line_number":364,"context_line":"    #: The name of this resource."},{"line_number":365,"context_line":"    name \u003d Body(\"name\")"},{"line_number":366,"context_line":"    #: The OpenStack location of this resource."},{"line_number":367,"context_line":"    location \u003d Computed(\u0027location\u0027)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    #: Mapping of accepted query parameter names."},{"line_number":370,"context_line":"    _query_mapping \u003d QueryParameters()"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfdaf3ff_c6864614","side":"PARENT","line":367,"range":{"start_line":367,"start_character":16,"end_line":367,"end_character":23},"updated":"2019-01-17 15:15:04.000000000","message":"SO ... this is likely going to totally screw with you - so let\u0027s see if we can find an answer. (and let\u0027s add a test for whatever it is so that we can prevent breaking you in the future)\n\nlocation is a field we add to resources with general cloud location information - and it\u0027s added regardless of service or resource. It looks like this:\n\n  {\n    \u0027cloud\u0027: \u0027_test_cloud_\u0027,\n    \u0027project\u0027: {\n       \u0027id\u0027: \u00278df004f5-f4a1-4800-a0e0-f06a6fd18aeb\u0027,\n       \u0027name\u0027: \u0027admin\u0027,\n       \u0027domain_id\u0027: None,\n       \u0027domain_name\u0027: \u0027default\u0027\n    },\n    \u0027region_name\u0027: u\u0027RegionOne\u0027,\n    \u0027zone\u0027: None\n  }\n\nI think what we want to do - looking at the senlin API and the usage in senlinclient - is to make a new Resource type for these senlin actions that return basically an ActionStatus object - and in that, override location with the location header. (the action status objects aren\u0027t really long-lived objects where people want to answer the question \"what cloud is this in\")\n\nI\u0027ll push up something for that in just a sec.","commit_id":"a977c85070cd16e8814c170a19d565695ce42e2d"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"c973c0612428e7b2240aed650f9b4da3975037d7","unresolved":false,"context_lines":[{"line_number":1250,"context_line":"        self._translate_response(response, has_body\u003dFalse, **kwargs)"},{"line_number":1251,"context_line":"        return self"},{"line_number":1252,"context_line":""},{"line_number":1253,"context_line":"    def _raw_delete(self, session, error_message\u003dNone):"},{"line_number":1254,"context_line":"        if not self.allow_delete:"},{"line_number":1255,"context_line":"            raise exceptions.MethodNotSupported(self, \"delete\")"},{"line_number":1256,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_3fac8eeb","line":1253,"range":{"start_line":1253,"start_character":34,"end_line":1253,"end_character":53},"updated":"2019-02-01 14:46:31.000000000","message":"This is not used here.","commit_id":"5a2104517b7770219232c24fea3e6b09ff821547"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"3ea42d42f7a12001c992c614a83da111851af908","unresolved":false,"context_lines":[{"line_number":1250,"context_line":"        self._translate_response(response, has_body\u003dFalse, **kwargs)"},{"line_number":1251,"context_line":"        return self"},{"line_number":1252,"context_line":""},{"line_number":1253,"context_line":"    def _raw_delete(self, session, error_message\u003dNone):"},{"line_number":1254,"context_line":"        if not self.allow_delete:"},{"line_number":1255,"context_line":"            raise exceptions.MethodNotSupported(self, \"delete\")"},{"line_number":1256,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_ff704642","line":1253,"range":{"start_line":1253,"start_character":34,"end_line":1253,"end_character":53},"in_reply_to":"9fdfeff1_3fac8eeb","updated":"2019-02-01 15:01:24.000000000","message":"Ah - yes. It\u0027s handled in the delete() call in the call to self._translate_response.","commit_id":"5a2104517b7770219232c24fea3e6b09ff821547"}]}
