@@ -26,8 +26,10 @@ import (
26
26
27
27
v1 "k8s.io/api/core/v1"
28
28
"k8s.io/apimachinery/pkg/types"
29
+ utilfeature "k8s.io/apiserver/pkg/util/feature"
29
30
runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1"
30
31
"k8s.io/klog/v2"
32
+ "k8s.io/kubernetes/pkg/features"
31
33
"k8s.io/kubernetes/pkg/kubelet/cm"
32
34
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
33
35
"k8s.io/kubernetes/pkg/security/apparmor"
@@ -421,3 +423,97 @@ func convertResourceConfigToLinuxContainerResources(rc *cm.ResourceConfig) *runt
421
423
422
424
return lcr
423
425
}
426
+
427
+ var signalNameToRuntimeEnum = map [string ]runtimeapi.Signal {
428
+ "SIGABRT" : runtimeapi .Signal_SIGABRT ,
429
+ "SIGALRM" : runtimeapi .Signal_SIGALRM ,
430
+ "SIGBUS" : runtimeapi .Signal_SIGBUS ,
431
+ "SIGCHLD" : runtimeapi .Signal_SIGCHLD ,
432
+ "SIGCLD" : runtimeapi .Signal_SIGCLD ,
433
+ "SIGCONT" : runtimeapi .Signal_SIGCONT ,
434
+ "SIGFPE" : runtimeapi .Signal_SIGFPE ,
435
+ "SIGHUP" : runtimeapi .Signal_SIGHUP ,
436
+ "SIGILL" : runtimeapi .Signal_SIGILL ,
437
+ "SIGINT" : runtimeapi .Signal_SIGINT ,
438
+ "SIGIO" : runtimeapi .Signal_SIGIO ,
439
+ "SIGIOT" : runtimeapi .Signal_SIGIOT ,
440
+ "SIGKILL" : runtimeapi .Signal_SIGKILL ,
441
+ "SIGPIPE" : runtimeapi .Signal_SIGPIPE ,
442
+ "SIGPOLL" : runtimeapi .Signal_SIGPOLL ,
443
+ "SIGPROF" : runtimeapi .Signal_SIGPROF ,
444
+ "SIGPWR" : runtimeapi .Signal_SIGPWR ,
445
+ "SIGQUIT" : runtimeapi .Signal_SIGQUIT ,
446
+ "SIGSEGV" : runtimeapi .Signal_SIGSEGV ,
447
+ "SIGSTKFLT" : runtimeapi .Signal_SIGSTKFLT ,
448
+ "SIGSTOP" : runtimeapi .Signal_SIGSTOP ,
449
+ "SIGSYS" : runtimeapi .Signal_SIGSYS ,
450
+ "SIGTERM" : runtimeapi .Signal_SIGTERM ,
451
+ "SIGTRAP" : runtimeapi .Signal_SIGTRAP ,
452
+ "SIGTSTP" : runtimeapi .Signal_SIGTSTP ,
453
+ "SIGTTIN" : runtimeapi .Signal_SIGTTIN ,
454
+ "SIGTTOU" : runtimeapi .Signal_SIGTTOU ,
455
+ "SIGURG" : runtimeapi .Signal_SIGURG ,
456
+ "SIGUSR1" : runtimeapi .Signal_SIGUSR1 ,
457
+ "SIGUSR2" : runtimeapi .Signal_SIGUSR2 ,
458
+ "SIGVTALRM" : runtimeapi .Signal_SIGVTALRM ,
459
+ "SIGWINCH" : runtimeapi .Signal_SIGWINCH ,
460
+ "SIGXCPU" : runtimeapi .Signal_SIGXCPU ,
461
+ "SIGXFSZ" : runtimeapi .Signal_SIGXFSZ ,
462
+ "SIGRTMIN" : runtimeapi .Signal_SIGRTMIN ,
463
+ "SIGRTMIN+1" : runtimeapi .Signal_SIGRTMINPLUS1 ,
464
+ "SIGRTMIN+2" : runtimeapi .Signal_SIGRTMINPLUS2 ,
465
+ "SIGRTMIN+3" : runtimeapi .Signal_SIGRTMINPLUS3 ,
466
+ "SIGRTMIN+4" : runtimeapi .Signal_SIGRTMINPLUS4 ,
467
+ "SIGRTMIN+5" : runtimeapi .Signal_SIGRTMINPLUS5 ,
468
+ "SIGRTMIN+6" : runtimeapi .Signal_SIGRTMINPLUS6 ,
469
+ "SIGRTMIN+7" : runtimeapi .Signal_SIGRTMINPLUS7 ,
470
+ "SIGRTMIN+8" : runtimeapi .Signal_SIGRTMINPLUS8 ,
471
+ "SIGRTMIN+9" : runtimeapi .Signal_SIGRTMINPLUS9 ,
472
+ "SIGRTMIN+10" : runtimeapi .Signal_SIGRTMINPLUS10 ,
473
+ "SIGRTMIN+11" : runtimeapi .Signal_SIGRTMINPLUS11 ,
474
+ "SIGRTMIN+12" : runtimeapi .Signal_SIGRTMINPLUS12 ,
475
+ "SIGRTMIN+13" : runtimeapi .Signal_SIGRTMINPLUS13 ,
476
+ "SIGRTMIN+14" : runtimeapi .Signal_SIGRTMINPLUS14 ,
477
+ "SIGRTMIN+15" : runtimeapi .Signal_SIGRTMINPLUS15 ,
478
+ "SIGRTMAX-14" : runtimeapi .Signal_SIGRTMAXMINUS14 ,
479
+ "SIGRTMAX-13" : runtimeapi .Signal_SIGRTMAXMINUS13 ,
480
+ "SIGRTMAX-12" : runtimeapi .Signal_SIGRTMAXMINUS12 ,
481
+ "SIGRTMAX-11" : runtimeapi .Signal_SIGRTMAXMINUS11 ,
482
+ "SIGRTMAX-10" : runtimeapi .Signal_SIGRTMAXMINUS10 ,
483
+ "SIGRTMAX-9" : runtimeapi .Signal_SIGRTMAXMINUS9 ,
484
+ "SIGRTMAX-8" : runtimeapi .Signal_SIGRTMAXMINUS8 ,
485
+ "SIGRTMAX-7" : runtimeapi .Signal_SIGRTMAXMINUS7 ,
486
+ "SIGRTMAX-6" : runtimeapi .Signal_SIGRTMAXMINUS6 ,
487
+ "SIGRTMAX-5" : runtimeapi .Signal_SIGRTMAXMINUS5 ,
488
+ "SIGRTMAX-4" : runtimeapi .Signal_SIGRTMAXMINUS4 ,
489
+ "SIGRTMAX-3" : runtimeapi .Signal_SIGRTMAXMINUS3 ,
490
+ "SIGRTMAX-2" : runtimeapi .Signal_SIGRTMAXMINUS2 ,
491
+ "SIGRTMAX-1" : runtimeapi .Signal_SIGRTMAXMINUS1 ,
492
+ "SIGRTMAX" : runtimeapi .Signal_SIGRTMAX ,
493
+ }
494
+
495
+ func getContainerConfigStopSignal (container * v1.Container ) (stopsignal * runtimeapi.Signal ) {
496
+ if utilfeature .DefaultFeatureGate .Enabled (features .ContainerStopSignals ) {
497
+ if container .Lifecycle != nil && container .Lifecycle .StopSignal != nil {
498
+ var signalValue runtimeapi.Signal
499
+ signalStr := string (* container .Lifecycle .StopSignal )
500
+ signalValue = signalNameToRuntimeEnum [signalStr ]
501
+ return & signalValue
502
+ } else {
503
+ return nil
504
+ }
505
+ }
506
+
507
+ return nil
508
+ }
509
+
510
+ func runtimeSignalToString (signal runtimeapi.Signal ) * v1.Signal {
511
+ var convertedSignal v1.Signal
512
+ for key , value := range signalNameToRuntimeEnum {
513
+ if value == signal {
514
+ convertedSignal = v1 .Signal (key )
515
+ }
516
+ }
517
+
518
+ return & convertedSignal
519
+ }
0 commit comments