feat: expose kernel cmdline as a resource

Fixes #11279

Co-authored-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
This commit is contained in:
Andrey Smirnov 2025-07-01 17:02:07 +04:00 committed by Mateusz Urbanek
parent 4c6b3b14d9
commit 3801413309
No known key found for this signature in database
GPG Key ID: F16F84591E26D77F
14 changed files with 556 additions and 86 deletions

View File

@ -42,6 +42,11 @@ message ExtensionServiceConfigStatusSpec {
string spec_version = 1;
}
// KernelCmdlineSpec presents kernel command line (contents of /proc/cmdline).
message KernelCmdlineSpec {
string cmdline = 1;
}
// KernelModuleSpecSpec describes Linux kernel module to load.
message KernelModuleSpecSpec {
string name = 1;

View File

@ -31,7 +31,7 @@ Talos is built with Go 1.24.4.
[notes.macos-qemu]
title = "Qemu provisioner on MacOS"
description = """\
description = """\
On MacOS `talosctl cluster create` command now supports the Qemu provisioner in addition to the Docker provisioner.
"""
@ -76,6 +76,12 @@ This implies that all image references should contain the tag, even if the image
description = """\
Talos now supports zswap, a compressed cache for swap pages.
This feature can be enabled by using [ZswapConfig](https://www.talos.dev/v1.11/reference/configuration/block/zswapconfig/) document in the machine configuration.
"""
[notes.cmdline]
title = "Kernel Command Line"
description = """\
Talos now exposes the kernel command line as a KernelCmdline resource (`talosctl get cmdline`).
"""
[make_deps]

View File

@ -0,0 +1,75 @@
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
package runtime
import (
"context"
"fmt"
"os"
"github.com/cosi-project/runtime/pkg/controller"
"github.com/cosi-project/runtime/pkg/safe"
"go.uber.org/zap"
machineruntime "github.com/siderolabs/talos/internal/app/machined/pkg/runtime"
"github.com/siderolabs/talos/pkg/machinery/resources/runtime"
)
// KernelCmdlineController presents /proc/cmdline as a resource.
type KernelCmdlineController struct {
V1Alpha1Mode machineruntime.Mode
}
// Name implements controller.Controller interface.
func (ctrl *KernelCmdlineController) Name() string {
return "runtime.KernelCmdlineController"
}
// Inputs implements controller.Controller interface.
func (ctrl *KernelCmdlineController) Inputs() []controller.Input {
return nil
}
// Outputs implements controller.Controller interface.
func (ctrl *KernelCmdlineController) Outputs() []controller.Output {
return []controller.Output{
{
Type: runtime.KernelCmdlineType,
Kind: controller.OutputExclusive,
},
}
}
// Run implements controller.Controller interface.
func (ctrl *KernelCmdlineController) Run(ctx context.Context, r controller.Runtime, _ *zap.Logger) error {
if ctrl.V1Alpha1Mode.InContainer() {
// no cmdline in containers
return nil
}
select {
case <-ctx.Done():
return nil
case <-r.EventCh():
}
contents, err := os.ReadFile("/proc/cmdline")
if err != nil {
return fmt.Errorf("error reading /proc/cmdline: %w", err)
}
if err := safe.WriterModify(ctx, r,
runtime.NewKernelCmdline(),
func(res *runtime.KernelCmdline) error {
res.TypedSpec().Cmdline = string(contents)
return nil
},
); err != nil {
return fmt.Errorf("error updating KernelCmdline resource: %w", err)
}
return nil
}

View File

@ -0,0 +1,40 @@
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
package runtime_test
import (
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/suite"
"github.com/siderolabs/talos/internal/app/machined/pkg/controllers/ctest"
runtimectrl "github.com/siderolabs/talos/internal/app/machined/pkg/controllers/runtime"
"github.com/siderolabs/talos/pkg/machinery/resources/runtime"
)
func TestKernelCmdlineSuite(t *testing.T) {
t.Parallel()
suite.Run(t, &KernelCmdlineSuite{
DefaultSuite: ctest.DefaultSuite{
Timeout: 5 * time.Second,
AfterSetup: func(suite *ctest.DefaultSuite) {
suite.Require().NoError(suite.Runtime().RegisterController(&runtimectrl.KernelCmdlineController{}))
},
},
})
}
type KernelCmdlineSuite struct {
ctest.DefaultSuite
}
func (suite *KernelCmdlineSuite) TestKernelCmdline() {
ctest.AssertResource(suite, runtime.KernelCmdlineID, func(res *runtime.KernelCmdline, asrt *assert.Assertions) {
asrt.NotEmpty(res.TypedSpec().Cmdline)
})
}

View File

@ -332,6 +332,9 @@ func (ctrl *Controller) Run(ctx context.Context, drainer *runtime.Drainer) error
ConfigPath: constants.ExtensionServiceConfigPath,
},
&runtimecontrollers.ExtensionStatusController{},
&runtimecontrollers.KernelCmdlineController{
V1Alpha1Mode: ctrl.v1alpha1Runtime.State().Platform().Mode(),
},
&runtimecontrollers.KernelModuleConfigController{},
&runtimecontrollers.KernelModuleSpecController{
V1Alpha1Mode: ctrl.v1alpha1Runtime.State().Platform().Mode(),

View File

@ -208,6 +208,7 @@ func NewState() (*State, error) {
&runtime.ExtensionServiceConfig{},
&runtime.ExtensionServiceConfigStatus{},
&runtime.ExtensionStatus{},
&runtime.KernelCmdline{},
&runtime.KernelModuleSpec{},
&runtime.KernelParamSpec{},
&runtime.KernelParamDefaultSpec{},

View File

@ -0,0 +1,67 @@
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
//go:build integration_api
package api
import (
"context"
"time"
"github.com/cosi-project/runtime/pkg/resource"
"github.com/cosi-project/runtime/pkg/resource/rtestutils"
"github.com/stretchr/testify/assert"
"github.com/siderolabs/talos/internal/integration/base"
"github.com/siderolabs/talos/pkg/machinery/client"
"github.com/siderolabs/talos/pkg/machinery/resources/runtime"
)
// KernelSuite ...
type KernelSuite struct {
base.APISuite
ctx context.Context //nolint:containedctx
ctxCancel context.CancelFunc
}
// SuiteName ...
func (suite *KernelSuite) SuiteName() string {
return "api.KernelSuite"
}
// SetupTest ...
func (suite *KernelSuite) SetupTest() {
suite.ctx, suite.ctxCancel = context.WithTimeout(context.Background(), 10*time.Second)
if !suite.Capabilities().RunsTalosKernel {
suite.T().Skip("skipping kernel test since Talos kernel is not running")
}
}
// TearDownTest ...
func (suite *KernelSuite) TearDownTest() {
if suite.ctxCancel != nil {
suite.ctxCancel()
}
}
// TestCmdline tests the /proc/cmdline resource.
func (suite *KernelSuite) TestCmdline() {
node := suite.RandomDiscoveredNodeInternalIP()
ctx := client.WithNode(suite.ctx, node)
suite.T().Logf("using node %s", node)
rtestutils.AssertResources(ctx, suite.T(), suite.Client.COSI, []resource.ID{runtime.KernelCmdlineID},
func(res *runtime.KernelCmdline, asrt *assert.Assertions) {
asrt.NotEmpty(res.TypedSpec().Cmdline, "kernel cmdline should not be empty")
},
)
}
func init() {
allSuites = append(allSuites, new(KernelSuite))
}

View File

@ -320,6 +320,51 @@ func (x *ExtensionServiceConfigStatusSpec) GetSpecVersion() string {
return ""
}
// KernelCmdlineSpec presents kernel command line (contents of /proc/cmdline).
type KernelCmdlineSpec struct {
state protoimpl.MessageState `protogen:"open.v1"`
Cmdline string `protobuf:"bytes,1,opt,name=cmdline,proto3" json:"cmdline,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *KernelCmdlineSpec) Reset() {
*x = KernelCmdlineSpec{}
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *KernelCmdlineSpec) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*KernelCmdlineSpec) ProtoMessage() {}
func (x *KernelCmdlineSpec) ProtoReflect() protoreflect.Message {
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[6]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use KernelCmdlineSpec.ProtoReflect.Descriptor instead.
func (*KernelCmdlineSpec) Descriptor() ([]byte, []int) {
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{6}
}
func (x *KernelCmdlineSpec) GetCmdline() string {
if x != nil {
return x.Cmdline
}
return ""
}
// KernelModuleSpecSpec describes Linux kernel module to load.
type KernelModuleSpecSpec struct {
state protoimpl.MessageState `protogen:"open.v1"`
@ -331,7 +376,7 @@ type KernelModuleSpecSpec struct {
func (x *KernelModuleSpecSpec) Reset() {
*x = KernelModuleSpecSpec{}
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[6]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -343,7 +388,7 @@ func (x *KernelModuleSpecSpec) String() string {
func (*KernelModuleSpecSpec) ProtoMessage() {}
func (x *KernelModuleSpecSpec) ProtoReflect() protoreflect.Message {
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[6]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[7]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -356,7 +401,7 @@ func (x *KernelModuleSpecSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use KernelModuleSpecSpec.ProtoReflect.Descriptor instead.
func (*KernelModuleSpecSpec) Descriptor() ([]byte, []int) {
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{6}
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{7}
}
func (x *KernelModuleSpecSpec) GetName() string {
@ -384,7 +429,7 @@ type KernelParamSpecSpec struct {
func (x *KernelParamSpecSpec) Reset() {
*x = KernelParamSpecSpec{}
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[7]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -396,7 +441,7 @@ func (x *KernelParamSpecSpec) String() string {
func (*KernelParamSpecSpec) ProtoMessage() {}
func (x *KernelParamSpecSpec) ProtoReflect() protoreflect.Message {
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[7]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[8]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -409,7 +454,7 @@ func (x *KernelParamSpecSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use KernelParamSpecSpec.ProtoReflect.Descriptor instead.
func (*KernelParamSpecSpec) Descriptor() ([]byte, []int) {
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{7}
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{8}
}
func (x *KernelParamSpecSpec) GetValue() string {
@ -438,7 +483,7 @@ type KernelParamStatusSpec struct {
func (x *KernelParamStatusSpec) Reset() {
*x = KernelParamStatusSpec{}
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[8]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -450,7 +495,7 @@ func (x *KernelParamStatusSpec) String() string {
func (*KernelParamStatusSpec) ProtoMessage() {}
func (x *KernelParamStatusSpec) ProtoReflect() protoreflect.Message {
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[8]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[9]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -463,7 +508,7 @@ func (x *KernelParamStatusSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use KernelParamStatusSpec.ProtoReflect.Descriptor instead.
func (*KernelParamStatusSpec) Descriptor() ([]byte, []int) {
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{8}
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{9}
}
func (x *KernelParamStatusSpec) GetCurrent() string {
@ -497,7 +542,7 @@ type KmsgLogConfigSpec struct {
func (x *KmsgLogConfigSpec) Reset() {
*x = KmsgLogConfigSpec{}
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[9]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -509,7 +554,7 @@ func (x *KmsgLogConfigSpec) String() string {
func (*KmsgLogConfigSpec) ProtoMessage() {}
func (x *KmsgLogConfigSpec) ProtoReflect() protoreflect.Message {
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[9]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[10]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -522,7 +567,7 @@ func (x *KmsgLogConfigSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use KmsgLogConfigSpec.ProtoReflect.Descriptor instead.
func (*KmsgLogConfigSpec) Descriptor() ([]byte, []int) {
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{9}
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{10}
}
func (x *KmsgLogConfigSpec) GetDestinations() []*common.URL {
@ -543,7 +588,7 @@ type MachineStatusSpec struct {
func (x *MachineStatusSpec) Reset() {
*x = MachineStatusSpec{}
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[10]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -555,7 +600,7 @@ func (x *MachineStatusSpec) String() string {
func (*MachineStatusSpec) ProtoMessage() {}
func (x *MachineStatusSpec) ProtoReflect() protoreflect.Message {
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[10]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[11]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -568,7 +613,7 @@ func (x *MachineStatusSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use MachineStatusSpec.ProtoReflect.Descriptor instead.
func (*MachineStatusSpec) Descriptor() ([]byte, []int) {
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{10}
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{11}
}
func (x *MachineStatusSpec) GetStage() enums.RuntimeMachineStage {
@ -596,7 +641,7 @@ type MachineStatusStatus struct {
func (x *MachineStatusStatus) Reset() {
*x = MachineStatusStatus{}
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[11]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -608,7 +653,7 @@ func (x *MachineStatusStatus) String() string {
func (*MachineStatusStatus) ProtoMessage() {}
func (x *MachineStatusStatus) ProtoReflect() protoreflect.Message {
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[11]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[12]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -621,7 +666,7 @@ func (x *MachineStatusStatus) ProtoReflect() protoreflect.Message {
// Deprecated: Use MachineStatusStatus.ProtoReflect.Descriptor instead.
func (*MachineStatusStatus) Descriptor() ([]byte, []int) {
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{11}
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{12}
}
func (x *MachineStatusStatus) GetReady() bool {
@ -649,7 +694,7 @@ type MaintenanceServiceConfigSpec struct {
func (x *MaintenanceServiceConfigSpec) Reset() {
*x = MaintenanceServiceConfigSpec{}
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[12]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -661,7 +706,7 @@ func (x *MaintenanceServiceConfigSpec) String() string {
func (*MaintenanceServiceConfigSpec) ProtoMessage() {}
func (x *MaintenanceServiceConfigSpec) ProtoReflect() protoreflect.Message {
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[12]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[13]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -674,7 +719,7 @@ func (x *MaintenanceServiceConfigSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use MaintenanceServiceConfigSpec.ProtoReflect.Descriptor instead.
func (*MaintenanceServiceConfigSpec) Descriptor() ([]byte, []int) {
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{12}
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{13}
}
func (x *MaintenanceServiceConfigSpec) GetListenAddress() string {
@ -701,7 +746,7 @@ type MetaKeySpec struct {
func (x *MetaKeySpec) Reset() {
*x = MetaKeySpec{}
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[13]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -713,7 +758,7 @@ func (x *MetaKeySpec) String() string {
func (*MetaKeySpec) ProtoMessage() {}
func (x *MetaKeySpec) ProtoReflect() protoreflect.Message {
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[13]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[14]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -726,7 +771,7 @@ func (x *MetaKeySpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use MetaKeySpec.ProtoReflect.Descriptor instead.
func (*MetaKeySpec) Descriptor() ([]byte, []int) {
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{13}
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{14}
}
func (x *MetaKeySpec) GetValue() string {
@ -746,7 +791,7 @@ type MetaLoadedSpec struct {
func (x *MetaLoadedSpec) Reset() {
*x = MetaLoadedSpec{}
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[14]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -758,7 +803,7 @@ func (x *MetaLoadedSpec) String() string {
func (*MetaLoadedSpec) ProtoMessage() {}
func (x *MetaLoadedSpec) ProtoReflect() protoreflect.Message {
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[14]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[15]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -771,7 +816,7 @@ func (x *MetaLoadedSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use MetaLoadedSpec.ProtoReflect.Descriptor instead.
func (*MetaLoadedSpec) Descriptor() ([]byte, []int) {
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{14}
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{15}
}
func (x *MetaLoadedSpec) GetDone() bool {
@ -796,7 +841,7 @@ type MountStatusSpec struct {
func (x *MountStatusSpec) Reset() {
*x = MountStatusSpec{}
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[15]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -808,7 +853,7 @@ func (x *MountStatusSpec) String() string {
func (*MountStatusSpec) ProtoMessage() {}
func (x *MountStatusSpec) ProtoReflect() protoreflect.Message {
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[15]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[16]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -821,7 +866,7 @@ func (x *MountStatusSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use MountStatusSpec.ProtoReflect.Descriptor instead.
func (*MountStatusSpec) Descriptor() ([]byte, []int) {
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{15}
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{16}
}
func (x *MountStatusSpec) GetSource() string {
@ -886,7 +931,7 @@ type PlatformMetadataSpec struct {
func (x *PlatformMetadataSpec) Reset() {
*x = PlatformMetadataSpec{}
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[16]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -898,7 +943,7 @@ func (x *PlatformMetadataSpec) String() string {
func (*PlatformMetadataSpec) ProtoMessage() {}
func (x *PlatformMetadataSpec) ProtoReflect() protoreflect.Message {
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[16]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[17]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -911,7 +956,7 @@ func (x *PlatformMetadataSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use PlatformMetadataSpec.ProtoReflect.Descriptor instead.
func (*PlatformMetadataSpec) Descriptor() ([]byte, []int) {
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{16}
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{17}
}
func (x *PlatformMetadataSpec) GetPlatform() string {
@ -1005,7 +1050,7 @@ type SecurityStateSpec struct {
func (x *SecurityStateSpec) Reset() {
*x = SecurityStateSpec{}
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[17]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -1017,7 +1062,7 @@ func (x *SecurityStateSpec) String() string {
func (*SecurityStateSpec) ProtoMessage() {}
func (x *SecurityStateSpec) ProtoReflect() protoreflect.Message {
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[17]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[18]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -1030,7 +1075,7 @@ func (x *SecurityStateSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use SecurityStateSpec.ProtoReflect.Descriptor instead.
func (*SecurityStateSpec) Descriptor() ([]byte, []int) {
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{17}
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{18}
}
func (x *SecurityStateSpec) GetSecureBoot() bool {
@ -1078,7 +1123,7 @@ type UniqueMachineTokenSpec struct {
func (x *UniqueMachineTokenSpec) Reset() {
*x = UniqueMachineTokenSpec{}
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[18]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -1090,7 +1135,7 @@ func (x *UniqueMachineTokenSpec) String() string {
func (*UniqueMachineTokenSpec) ProtoMessage() {}
func (x *UniqueMachineTokenSpec) ProtoReflect() protoreflect.Message {
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[18]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[19]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -1103,7 +1148,7 @@ func (x *UniqueMachineTokenSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use UniqueMachineTokenSpec.ProtoReflect.Descriptor instead.
func (*UniqueMachineTokenSpec) Descriptor() ([]byte, []int) {
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{18}
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{19}
}
func (x *UniqueMachineTokenSpec) GetToken() string {
@ -1124,7 +1169,7 @@ type UnmetCondition struct {
func (x *UnmetCondition) Reset() {
*x = UnmetCondition{}
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[19]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -1136,7 +1181,7 @@ func (x *UnmetCondition) String() string {
func (*UnmetCondition) ProtoMessage() {}
func (x *UnmetCondition) ProtoReflect() protoreflect.Message {
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[19]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[20]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -1149,7 +1194,7 @@ func (x *UnmetCondition) ProtoReflect() protoreflect.Message {
// Deprecated: Use UnmetCondition.ProtoReflect.Descriptor instead.
func (*UnmetCondition) Descriptor() ([]byte, []int) {
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{19}
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{20}
}
func (x *UnmetCondition) GetName() string {
@ -1177,7 +1222,7 @@ type WatchdogTimerConfigSpec struct {
func (x *WatchdogTimerConfigSpec) Reset() {
*x = WatchdogTimerConfigSpec{}
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[20]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -1189,7 +1234,7 @@ func (x *WatchdogTimerConfigSpec) String() string {
func (*WatchdogTimerConfigSpec) ProtoMessage() {}
func (x *WatchdogTimerConfigSpec) ProtoReflect() protoreflect.Message {
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[20]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[21]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -1202,7 +1247,7 @@ func (x *WatchdogTimerConfigSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use WatchdogTimerConfigSpec.ProtoReflect.Descriptor instead.
func (*WatchdogTimerConfigSpec) Descriptor() ([]byte, []int) {
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{20}
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{21}
}
func (x *WatchdogTimerConfigSpec) GetDevice() string {
@ -1231,7 +1276,7 @@ type WatchdogTimerStatusSpec struct {
func (x *WatchdogTimerStatusSpec) Reset() {
*x = WatchdogTimerStatusSpec{}
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[21]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -1243,7 +1288,7 @@ func (x *WatchdogTimerStatusSpec) String() string {
func (*WatchdogTimerStatusSpec) ProtoMessage() {}
func (x *WatchdogTimerStatusSpec) ProtoReflect() protoreflect.Message {
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[21]
mi := &file_resource_definitions_runtime_runtime_proto_msgTypes[22]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -1256,7 +1301,7 @@ func (x *WatchdogTimerStatusSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use WatchdogTimerStatusSpec.ProtoReflect.Descriptor instead.
func (*WatchdogTimerStatusSpec) Descriptor() ([]byte, []int) {
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{21}
return file_resource_definitions_runtime_runtime_proto_rawDescGZIP(), []int{22}
}
func (x *WatchdogTimerStatusSpec) GetDevice() string {
@ -1300,7 +1345,9 @@ const file_resource_definitions_runtime_runtime_proto_rawDesc = "" +
"\x05files\x18\x01 \x03(\v2>.talos.resource.definitions.runtime.ExtensionServiceConfigFileR\x05files\x12 \n" +
"\venvironment\x18\x02 \x03(\tR\venvironment\"E\n" +
" ExtensionServiceConfigStatusSpec\x12!\n" +
"\fspec_version\x18\x01 \x01(\tR\vspecVersion\"J\n" +
"\fspec_version\x18\x01 \x01(\tR\vspecVersion\"-\n" +
"\x11KernelCmdlineSpec\x12\x18\n" +
"\acmdline\x18\x01 \x01(\tR\acmdline\"J\n" +
"\x14KernelModuleSpecSpec\x12\x12\n" +
"\x04name\x18\x01 \x01(\tR\x04name\x12\x1e\n" +
"\n" +
@ -1386,7 +1433,7 @@ func file_resource_definitions_runtime_runtime_proto_rawDescGZIP() []byte {
return file_resource_definitions_runtime_runtime_proto_rawDescData
}
var file_resource_definitions_runtime_runtime_proto_msgTypes = make([]protoimpl.MessageInfo, 23)
var file_resource_definitions_runtime_runtime_proto_msgTypes = make([]protoimpl.MessageInfo, 24)
var file_resource_definitions_runtime_runtime_proto_goTypes = []any{
(*DevicesStatusSpec)(nil), // 0: talos.resource.definitions.runtime.DevicesStatusSpec
(*DiagnosticSpec)(nil), // 1: talos.resource.definitions.runtime.DiagnosticSpec
@ -1394,41 +1441,42 @@ var file_resource_definitions_runtime_runtime_proto_goTypes = []any{
(*ExtensionServiceConfigFile)(nil), // 3: talos.resource.definitions.runtime.ExtensionServiceConfigFile
(*ExtensionServiceConfigSpec)(nil), // 4: talos.resource.definitions.runtime.ExtensionServiceConfigSpec
(*ExtensionServiceConfigStatusSpec)(nil), // 5: talos.resource.definitions.runtime.ExtensionServiceConfigStatusSpec
(*KernelModuleSpecSpec)(nil), // 6: talos.resource.definitions.runtime.KernelModuleSpecSpec
(*KernelParamSpecSpec)(nil), // 7: talos.resource.definitions.runtime.KernelParamSpecSpec
(*KernelParamStatusSpec)(nil), // 8: talos.resource.definitions.runtime.KernelParamStatusSpec
(*KmsgLogConfigSpec)(nil), // 9: talos.resource.definitions.runtime.KmsgLogConfigSpec
(*MachineStatusSpec)(nil), // 10: talos.resource.definitions.runtime.MachineStatusSpec
(*MachineStatusStatus)(nil), // 11: talos.resource.definitions.runtime.MachineStatusStatus
(*MaintenanceServiceConfigSpec)(nil), // 12: talos.resource.definitions.runtime.MaintenanceServiceConfigSpec
(*MetaKeySpec)(nil), // 13: talos.resource.definitions.runtime.MetaKeySpec
(*MetaLoadedSpec)(nil), // 14: talos.resource.definitions.runtime.MetaLoadedSpec
(*MountStatusSpec)(nil), // 15: talos.resource.definitions.runtime.MountStatusSpec
(*PlatformMetadataSpec)(nil), // 16: talos.resource.definitions.runtime.PlatformMetadataSpec
(*SecurityStateSpec)(nil), // 17: talos.resource.definitions.runtime.SecurityStateSpec
(*UniqueMachineTokenSpec)(nil), // 18: talos.resource.definitions.runtime.UniqueMachineTokenSpec
(*UnmetCondition)(nil), // 19: talos.resource.definitions.runtime.UnmetCondition
(*WatchdogTimerConfigSpec)(nil), // 20: talos.resource.definitions.runtime.WatchdogTimerConfigSpec
(*WatchdogTimerStatusSpec)(nil), // 21: talos.resource.definitions.runtime.WatchdogTimerStatusSpec
nil, // 22: talos.resource.definitions.runtime.PlatformMetadataSpec.TagsEntry
(*common.URL)(nil), // 23: common.URL
(enums.RuntimeMachineStage)(0), // 24: talos.resource.definitions.enums.RuntimeMachineStage
(*common.NetIP)(nil), // 25: common.NetIP
(enums.RuntimeSELinuxState)(0), // 26: talos.resource.definitions.enums.RuntimeSELinuxState
(*durationpb.Duration)(nil), // 27: google.protobuf.Duration
(*KernelCmdlineSpec)(nil), // 6: talos.resource.definitions.runtime.KernelCmdlineSpec
(*KernelModuleSpecSpec)(nil), // 7: talos.resource.definitions.runtime.KernelModuleSpecSpec
(*KernelParamSpecSpec)(nil), // 8: talos.resource.definitions.runtime.KernelParamSpecSpec
(*KernelParamStatusSpec)(nil), // 9: talos.resource.definitions.runtime.KernelParamStatusSpec
(*KmsgLogConfigSpec)(nil), // 10: talos.resource.definitions.runtime.KmsgLogConfigSpec
(*MachineStatusSpec)(nil), // 11: talos.resource.definitions.runtime.MachineStatusSpec
(*MachineStatusStatus)(nil), // 12: talos.resource.definitions.runtime.MachineStatusStatus
(*MaintenanceServiceConfigSpec)(nil), // 13: talos.resource.definitions.runtime.MaintenanceServiceConfigSpec
(*MetaKeySpec)(nil), // 14: talos.resource.definitions.runtime.MetaKeySpec
(*MetaLoadedSpec)(nil), // 15: talos.resource.definitions.runtime.MetaLoadedSpec
(*MountStatusSpec)(nil), // 16: talos.resource.definitions.runtime.MountStatusSpec
(*PlatformMetadataSpec)(nil), // 17: talos.resource.definitions.runtime.PlatformMetadataSpec
(*SecurityStateSpec)(nil), // 18: talos.resource.definitions.runtime.SecurityStateSpec
(*UniqueMachineTokenSpec)(nil), // 19: talos.resource.definitions.runtime.UniqueMachineTokenSpec
(*UnmetCondition)(nil), // 20: talos.resource.definitions.runtime.UnmetCondition
(*WatchdogTimerConfigSpec)(nil), // 21: talos.resource.definitions.runtime.WatchdogTimerConfigSpec
(*WatchdogTimerStatusSpec)(nil), // 22: talos.resource.definitions.runtime.WatchdogTimerStatusSpec
nil, // 23: talos.resource.definitions.runtime.PlatformMetadataSpec.TagsEntry
(*common.URL)(nil), // 24: common.URL
(enums.RuntimeMachineStage)(0), // 25: talos.resource.definitions.enums.RuntimeMachineStage
(*common.NetIP)(nil), // 26: common.NetIP
(enums.RuntimeSELinuxState)(0), // 27: talos.resource.definitions.enums.RuntimeSELinuxState
(*durationpb.Duration)(nil), // 28: google.protobuf.Duration
}
var file_resource_definitions_runtime_runtime_proto_depIdxs = []int32{
3, // 0: talos.resource.definitions.runtime.ExtensionServiceConfigSpec.files:type_name -> talos.resource.definitions.runtime.ExtensionServiceConfigFile
23, // 1: talos.resource.definitions.runtime.KmsgLogConfigSpec.destinations:type_name -> common.URL
24, // 2: talos.resource.definitions.runtime.MachineStatusSpec.stage:type_name -> talos.resource.definitions.enums.RuntimeMachineStage
11, // 3: talos.resource.definitions.runtime.MachineStatusSpec.status:type_name -> talos.resource.definitions.runtime.MachineStatusStatus
19, // 4: talos.resource.definitions.runtime.MachineStatusStatus.unmet_conditions:type_name -> talos.resource.definitions.runtime.UnmetCondition
25, // 5: talos.resource.definitions.runtime.MaintenanceServiceConfigSpec.reachable_addresses:type_name -> common.NetIP
22, // 6: talos.resource.definitions.runtime.PlatformMetadataSpec.tags:type_name -> talos.resource.definitions.runtime.PlatformMetadataSpec.TagsEntry
26, // 7: talos.resource.definitions.runtime.SecurityStateSpec.se_linux_state:type_name -> talos.resource.definitions.enums.RuntimeSELinuxState
27, // 8: talos.resource.definitions.runtime.WatchdogTimerConfigSpec.timeout:type_name -> google.protobuf.Duration
27, // 9: talos.resource.definitions.runtime.WatchdogTimerStatusSpec.timeout:type_name -> google.protobuf.Duration
27, // 10: talos.resource.definitions.runtime.WatchdogTimerStatusSpec.feed_interval:type_name -> google.protobuf.Duration
24, // 1: talos.resource.definitions.runtime.KmsgLogConfigSpec.destinations:type_name -> common.URL
25, // 2: talos.resource.definitions.runtime.MachineStatusSpec.stage:type_name -> talos.resource.definitions.enums.RuntimeMachineStage
12, // 3: talos.resource.definitions.runtime.MachineStatusSpec.status:type_name -> talos.resource.definitions.runtime.MachineStatusStatus
20, // 4: talos.resource.definitions.runtime.MachineStatusStatus.unmet_conditions:type_name -> talos.resource.definitions.runtime.UnmetCondition
26, // 5: talos.resource.definitions.runtime.MaintenanceServiceConfigSpec.reachable_addresses:type_name -> common.NetIP
23, // 6: talos.resource.definitions.runtime.PlatformMetadataSpec.tags:type_name -> talos.resource.definitions.runtime.PlatformMetadataSpec.TagsEntry
27, // 7: talos.resource.definitions.runtime.SecurityStateSpec.se_linux_state:type_name -> talos.resource.definitions.enums.RuntimeSELinuxState
28, // 8: talos.resource.definitions.runtime.WatchdogTimerConfigSpec.timeout:type_name -> google.protobuf.Duration
28, // 9: talos.resource.definitions.runtime.WatchdogTimerStatusSpec.timeout:type_name -> google.protobuf.Duration
28, // 10: talos.resource.definitions.runtime.WatchdogTimerStatusSpec.feed_interval:type_name -> google.protobuf.Duration
11, // [11:11] is the sub-list for method output_type
11, // [11:11] is the sub-list for method input_type
11, // [11:11] is the sub-list for extension type_name
@ -1447,7 +1495,7 @@ func file_resource_definitions_runtime_runtime_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_resource_definitions_runtime_runtime_proto_rawDesc), len(file_resource_definitions_runtime_runtime_proto_rawDesc)),
NumEnums: 0,
NumMessages: 23,
NumMessages: 24,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -298,6 +298,46 @@ func (m *ExtensionServiceConfigStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (
return len(dAtA) - i, nil
}
func (m *KernelCmdlineSpec) MarshalVT() (dAtA []byte, err error) {
if m == nil {
return nil, nil
}
size := m.SizeVT()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBufferVT(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *KernelCmdlineSpec) MarshalToVT(dAtA []byte) (int, error) {
size := m.SizeVT()
return m.MarshalToSizedBufferVT(dAtA[:size])
}
func (m *KernelCmdlineSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
if m == nil {
return 0, nil
}
i := len(dAtA)
_ = i
var l int
_ = l
if m.unknownFields != nil {
i -= len(m.unknownFields)
copy(dAtA[i:], m.unknownFields)
}
if len(m.Cmdline) > 0 {
i -= len(m.Cmdline)
copy(dAtA[i:], m.Cmdline)
i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Cmdline)))
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
func (m *KernelModuleSpecSpec) MarshalVT() (dAtA []byte, err error) {
if m == nil {
return nil, nil
@ -1338,6 +1378,20 @@ func (m *ExtensionServiceConfigStatusSpec) SizeVT() (n int) {
return n
}
func (m *KernelCmdlineSpec) SizeVT() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.Cmdline)
if l > 0 {
n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
}
n += len(m.unknownFields)
return n
}
func (m *KernelModuleSpecSpec) SizeVT() (n int) {
if m == nil {
return 0
@ -2284,6 +2338,89 @@ func (m *ExtensionServiceConfigStatusSpec) UnmarshalVT(dAtA []byte) error {
}
return nil
}
func (m *KernelCmdlineSpec) UnmarshalVT(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protohelpers.ErrIntOverflow
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: KernelCmdlineSpec: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: KernelCmdlineSpec: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Cmdline", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protohelpers.ErrIntOverflow
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return protohelpers.ErrInvalidLength
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return protohelpers.ErrInvalidLength
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Cmdline = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := protohelpers.Skip(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return protohelpers.ErrInvalidLength
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *KernelModuleSpecSpec) UnmarshalVT(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0

View File

@ -2,7 +2,7 @@
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
// Code generated by "deep-copy -type DevicesStatusSpec -type DiagnosticSpec -type EventSinkConfigSpec -type ExtensionServiceConfigSpec -type ExtensionServiceConfigStatusSpec -type KernelModuleSpecSpec -type KernelParamSpecSpec -type KernelParamStatusSpec -type KmsgLogConfigSpec -type MaintenanceServiceConfigSpec -type MaintenanceServiceRequestSpec -type MachineResetSignalSpec -type MachineStatusSpec -type MetaKeySpec -type MountStatusSpec -type PlatformMetadataSpec -type SecurityStateSpec -type MetaLoadedSpec -type UniqueMachineTokenSpec -type VersionSpec -type WatchdogTimerConfigSpec -type WatchdogTimerStatusSpec -header-file ../../../../hack/boilerplate.txt -o deep_copy.generated.go ."; DO NOT EDIT.
// Code generated by "deep-copy -type DevicesStatusSpec -type DiagnosticSpec -type EventSinkConfigSpec -type ExtensionServiceConfigSpec -type ExtensionServiceConfigStatusSpec -type KernelCmdlineSpec -type KernelModuleSpecSpec -type KernelParamSpecSpec -type KernelParamStatusSpec -type KmsgLogConfigSpec -type MaintenanceServiceConfigSpec -type MaintenanceServiceRequestSpec -type MachineResetSignalSpec -type MachineStatusSpec -type MetaKeySpec -type MountStatusSpec -type PlatformMetadataSpec -type SecurityStateSpec -type MetaLoadedSpec -type UniqueMachineTokenSpec -type VersionSpec -type WatchdogTimerConfigSpec -type WatchdogTimerStatusSpec -header-file ../../../../hack/boilerplate.txt -o deep_copy.generated.go ."; DO NOT EDIT.
package runtime
@ -53,6 +53,12 @@ func (o ExtensionServiceConfigStatusSpec) DeepCopy() ExtensionServiceConfigStatu
return cp
}
// DeepCopy generates a deep copy of KernelCmdlineSpec.
func (o KernelCmdlineSpec) DeepCopy() KernelCmdlineSpec {
var cp KernelCmdlineSpec = o
return cp
}
// DeepCopy generates a deep copy of KernelModuleSpecSpec.
func (o KernelModuleSpecSpec) DeepCopy() KernelModuleSpecSpec {
var cp KernelModuleSpecSpec = o

View File

@ -0,0 +1,65 @@
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
package runtime
import (
"github.com/cosi-project/runtime/pkg/resource"
"github.com/cosi-project/runtime/pkg/resource/meta"
"github.com/cosi-project/runtime/pkg/resource/protobuf"
"github.com/cosi-project/runtime/pkg/resource/typed"
"github.com/siderolabs/talos/pkg/machinery/proto"
)
// KernelCmdlineType is type of KernelCmdline resource.
const KernelCmdlineType = resource.Type("KernelCmdlines.runtime.talos.dev")
// KernelCmdline resource holds configuration for kernel message log streaming.
type KernelCmdline = typed.Resource[KernelCmdlineSpec, KernelCmdlineExtension]
// KernelCmdlineID is a resource ID for KernelCmdline.
const KernelCmdlineID resource.ID = "cmdline"
// KernelCmdlineSpec presents kernel command line (contents of /proc/cmdline).
//
//gotagsrewrite:gen
type KernelCmdlineSpec struct {
Cmdline string `yaml:"cmdline" protobuf:"1"`
}
// NewKernelCmdline initializes a KernelCmdline resource.
func NewKernelCmdline() *KernelCmdline {
return typed.NewResource[KernelCmdlineSpec, KernelCmdlineExtension](
resource.NewMetadata(NamespaceName, KernelCmdlineType, KernelCmdlineID, resource.VersionUndefined),
KernelCmdlineSpec{},
)
}
// KernelCmdlineExtension is auxiliary resource data for KernelCmdline.
type KernelCmdlineExtension struct{}
// ResourceDefinition implements meta.ResourceDefinitionProvider interface.
func (KernelCmdlineExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
return meta.ResourceDefinitionSpec{
Type: KernelCmdlineType,
Aliases: []resource.Type{"cmdline"},
DefaultNamespace: NamespaceName,
PrintColumns: []meta.PrintColumn{
{
Name: "Cmdline",
JSONPath: "{.cmdline}",
},
},
}
}
func init() {
proto.RegisterDefaultTypes()
err := protobuf.RegisterDynamic[KernelCmdlineSpec](KernelCmdlineType, &KernelCmdline{})
if err != nil {
panic(err)
}
}

View File

@ -10,7 +10,7 @@ import (
"github.com/siderolabs/talos/pkg/machinery/resources/v1alpha1"
)
//go:generate deep-copy -type DevicesStatusSpec -type DiagnosticSpec -type EventSinkConfigSpec -type ExtensionServiceConfigSpec -type ExtensionServiceConfigStatusSpec -type KernelModuleSpecSpec -type KernelParamSpecSpec -type KernelParamStatusSpec -type KmsgLogConfigSpec -type MaintenanceServiceConfigSpec -type MaintenanceServiceRequestSpec -type MachineResetSignalSpec -type MachineStatusSpec -type MetaKeySpec -type MountStatusSpec -type PlatformMetadataSpec -type SecurityStateSpec -type MetaLoadedSpec -type UniqueMachineTokenSpec -type VersionSpec -type WatchdogTimerConfigSpec -type WatchdogTimerStatusSpec -header-file ../../../../hack/boilerplate.txt -o deep_copy.generated.go .
//go:generate deep-copy -type DevicesStatusSpec -type DiagnosticSpec -type EventSinkConfigSpec -type ExtensionServiceConfigSpec -type ExtensionServiceConfigStatusSpec -type KernelCmdlineSpec -type KernelModuleSpecSpec -type KernelParamSpecSpec -type KernelParamStatusSpec -type KmsgLogConfigSpec -type MaintenanceServiceConfigSpec -type MaintenanceServiceRequestSpec -type MachineResetSignalSpec -type MachineStatusSpec -type MetaKeySpec -type MountStatusSpec -type PlatformMetadataSpec -type SecurityStateSpec -type MetaLoadedSpec -type UniqueMachineTokenSpec -type VersionSpec -type WatchdogTimerConfigSpec -type WatchdogTimerStatusSpec -header-file ../../../../hack/boilerplate.txt -o deep_copy.generated.go .
// NamespaceName contains configuration resources.
const NamespaceName resource.Namespace = v1alpha1.NamespaceName

View File

@ -28,6 +28,7 @@ func TestRegisterResource(t *testing.T) {
&runtime.Diagnostic{},
&runtime.EventSinkConfig{},
&runtime.ExtensionStatus{},
&runtime.KernelCmdline{},
&runtime.KernelModuleSpec{},
&runtime.KernelParamSpec{},
&runtime.KernelParamStatus{},

View File

@ -276,6 +276,7 @@ description: Talos gRPC API reference.
- [ExtensionServiceConfigFile](#talos.resource.definitions.runtime.ExtensionServiceConfigFile)
- [ExtensionServiceConfigSpec](#talos.resource.definitions.runtime.ExtensionServiceConfigSpec)
- [ExtensionServiceConfigStatusSpec](#talos.resource.definitions.runtime.ExtensionServiceConfigStatusSpec)
- [KernelCmdlineSpec](#talos.resource.definitions.runtime.KernelCmdlineSpec)
- [KernelModuleSpecSpec](#talos.resource.definitions.runtime.KernelModuleSpecSpec)
- [KernelParamSpecSpec](#talos.resource.definitions.runtime.KernelParamSpecSpec)
- [KernelParamStatusSpec](#talos.resource.definitions.runtime.KernelParamStatusSpec)
@ -5113,6 +5114,21 @@ ExtensionServiceConfigStatusSpec describes status of rendered extensions service
<a name="talos.resource.definitions.runtime.KernelCmdlineSpec"></a>
### KernelCmdlineSpec
KernelCmdlineSpec presents kernel command line (contents of /proc/cmdline).
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| cmdline | [string](#string) | | |
<a name="talos.resource.definitions.runtime.KernelModuleSpecSpec"></a>
### KernelModuleSpecSpec