private async Task ResourceHandler(WatchEventType type, ChallangeResource crd, IKubernetes client) { _logger.Information($"{type} Dns: {crd.Spec.DnsName} Key: {crd.Spec.Key}"); switch (type) { case WatchEventType.Added: await _tokenRepository.RegisterTokenAsync(crd.Spec); break; case WatchEventType.Deleted: await _tokenRepository.DeleteTokenAsyc(crd.Spec.Token); break; case WatchEventType.Modified: await _tokenRepository.UpdateTokenAsync(crd.Spec); break; case WatchEventType.Error: _logger.Error("Error on resource {@resouce}", crd.Spec); await _tokenRepository.DeleteTokenAsyc(crd.Spec.Token); break; default: _logger.Warning("Unhandled watching event type {@type}", type); break; } }
static async Task Main(string[] args) { var config = KubernetesClientConfiguration.BuildConfigFromConfigFile(); var client = new Kubernetes(config); var cr = new ChallangeResource(); var controller = new Controller(client); var cts = new CancellationToken(); Console.WriteLine($"PID: {Environment.ProcessId}"); await controller.StartAsync <ChallangeResource>("app-gw", (type, crd, cl) => { Console.WriteLine($"{type} Dns: {crd.Spec.DnsName} Key: {crd.Spec.Key}"); }, cts); var ctrlc = new ManualResetEventSlim(false); Console.CancelKeyPress += (sender, eventArgs) => ctrlc.Set(); ctrlc.Wait(); }