public PSAzureFirewallPolicyRuleCollectionGroupWrapper GetAzureFirewallPolicyRuleGroup(string resourceGroupName, string firewallPolicyName, string name) { var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore }; var getRuleCollectionGroup = this.AzureFirewallPolicyRuleGroupClient.Get(resourceGroupName, firewallPolicyName, name); var ruleCollectionGroup = new PSAzureFirewallPolicyRuleCollectionGroup(); ruleCollectionGroup.RuleCollection = new List <PSAzureFirewallPolicyBaseRuleCollection>(); for (int ruleCollectionIndex = 0; ruleCollectionIndex < getRuleCollectionGroup.Rules.Count; ruleCollectionIndex++) { var ruleCollection = new PSAzureFirewallPolicyBaseRuleCollection(); if (getRuleCollectionGroup.Rules[ruleCollectionIndex] is MNM.FirewallPolicyFilterRule) { MNM.FirewallPolicyFilterRule filterRule = (MNM.FirewallPolicyFilterRule)getRuleCollectionGroup.Rules[ruleCollectionIndex]; PSAzureFirewallPolicyFilterRuleCollection filterRuleCollection = JsonConvert.DeserializeObject <PSAzureFirewallPolicyFilterRuleCollection>(JsonConvert.SerializeObject(getRuleCollectionGroup.Rules[ruleCollectionIndex])); filterRuleCollection.RuleCollectionType = "FirewallPolicyFilterRule"; filterRuleCollection.Rules = new List <PSAzureFirewallPolicyRule>(); for (int ruleIndex = 0; ruleIndex < filterRule.RuleConditions.Count; ruleIndex++) { if (filterRule.RuleConditions[ruleIndex] is MNM.ApplicationRuleCondition) { PSAzureFirewallPolicyApplicationRule rule = JsonConvert.DeserializeObject <PSAzureFirewallPolicyApplicationRule>(JsonConvert.SerializeObject(filterRule.RuleConditions[ruleIndex])); rule.RuleType = "ApplicationRuleCondition"; filterRuleCollection.Rules.Add(rule); } else { PSAzureFirewallPolicyNetworkRule rule = JsonConvert.DeserializeObject <PSAzureFirewallPolicyNetworkRule>(JsonConvert.SerializeObject(filterRule.RuleConditions[ruleIndex])); rule.RuleType = "NetworkRuleCondition"; filterRuleCollection.Rules.Add(rule); } } ruleCollectionGroup.RuleCollection.Add(filterRuleCollection); } else { MNM.FirewallPolicyNatRule natRule = (MNM.FirewallPolicyNatRule)getRuleCollectionGroup.Rules[ruleCollectionIndex]; PSAzureFirewallPolicyNatRuleCollection natRuleCollection = JsonConvert.DeserializeObject <PSAzureFirewallPolicyNatRuleCollection>(JsonConvert.SerializeObject(getRuleCollectionGroup.Rules[ruleCollectionIndex])); natRuleCollection.RuleCollectionType = "FirewallPolicyNatRule"; natRuleCollection.Rule = JsonConvert.DeserializeObject <PSAzureFirewallPolicyNetworkRule>(JsonConvert.SerializeObject(natRule.RuleCondition)); natRuleCollection.Rule.RuleType = "NetworkRuleCondition"; ruleCollectionGroup.RuleCollection.Add(natRuleCollection); } } var ruleCollectionGroupWrapper = new PSAzureFirewallPolicyRuleCollectionGroupWrapper(); ruleCollectionGroup.Priority = (uint)getRuleCollectionGroup.Priority; ruleCollectionGroupWrapper.Properties = ruleCollectionGroup; ruleCollectionGroupWrapper.Name = getRuleCollectionGroup.Name; ruleCollectionGroupWrapper.Properties.Id = getRuleCollectionGroup.Id; return(ruleCollectionGroupWrapper); }
public override void Execute() { base.Execute(); if (this.IsParameterBound(c => c.FirewallPolicyObject)) { FirewallPolicyName = FirewallPolicyObject.Name; ResourceGroupName = FirewallPolicyObject.ResourceGroupName; } var ruleGroup = new PSAzureFirewallPolicyRuleCollectionGroup { Priority = this.Priority, RuleCollection = this.RuleCollection?.ToList(), }; var rcWrapper = new PSAzureFirewallPolicyRuleCollectionGroupWrapper { Name = this.Name, Properties = ruleGroup }; var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore }; string serializedObject = JsonConvert.SerializeObject(rcWrapper, settings); var json = serializedObject.Replace("'", "\""); var deserializedruleGroup = (MNM.FirewallPolicyRuleGroup)JsonConvert.DeserializeObject( json, typeof(MNM.FirewallPolicyRuleGroup), new JsonConverter[] { new Iso8601TimeSpanConverter(), new PolymorphicJsonCustomConverter <MNM.FirewallPolicyRule, MNM.FirewallPolicyRuleCondition>("ruleType", "ruleConditionType"), new TransformationJsonConverter() }); this.AzureFirewallPolicyRuleGroupClient.CreateOrUpdate(this.ResourceGroupName, this.FirewallPolicyName, deserializedruleGroup.Name, deserializedruleGroup); WriteObject(rcWrapper); }
public override void Execute() { base.Execute(); var ruleGroup = new PSAzureFirewallPolicyRuleCollectionGroup(); var rcWrapper = new PSAzureFirewallPolicyRuleCollectionGroupWrapper(); if (this.IsParameterBound(c => c.InputObject)) { this.Name = InputObject.Name; var resourceId = InputObject.Properties.Id; var resourceInfo = new ResourceIdentifier(resourceId); this.FirewallPolicyName = resourceInfo.ParentResource.Split('/')[1]; this.ResourceGroupName = resourceInfo.ResourceGroupName; ruleGroup = new PSAzureFirewallPolicyRuleCollectionGroup { Priority = this.IsParameterBound(c => c.Priority) ? Priority : InputObject.Properties.Priority, RuleCollection = this.IsParameterBound(c => c.RuleCollection) ? RuleCollection.ToList() : InputObject.Properties.RuleCollection?.ToList() }; rcWrapper = new PSAzureFirewallPolicyRuleCollectionGroupWrapper { Name = InputObject.Name, Properties = ruleGroup }; } else if (this.IsParameterBound(c => c.ResourceId)) { var resourceInfo = new ResourceIdentifier(ResourceId); this.Name = resourceInfo.ResourceName; this.ResourceGroupName = resourceInfo.ResourceGroupName; this.FirewallPolicyName = resourceInfo.ParentResource.Split('/')[1]; ruleGroup = new PSAzureFirewallPolicyRuleCollectionGroup { Priority = Priority, RuleCollection = this.RuleCollection?.ToList() }; rcWrapper = new PSAzureFirewallPolicyRuleCollectionGroupWrapper { Name = this.Name, Properties = ruleGroup }; } else if (this.IsParameterBound(c => c.FirewallPolicyObject)) { this.ResourceGroupName = FirewallPolicyObject.ResourceGroupName; this.FirewallPolicyName = FirewallPolicyObject.Name; ruleGroup = new PSAzureFirewallPolicyRuleCollectionGroup { Priority = Priority, RuleCollection = this.RuleCollection?.ToList() }; rcWrapper = new PSAzureFirewallPolicyRuleCollectionGroupWrapper { Name = this.Name, Properties = ruleGroup }; } else if (this.IsParameterBound(c => c.FirewallPolicyName)) { ruleGroup = new PSAzureFirewallPolicyRuleCollectionGroup { Priority = Priority, RuleCollection = this.RuleCollection?.ToList() }; rcWrapper = new PSAzureFirewallPolicyRuleCollectionGroupWrapper { Name = this.Name, Properties = ruleGroup }; } var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore }; string serializedObject = JsonConvert.SerializeObject(rcWrapper, settings); var json = serializedObject.Replace("'", "\""); var deserializedruleGroup = (MNM.FirewallPolicyRuleCollectionGroup)JsonConvert.DeserializeObject( json, typeof(MNM.FirewallPolicyRuleCollectionGroup), new JsonConverter[] { new Iso8601TimeSpanConverter(), new PolymorphicJsonCustomConverter <MNM.FirewallPolicyRuleCollection, MNM.FirewallPolicyRule>("ruleCollectionType", "ruleType"), new TransformationJsonConverter() }); this.AzureFirewallPolicyRuleGroupClient.CreateOrUpdate(this.ResourceGroupName, this.FirewallPolicyName, this.Name, deserializedruleGroup); WriteObject(InputObject); }