private void ValidateService( ApiManagementServiceResource service, string expectedServiceName, string expectedResourceGroupName, string expectedSubId, string expectedLocation, string expectedPublisherEmail, string expectedPublisherName, string expectedSkuName, Dictionary <string, string> expectedTags) { Assert.NotNull(service); string resourceIdFormat = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.ApiManagement/service/{2}"; string expectedResourceId = string.Format(resourceIdFormat, expectedSubId, expectedResourceGroupName, expectedServiceName); Assert.Equal(expectedResourceId, service.Id); Assert.Equal(expectedLocation, service.Location); Assert.Equal(expectedSkuName, service.Sku.Name, true); Assert.Equal(expectedServiceName, service.Name); Assert.True(expectedTags.DictionaryEqual(service.Tags)); Assert.NotNull(service.GatewayUrl); // No Portal, Management URL and SCM endpoint for Consumption SKU. if (service.Sku.Name != SkuType.Consumption) { Assert.NotNull(service.PortalUrl); Assert.NotNull(service.ManagementApiUrl); Assert.NotNull(service.DeveloperPortalUrl); Assert.NotNull(service.ScmUrl); Assert.NotNull(service.PublicIPAddresses); } Assert.Equal(expectedPublisherName, service.PublisherName); Assert.Equal(expectedPublisherEmail, service.PublisherEmail); }
public PsApiManagement SetApiManagementService( PsApiManagement apiManagement, bool createSystemResourceIdentity, string[] userAssignedIdentity) { ApiManagementServiceResource apiManagementParameters = Mappers.MapPsApiManagement(apiManagement); apiManagementParameters.Identity = Mappers.MapAssignedIdentity(createSystemResourceIdentity, userAssignedIdentity); var apiManagementService = Client.ApiManagementService.CreateOrUpdate( apiManagement.ResourceGroupName, apiManagement.Name, apiManagementParameters); return(new PsApiManagement(apiManagementService)); }
public PsApiManagement SetApiManagementService( PsApiManagement apiManagement, bool createResourceIdentity) { ApiManagementServiceResource apiManagementParameters = Mappers.MapPsApiManagement(apiManagement); if (createResourceIdentity) { apiManagementParameters.Identity = new ApiManagementServiceIdentity(); } var apiManagementService = Client.ApiManagementService.CreateOrUpdate( apiManagement.ResourceGroupName, apiManagement.Name, apiManagementParameters); return(new PsApiManagement(apiManagementService)); }
private void ValidateService( ApiManagementServiceResource service, string expectedServiceName, string expectedResourceGroupName, string expectedSubId, string expectedLocation, string expectedPublisherEmail, string expectedPublisherName, string expectedSkuName, Dictionary <string, string> expectedTags, string platformVersion) { Assert.NotNull(service); string resourceIdFormat = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.ApiManagement/service/{2}"; string expectedResourceId = string.Format(resourceIdFormat, expectedSubId, expectedResourceGroupName, expectedServiceName); Assert.Equal(expectedResourceId, service.Id); Assert.Equal(expectedLocation.ToLowerAndRemoveWhiteSpaces(), service.Location.ToLowerAndRemoveWhiteSpaces()); Assert.Equal(expectedSkuName, service.Sku.Name, true); Assert.Equal(expectedServiceName, service.Name); Assert.True(expectedTags.DictionaryEqual(service.Tags)); Assert.NotNull(service.GatewayUrl); // No Portal, Management URL and SCM endpoint for Consumption SKU. if (service.Sku.Name != SkuType.Consumption) { Assert.NotNull(service.PortalUrl); Assert.NotNull(service.ManagementApiUrl); Assert.NotNull(service.DeveloperPortalUrl); Assert.NotNull(service.ScmUrl); Assert.NotNull(service.PublicIPAddresses); } Assert.Equal(expectedPublisherName, service.PublisherName); Assert.Equal(expectedPublisherEmail, service.PublisherEmail); Assert.Equal(platformVersion, service.PlatformVersion); Assert.Equal("Enabled", service.PublicNetworkAccess); Assert.NotNull(service.SystemData); Assert.NotNull(service.SystemData.CreatedAt); Assert.NotNull(service.SystemData.CreatedBy); Assert.Equal("Application", service.SystemData.CreatedByType); Assert.NotNull(service.SystemData.LastModifiedAt); Assert.NotNull(service.SystemData.LastModifiedBy); Assert.Equal("Application", service.SystemData.LastModifiedByType); }
public PsApiManagement GetApiManagement(string resourceGroupName, string serviceName) { ApiManagementServiceResource response = Client.ApiManagementService.Get(resourceGroupName, serviceName); return(new PsApiManagement(response)); }
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)); }
/// <summary> /// Creates or updates an API Management service. This is long running /// operation and could take several minutes to complete. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The name of the resource group. /// </param> /// <param name='serviceName'> /// The name of the API Management service. /// </param> /// <param name='parameters'> /// Parameters supplied to the CreateOrUpdate API Management service operation. /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task <ApiManagementServiceResource> BeginCreateOrUpdateAsync(this IApiManagementServiceOperations operations, string resourceGroupName, string serviceName, ApiManagementServiceResource parameters, CancellationToken cancellationToken = default(CancellationToken)) { using (var _result = await operations.BeginCreateOrUpdateWithHttpMessagesAsync(resourceGroupName, serviceName, parameters, null, cancellationToken).ConfigureAwait(false)) { return(_result.Body); } }
/// <summary> /// Creates or updates an API Management service. This is long running /// operation and could take several minutes to complete. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The name of the resource group. /// </param> /// <param name='serviceName'> /// The name of the API Management service. /// </param> /// <param name='parameters'> /// Parameters supplied to the CreateOrUpdate API Management service operation. /// </param> public static ApiManagementServiceResource BeginCreateOrUpdate(this IApiManagementServiceOperations operations, string resourceGroupName, string serviceName, ApiManagementServiceResource parameters) { return(operations.BeginCreateOrUpdateAsync(resourceGroupName, serviceName, parameters).GetAwaiter().GetResult()); }
private void Initialize() { var testEnv = TestEnvironmentFactory.GetTestEnvironment(); if (HttpMockServer.Mode == HttpRecorderMode.Record) { if (!testEnv.ConnectionString.KeyValuePairs.TryGetValue(ServiceNameKey, out string apimServiceName)) { this.serviceName = TestUtilities.GenerateName("sdktestapim"); } else { this.serviceName = apimServiceName; } if (!testEnv.ConnectionString.KeyValuePairs.TryGetValue(LocationKey, out string apimLocation)) { this.location = GetLocation(); } else { this.location = apimLocation; } if (!testEnv.ConnectionString.KeyValuePairs.TryGetValue(ResourceGroupNameKey, out string resourceGroupName)) { rgName = TestUtilities.GenerateName("sdktestrg"); resourcesClient.ResourceGroups.CreateOrUpdate(rgName, new ResourceGroup { Location = this.location }); } else { this.rgName = resourceGroupName; } if (testEnv.ConnectionString.KeyValuePairs.TryGetValue(TestCertificateKey, out string base64EncodedCertificate)) { this.base64EncodedTestCertificateData = base64EncodedCertificate; HttpMockServer.Variables[TestCertificateKey] = base64EncodedTestCertificateData; } if (testEnv.ConnectionString.KeyValuePairs.TryGetValue(TestCertificatePasswordKey, out string testCertificatePassword)) { this.testCertificatePassword = testCertificatePassword; HttpMockServer.Variables[TestCertificatePasswordKey] = testCertificatePassword; } this.subscriptionId = testEnv.SubscriptionId; HttpMockServer.Variables[SubIdKey] = subscriptionId; HttpMockServer.Variables[ServiceNameKey] = this.serviceName; HttpMockServer.Variables[LocationKey] = this.location; HttpMockServer.Variables[ResourceGroupNameKey] = this.rgName; } else if (HttpMockServer.Mode == HttpRecorderMode.Playback) { this.subscriptionId = testEnv.SubscriptionId; subscriptionId = HttpMockServer.Variables[SubIdKey]; rgName = HttpMockServer.Variables[ResourceGroupNameKey]; serviceName = HttpMockServer.Variables[ServiceNameKey]; location = HttpMockServer.Variables[LocationKey]; HttpMockServer.Variables.TryGetValue(TestCertificateKey, out var testcertificate); if (!string.IsNullOrEmpty(testcertificate)) { this.base64EncodedTestCertificateData = testcertificate; } HttpMockServer.Variables.TryGetValue(TestCertificatePasswordKey, out var testCertificatePwd); if (!string.IsNullOrEmpty(testCertificatePwd)) { this.testCertificatePassword = testCertificatePwd; } } tags = new Dictionary <string, string> { { "tag1", "value1" }, { "tag2", "value2" }, { "tag3", "value3" } }; serviceProperties = new ApiManagementServiceResource { Sku = new ApiManagementServiceSkuProperties { Name = SkuType.Developer, Capacity = 1 }, Location = location, PublisherEmail = "*****@*****.**", PublisherName = "autorestsdk", Tags = tags }; }
public PsApiManagement(ApiManagementServiceResource apiServiceResource) : this() { if (apiServiceResource == null) { throw new ArgumentNullException("apiServiceResource"); } Id = apiServiceResource.Id; Name = apiServiceResource.Name; Location = apiServiceResource.Location; Sku = ApiManagementClient.Mapper.Map <string, PsApiManagementSku>(apiServiceResource.Sku.Name); Capacity = apiServiceResource.Sku.Capacity ?? 1; CreatedTimeUtc = apiServiceResource.CreatedAtUtc; PublisherEmail = apiServiceResource.PublisherEmail; OrganizationName = apiServiceResource.PublisherName; NotificationSenderEmail = apiServiceResource.NotificationSenderEmail; ProvisioningState = apiServiceResource.ProvisioningState; RuntimeUrl = apiServiceResource.GatewayUrl; RuntimeRegionalUrl = apiServiceResource.GatewayRegionalUrl; PortalUrl = apiServiceResource.PortalUrl; DeveloperPortalUrl = apiServiceResource.DeveloperPortalUrl; ManagementApiUrl = apiServiceResource.ManagementApiUrl; ScmUrl = apiServiceResource.ScmUrl; PublicIPAddresses = apiServiceResource.PublicIPAddresses != null?apiServiceResource.PublicIPAddresses.ToArray() : null; PrivateIPAddresses = apiServiceResource.PrivateIPAddresses != null?apiServiceResource.PrivateIPAddresses.ToArray() : null; EnableClientCertificate = apiServiceResource.EnableClientCertificate; VpnType = ApiManagementClient.Mapper.Map <string, PsApiManagementVpnType>(apiServiceResource.VirtualNetworkType); if (apiServiceResource.AdditionalLocations != null) { AdditionalRegions = apiServiceResource.AdditionalLocations .Select(region => new PsApiManagementRegion(region)) .ToList(); } if (apiServiceResource.VirtualNetworkConfiguration != null) { VirtualNetwork = new PsApiManagementVirtualNetwork(apiServiceResource.VirtualNetworkConfiguration); } if (apiServiceResource.HostnameConfigurations != null && apiServiceResource.HostnameConfigurations.Any()) { var portalHostnameResource = apiServiceResource.HostnameConfigurations.FirstOrDefault(conf => conf.Type == HostnameType.Portal); if (portalHostnameResource != null) { PortalCustomHostnameConfiguration = new PsApiManagementCustomHostNameConfiguration(portalHostnameResource); } var proxyHostnameResources = apiServiceResource.HostnameConfigurations.Where(conf => conf.Type == HostnameType.Proxy); if (proxyHostnameResources != null && proxyHostnameResources.Any()) { var proxyCustomHostnameResources = new List <PsApiManagementCustomHostNameConfiguration>(); foreach (var proxyHostNameResource in proxyHostnameResources) { proxyCustomHostnameResources.Add(new PsApiManagementCustomHostNameConfiguration(proxyHostNameResource)); } ProxyCustomHostnameConfiguration = proxyCustomHostnameResources.ToArray(); } var managementHostnameResource = apiServiceResource.HostnameConfigurations.FirstOrDefault(conf => conf.Type == HostnameType.Management); if (managementHostnameResource != null) { ManagementCustomHostnameConfiguration = new PsApiManagementCustomHostNameConfiguration(managementHostnameResource); } var scmHostnameResource = apiServiceResource.HostnameConfigurations.FirstOrDefault(conf => conf.Type == HostnameType.Scm); if (scmHostnameResource != null) { ScmCustomHostnameConfiguration = new PsApiManagementCustomHostNameConfiguration(scmHostnameResource); } var developerPortalResource = apiServiceResource.HostnameConfigurations.FirstOrDefault(conf => conf.Type == HostnameType.DeveloperPortal); if (developerPortalResource != null) { DeveloperPortalHostnameConfiguration = new PsApiManagementCustomHostNameConfiguration(developerPortalResource); } } if (apiServiceResource.Certificates != null && apiServiceResource.Certificates.Any()) { var systemCertificates = new List <PsApiManagementSystemCertificate>(); foreach (var certificate in apiServiceResource.Certificates) { systemCertificates.Add(new PsApiManagementSystemCertificate(certificate)); } SystemCertificates = systemCertificates.ToArray(); } // prepare the SSL settings if (apiServiceResource.CustomProperties != null && apiServiceResource.CustomProperties.Any()) { SslSetting = new PsApiManagementSslSetting(apiServiceResource.CustomProperties); } if (apiServiceResource.Tags != null) { Tags = apiServiceResource.Tags; } if (apiServiceResource.Identity != null) { this.Identity = new PsApiManagementServiceIdentity(apiServiceResource.Identity); } }
public static ApiManagementServiceResource MapPsApiManagement(PsApiManagement apiManagement) { var parameters = new ApiManagementServiceResource { Location = apiManagement.Location, PublisherEmail = apiManagement.PublisherEmail, PublisherName = apiManagement.OrganizationName, NotificationSenderEmail = apiManagement.NotificationSenderEmail, VirtualNetworkType = MapVirtualNetworkType(apiManagement.VpnType), Sku = new ApiManagementServiceSkuProperties { Capacity = apiManagement.Capacity, Name = MapSku(apiManagement.Sku) }, Tags = apiManagement.Tags, EnableClientCertificate = apiManagement.EnableClientCertificate, Zones = apiManagement.Zone, DisableGateway = apiManagement.DisableGateway, PublicNetworkAccess = apiManagement.PublicNetworkAccess }; if (apiManagement.VirtualNetwork != null) { parameters.VirtualNetworkConfiguration = new VirtualNetworkConfiguration { SubnetResourceId = apiManagement.VirtualNetwork.SubnetResourceId }; parameters.PublicIpAddressId = apiManagement.PublicIpAddressId; } if (apiManagement.AdditionalRegions != null && apiManagement.AdditionalRegions.Any()) { parameters.AdditionalLocations = apiManagement.AdditionalRegions .Select(region => new AdditionalLocation { Location = region.Location, Sku = new ApiManagementServiceSkuProperties() { Name = MapSku(region.Sku), Capacity = region.Capacity }, VirtualNetworkConfiguration = region.VirtualNetwork == null ? null : new VirtualNetworkConfiguration { SubnetResourceId = region.VirtualNetwork.SubnetResourceId }, Zones = region.Zone, DisableGateway = region.DisableGateway, PublicIpAddressId = region.PublicIpAddressId }) .ToList(); } if (apiManagement.ProxyCustomHostnameConfiguration != null || apiManagement.PortalCustomHostnameConfiguration != null || apiManagement.ManagementCustomHostnameConfiguration != null || apiManagement.ScmCustomHostnameConfiguration != null || apiManagement.DeveloperPortalHostnameConfiguration != null) { parameters.HostnameConfigurations = new List <HostnameConfiguration>(); if (apiManagement.ProxyCustomHostnameConfiguration != null) { foreach (var proxyCustomHostnameConfiguration in apiManagement.ProxyCustomHostnameConfiguration) { parameters.HostnameConfigurations.Add(proxyCustomHostnameConfiguration.GetHostnameConfiguration()); } } if (apiManagement.PortalCustomHostnameConfiguration != null) { parameters.HostnameConfigurations.Add(apiManagement.PortalCustomHostnameConfiguration.GetHostnameConfiguration()); } if (apiManagement.DeveloperPortalHostnameConfiguration != null) { parameters.HostnameConfigurations.Add(apiManagement.DeveloperPortalHostnameConfiguration.GetHostnameConfiguration()); } if (apiManagement.ManagementCustomHostnameConfiguration != null) { parameters.HostnameConfigurations.Add(apiManagement.ManagementCustomHostnameConfiguration.GetHostnameConfiguration()); } if (apiManagement.ScmCustomHostnameConfiguration != null) { parameters.HostnameConfigurations.Add(apiManagement.ScmCustomHostnameConfiguration.GetHostnameConfiguration()); } } if (apiManagement.SystemCertificates != null) { parameters.Certificates = new List <CertificateConfiguration>(); foreach (var systemCertificate in apiManagement.SystemCertificates) { parameters.Certificates.Add(systemCertificate.GetCertificateConfiguration()); } } if (!string.IsNullOrWhiteSpace(apiManagement.MinimalControlPlaneApiVersion)) { parameters.ApiVersionConstraint = new ApiVersionConstraint() { MinApiVersion = apiManagement.MinimalControlPlaneApiVersion }; } if (apiManagement.Identity != null) { parameters.Identity = MapPsApiManagementIdentity(apiManagement.Identity); } parameters.CustomProperties = MapPsApiManagementSslSetting(apiManagement.SslSetting); return(parameters); }
public static ApiManagementServiceResource MapPsApiManagement(PsApiManagement apiManagement) { var parameters = new ApiManagementServiceResource { Location = apiManagement.Location, PublisherEmail = apiManagement.PublisherEmail, PublisherName = apiManagement.OrganizationName, NotificationSenderEmail = apiManagement.NotificationSenderEmail, VirtualNetworkType = MapVirtualNetworkType(apiManagement.VpnType), Sku = new ApiManagementServiceSkuProperties { Capacity = apiManagement.Capacity, Name = MapSku(apiManagement.Sku) }, Tags = apiManagement.Tags }; if (apiManagement.VirtualNetwork != null) { parameters.VirtualNetworkConfiguration = new VirtualNetworkConfiguration { SubnetResourceId = apiManagement.VirtualNetwork.SubnetResourceId }; } if (apiManagement.AdditionalRegions != null && apiManagement.AdditionalRegions.Any()) { parameters.AdditionalLocations = apiManagement.AdditionalRegions .Select(region => new AdditionalLocation { Location = region.Location, Sku = new ApiManagementServiceSkuProperties() { Name = MapSku(region.Sku), Capacity = region.Capacity }, VirtualNetworkConfiguration = region.VirtualNetwork == null ? null : new VirtualNetworkConfiguration { SubnetResourceId = region.VirtualNetwork.SubnetResourceId } }) .ToList(); } if (apiManagement.ProxyCustomHostnameConfiguration != null || apiManagement.PortalCustomHostnameConfiguration != null || apiManagement.ManagementCustomHostnameConfiguration != null || apiManagement.ScmCustomHostnameConfiguration != null) { parameters.HostnameConfigurations = new List <HostnameConfiguration>(); if (apiManagement.ProxyCustomHostnameConfiguration != null) { foreach (var proxyCustomHostnameConfiguration in apiManagement.ProxyCustomHostnameConfiguration) { parameters.HostnameConfigurations.Add(proxyCustomHostnameConfiguration.GetHostnameConfiguration()); } } if (apiManagement.PortalCustomHostnameConfiguration != null) { parameters.HostnameConfigurations.Add(apiManagement.PortalCustomHostnameConfiguration.GetHostnameConfiguration()); } if (apiManagement.ManagementCustomHostnameConfiguration != null) { parameters.HostnameConfigurations.Add(apiManagement.ManagementCustomHostnameConfiguration.GetHostnameConfiguration()); } if (apiManagement.ScmCustomHostnameConfiguration != null) { parameters.HostnameConfigurations.Add(apiManagement.ScmCustomHostnameConfiguration.GetHostnameConfiguration()); } } if (apiManagement.SystemCertificates != null) { parameters.Certificates = new List <CertificateConfiguration>(); foreach (var systemCertificate in apiManagement.SystemCertificates) { parameters.Certificates.Add(systemCertificate.GetCertificateConfiguration()); } } if (apiManagement.Identity != null) { parameters.Identity = MapPsApiManagementIdentity(apiManagement.Identity); } return(parameters); }
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)); }
public PsApiManagement(ApiManagementServiceResource apiServiceResource) : this() { if (apiServiceResource == null) { throw new ArgumentNullException("apiServiceResource"); } Id = apiServiceResource.Id; Name = apiServiceResource.Name; Location = apiServiceResource.Location; Sku = ApiManagementClient.Mapper.Map <string, PsApiManagementSku>(apiServiceResource.Sku.Name); Capacity = apiServiceResource.Sku.Capacity ?? 1; PublisherEmail = apiServiceResource.PublisherEmail; OrganizationName = apiServiceResource.PublisherName; NotificationSenderEmail = apiServiceResource.NotificationSenderEmail; ProvisioningState = apiServiceResource.ProvisioningState; RuntimeUrl = apiServiceResource.GatewayUrl; RuntimeRegionalUrl = apiServiceResource.GatewayRegionalUrl; PortalUrl = apiServiceResource.PortalUrl; ManagementApiUrl = apiServiceResource.ManagementApiUrl; ScmUrl = apiServiceResource.ScmUrl; PublicIPAddresses = apiServiceResource.PublicIPAddresses != null?apiServiceResource.PublicIPAddresses.ToArray() : null; PrivateIPAddresses = apiServiceResource.PrivateIPAddresses != null?apiServiceResource.PrivateIPAddresses.ToArray() : null; var staticIPList = new List <string>(); if (apiServiceResource.PublicIPAddresses != null) { staticIPList.AddRange(apiServiceResource.PublicIPAddresses); } if (apiServiceResource.PrivateIPAddresses != null) { staticIPList.AddRange(apiServiceResource.PrivateIPAddresses); } #pragma warning disable CS0618 StaticIPs = staticIPList.ToArray(); #pragma warning restore CS0618 VpnType = ApiManagementClient.Mapper.Map <string, PsApiManagementVpnType>(apiServiceResource.VirtualNetworkType); if (apiServiceResource.AdditionalLocations != null) { AdditionalRegions = apiServiceResource.AdditionalLocations .Select(region => new PsApiManagementRegion(region)) .ToList(); } if (apiServiceResource.VirtualNetworkConfiguration != null) { VirtualNetwork = new PsApiManagementVirtualNetwork(apiServiceResource.VirtualNetworkConfiguration); } if (apiServiceResource.HostnameConfigurations != null && apiServiceResource.HostnameConfigurations.Any()) { var portalHostnameResource = apiServiceResource.HostnameConfigurations.FirstOrDefault(conf => conf.Type == HostnameType.Portal); if (portalHostnameResource != null) { #pragma warning disable CS0618 PortalHostnameConfiguration = new PsApiManagementHostnameConfiguration(portalHostnameResource); #pragma warning restore CS0618 PortalCustomHostnameConfiguration = new PsApiManagementCustomHostNameConfiguration(portalHostnameResource); } var proxyHostnameResources = apiServiceResource.HostnameConfigurations.Where(conf => conf.Type == HostnameType.Proxy); if (proxyHostnameResources != null && proxyHostnameResources.Any()) { #pragma warning disable CS0618 ProxyHostnameConfiguration = new PsApiManagementHostnameConfiguration(proxyHostnameResources.First()); #pragma warning restore CS0618 var proxyCustomHostnameResources = new List <PsApiManagementCustomHostNameConfiguration>(); foreach (var proxyHostNameResource in proxyHostnameResources) { proxyCustomHostnameResources.Add(new PsApiManagementCustomHostNameConfiguration(proxyHostNameResource)); } ProxyCustomHostnameConfiguration = proxyCustomHostnameResources.ToArray(); } var managementHostnameResource = apiServiceResource.HostnameConfigurations.FirstOrDefault(conf => conf.Type == HostnameType.Management); if (managementHostnameResource != null) { #pragma warning disable CS0618 ManagementHostnameConfiguration = new PsApiManagementHostnameConfiguration(managementHostnameResource); #pragma warning restore CS0618 ManagementCustomHostnameConfiguration = new PsApiManagementCustomHostNameConfiguration(managementHostnameResource); } var scmHostnameResource = apiServiceResource.HostnameConfigurations.FirstOrDefault(conf => conf.Type == HostnameType.Scm); if (scmHostnameResource != null) { #pragma warning disable CS0618 ScmHostnameConfiguration = new PsApiManagementHostnameConfiguration(scmHostnameResource); #pragma warning restore CS0618 ScmCustomHostnameConfiguration = new PsApiManagementCustomHostNameConfiguration(scmHostnameResource); } } if (apiServiceResource.Certificates != null && apiServiceResource.Certificates.Any()) { var systemCertificates = new List <PsApiManagementSystemCertificate>(); foreach (var certificate in apiServiceResource.Certificates) { systemCertificates.Add(new PsApiManagementSystemCertificate(certificate)); } SystemCertificates = systemCertificates.ToArray(); } if (apiServiceResource.Tags != null) { Tags = apiServiceResource.Tags; } if (apiServiceResource.Identity != null) { this.Identity = new PsApiManagementServiceIdentity(apiServiceResource.Identity); } }