Пример #1
0
        //Parse wrapped PSNetworkRuleSet to storage NetworkRule object in SDK
        public static StorageNetworkAcls ParseStorageNetworkRule(PSNetworkRuleSet rules)
        {
            if (rules == null)
            {
                return(null);
            }
            StorageNetworkAcls returnRules = new StorageNetworkAcls();

            returnRules.Bypass        = ParseStorageNetworkRuleBypass(rules.Bypass);
            returnRules.DefaultAction = ParseStorageNetworkRuleDefaultAction(rules.DefaultAction);

            List <IPRule> ipRuleList = new List <IPRule>();

            if (rules.IpRules != null)
            {
                foreach (var ipRule in rules.IpRules)
                {
                    ipRuleList.Add(ParseStorageNetworkRuleIPRule(ipRule));
                }
                returnRules.IpRules = ipRuleList.ToArray();
            }

            List <VirtualNetworkRule> virtualNetworkList = new List <VirtualNetworkRule>();

            if (rules.VirtualNetworkRules != null)
            {
                foreach (var virtualNetworkRule in rules.VirtualNetworkRules)
                {
                    virtualNetworkList.Add(ParseStorageNetworkRuleVirtualNetworkRule(virtualNetworkRule));
                }
                returnRules.VirtualNetworkRules = virtualNetworkList.ToArray();
            }

            return(returnRules);
        }
Пример #2
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (ShouldProcess(this.Name, "Update Storage Account NetworkRule"))
            {
                if (IPRule == null && VirtualNetworkRule == null && bypass == null && defaultAction == null)
                {
                    throw new System.ArgumentNullException("IPRules, VirtualNetworkRules, Bypass, DefaultAction", "Request must specify an account NetworkRule property to update.");
                }

                var storageAccount = this.StorageClient.StorageAccounts.GetProperties(
                    this.ResourceGroupName,
                    this.Name);
                StorageNetworkAcls storageACL = storageAccount.NetworkAcls;

                if (storageACL == null)
                {
                    storageACL = new StorageNetworkAcls();
                }

                PSNetworkRuleSet psNetworkRule = PSNetworkRuleSet.ParsePSNetworkRule(storageACL);

                if (isIpRuleSet)
                {
                    psNetworkRule.IpRules = IPRule;
                }

                if (isNetworkRuleSet)
                {
                    psNetworkRule.VirtualNetworkRules = VirtualNetworkRule;
                }

                if (bypass != null)
                {
                    psNetworkRule.Bypass = bypass;
                }

                if (defaultAction != null)
                {
                    psNetworkRule.DefaultAction = defaultAction.Value;
                }

                StorageAccountUpdateParameters updateParameters = new StorageAccountUpdateParameters();
                updateParameters.NetworkAcls = PSNetworkRuleSet.ParseStorageNetworkRule(psNetworkRule);

                var updatedAccountResponse = this.StorageClient.StorageAccounts.Update(
                    this.ResourceGroupName,
                    this.Name,
                    updateParameters);

                storageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);

                WriteObject(PSNetworkRuleSet.ParsePSNetworkRule(storageAccount.NetworkAcls));
            }
        }
Пример #3
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (ShouldProcess(this.Name, "Remove Storage Account Networkrules"))
            {
                var storageAccount = this.StorageClient.StorageAccounts.GetProperties(
                    this.ResourceGroupName,
                    this.Name);
                StorageNetworkAcls storageACL = storageAccount.NetworkAcls;

                if (storageACL == null)
                {
                    storageACL = new StorageNetworkAcls();
                }

                switch (ParameterSetName)
                {
                case NetWorkRuleStringParameterSet:
                    if (storageACL.VirtualNetworkRules == null)
                    {
                        storageACL.VirtualNetworkRules = new List <VirtualNetworkRule>();
                    }
                    foreach (string s in VirtualNetworkResourceId)
                    {
                        VirtualNetworkRule rule = new VirtualNetworkRule(s);
                        if (!RemoveNetworkRule(storageACL.VirtualNetworkRules, rule))
                        {
                            throw new ArgumentOutOfRangeException("VirtualNetworkResourceId", String.Format("Can't remove VirtualNetworkRule with specific ResourceId since not exist: {0}", rule.VirtualNetworkResourceId));
                        }
                    }
                    break;

                case IpRuleStringParameterSet:
                    if (storageACL.IpRules == null)
                    {
                        storageACL.IpRules = new List <IPRule>();
                    }
                    foreach (string s in IPAddressOrRange)
                    {
                        IPRule rule = new IPRule(s);
                        if (!RemoveIpRule(storageACL.IpRules, rule))
                        {
                            throw new ArgumentOutOfRangeException("IPAddressOrRange", String.Format("Can't remove IpRule with specific IPAddressOrRange since not exist: {0}", rule.IPAddressOrRange));
                        }
                    }
                    break;

                case NetworkRuleObjectParameterSet:
                    if (storageACL.VirtualNetworkRules == null)
                    {
                        storageACL.VirtualNetworkRules = new List <VirtualNetworkRule>();
                    }
                    foreach (PSVirtualNetworkRule rule in VirtualNetworkRule)
                    {
                        if (!RemoveNetworkRule(storageACL.VirtualNetworkRules, PSNetworkRuleSet.ParseStorageNetworkRuleVirtualNetworkRule(rule)))
                        {
                            throw new ArgumentOutOfRangeException("VirtualNetworkRule", String.Format("Can't remove VirtualNetworkRule with specific ResourceId since not exist: {0}", rule.VirtualNetworkResourceId));
                        }
                    }
                    break;

                case IpRuleObjectParameterSet:
                    if (storageACL.IpRules == null)
                    {
                        storageACL.IpRules = new List <IPRule>();
                    }
                    foreach (PSIpRule rule in IPRule)
                    {
                        if (!RemoveIpRule(storageACL.IpRules, PSNetworkRuleSet.ParseStorageNetworkRuleIPRule(rule)))
                        {
                            throw new ArgumentOutOfRangeException("IPRule", String.Format("Can't remove IpRule with specific IPAddressOrRange since not exist: {0}", rule.IPAddressOrRange));
                        }
                    }
                    break;
                }

                StorageAccountUpdateParameters updateParameters = new StorageAccountUpdateParameters();
                updateParameters.NetworkAcls = storageACL;

                var updatedAccountResponse = this.StorageClient.StorageAccounts.Update(
                    this.ResourceGroupName,
                    this.Name,
                    updateParameters);

                storageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);

                switch (ParameterSetName)
                {
                case NetWorkRuleStringParameterSet:
                case NetworkRuleObjectParameterSet:
                    WriteObject(PSNetworkRuleSet.ParsePSNetworkRule(storageAccount.NetworkAcls).VirtualNetworkRules);
                    break;

                case IpRuleStringParameterSet:
                case IpRuleObjectParameterSet:
                    WriteObject(PSNetworkRuleSet.ParsePSNetworkRule(storageAccount.NetworkAcls).IpRules);
                    break;
                }
            }
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (ShouldProcess(this.Name, "Add Storage Account NetworkRules"))
            {
                var storageAccount = this.StorageClient.StorageAccounts.GetProperties(
                    this.ResourceGroupName,
                    this.Name);
                StorageNetworkAcls storageACL = storageAccount.NetworkAcls;

                if (storageACL == null)
                {
                    storageACL = new StorageNetworkAcls();
                }

                switch (ParameterSetName)
                {
                case NetWorkRuleStringParameterSet:
                    if (storageACL.VirtualNetworkRules == null)
                    {
                        storageACL.VirtualNetworkRules = new List <VirtualNetworkRule>();
                    }
                    foreach (string s in VirtualNetworkResourceId)
                    {
                        VirtualNetworkRule rule = new VirtualNetworkRule(s);
                        storageACL.VirtualNetworkRules.Add(rule);
                    }
                    break;

                case IpRuleStringParameterSet:
                    if (storageACL.IpRules == null)
                    {
                        storageACL.IpRules = new List <IPRule>();
                    }
                    foreach (string s in IPAddressOrRange)
                    {
                        IPRule rule = new IPRule(s);
                        storageACL.IpRules.Add(rule);
                    }
                    break;

                case NetworkRuleObjectParameterSet:
                    if (storageACL.VirtualNetworkRules == null)
                    {
                        storageACL.VirtualNetworkRules = new List <VirtualNetworkRule>();
                    }
                    foreach (PSVirtualNetworkRule rule in VirtualNetworkRule)
                    {
                        storageACL.VirtualNetworkRules.Add(PSNetworkRuleSet.ParseStorageNetworkRuleVirtualNetworkRule(rule));
                    }
                    break;

                case IpRuleObjectParameterSet:
                    if (storageACL.IpRules == null)
                    {
                        storageACL.IpRules = new List <IPRule>();
                    }
                    foreach (PSIpRule rule in IPRule)
                    {
                        storageACL.IpRules.Add(PSNetworkRuleSet.ParseStorageNetworkRuleIPRule(rule));
                    }
                    break;
                }

                StorageAccountUpdateParameters updateParameters = new StorageAccountUpdateParameters();
                updateParameters.NetworkAcls = storageACL;

                var updatedAccountResponse = this.StorageClient.StorageAccounts.Update(
                    this.ResourceGroupName,
                    this.Name,
                    updateParameters);

                storageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);

                switch (ParameterSetName)
                {
                case NetWorkRuleStringParameterSet:
                case NetworkRuleObjectParameterSet:
                    WriteObject(PSNetworkRuleSet.ParsePSNetworkRule(storageAccount.NetworkAcls).VirtualNetworkRules);
                    break;

                case IpRuleStringParameterSet:
                case IpRuleObjectParameterSet:
                    WriteObject(PSNetworkRuleSet.ParsePSNetworkRule(storageAccount.NetworkAcls).IpRules);
                    break;
                }
            }
        }