Esempio n. 1
0
        public static string MapVirtualNetworkType(PsApiManagementVpnType vpnType)
        {
            switch (vpnType)
            {
            case PsApiManagementVpnType.External: return(VirtualNetworkType.External);

            case PsApiManagementVpnType.Internal: return(VirtualNetworkType.Internal);

            case PsApiManagementVpnType.None: return(VirtualNetworkType.None);

            default: throw new ArgumentException($"Unrecognized Virtual Network Type '{vpnType.ToString("G")}");
            }
        }
Esempio n. 2
0
        public ApiManagementLongRunningOperation BeginUpdateDeployments(
            string resourceGroupName,
            string serviceName,
            string location,
            PsApiManagementSku sku,
            int capacity,
            PsApiManagementVirtualNetwork vnetConfiguration,
            PsApiManagementVpnType vpnType,
            IList <PsApiManagementRegion> additionalRegions)
        {
            var parameters = new ApiServiceManageDeploymentsParameters(location, MapSku(sku))
            {
                SkuUnitCount = capacity,
                VpnType      = MapVirtualNetworkType(vpnType)
            };

            if (vnetConfiguration != null)
            {
                parameters.VirtualNetworkConfiguration = new VirtualNetworkConfiguration
                {
                    Location         = vnetConfiguration.Location,
                    SubnetResourceId = vnetConfiguration.SubnetResourceId
                };
            }

            if (additionalRegions != null && additionalRegions.Any())
            {
                parameters.AdditionalRegions =
                    additionalRegions
                    .Select(region =>
                            new AdditionalRegion
                {
                    Location     = region.Location,
                    SkuType      = MapSku(region.Sku),
                    SkuUnitCount = region.Capacity,
                    VirtualNetworkConfiguration = region.VirtualNetwork == null
                                    ? null
                                    : new VirtualNetworkConfiguration
                    {
                        Location         = region.VirtualNetwork.Location,
                        SubnetResourceId = region.VirtualNetwork.SubnetResourceId
                    }
                })
                    .ToList();
            }

            var longrunningResponse = Client.ResourceProvider.BeginManagingDeployments(resourceGroupName, serviceName, parameters);

            AdjustRetryAfter(longrunningResponse, _client.LongRunningOperationInitialTimeout);
            return(ApiManagementLongRunningOperation.CreateLongRunningOperation("Update-AzureRmApiManagementDeployment", longrunningResponse));
        }
        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));
        }
Esempio n. 4
0
        public ApiManagementLongRunningOperation BeginCreateApiManagementService(
            string resourceGroupName,
            string serviceName,
            string location,
            string organization,
            string administratorEmail,
            PsApiManagementSku sku                       = PsApiManagementSku.Developer,
            int capacity                                 = 1,
            PsApiManagementVpnType vpnType               = PsApiManagementVpnType.None,
            IDictionary <string, string> tags            = null,
            PsApiManagementVirtualNetwork virtualNetwork = null,
            PsApiManagementRegion[] additionalRegions    = null)
        {
            var parameters = new ApiServiceCreateOrUpdateParameters
            {
                Location   = location,
                Properties = new ApiServiceProperties
                {
                    PublisherEmail = administratorEmail,
                    PublisherName  = organization,
                    VpnType        = MapVirtualNetworkType(vpnType)
                },
                SkuProperties = new ApiServiceSkuProperties
                {
                    Capacity = capacity,
                    SkuType  = MapSku(sku)
                },
                Tags = tags
            };

            if (virtualNetwork != null)
            {
                parameters.Properties.VirtualNetworkConfiguration = new VirtualNetworkConfiguration
                {
                    Location         = virtualNetwork.Location,
                    SubnetResourceId = virtualNetwork.SubnetResourceId
                };
            }

            if (additionalRegions != null && additionalRegions.Any())
            {
                parameters.Properties.AdditionalRegions =
                    additionalRegions
                    .Select(region =>
                            new AdditionalRegion
                {
                    Location     = region.Location,
                    SkuType      = MapSku(region.Sku),
                    SkuUnitCount = region.Capacity,
                    VirtualNetworkConfiguration = region.VirtualNetwork == null
                                    ? null
                                    : new VirtualNetworkConfiguration
                    {
                        Location         = region.VirtualNetwork.Location,
                        SubnetResourceId = region.VirtualNetwork.SubnetResourceId
                    }
                })
                    .ToList();
            }

            var longrunningResponse = Client.ResourceProvider.BeginCreatingOrUpdating(resourceGroupName, serviceName, parameters);

            AdjustRetryAfter(longrunningResponse, _client.LongRunningOperationInitialTimeout);
            return(ApiManagementLongRunningOperation.CreateLongRunningOperation("New-AzureRmApiManagement", longrunningResponse));
        }
Esempio n. 5
0
 private static VirtualNetworkType MapVirtualNetworkType(PsApiManagementVpnType vpnType)
 {
     return(Mapper.Map <PsApiManagementVpnType, VirtualNetworkType>(vpnType));
 }
Esempio n. 6
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));
        }
        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 ApiManagementLongRunningOperation BeginCreateApiManagementService(
            string resourceGroupName,
            string serviceName,
            string location,
            string organization,
            string administratorEmail,
            PsApiManagementSku sku = PsApiManagementSku.Developer,
            int capacity = 1,
            PsApiManagementVpnType vpnType = PsApiManagementVpnType.None,
            IDictionary<string, string> tags = null,
            PsApiManagementVirtualNetwork virtualNetwork = null,
            PsApiManagementRegion[] additionalRegions = null)
        {
            var parameters = new ApiServiceCreateOrUpdateParameters
            {
                Location = location,
                Properties = new ApiServiceProperties
                {
                    PublisherEmail = administratorEmail,
                    PublisherName = organization,
                    VpnType = MapVirtualNetworkType(vpnType)
                },
                SkuProperties = new ApiServiceSkuProperties
                {
                    Capacity = capacity,
                    SkuType = MapSku(sku)
                },
                Tags = tags
            };

            if (virtualNetwork != null)
            {
                parameters.Properties.VirtualNetworkConfiguration = new VirtualNetworkConfiguration
                {
                    Location = virtualNetwork.Location,
                    SubnetResourceId = virtualNetwork.SubnetResourceId
                };
            }
            
            if (additionalRegions != null && additionalRegions.Any())
            {
                parameters.Properties.AdditionalRegions =
                    additionalRegions
                        .Select(region =>
                            new AdditionalRegion
                            {
                                Location = region.Location,
                                SkuType = MapSku(region.Sku),
                                SkuUnitCount = region.Capacity,
                                VirtualNetworkConfiguration = region.VirtualNetwork == null
                                    ? null
                                    : new VirtualNetworkConfiguration
                                    {
                                        Location = region.VirtualNetwork.Location,
                                        SubnetResourceId = region.VirtualNetwork.SubnetResourceId
                                    }
                            })
                        .ToList();
            }

            var longrunningResponse = Client.ResourceProvider.BeginCreatingOrUpdating(resourceGroupName, serviceName, parameters);
            AdjustRetryAfter(longrunningResponse, _client.LongRunningOperationInitialTimeout);
            return ApiManagementLongRunningOperation.CreateLongRunningOperation("New-AzureRmApiManagement", longrunningResponse);
        }
 private static VirtualNetworkType MapVirtualNetworkType(PsApiManagementVpnType vpnType)
 {
     return Mapper.Map<PsApiManagementVpnType, VirtualNetworkType>(vpnType);
 }
        public ApiManagementLongRunningOperation BeginUpdateDeployments(
            string resourceGroupName,
            string serviceName,
            string location,
            PsApiManagementSku sku,
            int capacity,
            PsApiManagementVirtualNetwork vnetConfiguration,
            PsApiManagementVpnType vpnType,
            IList<PsApiManagementRegion> additionalRegions)
        {
            var parameters = new ApiServiceManageDeploymentsParameters(location, MapSku(sku))
            {
                SkuUnitCount = capacity,
                VpnType = MapVirtualNetworkType(vpnType)
            };

            if (vnetConfiguration != null)
            {
                parameters.VirtualNetworkConfiguration = new VirtualNetworkConfiguration
                {
                    Location = vnetConfiguration.Location,
                    SubnetResourceId = vnetConfiguration.SubnetResourceId
                };
            }

            if (additionalRegions != null && additionalRegions.Any())
            {
                parameters.AdditionalRegions =
                    additionalRegions
                        .Select(region =>
                            new AdditionalRegion
                            {
                                Location = region.Location,
                                SkuType = MapSku(region.Sku),
                                SkuUnitCount = region.Capacity,
                                VirtualNetworkConfiguration = region.VirtualNetwork == null
                                    ? null
                                    : new VirtualNetworkConfiguration
                                    {
                                        Location = region.VirtualNetwork.Location,
                                        SubnetResourceId = region.VirtualNetwork.SubnetResourceId
                                    }
                            })
                        .ToList();
            }

            var longrunningResponse = Client.ResourceProvider.BeginManagingDeployments(resourceGroupName, serviceName, parameters);
            AdjustRetryAfter(longrunningResponse, _client.LongRunningOperationInitialTimeout);
            return ApiManagementLongRunningOperation.CreateLongRunningOperation("Update-AzureRmApiManagementDeployment", longrunningResponse);
        }