Esempio n. 1
0
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            stoppingToken.Register(() =>
            {
                _logger.LogInformation("Application execution cancelled");
                _hostApplicationLifetime.StopApplication();
            });

            _logger.LogInformation("GkeCfSyncWorker started at: {time}", DateTimeOffset.Now);

            foreach (var delay in _retryPolicy.Concat(new[] { TimeSpan.MinValue }))
            {
                try
                {
                    var ip = await _kubernetes.GetHostNodeExternalIp();

                    await _cloudflare.UpdateDnsARecord(ip);

                    _hostApplicationLifetime.StopApplication();
                    return;
                }
                catch
                {
                    if (delay != TimeSpan.MinValue)
                    {
                        _logger.LogInformation($"Retrying in {delay.TotalSeconds:N0}s...");
                        await Task.Delay(delay);
                    }
                }
            }

            _logger.LogError("Sync operation failed");
        }