MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / RenameFile

Method RenameFile

tensorflow/core/platform/s3/s3_file_system.cc:584–652  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

582}
583
584Status S3FileSystem::RenameFile(const string& src, const string& target) {
585 string src_bucket, src_object, target_bucket, target_object;
586 TF_RETURN_IF_ERROR(ParseS3Path(src, false, &src_bucket, &src_object));
587 TF_RETURN_IF_ERROR(
588 ParseS3Path(target, false, &target_bucket, &target_object));
589 if (src_object.back() == '/') {
590 if (target_object.back() != '/') {
591 target_object.push_back('/');
592 }
593 } else {
594 if (target_object.back() == '/') {
595 target_object.pop_back();
596 }
597 }
598
599 Aws::S3::Model::CopyObjectRequest copyObjectRequest;
600 Aws::S3::Model::DeleteObjectRequest deleteObjectRequest;
601
602 Aws::S3::Model::ListObjectsRequest listObjectsRequest;
603 listObjectsRequest.WithBucket(src_bucket.c_str())
604 .WithPrefix(src_object.c_str())
605 .WithMaxKeys(kS3GetChildrenMaxKeys);
606 listObjectsRequest.SetResponseStreamFactory(
607 []() { return Aws::New<Aws::StringStream>(kS3FileSystemAllocationTag); });
608
609 Aws::S3::Model::ListObjectsResult listObjectsResult;
610 do {
611 auto listObjectsOutcome =
612 this->GetS3Client()->ListObjects(listObjectsRequest);
613 if (!listObjectsOutcome.IsSuccess()) {
614 return errors::Unknown(listObjectsOutcome.GetError().GetExceptionName(),
615 ": ", listObjectsOutcome.GetError().GetMessage());
616 }
617
618 listObjectsResult = listObjectsOutcome.GetResult();
619 for (const auto& object : listObjectsResult.GetContents()) {
620 Aws::String src_key = object.GetKey();
621 Aws::String target_key = src_key;
622 target_key.replace(0, src_object.length(), target_object.c_str());
623 Aws::String source = Aws::String(src_bucket.c_str()) + "/" +
624 Aws::Utils::StringUtils::URLEncode(src_key.c_str());
625
626 copyObjectRequest.SetBucket(target_bucket.c_str());
627 copyObjectRequest.SetKey(target_key);
628 copyObjectRequest.SetCopySource(source);
629
630 auto copyObjectOutcome =
631 this->GetS3Client()->CopyObject(copyObjectRequest);
632 if (!copyObjectOutcome.IsSuccess()) {
633 return errors::Unknown(copyObjectOutcome.GetError().GetExceptionName(),
634 ": ", copyObjectOutcome.GetError().GetMessage());
635 }
636
637 deleteObjectRequest.SetBucket(src_bucket.c_str());
638 deleteObjectRequest.SetKey(src_key.c_str());
639
640 auto deleteObjectOutcome =
641 this->GetS3Client()->DeleteObject(deleteObjectRequest);

Callers 1

TEST_FFunction · 0.45

Calls 12

GetS3ClientMethod · 0.95
ParseS3PathFunction · 0.85
pop_backMethod · 0.80
c_strMethod · 0.80
GetErrorMethod · 0.80
replaceMethod · 0.80
UnknownClass · 0.50
backMethod · 0.45
push_backMethod · 0.45
GetResultMethod · 0.45
GetKeyMethod · 0.45
lengthMethod · 0.45

Tested by 1

TEST_FFunction · 0.36