Esempio n. 1
0
        public static AdditionalLocation GetAdditionalLocation(
            this PsApiManagementRegion region)
        {
            if (region == null)
            {
                return(null);
            }

            var additionalLocation = new AdditionalLocation();

            additionalLocation.Location = region.Location;
            additionalLocation.Sku      = new ApiManagementServiceSkuProperties()
            {
                Name     = Mappers.MapSku(region.Sku),
                Capacity = region.Capacity
            };

            additionalLocation.VirtualNetworkConfiguration = region.VirtualNetwork == null
                ? null
                : new VirtualNetworkConfiguration
            {
                SubnetResourceId = region.VirtualNetwork.SubnetResourceId
            };

            additionalLocation.Zones = region.Zone;

            if (region.DisableGateway != null && region.DisableGateway.HasValue)
            {
                additionalLocation.DisableGateway = region.DisableGateway;
            }

            return(additionalLocation);
        }
        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);
        }