Exemplo n.º 1
0
        public void CreateBucketTest()
        {
            var entity   = new CreateBucketRequest("icyufile");
            var response = ufile.CreateBucket(entity);

            Assert.AreEqual(response.RetCode, 0);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Creates a new bucket.
        /// </summary>
        /// <param name="bucketName">The name to give the new bucket.</param>
        /// <param name="bucketType">The bucket secuirty authorization type.</param>
        /// <exception cref="AuthenticationException">Thrown when authentication fails.</exception>
        /// <exception cref="ApiException">Thrown when an error occurs during client operation.</exception>
        async Task <IApiResults <CreateBucketResponse> > IStorageBuckets.CreateAsync
            (string bucketName, BucketType bucketType)
        {
            var request = new CreateBucketRequest(AccountId, bucketName, bucketType);

            return(await _client.CreateBucketAsync(request, _cancellationToken));
        }
Exemplo n.º 3
0
        /// <summary>
        /// 创建Bucket
        /// </summary>
        /// <param name="requestParams">请求参数.</param>
        /// <returns>返回对象<see cref="UCloudSDK.Models.CreateBucketResponse"/></returns>
        public CreateBucketResponse CreateBucket(CreateBucketRequest requestParams)
        {
            var request = new RestRequest(Method.GET);

            request.AddUObject(requestParams);
            return(Execute <CreateBucketResponse>(request));
        }
Exemplo n.º 4
0
        public Task <bool> CreateBucketAsync(string bucketName)
        {
            if (string.IsNullOrEmpty(bucketName))
            {
                throw new ArgumentNullException(nameof(bucketName));
            }
            //检查桶是否存在
            Bucket bucket = ListBucketsAsync().Result?.Where(p => p.Name == bucketName)?.FirstOrDefault();

            if (bucket != null)
            {
                string localtion = Options.Endpoint?.Split('.')[0];
                if (bucket.Location.Equals(localtion, StringComparison.OrdinalIgnoreCase))
                {
                    throw new BucketExistException($"Bucket '{bucketName}' already exists.");
                }
                else
                {
                    throw new BucketExistException($"There have a same name bucket '{bucketName}' in other localtion '{bucket.Location}'.");
                }
            }
            var request = new CreateBucketRequest(bucketName)
            {
                //设置存储空间访问权限ACL。
                ACL = CannedAccessControlList.Private,
                //设置数据容灾类型。
                DataRedundancyType = DataRedundancyType.LRS
            };
            // 创建存储空间。
            var result = _client.CreateBucket(request);

            return(Task.FromResult(result != null));
        }
        public void CreateBucketWithColdArchiveStorageClassTest()
        {
            var client = new OssClient("http://oss-ap-southeast-2.aliyuncs.com", Config.AccessKeyId, Config.AccessKeySecret);

            //get a random bucketName
            var bucketName = OssTestUtils.GetBucketName(_className);

            //assert bucket does not exist
            Assert.IsFalse(OssTestUtils.BucketExists(client, bucketName),
                           string.Format("Bucket {0} should not exist before creation", bucketName));

            //create a new bucket
            var request = new CreateBucketRequest(bucketName, StorageClass.ColdArchive, CannedAccessControlList.PublicReadWrite);

            client.CreateBucket(request);
            OssTestUtils.WaitForCacheExpire();
            Assert.IsTrue(OssTestUtils.BucketExists(client, bucketName),
                          string.Format("Bucket {0} should exist after creation", bucketName));

            //delete the new created bucket
            client.DeleteBucket(bucketName);
            OssTestUtils.WaitForCacheExpire();
            Assert.IsFalse(OssTestUtils.BucketExists(client, bucketName),
                           string.Format("Bucket {0} should not exist after deletion", bucketName));
        }
Exemplo n.º 6
0
        public Task <CreateBucketResponse> CreateBucketAsync(string bucketName, Action <CreateBucketRequest>?config = null, CancellationToken token = default)
        {
            CreateBucketRequest request = new CreateBucketRequest(bucketName);

            config?.Invoke(request);

            return(BucketOperations.CreateBucketAsync(request, token));
        }
 private CreateBucketCommand(IServiceClient client, Uri endpoint, ExecutionContext context,
                             string bucketName, CreateBucketRequest createBucketRequest)
     : base(client, endpoint, context)
 {
     OssUtils.CheckBucketName(bucketName);
     _bucketName          = bucketName;
     _createBucketRequest = createBucketRequest;
     StorageClass         = createBucketRequest.StorageClass;
     ACL = createBucketRequest.ACL;
 }
Exemplo n.º 8
0
        public CreateBucketResult CreateBucket(
            string bucket,
            CreateBucketRequest request)
        {
            // https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html

            return(new CreateBucketResult()
            {
                BucketName = bucket,
            });
        }
        public void TestNonArnOutpostRequestHasIdTrue()
        {
            var request = new CreateBucketRequest
            {
                Bucket    = "test",
                OutpostId = "op-1234567890"
            };
            string outpostId = null;

            Assert.IsTrue(S3ArnUtils.DoesRequestHaveOutpostId(request, out outpostId));
            Assert.AreEqual("op-1234567890", outpostId);
        }
        public void TestInitialize()
        {
            // テスト用バケットを作成
            CreateBucketRequest createBucketRequest = new CreateBucketRequest
            {
                NamespaceName       = NameSpaceName,
                CreateBucketDetails = new OCISDK.ObjectStorage.Model.CreateBucketDetails
                {
                    CompartmentId = TargetCompartmentOCID,
                    Name          = TestBucketName
                }
            };

            try
            {
                ObjectStorageClient.CreateBucket(createBucketRequest);
            }
            catch (Exception e)
            {
                Trace.WriteLine($"create bucket failed. message:{e.Message}");
            }

            // あらかじめファイルを登録しておく
            var assembly = Assembly.GetExecutingAssembly();
            PutObjectResponse updateRes;
            PutObjectRequest  putObjectRequest = new PutObjectRequest
            {
                NamespaceName = NameSpaceName,
                BucketName    = TestBucketName
            };

            for (var i = 0; i < InitializeTestFiles.Length; i++)
            {
                putObjectRequest.ObjectName = InitializeTestFiles[i];
                using (var stream = assembly.GetManifestResourceStream("OCISDK.Test.Properties." + InitializeTestFiles[i]))
                {
                    putObjectRequest.UploadPartBody = stream;
                    updateRes = ObjectStorageClient.PutObject(putObjectRequest);
                }
            }

            // 削除確認用
            for (var i = 0; i < DeleteTestFiles.Length; i++)
            {
                putObjectRequest.ObjectName = DeleteTestFiles[i];
                using (var stream = assembly.GetManifestResourceStream("OCISDK.Test.Properties." + DeleteTestFiles[i]))
                {
                    putObjectRequest.UploadPartBody = stream;
                    updateRes = ObjectStorageClient.PutObject(putObjectRequest);
                }
            }
        }
Exemplo n.º 11
0
        public void VpceEndpointTests_CreateBucket(string bucketName, string serviceUrl, Flags flags,
                                                   string expectedUri, string expectedRegion, string expectedService)
        {
            var request = new CreateBucketRequest
            {
                OutpostId = "op-123",
                Bucket    = bucketName
            };

            RunTestRequest(request, CreateBucketRequestMarshaller.Instance,
                           isArn: false, serviceUrl, flags,
                           expectedUri, expectedRegion, expectedService);
        }
 private CreateBucketCommand(IServiceClient client, Uri endpoint, ExecutionContext context,
                             string bucketName, StorageClass?storageClass)
     : base(client, endpoint, context)
 {
     OssUtils.CheckBucketName(bucketName);
     _bucketName  = bucketName;
     StorageClass = storageClass;
     ACL          = null;
     if (storageClass != null)
     {
         _createBucketRequest = new CreateBucketRequest(bucketName, storageClass.Value, CannedAccessControlList.Default);
     }
 }
Exemplo n.º 13
0
        public void TestInitialize()
        {
            // テスト用バケットの作成
            CreateBucketRequest createBucketRequest = new CreateBucketRequest
            {
                NamespaceName       = NameSpaceName,
                CreateBucketDetails = new OCISDK.ObjectStorage.Model.CreateBucketDetails
                {
                    Name          = TestBucketName,
                    CompartmentId = TargetCompartmentOCID,
                }
            };

            try
            {
                ObjectStorageClient.CreateBucket(createBucketRequest);
            }
            catch
            {
                Trace.WriteLine("create failed test bucket");
            }

            PutObjectRequest putObjectRequest = new PutObjectRequest
            {
                NamespaceName = NameSpaceName,
                BucketName    = TestBucketName
            };

            foreach (var testFile in TestFileInfos)
            {
                foreach (var fileName in testFile.Value)
                {
                    if (string.IsNullOrEmpty(testFile.Key))
                    {
                        putObjectRequest.ObjectName = fileName;
                    }
                    else
                    {
                        putObjectRequest.ObjectName = $"{testFile.Key}/{fileName}";
                    }
                    var resourceName = $"OCISDK.Test.Properties.{fileName}";
                    var assembly     = Assembly.GetExecutingAssembly();
                    PutObjectResponse updateRes;
                    using (var stream = assembly.GetManifestResourceStream(resourceName))
                    {
                        putObjectRequest.UploadPartBody = stream;
                        updateRes = ObjectStorageClient.PutObject(putObjectRequest);
                    }
                }
            }
        }
        public void CreateBucketByCreateBucketRequest()
        {
            //create a new bucket by default, acl is private, storage class is standard
            var bucketName = OssTestUtils.GetBucketName(_className);
            var request    = new CreateBucketRequest(bucketName);

            _ossClient.CreateBucket(request);
            Assert.IsTrue(OssTestUtils.BucketExists(_ossClient, bucketName),
                          string.Format("Bucket {0} should exist after creation", bucketName));

            var result = _ossClient.GetBucketInfo(bucketName);

            Assert.AreEqual(result.Bucket.AccessControlList.Grant, CannedAccessControlList.Private);
            Assert.AreEqual(result.Bucket.StorageClass, StorageClass.Standard);
            Assert.AreEqual(result.Bucket.DataRedundancyType, DataRedundancyType.LRS);

            _ossClient.DeleteBucket(bucketName);
            OssTestUtils.WaitForCacheExpire(1);

            //create a public bucket with IA
            bucketName = OssTestUtils.GetBucketName(_className);
            request    = new CreateBucketRequest(bucketName, StorageClass.IA, CannedAccessControlList.PublicReadWrite);
            request.DataRedundancyType = DataRedundancyType.LRS;

            _ossClient.CreateBucket(request);
            Assert.IsTrue(OssTestUtils.BucketExists(_ossClient, bucketName),
                          string.Format("Bucket {0} should exist after creation", bucketName));

            result = _ossClient.GetBucketInfo(bucketName);
            Assert.AreEqual(result.Bucket.AccessControlList.Grant, CannedAccessControlList.PublicReadWrite);
            Assert.AreEqual(result.Bucket.StorageClass, StorageClass.IA);
            Assert.AreEqual(result.Bucket.DataRedundancyType, DataRedundancyType.LRS);

            _ossClient.DeleteBucket(bucketName);


            //create a public bucket with IA , ZRS
            bucketName = OssTestUtils.GetBucketName(_className);
            request    = new CreateBucketRequest(bucketName, StorageClass.IA, CannedAccessControlList.PublicReadWrite);
            request.DataRedundancyType = DataRedundancyType.ZRS;
            _ossClient.CreateBucket(request);
            Assert.IsTrue(OssTestUtils.BucketExists(_ossClient, bucketName),
                          string.Format("Bucket {0} should exist after creation", bucketName));

            result = _ossClient.GetBucketInfo(bucketName);
            Assert.AreEqual(result.Bucket.AccessControlList.Grant, CannedAccessControlList.PublicReadWrite);
            Assert.AreEqual(result.Bucket.StorageClass, StorageClass.IA);
            Assert.AreEqual(result.Bucket.DataRedundancyType, DataRedundancyType.ZRS);

            _ossClient.DeleteBucket(bucketName);
        }
        public async Task <bool> CreateBucketAsync(string bucketName)
        {
            if (string.IsNullOrEmpty(bucketName))
            {
                throw new ArgumentNullException(nameof(bucketName));
            }
            var request = new CreateBucketRequest(bucketName)
            {
                //设置存储空间访问权限ACL。
                ACL = CannedAccessControlList.Private,
                //设置数据容灾类型。
                DataRedundancyType = DataRedundancyType.ZRS
            };
            // 创建存储空间。
            var result = _client.CreateBucket(request);

            return(await Task.FromResult(result != null));
        }
Exemplo n.º 16
0
        static void CreateBucket()
        {
            try
            {
                CreateBucketRequest request = new CreateBucketRequest()
                {
                    BucketName = bucketName
                };
                CreateBucketResponse response = client.CreateBucket(request);

                Console.WriteLine("Create bucket response: {0}", response.StatusCode);
            }
            catch (ObsException ex)
            {
                Console.WriteLine("Exception errorcode: {0}, when create a bucket.", ex.ErrorCode);
                Console.WriteLine("Exception errormessage: {0}", ex.ErrorMessage);
            }
        }
Exemplo n.º 17
0
        public void CreateBucketTest()
        {
            var bucketName      = "testBucket";
            var s3ControlConfig = new AmazonS3ControlConfig
            {
                UseArnRegion   = false,
                RegionEndpoint = RegionEndpoint.USWest2
            };
            var createBucketRequest = new CreateBucketRequest
            {
                Bucket    = bucketName,
                OutpostId = "op-01234567890123456"
            };
            var marshalledRequest = S3ControlArnTestUtils.RunMockRequest(createBucketRequest, CreateBucketRequestMarshaller.Instance, s3ControlConfig);

            Assert.AreEqual(new Uri("https://s3-outposts.us-west-2.amazonaws.com"), marshalledRequest.Endpoint);
            Assert.AreEqual("op-01234567890123456", marshalledRequest.Headers["x-amz-outpost-id"]);
        }
Exemplo n.º 18
0
        /// <summary>
        /// 创建桶
        /// </summary>
        /// <param name="bucketName"></param>
        /// <returns></returns>
        public async Task <bool> CreateBucketAsync(string bucketName)
        {
            if (string.IsNullOrEmpty(bucketName))
            {
                throw new ArgumentNullException(nameof(bucketName));
            }
            if (await BucketExistsAsync(bucketName))
            {
                throw new BucketExistException($"Bucket '{bucketName}' already exists.");
            }
            CreateBucketRequest request = new CreateBucketRequest
            {
                Location   = Options.Region,
                BucketName = bucketName,
            };
            CreateBucketResponse response = _client.CreateBucket(request);

            return(response != null && response.StatusCode == HttpStatusCode.OK);
        }
        /// <summary>
        /// Sends an HTTP request to GCP to create a bucket with the configured name, and invokes the response
        /// handler on the HTTP response.
        /// </summary>
        /// <param name="onCreateBucketResponseAction">An action to be invoked on the www instance holding the HTTP request
        /// once the response to the request to create bucket is available.</param>
        private static void CreateBucket(Action <WWW> onCreateBucketResponseAction)
        {
            var credentials = OAuth2Credentials.GetCredentials();
            // see https://cloud.google.com/storage/docs/creating-buckets on creating buckets.
            var createBucketEndPoint = string.Format("https://www.googleapis.com/storage/v1/b?project={0}",
                                                     credentials.project_id);
            var createBucketRequest = new CreateBucketRequest
            {
                name = QuickDeployWindow.Config.CloudStorageBucketName
            };

            var jsonBytes       = Encoding.UTF8.GetBytes(JsonUtility.ToJson(createBucketRequest));
            var createBucketWww = SendAuthenticatedPostRequest(createBucketEndPoint, jsonBytes, "application/json");

            WwwRequestInProgress.TrackProgress(
                createBucketWww,
                string.Format("Creating bucket with name \"{0}\"", createBucketRequest.name),
                onCreateBucketResponseAction);
        }
Exemplo n.º 20
0
        public async Task <IActionResult> CreateBucket([FromBody] CreateBucketRequest request)
        {
            await _s3.PutBucketAsync(request.BucketName);

            var corsConfigurationRequest = new PutCORSConfigurationRequest
            {
                BucketName    = request.BucketName,
                Configuration = new CORSConfiguration
                {
                    Rules = new List <CORSRule>
                    {
                        new CORSRule
                        {
                            AllowedOrigins = new List <string> {
                                "https://localhost:3000"
                            },
                            AllowedMethods = new List <string> {
                                "PUT", "POST", "DELETE"
                            },
                            AllowedHeaders = new List <string> {
                                "*"
                            },
                            ExposeHeaders = new List <string> {
                                "ETag"
                            }
                        },
                        new CORSRule
                        {
                            AllowedOrigins = new List <string> {
                                "*"
                            },
                            AllowedMethods = new List <string> {
                                "GET"
                            },
                        }
                    }
                }
            };
            await _s3.PutCORSConfigurationAsync(corsConfigurationRequest);

            return(new OkObjectResult(request.BucketName));
        }
Exemplo n.º 21
0
        public HttpStatusCode CreateBucket(string name, int maxRecordSize, int maxRecordsPerBin)
        {
            var hostUrl = ConfigurationManager.AppSettings["ApiHostUrl"];

            var createBucket = new CreateBucketRequest
            {
                BucketName = name, MaxRecordSize = maxRecordSize, MaxRecordsPerBin = maxRecordsPerBin
            };

            var requstJson = JsonConvert.SerializeObject(createBucket);
            var request    = HttpWebRequest.Create(hostUrl + "/buckets/") as HttpWebRequest;

            request.Timeout       = 400000;
            request.Method        = "PUT";
            request.ContentLength = requstJson.Length;
            request.GetRequestStream().Write(Encoding.ASCII.GetBytes(requstJson), 0, requstJson.Length);
            var response = request.GetResponse() as HttpWebResponse;

            return(response.StatusCode);
        }
Exemplo n.º 22
0
        public void CreateBucket()
        {
            ServerNode.ActivateDatabase();
            var hostUrl = ConfigurationManager.AppSettings["ApiHostUrl"];

            var createBucket = new CreateBucketRequest
            {
                BucketName = "TestBucket", MaxRecordSize = 1024, MaxRecordsPerBin = 250000
            };

            var requstJson = JsonConvert.SerializeObject(createBucket);
            var request    = HttpWebRequest.Create(hostUrl + "/buckets/") as HttpWebRequest;

            request.Method        = "PUT";
            request.ContentLength = requstJson.Length;
            request.GetRequestStream().Write(Encoding.ASCII.GetBytes(requstJson), 0, requstJson.Length);
            var response = request.GetResponse();
            var reader   = new StreamReader(response.GetResponseStream());
            var message  = reader.ReadToEnd();
        }
        /// <summary>
        /// バケットを作成する
        /// </summary>
        /// <param name="nameSpaceName"></param>
        /// <param name="bucketName"></param>
        /// <param name="regionName"></param>
        /// <returns></returns>
        public bool CreateBucket(string nameSpaceName, string bucketName, string compartmentId, string regionName)
        {
            try
            {
                ObjectStorageClient.SetRegion(regionName);
                CreateBucketRequest createBucketRequest = new CreateBucketRequest
                {
                    NamespaceName       = nameSpaceName,
                    CreateBucketDetails = new OCISDK.ObjectStorage.Model.CreateBucketDetails
                    {
                        CompartmentId = compartmentId,
                        Name          = bucketName
                    }
                };
                ObjectStorageClient.CreateBucket(createBucketRequest);
            }
            catch
            {
                return(false);
            }

            return(true);
        }
Exemplo n.º 24
0
        protected virtual async Task CreateBucketIfNotExists(IOss ossClient, BlobProviderArgs args, IList <string> refererList = null)
        {
            if (!await BucketExistsAsync(ossClient, args))
            {
                var bucketName = GetBucketName(args);

                var request = new CreateBucketRequest(bucketName)
                {
                    //设置存储空间访问权限ACL。
                    ACL = CannedAccessControlList.PublicReadWrite,
                    //设置数据容灾类型。
                    DataRedundancyType = DataRedundancyType.ZRS
                };

                ossClient.CreateBucket(request);

                if (refererList != null && refererList.Count > 0)
                {
                    var srq = new SetBucketRefererRequest(bucketName, refererList);
                    ossClient.SetBucketReferer(srq);
                }
            }
        }
Exemplo n.º 25
0
        public void TestS3OutpostsSignerCreateBucket()
        {
            var signer = new S3Signer();

            var createBucketRequest = new CreateBucketRequest
            {
                Bucket    = "test",
                OutpostId = "op-123456789012"
            };
            var config = new AmazonS3ControlConfig
            {
                SignatureVersion = "4",
                UseArnRegion     = true,
                RegionEndpoint   = RegionEndpoint.USWest2
            };
            var originalAuthService = config.AuthenticationServiceName;
            var iRequest            = S3ControlArnTestUtils.RunMockRequest(createBucketRequest, CreateBucketRequestMarshaller.Instance, config);

            signer.Sign(iRequest, config, new RequestMetrics(), new ImmutableCredentials("ACCESS", "SECRET", ""));
            Assert.IsTrue(iRequest.Headers.ContainsKey(HeaderKeys.AuthorizationHeader));
            Assert.IsTrue((iRequest.Headers["Authorization"]).Contains("s3-outposts"));
            Assert.IsTrue(config.AuthenticationServiceName == originalAuthService);
        }
Exemplo n.º 26
0
        /// <summary>
        /// Creates the bucket.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>System.String.</returns>
        private HttpStatusCode CreateBucket(CreateBucketRequest request)
        {
            try
            {
                request.BucketName = request.BucketName.ToLower();
                if (string.IsNullOrEmpty(request.BucketName))
                {
                    return(HttpStatusCode.BadRequest);
                }

                if (Buckets.ContainsKey(request.BucketName))
                {
                    return(HttpStatusCode.BadRequest);
                }

                Buckets.Add(request.BucketName, DataBucket.CreateNewBucket(request.BucketName, DbLocation, request.MaxRecordSize, request.MaxRecordsPerBin));
                return(HttpStatusCode.OK);
            }
            catch (Exception ex)
            {
                return(HttpStatusCode.InternalServerError);
            }
        }
Exemplo n.º 27
0
        protected override void ProcessRecord()
        {
            base.ProcessRecord();
            CreateBucketRequest request;

            try
            {
                request = new CreateBucketRequest
                {
                    NamespaceName       = NamespaceName,
                    CreateBucketDetails = CreateBucketDetails,
                    OpcClientRequestId  = OpcClientRequestId
                };

                response = client.CreateBucket(request).GetAwaiter().GetResult();
                WriteOutput(response, response.Bucket);
                FinishProcessing(response);
            }
            catch (Exception ex)
            {
                TerminatingErrorDuringExecution(ex);
            }
        }
        /// <summary>
        /// Creates a bucket in the given namespace with a bucket name and optional user-defined metadata. Avoid entering confidential information in bucket names.
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <CreateBucketResponse> CreateBucket(CreateBucketRequest request)
        {
            var uri = new Uri(GetEndPointNoneVersion(ObjectStorageServices.Bucket(request.NamespaceName), this.Region));

            var webResponse = await this.RestClientAsync.Post(uri, request.CreateBucketDetails, new HttpRequestHeaderParam()
            {
                OpcClientRequestId = request.OpcClientRequestId
            });

            using (var stream = webResponse.GetResponseStream())
                using (var reader = new StreamReader(stream))
                {
                    var response = reader.ReadToEnd();

                    return(new CreateBucketResponse()
                    {
                        Bucket = JsonSerializer.Deserialize <Bucket>(response),
                        ETag = webResponse.Headers.Get("ETag"),
                        OpcRequestId = webResponse.Headers.Get("opc-request-id"),
                        OpcClientRequestId = webResponse.Headers.Get("opc-client-request-id"),
                        Location = webResponse.Headers.Get("Location")
                    });
                }
        }
Exemplo n.º 29
0
        public static async Task MainOSBucketTagging()
        {
            string compartmentId = Environment.GetEnvironmentVariable("OCI_COMPARTMENT_ID");
            string bucketName    = Environment.GetEnvironmentVariable("BUCKET_NAME");
            string tagNamespace  = Environment.GetEnvironmentVariable("TAG_NAMESPACE");
            string tagName       = Environment.GetEnvironmentVariable("TAG_NAME");

            logger.Info("Starting example");
            // Create Object Storage Client
            var provider = new ConfigFileAuthenticationDetailsProvider("DEFAULT");
            var osClient = new ObjectStorageClient(provider, new ClientConfiguration());

            logger.Info("Object Storage client created.");

            GetNamespaceRequest getNamespaceRequest = new GetNamespaceRequest
            {
                CompartmentId = compartmentId
            };
            GetNamespaceResponse getNamespaceResponse = await osClient.GetNamespace(getNamespaceRequest);

            string nSpace = getNamespaceResponse.Value.Trim('"');

            logger.Info($"namespace is {nSpace}");

            /*
             * We can assign tags to a bucket at creation time. Like other taggable resources, we can
             * assign freeform and defined tags to a bucket. Freeform tags are a dictionary of
             * string-to-string, where the key is the tag name and the value is the tag value.
             *
             * Defined tags are a dictionary where the key is the tag namespace (string) and the value is another dictionary. In
             * this second dictionary, the key is the tag name (string) and the value is the tag value. The tag names have to
             * correspond to the name of a tag within the specified namespace (and the namespace must exist).
             */
            try
            {
                Dictionary <string, string> freeformTags = new Dictionary <string, string>()
                {
                    { "free", "form" },
                    { "another", "item" }
                };

                Dictionary <string, object> definedTagsMap = new Dictionary <string, object>()
                {
                    { tagName, "original value" }
                };

                Dictionary <string, Dictionary <string, object> > definedTags = new Dictionary <string, Dictionary <string, object> >()
                {
                    { tagNamespace, definedTagsMap }
                };

                CreateBucketDetails createBucketDetails = new CreateBucketDetails
                {
                    Name                = bucketName,
                    CompartmentId       = compartmentId,
                    FreeformTags        = freeformTags,
                    DefinedTags         = definedTags,
                    ObjectEventsEnabled = false
                };
                CreateBucketRequest createBucketRequest = new CreateBucketRequest
                {
                    CreateBucketDetails = createBucketDetails,
                    NamespaceName       = nSpace
                };
                CreateBucketResponse createBucketResponse = await osClient.CreateBucket(createBucketRequest);

                logger.Info($"Created a bucket with tags Bucket name: {createBucketResponse.Bucket.Name}");
                logger.Info("========================================");
                definedTags = createBucketResponse.Bucket.DefinedTags;
                foreach (KeyValuePair <string, Dictionary <string, object> > kvp in definedTags)
                {
                    foreach (KeyValuePair <string, object> tags in kvp.Value)
                    {
                        logger.Info($"tag key name: {tags.Key} and tag value is {tags.Value}");
                    }
                }

                // Tags come back when retrieving the bucket
                GetBucketRequest getBucketRequest = new GetBucketRequest
                {
                    NamespaceName = nSpace,
                    BucketName    = bucketName
                };
                GetBucketResponse getBucketResponse = await osClient.GetBucket(getBucketRequest);

                logger.Info($"Retrieved a bucket with tags Bucket name: {getBucketResponse.Bucket.Name}");
                logger.Info("==========================================");
                definedTags = getBucketResponse.Bucket.DefinedTags;
                foreach (KeyValuePair <string, Dictionary <string, object> > kvp in definedTags)
                {
                    foreach (KeyValuePair <string, object> tags in kvp.Value)
                    {
                        logger.Info($"tag key name: {tags.Key} and tag value is {tags.Value}");
                    }
                }

                /*
                 * Unlike other resources (e.g. instances, VCNs, and block volumes), when listing buckets
                 * tags are not returned by default. Instead, you need to provide a value to the fields
                 * parameter when listing buckets in order to have those tags returned.
                 *
                 * Here we can see the result of providing and not providing that parameter.
                 */
                ListBucketsRequest listBucketsRequest = new ListBucketsRequest
                {
                    CompartmentId = compartmentId,
                    NamespaceName = nSpace
                };
                IEnumerable <BucketSummary> bucketSummaries = osClient.Paginators.ListBucketsRecordEnumerator(listBucketsRequest);
                foreach (BucketSummary bucketSummary in bucketSummaries)
                {
                    if (bucketSummary.Name.Equals(bucketName))
                    {
                        logger.Info($"Bucket summary without tags: Bucket Name: {bucketSummary.Name}");
                        logger.Info("=========================================");
                        if (bucketSummary.DefinedTags != null)
                        {
                            logger.Error($"expected tags to be zero but got: {bucketSummary.DefinedTags.Count}");
                        }
                        break;
                    }
                }

                List <ListBucketsRequest.FieldsEnum> fields = new List <ListBucketsRequest.FieldsEnum>()
                {
                    ListBucketsRequest.FieldsEnum.Tags
                };

                listBucketsRequest = new ListBucketsRequest
                {
                    CompartmentId = compartmentId,
                    NamespaceName = nSpace,
                    Fields        = fields
                };
                bucketSummaries = osClient.Paginators.ListBucketsRecordEnumerator(listBucketsRequest);
                foreach (BucketSummary bucketSummary in bucketSummaries)
                {
                    if (bucketSummary.Name.Equals(bucketName))
                    {
                        logger.Info($"Bucket summary with tags: Bucket Name: {bucketSummary.Name}");
                        logger.Info("======================================");
                        definedTags = bucketSummary.DefinedTags;
                        foreach (KeyValuePair <string, Dictionary <string, object> > kvp in definedTags)
                        {
                            foreach (KeyValuePair <string, object> tags in kvp.Value)
                            {
                                logger.Info($"tag key name: {tags.Key} and tag value is {tags.Value}");
                            }
                        }
                    }
                }

                /*
                 * We can also update tags on a bucket. Note that this is a total replacement for any
                 * previously set freeform or defined tags.
                 */
                Dictionary <string, string> updateFreeformTags = new Dictionary <string, string>()
                {
                    { "new", "freeform" }
                };

                Dictionary <string, object> updateDefinedTagsMap = new Dictionary <string, object>()
                {
                    { tagName, "replaced" }
                };
                Dictionary <string, Dictionary <string, object> > updateDefinedTags = new Dictionary <string, Dictionary <string, object> >()
                {
                    { tagNamespace, updateDefinedTagsMap }
                };

                UpdateBucketDetails updateBucketDetails = new UpdateBucketDetails
                {
                    Name         = bucketName,
                    FreeformTags = updateFreeformTags,
                    DefinedTags  = updateDefinedTags
                };
                UpdateBucketRequest updateBucketRequest = new UpdateBucketRequest
                {
                    NamespaceName       = nSpace,
                    BucketName          = bucketName,
                    UpdateBucketDetails = updateBucketDetails
                };
                UpdateBucketResponse updateBucketResponse = await osClient.UpdateBucket(updateBucketRequest);

                logger.Info($"Updated the bucket with new tags Bucket name: {updateBucketResponse.Bucket.Name}");
                logger.Info("==============================================");
                definedTags = updateBucketResponse.Bucket.DefinedTags;
                foreach (KeyValuePair <string, Dictionary <string, object> > kvp in definedTags)
                {
                    foreach (KeyValuePair <string, object> tags in kvp.Value)
                    {
                        logger.Info($"tag key name: {tags.Key} and tag value is {tags.Value}");
                    }
                }

                updateBucketDetails = new UpdateBucketDetails
                {
                    Name         = bucketName,
                    FreeformTags = new Dictionary <string, string>(),
                    DefinedTags  = new Dictionary <string, Dictionary <string, object> >()
                };
                updateBucketRequest = new UpdateBucketRequest
                {
                    NamespaceName       = nSpace,
                    BucketName          = bucketName,
                    UpdateBucketDetails = updateBucketDetails
                };
                updateBucketResponse = await osClient.UpdateBucket(updateBucketRequest);

                logger.Info($"cleared the tags for the bucket: {updateBucketResponse.Bucket.Name}");
                logger.Info("=================================");

                // Clean up
                DeleteBucketRequest deleteBucketRequest = new DeleteBucketRequest
                {
                    NamespaceName = nSpace,
                    BucketName    = bucketName
                };
                await osClient.DeleteBucket(deleteBucketRequest);

                logger.Info("Deleted the bucket");
                logger.Info("Ending example.");
            }
            catch (Exception e)
            {
                logger.Error($"Failed Object Storage example: {e.Message}");
            }
            finally
            {
                osClient.Dispose();
            }
        }
Exemplo n.º 30
0
        public async Task CreateAsync()
        {
            var request = new CreateBucketRequest(Storage.AccountId, _bucketName, BucketType.AllPrivate)
            {
                BucketInfo = new BucketInfo
                {
                    { "key1", "value1" },
                    { "key2", "value2" }
                },
                CacheControl = new CacheControlHeaderValue
                {
                    MaxAge = TimeSpan.FromSeconds(120)
                },
                LifecycleRules = new LifecycleRules
                {
                    new LifecycleRule
                    {
                        DaysFromHidingToDeleting  = 6,
                        DaysFromUploadingToHiding = 5,
                        FileNamePrefix            = "backup/",
                    },
                    new LifecycleRule
                    {
                        DaysFromHidingToDeleting  = 45,
                        DaysFromUploadingToHiding = 7,
                        FileNamePrefix            = "files/",
                    },
                },
                CorsRules = new CorsRules
                {
                    new CorsRule(
                        "downloadFromAnyOrigin",
                        new List <string> {
                        "https"
                    },
                        new List <string> {
                        "b2_download_file_by_id", "b2_download_file_by_name"
                    },
                        3600)
                    {
                        AllowedHeaders = new List <string> {
                            "range"
                        },
                        ExposeHeaders = new List <string> {
                            "x-bz-content-sha1"
                        },
                    }
                }
            };

            var results = await Storage.Buckets.CreateAsync(request);

            results.EnsureSuccessStatusCode();

            _bucketId = results.Response.BucketId;

            Assert.Equal(typeof(CreateBucketResponse), results.Response.GetType());
            Assert.Equal(_bucketName, results.Response.BucketName);
            Assert.Equal(request.BucketInfo.Count, results.Response.BucketInfo.Count);
            Assert.Equal(request.LifecycleRules.Count, results.Response.LifecycleRules.Count);
            Assert.Equal(request.CorsRules.Count, results.Response.CorsRules.Count);

            Assert.True(results.Response.CorsRules.Equals(request.CorsRules));
            Assert.Equal(request.CorsRules.ToList(), results.Response.CorsRules.ToList());

            Assert.True(results.Response.LifecycleRules.Equals(request.LifecycleRules));
            Assert.Equal(request.LifecycleRules.ToList(), results.Response.LifecycleRules.ToList());
        }