private static IEnumerable <HostnameConfiguration> GetHostnamesToCreateOrUpdate( PsApiManagementHostnameConfiguration portalHostnameConfiguration, PsApiManagementHostnameConfiguration proxyHostnameConfiguration, PsApiManagement currentState) { if (portalHostnameConfiguration != null) { yield return(new HostnameConfiguration( HostnameType.Portal, portalHostnameConfiguration.Hostname, new CertificateInformation { Thumbprint = portalHostnameConfiguration.HostnameCertificate.Thumbprint, Subject = string.IsNullOrWhiteSpace(portalHostnameConfiguration.HostnameCertificate.Subject) ? "dummy" : portalHostnameConfiguration.HostnameCertificate.Subject })); } if (proxyHostnameConfiguration != null) { yield return(new HostnameConfiguration( HostnameType.Proxy, proxyHostnameConfiguration.Hostname, new CertificateInformation { Thumbprint = proxyHostnameConfiguration.HostnameCertificate.Thumbprint, Subject = string.IsNullOrWhiteSpace(proxyHostnameConfiguration.HostnameCertificate.Subject) ? "dummy" : proxyHostnameConfiguration.HostnameCertificate.Subject })); } }
private static IEnumerable <HostnameConfiguration> GetHostnamesToCreateOrUpdate( PsApiManagementHostnameConfiguration portalHostnameConfiguration, PsApiManagementHostnameConfiguration proxyHostnameConfiguration, PsApiManagement currentState) { if (portalHostnameConfiguration != null && currentState.PortalHostnameConfiguration != null) { yield return(new HostnameConfiguration( HostnameType.Portal, portalHostnameConfiguration.Hostname, new CertificateInformation( portalHostnameConfiguration.HostnameCertificate.Expiry, portalHostnameConfiguration.HostnameCertificate.Thumbprint, portalHostnameConfiguration.HostnameCertificate.Subject))); } if (proxyHostnameConfiguration != null && currentState.ProxyHostnameConfiguration != null) { yield return(new HostnameConfiguration( HostnameType.Proxy, proxyHostnameConfiguration.Hostname, new CertificateInformation( proxyHostnameConfiguration.HostnameCertificate.Expiry, proxyHostnameConfiguration.HostnameCertificate.Thumbprint, proxyHostnameConfiguration.HostnameCertificate.Subject))); } }
private static IEnumerable <HostnameType> GetHostnamesToDelete( PsApiManagementHostnameConfiguration portalHostnameConfiguration, PsApiManagementHostnameConfiguration proxyHostnameConfiguration, PsApiManagement currentState) { if (portalHostnameConfiguration == null && currentState.PortalHostnameConfiguration != null) { yield return(HostnameType.Portal); } if (proxyHostnameConfiguration == null && currentState.ProxyHostnameConfiguration != null) { yield return(HostnameType.Proxy); } }
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 override void ExecuteCmdlet() { if (string.IsNullOrWhiteSpace(AccessType)) { this.AccessType = SdkModels.AccessType.AccessKey; } PsApiManagement apiManagement = null; if (this.AccessType == SdkModels.AccessType.AccessKey) { CloudStorageAccount account = null; if (CloudStorageAccount.TryParse(StorageContext.ConnectionString, out account)) { apiManagement = Client.BackupApiManagement( ResourceGroupName, Name, account.Credentials.AccountName, account.Credentials.ExportBase64EncodedKey(), TargetContainerName, TargetBlobName, AccessType, IdentityClientId); } else { throw new PSArgumentException("Failed to parse the storage connection string.", nameof(StorageContext)); } } else { apiManagement = Client.BackupApiManagement( ResourceGroupName, Name, StorageContext.StorageAccountName, null, TargetContainerName, TargetBlobName, AccessType, IdentityClientId); } if (PassThru.IsPresent && apiManagement != null) { this.WriteObject(apiManagement); } }
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)); }
public PsApiManagement SetHostnames( string resourceGroupName, string serviceName, PsApiManagementHostnameConfiguration portalHostnameConfiguration, PsApiManagementHostnameConfiguration proxyHostnameConfiguration) { var currentStateResource = Client.ApiManagementService.Get(resourceGroupName, serviceName); var currentState = new PsApiManagement(currentStateResource); var parameters = new ApiManagementServiceUpdateHostnameParameters { Delete = GetHostnamesToDelete(portalHostnameConfiguration, proxyHostnameConfiguration, currentState), Update = GetHostnamesToCreateOrUpdate(portalHostnameConfiguration, proxyHostnameConfiguration, currentState).ToList() }; var apiManagementServiceResource = Client.ApiManagementService.UpdateHostname(resourceGroupName, serviceName, parameters); return(new PsApiManagement(apiManagementServiceResource)); }
public ApiManagementLongRunningOperation BeginSetHostnames( string resourceGroupName, string serviceName, PsApiManagementHostnameConfiguration portalHostnameConfiguration, PsApiManagementHostnameConfiguration proxyHostnameConfiguration) { var currentStateResource = Client.ResourceProvider.Get(resourceGroupName, serviceName); var currentState = new PsApiManagement(currentStateResource.Value); var parameters = new ApiServiceUpdateHostnameParameters { HostnamesToDelete = GetHostnamesToDelete(portalHostnameConfiguration, proxyHostnameConfiguration, currentState).ToList(), HostnamesToCreateOrUpdate = GetHostnamesToCreateOrUpdate(portalHostnameConfiguration, proxyHostnameConfiguration, currentState).ToList() }; var longrunningResponse = Client.ResourceProvider.BeginUpdatingHostname(resourceGroupName, serviceName, parameters); AdjustRetryAfter(longrunningResponse, _client.LongRunningOperationInitialTimeout); return(ApiManagementLongRunningOperation.CreateLongRunningOperation("Set-AzureRmApiManagementHostnames", longrunningResponse)); }
private static IList <HostnameType?> GetHostnamesToDelete( PsApiManagementHostnameConfiguration portalHostnameConfiguration, PsApiManagementHostnameConfiguration proxyHostnameConfiguration, PsApiManagement currentState) { var hostnameToDelete = new List <HostnameType?>(); #pragma warning disable CS0618 if (portalHostnameConfiguration == null && currentState.PortalHostnameConfiguration != null) #pragma warning restore CS0618 { hostnameToDelete.Add(HostnameType.Portal); } #pragma warning disable CS0618 if (proxyHostnameConfiguration == null && currentState.ProxyHostnameConfiguration != null) #pragma warning restore CS0618 { hostnameToDelete.Add(HostnameType.Proxy); } return(hostnameToDelete); }
public void TestCtor() { // arrange var resource = new ApiServiceResource { ETag = "etag", Id = "id", Location = "location", Name = "name", Type = "resource type", Tags = new Dictionary <string, string>() { { "tagkey1", "tagvalue1" }, { "tagkey2", "tagvalue2" } }, SkuProperties = new ApiServiceSkuProperties { Capacity = 3, SkuType = SkuType.Premium }, Properties = new ApiServiceProperties { AdditionalRegions = new List <AdditionalRegion>() { new AdditionalRegion { Location = "region location", SkuType = SkuType.Premium, SkuUnitCount = 2, StaticIPs = new List <string>() { "192.168.1.1", "192.168.1.1" }, VirtualNetworkConfiguration = new VirtualNetworkConfiguration { Location = "region vpn location", SubnetResourceId = "region subnet resourceId" } } }, AddresserEmail = "*****@*****.**", CreatedAtUtc = DateTime.UtcNow, CustomProperties = new Dictionary <string, string>() { { "cpkey1", "cpvalue1" }, { "cpkey2", "cpvalue2" } }, HostnameConfigurations = new List <HostnameConfiguration>() { new HostnameConfiguration { Type = HostnameType.Portal, Certificate = new CertificateInformation { Expiry = DateTime.UtcNow.AddDays(5), Subject = "portal cert subject", Thumbprint = "portal cert thumbprint" }, Hostname = "portal hostname" }, new HostnameConfiguration { Type = HostnameType.Proxy, Certificate = new CertificateInformation { Expiry = DateTime.UtcNow.AddDays(10), Subject = "proxy cert subject", Thumbprint = "proxy cert thumbprint" }, Hostname = "proxy hostname" } }, ManagementPortalEndpoint = "http://management.portal.endpoint", ProvisioningState = "Active", ProxyEndpoint = "http://proxy.endpoint", PublisherEmail = "*****@*****.**", PublisherName = "publisher name", StaticIPs = new[] { "192.168.0.1", "192.168.0.2" }, VirtualNetworkConfiguration = new VirtualNetworkConfiguration { Location = "region vpn location", SubnetResourceId = "region subnet resourceId" } } }; // act var result = new PsApiManagement(resource); // assert Assert.Equal(resource.Id, result.Id); Assert.Equal(resource.Location, result.Location); Assert.Equal(resource.Name, result.Name); Assert.Equal(resource.Tags.Count, result.Tags.Count); foreach (var tagKey in resource.Tags.Keys) { Assert.Equal(resource.Tags[tagKey], result.Tags[tagKey]); } Assert.Equal(resource.Properties.AdditionalRegions.Count, result.AdditionalRegions.Count); var resourceRegion = resource.Properties.AdditionalRegions[0]; var resultRegion = result.AdditionalRegions[0]; Assert.Equal(resourceRegion.Location, resultRegion.Location); Assert.Equal(resourceRegion.SkuType.ToString(), resultRegion.Sku.ToString()); Assert.Equal(resourceRegion.SkuUnitCount, resultRegion.Capacity); for (int i = 0; i < resourceRegion.StaticIPs.Count; i++) { Assert.Equal(resourceRegion.StaticIPs[i], resultRegion.StaticIPs[i]); } Assert.Equal(resourceRegion.VirtualNetworkConfiguration.Location, resultRegion.VirtualNetwork.Location); Assert.Equal(resourceRegion.VirtualNetworkConfiguration.SubnetResourceId, resultRegion.VirtualNetwork.SubnetResourceId); var portalHostname = resource.Properties.HostnameConfigurations.Single(h => h.Type == HostnameType.Portal); Assert.Equal(portalHostname.Hostname, result.PortalHostnameConfiguration.Hostname); Assert.Equal(portalHostname.Certificate.Expiry, result.PortalHostnameConfiguration.HostnameCertificate.Expiry); Assert.Equal(portalHostname.Certificate.Subject, result.PortalHostnameConfiguration.HostnameCertificate.Subject); Assert.Equal(portalHostname.Certificate.Thumbprint, result.PortalHostnameConfiguration.HostnameCertificate.Thumbprint); var proxyHostname = resource.Properties.HostnameConfigurations.Single(h => h.Type == HostnameType.Proxy); Assert.Equal(proxyHostname.Hostname, result.ProxyHostnameConfiguration.Hostname); Assert.Equal(proxyHostname.Certificate.Expiry, result.ProxyHostnameConfiguration.HostnameCertificate.Expiry); Assert.Equal(proxyHostname.Certificate.Subject, result.ProxyHostnameConfiguration.HostnameCertificate.Subject); Assert.Equal(proxyHostname.Certificate.Thumbprint, result.ProxyHostnameConfiguration.HostnameCertificate.Thumbprint); Assert.Equal(resource.Properties.VirtualNetworkConfiguration.Location, result.VirtualNetwork.Location); Assert.Equal(resource.Properties.VirtualNetworkConfiguration.SubnetResourceId, result.VirtualNetwork.SubnetResourceId); Assert.Equal(resource.Properties.ManagementPortalEndpoint, result.PortalUrl); Assert.Equal(resource.Properties.ProxyEndpoint, result.RuntimeUrl); Assert.Equal(resource.Properties.ProvisioningState, result.ProvisioningState); Assert.Equal(resource.SkuProperties.SkuType.ToString(), result.Sku.ToString()); Assert.Equal(resource.SkuProperties.Capacity, result.Capacity); }
private static IEnumerable<HostnameType> GetHostnamesToDelete( PsApiManagementHostnameConfiguration portalHostnameConfiguration, PsApiManagementHostnameConfiguration proxyHostnameConfiguration, PsApiManagement currentState) { if (portalHostnameConfiguration == null && currentState.PortalHostnameConfiguration != null) { yield return HostnameType.Portal; } if (proxyHostnameConfiguration == null && currentState.ProxyHostnameConfiguration != null) { yield return HostnameType.Proxy; } }
private static IEnumerable<HostnameConfiguration> GetHostnamesToCreateOrUpdate( PsApiManagementHostnameConfiguration portalHostnameConfiguration, PsApiManagementHostnameConfiguration proxyHostnameConfiguration, PsApiManagement currentState) { if (portalHostnameConfiguration != null) { yield return new HostnameConfiguration( HostnameType.Portal, portalHostnameConfiguration.Hostname, new CertificateInformation { Thumbprint = portalHostnameConfiguration.HostnameCertificate.Thumbprint, Subject = string.IsNullOrWhiteSpace(portalHostnameConfiguration.HostnameCertificate.Subject) ? "dummy" : portalHostnameConfiguration.HostnameCertificate.Subject }); } if (proxyHostnameConfiguration != null) { yield return new HostnameConfiguration( HostnameType.Proxy, proxyHostnameConfiguration.Hostname, new CertificateInformation { Thumbprint = proxyHostnameConfiguration.HostnameCertificate.Thumbprint, Subject = string.IsNullOrWhiteSpace(proxyHostnameConfiguration.HostnameCertificate.Subject) ? "dummy" : proxyHostnameConfiguration.HostnameCertificate.Subject }); } }
public ApiManagementLongRunningOperation BeginSetHostnames( string resourceGroupName, string serviceName, PsApiManagementHostnameConfiguration portalHostnameConfiguration, PsApiManagementHostnameConfiguration proxyHostnameConfiguration) { var currentStateResource = Client.ResourceProvider.Get(resourceGroupName, serviceName); var currentState = new PsApiManagement(currentStateResource.Value); var parameters = new ApiServiceUpdateHostnameParameters { HostnamesToDelete = GetHostnamesToDelete(portalHostnameConfiguration, proxyHostnameConfiguration, currentState).ToList(), HostnamesToCreateOrUpdate = GetHostnamesToCreateOrUpdate(portalHostnameConfiguration, proxyHostnameConfiguration, currentState).ToList() }; var longrunningResponse = Client.ResourceProvider.BeginUpdatingHostname(resourceGroupName, serviceName, parameters); AdjustRetryAfter(longrunningResponse, _client.LongRunningOperationInitialTimeout); return ApiManagementLongRunningOperation.CreateLongRunningOperation("Set-AzureRmApiManagementHostnames", longrunningResponse); }
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 UpdateDeployment( string resourceGroupName, string serviceName, string location, PsApiManagementSku sku, int capacity, PsApiManagementVirtualNetwork vnetConfiguration, PsApiManagementVpnType vpnType, IList <PsApiManagementRegion> additionalRegions, PsApiManagement apiManagement) { ApiManagementServiceResource apiManagementParameters; if (apiManagement != null) { apiManagementParameters = Mappers.MapPsApiManagement(apiManagement); } else { apiManagementParameters = Client.ApiManagementService.Get(resourceGroupName, serviceName); apiManagementParameters.Sku = new ApiManagementServiceSkuProperties() { Name = Mappers.MapSku(sku), Capacity = capacity }; if (vnetConfiguration != null) { apiManagementParameters.VirtualNetworkConfiguration = new VirtualNetworkConfiguration() { SubnetResourceId = vnetConfiguration.SubnetResourceId }; } apiManagementParameters.VirtualNetworkType = Mappers.MapVirtualNetworkType(vpnType); if (additionalRegions != null && additionalRegions.Any()) { apiManagementParameters.AdditionalLocations = new List <AdditionalLocation>(); foreach (var additionalRegion in additionalRegions) { apiManagementParameters.AdditionalLocations.Add(new AdditionalLocation() { Location = additionalRegion.Location, Sku = new ApiManagementServiceSkuProperties() { Name = Mappers.MapSku(additionalRegion.Sku), Capacity = additionalRegion.Capacity }, VirtualNetworkConfiguration = additionalRegion.VirtualNetwork == null ? null : new VirtualNetworkConfiguration() { SubnetResourceId = additionalRegion.VirtualNetwork.SubnetResourceId } }); } } } var apiManagementService = Client.ApiManagementService.CreateOrUpdate(resourceGroupName, serviceName, apiManagementParameters); return(new PsApiManagement(apiManagementService)); }