public static void SetBucketLifecycle()
        {
            try
            {
                var           setBucketLifecycleRequest = new SetBucketLifecycleRequest(bucketName);
                LifecycleRule lcr1 = new LifecycleRule()
                {
                    ID             = "delete obsoleted files",
                    Prefix         = "obsoleted/",
                    Status         = RuleStatus.Enabled,
                    ExpriationDays = 3
                };
                LifecycleRule lcr2 = new LifecycleRule()
                {
                    ID             = "delete temporary files",
                    Prefix         = "temporary/",
                    Status         = RuleStatus.Enabled,
                    ExpirationTime = DateTime.Parse("2022-10-12T00:00:00.000Z")
                };
                setBucketLifecycleRequest.AddLifecycleRule(lcr1);
                setBucketLifecycleRequest.AddLifecycleRule(lcr2);

                client.SetBucketLifecycle(setBucketLifecycleRequest);
            }
            catch (OssException ex)
            {
                Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
                                  ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
        }
Example #2
0
        public void LifecycleEmptySettingTest()
        {
            SetBucketLifecycleRequest req = new SetBucketLifecycleRequest(_bucketName);

            try
            {
                _ossClient.SetBucketLifecycle(req);
                Assert.Fail();
            }
            catch (ArgumentException)
            {}

            try
            {
                new SetBucketLifecycleRequest(null);
                Assert.Fail();
            }
            catch (ArgumentException) {}

            try
            {
                new SetBucketLifecycleRequest(string.Empty);
                Assert.Fail();
            }
            catch (ArgumentException) { }
        }
Example #3
0
        /// <summary>
        /// 批量设置生存时间(超时会自动删除)
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public List <ExpireResultDto> SetExpireRange(SetExpireRangeParam request)
        {
            return(ToolCommon.GetResponse(() =>
            {
                var zone = Core.Tools.GetZone(_aLiYunConfig, request.PersistentOps.Zone, () => ZoneEnum.HangZhou);
                var client = _aLiYunConfig.GetClient(zone);
                var bucket = Core.Tools.GetBucket(_aLiYunConfig, request.PersistentOps.Bucket);
                var setBucketLifecycleRequest = new SetBucketLifecycleRequest(bucket);

                List <ExpireResultDto> list = new List <ExpireResultDto>();
                request.Keys.ForEach(key =>
                {
                    LifecycleRule lcr = new LifecycleRule()
                    {
                        ID = "delete " + key + " files",
                        Prefix = key,
                        Status = RuleStatus.Enabled,
                        ExpriationDays = request.Expire
                    };
                    setBucketLifecycleRequest.AddLifecycleRule(lcr);
                    list.Add(new ExpireResultDto(true, key, "success"));
                });

                client.SetBucketLifecycle(setBucketLifecycleRequest); //调整生命周期
                return list;
            }, message =>
            {
                List <ExpireResultDto> list = new List <ExpireResultDto>();
                request.Keys.ForEach(key => { list.Add(new ExpireResultDto(false, key, message)); });
                return list;
            }));
        }
        public static void SetBucketLifecycle()
        {
            try
            {
                var setBucketLifecycleRequest = new SetBucketLifecycleRequest(bucketName);
                LifecycleRule lcr1 = new LifecycleRule()
                {
                    ID = "delete obsoleted files",
                    Prefix = "obsoleted/",
                    Status = RuleStatus.Enabled,
                    ExpriationDays = 3
                };
                LifecycleRule lcr2 = new LifecycleRule()
                {
                    ID = "delete temporary files",
                    Prefix = "temporary/",
                    Status = RuleStatus.Enabled,
                    ExpirationTime = DateTime.Parse("2022-10-12T00:00:00.000Z")
                };
                setBucketLifecycleRequest.AddLifecycleRule(lcr1);
                setBucketLifecycleRequest.AddLifecycleRule(lcr2);

                client.SetBucketLifecycle(setBucketLifecycleRequest);
            }
            catch (OssException ex)
            {
                Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
                    ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
        }
        private SetBucketLifecycleCommand(IServiceClient client, Uri endpoint, ExecutionContext context, string bucketName, SetBucketLifecycleRequest setBucketLifecycleRequest)
            : base(client, endpoint, context)
        {
            OssUtils.CheckBucketName(bucketName);

            _bucketName = bucketName;
            _setBucketLifecycleRequest = setBucketLifecycleRequest;
        }
        private SetBucketLifecycleCommand(IServiceClient client, Uri endpoint, ExecutionContext context,
                                    string bucketName, SetBucketLifecycleRequest setBucketLifecycleRequest)
            : base(client, endpoint, context)
        {
            OssUtils.CheckBucketName(bucketName);

            _bucketName = bucketName;
            _setBucketLifecycleRequest = setBucketLifecycleRequest;
        }
        public void LifecycleWithVersioningNegativeTest()
        {
            var rule = new LifecycleRule();

            rule.ID                = "rule test";
            rule.Prefix            = "test1";
            rule.Status            = RuleStatus.Enabled;
            rule.ExpriationDays    = 100;
            rule.CreatedBeforeDate = DateTime.UtcNow.Date.AddDays(400);

            var req = new SetBucketLifecycleRequest(_bucketName);

            try
            {
                req.AddLifecycleRule(rule);
            }
            catch (ArgumentException e)
            {
                Assert.AreEqual(e.Message, "Only one expiration property should be specified.");
            }

            rule                           = new LifecycleRule();
            rule.ID                        = "rule test";
            rule.Prefix                    = "test1";
            rule.Status                    = RuleStatus.Enabled;
            rule.ExpriationDays            = 100;
            rule.ExpiredObjectDeleteMarker = true;

            req = new SetBucketLifecycleRequest(_bucketName);

            try
            {
                req.AddLifecycleRule(rule);
            }
            catch (ArgumentException e)
            {
                Assert.AreEqual(e.Message, "Only one expiration property should be specified.");
            }

            rule                           = new LifecycleRule();
            rule.ID                        = "rule test";
            rule.Prefix                    = "test1";
            rule.Status                    = RuleStatus.Enabled;
            rule.CreatedBeforeDate         = DateTime.UtcNow.Date.AddDays(400);
            rule.ExpiredObjectDeleteMarker = true;

            req = new SetBucketLifecycleRequest(_bucketName);

            try
            {
                req.AddLifecycleRule(rule);
            }
            catch (ArgumentException e)
            {
                Assert.AreEqual(e.Message, "Only one expiration property should be specified.");
            }
        }
Example #8
0
        private void Test(LifecycleRule rule)
        {
            string bucket = _bucketName;
            SetBucketLifecycleRequest req = new SetBucketLifecycleRequest(bucket);

            req.AddLifecycleRule(rule);
            _ossClient.SetBucketLifecycle(req);
            OssTestUtils.WaitForCacheExpire();
            var rules = _ossClient.GetBucketLifecycle(bucket);

            Assert.IsTrue(rules.Count == 1);
            Assert.AreEqual(rules[0], rule);
            _ossClient.DeleteBucketLifecycle(bucket);
        }
Example #9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="bucketName"></param>
        /// <param name="rules"></param>
        /// <![CDATA[
        ///  LifecycleRule lcr1 = new LifecycleRule()
        ///   {
        ///       ID = "delete obsoleted files",
        ///      Prefix = "obsoleted/",
        ///      Status = RuleStatus.Enabled,
        ///      ExpriationDays = 3
        ///  };
        /// ]]>
        public void SetBucketLifecycle(string bucketName, LifecycleRule[] rules)
        {
            if (rules.Length == 0)
            {
                return;
            }
            var setBucketLifecycleRequest = new SetBucketLifecycleRequest(bucketName);

            for (var i = 0; i < rules.Length; i++)
            {
                setBucketLifecycleRequest.AddLifecycleRule(rules[i]);
            }

            Client.SetBucketLifecycle(setBucketLifecycleRequest);
        }
Example #10
0
        private static void SetBucketLifecycle()
        {
            try
            {
                SetBucketLifecycleRequest request = new SetBucketLifecycleRequest()
                {
                    BucketName    = bucketName,
                    Configuration = new LifecycleConfiguration(),
                };

                LifecycleRule rule1 = new LifecycleRule();
                rule1.Id     = "rule1";
                rule1.Prefix = "prefix";
                rule1.Status = RuleStatusEnum.Enabled;

                rule1.Expiration.Days = 30;

                Transition transition = new Transition()
                {
                    Date         = new DateTime(2018, 12, 30, 0, 0, 0),
                    StorageClass = StorageClassEnum.Warm
                };
                rule1.Transitions.Add(transition);

                NoncurrentVersionTransition noncurrentVersionTransition = new NoncurrentVersionTransition()
                {
                    NoncurrentDays = 30,
                    StorageClass   = StorageClassEnum.Cold,
                };
                rule1.NoncurrentVersionTransitions.Add(noncurrentVersionTransition);

                rule1.NoncurrentVersionExpiration.NoncurrentDays = 30;

                request.Configuration.Rules.Add(rule1);

                SetBucketLifecycleResponse response = client.SetBucketLifecycle(request);

                Console.WriteLine("Set bucket lifecycle response: {0}", response.StatusCode);
            }
            catch (ObsException ex)
            {
                Console.WriteLine("Exception errorcode: {0}, when set bucket lifecycle.", ex.ErrorCode);
                Console.WriteLine("Exception errormessage: {0}", ex.ErrorMessage);
            }
        }
Example #11
0
        /// <summary>
        /// 设置生存时间(超时会自动删除)
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public ExpireResultDto SetExpire(SetExpireParam request)
        {
            return(ToolCommon.GetResponse(() =>
            {
                new SetExpireParamValidator().Validate(request).Check(HttpStatus.Err.Name);
                var zone = Core.Tools.GetZone(_aLiYunConfig, request.PersistentOps.Zone, () => ZoneEnum.HangZhou);
                var client = _aLiYunConfig.GetClient(zone);
                var bucket = Core.Tools.GetBucket(_aLiYunConfig, request.PersistentOps.Bucket);
                var setBucketLifecycleRequest = new SetBucketLifecycleRequest(bucket);

                LifecycleRule lcr = new LifecycleRule()
                {
                    ID = "delete " + request.Key + " files",
                    Prefix = request.Key,
                    Status = RuleStatus.Enabled,
                    ExpriationDays = request.Expire
                };
                setBucketLifecycleRequest.AddLifecycleRule(lcr);
                client.SetBucketLifecycle(setBucketLifecycleRequest); //调整生命周期
                return new ExpireResultDto(true, request.Key, "success");
            }, message => new ExpireResultDto(false, request.Key, message)));
        }
        public void LifecycleWithTagsAdvancedSettingTest()
        {
            LifecycleRule rule1 = new LifecycleRule();

            rule1.ID                   = "StandardExpireRule" + Guid.NewGuid();
            rule1.Prefix               = "test";
            rule1.Status               = RuleStatus.Enabled;
            rule1.ExpriationDays       = 200;
            rule1.AbortMultipartUpload = new LifecycleRule.LifeCycleExpiration()
            {
                CreatedBeforeDate = DateTime.UtcNow.Date.AddDays(400)
            };

            LifecycleRule rule2 = new LifecycleRule();

            rule2.ID             = "StandardExpireRule" + Guid.NewGuid();
            rule2.Prefix         = "test2";
            rule2.Status         = RuleStatus.Enabled;
            rule2.ExpriationDays = 400;
            rule2.Transitions    = new LifecycleRule.LifeCycleTransition[2]
            {
                new LifecycleRule.LifeCycleTransition()
                {
                    StorageClass = StorageClass.IA
                },
                new LifecycleRule.LifeCycleTransition()
                {
                    StorageClass = StorageClass.Archive
                }
            };
            rule2.Transitions[0].LifeCycleExpiration.Days = 180;
            rule2.Transitions[1].LifeCycleExpiration.Days = 365;
            rule2.Tags = new Tag[2]
            {
                new Tag()
                {
                    Key   = "key1",
                    Value = "value1"
                },
                new Tag()
                {
                    Key   = "key2",
                    Value = "value2"
                }
            };

            LifecycleRule rule3 = new LifecycleRule();

            rule3.ID                = "StandardExpireRule" + Guid.NewGuid();
            rule3.Prefix            = "object";
            rule3.Status            = RuleStatus.Disabled;
            rule3.CreatedBeforeDate = DateTime.UtcNow.Date.AddDays(365);
            rule3.Tags              = new Tag[3]
            {
                new Tag()
                {
                    Key   = "key3-1",
                    Value = "value3-1"
                },
                new Tag()
                {
                    Key   = "key3-2",
                    Value = "value3-2"
                },
                new Tag()
                {
                    Key   = "key3-3",
                    Value = "value3-3"
                }
            };

            SetBucketLifecycleRequest req = new SetBucketLifecycleRequest(_bucketName);

            req.AddLifecycleRule(rule1);
            req.AddLifecycleRule(rule2);
            req.AddLifecycleRule(rule3);
            _ossClient.SetBucketLifecycle(req);
            OssTestUtils.WaitForCacheExpire();
            var rules = _ossClient.GetBucketLifecycle(_bucketName);

            Assert.IsTrue(rules.Count == 3);
            Assert.AreEqual(rules[0], rule1);
            Assert.AreEqual(rules[1], rule2);
            Assert.AreEqual(rules[2], rule3);

            Assert.AreEqual(rules[0].Tags, null);
            Assert.AreEqual(rules[1].Tags[0].Key, "key1");
            Assert.AreEqual(rules[1].Tags[0].Value, "value1");
            Assert.AreEqual(rules[2].Tags[1].Key, "key3-2");
            Assert.AreEqual(rules[2].Tags[1].Value, "value3-2");

            _ossClient.DeleteBucketLifecycle(_bucketName);
        }
 public static SetBucketLifecycleCommand Create(IServiceClient client, Uri endpoint,
                                                ExecutionContext context,
                                                string bucketName, SetBucketLifecycleRequest setBucketLifecycleRequest)
 {
     return new SetBucketLifecycleCommand(client, endpoint, context, bucketName, setBucketLifecycleRequest);
 }
Example #14
0
 /// <summary>
 /// 设置桶的生命周期配置。
 /// </summary>
 /// <param name="request">设置桶生命周期配置的请求参数。</param>
 /// <returns>设置桶生命周期配置的响应结果。</returns>
 public SetBucketLifecycleResponse SetBucketLifecycle(SetBucketLifecycleRequest request)
 {
     return(this.DoRequest <SetBucketLifecycleRequest, SetBucketLifecycleResponse>(request));
 }
 public static SetBucketLifecycleCommand Create(IServiceClient client, Uri endpoint, ExecutionContext context, string bucketName, SetBucketLifecycleRequest setBucketLifecycleRequest)
 {
     return(new SetBucketLifecycleCommand(client, endpoint, context, bucketName, setBucketLifecycleRequest));
 }
        public void LifecycleWithVersioningSettingTest()
        {
            var bucketName = _bucketName;

            LifecycleRule rule1 = new LifecycleRule();

            rule1.ID             = "rule1";
            rule1.Prefix         = "test1";
            rule1.Status         = RuleStatus.Enabled;
            rule1.ExpriationDays = 200;

            LifecycleRule rule2 = new LifecycleRule();

            rule2.ID             = "rule2";
            rule2.Prefix         = "test2";
            rule2.Status         = RuleStatus.Enabled;
            rule2.ExpriationDays = 400;
            rule2.Transitions    = new LifecycleRule.LifeCycleTransition[2]
            {
                new LifecycleRule.LifeCycleTransition()
                {
                    StorageClass = StorageClass.IA
                },
                new LifecycleRule.LifeCycleTransition()
                {
                    StorageClass = StorageClass.Archive
                }
            };
            rule2.Transitions[0].LifeCycleExpiration.Days = 180;
            rule2.Transitions[1].LifeCycleExpiration.Days = 365;

            LifecycleRule rule3 = new LifecycleRule();

            rule3.ID     = "delete example";
            rule3.Prefix = "object";
            rule3.Status = RuleStatus.Disabled;
            rule3.ExpiredObjectDeleteMarker   = true;
            rule3.NoncurrentVersionExpiration = new LifecycleRule.LifeCycleNoncurrentVersionExpiration()
            {
                NoncurrentDays = 200
            };

            rule3.NoncurrentVersionTransitions = new LifecycleRule.LifeCycleNoncurrentVersionTransition[2]
            {
                new LifecycleRule.LifeCycleNoncurrentVersionTransition()
                {
                    StorageClass = StorageClass.IA
                },
                new LifecycleRule.LifeCycleNoncurrentVersionTransition()
                {
                    StorageClass = StorageClass.Archive
                }
            };
            rule3.NoncurrentVersionTransitions[0].NoncurrentDays = 90;
            rule3.NoncurrentVersionTransitions[1].NoncurrentDays = 180;

            SetBucketLifecycleRequest req = new SetBucketLifecycleRequest(bucketName);

            req.AddLifecycleRule(rule1);
            req.AddLifecycleRule(rule2);
            req.AddLifecycleRule(rule3);
            _ossClient.SetBucketLifecycle(req);
            OssTestUtils.WaitForCacheExpire(1);
            var rules = _ossClient.GetBucketLifecycle(bucketName);

            Assert.IsTrue(rules.Count == 3);
            Assert.AreEqual(rules[0], rule1);
            Assert.AreEqual(rules[1], rule2);
            Assert.AreEqual(rules[2], rule3);

            //Only ExpiredObjectDeleteMarker
            LifecycleRule rule4 = new LifecycleRule();

            rule4.ID     = "only delete marker";
            rule4.Prefix = "test1";
            rule4.Status = RuleStatus.Enabled;
            rule4.ExpiredObjectDeleteMarker = true;

            req = new SetBucketLifecycleRequest(bucketName);
            req.AddLifecycleRule(rule4);
            _ossClient.SetBucketLifecycle(req);
            OssTestUtils.WaitForCacheExpire(1);
            rules = _ossClient.GetBucketLifecycle(bucketName);
            Assert.IsTrue(rules.Count == 1);
            Assert.AreEqual(rules[0], rule4);
            Assert.AreEqual(rules[0].ExpiredObjectDeleteMarker, true);


            //Only NoncurrentVersionTransition
            LifecycleRule rule5 = new LifecycleRule();

            rule5.ID     = "only NoncurrentVersionTransition";
            rule5.Prefix = "test1";
            rule5.Status = RuleStatus.Enabled;
            rule5.NoncurrentVersionTransitions = new LifecycleRule.LifeCycleNoncurrentVersionTransition[2]
            {
                new LifecycleRule.LifeCycleNoncurrentVersionTransition()
                {
                    StorageClass   = StorageClass.IA,
                    NoncurrentDays = 90
                },
                new LifecycleRule.LifeCycleNoncurrentVersionTransition()
                {
                    StorageClass   = StorageClass.Archive,
                    NoncurrentDays = 180
                }
            };

            req = new SetBucketLifecycleRequest(bucketName);
            req.AddLifecycleRule(rule5);
            _ossClient.SetBucketLifecycle(req);
            OssTestUtils.WaitForCacheExpire(1);
            rules = _ossClient.GetBucketLifecycle(bucketName);
            Assert.IsTrue(rules.Count == 1);
            Assert.AreEqual(rules[0], rule5);
            Assert.AreEqual(rules[0].ExpiredObjectDeleteMarker.HasValue, false);
            Assert.AreEqual(rules[0].NoncurrentVersionTransitions[0].NoncurrentDays, 90);
            Assert.AreEqual(rules[0].NoncurrentVersionTransitions[0].StorageClass, StorageClass.IA);
            Assert.AreEqual(rules[0].NoncurrentVersionTransitions[1].NoncurrentDays, 180);
            Assert.AreEqual(rules[0].NoncurrentVersionTransitions[1].StorageClass, StorageClass.Archive);

            //Only NoncurrentVersionExpiration
            LifecycleRule rule6 = new LifecycleRule();

            rule6.ID     = "only NoncurrentVersionExpiration";
            rule6.Prefix = "test1";
            rule6.Status = RuleStatus.Enabled;
            rule6.NoncurrentVersionExpiration = new LifecycleRule.LifeCycleNoncurrentVersionExpiration()
            {
                NoncurrentDays = 100
            };

            req = new SetBucketLifecycleRequest(bucketName);
            req.AddLifecycleRule(rule6);
            _ossClient.SetBucketLifecycle(req);
            OssTestUtils.WaitForCacheExpire(1);
            rules = _ossClient.GetBucketLifecycle(bucketName);
            Assert.IsTrue(rules.Count == 1);
            Assert.AreEqual(rules[0], rule6);
            Assert.AreEqual(rules[0].NoncurrentVersionExpiration.NoncurrentDays, 100);

            _ossClient.DeleteBucketLifecycle(bucketName);
        }
 /// <summary>
 /// Start the asynchronous request for setting the bucket lifecycle rules.
 /// </summary>
 /// <param name="request">Parameters in a request for setting the bucket lifecycle rules</param>
 /// <param name="callback">Asynchronous request callback function</param>
 /// <param name="state">Asynchronous request status object</param>
 /// <returns>Response to the asynchronous request</returns>
 public IAsyncResult BeginSetBucketLifecycle(SetBucketLifecycleRequest request, AsyncCallback callback, object state)
 {
     return(this.BeginDoRequest <SetBucketLifecycleRequest>(request, callback, state));
 }