/// <summary> /// Creates a new enumerable which will iterate over the responses received from the ListBuckets operation. This enumerable /// will fetch more data from the server as needed. /// </summary> /// <param name="request">The request object containing the details to send</param> /// <param name="retryConfiguration">The configuration for retrying, may be null</param> /// <param name="cancellationToken">The cancellation token object</param> /// <returns>The enumerator, which supports a simple iteration over a collection of a specified type</returns> public IEnumerable <ListBucketsResponse> ListBucketsResponseEnumerator(ListBucketsRequest request, Common.Retry.RetryConfiguration retryConfiguration = null, CancellationToken cancellationToken = default) { return(new Common.Utils.ResponseEnumerable <ListBucketsRequest, ListBucketsResponse>( response => response.OpcNextPage, input => { if (!string.IsNullOrEmpty(input)) { request.Page = input; } return request; }, request => client.ListBuckets(request, retryConfiguration, cancellationToken) )); }
/// <summary> /// すべてのバケットを取得する /// </summary> /// <param name="nameSpaceName"></param> /// <param name="compartmentId"></param> /// <returns></returns> public IEnumerable <BucketInfo> GetAllBuckets(string nameSpaceName, string compartmentId) { List <BucketInfo> res = new List <BucketInfo>(); var regions = GetRegions(); var request = new ListBucketsRequest { NamespaceName = nameSpaceName, CompartmentId = compartmentId, Limit = 10 }; Parallel.ForEach(regions, region => { ObjectStorageClient objectStorageClient = new ObjectStorageClient(ClientConfig); objectStorageClient.SetRegion(region.RegionName); while (true) { var buckets = objectStorageClient.ListBuckets(request); foreach (var item in buckets.Items) { res.Add(new BucketInfo() { Name = item.Name, Region = region.RegionName, Id = item.Id, ModifiedTime = item.TimeCreated }); } if (string.IsNullOrEmpty(buckets.OpcNextPage)) { break; } request.Page = buckets.OpcNextPage; } }); return(res); }
public static void DisplayObjectStorage(ClientConfig config) { var client = new ObjectStorageClient(config) { Region = Regions.US_ASHBURN_1 }; // get namespace GetNamespaceRequest getNamespaceRequest = new GetNamespaceRequest(); var namespaceName = client.GetNamespace(getNamespaceRequest); // get namespace metadata GetNamespaceMetadataRequest getNamespaceMetadataRequest = new GetNamespaceMetadataRequest() { NamespaceName = namespaceName }; var namespaceMetadata = client.GetNamespaceMetadata(getNamespaceMetadataRequest).NamespaceMetadata; Console.WriteLine("* Namespace------------------------"); Console.WriteLine($" namespace : {namespaceMetadata.Namespace}"); Console.WriteLine($" defaultS3CompartmentId : {namespaceMetadata.DefaultS3CompartmentId}"); Console.WriteLine($" defaultSwiftCompartmentId : {namespaceMetadata.DefaultSwiftCompartmentId}"); // list bucket ListBucketsRequest listBucketsRequest = new ListBucketsRequest() { NamespaceName = namespaceName, CompartmentId = config.TenancyId }; var listBucket = client.ListBuckets(listBucketsRequest); Console.WriteLine($"* Bucket------------------------"); Console.WriteLine($" namespace : {namespaceName}"); Console.WriteLine($" comaprtment : {config.TenancyId}"); listBucket.Items.ForEach(bucket => { HeadBucketRequest headBucketRequest = new HeadBucketRequest() { NamespaceName = bucket.Namespace, BucketName = bucket.Name }; var buckethead = client.HeadBucket(headBucketRequest); // get bucket details GetBucketRequest getBucketRequest = new GetBucketRequest() { NamespaceName = bucket.Namespace, BucketName = bucket.Name, IfMatch = buckethead.ETag }; var bucketDetail = client.GetBucket(getBucketRequest); Console.WriteLine($"\t|- name : {bucketDetail.Bucket.Name}"); Console.WriteLine($"\t| timeCreated : {bucketDetail.Bucket.TimeCreated}"); Console.WriteLine($"\t|* Object------------------------"); ListObjectsRequest listObjectsRequest = new ListObjectsRequest() { NamespaceName = bucketDetail.Bucket.Namespace, BucketName = bucketDetail.Bucket.Name }; var Objs = client.ListObjects(listObjectsRequest); Objs.ListObjects.Objects.ForEach(obj => { Console.WriteLine($"\t|\t|- name : {obj.Name}"); GetObjectRequest getObjectRequest = new GetObjectRequest() { NamespaceName = bucketDetail.Bucket.Namespace, BucketName = bucketDetail.Bucket.Name, ObjectName = obj.Name, }; var ObjDetails = client.GetObject(getObjectRequest); Console.WriteLine($"\t|\t|- contentLength : {ObjDetails.ContentLength}"); // download if (!Directory.Exists("./ExampleDownload")) { Directory.CreateDirectory("./ExampleDownload"); } if (!File.Exists($"./ExampleDownload/{obj.Name.Replace('/', '_')}")) { client.DownloadObject(getObjectRequest, "./ExampleDownload/", obj.Name.Replace('/', '_')); } }); }); // UsageReport // Example policy: // define tenancy usage-report as ocid1.tenancy.oc1..aaaaaaaaned4fkpkisbwjlr56u7cj63lf3wffbilvqknstgtvzub7vhqkggq // endorse group group_name to read objects in tenancy usage-report try { var listORequest = new ListObjectsRequest() { NamespaceName = "bling", BucketName = config.TenancyId }; var reports = client.ListObjects(listORequest); Console.WriteLine($"* UsageReport------------------------"); reports.ListObjects.Objects.ForEach(r => { Console.WriteLine($" {r.Name}"); if (!Directory.Exists("./ExampleDownload/report")) { Directory.CreateDirectory("./ExampleDownload/report"); } // download object /* * if (!File.Exists($"./ExampleDownload/report/{r.Name.Replace('/', '_')}")) * { * var getObjectRequest = new GetObjectRequest() * { * NamespaceName = "bling", * BucketName = config.TenancyId, * ObjectName = r.Name, * }; * client.DownloadObject(getObjectRequest, "./ExampleDownload/report/", r.Name.Replace('/', '_')); * }*/ }); } catch (Exception e) { Console.WriteLine($"Does not meet UsageReport usage requirements. message:{e.Message}"); } }
public static void DisplayBucketAndObject(ClientConfig config, string namespaceName, ObjectStorageClient client, IdentityClient identityClient) { // Compartment required only to get a bucket var listCompartmentRequest = new ListCompartmentRequest() { CompartmentId = config.TenancyId, CompartmentIdInSubtree = true, AccessLevel = ListCompartmentRequest.AccessLevels.ACCESSIBLE }; var compartments = identityClient.ListCompartment(listCompartmentRequest).Items; // root(tenant) add compartments.Add(new OCISDK.Core.Identity.Model.Compartment { Id = config.TenancyId, Name = "root" }); foreach (var compartment in compartments) { Console.WriteLine($"## Compartment<{compartment.Name}>--------"); // list bucket ListBucketsRequest listBucketsRequest = new ListBucketsRequest() { NamespaceName = namespaceName, CompartmentId = compartment.Id }; var listBucket = client.ListBuckets(listBucketsRequest); Console.WriteLine($"* Bucket------------------------"); Console.WriteLine($" namespace : {namespaceName}"); Console.WriteLine($" comaprtment : {config.TenancyId}"); listBucket.Items.ForEach(bucket => { HeadBucketRequest headBucketRequest = new HeadBucketRequest() { NamespaceName = bucket.Namespace, BucketName = bucket.Name }; var buckethead = client.HeadBucket(headBucketRequest); // get bucket details GetBucketRequest getBucketRequest = new GetBucketRequest() { NamespaceName = bucket.Namespace, BucketName = bucket.Name, IfMatch = buckethead.ETag }; var bucketDetail = client.GetBucket(getBucketRequest); Console.WriteLine($"\t|- * name : {bucketDetail.Bucket.Name}"); Console.WriteLine($"\t| timeCreated : {bucketDetail.Bucket.TimeCreated}"); // Bucket workrequests ListWorkRequestsRequest listWorkRequestsRequest = new ListWorkRequestsRequest { CompartmentId = bucketDetail.Bucket.CompartmentId, BucketName = bucket.Name }; var wrs = client.ListWorkRequests(listWorkRequestsRequest); Console.WriteLine($"\t|* WorkRequest------------------------"); foreach (var wr in wrs.Items) { Console.WriteLine($"\t|\t|- name : {wr.OperationType}"); Console.WriteLine($"\t|\t|- status : {wr.Status}"); Console.WriteLine($"\t|\t|- start : {wr.TimeStarted}"); Console.WriteLine($"\t|\t|- finish : {wr.TimeFinished}"); } // objects Console.WriteLine($"\t|* Object------------------------"); ListObjectsRequest listObjectsRequest = new ListObjectsRequest() { NamespaceName = bucketDetail.Bucket.Namespace, BucketName = bucketDetail.Bucket.Name, Fields = new List <string> { "size", "timeCreated", "md5" } }; var Objs = client.ListObjects(listObjectsRequest); Objs.ListObjects.Objects.ForEach(obj => { Console.WriteLine($"\t|\t|- name : {obj.Name}"); GetObjectRequest getObjectRequest = new GetObjectRequest() { NamespaceName = bucketDetail.Bucket.Namespace, BucketName = bucketDetail.Bucket.Name, ObjectName = obj.Name, }; var ObjDetails = client.GetObject(getObjectRequest); Console.WriteLine($"\t|\t|- contentLength : {ObjDetails.ContentLength}"); // download /*if (!Directory.Exists("./ExampleDownload")) * { * Directory.CreateDirectory("./ExampleDownload"); * } * if (!File.Exists($"./ExampleDownload/{obj.Name.Replace('/', '_')}")) * { * client.DownloadObject(getObjectRequest, "./ExampleDownload/", obj.Name.Replace('/', '_')); * }*/ }); }); } }
public static void Example(ClientConfig config) { ThreadSafeSigner threadSafeSigner = new ThreadSafeSigner(new OciSigner(config)); var client = new ObjectStorageClient(config, threadSafeSigner) { Region = Regions.AP_TOKYO_1 }; var identityClient = new IdentityClient(config, threadSafeSigner) { Region = Regions.AP_TOKYO_1 }; var nameSpaceName = client.GetNamespace(new GetNamespaceRequest()); // Compartment required only to get a bucket var listCompartmentRequest = new ListCompartmentRequest() { CompartmentId = config.TenancyId, CompartmentIdInSubtree = true, AccessLevel = ListCompartmentRequest.AccessLevels.ACCESSIBLE }; var compartments = identityClient.ListCompartment(listCompartmentRequest).Items; // root(tenant) add compartments.Add(new OCISDK.Core.Identity.Model.Compartment { Id = config.TenancyId, Name = "root" }); foreach (var compartment in compartments) { ListBucketsRequest listBucketsRequest = new ListBucketsRequest { NamespaceName = nameSpaceName, CompartmentId = compartment.Id, Limit = 10 }; var bukcets = client.ListBuckets(listBucketsRequest); foreach (var bukcet in bukcets.Items) { ObjectStorageDirectoryInfo directoryInfo = new ObjectStorageDirectoryInfo(client, nameSpaceName, bukcet.Name); Console.WriteLine($"* {bukcet.Name}"); // top files var files = directoryInfo.EnumerateFiles("*", System.IO.SearchOption.TopDirectoryOnly); foreach (var file in files) { Console.WriteLine($"\t|- {file.Name}"); } // top directories and files var topDirs = directoryInfo.EnumerateDirectories("*", System.IO.SearchOption.TopDirectoryOnly); foreach (var dir in topDirs) { Console.WriteLine($"\t|- {dir.Name}"); files = dir.EnumerateFiles("*", System.IO.SearchOption.TopDirectoryOnly); foreach (var file in files) { Console.WriteLine($"\t|\t|- {file.Name}"); } // sub directories and files var subDirInfo = new ObjectStorageDirectoryInfo(client, nameSpaceName, bukcet.Name, dir.Name + "/"); var subDirs = subDirInfo.EnumerateDirectories("*", System.IO.SearchOption.TopDirectoryOnly); foreach (var sub in subDirs) { Console.WriteLine($"\t|\t|- {sub.Name}"); files = sub.EnumerateFiles("*", System.IO.SearchOption.TopDirectoryOnly); foreach (var file in files) { Console.WriteLine($"\t|\t|\t|- {file.Name}"); } } } foreach (var dir in topDirs) { // prefix directories Console.WriteLine("TopDirectoryOnly prefix-----[" + dir.Name + "]"); var preDir = new ObjectStorageDirectoryInfo(client, nameSpaceName, bukcet.Name, dir.Name); var preFiles = preDir.EnumerateFiles("*", System.IO.SearchOption.TopDirectoryOnly); foreach (var file in preFiles) { Console.WriteLine($"\t|- {file.FullName}"); } } foreach (var dir in topDirs) { // prefix directories Console.WriteLine("AllDirectories prefix-----[" + dir.Name + "]"); var preDir = new ObjectStorageDirectoryInfo(client, nameSpaceName, bukcet.Name, dir.Name); var preFiles = preDir.EnumerateFiles("*", System.IO.SearchOption.AllDirectories); foreach (var file in preFiles) { Console.WriteLine($"\t|- {file.FullName}"); } } } } }