public PsApiManagement CreateApiManagementService( string resourceGroupName, string serviceName, string location, string organization, string administratorEmail, Dictionary <string, string> tags, bool enableClientCertificate, PsApiManagementSku sku = PsApiManagementSku.Developer, int?capacity = null, PsApiManagementVpnType vpnType = PsApiManagementVpnType.None, PsApiManagementVirtualNetwork virtualNetwork = null, PsApiManagementRegion[] additionalRegions = null, PsApiManagementCustomHostNameConfiguration[] customHostnameConfigurations = null, PsApiManagementSystemCertificate[] systemCertificates = null, PsApiManagementSslSetting sslSettings = null, bool createSystemResourceIdentity = false, string[] userAssignedIdentity = null) { string skuType = Mappers.MapSku(sku); if (capacity == null) { capacity = (sku == PsApiManagementSku.Consumption ? 0 : 1); } var skuProperties = new ApiManagementServiceSkuProperties(skuType, capacity.Value); var parameters = new ApiManagementServiceResource { Location = location, PublisherEmail = administratorEmail, PublisherName = organization, VirtualNetworkType = Mappers.MapVirtualNetworkType(vpnType), Sku = skuProperties, Tags = tags }; if (virtualNetwork != null) { parameters.VirtualNetworkConfiguration = new VirtualNetworkConfiguration { SubnetResourceId = virtualNetwork.SubnetResourceId }; } if (additionalRegions != null && additionalRegions.Any()) { parameters.AdditionalLocations = additionalRegions .Select(region => new AdditionalLocation { Location = region.Location, Sku = new ApiManagementServiceSkuProperties() { Name = Mappers.MapSku(region.Sku), Capacity = region.Capacity }, VirtualNetworkConfiguration = region.VirtualNetwork == null ? null : new VirtualNetworkConfiguration { SubnetResourceId = region.VirtualNetwork.SubnetResourceId } }) .ToList(); } if (customHostnameConfigurations != null) { parameters.HostnameConfigurations = BuildHostNameConfiguration(customHostnameConfigurations); } if (systemCertificates != null) { parameters.Certificates = new List <CertificateConfiguration>(); foreach (var systemCertificate in systemCertificates) { var certificateConfig = systemCertificate.GetCertificateConfiguration(); parameters.Certificates.Add(certificateConfig); } } if (sslSettings != null) { parameters.CustomProperties = Mappers.MapPsApiManagementSslSetting(sslSettings); } if (enableClientCertificate) { parameters.EnableClientCertificate = enableClientCertificate; } parameters.Identity = Mappers.MapAssignedIdentity(createSystemResourceIdentity, userAssignedIdentity); var apiManagementResource = Client.ApiManagementService.CreateOrUpdate(resourceGroupName, serviceName, parameters); return(new PsApiManagement(apiManagementResource)); }
public PsApiManagement CreateApiManagementService( string resourceGroupName, string serviceName, string location, string organization, string administratorEmail, Dictionary <string, string> tags, bool enableClientCertificate, PsApiManagementSku sku = PsApiManagementSku.Developer, int?capacity = null, PsApiManagementVpnType vpnType = PsApiManagementVpnType.None, PsApiManagementVirtualNetwork virtualNetwork = null, PsApiManagementRegion[] additionalRegions = null, PsApiManagementCustomHostNameConfiguration[] customHostnameConfigurations = null, PsApiManagementSystemCertificate[] systemCertificates = null, PsApiManagementSslSetting sslSettings = null, bool createSystemResourceIdentity = false, string[] userAssignedIdentity = null, string[] zone = null, bool?disableGateway = null, string minimalControlPlaneApiVersion = null, string publicNetworkAccess = null, string publicIpAddressId = null) { string skuType = Mappers.MapSku(sku); if (capacity == null) { capacity = (sku == PsApiManagementSku.Consumption ? 0 : 1); } var skuProperties = new ApiManagementServiceSkuProperties(skuType, capacity.Value); var parameters = new ApiManagementServiceResource { Location = location, PublisherEmail = administratorEmail, PublisherName = organization, VirtualNetworkType = Mappers.MapVirtualNetworkType(vpnType), Sku = skuProperties, Tags = tags }; if (virtualNetwork != null) { parameters.VirtualNetworkConfiguration = new VirtualNetworkConfiguration { SubnetResourceId = virtualNetwork.SubnetResourceId }; } if (additionalRegions != null && additionalRegions.Any()) { parameters.AdditionalLocations = additionalRegions .Select(region => region.GetAdditionalLocation()) .ToList(); } if (customHostnameConfigurations != null) { parameters.HostnameConfigurations = BuildHostNameConfiguration(customHostnameConfigurations); } if (systemCertificates != null) { parameters.Certificates = new List <CertificateConfiguration>(); foreach (var systemCertificate in systemCertificates) { var certificateConfig = systemCertificate.GetCertificateConfiguration(); parameters.Certificates.Add(certificateConfig); } } if (sslSettings != null) { parameters.CustomProperties = Mappers.MapPsApiManagementSslSetting(sslSettings); } if (enableClientCertificate) { parameters.EnableClientCertificate = enableClientCertificate; } if (zone != null) { parameters.Zones = zone; } if (disableGateway != null && disableGateway.HasValue) { parameters.DisableGateway = disableGateway.Value; } if (!string.IsNullOrWhiteSpace(minimalControlPlaneApiVersion)) { parameters.ApiVersionConstraint = new ApiVersionConstraint() { MinApiVersion = minimalControlPlaneApiVersion }; } if (publicIpAddressId != null) { parameters.PublicIpAddressId = publicIpAddressId; } if (publicNetworkAccess != null) { parameters.PublicNetworkAccess = publicNetworkAccess; } parameters.Identity = Mappers.MapAssignedIdentity(createSystemResourceIdentity, userAssignedIdentity); var apiManagementResource = Client.ApiManagementService.CreateOrUpdate(resourceGroupName, serviceName, parameters); return(new PsApiManagement(apiManagementResource)); }