/// <summary> /// Creates a new enumerable which will iterate over the responses received from the ListObjects 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 <ListObjectsResponse> ListObjectsResponseEnumerator(ListObjectsRequest request, Common.Retry.RetryConfiguration retryConfiguration = null, CancellationToken cancellationToken = default) { return(new Common.Utils.ResponseEnumerable <ListObjectsRequest, ListObjectsResponse>( response => response.ListObjects.NextStartWith, input => { if (!string.IsNullOrEmpty(input)) { request.Start = input; } return request; }, request => client.ListObjects(request, retryConfiguration, cancellationToken) )); }
public static List <ObjectSummary> GetUsageReportNames(ClientConfig config, ObjectStorageClient client, string startName = "") { List <ObjectSummary> res = new List <ObjectSummary>(); client.SetRegion(Regions.US_ASHBURN_1); var listORequest = new ListObjectsRequest() { NamespaceName = "bling", BucketName = config.TenancyId, Fields = new List <string>() { "name" }, Start = startName, Limit = 10 }; var reports = client.ListObjects(listORequest); res.AddRange(reports.ListObjects.Objects); if (!string.IsNullOrEmpty(reports.ListObjects.NextStartWith)) { res.AddRange(GetUsageReportNames(config, client, reports.ListObjects.NextStartWith)); } 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('/', '_')); * }*/ }); }); } }