コード例 #1
0
        public ApiManagementLongRunningOperation BeginBackupApiManagement(
            string resourceGroupName,
            string serviceName,
            string storageAccountName,
            string storageAccountKey,
            string backupContainer,
            string backupBlob)
        {
            if (string.IsNullOrWhiteSpace(backupBlob))
            {
                backupBlob = string.Format("{0}-{1:yyyy-MM-dd-HH-mm}.apimbackup", serviceName, DateTime.Now);
            }

            var parameters = new ApiServiceBackupRestoreParameters
            {
                StorageAccount = storageAccountName,
                AccessKey      = storageAccountKey,
                ContainerName  = backupContainer,
                BackupName     = backupBlob
            };

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

            AdjustRetryAfter(longrunningResponse, _client.LongRunningOperationInitialTimeout);
            return(ApiManagementLongRunningOperation.CreateLongRunningOperation("Backup-AzureRmApiManagement", longrunningResponse));
        }
コード例 #2
0
        public ApiManagementLongRunningOperation BeginCreateApiManagementService(
            string resourceGroupName,
            string serviceName,
            string location,
            string organization,
            string administratorEmail,
            PsApiManagementSku sku            = PsApiManagementSku.Developer,
            int capacity                      = 1,
            IDictionary <string, string> tags = null)
        {
            var parameters = new ApiServiceCreateOrUpdateParameters
            {
                Location   = location,
                Properties = new ApiServiceProperties
                {
                    SkuProperties = new ApiServiceSkuProperties
                    {
                        Capacity = capacity,
                        SkuType  = MapSku(sku)
                    },
                    PublisherEmail = administratorEmail,
                    PublisherName  = organization
                },
                Tags = tags
            };

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

            AdjustRetryAfter(longrunningResponse, _client.LongRunningOperationInitialTimeout);
            return(ApiManagementLongRunningOperation.CreateLongRunningOperation("New-AzureRmApiManagement", longrunningResponse));
        }
コード例 #3
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));
        }
コード例 #4
0
        internal ApiManagementLongRunningOperation GetLongRunningOperationStatus(ApiManagementLongRunningOperation longRunningOperation)
        {
            var response =
                Client.ResourceProvider
                .GetApiServiceLongRunningOperationStatusAsync(longRunningOperation.OperationLink)
                .ConfigureAwait(false)
                .GetAwaiter()
                .GetResult();

            AdjustRetryAfter(response, _client.LongRunningOperationInitialTimeout);
            var result = ApiManagementLongRunningOperation.CreateLongRunningOperation(longRunningOperation.OperationName, response);

            return(result);
        }
コード例 #5
0
        protected ApiManagementLongRunningOperation WaitForOperationToComplete(ApiManagementLongRunningOperation longRunningOperation)
        {
            WriteProgress(longRunningOperation);

            while (longRunningOperation.Status == OperationStatus.InProgress)
            {
                var retryAfter = longRunningOperation.RetryAfter ?? LongRunningOperationDefaultTimeout;

                WriteVerboseWithTimestamp(Resources.VerboseGetOperationStateTimeoutMessage, retryAfter);
                Thread.Sleep(retryAfter);

                longRunningOperation = Client.GetLongRunningOperationStatus(longRunningOperation);
                WriteProgress(longRunningOperation);
            }

            return(longRunningOperation);
        }
コード例 #6
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));
        }
コード例 #7
0
        public ApiManagementLongRunningOperation BeginRestoreApiManagement(
            string resourceGroupName,
            string serviceName,
            string storageAccountName,
            string storageAccountKey,
            string backupContainer,
            string backupBlob)
        {
            var parameters = new ApiServiceBackupRestoreParameters
            {
                StorageAccount = storageAccountName,
                AccessKey      = storageAccountKey,
                ContainerName  = backupContainer,
                BackupName     = backupBlob
            };

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

            AdjustRetryAfter(longrunningResponse, _client.LongRunningOperationInitialTimeout);
            return(ApiManagementLongRunningOperation.CreateLongRunningOperation("Restore-AzureRmApiManagement", longrunningResponse));
        }
コード例 #8
0
        public ApiManagementLongRunningOperation BeginManageVirtualNetworks(
            string resourceGroupName,
            string serviceName,
            IList <PsApiManagementVirtualNetwork> virtualNetworks)
        {
            var parameters = new ApiServiceManageVirtualNetworksParameters
            {
                VirtualNetworkConfigurations = (virtualNetworks == null || virtualNetworks.Count == 0)
                    ? null
                    : virtualNetworks.Select(vn =>
                                             new VirtualNetworkConfiguration
                {
                    Location   = vn.Location,
                    SubnetName = vn.SubnetName,
                    VnetId     = vn.VnetId
                }).ToList()
            };

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

            AdjustRetryAfter(longrunningResponse, _client.LongRunningOperationInitialTimeout);
            return(ApiManagementLongRunningOperation.CreateLongRunningOperation("Set-AzureRmApiManagementVirtualNetworks", longrunningResponse));
        }
コード例 #9
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));
        }
コード例 #10
0
        internal ApiManagementLongRunningOperation GetLongRunningOperationStatus(ApiManagementLongRunningOperation longRunningOperation)
        {
            var response =
                Client.ResourceProvider
                    .GetApiServiceLongRunningOperationStatusAsync(longRunningOperation.OperationLink)
                    .ConfigureAwait(false)
                    .GetAwaiter()
                    .GetResult();

            AdjustRetryAfter(response, _client.LongRunningOperationInitialTimeout);
            var result = ApiManagementLongRunningOperation.CreateLongRunningOperation(longRunningOperation.OperationName, response);

            return result;
        }
コード例 #11
0
 protected void WriteProgress(ApiManagementLongRunningOperation operation)
 {
     WriteProgress(new ProgressRecord(0, operation.OperationName, operation.Status.ToString()));
 }