1 type derived from CustomResource
Aspire.Hosting (1)
Dcp\Model\ModelCommon.cs (1)
139internal abstract class CustomResource<TSpec, TStatus> : CustomResource
190 references to CustomResource
Aspire.Hosting (93)
Dcp\AppResource.cs (4)
12CustomResource DcpResource { get; } 22internal class AppResource<TDcpResource> : IAppResource, IDisposable, IEquatable<AppResource<TDcpResource>> where TDcpResource : CustomResource, IKubernetesStaticMetadata 36CustomResource IAppResource.DcpResource => DcpResource; 69internal class RenderedModelResource<TDcpResource> : AppResource<TDcpResource>, IResourceReference where TDcpResource : CustomResource, IKubernetesStaticMetadata
Dcp\ContainerCreator.cs (12)
173ctr.Annotate(CustomResource.ResourceNameAnnotation, container.Name); 174ctr.Annotate(CustomResource.OtelServiceNameAnnotation, container.Name); 175ctr.Annotate(CustomResource.OtelServiceInstanceIdAnnotation, container.GetOtelServiceInstanceId(containerObjectInstance)); 288containerExec.Annotate(CustomResource.OtelServiceNameAnnotation, containerExecutable.Name); 289containerExec.Annotate(CustomResource.OtelServiceInstanceIdAnnotation, containerExecutable.GetOtelServiceInstanceId(exeInstance)); 290containerExec.Annotate(CustomResource.ResourceNameAnnotation, containerExecutable.Name); 345dcpContainer.SetAnnotationAsObjectList(CustomResource.ResourceAppArgsAnnotation, appLaunchArgumentAnnotations); 463svc.Annotate(CustomResource.ResourceNameAnnotation, re.Resource.Name); 464svc.Annotate(CustomResource.EndpointNameAnnotation, endpoint.Name); 465svc.Annotate(CustomResource.ContainerNetworkAnnotation, KnownNetworkIdentifiers.DefaultAspireContainerNetwork.Value); 466svc.Annotate(CustomResource.PrimaryServiceNameAnnotation, serverSvc.DcpResource.Metadata.Name); 467svc.Annotate(CustomResource.ContainerTunnelInstanceName, tunnelProxyName);
Dcp\DcpExecutor.cs (16)
374internal static string GetResourceType<T>(T resource, IResource appModelResource) where T : CustomResource 396where TDcpResource : CustomResource, IKubernetesStaticMetadata 523PrimaryServiceName: r.DcpResource.Metadata.Annotations?.TryGetValue(CustomResource.PrimaryServiceNameAnnotation, out var psn) == true ? psn : null) 554where TDcpResource : CustomResource, IKubernetesStaticMetadata 594private Task CreateAllDcpObjectsAsync<RT>(CancellationToken cancellationToken) where RT : CustomResource, IKubernetesStaticMetadata 607where T : CustomResource, IKubernetesStaticMetadata 616private async Task CreateDcpObjectsAsync<RT>(IEnumerable<RT> objects, CancellationToken cancellationToken) where RT : CustomResource, IKubernetesStaticMetadata 717svc.Annotate(CustomResource.ResourceNameAnnotation, sp.ModelResource.Name); 718svc.Annotate(CustomResource.EndpointNameAnnotation, endpoint.Name); 882annotationHolder.Annotate(CustomResource.ResourceStateAnnotation, state); 891where TDcpResource : CustomResource, IKubernetesStaticMetadata 926where TDcpResource : CustomResource, IKubernetesStaticMetadata 1027Func<CustomResourceSnapshot, CustomResourceSnapshot> BuildSnapshotFunc(CustomResource dcpResource) 1063static bool IsDelayedStart(CustomResource resource) 1099private static V1Patch CreatePatch<T>(T obj, Action<T> change) where T : CustomResource 1272private async Task EnsureResourceDeletedAsync<T>(IResourceReference resource, CancellationToken cancellationToken) where T : CustomResource, IKubernetesStaticMetadata
Dcp\DcpModelUtilities.cs (12)
54where TDcpResource : CustomResource, IKubernetesStaticMetadata 95appResource.DcpResource.AnnotateAsObjectList(CustomResource.ServiceProducerAnnotation, spAnn); 99static bool HasMultipleReplicas(CustomResource resource) 101if (resource is Executable exe && exe.Metadata.Annotations.TryGetValue(CustomResource.ResourceReplicaCount, out var value) && int.TryParse(value, CultureInfo.InvariantCulture, out var replicas) && replicas > 1) 113where TDcpResource : CustomResource, IKubernetesStaticMetadata 125where TDcpResource : CustomResource, IKubernetesStaticMetadata 218where TDcpResource : CustomResource, IKubernetesStaticMetadata 247where TDcpResource : CustomResource, IKubernetesStaticMetadata 284ResourceName: r.DcpResource.Metadata.Annotations?.TryGetValue(CustomResource.ResourceNameAnnotation, out var resourceName) == true ? resourceName : null, 285EndpointName: r.DcpResource.Metadata.Annotations?.TryGetValue(CustomResource.EndpointNameAnnotation, out var endpointName) == true ? endpointName : null, 286TunnelInstanceName: r.DcpResource.Metadata.Annotations?.TryGetValue(CustomResource.ContainerTunnelInstanceName, out var tunnelInstanceName) == true ? tunnelInstanceName : null, 287ContainerNetworkName: r.DcpResource.Metadata.Annotations?.TryGetValue(CustomResource.ContainerNetworkAnnotation, out var containerNetworkName) == true ? containerNetworkName : null
Dcp\DcpResourceWatcher.cs (10)
199async Task WatchKubernetesResourceAsync<T>(Func<WatchEventType, T, Task> handler) where T : CustomResource, IKubernetesStaticMetadata 271private async Task ProcessResourceChange<T>(WatchEventType watchEventType, T resource, ConcurrentDictionary<string, T> resourceByName, string resourceKind, Func<T, CustomResourceSnapshot, CustomResourceSnapshot> snapshotFactory) where T : CustomResource, IKubernetesStaticMetadata 385else if (resource.Metadata.Annotations?.TryGetValue(CustomResource.ServiceProducerAnnotation, out var servicesProducedAnnotationJson) == true) 426where T : CustomResource, IKubernetesStaticMetadata 492private static bool HasLogsAvailable(CustomResource resource) 499internal static ResourceStatus GetResourceStatus(CustomResource resource) 529private void AddDcpResourceObservedEvent(CustomResource resource, IResource appModelResource, string resourceKind, ResourceStatus status) 594private void StartLogStream<T>(T resource) where T : CustomResource, IKubernetesStaticMetadata 892CustomResource? cr = resourceKind switch 929where T : CustomResource, IKubernetesStaticMetadata
Dcp\ExecutableCreator.cs (7)
192CustomResource.ResourceAppArgsAnnotation, 257executable.Annotate(CustomResource.OtelServiceNameAnnotation, resource.Name); 258executable.Annotate(CustomResource.OtelServiceInstanceIdAnnotation, resource.GetOtelServiceInstanceId(instance)); 259executable.Annotate(CustomResource.ResourceNameAnnotation, resource.Name); 260executable.Annotate(CustomResource.ResourceReplicaCount, replicaCount.ToString(CultureInfo.InvariantCulture)); 261executable.Annotate(CustomResource.ResourceReplicaIndex, replicaIndex.ToString(CultureInfo.InvariantCulture)); 324annotations.TryGetValue(CustomResource.ResourceReplicaIndex, out var value) &&
Dcp\IDcpObjectFactory.cs (4)
24where TDcpResource : CustomResource, IKubernetesStaticMetadata; 30where TDcpResource : CustomResource, IKubernetesStaticMetadata; 36where TDcpResource : CustomResource, IKubernetesStaticMetadata; 58where TDcpResource : CustomResource, IKubernetesStaticMetadata;
Dcp\IObjectCreator.cs (1)
23where TDcpResource : CustomResource, IKubernetesStaticMetadata
Dcp\KubernetesService.cs (15)
40where T : CustomResource, IKubernetesStaticMetadata; 42where T : CustomResource, IKubernetesStaticMetadata; 44where T : CustomResource, IKubernetesStaticMetadata; 46where T : CustomResource, IKubernetesStaticMetadata; 48where T : CustomResource, IKubernetesStaticMetadata; 52where T : CustomResource, IKubernetesStaticMetadata; 76) where T : CustomResource, IKubernetesStaticMetadata; 99where T : CustomResource, IKubernetesStaticMetadata 130where T : CustomResource, IKubernetesStaticMetadata 163where T : CustomResource, IKubernetesStaticMetadata 198where T : CustomResource, IKubernetesStaticMetadata 228where T : CustomResource, IKubernetesStaticMetadata 262where T : CustomResource, IKubernetesStaticMetadata 320long? skip = null) where T : CustomResource, IKubernetesStaticMetadata 447private static string GetResourceFor<T>() where T : CustomResource
Dcp\Model\ExecutableReplicaSet.cs (2)
41CustomResource.AnnotateAsObjectList(Annotations, annotationName, value); 46return CustomResource.TryGetAnnotationAsObjectList(Annotations, annotationName, out list);
Dcp\Model\ModelCommon.cs (1)
154where T : CustomResource
Dcp\Model\Schema.cs (2)
10public void Add<T>(string kind, string resource) where T : CustomResource 15public bool TryGet<T>(out (string Kind, string Resource) kindWithResource) where T : CustomResource
Dcp\ResourceLogSource.cs (1)
29where TResource : CustomResource, IKubernetesStaticMetadata
Dcp\ResourceSnapshotBuilder.cs (4)
245private static (ImmutableArray<string> Args, ImmutableArray<int>? ArgsAreSensitive, bool IsSensitive)? GetLaunchArgs(CustomResource resource, IReadOnlyList<string>? effectiveArgs) 247if (!resource.TryGetAnnotationAsObjectList(CustomResource.ResourceAppArgsAnnotation, out List<AppLaunchArgumentAnnotation>? launchArgumentAnnotations)) 282private ImmutableArray<UrlSnapshot> GetUrls(CustomResource resource, string? resourceState) 381private static ImmutableArray<VolumeSnapshot> GetVolumes(CustomResource resource)
OtlpConfigurationExtensions.cs (2)
91context.EnvironmentVariables[KnownOtelConfigNames.ResourceAttributes] = "service.instance.id={{- index .Annotations \"" + CustomResource.OtelServiceInstanceIdAnnotation + "\" -}}"; 92context.EnvironmentVariables[KnownOtelConfigNames.ServiceName] = "{{- index .Annotations \"" + CustomResource.OtelServiceNameAnnotation + "\" -}}";
Aspire.Hosting.Tests (95)
Dcp\DcpExecutorTests.cs (63)
228Assert.True(exe.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var argAnnotations)); 265Assert.True(exe.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var argAnnotations)); 315Assert.True(exe.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var displayArgs)); 354Assert.True(exe.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var displayArgs)); 386Assert.True(exe.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var argAnnotations)); 432Assert.True(container.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var argAnnotations)); 589Assert.True(exe1.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var argAnnotations1)); 609Assert.True(exe2.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var argAnnotations2)); 630Assert.True(dcpExe.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 662Assert.True(dcpExe.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 694Assert.True(dcpExe.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 727Assert.True(dcpExe.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 782Assert.True(dcpExe.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 811Assert.True(dcpExe.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 846Assert.True(dcpExe.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 882Assert.True(dcpExe.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 920Assert.True(dcpExe.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 948Assert.True(dcpExe.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 979Assert.True(dcpExe.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 1011Assert.True(dcpExe.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 1041Assert.True(dcpExe.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 1477Assert.Equal(expectedName, exe.Metadata.Annotations[CustomResource.OtelServiceNameAnnotation]); 3387Assert.True(dcpExe.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 3432Assert.True(dcpExe.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 3469Assert.True(dcpExe.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 3506Assert.True(dcpExe.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 3544Assert.True(dcpExe.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 3573Assert.True(dcpCtr.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 3608Assert.True(dcpCtr.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 3692Assert.True(dcpCtr.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 3725Assert.True(dcpCtr.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 4033Assert.True(dcpCtr.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 4068Assert.True(dcpCtr.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 4099Assert.True(dcpCtr.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var spAnnList)); 4241var serviceProducers = JsonSerializer.Deserialize<List<ServiceProducerAnnotation>>(annotations[CustomResource.ServiceProducerAnnotation]); 4770Assert.True(exe.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var argAnnotations)); 4807Assert.True(exe.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var argAnnotations)); 5003Assert.True(exe.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var displayArgs)); 5234var resource = Assert.Single(kubernetesService.CreatedResources, r => 5236r.Metadata.Annotations.ContainsKey(CustomResource.OtelServiceInstanceIdAnnotation)); 5238return resource.Metadata.Annotations![CustomResource.OtelServiceInstanceIdAnnotation]; 6715Assert.True(exe.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var displayArgs)); 6829Assert.True(exe.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var displayArgs)); 6921Assert.True(exe.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var displayArgs)); 7677Assert.True(exe.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var displayArgs)); 8063Assert.True(exe.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var displayArgs)); 8116Assert.True(exe.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var displayArgs)); 8167Assert.True(exe.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var displayArgs)); 8254Assert.True(exe.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var displayArgs)); 8656Assert.True(exe1.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var displayArgs1)); 8666Assert.True(exe2.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var displayArgs2)); 8675Assert.True(exe3.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var displayArgs3)); 8874&& x.Metadata.Annotations.ContainsKey(CustomResource.ContainerTunnelInstanceName)) 8956s => s.Metadata.Annotations.ContainsKey(CustomResource.ContainerTunnelInstanceName)); 8996&& s.Metadata.Annotations.ContainsKey(CustomResource.ContainerTunnelInstanceName)); 9111Assert.True(container.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var argAnnotations)); 9155Assert.True(startedExecutable.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var argAnnotations)); 9200Assert.True(startedContainer.TryGetAnnotationAsObjectList<AppLaunchArgumentAnnotation>(CustomResource.ResourceAppArgsAnnotation, out var argAnnotations)); 9441.Where(s => s.Metadata.Annotations.ContainsKey(CustomResource.ContainerTunnelInstanceName)) 9514.Where(s => s.Metadata.Annotations.ContainsKey(CustomResource.ContainerTunnelInstanceName)) 9867.OrderBy(e => e.Metadata.Annotations?[CustomResource.ResourceReplicaIndex], StringComparer.Ordinal) 9951Assert.Equal("1", exe.Metadata.Annotations?[CustomResource.ResourceReplicaCount]); 9952Assert.Equal("0", exe.Metadata.Annotations?[CustomResource.ResourceReplicaIndex]);
Dcp\ResourceSnapshotBuilderTests.cs (6)
9using DcpCustomResource = Aspire.Hosting.Dcp.Model.CustomResource; 68executable.Annotate(DcpCustomResource.ResourceNameAnnotation, project.Name); 100executable.Annotate(DcpCustomResource.ResourceNameAnnotation, resource.Name); 133executable.Annotate(DcpCustomResource.ResourceNameAnnotation, project.Name); 161executable.Annotate(DcpCustomResource.ResourceNameAnnotation, resource.Name); 283executable.SetAnnotationAsObjectList(DcpCustomResource.ResourceAppArgsAnnotation, launchArgumentAnnotations);
Dcp\TestKubernetesService.cs (26)
25public ConcurrentQueue<CustomResource> CreatedResources { get; } = []; 28private readonly List<Channel<(WatchEventType, CustomResource)>> _watchChannels = []; 29private readonly Func<CustomResource, string, bool?, Stream> _startStream; 36Func<CustomResource, string, Stream>? startStream = null, 38Func<CustomResource, string, bool?, Stream>? startStreamWithFollow = null) 47public Task<T> GetAsync<T>(string name, string? namespaceParameter = null, CancellationToken _ = default) where T : CustomResource, IKubernetesStaticMetadata 68public Task<T> CreateAsync<T>(T obj, CancellationToken cancellationToken = default) where T : CustomResource, IKubernetesStaticMetadata 79svc.Metadata.Annotations?.ContainsKey(CustomResource.ContainerTunnelInstanceName) is true) 115foreach (var modifiedResource in modifiedResources) 129public void PushResourceModified(CustomResource resource) 149public void PushResourceUnchanged(CustomResource resource, WatchEventType eventType = WatchEventType.Modified) 164public void PushResourceDeleted(CustomResource resource) 182foreach (var res in CreatedResources.Where(r => !DeletedResources.Contains(r.Metadata.Name))) 196private void StampResourceUid(CustomResource resource) 209private void StampResourceVersion(CustomResource resource) 214private static T Copy<T>(T resource) where T : CustomResource 221private List<CustomResource> AllocateProxylessContainerServicePorts(CustomResource resource) 224container.TryGetAnnotationAsObjectList<ServiceProducerAnnotation>(CustomResource.ServiceProducerAnnotation, out var servicesProduced) is not true) 229var modifiedResources = new List<CustomResource>(); 253public async Task<T> DeleteAsync<T>(string name, string? namespaceParameter = null, CancellationToken cancellationToken = default) where T : CustomResource, IKubernetesStaticMetadata 273public Task<List<T>> ListAsync<T>(string? namespaceParameter = null, CancellationToken cancellationToken = default) where T : CustomResource, IKubernetesStaticMetadata 281public async IAsyncEnumerable<(WatchEventType, T)> WatchAsync<T>(string? namespaceParameter = null, [EnumeratorCancellation] CancellationToken cancellationToken = default) where T : CustomResource, IKubernetesStaticMetadata 283var chan = Channel.CreateUnbounded<(WatchEventType, CustomResource)>(); 326) where T : CustomResource, IKubernetesStaticMetadata 331public Task<T> PatchAsync<T>(T obj, V1Patch patch, CancellationToken cancellationToken = default) where T : CustomResource, IKubernetesStaticMetadata
Aspire.Hosting.TestUtilities (2)
Helpers\KubernetesHelper.cs (2)
13public static async Task<T> GetResourceByNameAsync<T>(IKubernetesService kubernetes, string resourceName, string resourceNameSuffix, Func<T, bool> ready, CancellationToken cancellationToken = default) where T : CustomResource, IKubernetesStaticMetadata 28public static async Task<T> GetResourceByNameMatchAsync<T>(IKubernetesService kubernetes, string resourceNamePattern, Func<T, bool> ready, CancellationToken cancellationToken = default) where T : CustomResource, IKubernetesStaticMetadata