public CertManagerMonitor(ILogger <CertManagerMonitor> logger, ManagedWatcher <Certificate, object> certificateWatcher, ManagedWatcher <V1Secret, V1SecretList> secretsWatcher, IKubernetes apiClient, IMediator mediator) { _logger = logger; _certificateWatcher = certificateWatcher; _secretsWatcher = secretsWatcher; _apiClient = apiClient; _mediator = mediator; _eventQueue = new FeederQueue <WatcherEvent>(OnEvent, OnEventHandlingError); _secretsWatcher.OnStateChanged = OnWatcherStateChanged; _secretsWatcher.EventHandlerFactory = e => { if (e.Item.Type.StartsWith("helm.sh")) { return(Task.CompletedTask); } return(_eventQueue.FeedAsync(new InternalSecretWatcherEvent { Item = e.Item, Type = e.Type, CertificateResourceDefinitionVersion = _version })); }; _secretsWatcher.RequestFactory = async c => await c.ListSecretForAllNamespacesWithHttpMessagesAsync(watch : true, timeoutSeconds : Requests.WatcherTimeout); _certManagerTimer.Elapsed += (_, __) => _monitorTriggerChannel.Writer.TryWrite(new object()); _certManagerTimer.Interval = 5_000; _certificateWatcher.OnStateChanged = OnWatcherStateChanged; _certificateWatcher.EventHandlerFactory = e => _eventQueue.FeedAsync(new InternalCertificateWatcherEvent { Item = e.Item, Type = e.Type }); _certificateWatcher.RequestFactory = async client => await client.ListClusterCustomObjectWithHttpMessagesAsync( CertManagerConstants.CrdGroup, _version, CertManagerConstants.CertificatePlural, watch : true, timeoutSeconds : Requests.WatcherTimeout); }
public FortiMirror(ILogger <FortiMirror> logger, ManagedWatcher <V1Secret, V1SecretList> secretsWatcher, IKubernetes apiClient) { _logger = logger; _secretsWatcher = secretsWatcher; _apiClient = apiClient; _eventQueue = new FeederQueue <WatcherEvent <V1Secret> >(OnEvent, OnEventHandlingError); _secretsWatcher.OnStateChanged = OnWatcherStateChanged; _secretsWatcher.EventHandlerFactory = e => _eventQueue.FeedAsync(e); _secretsWatcher.RequestFactory = async c => await c.ListSecretForAllNamespacesWithHttpMessagesAsync(watch : true); }
public Monitor(ILogger <Monitor> logger, ManagedWatcher <V1CustomResourceDefinition, V1CustomResourceDefinitionList> crdV1Watcher, Func <ManagedWatcher <Certificate, object> > certificatesWatcherFactory, ManagedWatcher <V1Secret, V1SecretList> secretsWatcher, IKubernetes apiClient, IMediator mediator) { _logger = logger; _crdV1Watcher = crdV1Watcher; _certificatesWatcherFactory = certificatesWatcherFactory; _secretsWatcher = secretsWatcher; _apiClient = apiClient; _mediator = mediator; _eventQueue = new FeederQueue <WatcherEvent>(OnEvent, OnEventHandlingError); _secretsWatcher.OnStateChanged = OnWatcherStateChanged; _secretsWatcher.EventHandlerFactory = e => _eventQueue.FeedAsync(new InternalSecretWatcherEvent { Item = e.Item, Type = e.Type, CertificateResourceDefinitionVersions = _certificatesWatchers.Keys.ToList() }); _secretsWatcher.RequestFactory = async c => await c.ListSecretForAllNamespacesWithHttpMessagesAsync(watch : true, timeoutSeconds : Requests.DefaultTimeout); _crdV1Watcher.EventHandlerFactory = OnCrdEventV1; _crdV1Watcher.RequestFactory = async c => await c.ListCustomResourceDefinitionWithHttpMessagesAsync(watch : true, timeoutSeconds : Requests.DefaultTimeout); _crdV1Watcher.OnStateChanged = OnCrdWatcherStateChanged; _v1Beta1CrdMonitorTimer.Elapsed += (_, __) => Onv1Beta1CrdRefresh(); _v1Beta1CrdMonitorTimer.Interval = 30_000; }
protected ResourceMirror(ILogger logger, IKubernetes client, ManagedWatcher <TResource, TResourceList> resourceWatcher, ManagedWatcher <V1Namespace, V1NamespaceList> namespaceWatcher) { _logger = logger; _client = client; _resourceWatcher = resourceWatcher; _namespaceWatcher = namespaceWatcher; _eventQueue = new FeederQueue <WatcherEvent>(OnEvent, OnEventHandlingError); _resourceWatcher.EventHandlerFactory = e => _eventQueue.FeedAsync(e); _resourceWatcher.RequestFactory = OnResourceWatcher; _resourceWatcher.OnStateChanged = OnWatcherStateChanged; _namespaceWatcher.EventHandlerFactory = e => _eventQueue.FeedAsync(e); _namespaceWatcher.RequestFactory = async api => await api.ListNamespaceWithHttpMessagesAsync(watch : true); _namespaceWatcher.OnStateChanged = OnWatcherStateChanged; }