Beispiel #1
0
        /// <summary>
        /// Checks whether given SignalR name is available.
        /// </summary>
        /// <param name="resourceGroup"></param>
        /// <param name="signalRName"></param>
        /// <param name="cancellationToken"></param>
        /// <returns>True if name is available, False otherwise.</returns>
        public async Task <bool> CheckNameAvailabilityAsync(
            IResourceGroup resourceGroup,
            string signalRName,
            CancellationToken cancellationToken = default
            )
        {
            try {
                var parameters = new NameAvailabilityParameters {
                    Type = "Microsoft.SignalRService/SignalR",
                    Name = signalRName
                };

                var nameAvailability = await _signalRManagementClient
                                       .SignalR
                                       .CheckNameAvailabilityAsync(
                    resourceGroup.RegionName,
                    parameters,
                    cancellationToken
                    );

                if (!nameAvailability.NameAvailable.HasValue)
                {
                    throw new Exception($"Failed to check SignalR Service name availability for {signalRName}");
                }

                return(nameAvailability.NameAvailable.Value);
            }
            catch (Exception ex) {
                Log.Error(ex, $"Failed to check SignalR Service name availability for {signalRName}");
                throw;
            }
        }
Beispiel #2
0
        public static async Task CreateSignalRServiceIfNotExists(this ISignalRManagementClient managementClient, ILogger logger, AppySignalRParameters parameters)
        {
            logger.Info($"Creating SignalR Service with name {parameters.ServiceName} in group {parameters.ResourceGroupName}");
            var locationName           = parameters.ServiceRegion.Name;
            var nameAvailabilityParams = new NameAvailabilityParameters(SignalRResourceType, parameters.ServiceName);
            var availability           = await managementClient.SignalR.CheckNameAvailabilityAsync(locationName, nameAvailabilityParams);

            if (availability.NameAvailable == false)
            {
                logger.Info($"SignalR Service with name {parameters.ServiceName} already exists in group {parameters.ResourceGroupName}");
                // TODO (compare parameters and update with CreateOrUpdateAsync)
                return;
            }

            var tags = new Dictionary <string, string>
            {
                { "description", parameters.Description },
            };
            var createParameters = new SignalRCreateParameters
            {
                Location = locationName,
                Sku      = parameters.ResourceSku,
                Tags     = tags
            };
            await managementClient.SignalR.CreateOrUpdateAsync(parameters.ResourceGroupName, parameters.ServiceName, createParameters);

            logger.Info($"Created SignalR Service with name {parameters.ServiceName} in group {parameters.ResourceGroupName}");
        }
Beispiel #3
0
 public virtual Response <NameAvailability> CheckNameAvailability(NameAvailabilityParameters nameAvailabilityParameters = null, CancellationToken cancellationToken = default)
 {
     using var scope = _clientDiagnostics.CreateScope("CommunicationServiceOperations.CheckNameAvailability");
     scope.Start();
     try
     {
         return(RestClient.CheckNameAvailability(nameAvailabilityParameters, cancellationToken));
     }
     catch (Exception e)
     {
         scope.Failed(e);
         throw;
     }
 }
Beispiel #4
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            RunCmdlet(() =>
            {
                var parameters = new NameAvailabilityParameters(
                    type: NameAvailabilityType,
                    name: Name);

                var availability = Client.SignalR.CheckNameAvailability(Location, parameters);
                bool result      = (bool)availability.NameAvailable;
                WriteObject(result);
            });
        }
        /// <summary>
        /// Checks whether given SignalR name is available.
        /// </summary>
        /// <param name="resourceGroup"></param>
        /// <param name="signalRName"></param>
        /// <param name="cancellationToken"></param>
        /// <returns>True if name is available, False otherwise.</returns>
        /// <exception cref="Microsoft.Rest.Azure.CloudException"></exception>
        public async Task <bool> CheckNameAvailabilityAsync(
            IResourceGroup resourceGroup,
            string signalRName,
            CancellationToken cancellationToken = default
            )
        {
            if (resourceGroup is null)
            {
                throw new ArgumentNullException(nameof(resourceGroup));
            }
            if (string.IsNullOrEmpty(signalRName))
            {
                throw new ArgumentNullException(nameof(signalRName));
            }

            try {
                var parameters = new NameAvailabilityParameters {
                    Type = "Microsoft.SignalRService/SignalR",
                    Name = signalRName
                };

                var nameAvailability = await _signalRManagementClient
                                       .SignalR
                                       .CheckNameAvailabilityAsync(
                    resourceGroup.RegionName,
                    parameters,
                    cancellationToken
                    );

                if (nameAvailability.NameAvailable.HasValue)
                {
                    return(nameAvailability.NameAvailable.Value);
                }
            }
            catch (Microsoft.Rest.Azure.CloudException) {
                // Will be thrown if there is no registered resource provider
                // found for specified location and/or api version to perform
                // name availability check.
                throw;
            }
            catch (Exception ex) {
                Log.Error(ex, $"Failed to check SignalR Service name availability for {signalRName}");
                throw;
            }

            throw new Exception($"Failed to check SignalR Service name availability for {signalRName}");
        }
Beispiel #6
0
        public static async Task DeleteSignalRServiceResources(this ISignalRManagementClient managementClient, ILogger logger, AppySignalRParameters parameters)
        {
            logger.Info($"Deleting SignalR Service with name {parameters.ServiceName} in group {parameters.ResourceGroupName}");
            var locationName           = Region.EuropeNorth.Name;
            var nameAvailabilityParams = new NameAvailabilityParameters(SignalRResourceType, parameters.ServiceName);
            var availability           = await managementClient.SignalR.CheckNameAvailabilityAsync(locationName, nameAvailabilityParams);

            if (availability.NameAvailable == true)
            {
                logger.Info($"SignalR Service with name {parameters.ServiceName} not exists in group {parameters.ResourceGroupName}");
                return;
            }

            await managementClient.SignalR.DeleteAsync(parameters.ResourceGroupName, parameters.ServiceName);

            logger.Info($"Deleted SignalR Service with name {parameters.ServiceName} in group {parameters.ResourceGroupName}");
        }
Beispiel #7
0
 /// <summary>
 /// Checks that the resource name is valid and is not already in use.
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='location'>
 /// the region
 /// </param>
 /// <param name='availabilityParameters'>
 /// Parameters supplied to the operation.
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <NameAvailability> CheckNameAvailabilityAsync(this IServicesOperations operations, string location, NameAvailabilityParameters availabilityParameters, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.CheckNameAvailabilityWithHttpMessagesAsync(location, availabilityParameters, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
Beispiel #8
0
 /// <summary>
 /// Checks that the resource name is valid and is not already in use.
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='location'>
 /// the region
 /// </param>
 /// <param name='availabilityParameters'>
 /// Parameters supplied to the operation.
 /// </param>
 public static NameAvailability CheckNameAvailability(this IServicesOperations operations, string location, NameAvailabilityParameters availabilityParameters)
 {
     return(operations.CheckNameAvailabilityAsync(location, availabilityParameters).GetAwaiter().GetResult());
 }
Beispiel #9
0
        public static Response <NameAvailability> CheckNameAvailabilityWebPubSub(this Subscription subscription, string location, NameAvailabilityParameters parameters, CancellationToken cancellationToken = default)
        {
            if (location == null)
            {
                throw new ArgumentNullException(nameof(location));
            }
            if (parameters == null)
            {
                throw new ArgumentNullException(nameof(parameters));
            }

            return(subscription.UseClientContext((baseUri, credential, options, pipeline) =>
            {
                var clientDiagnostics = new ClientDiagnostics(options);
                using var scope = clientDiagnostics.CreateScope("SubscriptionExtensions.CheckNameAvailabilityWebPubSub");
                scope.Start();
                try
                {
                    var restOperations = GetWebPubSubRestOperations(clientDiagnostics, credential, options, pipeline, baseUri);
                    var response = restOperations.CheckNameAvailability(subscription.Id.SubscriptionId, location, parameters, cancellationToken);
                    return response;
                }
                catch (Exception e)
                {
                    scope.Failed(e);
                    throw;
                }
            }
                                                 ));
        }
Beispiel #10
0
        public virtual Response <NameAvailability> CheckWebPubSubNameAvailability(string location, NameAvailabilityParameters parameters, CancellationToken cancellationToken = default)
        {
            Argument.AssertNotNullOrEmpty(location, nameof(location));
            if (parameters == null)
            {
                throw new ArgumentNullException(nameof(parameters));
            }

            using var scope = WebPubSubClientDiagnostics.CreateScope("SubscriptionExtensionClient.CheckWebPubSubNameAvailability");
            scope.Start();
            try
            {
                var response = WebPubSubRestClient.CheckNameAvailability(Id.SubscriptionId, location, parameters, cancellationToken);
                return(response);
            }
            catch (Exception e)
            {
                scope.Failed(e);
                throw;
            }
        }
Beispiel #11
0
 public virtual Response <NameAvailability> CheckWebPubSubNameAvailability(string location, NameAvailabilityParameters parameters, CancellationToken cancellationToken = default)
 {
     using var scope = WebPubSubClientDiagnostics.CreateScope("SubscriptionResourceExtensionClient.CheckWebPubSubNameAvailability");
     scope.Start();
     try
     {
         var response = WebPubSubRestClient.CheckNameAvailability(Id.SubscriptionId, location, parameters, cancellationToken);
         return(response);
     }
     catch (Exception e)
     {
         scope.Failed(e);
         throw;
     }
 }
Beispiel #12
0
        public async virtual Task <Response <NameAvailability> > CheckWebPubSubNameAvailabilityAsync(string location, NameAvailabilityParameters parameters, CancellationToken cancellationToken = default)
        {
            using var scope = WebPubSubClientDiagnostics.CreateScope("SubscriptionExtensionClient.CheckWebPubSubNameAvailability");
            scope.Start();
            try
            {
                var response = await WebPubSubRestClient.CheckNameAvailabilityAsync(Id.SubscriptionId, location, parameters, cancellationToken).ConfigureAwait(false);

                return(response);
            }
            catch (Exception e)
            {
                scope.Failed(e);
                throw;
            }
        }
        public static Response <NameAvailability> CheckWebPubSubNameAvailability(this SubscriptionResource subscriptionResource, string location, NameAvailabilityParameters parameters, CancellationToken cancellationToken = default)
        {
            Argument.AssertNotNullOrEmpty(location, nameof(location));
            Argument.AssertNotNull(parameters, nameof(parameters));

            return(GetExtensionClient(subscriptionResource).CheckWebPubSubNameAvailability(location, parameters, cancellationToken));
        }
Beispiel #14
0
 public static async Task <Response <NameAvailability> > CheckWebPubSubNameAvailabilityAsync(this Subscription subscription, string location, NameAvailabilityParameters parameters, CancellationToken cancellationToken = default)
 {
     return(await GetExtensionClient(subscription).CheckWebPubSubNameAvailabilityAsync(location, parameters, cancellationToken).ConfigureAwait(false));
 }
Beispiel #15
0
 /// <summary>
 /// Checks that the SignalR name is valid and is not already in use.
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='location'>
 /// the region
 /// </param>
 /// <param name='parameters'>
 /// Parameters supplied to the operation.
 /// </param>
 public static NameAvailability CheckNameAvailability(this ISignalROperations operations, string location, NameAvailabilityParameters parameters = default(NameAvailabilityParameters))
 {
     return(operations.CheckNameAvailabilityAsync(location, parameters).GetAwaiter().GetResult());
 }
Beispiel #16
0
 public static Response <NameAvailability> CheckWebPubSubNameAvailability(this Subscription subscription, string location, NameAvailabilityParameters parameters, CancellationToken cancellationToken = default)
 {
     return(GetExtensionClient(subscription).CheckWebPubSubNameAvailability(location, parameters, cancellationToken));
 }
Beispiel #17
0
        public async static Task <Response <NameAvailability> > CheckWebPubSubNameAvailabilityAsync(this Subscription subscription, string location, NameAvailabilityParameters parameters, CancellationToken cancellationToken = default)
        {
            Argument.AssertNotNullOrEmpty(location, nameof(location));
            Argument.AssertNotNull(parameters, nameof(parameters));

            return(await GetExtensionClient(subscription).CheckWebPubSubNameAvailabilityAsync(location, parameters, cancellationToken).ConfigureAwait(false));
        }