35 writes to Urls
Aspire.Hosting (7)
Dcp\ResourceSnapshotBuilder.cs (3)
70Urls = urls, 208Urls = urls, 230Urls = urls,
Devcontainers\Codespaces\CodespacesResourceUrlRewriterService.cs (1)
62Urls = transformedUrls.ToImmutableArray()
ExternalServiceBuilderExtensions.cs (1)
174Urls = AddUrlIfNotPresent(snapshot.Urls, uri),
Orchestrator\ApplicationOrchestrator.cs (2)
215await _notificationService.PublishUpdateAsync(resource, s => s with { Urls = [.. urls] }).ConfigureAwait(false); 722Urls = [.. urls],
Aspire.Hosting.Azure (5)
AzureProvisioningController.cs (2)
1248Urls = [], 4313Urls = state.Text == KnownResourceStates.NotStarted ? [] : existingState.Urls,
Provisioning\Provisioners\BicepProvisioner.cs (3)
145Urls = [.. portalUrls], 333Urls = [.. state.Urls.Where(static url => !string.Equals(url.Name, DeploymentUrlName, StringComparison.Ordinal)), new(Name: DeploymentUrlName, Url: deploymentUrl, IsInternal: false)], 695Urls = [.. state.Urls, new(Name: DeploymentUrlName, Url: url, IsInternal: false)],
Aspire.Hosting.Azure.EntraId (1)
EntraIdResourceExtensions.cs (1)
257Urls = [.. snapshot.Urls.Where(url => url.Name is not "OpenID Config" and not "Azure Portal"), .. urls],
Aspire.Hosting.Azure.EntraId.Tests (2)
EntraIdInitializationTests.cs (2)
318Urls = [new("docs", "https://contoso.example/docs", IsInternal: false)], 439Urls = [new UrlSnapshot("docs", "https://contoso.example/docs", IsInternal: false)],
Aspire.Hosting.Azure.Functions (1)
DurableTask\DurableTaskResourceExtensions.cs (1)
243Urls = url is not null
Aspire.Hosting.Azure.Tests (4)
AzureEnvironmentResourceExtensionsTests.cs (4)
102Urls = [new("Entra registration", "https://entra.microsoft.com", IsInternal: false)] 638Urls = 2419Urls = [new("deployment", "https://portal.azure.com/storage", false)], 2426Urls = [new("deployment", "https://portal.azure.com/storage2", false)],
Aspire.Hosting.Blazor (1)
BlazorGatewayExtensions.cs (1)
535Urls = clientUrls
Aspire.Hosting.DevTunnels (4)
DevTunnelMonitor.cs (1)
685Urls = [.. snapshot.Urls.Select(url => url with { IsInactive = true })]
DevTunnelResourceBuilderExtensions.cs (3)
730Urls = [.. snapshot.Urls.Select(u => u with { IsInactive = true })] 749Urls = [.. snapshot.Urls.Select(u => u with 837Urls = [.. snapshot.Urls.Select(u => u with { IsInactive = true })]
Aspire.Hosting.DevTunnels.Tests (5)
DevTunnelMonitorTests.cs (5)
185Urls = [new("tunnel", test.Port.LastKnownStatus!.PortUri!.AbsoluteUri, false)] 209Urls = [new("tunnel", "https://original-3000.usw2.devtunnels.ms/", false)] 259Urls = [ 318Urls = [new("tunnel", "https://original-3000.usw2.devtunnels.ms/", false)] 350Urls = [new("tunnel", "https://original-3000.usw2.devtunnels.ms/", false)]
Aspire.Hosting.Foundry (1)
PromptAgent\AzurePromptAgentResource.cs (1)
370Urls = portalUrls
Aspire.Hosting.Tests (4)
Backchannel\AuxiliaryBackchannelRpcTargetTests.cs (1)
186Urls = [
Codespaces\CodespacesUrlRewriterTests.cs (1)
76Urls = [localhostUrlSnapshot]
ResourceNotificationTests.cs (1)
1795Urls =
WithUrlsTests.cs (1)
96Urls = [.. s.Urls.Select(u => u with { IsInactive = false })]
103 references to Urls
Aspire.Hosting (8)
ApplicationModel\CustomResourceSnapshot.cs (2)
200Urls.SequenceEqual(other.Urls) &&
ApplicationModel\ResourceNotificationService.cs (1)
972string.Join(" ", newState.Urls.Select(u => $"{u.Name} = {u.Url}")),
Backchannel\AuxiliaryBackchannelRpcTarget.cs (1)
1097var urls = snapshot.Urls
Dashboard\DashboardServiceData.cs (1)
79Urls = snapshot.Urls,
Devcontainers\Codespaces\CodespacesResourceUrlRewriterService.cs (2)
32foreach (var originalUrlSnapshot in resourceEvent.Snapshot.Urls) 57var transformedUrls = from originalUrl in resourceEvent.Snapshot.Urls
ExternalServiceBuilderExtensions.cs (1)
174Urls = AddUrlIfNotPresent(snapshot.Urls, uri),
Aspire.Hosting.Azure (3)
AzureProvisioningController.cs (1)
4313Urls = state.Text == KnownResourceStates.NotStarted ? [] : existingState.Urls,
Provisioning\Provisioners\BicepProvisioner.cs (2)
333Urls = [.. state.Urls.Where(static url => !string.Equals(url.Name, DeploymentUrlName, StringComparison.Ordinal)), new(Name: DeploymentUrlName, Url: deploymentUrl, IsInternal: false)], 695Urls = [.. state.Urls, new(Name: DeploymentUrlName, Url: url, IsInternal: false)],
Aspire.Hosting.Azure.EntraId (1)
EntraIdResourceExtensions.cs (1)
257Urls = [.. snapshot.Urls.Where(url => url.Name is not "OpenID Config" and not "Azure Portal"), .. urls],
Aspire.Hosting.Azure.EntraId.Tests (12)
EntraIdInitializationTests.cs (12)
38}, snapshot.Urls); 91}, snapshot.Urls); 119}, snapshot.Urls); 153Assert.Empty(snapshot.Urls); 211Assert.Equal(new[] { "OpenID Config", "Azure Portal" }, snapshot.Urls.Select(u => u.Name)); 230Assert.Empty(snapshot.Urls); 295Assert.Equal(new[] { "OpenID Config", "Azure Portal" }, ready.Snapshot.Urls.Select(url => url.Name)); 341Assert.Equal(new[] { "docs", "OpenID Config", "Azure Portal" }, ready.Snapshot.Urls.Select(url => url.Name)); 346ready.Snapshot.Urls.Single(url => url.Name == "OpenID Config").Url); 349ready.Snapshot.Urls.Single(url => url.Name == "Azure Portal").Url); 446Assert.Equal(new[] { "docs", "OpenID Config", "Azure Portal" }, snapshot.Urls.Select(u => u.Name)); 482Assert.Empty(snapshot.Urls);
Aspire.Hosting.Azure.Tests (3)
AzureBicepProvisionerTests.cs (1)
923Assert.Equal(BicepProvisioner.GetDeploymentUrl(new ResourceIdentifier(expectedDeploymentId)), resourceEvent.Snapshot.Urls.Single(u => u.Name == "deployment").Url);
AzureEnvironmentResourceExtensionsTests.cs (2)
122Assert.Single(directorySnapshot.Snapshot.Urls); 682Assert.Empty(storageEvent.Snapshot.Urls);
Aspire.Hosting.DevTunnels (4)
DevTunnelMonitor.cs (1)
685Urls = [.. snapshot.Urls.Select(url => url with { IsInactive = true })]
DevTunnelResourceBuilderExtensions.cs (3)
730Urls = [.. snapshot.Urls.Select(u => u with { IsInactive = true })] 749Urls = [.. snapshot.Urls.Select(u => u with 837Urls = [.. snapshot.Urls.Select(u => u with { IsInactive = true })]
Aspire.Hosting.DevTunnels.Tests (23)
DevTunnelMonitorTests.cs (15)
68Assert.All(test.Snapshot(test.Port).Urls, u => Assert.True(u.IsInactive)); 193Assert.True(Assert.Single(test.Snapshot(test.Port).Urls).IsInactive); 222Assert.True(Assert.Single(test.Snapshot(test.Port).Urls).IsInactive); 230Assert.True(Assert.Single(test.Snapshot(test.Port).Urls).IsInactive); 234Assert.False(Assert.Single(test.Snapshot(test.Port).Urls).IsInactive); 268var originalUrls = test.Snapshot(test.Port).Urls.Select(u => u.Url).ToArray(); 278Assert.Equal(originalUrls, test.Snapshot(test.Port).Urls.Select(u => u.Url)); 290], test.Snapshot(test.Port).Urls.Select(u => u.Url)); 291Assert.All(test.Snapshot(test.Port).Urls, u => Assert.False(u.IsInactive)); 332Assert.True(Assert.Single(test.Snapshot(test.Port).Urls).IsInactive); 336Assert.True(Assert.Single(test.Snapshot(test.Port).Urls).IsInactive); 339Assert.False(Assert.Single(test.Snapshot(test.Port).Urls).IsInactive); 355Assert.True(Assert.Single(test.Snapshot(test.Port).Urls).IsInactive); 360Assert.True(Assert.Single(test.Snapshot(test.Port).Urls).IsInactive); 363Assert.False(Assert.Single(test.Snapshot(test.Port).Urls).IsInactive);
DevTunnelResourceBuilderExtensionsTests.cs (8)
821e => e.Snapshot.Urls.Any(u => u.Url == inspectUrl) 822&& e.Snapshot.Urls.Any(u => u.Url == "https://example.com/diagnostics") 823&& e.Snapshot.Urls.All(u => u.IsInactive == expectedInactive), cts.Token); 825Assert.True(completed.Snapshot.Urls.Length >= 3); 845e.Snapshot.Urls.Any(u => u.Url == tunnelUrl && !u.IsInactive) && 846e.Snapshot.Urls.Any(u => u.Url == inspectUrl && !u.IsInactive), 852Assert.Contains(resourceEvent.Snapshot.Urls, u => u.Url == tunnelUrl && !u.IsInactive); 853Assert.Contains(resourceEvent.Snapshot.Urls, u => u.Url == inspectUrl && !u.IsInactive);
Aspire.Hosting.Redis.Tests (7)
RedisFunctionalTests.cs (7)
124var commanderEndpointUri = new Uri(commanderEvent.Snapshot.Urls.First(u => u.Name == "http").Url); 130e => e.Snapshot.Urls.FirstOrDefault(u => u.DisplayProperties.DisplayName == "Manage (Commander)") is { IsInactive: false }, 133var managementUrl = redisEvent.Snapshot.Urls.First(u => u.DisplayProperties.DisplayName == "Manage (Commander)"); 171var managementUrl = redisEvent.Snapshot.Urls.FirstOrDefault(u => u.DisplayProperties.DisplayName == "Manage (Commander)"); 186e => e.Snapshot.Urls.FirstOrDefault(u => u.DisplayProperties.DisplayName == "Manage (Commander)") is { IsInactive: false }, 191managementUrl = redisEvent.Snapshot.Urls.First(u => u.DisplayProperties.DisplayName == "Manage (Commander)"); 199e => e.Snapshot.Urls.FirstOrDefault(u => u.DisplayProperties.DisplayName == "Manage (Commander)") is { IsInactive: true },
Aspire.Hosting.Tests (40)
Codespaces\CodespacesUrlRewriterTests.cs (3)
83var match = re.Snapshot.Urls.Length > 0 && re.Snapshot.Urls[0].Url.Contains("app.github.dev"); 89resourceEvent.Snapshot.Urls,
DistributedApplicationTests.cs (12)
262Assert.Collection(notStartedResourceEvent.Snapshot.Urls, u => 268Assert.Collection(dependentResourceEvent.Snapshot.Urls, u => 278Assert.Collection(runningResourceEvent.Snapshot.Urls, u => 286Assert.Collection(dependentResourceRunningEvent.Snapshot.Urls, u => 560Assert.Collection(notStartedResourceEvent.Snapshot.Urls, u => 565Assert.Collection(dependentResourceEvent.Snapshot.Urls, u => 579Assert.Collection(runningResourceEvent.Snapshot.Urls, u => 586Assert.Collection(dependentRunningResourceEvent.Snapshot.Urls, u => 643Assert.Collection(notStartedResourceEvent.Snapshot.Urls, u => 648Assert.Collection(dependentResourceEvent.Snapshot.Urls, u => 664Assert.Collection(runningResourceEvent.Snapshot.Urls, u => 671Assert.Collection(dependentRunningResourceEvent.Snapshot.Urls, u =>
WithUrlsTests.cs (25)
96Urls = [.. s.Urls.Select(u => u with { IsInactive = false })] 120if (notification.Resource == custom.Resource && notification.Snapshot.Urls.Length > 0) 122urlSnapshots.Add(notification.Snapshot.Urls.ToArray()); 123TestOutputHelper.WriteLine($"Captured snapshot #{urlSnapshots.Count}: State={notification.Snapshot.State}, URLs: {FormatUrls(notification.Snapshot.Urls)}"); 127notification.Snapshot.Urls.All(u => !u.IsInactive)) 618e => e.Snapshot.Urls.Length == 1).DefaultTimeout(); 622Assert.Single(resourceEvent.Snapshot.Urls, s => s.Name == httpEndpoint.EndpointName && s.IsInactive && s.Url == "https://example.com"); 643e => e.Snapshot.Urls.Length == 3).DefaultTimeout(); 647Assert.Collection(resourceEvent.Snapshot.Urls, 677&& e.Snapshot.Urls.Length == 2 678&& e.Snapshot.Urls.All(url => !url.IsInactive)).DefaultTimeout(); 682Assert.Equal(2, resourceEvent.Snapshot.Urls.Length); 683Assert.Collection(resourceEvent.Snapshot.Urls, 709if (notification.Resource == servicea.Resource && notification.Snapshot.Urls.Length > 0) 711urlSnapshots.Add(notification.Snapshot.Urls.ToArray()); 712TestOutputHelper.WriteLine($"Captured snapshot #{urlSnapshots.Count}: State={notification.Snapshot.State}, URLs: {FormatUrls(notification.Snapshot.Urls)}"); 716notification.Snapshot.Urls.All(u => !u.IsInactive)) 786e => e.Snapshot.State == KnownResourceStates.Running && e.Snapshot.Urls.Length == 4).DefaultTimeout(); 790Assert.Collection(resourceEvent.Snapshot.Urls, 1120&& e.Snapshot.Urls.Length == resourceB.Resource.GetEndpoints().ToArray().Length + 1 1121&& e.Snapshot.Urls.All(u => !u.IsInactive), 1133var crossResourceUrl = resourceEvent.Snapshot.Urls.FirstOrDefault(u => u.DisplayProperties.DisplayName == "API Docs"); 1174var crossResourceUrl = resourceEvent.Snapshot.Urls.FirstOrDefault(u => u.DisplayProperties.DisplayName == "API Docs"); 1186e => e.Snapshot.Urls.FirstOrDefault(u => u.DisplayProperties.DisplayName == "API Docs") is { IsInactive: false }, 1195e => e.Snapshot.Urls.FirstOrDefault(u => u.DisplayProperties.DisplayName == "API Docs") is { IsInactive: true },
Aspire.Hosting.TestUtilities (2)
Utils\PersistentContainerTestHelpers.cs (2)
133(!includeUrls || evt.Snapshot.Urls.Length > 0); 143? string.Join(Environment.NewLine, resourceEvent.Snapshot.Urls