)]}'
{"tempest/lib/services/object_storage/object_client.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"22c7fac257a43182e913b123dff19275decfb781","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.expected_success([200, 204], resp.status)"},{"line_number":51,"context_line":"        return resp, body"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def update_object_metadata(self, container, object_name, metadata,"},{"line_number":54,"context_line":"                               metadata_prefix\u003d\u0027X-Object-Meta-\u0027):"},{"line_number":55,"context_line":"        \"\"\"Add, remove, or change X-Object-Meta metadata for storage object.\"\"\""},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f4e5783_f62dc0a8","line":53,"range":{"start_line":53,"start_character":8,"end_line":53,"end_character":30},"updated":"2017-10-10 13:12:07.000000000","message":"create_or_update_object_metadata","commit_id":"6036f88222cb434cd902cf47409930ebb4261bc2"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9a8ace84af196bebb80218b6257bedbe4cf2d0e5","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.expected_success([200, 204], resp.status)"},{"line_number":51,"context_line":"        return resp, body"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def update_object_metadata(self, container, object_name, metadata,"},{"line_number":54,"context_line":"                               metadata_prefix\u003d\u0027X-Object-Meta-\u0027):"},{"line_number":55,"context_line":"        \"\"\"Add, remove, or change X-Object-Meta metadata for storage object.\"\"\""},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f4e5783_dd3be1ce","line":53,"range":{"start_line":53,"start_character":8,"end_line":53,"end_character":30},"in_reply_to":"5f4e5783_f62dc0a8","updated":"2017-10-11 08:11:46.000000000","message":"Done","commit_id":"6036f88222cb434cd902cf47409930ebb4261bc2"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"22c7fac257a43182e913b123dff19275decfb781","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        return resp, body"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def update_object_metadata(self, container, object_name, metadata,"},{"line_number":54,"context_line":"                               metadata_prefix\u003d\u0027X-Object-Meta-\u0027):"},{"line_number":55,"context_line":"        \"\"\"Add, remove, or change X-Object-Meta metadata for storage object.\"\"\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        headers \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f4e5783_165cdc49","line":54,"range":{"start_line":54,"start_character":31,"end_line":54,"end_character":63},"updated":"2017-10-10 13:12:07.000000000","message":"it takes more headers than this one. It should accept headers as kwarga. \n\nhttps://developer.openstack.org/api-ref/object-store/#create-or-update-object-metadata","commit_id":"6036f88222cb434cd902cf47409930ebb4261bc2"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9a8ace84af196bebb80218b6257bedbe4cf2d0e5","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        return resp, body"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def update_object_metadata(self, container, object_name, metadata,"},{"line_number":54,"context_line":"                               metadata_prefix\u003d\u0027X-Object-Meta-\u0027):"},{"line_number":55,"context_line":"        \"\"\"Add, remove, or change X-Object-Meta metadata for storage object.\"\"\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        headers \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f4e5783_bd3825d3","line":54,"range":{"start_line":54,"start_character":31,"end_line":54,"end_character":63},"in_reply_to":"5f4e5783_165cdc49","updated":"2017-10-11 08:11:46.000000000","message":"Done","commit_id":"6036f88222cb434cd902cf47409930ebb4261bc2"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"22c7fac257a43182e913b123dff19275decfb781","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        self.expected_success(202, resp.status)"},{"line_number":64,"context_line":"        return resp, body"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def list_object_metadata(self, container, object_name):"},{"line_number":67,"context_line":"        \"\"\"List all storage object X-Object-Meta- metadata.\"\"\""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        url \u003d \"%s/%s\" % (str(container), str(object_name))"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f4e5783_96d7ac24","line":66,"range":{"start_line":66,"start_character":28,"end_line":66,"end_character":58},"updated":"2017-10-10 13:12:07.000000000","message":"this needs to accept param for query and headers to specify the headers as per https://developer.openstack.org/api-ref/object-store/#show-object-metadata","commit_id":"6036f88222cb434cd902cf47409930ebb4261bc2"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"22c7fac257a43182e913b123dff19275decfb781","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        self.expected_success(200, resp.status)"},{"line_number":72,"context_line":"        return resp, body"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def get_object(self, container, object_name, metadata\u003dNone):"},{"line_number":75,"context_line":"        \"\"\"Retrieve object\u0027s data.\"\"\""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        headers \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f4e5783_59d04551","line":74,"range":{"start_line":74,"start_character":49,"end_line":74,"end_character":62},"updated":"2017-10-10 13:12:07.000000000","message":"it needs to accept query param also  -https://developer.openstack.org/api-ref/object-store/#get-object-content-and-metadata","commit_id":"6036f88222cb434cd902cf47409930ebb4261bc2"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"22c7fac257a43182e913b123dff19275decfb781","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self.expected_success([200, 206], resp.status)"},{"line_number":85,"context_line":"        return resp, body"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def copy_object_in_same_container(self, container, src_object_name,"},{"line_number":88,"context_line":"                                      dest_object_name, metadata\u003dNone):"},{"line_number":89,"context_line":"        \"\"\"Copy storage object\u0027s data to the new object using PUT.\"\"\""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        url \u003d \"{0}/{1}\".format(container, dest_object_name)"},{"line_number":92,"context_line":"        headers \u003d {}"},{"line_number":93,"context_line":"        headers[\u0027X-Copy-From\u0027] \u003d \"%s/%s\" % (str(container),"},{"line_number":94,"context_line":"                                            str(src_object_name))"},{"line_number":95,"context_line":"        headers[\u0027content-length\u0027] \u003d \u00270\u0027"},{"line_number":96,"context_line":"        if metadata:"},{"line_number":97,"context_line":"            for key in metadata:"},{"line_number":98,"context_line":"                headers[str(key)] \u003d metadata[key]"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        resp, body \u003d self.put(url, None, headers\u003dheaders)"},{"line_number":101,"context_line":"        self.expected_success(201, resp.status)"},{"line_number":102,"context_line":"        return resp, body"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def copy_object_across_containers(self, src_container, src_object_name,"},{"line_number":105,"context_line":"                                      dst_container, dst_object_name,"},{"line_number":106,"context_line":"                                      metadata\u003dNone):"},{"line_number":107,"context_line":"        \"\"\"Copy storage object\u0027s data to the new object using PUT.\"\"\""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        url \u003d \"{0}/{1}\".format(dst_container, dst_object_name)"},{"line_number":110,"context_line":"        headers \u003d {}"},{"line_number":111,"context_line":"        headers[\u0027X-Copy-From\u0027] \u003d \"%s/%s\" % (str(src_container),"},{"line_number":112,"context_line":"                                            str(src_object_name))"},{"line_number":113,"context_line":"        headers[\u0027content-length\u0027] \u003d \u00270\u0027"},{"line_number":114,"context_line":"        if metadata:"},{"line_number":115,"context_line":"            for key in metadata:"},{"line_number":116,"context_line":"                headers[str(key)] \u003d metadata[key]"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        resp, body \u003d self.put(url, None, headers\u003dheaders)"},{"line_number":119,"context_line":"        self.expected_success(201, resp.status)"},{"line_number":120,"context_line":"        return resp, body"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def copy_object_2d_way(self, container, src_object_name, dest_object_name,"},{"line_number":123,"context_line":"                           metadata\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f4e5783_79aae185","line":120,"range":{"start_line":87,"start_character":0,"end_line":120,"end_character":25},"updated":"2017-10-10 13:12:07.000000000","message":"do we need to keep these?\nThese are just a wrapper of PUT API with \u0027X-Copy-From\u0027 header.\n\nI will say to remove these 2 method. Those are used only 2 place so would not take time to change.","commit_id":"6036f88222cb434cd902cf47409930ebb4261bc2"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"22c7fac257a43182e913b123dff19275decfb781","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        return resp, body"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def copy_object_2d_way(self, container, src_object_name, dest_object_name,"},{"line_number":123,"context_line":"                           metadata\u003dNone):"},{"line_number":124,"context_line":"        \"\"\"Copy storage object\u0027s data to the new object using COPY.\"\"\""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        url \u003d \"{0}/{1}\".format(container, src_object_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f4e5783_39b10991","line":123,"range":{"start_line":123,"start_character":40,"end_line":123,"end_character":42},"updated":"2017-10-10 13:12:07.000000000","message":"this needs to accept query param also for \u0027multipart-manifest\u0027.","commit_id":"6036f88222cb434cd902cf47409930ebb4261bc2"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"22c7fac257a43182e913b123dff19275decfb781","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        self.expected_success(201, resp.status)"},{"line_number":143,"context_line":"        return resp, body"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def put_object_with_chunk(self, container, name, contents):"},{"line_number":146,"context_line":"        \"\"\"Put an object with Transfer-Encoding header"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        :param container: name of the container"},{"line_number":149,"context_line":"        :type container: string"},{"line_number":150,"context_line":"        :param name: name of the object"},{"line_number":151,"context_line":"        :type name: string"},{"line_number":152,"context_line":"        :param contents: object data"},{"line_number":153,"context_line":"        :type contents: iterable"},{"line_number":154,"context_line":"        \"\"\""},{"line_number":155,"context_line":"        headers \u003d {\u0027Transfer-Encoding\u0027: \u0027chunked\u0027}"},{"line_number":156,"context_line":"        if self.token:"},{"line_number":157,"context_line":"            headers[\u0027X-Auth-Token\u0027] \u003d self.token"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        url \u003d \"%s/%s\" % (container, name)"},{"line_number":160,"context_line":"        resp, body \u003d self.put("},{"line_number":161,"context_line":"            url, headers\u003dheaders,"},{"line_number":162,"context_line":"            body\u003dcontents,"},{"line_number":163,"context_line":"            chunked\u003dTrue"},{"line_number":164,"context_line":"        )"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        self._error_checker(resp, body)"},{"line_number":167,"context_line":"        self.expected_success(201, resp.status)"},{"line_number":168,"context_line":"        return resp.status, resp.reason, resp"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def create_object_continue(self, container, object_name,"},{"line_number":171,"context_line":"                               data, metadata\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f4e5783_7c088f27","line":168,"range":{"start_line":145,"start_character":0,"end_line":168,"end_character":45},"updated":"2017-10-10 13:12:07.000000000","message":"ditto. this is wrapper of PUT for header \u0027Transfer-Encoding\u0027.\n\nWe can remove this.","commit_id":"6036f88222cb434cd902cf47409930ebb4261bc2"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"22c7fac257a43182e913b123dff19275decfb781","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        return resp.status, resp.reason"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"def create_connection(parsed_url):"},{"line_number":222,"context_line":"    \"\"\"Helper function to create connection with httplib"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    :param parsed_url: parsed url of the remote location"},{"line_number":225,"context_line":"    \"\"\""},{"line_number":226,"context_line":"    if parsed_url.scheme \u003d\u003d \u0027https\u0027:"},{"line_number":227,"context_line":"        conn \u003d httplib.HTTPSConnection(parsed_url.netloc)"},{"line_number":228,"context_line":"    else:"},{"line_number":229,"context_line":"        conn \u003d httplib.HTTPConnection(parsed_url.netloc)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    return conn"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f4e5783_f6b7003a","line":231,"range":{"start_line":221,"start_character":0,"end_line":231,"end_character":15},"updated":"2017-10-10 13:12:07.000000000","message":"this does not need to be stable method. it needs to be declared as private method.","commit_id":"6036f88222cb434cd902cf47409930ebb4261bc2"}]}
