/// <summary> /// Gets the metadata for the Object Storage namespace, which contains defaultS3CompartmentId and defaultSwiftCompartmentId. /// Any user with the NAMESPACE_READ permission will be able to see the current metadata. /// If you are not authorized, talk to an administrator. If you are an administrator who needs to write policies to give users access, /// see Getting Started with Policies. /// </summary> /// <param name="request"></param> /// <returns></returns> public GetNamespaceMetadataResponse GetNamespaceMetadata(GetNamespaceMetadataRequest request) { var uri = new Uri($"{GetEndPointNoneVersion(ObjectStorageServices.Namespace, this.Region)}/{request.NamespaceName}"); var webResponse = this.RestClient.Get(uri, new HttpRequestHeaderParam { OpcClientRequestId = request.OpcClientRequestId }); using (var stream = webResponse.GetResponseStream()) using (var reader = new StreamReader(stream)) { var response = reader.ReadToEnd(); return(new GetNamespaceMetadataResponse() { NamespaceMetadata = JsonSerializer.Deserialize <NamespaceMetadata>(response), OpcRequestId = webResponse.Headers.Get("opc-request-id"), OpcClientRequestId = webResponse.Headers.Get("opc-client-request-id") }); } }
protected override void ProcessRecord() { base.ProcessRecord(); GetNamespaceMetadataRequest request; try { request = new GetNamespaceMetadataRequest { NamespaceName = NamespaceName, OpcClientRequestId = OpcClientRequestId }; response = client.GetNamespaceMetadata(request).GetAwaiter().GetResult(); WriteOutput(response, response.NamespaceMetadata); FinishProcessing(response); } catch (Exception ex) { TerminatingErrorDuringExecution(ex); } }
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 DisplayObjectStorage(ClientConfig config) { var client = new ObjectStorageClient(config) { Region = Regions.US_ASHBURN_1 }; var identityClient = new IdentityClient(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}"); Console.WriteLine(); Console.WriteLine("ObjectStorage Example Menu"); Console.WriteLine("[1]: Display List"); Console.WriteLine("[2]: Upload Example"); Console.WriteLine("[3]: UsageReport Example"); Console.WriteLine("[ESC] or [E(e)] : Back Example Menu"); Console.WriteLine(); var presskey = Console.ReadKey(true); if (presskey.Key == ConsoleKey.Escape || presskey.KeyChar == 'E' || presskey.KeyChar == 'e') { Console.WriteLine("Back Example Menu"); return; } var select = presskey.KeyChar; if (!int.TryParse(select.ToString(), out int mode)) { Console.WriteLine("Incorrect input..."); return; } if (mode == 1) { DisplayBucketAndObject(config, namespaceName, client, identityClient); } else if (mode == 2) { PutObject(config, namespaceName, client); } else if (mode == 3) { DisplayUsageReport(config, client); } else { Console.WriteLine("Incorrect input..."); return; } }