internal Task Watch(HealthCheckResource resource, CancellationToken token) { Func <HealthCheckResource, bool> filter = (k) => k.Metadata.NamespaceProperty == resource.Metadata.NamespaceProperty; if (!_watchers.Keys.Any(filter)) { var response = _client.ListNamespacedServiceWithHttpMessagesAsync( namespaceParameter: resource.Metadata.NamespaceProperty, labelSelector: $"{resource.Spec.ServicesLabel}", watch: true, cancellationToken: token); var watcher = response.Watch <V1Service, V1ServiceList>( onEvent: async(type, item) => await _notificationHandler.NotifyDiscoveredServiceAsync(type, item, resource), onError: e => { _diagnostics.ServiceWatcherThrow(e); Watch(resource, token); } ); _diagnostics.ServiceWatcherStarting(resource.Metadata.NamespaceProperty); _watchers.Add(resource, watcher); } return(Task.CompletedTask); }
internal Task Watch(HealthCheckResource resource, CancellationToken token) { var response = _client.ListServiceForAllNamespacesWithHttpMessagesAsync( labelSelector: $"{resource.Spec.ServicesLabel}", watch: true, cancellationToken: token); _watcher = response.Watch <V1Service, V1ServiceList>( onEvent: async(type, item) => await _notificationHandler.NotifyDiscoveredServiceAsync(type, item, resource), onError: e => _diagnostics.ServiceWatcherThrow(e) ); _diagnostics.ServiceWatcherStarting("All"); return(Task.CompletedTask); }