示例#1
0
        public IReadOnlyList <Microsoft.Azure.Management.Storage.Fluent.IPolicyRule> Rules()
        {
            List <ManagementPolicyRule> originalRules = this.Inner.Policy.Rules as List <ManagementPolicyRule>;
            List <IPolicyRule>          returnRules   = new List <IPolicyRule>();

            foreach (ManagementPolicyRule originalRule in originalRules)
            {
                List <String>    originalBlobTypes = originalRule.Definition.Filters.BlobTypes as List <String>;
                List <BlobTypes> returnBlobTypes   = new List <BlobTypes>();
                foreach (String originalBlobType in originalBlobTypes)
                {
                    returnBlobTypes.Add(BlobTypes.Parse(originalBlobType));
                }
                IPolicyRule returnRule = new PolicyRuleImpl(originalRule.Name)
                                         .WithLifecycleRuleType()
                                         .WithBlobTypesToFilterFor(returnBlobTypes);

                // building up prefixes to filter on
                if (originalRule.Definition.Filters.PrefixMatch != null)
                {
                    ((PolicyRuleImpl)returnRule).WithPrefixesToFilterFor(originalRule.Definition.Filters.PrefixMatch);
                }

                // building up actions on base blob
                ManagementPolicyBaseBlob originalBaseBlobActions = originalRule.Definition.Actions.BaseBlob;
                if (originalBaseBlobActions != null)
                {
                    if (originalBaseBlobActions.TierToCool != null)
                    {
                        ((PolicyRuleImpl)returnRule).WithTierToCoolActionOnBaseBlob(originalBaseBlobActions.TierToCool.DaysAfterModificationGreaterThan);
                    }
                    if (originalBaseBlobActions.TierToArchive != null)
                    {
                        ((PolicyRuleImpl)returnRule).WithTierToArchiveActionOnBaseBlob(originalBaseBlobActions.TierToArchive.DaysAfterModificationGreaterThan);
                    }
                    if (originalBaseBlobActions.Delete != null)
                    {
                        ((PolicyRuleImpl)returnRule).WithDeleteActionOnBaseBlob(originalBaseBlobActions.Delete.DaysAfterModificationGreaterThan);
                    }
                }

                // build up actions on snapshot
                ManagementPolicySnapShot originalSnapshotActions = originalRule.Definition.Actions.Snapshot;
                if (originalSnapshotActions != null)
                {
                    if (originalSnapshotActions.Delete != null)
                    {
                        ((PolicyRuleImpl)returnRule).WithDeleteActionOnSnapShot(originalSnapshotActions.Delete.DaysAfterCreationGreaterThan);
                    }
                }
                returnRules.Add(returnRule);
            }
            return(returnRules.AsReadOnly());
        }
示例#2
0
 internal void DefineRule(PolicyRuleImpl policyRuleImpl)
 {
     if (IsInCreateMode())
     {
         if (this.cpolicy.Rules == null)
         {
             this.cpolicy.Rules = new List <ManagementPolicyRule>();
         }
         List <ManagementPolicyRule> rules = this.cpolicy.Rules as List <ManagementPolicyRule>;
         rules.Add(policyRuleImpl.Inner());
         this.cpolicy.Rules = rules;
     }
     else
     {
         if (this.upolicy.Rules == null)
         {
             this.upolicy.Rules = new List <ManagementPolicyRule>();
         }
         List <ManagementPolicyRule> rules = this.upolicy.Rules as List <ManagementPolicyRule>;
         rules.Add(policyRuleImpl.Inner());
         this.upolicy.Rules = rules;
     }
 }