Sample code for rgw object etag in ceph
This article will explain in detail the sample code about the rgw object etag in ceph. The editor thinks it is very practical, so I share it with you for reference. I hope you can get something after reading this article.
Import hashlibimport botoimport tracebackfrom boto.s3.connection import S3Connectionclass ETagExample (object): def _ init__ (self): self.s3_bucket = "yuliyang6" self.s3_conn = boto.connect_s3 ("admin", "admin", host= "192.168.10.147", is_secure=False, port=8081, calling_format=boto.s3.connection.OrdinaryCallingFormat () ) # Function to calculate the checksum of a local file def find_checksum (self, file_name): try: checksum = hashlib.md5 (open (file_name). Read ()). Hexdigest () return checksum except Exception E: print "Exception occurred while calculating checksum:" + str (e) print traceback.print_exc () # Function to calculate the Etag of a file in S3 def find_etag (self Full_key_name): try: bucket = self.s3_conn.get_bucket (self.s3_bucket) key = bucket.get_key (full_key_name) s3_etag = key.etag.strip ('"). Strip ("') return s3_etag except Exception E: print "Exception occurred while calculating S3 Etag:" + str (e) print traceback.print_exc () if _ _ name__ ='_ _ main__': test = ETagExample () print test.find_checksum ('object1') print test.find_etag (' object1') 320c1c0f22dc91d94afe36a042ebc89dsend: 'HEAD / yuliyang6/ HTTP/1.1\ r\ nHost: 192.168.10.147 Etag 8081\ r\ nAccept-Encoding: identity\ r\ nDate: Sun 06 Nov 200 07:54:51 GMT\ r\ nContent-Length: 0\ r\ nAuthorization: AWS admin:P7eaeSj73/8dObIeJtIac/ZwXzA=\ r\ nUser-Agent: Boto/2.41.0 Python/2.7.9 Windows/7\ r\ n\ r\ n'reply: 'HTTP/1.1 2016 OK\ r\ n'header: X-RGW-Object-Count: 1header: X-RGW-Bytes-Used: 847header: x-amz-request-id: tx0000000000000000004f6-00581ee1cb-857b-defaultheader: Content-Length: 0header: Date: Sun 06 Nov 2016 07:54:51 GMTsend: 'HEAD / yuliyang2/ HTTP/1.1\ r\ nHost: 192.168.10.147 HEAD 8081\ r\ nAccept-Encoding: identity\ r\ nDate: Sun 06 Nov 200 07:54:51 GMT\ r\ nContent-Length: 0\ r\ nAuthorization: AWS admin:FOtHjwG9XIHPaoBy8TT8QDB3y0I=\ r\ nUser-Agent: Boto/2.41.0 Python/2.7.9 Windows/7\ r\ n\ r\ n'reply: 'HTTP/1.1 2016 OK\ r\ n'header: X-RGW-Object-Count: 4header: X-RGW-Bytes-Used: 104858452header: x-amz-request-id: tx0000000000000000004f7-00581ee1cb-857b-defaultheader: Content-Length: 0header: Date: Sun 06 Nov 2016 07:54:51 GMTsend: 'HEAD / yuliyang2/object1 HTTP/1.1\ r\ nHost: 192.168.10.147 HEAD 8081\ r\ nAccept-Encoding: identity\ r\ nDate: Sun 06 Nov 200 07:54:51 GMT\ r\ nContent-Length: 0\ r\ nAuthorization: AWS admin:KADu0hAVS1BVs3Y9zTIO7dRovCs=\ r\ nUser-Agent: Boto/2.41.0 Python/2.7.9 Windows/7\ r\ n\ r\ n'reply: 'HTTP/1.1 2016 OK\ r\ n'header: Content-Length: 847header: Accept-Ranges: bytesheader: Last-Modified: Sun 06 Nov 2016 07:54:12 GMTheader: ETag: "320c1c0f22dc91d94afe36a042ebc89d" header: x-amz-request-id: tx0000000000000000004f8-00581ee1cb-857b-defaultheader: Content-Type: binary/octet-streamheader: Date: Sun, 06 Nov 07:54:51 GMT320c1c0f22dc91d94afe36a042ebc89d [root@joke ceph-request] # ceph-request-c ceph-request.cfg-mhead-r'/ yuliyang2/object1'-v
< HEAD /yuliyang2/object1 HTTP/1.1< Host: 192.168.10.147:8081< Connection: keep-alive< Accept-Encoding: gzip, deflate< Accept: */*< User-Agent: python-requests/2.11.1< date: Sun, 06 Nov 2016 07:54:28 GMT< Authorization: AWS admin:qCWFpvxlOfSERMeaV/sfVm0Wcek=< >HTTP/1.1 200 OK > Content-Length: 847 > Accept-Ranges: bytes > Last-Modified: Sun, 06 Nov 2016 07:54:12 GMT > ETag: "320c1c0f22dc91d94afe36a042ebc89d" > x-amz-request-id: tx0000000000000000004f5-00581ee1b4-857b-default > Content-Type: binary/octet-stream > Date: Sun, 06 Nov 07:54:28 GMT > Connection: Keep-Alive > on "etag sample Code for rgw objects in ceph" this article ends here. I hope the above content can be helpful to you. So that you can learn more knowledge, if you think the article is good, please share it for more people to see.