示例#1
0
        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
                }));
            }
        }
示例#2
0
        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)));
            }
        }
示例#3
0
        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);
            }
        }
示例#6
0
        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));
        }
示例#7
0
        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));
        }
示例#8
0
        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));
        }
示例#9
0
        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);
        }
示例#14
0
        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);
        }
示例#15
0
        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);
        }
示例#16
0
        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));
        }