public async Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation(@"Startup Leader Elector for operator ""{operatorName}"".", _settings.Name); _leaseCheck?.Dispose(); _leaseCheck = new Timer( TimeSpan.FromSeconds(_settings.LeaderElectionCheckInterval).TotalMilliseconds) { AutoReset = true, }; _logger.LogTrace("Fetching namespace for leader election."); _namespace = await _client.GetCurrentNamespace(); _operatorDeployment = (await _client.List <V1Deployment>( _namespace, new EqualsSelector("operator-deployment", _settings.Name))).FirstOrDefault(); if (_operatorDeployment != null) { _operatorDeployment.Kind = V1Deployment.KubeKind; _operatorDeployment.ApiVersion = $"{V1Deployment.KubeGroup}/{V1Deployment.KubeApiVersion}"; } #if DEBUG _election.LeadershipChanged(LeaderState.Leader); #else _leaseCheck.Start(); _leaseCheck.Elapsed += async(_, __) => await CheckLeaderLease(); await CheckLeaderLease(); #endif }
public Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation(@"Startup Leader Elector for operator ""{operatorName}"".", _settings.Name); _leaseCheck?.Dispose(); _leaseCheck = new Timer( TimeSpan.FromSeconds(_settings.LeaderElectionCheckInterval).TotalMilliseconds) { AutoReset = true, }; #if DEBUG _election.LeadershipChanged(LeaderState.Leader); return(Task.CompletedTask); #else _leaseCheck.Start(); _leaseCheck.Elapsed += async(_, __) => await CheckLeaderLease(); return(CheckLeaderLease()); #endif }