Exemplo n.º 1
0
        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
        }