public override void Execute() { base.Execute(); // Sku PSLoadBalancerSku vSku = null; if (this.Sku != null) { if (vSku == null) { vSku = new PSLoadBalancerSku(); } vSku.Name = this.Sku; } var vLoadBalancer = new PSLoadBalancer { Location = this.Location, FrontendIpConfigurations = this.FrontendIpConfiguration?.ToList(), BackendAddressPools = this.BackendAddressPool?.ToList(), LoadBalancingRules = this.LoadBalancingRule?.ToList(), Probes = this.Probe?.ToList(), InboundNatRules = this.InboundNatRule?.ToList(), InboundNatPools = this.InboundNatPool?.ToList(), OutboundRules = this.OutboundRule?.ToList(), Sku = vSku, }; NormalizeChildIds(vLoadBalancer); var vLoadBalancerModel = NetworkResourceManagerProfile.Mapper.Map <MNM.LoadBalancer>(vLoadBalancer); vLoadBalancerModel.Tags = TagsConversionHelper.CreateTagDictionary(this.Tag, validate: true); var present = true; try { this.NetworkClient.NetworkManagementClient.LoadBalancers.Get(this.ResourceGroupName, this.Name); } catch (Microsoft.Rest.Azure.CloudException exception) { if (exception.Response.StatusCode == HttpStatusCode.NotFound) { // Resource is not present present = false; } else { throw; } } ConfirmAction( Force.IsPresent, string.Format(Properties.Resources.OverwritingResource, Name), Properties.Resources.CreatingResourceMessage, Name, () => { this.NetworkClient.NetworkManagementClient.LoadBalancers.CreateOrUpdate(this.ResourceGroupName, this.Name, vLoadBalancerModel); var getLoadBalancer = this.NetworkClient.NetworkManagementClient.LoadBalancers.Get(this.ResourceGroupName, this.Name); var psLoadBalancer = NetworkResourceManagerProfile.Mapper.Map <PSLoadBalancer>(getLoadBalancer); psLoadBalancer.ResourceGroupName = this.ResourceGroupName; psLoadBalancer.Tag = TagsConversionHelper.CreateTagHashtable(getLoadBalancer.Tags); WriteObject(psLoadBalancer, true); }, () => present); }
public override void Execute() { base.Execute(); // Sku PSLoadBalancerSku vSku = null; if (this.Sku != null) { if (vSku == null) { vSku = new PSLoadBalancerSku(); } vSku.Name = this.Sku; } // Tier if (this.Tier != null) { if (vSku == null) { vSku = new PSLoadBalancerSku(); } vSku.Tier = this.Tier; } var vLoadBalancer = new PSLoadBalancer { Location = this.Location, FrontendIpConfigurations = this.FrontendIpConfiguration?.ToList(), BackendAddressPools = this.BackendAddressPool?.ToList(), LoadBalancingRules = this.LoadBalancingRule?.ToList(), Probes = this.Probe?.ToList(), InboundNatRules = this.InboundNatRule?.ToList(), InboundNatPools = this.InboundNatPool?.ToList(), OutboundRules = this.OutboundRule?.ToList(), Sku = vSku, }; NormalizeChildIds(vLoadBalancer); var vLoadBalancerModel = NetworkResourceManagerProfile.Mapper.Map <MNM.LoadBalancer>(vLoadBalancer); vLoadBalancerModel.Tags = TagsConversionHelper.CreateTagDictionary(this.Tag, validate: true); var present = true; try { this.NetworkClient.NetworkManagementClient.LoadBalancers.Get(this.ResourceGroupName, this.Name); } catch (Microsoft.Rest.Azure.CloudException exception) { if (exception.Response.StatusCode == HttpStatusCode.NotFound) { // Resource is not present present = false; } else { throw; } } List <string> resourceIdsRequiringAuthToken = new List <string>(); Dictionary <string, List <string> > auxAuthHeader = null; // Get aux token for each gateway lb references foreach (FrontendIPConfiguration frontend in vLoadBalancerModel.FrontendIPConfigurations) { if (frontend.GatewayLoadBalancer != null) { //Get the aux header for the remote vnet resourceIdsRequiringAuthToken.Add(frontend.GatewayLoadBalancer.Id); } } if (resourceIdsRequiringAuthToken.Count > 0) { var auxHeaderDictionary = GetAuxilaryAuthHeaderFromResourceIds(resourceIdsRequiringAuthToken); if (auxHeaderDictionary != null && auxHeaderDictionary.Count > 0) { auxAuthHeader = new Dictionary <string, List <string> >(auxHeaderDictionary); } } ConfirmAction( Force.IsPresent, string.Format(Properties.Resources.OverwritingResource, Name), Properties.Resources.CreatingResourceMessage, Name, () => { this.NetworkClient.NetworkManagementClient.LoadBalancers.CreateOrUpdateWithHttpMessagesAsync(this.ResourceGroupName, this.Name, vLoadBalancerModel, auxAuthHeader).GetAwaiter().GetResult(); var getLoadBalancer = this.NetworkClient.NetworkManagementClient.LoadBalancers.Get(this.ResourceGroupName, this.Name); var psLoadBalancer = NetworkResourceManagerProfile.Mapper.Map <PSLoadBalancer>(getLoadBalancer); psLoadBalancer.ResourceGroupName = this.ResourceGroupName; psLoadBalancer.Tag = TagsConversionHelper.CreateTagHashtable(getLoadBalancer.Tags); WriteObject(psLoadBalancer, true); }, () => present); }