Add LinuxDesktop protos and generated code (#62971)

This commit is contained in:
Przemko Robakowski
2026-01-21 07:56:10 +00:00
committed by GitHub
parent ea93862242
commit 1d16fbac8a
24 changed files with 4512 additions and 2424 deletions
+29 -7
View File
@@ -32,6 +32,7 @@ import (
v116 "github.com/gravitational/teleport/api/gen/proto/go/teleport/healthcheckconfig/v1"
v114 "github.com/gravitational/teleport/api/gen/proto/go/teleport/identitycenter/v1"
v15 "github.com/gravitational/teleport/api/gen/proto/go/teleport/kubewaitingcontainer/v1"
v121 "github.com/gravitational/teleport/api/gen/proto/go/teleport/linuxdesktop/v1"
v19 "github.com/gravitational/teleport/api/gen/proto/go/teleport/machineid/v1"
v16 "github.com/gravitational/teleport/api/gen/proto/go/teleport/notifications/v1"
v118 "github.com/gravitational/teleport/api/gen/proto/go/teleport/presence/v1"
@@ -202,6 +203,7 @@ type Event struct {
// *Event_Plugin
// *Event_AutoUpdateBotInstanceReport
// *Event_AppAuthConfig
// *Event_LinuxDesktop
Resource isEvent_Resource `protobuf_oneof:"Resource"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -980,6 +982,15 @@ func (x *Event) GetAppAuthConfig() *v120.AppAuthConfig {
return nil
}
func (x *Event) GetLinuxDesktop() *v121.LinuxDesktop {
if x != nil {
if x, ok := x.Resource.(*Event_LinuxDesktop); ok {
return x.LinuxDesktop
}
}
return nil
}
type isEvent_Resource interface {
isEvent_Resource()
}
@@ -1394,6 +1405,11 @@ type Event_AppAuthConfig struct {
AppAuthConfig *v120.AppAuthConfig `protobuf:"bytes,86,opt,name=AppAuthConfig,proto3,oneof"`
}
type Event_LinuxDesktop struct {
// LinuxDesktop is a resource for linux desktop.
LinuxDesktop *v121.LinuxDesktop `protobuf:"bytes,87,opt,name=LinuxDesktop,proto3,oneof"`
}
func (*Event_ResourceHeader) isEvent_Resource() {}
func (*Event_CertAuthority) isEvent_Resource() {}
@@ -1556,11 +1572,13 @@ func (*Event_AutoUpdateBotInstanceReport) isEvent_Resource() {}
func (*Event_AppAuthConfig) isEvent_Resource() {}
func (*Event_LinuxDesktop) isEvent_Resource() {}
var File_teleport_legacy_client_proto_event_proto protoreflect.FileDescriptor
const file_teleport_legacy_client_proto_event_proto_rawDesc = "" +
"\n" +
"(teleport/legacy/client/proto/event.proto\x12\x05proto\x1a'teleport/accesslist/v1/accesslist.proto\x1a?teleport/accessmonitoringrules/v1/access_monitoring_rules.proto\x1a-teleport/appauthconfig/v1/appauthconfig.proto\x1a'teleport/autoupdate/v1/autoupdate.proto\x1a5teleport/clusterconfig/v1/access_graph_settings.proto\x1a'teleport/crownjewel/v1/crownjewel.proto\x1a#teleport/dbobject/v1/dbobject.proto\x1a1teleport/discoveryconfig/v1/discoveryconfig.proto\x1a7teleport/healthcheckconfig/v1/health_check_config.proto\x1a/teleport/identitycenter/v1/identitycenter.proto\x1a;teleport/kubewaitingcontainer/v1/kubewaitingcontainer.proto\x1a!teleport/legacy/types/types.proto\x1a(teleport/machineid/v1/bot_instance.proto\x1a&teleport/machineid/v1/federation.proto\x1a-teleport/notifications/v1/notifications.proto\x1a'teleport/presence/v1/relay_server.proto\x1a+teleport/provisioning/v1/provisioning.proto\x1a:teleport/recordingencryption/v1/recording_encryption.proto\x1a*teleport/scopes/access/v1/assignment.proto\x1a$teleport/scopes/access/v1/role.proto\x1a'teleport/secreports/v1/secreports.proto\x1a/teleport/userloginstate/v1/userloginstate.proto\x1a1teleport/userprovisioning/v2/statichostuser.proto\x1a&teleport/usertasks/v1/user_tasks.proto\x1a+teleport/workloadidentity/v1/resource.proto\x1a6teleport/workloadidentity/v1/revocation_resource.proto\"\xb51\n" +
"(teleport/legacy/client/proto/event.proto\x12\x05proto\x1a'teleport/accesslist/v1/accesslist.proto\x1a?teleport/accessmonitoringrules/v1/access_monitoring_rules.proto\x1a-teleport/appauthconfig/v1/appauthconfig.proto\x1a'teleport/autoupdate/v1/autoupdate.proto\x1a5teleport/clusterconfig/v1/access_graph_settings.proto\x1a'teleport/crownjewel/v1/crownjewel.proto\x1a#teleport/dbobject/v1/dbobject.proto\x1a1teleport/discoveryconfig/v1/discoveryconfig.proto\x1a7teleport/healthcheckconfig/v1/health_check_config.proto\x1a/teleport/identitycenter/v1/identitycenter.proto\x1a;teleport/kubewaitingcontainer/v1/kubewaitingcontainer.proto\x1a!teleport/legacy/types/types.proto\x1a,teleport/linuxdesktop/v1/linux_desktop.proto\x1a(teleport/machineid/v1/bot_instance.proto\x1a&teleport/machineid/v1/federation.proto\x1a-teleport/notifications/v1/notifications.proto\x1a'teleport/presence/v1/relay_server.proto\x1a+teleport/provisioning/v1/provisioning.proto\x1a:teleport/recordingencryption/v1/recording_encryption.proto\x1a*teleport/scopes/access/v1/assignment.proto\x1a$teleport/scopes/access/v1/role.proto\x1a'teleport/secreports/v1/secreports.proto\x1a/teleport/userloginstate/v1/userloginstate.proto\x1a1teleport/userprovisioning/v2/statichostuser.proto\x1a&teleport/usertasks/v1/user_tasks.proto\x1a+teleport/workloadidentity/v1/resource.proto\x1a6teleport/workloadidentity/v1/revocation_resource.proto\"\x832\n" +
"\x05Event\x12$\n" +
"\x04Type\x18\x01 \x01(\x0e2\x10.proto.OperationR\x04Type\x12?\n" +
"\x0eResourceHeader\x18\x02 \x01(\v2\x15.types.ResourceHeaderH\x00R\x0eResourceHeader\x12>\n" +
@@ -1656,7 +1674,8 @@ const file_teleport_legacy_client_proto_event_proto_rawDesc = "" +
"\x13RecordingEncryption\x18S \x01(\v24.teleport.recordingencryption.v1.RecordingEncryptionH\x00R\x13RecordingEncryption\x12)\n" +
"\x06plugin\x18T \x01(\v2\x0f.types.PluginV1H\x00R\x06plugin\x12w\n" +
"\x1bAutoUpdateBotInstanceReport\x18U \x01(\v23.teleport.autoupdate.v1.AutoUpdateBotInstanceReportH\x00R\x1bAutoUpdateBotInstanceReport\x12P\n" +
"\rAppAuthConfig\x18V \x01(\v2(.teleport.appauthconfig.v1.AppAuthConfigH\x00R\rAppAuthConfigB\n" +
"\rAppAuthConfig\x18V \x01(\v2(.teleport.appauthconfig.v1.AppAuthConfigH\x00R\rAppAuthConfig\x12L\n" +
"\fLinuxDesktop\x18W \x01(\v2&.teleport.linuxdesktop.v1.LinuxDesktopH\x00R\fLinuxDesktopB\n" +
"\n" +
"\bResourceJ\x04\b\a\x10\bJ\x04\b1\x102J\x04\b?\x10@J\x04\bD\x10ER\x12ExternalCloudAuditR\x0eStaticHostUserR\x13AutoUpdateAgentPlan**\n" +
"\tOperation\x12\b\n" +
@@ -1760,6 +1779,7 @@ var file_teleport_legacy_client_proto_event_proto_goTypes = []any{
(*types.PluginV1)(nil), // 77: types.PluginV1
(*v111.AutoUpdateBotInstanceReport)(nil), // 78: teleport.autoupdate.v1.AutoUpdateBotInstanceReport
(*v120.AppAuthConfig)(nil), // 79: teleport.appauthconfig.v1.AppAuthConfig
(*v121.LinuxDesktop)(nil), // 80: teleport.linuxdesktop.v1.LinuxDesktop
}
var file_teleport_legacy_client_proto_event_proto_depIdxs = []int32{
0, // 0: proto.Event.Type:type_name -> proto.Operation
@@ -1844,11 +1864,12 @@ var file_teleport_legacy_client_proto_event_proto_depIdxs = []int32{
77, // 79: proto.Event.plugin:type_name -> types.PluginV1
78, // 80: proto.Event.AutoUpdateBotInstanceReport:type_name -> teleport.autoupdate.v1.AutoUpdateBotInstanceReport
79, // 81: proto.Event.AppAuthConfig:type_name -> teleport.appauthconfig.v1.AppAuthConfig
82, // [82:82] is the sub-list for method output_type
82, // [82:82] is the sub-list for method input_type
82, // [82:82] is the sub-list for extension type_name
82, // [82:82] is the sub-list for extension extendee
0, // [0:82] is the sub-list for field type_name
80, // 82: proto.Event.LinuxDesktop:type_name -> teleport.linuxdesktop.v1.LinuxDesktop
83, // [83:83] is the sub-list for method output_type
83, // [83:83] is the sub-list for method input_type
83, // [83:83] is the sub-list for extension type_name
83, // [83:83] is the sub-list for extension extendee
0, // [0:83] is the sub-list for field type_name
}
func init() { file_teleport_legacy_client_proto_event_proto_init() }
@@ -1938,6 +1959,7 @@ func file_teleport_legacy_client_proto_event_proto_init() {
(*Event_Plugin)(nil),
(*Event_AutoUpdateBotInstanceReport)(nil),
(*Event_AppAuthConfig)(nil),
(*Event_LinuxDesktop)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
@@ -0,0 +1,251 @@
// Copyright 2026 Gravitational, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.11
// protoc (unknown)
// source: teleport/linuxdesktop/v1/linux_desktop.proto
package linuxdesktopv1
import (
v1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/header/v1"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
unsafe "unsafe"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// LinuxDesktop represents Linux desktop resource.
type LinuxDesktop struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Kind is the resource kind.
Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
// SubKind is the resource sub-kind.
SubKind string `protobuf:"bytes,2,opt,name=sub_kind,json=subKind,proto3" json:"sub_kind,omitempty"`
// Version is the resource version.
Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
// Metadata contains the resource metadata.
Metadata *v1.Metadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"`
// Spec is the Linux desktop specification.
Spec *LinuxDesktopSpec `protobuf:"bytes,5,opt,name=spec,proto3" json:"spec,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *LinuxDesktop) Reset() {
*x = LinuxDesktop{}
mi := &file_teleport_linuxdesktop_v1_linux_desktop_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *LinuxDesktop) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LinuxDesktop) ProtoMessage() {}
func (x *LinuxDesktop) ProtoReflect() protoreflect.Message {
mi := &file_teleport_linuxdesktop_v1_linux_desktop_proto_msgTypes[0]
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 LinuxDesktop.ProtoReflect.Descriptor instead.
func (*LinuxDesktop) Descriptor() ([]byte, []int) {
return file_teleport_linuxdesktop_v1_linux_desktop_proto_rawDescGZIP(), []int{0}
}
func (x *LinuxDesktop) GetKind() string {
if x != nil {
return x.Kind
}
return ""
}
func (x *LinuxDesktop) GetSubKind() string {
if x != nil {
return x.SubKind
}
return ""
}
func (x *LinuxDesktop) GetVersion() string {
if x != nil {
return x.Version
}
return ""
}
func (x *LinuxDesktop) GetMetadata() *v1.Metadata {
if x != nil {
return x.Metadata
}
return nil
}
func (x *LinuxDesktop) GetSpec() *LinuxDesktopSpec {
if x != nil {
return x.Spec
}
return nil
}
// LinuxDesktopSpec is the specification of a Linux desktop.
type LinuxDesktopSpec struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Address of the server for this desktop.
Addr string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
// Hostname is name of this host
Hostname string `protobuf:"bytes,2,opt,name=hostname,proto3" json:"hostname,omitempty"`
// ProxyIDs is a list of proxy IDs this server is expected to be connected to.
ProxyIds []string `protobuf:"bytes,3,rep,name=proxy_ids,json=proxyIds,proto3" json:"proxy_ids,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *LinuxDesktopSpec) Reset() {
*x = LinuxDesktopSpec{}
mi := &file_teleport_linuxdesktop_v1_linux_desktop_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *LinuxDesktopSpec) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LinuxDesktopSpec) ProtoMessage() {}
func (x *LinuxDesktopSpec) ProtoReflect() protoreflect.Message {
mi := &file_teleport_linuxdesktop_v1_linux_desktop_proto_msgTypes[1]
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 LinuxDesktopSpec.ProtoReflect.Descriptor instead.
func (*LinuxDesktopSpec) Descriptor() ([]byte, []int) {
return file_teleport_linuxdesktop_v1_linux_desktop_proto_rawDescGZIP(), []int{1}
}
func (x *LinuxDesktopSpec) GetAddr() string {
if x != nil {
return x.Addr
}
return ""
}
func (x *LinuxDesktopSpec) GetHostname() string {
if x != nil {
return x.Hostname
}
return ""
}
func (x *LinuxDesktopSpec) GetProxyIds() []string {
if x != nil {
return x.ProxyIds
}
return nil
}
var File_teleport_linuxdesktop_v1_linux_desktop_proto protoreflect.FileDescriptor
const file_teleport_linuxdesktop_v1_linux_desktop_proto_rawDesc = "" +
"\n" +
",teleport/linuxdesktop/v1/linux_desktop.proto\x12\x18teleport.linuxdesktop.v1\x1a!teleport/header/v1/metadata.proto\"\xd1\x01\n" +
"\fLinuxDesktop\x12\x12\n" +
"\x04kind\x18\x01 \x01(\tR\x04kind\x12\x19\n" +
"\bsub_kind\x18\x02 \x01(\tR\asubKind\x12\x18\n" +
"\aversion\x18\x03 \x01(\tR\aversion\x128\n" +
"\bmetadata\x18\x04 \x01(\v2\x1c.teleport.header.v1.MetadataR\bmetadata\x12>\n" +
"\x04spec\x18\x05 \x01(\v2*.teleport.linuxdesktop.v1.LinuxDesktopSpecR\x04spec\"_\n" +
"\x10LinuxDesktopSpec\x12\x12\n" +
"\x04addr\x18\x01 \x01(\tR\x04addr\x12\x1a\n" +
"\bhostname\x18\x02 \x01(\tR\bhostname\x12\x1b\n" +
"\tproxy_ids\x18\x03 \x03(\tR\bproxyIdsB\\ZZgithub.com/gravitational/teleport/api/gen/proto/go/teleport/linuxdesktop/v1;linuxdesktopv1b\x06proto3"
var (
file_teleport_linuxdesktop_v1_linux_desktop_proto_rawDescOnce sync.Once
file_teleport_linuxdesktop_v1_linux_desktop_proto_rawDescData []byte
)
func file_teleport_linuxdesktop_v1_linux_desktop_proto_rawDescGZIP() []byte {
file_teleport_linuxdesktop_v1_linux_desktop_proto_rawDescOnce.Do(func() {
file_teleport_linuxdesktop_v1_linux_desktop_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_teleport_linuxdesktop_v1_linux_desktop_proto_rawDesc), len(file_teleport_linuxdesktop_v1_linux_desktop_proto_rawDesc)))
})
return file_teleport_linuxdesktop_v1_linux_desktop_proto_rawDescData
}
var file_teleport_linuxdesktop_v1_linux_desktop_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_teleport_linuxdesktop_v1_linux_desktop_proto_goTypes = []any{
(*LinuxDesktop)(nil), // 0: teleport.linuxdesktop.v1.LinuxDesktop
(*LinuxDesktopSpec)(nil), // 1: teleport.linuxdesktop.v1.LinuxDesktopSpec
(*v1.Metadata)(nil), // 2: teleport.header.v1.Metadata
}
var file_teleport_linuxdesktop_v1_linux_desktop_proto_depIdxs = []int32{
2, // 0: teleport.linuxdesktop.v1.LinuxDesktop.metadata:type_name -> teleport.header.v1.Metadata
1, // 1: teleport.linuxdesktop.v1.LinuxDesktop.spec:type_name -> teleport.linuxdesktop.v1.LinuxDesktopSpec
2, // [2:2] is the sub-list for method output_type
2, // [2:2] is the sub-list for method input_type
2, // [2:2] is the sub-list for extension type_name
2, // [2:2] is the sub-list for extension extendee
0, // [0:2] is the sub-list for field type_name
}
func init() { file_teleport_linuxdesktop_v1_linux_desktop_proto_init() }
func file_teleport_linuxdesktop_v1_linux_desktop_proto_init() {
if File_teleport_linuxdesktop_v1_linux_desktop_proto != nil {
return
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_teleport_linuxdesktop_v1_linux_desktop_proto_rawDesc), len(file_teleport_linuxdesktop_v1_linux_desktop_proto_rawDesc)),
NumEnums: 0,
NumMessages: 2,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_teleport_linuxdesktop_v1_linux_desktop_proto_goTypes,
DependencyIndexes: file_teleport_linuxdesktop_v1_linux_desktop_proto_depIdxs,
MessageInfos: file_teleport_linuxdesktop_v1_linux_desktop_proto_msgTypes,
}.Build()
File_teleport_linuxdesktop_v1_linux_desktop_proto = out.File
file_teleport_linuxdesktop_v1_linux_desktop_proto_goTypes = nil
file_teleport_linuxdesktop_v1_linux_desktop_proto_depIdxs = nil
}
@@ -0,0 +1,482 @@
// Copyright 2026 Gravitational, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.11
// protoc (unknown)
// source: teleport/linuxdesktop/v1/linux_desktop_service.proto
package linuxdesktopv1
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
emptypb "google.golang.org/protobuf/types/known/emptypb"
reflect "reflect"
sync "sync"
unsafe "unsafe"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// CreateLinuxDesktopRequest is request for CreateLinuxDesktop method
type CreateLinuxDesktopRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// The desired LinuxDesktop to be created.
LinuxDesktop *LinuxDesktop `protobuf:"bytes,1,opt,name=linux_desktop,json=linuxDesktop,proto3" json:"linux_desktop,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *CreateLinuxDesktopRequest) Reset() {
*x = CreateLinuxDesktopRequest{}
mi := &file_teleport_linuxdesktop_v1_linux_desktop_service_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CreateLinuxDesktopRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CreateLinuxDesktopRequest) ProtoMessage() {}
func (x *CreateLinuxDesktopRequest) ProtoReflect() protoreflect.Message {
mi := &file_teleport_linuxdesktop_v1_linux_desktop_service_proto_msgTypes[0]
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 CreateLinuxDesktopRequest.ProtoReflect.Descriptor instead.
func (*CreateLinuxDesktopRequest) Descriptor() ([]byte, []int) {
return file_teleport_linuxdesktop_v1_linux_desktop_service_proto_rawDescGZIP(), []int{0}
}
func (x *CreateLinuxDesktopRequest) GetLinuxDesktop() *LinuxDesktop {
if x != nil {
return x.LinuxDesktop
}
return nil
}
// UpdateLinuxDesktopRequest is request for UpdateLinuxDesktop method
type UpdateLinuxDesktopRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// The full LinuxDesktop resource to update in the backend.
LinuxDesktop *LinuxDesktop `protobuf:"bytes,1,opt,name=linux_desktop,json=linuxDesktop,proto3" json:"linux_desktop,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *UpdateLinuxDesktopRequest) Reset() {
*x = UpdateLinuxDesktopRequest{}
mi := &file_teleport_linuxdesktop_v1_linux_desktop_service_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UpdateLinuxDesktopRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdateLinuxDesktopRequest) ProtoMessage() {}
func (x *UpdateLinuxDesktopRequest) ProtoReflect() protoreflect.Message {
mi := &file_teleport_linuxdesktop_v1_linux_desktop_service_proto_msgTypes[1]
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 UpdateLinuxDesktopRequest.ProtoReflect.Descriptor instead.
func (*UpdateLinuxDesktopRequest) Descriptor() ([]byte, []int) {
return file_teleport_linuxdesktop_v1_linux_desktop_service_proto_rawDescGZIP(), []int{1}
}
func (x *UpdateLinuxDesktopRequest) GetLinuxDesktop() *LinuxDesktop {
if x != nil {
return x.LinuxDesktop
}
return nil
}
// UpsertLinuxDesktopRequest is request for UpsertLinuxDesktop method
type UpsertLinuxDesktopRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// The full LinuxDesktop resource to create or update in the backend.
LinuxDesktop *LinuxDesktop `protobuf:"bytes,1,opt,name=linux_desktop,json=linuxDesktop,proto3" json:"linux_desktop,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *UpsertLinuxDesktopRequest) Reset() {
*x = UpsertLinuxDesktopRequest{}
mi := &file_teleport_linuxdesktop_v1_linux_desktop_service_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UpsertLinuxDesktopRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpsertLinuxDesktopRequest) ProtoMessage() {}
func (x *UpsertLinuxDesktopRequest) ProtoReflect() protoreflect.Message {
mi := &file_teleport_linuxdesktop_v1_linux_desktop_service_proto_msgTypes[2]
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 UpsertLinuxDesktopRequest.ProtoReflect.Descriptor instead.
func (*UpsertLinuxDesktopRequest) Descriptor() ([]byte, []int) {
return file_teleport_linuxdesktop_v1_linux_desktop_service_proto_rawDescGZIP(), []int{2}
}
func (x *UpsertLinuxDesktopRequest) GetLinuxDesktop() *LinuxDesktop {
if x != nil {
return x.LinuxDesktop
}
return nil
}
// GetLinuxDesktopRequest is request for GetLinuxDesktop method
type GetLinuxDesktopRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Name of the LinuxDesktop to retrieve
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *GetLinuxDesktopRequest) Reset() {
*x = GetLinuxDesktopRequest{}
mi := &file_teleport_linuxdesktop_v1_linux_desktop_service_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetLinuxDesktopRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetLinuxDesktopRequest) ProtoMessage() {}
func (x *GetLinuxDesktopRequest) ProtoReflect() protoreflect.Message {
mi := &file_teleport_linuxdesktop_v1_linux_desktop_service_proto_msgTypes[3]
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 GetLinuxDesktopRequest.ProtoReflect.Descriptor instead.
func (*GetLinuxDesktopRequest) Descriptor() ([]byte, []int) {
return file_teleport_linuxdesktop_v1_linux_desktop_service_proto_rawDescGZIP(), []int{3}
}
func (x *GetLinuxDesktopRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// ListLinuxDesktopRequest is request for ListLinuxDesktops method
type ListLinuxDesktopsRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// The maximum number of items to return.
// The server may impose a different page size at its discretion.
PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// The next_page_token value returned from a previous List request, if any.
PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ListLinuxDesktopsRequest) Reset() {
*x = ListLinuxDesktopsRequest{}
mi := &file_teleport_linuxdesktop_v1_linux_desktop_service_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ListLinuxDesktopsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListLinuxDesktopsRequest) ProtoMessage() {}
func (x *ListLinuxDesktopsRequest) ProtoReflect() protoreflect.Message {
mi := &file_teleport_linuxdesktop_v1_linux_desktop_service_proto_msgTypes[4]
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 ListLinuxDesktopsRequest.ProtoReflect.Descriptor instead.
func (*ListLinuxDesktopsRequest) Descriptor() ([]byte, []int) {
return file_teleport_linuxdesktop_v1_linux_desktop_service_proto_rawDescGZIP(), []int{4}
}
func (x *ListLinuxDesktopsRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *ListLinuxDesktopsRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
// ListLinuxDesktopsResponse is response of ListLinuxDesktop method
type ListLinuxDesktopsResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
// The page of LinuxDesktop that matched the request.
LinuxDesktops []*LinuxDesktop `protobuf:"bytes,1,rep,name=linux_desktops,json=linuxDesktops,proto3" json:"linux_desktops,omitempty"`
// Token to retrieve the next page of results, or empty if there are no
// more results in the list.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ListLinuxDesktopsResponse) Reset() {
*x = ListLinuxDesktopsResponse{}
mi := &file_teleport_linuxdesktop_v1_linux_desktop_service_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ListLinuxDesktopsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListLinuxDesktopsResponse) ProtoMessage() {}
func (x *ListLinuxDesktopsResponse) ProtoReflect() protoreflect.Message {
mi := &file_teleport_linuxdesktop_v1_linux_desktop_service_proto_msgTypes[5]
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 ListLinuxDesktopsResponse.ProtoReflect.Descriptor instead.
func (*ListLinuxDesktopsResponse) Descriptor() ([]byte, []int) {
return file_teleport_linuxdesktop_v1_linux_desktop_service_proto_rawDescGZIP(), []int{5}
}
func (x *ListLinuxDesktopsResponse) GetLinuxDesktops() []*LinuxDesktop {
if x != nil {
return x.LinuxDesktops
}
return nil
}
func (x *ListLinuxDesktopsResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
// DeleteLinuxDesktopRequest is request for DeleteLinuxDesktop method
type DeleteLinuxDesktopRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Name of the LinuxDesktop to remove.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *DeleteLinuxDesktopRequest) Reset() {
*x = DeleteLinuxDesktopRequest{}
mi := &file_teleport_linuxdesktop_v1_linux_desktop_service_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DeleteLinuxDesktopRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DeleteLinuxDesktopRequest) ProtoMessage() {}
func (x *DeleteLinuxDesktopRequest) ProtoReflect() protoreflect.Message {
mi := &file_teleport_linuxdesktop_v1_linux_desktop_service_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 DeleteLinuxDesktopRequest.ProtoReflect.Descriptor instead.
func (*DeleteLinuxDesktopRequest) Descriptor() ([]byte, []int) {
return file_teleport_linuxdesktop_v1_linux_desktop_service_proto_rawDescGZIP(), []int{6}
}
func (x *DeleteLinuxDesktopRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
var File_teleport_linuxdesktop_v1_linux_desktop_service_proto protoreflect.FileDescriptor
const file_teleport_linuxdesktop_v1_linux_desktop_service_proto_rawDesc = "" +
"\n" +
"4teleport/linuxdesktop/v1/linux_desktop_service.proto\x12\x18teleport.linuxdesktop.v1\x1a\x1bgoogle/protobuf/empty.proto\x1a,teleport/linuxdesktop/v1/linux_desktop.proto\"h\n" +
"\x19CreateLinuxDesktopRequest\x12K\n" +
"\rlinux_desktop\x18\x01 \x01(\v2&.teleport.linuxdesktop.v1.LinuxDesktopR\flinuxDesktop\"h\n" +
"\x19UpdateLinuxDesktopRequest\x12K\n" +
"\rlinux_desktop\x18\x01 \x01(\v2&.teleport.linuxdesktop.v1.LinuxDesktopR\flinuxDesktop\"h\n" +
"\x19UpsertLinuxDesktopRequest\x12K\n" +
"\rlinux_desktop\x18\x01 \x01(\v2&.teleport.linuxdesktop.v1.LinuxDesktopR\flinuxDesktop\",\n" +
"\x16GetLinuxDesktopRequest\x12\x12\n" +
"\x04name\x18\x01 \x01(\tR\x04name\"V\n" +
"\x18ListLinuxDesktopsRequest\x12\x1b\n" +
"\tpage_size\x18\x01 \x01(\x05R\bpageSize\x12\x1d\n" +
"\n" +
"page_token\x18\x02 \x01(\tR\tpageToken\"\x92\x01\n" +
"\x19ListLinuxDesktopsResponse\x12M\n" +
"\x0elinux_desktops\x18\x01 \x03(\v2&.teleport.linuxdesktop.v1.LinuxDesktopR\rlinuxDesktops\x12&\n" +
"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"/\n" +
"\x19DeleteLinuxDesktopRequest\x12\x12\n" +
"\x04name\x18\x01 \x01(\tR\x04name2\xbc\x05\n" +
"\x13LinuxDesktopService\x12q\n" +
"\x12CreateLinuxDesktop\x123.teleport.linuxdesktop.v1.CreateLinuxDesktopRequest\x1a&.teleport.linuxdesktop.v1.LinuxDesktop\x12q\n" +
"\x12UpdateLinuxDesktop\x123.teleport.linuxdesktop.v1.UpdateLinuxDesktopRequest\x1a&.teleport.linuxdesktop.v1.LinuxDesktop\x12q\n" +
"\x12UpsertLinuxDesktop\x123.teleport.linuxdesktop.v1.UpsertLinuxDesktopRequest\x1a&.teleport.linuxdesktop.v1.LinuxDesktop\x12k\n" +
"\x0fGetLinuxDesktop\x120.teleport.linuxdesktop.v1.GetLinuxDesktopRequest\x1a&.teleport.linuxdesktop.v1.LinuxDesktop\x12|\n" +
"\x11ListLinuxDesktops\x122.teleport.linuxdesktop.v1.ListLinuxDesktopsRequest\x1a3.teleport.linuxdesktop.v1.ListLinuxDesktopsResponse\x12a\n" +
"\x12DeleteLinuxDesktop\x123.teleport.linuxdesktop.v1.DeleteLinuxDesktopRequest\x1a\x16.google.protobuf.EmptyB\\ZZgithub.com/gravitational/teleport/api/gen/proto/go/teleport/linuxdesktop/v1;linuxdesktopv1b\x06proto3"
var (
file_teleport_linuxdesktop_v1_linux_desktop_service_proto_rawDescOnce sync.Once
file_teleport_linuxdesktop_v1_linux_desktop_service_proto_rawDescData []byte
)
func file_teleport_linuxdesktop_v1_linux_desktop_service_proto_rawDescGZIP() []byte {
file_teleport_linuxdesktop_v1_linux_desktop_service_proto_rawDescOnce.Do(func() {
file_teleport_linuxdesktop_v1_linux_desktop_service_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_teleport_linuxdesktop_v1_linux_desktop_service_proto_rawDesc), len(file_teleport_linuxdesktop_v1_linux_desktop_service_proto_rawDesc)))
})
return file_teleport_linuxdesktop_v1_linux_desktop_service_proto_rawDescData
}
var file_teleport_linuxdesktop_v1_linux_desktop_service_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
var file_teleport_linuxdesktop_v1_linux_desktop_service_proto_goTypes = []any{
(*CreateLinuxDesktopRequest)(nil), // 0: teleport.linuxdesktop.v1.CreateLinuxDesktopRequest
(*UpdateLinuxDesktopRequest)(nil), // 1: teleport.linuxdesktop.v1.UpdateLinuxDesktopRequest
(*UpsertLinuxDesktopRequest)(nil), // 2: teleport.linuxdesktop.v1.UpsertLinuxDesktopRequest
(*GetLinuxDesktopRequest)(nil), // 3: teleport.linuxdesktop.v1.GetLinuxDesktopRequest
(*ListLinuxDesktopsRequest)(nil), // 4: teleport.linuxdesktop.v1.ListLinuxDesktopsRequest
(*ListLinuxDesktopsResponse)(nil), // 5: teleport.linuxdesktop.v1.ListLinuxDesktopsResponse
(*DeleteLinuxDesktopRequest)(nil), // 6: teleport.linuxdesktop.v1.DeleteLinuxDesktopRequest
(*LinuxDesktop)(nil), // 7: teleport.linuxdesktop.v1.LinuxDesktop
(*emptypb.Empty)(nil), // 8: google.protobuf.Empty
}
var file_teleport_linuxdesktop_v1_linux_desktop_service_proto_depIdxs = []int32{
7, // 0: teleport.linuxdesktop.v1.CreateLinuxDesktopRequest.linux_desktop:type_name -> teleport.linuxdesktop.v1.LinuxDesktop
7, // 1: teleport.linuxdesktop.v1.UpdateLinuxDesktopRequest.linux_desktop:type_name -> teleport.linuxdesktop.v1.LinuxDesktop
7, // 2: teleport.linuxdesktop.v1.UpsertLinuxDesktopRequest.linux_desktop:type_name -> teleport.linuxdesktop.v1.LinuxDesktop
7, // 3: teleport.linuxdesktop.v1.ListLinuxDesktopsResponse.linux_desktops:type_name -> teleport.linuxdesktop.v1.LinuxDesktop
0, // 4: teleport.linuxdesktop.v1.LinuxDesktopService.CreateLinuxDesktop:input_type -> teleport.linuxdesktop.v1.CreateLinuxDesktopRequest
1, // 5: teleport.linuxdesktop.v1.LinuxDesktopService.UpdateLinuxDesktop:input_type -> teleport.linuxdesktop.v1.UpdateLinuxDesktopRequest
2, // 6: teleport.linuxdesktop.v1.LinuxDesktopService.UpsertLinuxDesktop:input_type -> teleport.linuxdesktop.v1.UpsertLinuxDesktopRequest
3, // 7: teleport.linuxdesktop.v1.LinuxDesktopService.GetLinuxDesktop:input_type -> teleport.linuxdesktop.v1.GetLinuxDesktopRequest
4, // 8: teleport.linuxdesktop.v1.LinuxDesktopService.ListLinuxDesktops:input_type -> teleport.linuxdesktop.v1.ListLinuxDesktopsRequest
6, // 9: teleport.linuxdesktop.v1.LinuxDesktopService.DeleteLinuxDesktop:input_type -> teleport.linuxdesktop.v1.DeleteLinuxDesktopRequest
7, // 10: teleport.linuxdesktop.v1.LinuxDesktopService.CreateLinuxDesktop:output_type -> teleport.linuxdesktop.v1.LinuxDesktop
7, // 11: teleport.linuxdesktop.v1.LinuxDesktopService.UpdateLinuxDesktop:output_type -> teleport.linuxdesktop.v1.LinuxDesktop
7, // 12: teleport.linuxdesktop.v1.LinuxDesktopService.UpsertLinuxDesktop:output_type -> teleport.linuxdesktop.v1.LinuxDesktop
7, // 13: teleport.linuxdesktop.v1.LinuxDesktopService.GetLinuxDesktop:output_type -> teleport.linuxdesktop.v1.LinuxDesktop
5, // 14: teleport.linuxdesktop.v1.LinuxDesktopService.ListLinuxDesktops:output_type -> teleport.linuxdesktop.v1.ListLinuxDesktopsResponse
8, // 15: teleport.linuxdesktop.v1.LinuxDesktopService.DeleteLinuxDesktop:output_type -> google.protobuf.Empty
10, // [10:16] is the sub-list for method output_type
4, // [4:10] is the sub-list for method input_type
4, // [4:4] is the sub-list for extension type_name
4, // [4:4] is the sub-list for extension extendee
0, // [0:4] is the sub-list for field type_name
}
func init() { file_teleport_linuxdesktop_v1_linux_desktop_service_proto_init() }
func file_teleport_linuxdesktop_v1_linux_desktop_service_proto_init() {
if File_teleport_linuxdesktop_v1_linux_desktop_service_proto != nil {
return
}
file_teleport_linuxdesktop_v1_linux_desktop_proto_init()
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_teleport_linuxdesktop_v1_linux_desktop_service_proto_rawDesc), len(file_teleport_linuxdesktop_v1_linux_desktop_service_proto_rawDesc)),
NumEnums: 0,
NumMessages: 7,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_teleport_linuxdesktop_v1_linux_desktop_service_proto_goTypes,
DependencyIndexes: file_teleport_linuxdesktop_v1_linux_desktop_service_proto_depIdxs,
MessageInfos: file_teleport_linuxdesktop_v1_linux_desktop_service_proto_msgTypes,
}.Build()
File_teleport_linuxdesktop_v1_linux_desktop_service_proto = out.File
file_teleport_linuxdesktop_v1_linux_desktop_service_proto_goTypes = nil
file_teleport_linuxdesktop_v1_linux_desktop_service_proto_depIdxs = nil
}
@@ -0,0 +1,342 @@
// Copyright 2026 Gravitational, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.5.1
// - protoc (unknown)
// source: teleport/linuxdesktop/v1/linux_desktop_service.proto
package linuxdesktopv1
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
emptypb "google.golang.org/protobuf/types/known/emptypb"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.64.0 or later.
const _ = grpc.SupportPackageIsVersion9
const (
LinuxDesktopService_CreateLinuxDesktop_FullMethodName = "/teleport.linuxdesktop.v1.LinuxDesktopService/CreateLinuxDesktop"
LinuxDesktopService_UpdateLinuxDesktop_FullMethodName = "/teleport.linuxdesktop.v1.LinuxDesktopService/UpdateLinuxDesktop"
LinuxDesktopService_UpsertLinuxDesktop_FullMethodName = "/teleport.linuxdesktop.v1.LinuxDesktopService/UpsertLinuxDesktop"
LinuxDesktopService_GetLinuxDesktop_FullMethodName = "/teleport.linuxdesktop.v1.LinuxDesktopService/GetLinuxDesktop"
LinuxDesktopService_ListLinuxDesktops_FullMethodName = "/teleport.linuxdesktop.v1.LinuxDesktopService/ListLinuxDesktops"
LinuxDesktopService_DeleteLinuxDesktop_FullMethodName = "/teleport.linuxdesktop.v1.LinuxDesktopService/DeleteLinuxDesktop"
)
// LinuxDesktopServiceClient is the client API for LinuxDesktopService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
//
// LinuxDesktopService is a service to fetch information about Linux desktops.
type LinuxDesktopServiceClient interface {
// Creates a new LinuxDesktop resource in the backend.
CreateLinuxDesktop(ctx context.Context, in *CreateLinuxDesktopRequest, opts ...grpc.CallOption) (*LinuxDesktop, error)
// Updates an existing LinuxDesktop in the backend.
UpdateLinuxDesktop(ctx context.Context, in *UpdateLinuxDesktopRequest, opts ...grpc.CallOption) (*LinuxDesktop, error)
// Updates an existing LinuxDesktop in the backend or creates one if needed.
UpsertLinuxDesktop(ctx context.Context, in *UpsertLinuxDesktopRequest, opts ...grpc.CallOption) (*LinuxDesktop, error)
// Returns a single LinuxDesktop matching the request
GetLinuxDesktop(ctx context.Context, in *GetLinuxDesktopRequest, opts ...grpc.CallOption) (*LinuxDesktop, error)
// Returns a page of LinuxDesktop and the token to find the next page of items.
ListLinuxDesktops(ctx context.Context, in *ListLinuxDesktopsRequest, opts ...grpc.CallOption) (*ListLinuxDesktopsResponse, error)
// Remove a matching LinuxDesktop resource
DeleteLinuxDesktop(ctx context.Context, in *DeleteLinuxDesktopRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
}
type linuxDesktopServiceClient struct {
cc grpc.ClientConnInterface
}
func NewLinuxDesktopServiceClient(cc grpc.ClientConnInterface) LinuxDesktopServiceClient {
return &linuxDesktopServiceClient{cc}
}
func (c *linuxDesktopServiceClient) CreateLinuxDesktop(ctx context.Context, in *CreateLinuxDesktopRequest, opts ...grpc.CallOption) (*LinuxDesktop, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(LinuxDesktop)
err := c.cc.Invoke(ctx, LinuxDesktopService_CreateLinuxDesktop_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *linuxDesktopServiceClient) UpdateLinuxDesktop(ctx context.Context, in *UpdateLinuxDesktopRequest, opts ...grpc.CallOption) (*LinuxDesktop, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(LinuxDesktop)
err := c.cc.Invoke(ctx, LinuxDesktopService_UpdateLinuxDesktop_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *linuxDesktopServiceClient) UpsertLinuxDesktop(ctx context.Context, in *UpsertLinuxDesktopRequest, opts ...grpc.CallOption) (*LinuxDesktop, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(LinuxDesktop)
err := c.cc.Invoke(ctx, LinuxDesktopService_UpsertLinuxDesktop_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *linuxDesktopServiceClient) GetLinuxDesktop(ctx context.Context, in *GetLinuxDesktopRequest, opts ...grpc.CallOption) (*LinuxDesktop, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(LinuxDesktop)
err := c.cc.Invoke(ctx, LinuxDesktopService_GetLinuxDesktop_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *linuxDesktopServiceClient) ListLinuxDesktops(ctx context.Context, in *ListLinuxDesktopsRequest, opts ...grpc.CallOption) (*ListLinuxDesktopsResponse, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(ListLinuxDesktopsResponse)
err := c.cc.Invoke(ctx, LinuxDesktopService_ListLinuxDesktops_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *linuxDesktopServiceClient) DeleteLinuxDesktop(ctx context.Context, in *DeleteLinuxDesktopRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(emptypb.Empty)
err := c.cc.Invoke(ctx, LinuxDesktopService_DeleteLinuxDesktop_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
// LinuxDesktopServiceServer is the server API for LinuxDesktopService service.
// All implementations must embed UnimplementedLinuxDesktopServiceServer
// for forward compatibility.
//
// LinuxDesktopService is a service to fetch information about Linux desktops.
type LinuxDesktopServiceServer interface {
// Creates a new LinuxDesktop resource in the backend.
CreateLinuxDesktop(context.Context, *CreateLinuxDesktopRequest) (*LinuxDesktop, error)
// Updates an existing LinuxDesktop in the backend.
UpdateLinuxDesktop(context.Context, *UpdateLinuxDesktopRequest) (*LinuxDesktop, error)
// Updates an existing LinuxDesktop in the backend or creates one if needed.
UpsertLinuxDesktop(context.Context, *UpsertLinuxDesktopRequest) (*LinuxDesktop, error)
// Returns a single LinuxDesktop matching the request
GetLinuxDesktop(context.Context, *GetLinuxDesktopRequest) (*LinuxDesktop, error)
// Returns a page of LinuxDesktop and the token to find the next page of items.
ListLinuxDesktops(context.Context, *ListLinuxDesktopsRequest) (*ListLinuxDesktopsResponse, error)
// Remove a matching LinuxDesktop resource
DeleteLinuxDesktop(context.Context, *DeleteLinuxDesktopRequest) (*emptypb.Empty, error)
mustEmbedUnimplementedLinuxDesktopServiceServer()
}
// UnimplementedLinuxDesktopServiceServer must be embedded to have
// forward compatible implementations.
//
// NOTE: this should be embedded by value instead of pointer to avoid a nil
// pointer dereference when methods are called.
type UnimplementedLinuxDesktopServiceServer struct{}
func (UnimplementedLinuxDesktopServiceServer) CreateLinuxDesktop(context.Context, *CreateLinuxDesktopRequest) (*LinuxDesktop, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreateLinuxDesktop not implemented")
}
func (UnimplementedLinuxDesktopServiceServer) UpdateLinuxDesktop(context.Context, *UpdateLinuxDesktopRequest) (*LinuxDesktop, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateLinuxDesktop not implemented")
}
func (UnimplementedLinuxDesktopServiceServer) UpsertLinuxDesktop(context.Context, *UpsertLinuxDesktopRequest) (*LinuxDesktop, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpsertLinuxDesktop not implemented")
}
func (UnimplementedLinuxDesktopServiceServer) GetLinuxDesktop(context.Context, *GetLinuxDesktopRequest) (*LinuxDesktop, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetLinuxDesktop not implemented")
}
func (UnimplementedLinuxDesktopServiceServer) ListLinuxDesktops(context.Context, *ListLinuxDesktopsRequest) (*ListLinuxDesktopsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListLinuxDesktops not implemented")
}
func (UnimplementedLinuxDesktopServiceServer) DeleteLinuxDesktop(context.Context, *DeleteLinuxDesktopRequest) (*emptypb.Empty, error) {
return nil, status.Errorf(codes.Unimplemented, "method DeleteLinuxDesktop not implemented")
}
func (UnimplementedLinuxDesktopServiceServer) mustEmbedUnimplementedLinuxDesktopServiceServer() {}
func (UnimplementedLinuxDesktopServiceServer) testEmbeddedByValue() {}
// UnsafeLinuxDesktopServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to LinuxDesktopServiceServer will
// result in compilation errors.
type UnsafeLinuxDesktopServiceServer interface {
mustEmbedUnimplementedLinuxDesktopServiceServer()
}
func RegisterLinuxDesktopServiceServer(s grpc.ServiceRegistrar, srv LinuxDesktopServiceServer) {
// If the following call pancis, it indicates UnimplementedLinuxDesktopServiceServer was
// embedded by pointer and is nil. This will cause panics if an
// unimplemented method is ever invoked, so we test this at initialization
// time to prevent it from happening at runtime later due to I/O.
if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
t.testEmbeddedByValue()
}
s.RegisterService(&LinuxDesktopService_ServiceDesc, srv)
}
func _LinuxDesktopService_CreateLinuxDesktop_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateLinuxDesktopRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(LinuxDesktopServiceServer).CreateLinuxDesktop(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: LinuxDesktopService_CreateLinuxDesktop_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(LinuxDesktopServiceServer).CreateLinuxDesktop(ctx, req.(*CreateLinuxDesktopRequest))
}
return interceptor(ctx, in, info, handler)
}
func _LinuxDesktopService_UpdateLinuxDesktop_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateLinuxDesktopRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(LinuxDesktopServiceServer).UpdateLinuxDesktop(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: LinuxDesktopService_UpdateLinuxDesktop_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(LinuxDesktopServiceServer).UpdateLinuxDesktop(ctx, req.(*UpdateLinuxDesktopRequest))
}
return interceptor(ctx, in, info, handler)
}
func _LinuxDesktopService_UpsertLinuxDesktop_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpsertLinuxDesktopRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(LinuxDesktopServiceServer).UpsertLinuxDesktop(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: LinuxDesktopService_UpsertLinuxDesktop_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(LinuxDesktopServiceServer).UpsertLinuxDesktop(ctx, req.(*UpsertLinuxDesktopRequest))
}
return interceptor(ctx, in, info, handler)
}
func _LinuxDesktopService_GetLinuxDesktop_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetLinuxDesktopRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(LinuxDesktopServiceServer).GetLinuxDesktop(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: LinuxDesktopService_GetLinuxDesktop_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(LinuxDesktopServiceServer).GetLinuxDesktop(ctx, req.(*GetLinuxDesktopRequest))
}
return interceptor(ctx, in, info, handler)
}
func _LinuxDesktopService_ListLinuxDesktops_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListLinuxDesktopsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(LinuxDesktopServiceServer).ListLinuxDesktops(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: LinuxDesktopService_ListLinuxDesktops_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(LinuxDesktopServiceServer).ListLinuxDesktops(ctx, req.(*ListLinuxDesktopsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _LinuxDesktopService_DeleteLinuxDesktop_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteLinuxDesktopRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(LinuxDesktopServiceServer).DeleteLinuxDesktop(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: LinuxDesktopService_DeleteLinuxDesktop_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(LinuxDesktopServiceServer).DeleteLinuxDesktop(ctx, req.(*DeleteLinuxDesktopRequest))
}
return interceptor(ctx, in, info, handler)
}
// LinuxDesktopService_ServiceDesc is the grpc.ServiceDesc for LinuxDesktopService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var LinuxDesktopService_ServiceDesc = grpc.ServiceDesc{
ServiceName: "teleport.linuxdesktop.v1.LinuxDesktopService",
HandlerType: (*LinuxDesktopServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "CreateLinuxDesktop",
Handler: _LinuxDesktopService_CreateLinuxDesktop_Handler,
},
{
MethodName: "UpdateLinuxDesktop",
Handler: _LinuxDesktopService_UpdateLinuxDesktop_Handler,
},
{
MethodName: "UpsertLinuxDesktop",
Handler: _LinuxDesktopService_UpsertLinuxDesktop_Handler,
},
{
MethodName: "GetLinuxDesktop",
Handler: _LinuxDesktopService_GetLinuxDesktop_Handler,
},
{
MethodName: "ListLinuxDesktops",
Handler: _LinuxDesktopService_ListLinuxDesktops_Handler,
},
{
MethodName: "DeleteLinuxDesktop",
Handler: _LinuxDesktopService_DeleteLinuxDesktop_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "teleport/linuxdesktop/v1/linux_desktop_service.proto",
}
@@ -28,6 +28,7 @@ import "teleport/healthcheckconfig/v1/health_check_config.proto";
import "teleport/identitycenter/v1/identitycenter.proto";
import "teleport/kubewaitingcontainer/v1/kubewaitingcontainer.proto";
import "teleport/legacy/types/types.proto";
import "teleport/linuxdesktop/v1/linux_desktop.proto";
import "teleport/machineid/v1/bot_instance.proto";
import "teleport/machineid/v1/federation.proto";
import "teleport/notifications/v1/notifications.proto";
@@ -237,5 +238,7 @@ message Event {
teleport.autoupdate.v1.AutoUpdateBotInstanceReport AutoUpdateBotInstanceReport = 85;
// AppAuthConfig is a resource for defining app auth configs.
teleport.appauthconfig.v1.AppAuthConfig AppAuthConfig = 86;
// LinuxDesktop is a resource for linux desktop.
teleport.linuxdesktop.v1.LinuxDesktop LinuxDesktop = 87;
}
}
@@ -4042,6 +4042,20 @@ message RoleConditions {
// MCPPermissions defines MCP servers related permissions.
MCPPermissions MCP = 46 [(gogoproto.jsontag) = "mcp,omitempty"];
// LinuxDesktopLogins is a list of desktop login names allowed/denied for Linux desktops.
repeated string LinuxDesktopLogins = 47 [(gogoproto.jsontag) = "linux_desktop_logins,omitempty"];
// LinuxDesktopLabels are used in the RBAC system to allow/deny access to Linux desktops.
wrappers.LabelValues LinuxDesktopLabels = 48 [
(gogoproto.nullable) = false,
(gogoproto.jsontag) = "linux_desktop_labels,omitempty",
(gogoproto.customtype) = "Labels"
];
// LinuxDesktopLabelsExpression is a predicate expression used to allow/deny
// access to Linux desktops.
string LinuxDesktopLabelsExpression = 49 [(gogoproto.jsontag) = "linux_desktop_labels_expression,omitempty"];
}
// IdentityCenterAccountAssignment captures an AWS Identity Center account
@@ -0,0 +1,51 @@
// Copyright 2026 Gravitational, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package teleport.linuxdesktop.v1;
import "teleport/header/v1/metadata.proto";
option go_package = "github.com/gravitational/teleport/api/gen/proto/go/teleport/linuxdesktop/v1;linuxdesktopv1";
// LinuxDesktop represents Linux desktop resource.
message LinuxDesktop {
// Kind is the resource kind.
string kind = 1;
// SubKind is the resource sub-kind.
string sub_kind = 2;
// Version is the resource version.
string version = 3;
// Metadata contains the resource metadata.
teleport.header.v1.Metadata metadata = 4;
// Spec is the Linux desktop specification.
LinuxDesktopSpec spec = 5;
}
// LinuxDesktopSpec is the specification of a Linux desktop.
message LinuxDesktopSpec {
// Address of the server for this desktop.
string addr = 1;
// Hostname is name of this host
string hostname = 2;
// ProxyIDs is a list of proxy IDs this server is expected to be connected to.
repeated string proxy_ids = 3;
}
@@ -0,0 +1,91 @@
// Copyright 2026 Gravitational, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package teleport.linuxdesktop.v1;
import "google/protobuf/empty.proto";
import "teleport/linuxdesktop/v1/linux_desktop.proto";
option go_package = "github.com/gravitational/teleport/api/gen/proto/go/teleport/linuxdesktop/v1;linuxdesktopv1";
// LinuxDesktopService is a service to fetch information about Linux desktops.
service LinuxDesktopService {
// Creates a new LinuxDesktop resource in the backend.
rpc CreateLinuxDesktop(CreateLinuxDesktopRequest) returns (LinuxDesktop);
// Updates an existing LinuxDesktop in the backend.
rpc UpdateLinuxDesktop(UpdateLinuxDesktopRequest) returns (LinuxDesktop);
// Updates an existing LinuxDesktop in the backend or creates one if needed.
rpc UpsertLinuxDesktop(UpsertLinuxDesktopRequest) returns (LinuxDesktop);
// Returns a single LinuxDesktop matching the request
rpc GetLinuxDesktop(GetLinuxDesktopRequest) returns (LinuxDesktop);
// Returns a page of LinuxDesktop and the token to find the next page of items.
rpc ListLinuxDesktops(ListLinuxDesktopsRequest) returns (ListLinuxDesktopsResponse);
// Remove a matching LinuxDesktop resource
rpc DeleteLinuxDesktop(DeleteLinuxDesktopRequest) returns (google.protobuf.Empty);
}
// CreateLinuxDesktopRequest is request for CreateLinuxDesktop method
message CreateLinuxDesktopRequest {
// The desired LinuxDesktop to be created.
LinuxDesktop linux_desktop = 1;
}
// UpdateLinuxDesktopRequest is request for UpdateLinuxDesktop method
message UpdateLinuxDesktopRequest {
// The full LinuxDesktop resource to update in the backend.
LinuxDesktop linux_desktop = 1;
}
// UpsertLinuxDesktopRequest is request for UpsertLinuxDesktop method
message UpsertLinuxDesktopRequest {
// The full LinuxDesktop resource to create or update in the backend.
LinuxDesktop linux_desktop = 1;
}
// GetLinuxDesktopRequest is request for GetLinuxDesktop method
message GetLinuxDesktopRequest {
// Name of the LinuxDesktop to retrieve
string name = 1;
}
// ListLinuxDesktopRequest is request for ListLinuxDesktops method
message ListLinuxDesktopsRequest {
// The maximum number of items to return.
// The server may impose a different page size at its discretion.
int32 page_size = 1;
// The next_page_token value returned from a previous List request, if any.
string page_token = 2;
}
// ListLinuxDesktopsResponse is response of ListLinuxDesktop method
message ListLinuxDesktopsResponse {
// The page of LinuxDesktop that matched the request.
repeated LinuxDesktop linux_desktops = 1;
// Token to retrieve the next page of results, or empty if there are no
// more results in the list.
string next_page_token = 2;
}
// DeleteLinuxDesktopRequest is request for DeleteLinuxDesktop method
message DeleteLinuxDesktopRequest {
// Name of the LinuxDesktop to remove.
string name = 1;
}
+2569 -2417
View File
File diff suppressed because it is too large Load Diff
@@ -66,6 +66,9 @@ resource, which you can apply after installing the Teleport Kubernetes operator.
|kubernetes_labels_expression|string|KubernetesLabelsExpression is a predicate expression used to allow/deny access to kubernetes clusters.|
|kubernetes_resources|[][object](#specallowkubernetes_resources-items)|KubernetesResources is the Kubernetes Resources this Role grants access to.|
|kubernetes_users|[]string|KubeUsers is an optional kubernetes users to impersonate|
|linux_desktop_labels|object|LinuxDesktopLabels are used in the RBAC system to allow/deny access to Linux desktops.|
|linux_desktop_labels_expression|string|LinuxDesktopLabelsExpression is a predicate expression used to allow/deny access to Linux desktops.|
|linux_desktop_logins|[]string|LinuxDesktopLogins is a list of desktop login names allowed/denied for Linux desktops.|
|logins|[]string|Logins is a list of *nix system logins.|
|mcp|[object](#specallowmcp)|MCPPermissions defines MCP servers related permissions.|
|node_labels|object|NodeLabels is a map of node labels (used to dynamically grant access to nodes).|
@@ -257,6 +260,9 @@ resource, which you can apply after installing the Teleport Kubernetes operator.
|kubernetes_labels_expression|string|KubernetesLabelsExpression is a predicate expression used to allow/deny access to kubernetes clusters.|
|kubernetes_resources|[][object](#specdenykubernetes_resources-items)|KubernetesResources is the Kubernetes Resources this Role grants access to.|
|kubernetes_users|[]string|KubeUsers is an optional kubernetes users to impersonate|
|linux_desktop_labels|object|LinuxDesktopLabels are used in the RBAC system to allow/deny access to Linux desktops.|
|linux_desktop_labels_expression|string|LinuxDesktopLabelsExpression is a predicate expression used to allow/deny access to Linux desktops.|
|linux_desktop_logins|[]string|LinuxDesktopLogins is a list of desktop login names allowed/denied for Linux desktops.|
|logins|[]string|Logins is a list of *nix system logins.|
|mcp|[object](#specdenymcp)|MCPPermissions defines MCP servers related permissions.|
|node_labels|object|NodeLabels is a map of node labels (used to dynamically grant access to nodes).|
@@ -551,6 +557,9 @@ resource, which you can apply after installing the Teleport Kubernetes operator.
|kubernetes_labels_expression|string|KubernetesLabelsExpression is a predicate expression used to allow/deny access to kubernetes clusters.|
|kubernetes_resources|[][object](#specallowkubernetes_resources-items)|KubernetesResources is the Kubernetes Resources this Role grants access to.|
|kubernetes_users|[]string|KubeUsers is an optional kubernetes users to impersonate|
|linux_desktop_labels|object|LinuxDesktopLabels are used in the RBAC system to allow/deny access to Linux desktops.|
|linux_desktop_labels_expression|string|LinuxDesktopLabelsExpression is a predicate expression used to allow/deny access to Linux desktops.|
|linux_desktop_logins|[]string|LinuxDesktopLogins is a list of desktop login names allowed/denied for Linux desktops.|
|logins|[]string|Logins is a list of *nix system logins.|
|mcp|[object](#specallowmcp)|MCPPermissions defines MCP servers related permissions.|
|node_labels|object|NodeLabels is a map of node labels (used to dynamically grant access to nodes).|
@@ -742,6 +751,9 @@ resource, which you can apply after installing the Teleport Kubernetes operator.
|kubernetes_labels_expression|string|KubernetesLabelsExpression is a predicate expression used to allow/deny access to kubernetes clusters.|
|kubernetes_resources|[][object](#specdenykubernetes_resources-items)|KubernetesResources is the Kubernetes Resources this Role grants access to.|
|kubernetes_users|[]string|KubeUsers is an optional kubernetes users to impersonate|
|linux_desktop_labels|object|LinuxDesktopLabels are used in the RBAC system to allow/deny access to Linux desktops.|
|linux_desktop_labels_expression|string|LinuxDesktopLabelsExpression is a predicate expression used to allow/deny access to Linux desktops.|
|linux_desktop_logins|[]string|LinuxDesktopLogins is a list of desktop login names allowed/denied for Linux desktops.|
|logins|[]string|Logins is a list of *nix system logins.|
|mcp|[object](#specdenymcp)|MCPPermissions defines MCP servers related permissions.|
|node_labels|object|NodeLabels is a map of node labels (used to dynamically grant access to nodes).|
@@ -66,6 +66,9 @@ resource, which you can apply after installing the Teleport Kubernetes operator.
|kubernetes_labels_expression|string|KubernetesLabelsExpression is a predicate expression used to allow/deny access to kubernetes clusters.|
|kubernetes_resources|[][object](#specallowkubernetes_resources-items)|KubernetesResources is the Kubernetes Resources this Role grants access to.|
|kubernetes_users|[]string|KubeUsers is an optional kubernetes users to impersonate|
|linux_desktop_labels|object|LinuxDesktopLabels are used in the RBAC system to allow/deny access to Linux desktops.|
|linux_desktop_labels_expression|string|LinuxDesktopLabelsExpression is a predicate expression used to allow/deny access to Linux desktops.|
|linux_desktop_logins|[]string|LinuxDesktopLogins is a list of desktop login names allowed/denied for Linux desktops.|
|logins|[]string|Logins is a list of *nix system logins.|
|mcp|[object](#specallowmcp)|MCPPermissions defines MCP servers related permissions.|
|node_labels|object|NodeLabels is a map of node labels (used to dynamically grant access to nodes).|
@@ -257,6 +260,9 @@ resource, which you can apply after installing the Teleport Kubernetes operator.
|kubernetes_labels_expression|string|KubernetesLabelsExpression is a predicate expression used to allow/deny access to kubernetes clusters.|
|kubernetes_resources|[][object](#specdenykubernetes_resources-items)|KubernetesResources is the Kubernetes Resources this Role grants access to.|
|kubernetes_users|[]string|KubeUsers is an optional kubernetes users to impersonate|
|linux_desktop_labels|object|LinuxDesktopLabels are used in the RBAC system to allow/deny access to Linux desktops.|
|linux_desktop_labels_expression|string|LinuxDesktopLabelsExpression is a predicate expression used to allow/deny access to Linux desktops.|
|linux_desktop_logins|[]string|LinuxDesktopLogins is a list of desktop login names allowed/denied for Linux desktops.|
|logins|[]string|Logins is a list of *nix system logins.|
|mcp|[object](#specdenymcp)|MCPPermissions defines MCP servers related permissions.|
|node_labels|object|NodeLabels is a map of node labels (used to dynamically grant access to nodes).|
@@ -66,6 +66,9 @@ resource, which you can apply after installing the Teleport Kubernetes operator.
|kubernetes_labels_expression|string|KubernetesLabelsExpression is a predicate expression used to allow/deny access to kubernetes clusters.|
|kubernetes_resources|[][object](#specallowkubernetes_resources-items)|KubernetesResources is the Kubernetes Resources this Role grants access to.|
|kubernetes_users|[]string|KubeUsers is an optional kubernetes users to impersonate|
|linux_desktop_labels|object|LinuxDesktopLabels are used in the RBAC system to allow/deny access to Linux desktops.|
|linux_desktop_labels_expression|string|LinuxDesktopLabelsExpression is a predicate expression used to allow/deny access to Linux desktops.|
|linux_desktop_logins|[]string|LinuxDesktopLogins is a list of desktop login names allowed/denied for Linux desktops.|
|logins|[]string|Logins is a list of *nix system logins.|
|mcp|[object](#specallowmcp)|MCPPermissions defines MCP servers related permissions.|
|node_labels|object|NodeLabels is a map of node labels (used to dynamically grant access to nodes).|
@@ -257,6 +260,9 @@ resource, which you can apply after installing the Teleport Kubernetes operator.
|kubernetes_labels_expression|string|KubernetesLabelsExpression is a predicate expression used to allow/deny access to kubernetes clusters.|
|kubernetes_resources|[][object](#specdenykubernetes_resources-items)|KubernetesResources is the Kubernetes Resources this Role grants access to.|
|kubernetes_users|[]string|KubeUsers is an optional kubernetes users to impersonate|
|linux_desktop_labels|object|LinuxDesktopLabels are used in the RBAC system to allow/deny access to Linux desktops.|
|linux_desktop_labels_expression|string|LinuxDesktopLabelsExpression is a predicate expression used to allow/deny access to Linux desktops.|
|linux_desktop_logins|[]string|LinuxDesktopLogins is a list of desktop login names allowed/denied for Linux desktops.|
|logins|[]string|Logins is a list of *nix system logins.|
|mcp|[object](#specdenymcp)|MCPPermissions defines MCP servers related permissions.|
|node_labels|object|NodeLabels is a map of node labels (used to dynamically grant access to nodes).|
@@ -66,6 +66,9 @@ resource, which you can apply after installing the Teleport Kubernetes operator.
|kubernetes_labels_expression|string|KubernetesLabelsExpression is a predicate expression used to allow/deny access to kubernetes clusters.|
|kubernetes_resources|[][object](#specallowkubernetes_resources-items)|KubernetesResources is the Kubernetes Resources this Role grants access to.|
|kubernetes_users|[]string|KubeUsers is an optional kubernetes users to impersonate|
|linux_desktop_labels|object|LinuxDesktopLabels are used in the RBAC system to allow/deny access to Linux desktops.|
|linux_desktop_labels_expression|string|LinuxDesktopLabelsExpression is a predicate expression used to allow/deny access to Linux desktops.|
|linux_desktop_logins|[]string|LinuxDesktopLogins is a list of desktop login names allowed/denied for Linux desktops.|
|logins|[]string|Logins is a list of *nix system logins.|
|mcp|[object](#specallowmcp)|MCPPermissions defines MCP servers related permissions.|
|node_labels|object|NodeLabels is a map of node labels (used to dynamically grant access to nodes).|
@@ -257,6 +260,9 @@ resource, which you can apply after installing the Teleport Kubernetes operator.
|kubernetes_labels_expression|string|KubernetesLabelsExpression is a predicate expression used to allow/deny access to kubernetes clusters.|
|kubernetes_resources|[][object](#specdenykubernetes_resources-items)|KubernetesResources is the Kubernetes Resources this Role grants access to.|
|kubernetes_users|[]string|KubeUsers is an optional kubernetes users to impersonate|
|linux_desktop_labels|object|LinuxDesktopLabels are used in the RBAC system to allow/deny access to Linux desktops.|
|linux_desktop_labels_expression|string|LinuxDesktopLabelsExpression is a predicate expression used to allow/deny access to Linux desktops.|
|linux_desktop_logins|[]string|LinuxDesktopLogins is a list of desktop login names allowed/denied for Linux desktops.|
|logins|[]string|Logins is a list of *nix system logins.|
|mcp|[object](#specdenymcp)|MCPPermissions defines MCP servers related permissions.|
|node_labels|object|NodeLabels is a map of node labels (used to dynamically grant access to nodes).|
@@ -85,6 +85,9 @@ Optional:
- `kubernetes_labels_expression` (String) KubernetesLabelsExpression is a predicate expression used to allow/deny access to kubernetes clusters.
- `kubernetes_resources` (Attributes List) KubernetesResources is the Kubernetes Resources this Role grants access to. (see [below for nested schema](#nested-schema-for-specallowkubernetes_resources))
- `kubernetes_users` (List of String) KubeUsers is an optional kubernetes users to impersonate
- `linux_desktop_labels` (Map of List of String) LinuxDesktopLabels are used in the RBAC system to allow/deny access to Linux desktops.
- `linux_desktop_labels_expression` (String) LinuxDesktopLabelsExpression is a predicate expression used to allow/deny access to Linux desktops.
- `linux_desktop_logins` (List of String) LinuxDesktopLogins is a list of desktop login names allowed/denied for Linux desktops.
- `logins` (List of String) Logins is a list of *nix system logins.
- `mcp` (Attributes) MCPPermissions defines MCP servers related permissions. (see [below for nested schema](#nested-schema-for-specallowmcp))
- `node_labels` (Map of List of String) NodeLabels is a map of node labels (used to dynamically grant access to nodes).
@@ -294,6 +297,9 @@ Optional:
- `kubernetes_labels_expression` (String) KubernetesLabelsExpression is a predicate expression used to allow/deny access to kubernetes clusters.
- `kubernetes_resources` (Attributes List) KubernetesResources is the Kubernetes Resources this Role grants access to. (see [below for nested schema](#nested-schema-for-specdenykubernetes_resources))
- `kubernetes_users` (List of String) KubeUsers is an optional kubernetes users to impersonate
- `linux_desktop_labels` (Map of List of String) LinuxDesktopLabels are used in the RBAC system to allow/deny access to Linux desktops.
- `linux_desktop_labels_expression` (String) LinuxDesktopLabelsExpression is a predicate expression used to allow/deny access to Linux desktops.
- `linux_desktop_logins` (List of String) LinuxDesktopLogins is a list of desktop login names allowed/denied for Linux desktops.
- `logins` (List of String) Logins is a list of *nix system logins.
- `mcp` (Attributes) MCPPermissions defines MCP servers related permissions. (see [below for nested schema](#nested-schema-for-specdenymcp))
- `node_labels` (Map of List of String) NodeLabels is a map of node labels (used to dynamically grant access to nodes).
@@ -147,6 +147,9 @@ Optional:
- `kubernetes_labels_expression` (String) KubernetesLabelsExpression is a predicate expression used to allow/deny access to kubernetes clusters.
- `kubernetes_resources` (Attributes List) KubernetesResources is the Kubernetes Resources this Role grants access to. (see [below for nested schema](#nested-schema-for-specallowkubernetes_resources))
- `kubernetes_users` (List of String) KubeUsers is an optional kubernetes users to impersonate
- `linux_desktop_labels` (Map of List of String) LinuxDesktopLabels are used in the RBAC system to allow/deny access to Linux desktops.
- `linux_desktop_labels_expression` (String) LinuxDesktopLabelsExpression is a predicate expression used to allow/deny access to Linux desktops.
- `linux_desktop_logins` (List of String) LinuxDesktopLogins is a list of desktop login names allowed/denied for Linux desktops.
- `logins` (List of String) Logins is a list of *nix system logins.
- `mcp` (Attributes) MCPPermissions defines MCP servers related permissions. (see [below for nested schema](#nested-schema-for-specallowmcp))
- `node_labels` (Map of List of String) NodeLabels is a map of node labels (used to dynamically grant access to nodes).
@@ -356,6 +359,9 @@ Optional:
- `kubernetes_labels_expression` (String) KubernetesLabelsExpression is a predicate expression used to allow/deny access to kubernetes clusters.
- `kubernetes_resources` (Attributes List) KubernetesResources is the Kubernetes Resources this Role grants access to. (see [below for nested schema](#nested-schema-for-specdenykubernetes_resources))
- `kubernetes_users` (List of String) KubeUsers is an optional kubernetes users to impersonate
- `linux_desktop_labels` (Map of List of String) LinuxDesktopLabels are used in the RBAC system to allow/deny access to Linux desktops.
- `linux_desktop_labels_expression` (String) LinuxDesktopLabelsExpression is a predicate expression used to allow/deny access to Linux desktops.
- `linux_desktop_logins` (List of String) LinuxDesktopLogins is a list of desktop login names allowed/denied for Linux desktops.
- `logins` (List of String) Logins is a list of *nix system logins.
- `mcp` (Attributes) MCPPermissions defines MCP servers related permissions. (see [below for nested schema](#nested-schema-for-specdenymcp))
- `node_labels` (Map of List of String) NodeLabels is a map of node labels (used to dynamically grant access to nodes).
@@ -298,6 +298,23 @@ spec:
type: string
nullable: true
type: array
linux_desktop_labels:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: LinuxDesktopLabels are used in the RBAC system to
allow/deny access to Linux desktops.
type: object
linux_desktop_labels_expression:
description: LinuxDesktopLabelsExpression is a predicate expression
used to allow/deny access to Linux desktops.
type: string
linux_desktop_logins:
description: LinuxDesktopLogins is a list of desktop login names
allowed/denied for Linux desktops.
items:
type: string
nullable: true
type: array
logins:
description: Logins is a list of *nix system logins.
items:
@@ -915,6 +932,23 @@ spec:
type: string
nullable: true
type: array
linux_desktop_labels:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: LinuxDesktopLabels are used in the RBAC system to
allow/deny access to Linux desktops.
type: object
linux_desktop_labels_expression:
description: LinuxDesktopLabelsExpression is a predicate expression
used to allow/deny access to Linux desktops.
type: string
linux_desktop_logins:
description: LinuxDesktopLogins is a list of desktop login names
allowed/denied for Linux desktops.
items:
type: string
nullable: true
type: array
logins:
description: Logins is a list of *nix system logins.
items:
@@ -1829,6 +1863,23 @@ spec:
type: string
nullable: true
type: array
linux_desktop_labels:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: LinuxDesktopLabels are used in the RBAC system to
allow/deny access to Linux desktops.
type: object
linux_desktop_labels_expression:
description: LinuxDesktopLabelsExpression is a predicate expression
used to allow/deny access to Linux desktops.
type: string
linux_desktop_logins:
description: LinuxDesktopLogins is a list of desktop login names
allowed/denied for Linux desktops.
items:
type: string
nullable: true
type: array
logins:
description: Logins is a list of *nix system logins.
items:
@@ -2446,6 +2497,23 @@ spec:
type: string
nullable: true
type: array
linux_desktop_labels:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: LinuxDesktopLabels are used in the RBAC system to
allow/deny access to Linux desktops.
type: object
linux_desktop_labels_expression:
description: LinuxDesktopLabelsExpression is a predicate expression
used to allow/deny access to Linux desktops.
type: string
linux_desktop_logins:
description: LinuxDesktopLogins is a list of desktop login names
allowed/denied for Linux desktops.
items:
type: string
nullable: true
type: array
logins:
description: Logins is a list of *nix system logins.
items:
@@ -301,6 +301,23 @@ spec:
type: string
nullable: true
type: array
linux_desktop_labels:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: LinuxDesktopLabels are used in the RBAC system to
allow/deny access to Linux desktops.
type: object
linux_desktop_labels_expression:
description: LinuxDesktopLabelsExpression is a predicate expression
used to allow/deny access to Linux desktops.
type: string
linux_desktop_logins:
description: LinuxDesktopLogins is a list of desktop login names
allowed/denied for Linux desktops.
items:
type: string
nullable: true
type: array
logins:
description: Logins is a list of *nix system logins.
items:
@@ -918,6 +935,23 @@ spec:
type: string
nullable: true
type: array
linux_desktop_labels:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: LinuxDesktopLabels are used in the RBAC system to
allow/deny access to Linux desktops.
type: object
linux_desktop_labels_expression:
description: LinuxDesktopLabelsExpression is a predicate expression
used to allow/deny access to Linux desktops.
type: string
linux_desktop_logins:
description: LinuxDesktopLogins is a list of desktop login names
allowed/denied for Linux desktops.
items:
type: string
nullable: true
type: array
logins:
description: Logins is a list of *nix system logins.
items:
@@ -301,6 +301,23 @@ spec:
type: string
nullable: true
type: array
linux_desktop_labels:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: LinuxDesktopLabels are used in the RBAC system to
allow/deny access to Linux desktops.
type: object
linux_desktop_labels_expression:
description: LinuxDesktopLabelsExpression is a predicate expression
used to allow/deny access to Linux desktops.
type: string
linux_desktop_logins:
description: LinuxDesktopLogins is a list of desktop login names
allowed/denied for Linux desktops.
items:
type: string
nullable: true
type: array
logins:
description: Logins is a list of *nix system logins.
items:
@@ -918,6 +935,23 @@ spec:
type: string
nullable: true
type: array
linux_desktop_labels:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: LinuxDesktopLabels are used in the RBAC system to
allow/deny access to Linux desktops.
type: object
linux_desktop_labels_expression:
description: LinuxDesktopLabelsExpression is a predicate expression
used to allow/deny access to Linux desktops.
type: string
linux_desktop_logins:
description: LinuxDesktopLogins is a list of desktop login names
allowed/denied for Linux desktops.
items:
type: string
nullable: true
type: array
logins:
description: Logins is a list of *nix system logins.
items:
@@ -301,6 +301,23 @@ spec:
type: string
nullable: true
type: array
linux_desktop_labels:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: LinuxDesktopLabels are used in the RBAC system to
allow/deny access to Linux desktops.
type: object
linux_desktop_labels_expression:
description: LinuxDesktopLabelsExpression is a predicate expression
used to allow/deny access to Linux desktops.
type: string
linux_desktop_logins:
description: LinuxDesktopLogins is a list of desktop login names
allowed/denied for Linux desktops.
items:
type: string
nullable: true
type: array
logins:
description: Logins is a list of *nix system logins.
items:
@@ -918,6 +935,23 @@ spec:
type: string
nullable: true
type: array
linux_desktop_labels:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: LinuxDesktopLabels are used in the RBAC system to
allow/deny access to Linux desktops.
type: object
linux_desktop_labels_expression:
description: LinuxDesktopLabelsExpression is a predicate expression
used to allow/deny access to Linux desktops.
type: string
linux_desktop_logins:
description: LinuxDesktopLogins is a list of desktop login names
allowed/denied for Linux desktops.
items:
type: string
nullable: true
type: array
logins:
description: Logins is a list of *nix system logins.
items:
@@ -298,6 +298,23 @@ spec:
type: string
nullable: true
type: array
linux_desktop_labels:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: LinuxDesktopLabels are used in the RBAC system to
allow/deny access to Linux desktops.
type: object
linux_desktop_labels_expression:
description: LinuxDesktopLabelsExpression is a predicate expression
used to allow/deny access to Linux desktops.
type: string
linux_desktop_logins:
description: LinuxDesktopLogins is a list of desktop login names
allowed/denied for Linux desktops.
items:
type: string
nullable: true
type: array
logins:
description: Logins is a list of *nix system logins.
items:
@@ -915,6 +932,23 @@ spec:
type: string
nullable: true
type: array
linux_desktop_labels:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: LinuxDesktopLabels are used in the RBAC system to
allow/deny access to Linux desktops.
type: object
linux_desktop_labels_expression:
description: LinuxDesktopLabelsExpression is a predicate expression
used to allow/deny access to Linux desktops.
type: string
linux_desktop_logins:
description: LinuxDesktopLogins is a list of desktop login names
allowed/denied for Linux desktops.
items:
type: string
nullable: true
type: array
logins:
description: Logins is a list of *nix system logins.
items:
@@ -1829,6 +1863,23 @@ spec:
type: string
nullable: true
type: array
linux_desktop_labels:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: LinuxDesktopLabels are used in the RBAC system to
allow/deny access to Linux desktops.
type: object
linux_desktop_labels_expression:
description: LinuxDesktopLabelsExpression is a predicate expression
used to allow/deny access to Linux desktops.
type: string
linux_desktop_logins:
description: LinuxDesktopLogins is a list of desktop login names
allowed/denied for Linux desktops.
items:
type: string
nullable: true
type: array
logins:
description: Logins is a list of *nix system logins.
items:
@@ -2446,6 +2497,23 @@ spec:
type: string
nullable: true
type: array
linux_desktop_labels:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: LinuxDesktopLabels are used in the RBAC system to
allow/deny access to Linux desktops.
type: object
linux_desktop_labels_expression:
description: LinuxDesktopLabelsExpression is a predicate expression
used to allow/deny access to Linux desktops.
type: string
linux_desktop_logins:
description: LinuxDesktopLogins is a list of desktop login names
allowed/denied for Linux desktops.
items:
type: string
nullable: true
type: array
logins:
description: Logins is a list of *nix system logins.
items:
@@ -301,6 +301,23 @@ spec:
type: string
nullable: true
type: array
linux_desktop_labels:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: LinuxDesktopLabels are used in the RBAC system to
allow/deny access to Linux desktops.
type: object
linux_desktop_labels_expression:
description: LinuxDesktopLabelsExpression is a predicate expression
used to allow/deny access to Linux desktops.
type: string
linux_desktop_logins:
description: LinuxDesktopLogins is a list of desktop login names
allowed/denied for Linux desktops.
items:
type: string
nullable: true
type: array
logins:
description: Logins is a list of *nix system logins.
items:
@@ -918,6 +935,23 @@ spec:
type: string
nullable: true
type: array
linux_desktop_labels:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: LinuxDesktopLabels are used in the RBAC system to
allow/deny access to Linux desktops.
type: object
linux_desktop_labels_expression:
description: LinuxDesktopLabelsExpression is a predicate expression
used to allow/deny access to Linux desktops.
type: string
linux_desktop_logins:
description: LinuxDesktopLogins is a list of desktop login names
allowed/denied for Linux desktops.
items:
type: string
nullable: true
type: array
logins:
description: Logins is a list of *nix system logins.
items:
@@ -301,6 +301,23 @@ spec:
type: string
nullable: true
type: array
linux_desktop_labels:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: LinuxDesktopLabels are used in the RBAC system to
allow/deny access to Linux desktops.
type: object
linux_desktop_labels_expression:
description: LinuxDesktopLabelsExpression is a predicate expression
used to allow/deny access to Linux desktops.
type: string
linux_desktop_logins:
description: LinuxDesktopLogins is a list of desktop login names
allowed/denied for Linux desktops.
items:
type: string
nullable: true
type: array
logins:
description: Logins is a list of *nix system logins.
items:
@@ -918,6 +935,23 @@ spec:
type: string
nullable: true
type: array
linux_desktop_labels:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: LinuxDesktopLabels are used in the RBAC system to
allow/deny access to Linux desktops.
type: object
linux_desktop_labels_expression:
description: LinuxDesktopLabelsExpression is a predicate expression
used to allow/deny access to Linux desktops.
type: string
linux_desktop_logins:
description: LinuxDesktopLogins is a list of desktop login names
allowed/denied for Linux desktops.
items:
type: string
nullable: true
type: array
logins:
description: Logins is a list of *nix system logins.
items:
@@ -301,6 +301,23 @@ spec:
type: string
nullable: true
type: array
linux_desktop_labels:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: LinuxDesktopLabels are used in the RBAC system to
allow/deny access to Linux desktops.
type: object
linux_desktop_labels_expression:
description: LinuxDesktopLabelsExpression is a predicate expression
used to allow/deny access to Linux desktops.
type: string
linux_desktop_logins:
description: LinuxDesktopLogins is a list of desktop login names
allowed/denied for Linux desktops.
items:
type: string
nullable: true
type: array
logins:
description: Logins is a list of *nix system logins.
items:
@@ -918,6 +935,23 @@ spec:
type: string
nullable: true
type: array
linux_desktop_labels:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: LinuxDesktopLabels are used in the RBAC system to
allow/deny access to Linux desktops.
type: object
linux_desktop_labels_expression:
description: LinuxDesktopLabelsExpression is a predicate expression
used to allow/deny access to Linux desktops.
type: string
linux_desktop_logins:
description: LinuxDesktopLogins is a list of desktop login names
allowed/denied for Linux desktops.
items:
type: string
nullable: true
type: array
logins:
description: Logins is a list of *nix system logins.
items:
@@ -2881,6 +2881,20 @@ func GenSchemaRoleV6(ctx context.Context) (github_com_hashicorp_terraform_plugin
Optional: true,
Type: github_com_hashicorp_terraform_plugin_framework_types.ListType{ElemType: github_com_hashicorp_terraform_plugin_framework_types.StringType},
},
"linux_desktop_labels": GenSchemaLabels(ctx, github_com_hashicorp_terraform_plugin_framework_tfsdk.Attribute{
Description: "LinuxDesktopLabels are used in the RBAC system to allow/deny access to Linux desktops.",
Optional: true,
}),
"linux_desktop_labels_expression": {
Description: "LinuxDesktopLabelsExpression is a predicate expression used to allow/deny access to Linux desktops.",
Optional: true,
Type: github_com_hashicorp_terraform_plugin_framework_types.StringType,
},
"linux_desktop_logins": {
Description: "LinuxDesktopLogins is a list of desktop login names allowed/denied for Linux desktops.",
Optional: true,
Type: github_com_hashicorp_terraform_plugin_framework_types.ListType{ElemType: github_com_hashicorp_terraform_plugin_framework_types.StringType},
},
"logins": {
Description: "Logins is a list of *nix system logins.",
Optional: true,
@@ -3394,6 +3408,20 @@ func GenSchemaRoleV6(ctx context.Context) (github_com_hashicorp_terraform_plugin
Optional: true,
Type: github_com_hashicorp_terraform_plugin_framework_types.ListType{ElemType: github_com_hashicorp_terraform_plugin_framework_types.StringType},
},
"linux_desktop_labels": GenSchemaLabels(ctx, github_com_hashicorp_terraform_plugin_framework_tfsdk.Attribute{
Description: "LinuxDesktopLabels are used in the RBAC system to allow/deny access to Linux desktops.",
Optional: true,
}),
"linux_desktop_labels_expression": {
Description: "LinuxDesktopLabelsExpression is a predicate expression used to allow/deny access to Linux desktops.",
Optional: true,
Type: github_com_hashicorp_terraform_plugin_framework_types.StringType,
},
"linux_desktop_logins": {
Description: "LinuxDesktopLogins is a list of desktop login names allowed/denied for Linux desktops.",
Optional: true,
Type: github_com_hashicorp_terraform_plugin_framework_types.ListType{ElemType: github_com_hashicorp_terraform_plugin_framework_types.StringType},
},
"logins": {
Description: "Logins is a list of *nix system logins.",
Optional: true,
@@ -29965,6 +29993,57 @@ func CopyRoleV6FromTerraform(_ context.Context, tf github_com_hashicorp_terrafor
}
}
}
{
a, ok := tf.Attrs["linux_desktop_logins"]
if !ok {
diags.Append(attrReadMissingDiag{"RoleV6.Spec.Allow.LinuxDesktopLogins"})
} else {
v, ok := a.(github_com_hashicorp_terraform_plugin_framework_types.List)
if !ok {
diags.Append(attrReadConversionFailureDiag{"RoleV6.Spec.Allow.LinuxDesktopLogins", "github.com/hashicorp/terraform-plugin-framework/types.List"})
} else {
obj.LinuxDesktopLogins = make([]string, len(v.Elems))
if !v.Null && !v.Unknown {
for k, a := range v.Elems {
v, ok := a.(github_com_hashicorp_terraform_plugin_framework_types.String)
if !ok {
diags.Append(attrReadConversionFailureDiag{"RoleV6.Spec.Allow.LinuxDesktopLogins", "github_com_hashicorp_terraform_plugin_framework_types.String"})
} else {
var t string
if !v.Null && !v.Unknown {
t = string(v.Value)
}
obj.LinuxDesktopLogins[k] = t
}
}
}
}
}
}
{
a, ok := tf.Attrs["linux_desktop_labels"]
if !ok {
diags.Append(attrReadMissingDiag{"RoleV6.Spec.Allow.LinuxDesktopLabels"})
}
CopyFromLabels(diags, a, &obj.LinuxDesktopLabels)
}
{
a, ok := tf.Attrs["linux_desktop_labels_expression"]
if !ok {
diags.Append(attrReadMissingDiag{"RoleV6.Spec.Allow.LinuxDesktopLabelsExpression"})
} else {
v, ok := a.(github_com_hashicorp_terraform_plugin_framework_types.String)
if !ok {
diags.Append(attrReadConversionFailureDiag{"RoleV6.Spec.Allow.LinuxDesktopLabelsExpression", "github.com/hashicorp/terraform-plugin-framework/types.String"})
} else {
var t string
if !v.Null && !v.Unknown {
t = string(v.Value)
}
obj.LinuxDesktopLabelsExpression = t
}
}
}
}
}
}
@@ -32089,6 +32168,57 @@ func CopyRoleV6FromTerraform(_ context.Context, tf github_com_hashicorp_terrafor
}
}
}
{
a, ok := tf.Attrs["linux_desktop_logins"]
if !ok {
diags.Append(attrReadMissingDiag{"RoleV6.Spec.Deny.LinuxDesktopLogins"})
} else {
v, ok := a.(github_com_hashicorp_terraform_plugin_framework_types.List)
if !ok {
diags.Append(attrReadConversionFailureDiag{"RoleV6.Spec.Deny.LinuxDesktopLogins", "github.com/hashicorp/terraform-plugin-framework/types.List"})
} else {
obj.LinuxDesktopLogins = make([]string, len(v.Elems))
if !v.Null && !v.Unknown {
for k, a := range v.Elems {
v, ok := a.(github_com_hashicorp_terraform_plugin_framework_types.String)
if !ok {
diags.Append(attrReadConversionFailureDiag{"RoleV6.Spec.Deny.LinuxDesktopLogins", "github_com_hashicorp_terraform_plugin_framework_types.String"})
} else {
var t string
if !v.Null && !v.Unknown {
t = string(v.Value)
}
obj.LinuxDesktopLogins[k] = t
}
}
}
}
}
}
{
a, ok := tf.Attrs["linux_desktop_labels"]
if !ok {
diags.Append(attrReadMissingDiag{"RoleV6.Spec.Deny.LinuxDesktopLabels"})
}
CopyFromLabels(diags, a, &obj.LinuxDesktopLabels)
}
{
a, ok := tf.Attrs["linux_desktop_labels_expression"]
if !ok {
diags.Append(attrReadMissingDiag{"RoleV6.Spec.Deny.LinuxDesktopLabelsExpression"})
} else {
v, ok := a.(github_com_hashicorp_terraform_plugin_framework_types.String)
if !ok {
diags.Append(attrReadConversionFailureDiag{"RoleV6.Spec.Deny.LinuxDesktopLabelsExpression", "github.com/hashicorp/terraform-plugin-framework/types.String"})
} else {
var t string
if !v.Null && !v.Unknown {
t = string(v.Value)
}
obj.LinuxDesktopLabelsExpression = t
}
}
}
}
}
}
@@ -37058,6 +37188,90 @@ func CopyRoleV6ToTerraform(ctx context.Context, obj *github_com_gravitational_te
}
}
}
{
a, ok := tf.AttrTypes["linux_desktop_logins"]
if !ok {
diags.Append(attrWriteMissingDiag{"RoleV6.Spec.Allow.LinuxDesktopLogins"})
} else {
o, ok := a.(github_com_hashicorp_terraform_plugin_framework_types.ListType)
if !ok {
diags.Append(attrWriteConversionFailureDiag{"RoleV6.Spec.Allow.LinuxDesktopLogins", "github.com/hashicorp/terraform-plugin-framework/types.ListType"})
} else {
c, ok := tf.Attrs["linux_desktop_logins"].(github_com_hashicorp_terraform_plugin_framework_types.List)
if !ok {
c = github_com_hashicorp_terraform_plugin_framework_types.List{
ElemType: o.ElemType,
Elems: make([]github_com_hashicorp_terraform_plugin_framework_attr.Value, len(obj.LinuxDesktopLogins)),
Null: true,
}
} else {
if c.Elems == nil {
c.Elems = make([]github_com_hashicorp_terraform_plugin_framework_attr.Value, len(obj.LinuxDesktopLogins))
}
}
if obj.LinuxDesktopLogins != nil {
t := o.ElemType
if len(obj.LinuxDesktopLogins) != len(c.Elems) {
c.Elems = make([]github_com_hashicorp_terraform_plugin_framework_attr.Value, len(obj.LinuxDesktopLogins))
}
for k, a := range obj.LinuxDesktopLogins {
v, ok := tf.Attrs["linux_desktop_logins"].(github_com_hashicorp_terraform_plugin_framework_types.String)
if !ok {
i, err := t.ValueFromTerraform(ctx, github_com_hashicorp_terraform_plugin_go_tftypes.NewValue(t.TerraformType(ctx), nil))
if err != nil {
diags.Append(attrWriteGeneralError{"RoleV6.Spec.Allow.LinuxDesktopLogins", err})
}
v, ok = i.(github_com_hashicorp_terraform_plugin_framework_types.String)
if !ok {
diags.Append(attrWriteConversionFailureDiag{"RoleV6.Spec.Allow.LinuxDesktopLogins", "github.com/hashicorp/terraform-plugin-framework/types.String"})
}
v.Null = string(a) == ""
}
v.Value = string(a)
v.Unknown = false
c.Elems[k] = v
}
if len(obj.LinuxDesktopLogins) > 0 {
c.Null = false
}
}
c.Unknown = false
tf.Attrs["linux_desktop_logins"] = c
}
}
}
{
t, ok := tf.AttrTypes["linux_desktop_labels"]
if !ok {
diags.Append(attrWriteMissingDiag{"RoleV6.Spec.Allow.LinuxDesktopLabels"})
} else {
v := CopyToLabels(diags, obj.LinuxDesktopLabels, t, tf.Attrs["linux_desktop_labels"])
tf.Attrs["linux_desktop_labels"] = v
}
}
{
t, ok := tf.AttrTypes["linux_desktop_labels_expression"]
if !ok {
diags.Append(attrWriteMissingDiag{"RoleV6.Spec.Allow.LinuxDesktopLabelsExpression"})
} else {
v, ok := tf.Attrs["linux_desktop_labels_expression"].(github_com_hashicorp_terraform_plugin_framework_types.String)
if !ok {
i, err := t.ValueFromTerraform(ctx, github_com_hashicorp_terraform_plugin_go_tftypes.NewValue(t.TerraformType(ctx), nil))
if err != nil {
diags.Append(attrWriteGeneralError{"RoleV6.Spec.Allow.LinuxDesktopLabelsExpression", err})
}
v, ok = i.(github_com_hashicorp_terraform_plugin_framework_types.String)
if !ok {
diags.Append(attrWriteConversionFailureDiag{"RoleV6.Spec.Allow.LinuxDesktopLabelsExpression", "github.com/hashicorp/terraform-plugin-framework/types.String"})
}
v.Null = string(obj.LinuxDesktopLabelsExpression) == ""
}
v.Value = string(obj.LinuxDesktopLabelsExpression)
v.Unknown = false
tf.Attrs["linux_desktop_labels_expression"] = v
}
}
}
v.Unknown = false
tf.Attrs["allow"] = v
@@ -40747,6 +40961,90 @@ func CopyRoleV6ToTerraform(ctx context.Context, obj *github_com_gravitational_te
}
}
}
{
a, ok := tf.AttrTypes["linux_desktop_logins"]
if !ok {
diags.Append(attrWriteMissingDiag{"RoleV6.Spec.Deny.LinuxDesktopLogins"})
} else {
o, ok := a.(github_com_hashicorp_terraform_plugin_framework_types.ListType)
if !ok {
diags.Append(attrWriteConversionFailureDiag{"RoleV6.Spec.Deny.LinuxDesktopLogins", "github.com/hashicorp/terraform-plugin-framework/types.ListType"})
} else {
c, ok := tf.Attrs["linux_desktop_logins"].(github_com_hashicorp_terraform_plugin_framework_types.List)
if !ok {
c = github_com_hashicorp_terraform_plugin_framework_types.List{
ElemType: o.ElemType,
Elems: make([]github_com_hashicorp_terraform_plugin_framework_attr.Value, len(obj.LinuxDesktopLogins)),
Null: true,
}
} else {
if c.Elems == nil {
c.Elems = make([]github_com_hashicorp_terraform_plugin_framework_attr.Value, len(obj.LinuxDesktopLogins))
}
}
if obj.LinuxDesktopLogins != nil {
t := o.ElemType
if len(obj.LinuxDesktopLogins) != len(c.Elems) {
c.Elems = make([]github_com_hashicorp_terraform_plugin_framework_attr.Value, len(obj.LinuxDesktopLogins))
}
for k, a := range obj.LinuxDesktopLogins {
v, ok := tf.Attrs["linux_desktop_logins"].(github_com_hashicorp_terraform_plugin_framework_types.String)
if !ok {
i, err := t.ValueFromTerraform(ctx, github_com_hashicorp_terraform_plugin_go_tftypes.NewValue(t.TerraformType(ctx), nil))
if err != nil {
diags.Append(attrWriteGeneralError{"RoleV6.Spec.Deny.LinuxDesktopLogins", err})
}
v, ok = i.(github_com_hashicorp_terraform_plugin_framework_types.String)
if !ok {
diags.Append(attrWriteConversionFailureDiag{"RoleV6.Spec.Deny.LinuxDesktopLogins", "github.com/hashicorp/terraform-plugin-framework/types.String"})
}
v.Null = string(a) == ""
}
v.Value = string(a)
v.Unknown = false
c.Elems[k] = v
}
if len(obj.LinuxDesktopLogins) > 0 {
c.Null = false
}
}
c.Unknown = false
tf.Attrs["linux_desktop_logins"] = c
}
}
}
{
t, ok := tf.AttrTypes["linux_desktop_labels"]
if !ok {
diags.Append(attrWriteMissingDiag{"RoleV6.Spec.Deny.LinuxDesktopLabels"})
} else {
v := CopyToLabels(diags, obj.LinuxDesktopLabels, t, tf.Attrs["linux_desktop_labels"])
tf.Attrs["linux_desktop_labels"] = v
}
}
{
t, ok := tf.AttrTypes["linux_desktop_labels_expression"]
if !ok {
diags.Append(attrWriteMissingDiag{"RoleV6.Spec.Deny.LinuxDesktopLabelsExpression"})
} else {
v, ok := tf.Attrs["linux_desktop_labels_expression"].(github_com_hashicorp_terraform_plugin_framework_types.String)
if !ok {
i, err := t.ValueFromTerraform(ctx, github_com_hashicorp_terraform_plugin_go_tftypes.NewValue(t.TerraformType(ctx), nil))
if err != nil {
diags.Append(attrWriteGeneralError{"RoleV6.Spec.Deny.LinuxDesktopLabelsExpression", err})
}
v, ok = i.(github_com_hashicorp_terraform_plugin_framework_types.String)
if !ok {
diags.Append(attrWriteConversionFailureDiag{"RoleV6.Spec.Deny.LinuxDesktopLabelsExpression", "github.com/hashicorp/terraform-plugin-framework/types.String"})
}
v.Null = string(obj.LinuxDesktopLabelsExpression) == ""
}
v.Value = string(obj.LinuxDesktopLabelsExpression)
v.Unknown = false
tf.Attrs["linux_desktop_labels_expression"] = v
}
}
}
v.Unknown = false
tf.Attrs["deny"] = v