Update bootstrap API log level definition

Avoid using logrus concepts in the API, use slog style log levels with
integer values and 0 meaning the default "info" level.

Signed-off-by: Derek McGowan <derek@mcg.dev>
This commit is contained in:
Derek McGowan
2026-04-10 11:53:12 -07:00
parent a755ca16e5
commit 2c102c6cbe
10 changed files with 307 additions and 278 deletions

View File

@@ -53,39 +53,40 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// LogLevel defines log verbosity levels independent of any specific
// logging library.
// LogLevel defines log verbosity. INFO = 0, more critical levels are
// positive, and more verbose levels are negative. This is an open enum;
// unknown numeric values are preserved on the wire.
type LogLevel int32
const (
LogLevel_LOG_LEVEL_UNSPECIFIED LogLevel = 0
LogLevel_LOG_LEVEL_TRACE LogLevel = 1
LogLevel_LOG_LEVEL_DEBUG LogLevel = 2
LogLevel_LOG_LEVEL_INFO LogLevel = 3
LogLevel_LOG_LEVEL_WARN LogLevel = 4
LogLevel_LOG_LEVEL_ERROR LogLevel = 5
LogLevel_LOG_LEVEL_FATAL LogLevel = 6
LogLevel_LOG_LEVEL_INFO LogLevel = 0
LogLevel_LOG_LEVEL_TRACE LogLevel = -8
LogLevel_LOG_LEVEL_DEBUG LogLevel = -4
LogLevel_LOG_LEVEL_WARN LogLevel = 4
LogLevel_LOG_LEVEL_ERROR LogLevel = 8
LogLevel_LOG_LEVEL_FATAL LogLevel = 10
LogLevel_LOG_LEVEL_PANIC LogLevel = 12
)
// Enum value maps for LogLevel.
var (
LogLevel_name = map[int32]string{
0: "LOG_LEVEL_UNSPECIFIED",
1: "LOG_LEVEL_TRACE",
2: "LOG_LEVEL_DEBUG",
3: "LOG_LEVEL_INFO",
4: "LOG_LEVEL_WARN",
5: "LOG_LEVEL_ERROR",
6: "LOG_LEVEL_FATAL",
0: "LOG_LEVEL_INFO",
-8: "LOG_LEVEL_TRACE",
-4: "LOG_LEVEL_DEBUG",
4: "LOG_LEVEL_WARN",
8: "LOG_LEVEL_ERROR",
10: "LOG_LEVEL_FATAL",
12: "LOG_LEVEL_PANIC",
}
LogLevel_value = map[string]int32{
"LOG_LEVEL_UNSPECIFIED": 0,
"LOG_LEVEL_TRACE": 1,
"LOG_LEVEL_DEBUG": 2,
"LOG_LEVEL_INFO": 3,
"LOG_LEVEL_WARN": 4,
"LOG_LEVEL_ERROR": 5,
"LOG_LEVEL_FATAL": 6,
"LOG_LEVEL_INFO": 0,
"LOG_LEVEL_TRACE": -8,
"LOG_LEVEL_DEBUG": -4,
"LOG_LEVEL_WARN": 4,
"LOG_LEVEL_ERROR": 8,
"LOG_LEVEL_FATAL": 10,
"LOG_LEVEL_PANIC": 12,
}
)
@@ -172,6 +173,9 @@ type BootstrapParams struct {
// Namespace for the container
Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
// Requested shim log level.
// INFO = 0, more critical levels are positive, and more verbose
// levels are negative. This is an open enum; shims should treat
// unrecognized values by mapping to the nearest known level.
LogLevel LogLevel `protobuf:"varint,3,opt,name=log_level,json=logLevel,proto3,enum=containerd.runtime.bootstrap.v1.LogLevel" json:"log_level,omitempty"`
// containerd daemon version that is launching this shim.
ContainerdVersion string `protobuf:"bytes,4,opt,name=containerd_version,json=containerdVersion,proto3" json:"containerd_version,omitempty"`
@@ -237,7 +241,7 @@ func (x *BootstrapParams) GetLogLevel() LogLevel {
if x != nil {
return x.LogLevel
}
return LogLevel_LOG_LEVEL_UNSPECIFIED
return LogLevel_LOG_LEVEL_INFO
}
func (x *BootstrapParams) GetContainerdVersion() string {
@@ -477,25 +481,26 @@ var file_runtime_bootstrap_v1_bootstrap_proto_rawDesc = []byte{
0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74,
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0xa1,
0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x15, 0x4c,
0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45,
0x56, 0x45, 0x4c, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x4c,
0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x02,
0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x49, 0x4e,
0x46, 0x4f, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45,
0x4c, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f,
0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x13, 0x0a,
0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x46, 0x41, 0x54, 0x41, 0x4c,
0x10, 0x06, 0x2a, 0x28, 0x0a, 0x0a, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
0x12, 0x1a, 0x0a, 0x16, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55,
0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x42, 0x45, 0x5a, 0x43,
0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61,
0x69, 0x6e, 0x65, 0x72, 0x64, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64,
0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x62, 0x6f, 0x6f,
0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x2f, 0x76, 0x31, 0x3b, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74,
0x72, 0x61, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0xad,
0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x0e, 0x4c,
0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x00, 0x12,
0x1c, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x54, 0x52, 0x41,
0x43, 0x45, 0x10, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x12, 0x1c, 0x0a,
0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47,
0x10, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4c,
0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x04, 0x12,
0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x52, 0x52,
0x4f, 0x52, 0x10, 0x08, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45,
0x4c, 0x5f, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47,
0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x50, 0x41, 0x4e, 0x49, 0x43, 0x10, 0x0c, 0x2a, 0x28,
0x0a, 0x0a, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x16,
0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x42, 0x45, 0x5a, 0x43, 0x67, 0x69, 0x74, 0x68,
0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
0x64, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2f, 0x61, 0x70, 0x69,
0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72,
0x61, 0x70, 0x2f, 0x76, 0x31, 0x3b, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@@ -48,6 +48,9 @@ message BootstrapParams {
string namespace = 2;
// Requested shim log level.
// INFO = 0, more critical levels are positive, and more verbose
// levels are negative. This is an open enum; shims should treat
// unrecognized values by mapping to the nearest known level.
LogLevel log_level = 3;
// containerd daemon version that is launching this shim.
@@ -100,16 +103,17 @@ message BootstrapResult {
map<string, string> metadata = 5;
}
// LogLevel defines log verbosity levels independent of any specific
// logging library.
// LogLevel defines log verbosity. INFO = 0, more critical levels are
// positive, and more verbose levels are negative. This is an open enum;
// unknown numeric values are preserved on the wire.
enum LogLevel {
LOG_LEVEL_UNSPECIFIED = 0;
LOG_LEVEL_TRACE = 1;
LOG_LEVEL_DEBUG = 2;
LOG_LEVEL_INFO = 3;
LOG_LEVEL_WARN = 4;
LOG_LEVEL_ERROR = 5;
LOG_LEVEL_FATAL = 6;
LOG_LEVEL_INFO = 0;
LOG_LEVEL_TRACE = -8;
LOG_LEVEL_DEBUG = -4;
LOG_LEVEL_WARN = 4;
LOG_LEVEL_ERROR = 8;
LOG_LEVEL_FATAL = 10;
LOG_LEVEL_PANIC = 12;
}
// Capability defines optional features that can be negotiated between

View File

@@ -18,14 +18,15 @@ package bootstrap
import (
"fmt"
"strconv"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/types/known/anypb"
)
// LogLevelFromLogrus converts a logrus log level string (e.g. "debug", "info")
// to a LogLevel enum value. Returns LOG_LEVEL_UNSPECIFIED for unrecognized strings.
func LogLevelFromLogrus(s string) LogLevel {
// LogLevelFromString converts a log level string (e.g. "debug", "info") to a
// LogLevel enum value. The accepted strings are compatible with logrus level names.
func LogLevelFromString(s string) LogLevel {
switch s {
case "trace":
return LogLevel_LOG_LEVEL_TRACE
@@ -39,8 +40,13 @@ func LogLevelFromLogrus(s string) LogLevel {
return LogLevel_LOG_LEVEL_ERROR
case "fatal":
return LogLevel_LOG_LEVEL_FATAL
case "panic":
return LogLevel_LOG_LEVEL_PANIC
default:
return LogLevel_LOG_LEVEL_UNSPECIFIED
if v, err := strconv.ParseInt(s, 10, 32); err == nil {
return LogLevel(v)
}
return LogLevel_LOG_LEVEL_INFO
}
}