/// <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; } }
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}"); }
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; } }
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}"); }
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}"); }
/// <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); } }
/// <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()); }
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; } } )); }
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; } }
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; } }
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)); }
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)); }
/// <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()); }
public static Response <NameAvailability> CheckWebPubSubNameAvailability(this Subscription subscription, string location, NameAvailabilityParameters parameters, CancellationToken cancellationToken = default) { return(GetExtensionClient(subscription).CheckWebPubSubNameAvailability(location, parameters, cancellationToken)); }
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)); }