)]}'
{"openstack/image/v2/_proxy.py":[{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"cf8848b63aca317dc4e98c9a3f17666b2327f81a","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        :rtype: :class:`~openstack.image.v2.image.Image`"},{"line_number":103,"context_line":"        \"\"\""},{"line_number":104,"context_line":"        # get image to be updated"},{"line_number":105,"context_line":"        original_image \u003d self.get_image(image)"},{"line_number":106,"context_line":"        return original_image.update_image(self.session, image, **attrs)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def create_member(self, image, **attrs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_716653f0","line":105,"range":{"start_line":105,"start_character":25,"end_line":105,"end_character":46},"updated":"2017-05-18 13:31:51.000000000","message":"you are supposed to do:\n\n  image \u003d self._get_resource(_image.Image, image)","commit_id":"4da7a74120ab9eadcd57165fb4e51758398051cd"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"a1cb1c6efbcdd048aa4a9b80cfe4fc57ee890066","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        :rtype: :class:`~openstack.image.v2.image.Image`"},{"line_number":160,"context_line":"        \"\"\""},{"line_number":161,"context_line":"        # get image to be updated"},{"line_number":162,"context_line":"        original_image \u003d self._get(_image.Image, image)"},{"line_number":163,"context_line":"        return original_image.update_image(self._session, image, **attrs)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def deactivate_image(self, image):"}],"source_content_type":"text/x-python","patch_set":4,"id":"df140735_04438943","line":162,"range":{"start_line":162,"start_character":8,"end_line":162,"end_character":55},"updated":"2017-06-06 13:33:57.000000000","message":"Is this required? I don\u0027t have anything setup to test this manually right now, but what if I did...\n\n    img \u003d get_image(...) # or had an image from images()\n    update_image(image, ...)\n\nThe update_image call is just going to do another GET right away.","commit_id":"33be75e2d99af67ae457f3225d455042ef416bfa"}],"openstack/image/v2/image.py":[{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"cf8848b63aca317dc4e98c9a3f17666b2327f81a","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        url \u003d self._get_url(resource_id\u003dimage)"},{"line_number":98,"context_line":"        headers \u003d self.get_headers()"},{"line_number":99,"context_line":"        headers[\u0027Content-Type\u0027] \u003d ("},{"line_number":100,"context_line":"            \u0027application/openstack-images-v2.1-json-patch\u0027)"},{"line_number":101,"context_line":"        headers[\u0027Accept\u0027] \u003d \u0027\u0027"},{"line_number":102,"context_line":"        data \u003d self._update_operation(**attrs)"},{"line_number":103,"context_line":"        resp \u003d session.patch(url, endpoint_filter\u003dself.service, data\u003ddata,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_71c2d387","line":100,"range":{"start_line":100,"start_character":11,"end_line":100,"end_character":58},"updated":"2017-05-18 13:31:51.000000000","message":"just curious if this is the only acceptable content-type?","commit_id":"4da7a74120ab9eadcd57165fb4e51758398051cd"},{"author":{"_account_id":20191,"name":"Dinesh Bhor","email":"bhordinesh07@gmail.com","username":"dineshbhor"},"change_message_id":"9e2f4da1f0f796f02a09c5c11ee0ae981c767977","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        url \u003d self._get_url(resource_id\u003dimage)"},{"line_number":98,"context_line":"        headers \u003d self.get_headers()"},{"line_number":99,"context_line":"        headers[\u0027Content-Type\u0027] \u003d ("},{"line_number":100,"context_line":"            \u0027application/openstack-images-v2.1-json-patch\u0027)"},{"line_number":101,"context_line":"        headers[\u0027Accept\u0027] \u003d \u0027\u0027"},{"line_number":102,"context_line":"        data \u003d self._update_operation(**attrs)"},{"line_number":103,"context_line":"        resp \u003d session.patch(url, endpoint_filter\u003dself.service, data\u003ddata,"}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_2096faf1","line":100,"range":{"start_line":100,"start_character":11,"end_line":100,"end_character":58},"in_reply_to":"ff0f0b1f_71c2d387","updated":"2017-06-01 14:01:41.000000000","message":"Glance supports below patch types [1]:\n\napplication/openstack-images-v2.1-json-patch\napplication/openstack-images-v2.0-json-patch\n\nFrom which v2.0 is depreecated so I used v2.1.\n\n[1] https://specs.openstack.org/openstack/glance-specs/specs/api/v2/http-patch-image-api-v2.html#overview","commit_id":"4da7a74120ab9eadcd57165fb4e51758398051cd"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"cf8848b63aca317dc4e98c9a3f17666b2327f81a","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        headers[\u0027Accept\u0027] \u003d \u0027\u0027"},{"line_number":102,"context_line":"        data \u003d self._update_operation(**attrs)"},{"line_number":103,"context_line":"        resp \u003d session.patch(url, endpoint_filter\u003dself.service, data\u003ddata,"},{"line_number":104,"context_line":"                             headers\u003dheaders)"},{"line_number":105,"context_line":"        resp_headers \u003d resp.headers"},{"line_number":106,"context_line":"        resp \u003d resp.json()"},{"line_number":107,"context_line":"        if resp_headers:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_71d9b381","line":104,"range":{"start_line":104,"start_character":29,"end_line":104,"end_character":36},"updated":"2017-05-18 13:31:51.000000000","message":"should be additional_headers?\n\nheaders may contain other things like token.","commit_id":"4da7a74120ab9eadcd57165fb4e51758398051cd"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"cf8848b63aca317dc4e98c9a3f17666b2327f81a","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        resp \u003d session.patch(url, endpoint_filter\u003dself.service, data\u003ddata,"},{"line_number":104,"context_line":"                             headers\u003dheaders)"},{"line_number":105,"context_line":"        resp_headers \u003d resp.headers"},{"line_number":106,"context_line":"        resp \u003d resp.json()"},{"line_number":107,"context_line":"        if resp_headers:"},{"line_number":108,"context_line":"            resp[\u0027headers\u0027] \u003d resp_headers"},{"line_number":109,"context_line":"        return resp"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_118a771a","line":106,"range":{"start_line":106,"start_character":14,"end_line":106,"end_character":26},"updated":"2017-05-18 13:31:51.000000000","message":"what happens if the response cannot be decoded as JSON? I mean some error conditions.\n\nalso curious what the response will look like in normal cases. why we are not wrapping it back into a Image object?","commit_id":"4da7a74120ab9eadcd57165fb4e51758398051cd"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"cf8848b63aca317dc4e98c9a3f17666b2327f81a","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        # attributes to be removed must be given in \u0027attrs\u0027 like"},{"line_number":116,"context_line":"        # attrs \u003d {\u0027remove\u0027:[\u0027name\u0027, \u0027visibility\u0027]}"},{"line_number":117,"context_line":"        if \u0027remove\u0027 in attrs.keys():"},{"line_number":118,"context_line":"            remove_list \u003d attrs.pop(\u0027remove\u0027)"},{"line_number":119,"context_line":"            for attribute in remove_list:"},{"line_number":120,"context_line":"                if attribute in new:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_31c69b69","line":117,"range":{"start_line":117,"start_character":11,"end_line":117,"end_character":19},"updated":"2017-05-18 13:31:51.000000000","message":"this is a little bit restrictive because it means that users have to be aware of the wire protocol and they have to explicitly wrap attributes to be deleted into a special key.\n\nfor easier consumption in real-life use cases, and for better consistency with other SDK APIs, I\u0027d suggest we hide this logic from the users. What users need to provide should be just a new dict that contains the attributes to be kept/updated. All other attributes will be removed.\n\nmaybe then we don\u0027t need jsonpatch for this job?","commit_id":"4da7a74120ab9eadcd57165fb4e51758398051cd"}]}
