From cec3c75a103a84e4f99621be938c7c704c7ad7b6 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Mon, 11 May 2026 20:55:11 +0200 Subject: [PATCH] feat: add uc dns set This allows manual setting of the cluster's domain name. I use this to make the local cluster admin aware that this has been done. (and then manually update the external dns) ``` % uc dns set ctrl.u.science.ru.nl Set cluster domain: ctrl.u.science.ru.nl Deploy the Caddy reverse proxy service ('uc caddy deploy') to enable internet access to your services via the reserved or your custom domain. % uc dns show ctrl.u.science.ru.nl % uc dns set ctrl.u.science.ru.nl Error: domain already reserved % uc dns release Released cluster domain: ctrl.u.science.ru.nl ``` See: #37 Signed-off-by: Miek Gieben --- api/pb/cluster.pb.go | 695 ++++++++++++++++++++++++++++++-- api/pb/cluster.proto | 5 + api/pb/cluster_grpc.pb.go | 38 ++ cmd/uc/dns/root.go | 1 + cmd/uc/dns/set.go | 64 +++ internal/machine/cluster/dns.go | 29 ++ 6 files changed, 797 insertions(+), 35 deletions(-) create mode 100644 cmd/uc/dns/set.go diff --git a/api/pb/cluster.pb.go b/api/pb/cluster.pb.go index 5efdf422..6f042979 100644 --- a/api/pb/cluster.pb.go +++ b/api/pb/cluster.pb.go @@ -124,7 +124,13 @@ func (x DNSRecord_RecordType) Number() protoreflect.EnumNumber { // Deprecated: Use DNSRecord_RecordType.Descriptor instead. func (DNSRecord_RecordType) EnumDescriptor() ([]byte, []int) { +<<<<<<< HEAD:api/pb/cluster.pb.go return file_api_pb_cluster_proto_rawDescGZIP(), []int{9, 0} +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + return file_internal_machine_api_pb_cluster_proto_rawDescGZIP(), []int{9, 0} +======= + return file_internal_machine_api_pb_cluster_proto_rawDescGZIP(), []int{12, 0} +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go } type AddMachineRequest struct { @@ -339,6 +345,126 @@ func (x *ListMachinesResponse) GetMachines() []*MachineMember { return nil } +type UpdateMachineRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Machine to update + MachineId string `protobuf:"bytes,1,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` + // Updated machine information + Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"` + PublicIp *IP `protobuf:"bytes,3,opt,name=public_ip,json=publicIp,proto3,oneof" json:"public_ip,omitempty"` + Endpoints []*IPPort `protobuf:"bytes,4,rep,name=endpoints,proto3" json:"endpoints,omitempty"` +} + +func (x *UpdateMachineRequest) Reset() { + *x = UpdateMachineRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateMachineRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateMachineRequest) ProtoMessage() {} + +func (x *UpdateMachineRequest) ProtoReflect() protoreflect.Message { + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateMachineRequest.ProtoReflect.Descriptor instead. +func (*UpdateMachineRequest) Descriptor() ([]byte, []int) { + return file_internal_machine_api_pb_cluster_proto_rawDescGZIP(), []int{4} +} + +func (x *UpdateMachineRequest) GetMachineId() string { + if x != nil { + return x.MachineId + } + return "" +} + +func (x *UpdateMachineRequest) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *UpdateMachineRequest) GetPublicIp() *IP { + if x != nil { + return x.PublicIp + } + return nil +} + +func (x *UpdateMachineRequest) GetEndpoints() []*IPPort { + if x != nil { + return x.Endpoints + } + return nil +} + +type UpdateMachineResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Machine *MachineInfo `protobuf:"bytes,1,opt,name=machine,proto3" json:"machine,omitempty"` +} + +func (x *UpdateMachineResponse) Reset() { + *x = UpdateMachineResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateMachineResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateMachineResponse) ProtoMessage() {} + +func (x *UpdateMachineResponse) ProtoReflect() protoreflect.Message { + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateMachineResponse.ProtoReflect.Descriptor instead. +func (*UpdateMachineResponse) Descriptor() ([]byte, []int) { + return file_internal_machine_api_pb_cluster_proto_rawDescGZIP(), []int{5} +} + +func (x *UpdateMachineResponse) GetMachine() *MachineInfo { + if x != nil { + return x.Machine + } + return nil +} + type RemoveMachineRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -350,7 +476,13 @@ type RemoveMachineRequest struct { func (x *RemoveMachineRequest) Reset() { *x = RemoveMachineRequest{} if protoimpl.UnsafeEnabled { +<<<<<<< HEAD:api/pb/cluster.pb.go mi := &file_api_pb_cluster_proto_msgTypes[4] +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[4] +======= + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[6] +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -363,7 +495,13 @@ func (x *RemoveMachineRequest) String() string { func (*RemoveMachineRequest) ProtoMessage() {} func (x *RemoveMachineRequest) ProtoReflect() protoreflect.Message { +<<<<<<< HEAD:api/pb/cluster.pb.go mi := &file_api_pb_cluster_proto_msgTypes[4] +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[4] +======= + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[6] +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -376,7 +514,13 @@ func (x *RemoveMachineRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveMachineRequest.ProtoReflect.Descriptor instead. func (*RemoveMachineRequest) Descriptor() ([]byte, []int) { +<<<<<<< HEAD:api/pb/cluster.pb.go return file_api_pb_cluster_proto_rawDescGZIP(), []int{4} +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + return file_internal_machine_api_pb_cluster_proto_rawDescGZIP(), []int{4} +======= + return file_internal_machine_api_pb_cluster_proto_rawDescGZIP(), []int{6} +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go } func (x *RemoveMachineRequest) GetId() string { @@ -397,7 +541,13 @@ type Domain struct { func (x *Domain) Reset() { *x = Domain{} if protoimpl.UnsafeEnabled { +<<<<<<< HEAD:api/pb/cluster.pb.go mi := &file_api_pb_cluster_proto_msgTypes[5] +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[5] +======= + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[7] +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -410,7 +560,13 @@ func (x *Domain) String() string { func (*Domain) ProtoMessage() {} func (x *Domain) ProtoReflect() protoreflect.Message { +<<<<<<< HEAD:api/pb/cluster.pb.go mi := &file_api_pb_cluster_proto_msgTypes[5] +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[5] +======= + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[7] +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -423,7 +579,13 @@ func (x *Domain) ProtoReflect() protoreflect.Message { // Deprecated: Use Domain.ProtoReflect.Descriptor instead. func (*Domain) Descriptor() ([]byte, []int) { +<<<<<<< HEAD:api/pb/cluster.pb.go return file_api_pb_cluster_proto_rawDescGZIP(), []int{5} +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + return file_internal_machine_api_pb_cluster_proto_rawDescGZIP(), []int{5} +======= + return file_internal_machine_api_pb_cluster_proto_rawDescGZIP(), []int{7} +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go } func (x *Domain) GetName() string { @@ -444,7 +606,13 @@ type ReserveDomainRequest struct { func (x *ReserveDomainRequest) Reset() { *x = ReserveDomainRequest{} if protoimpl.UnsafeEnabled { +<<<<<<< HEAD:api/pb/cluster.pb.go mi := &file_api_pb_cluster_proto_msgTypes[6] +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[6] +======= + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[8] +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -457,7 +625,13 @@ func (x *ReserveDomainRequest) String() string { func (*ReserveDomainRequest) ProtoMessage() {} func (x *ReserveDomainRequest) ProtoReflect() protoreflect.Message { +<<<<<<< HEAD:api/pb/cluster.pb.go mi := &file_api_pb_cluster_proto_msgTypes[6] +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[6] +======= + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[8] +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -470,7 +644,13 @@ func (x *ReserveDomainRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReserveDomainRequest.ProtoReflect.Descriptor instead. func (*ReserveDomainRequest) Descriptor() ([]byte, []int) { +<<<<<<< HEAD:api/pb/cluster.pb.go return file_api_pb_cluster_proto_rawDescGZIP(), []int{6} +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + return file_internal_machine_api_pb_cluster_proto_rawDescGZIP(), []int{6} +======= + return file_internal_machine_api_pb_cluster_proto_rawDescGZIP(), []int{8} +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go } func (x *ReserveDomainRequest) GetEndpoint() string { @@ -480,6 +660,53 @@ func (x *ReserveDomainRequest) GetEndpoint() string { return "" } +type SetDomainRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *SetDomainRequest) Reset() { + *x = SetDomainRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SetDomainRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetDomainRequest) ProtoMessage() {} + +func (x *SetDomainRequest) ProtoReflect() protoreflect.Message { + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetDomainRequest.ProtoReflect.Descriptor instead. +func (*SetDomainRequest) Descriptor() ([]byte, []int) { + return file_internal_machine_api_pb_cluster_proto_rawDescGZIP(), []int{9} +} + +func (x *SetDomainRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + type CreateDomainRecordsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -491,7 +718,13 @@ type CreateDomainRecordsRequest struct { func (x *CreateDomainRecordsRequest) Reset() { *x = CreateDomainRecordsRequest{} if protoimpl.UnsafeEnabled { +<<<<<<< HEAD:api/pb/cluster.pb.go mi := &file_api_pb_cluster_proto_msgTypes[7] +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[7] +======= + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[10] +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -504,7 +737,13 @@ func (x *CreateDomainRecordsRequest) String() string { func (*CreateDomainRecordsRequest) ProtoMessage() {} func (x *CreateDomainRecordsRequest) ProtoReflect() protoreflect.Message { +<<<<<<< HEAD:api/pb/cluster.pb.go mi := &file_api_pb_cluster_proto_msgTypes[7] +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[7] +======= + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[10] +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -517,7 +756,13 @@ func (x *CreateDomainRecordsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateDomainRecordsRequest.ProtoReflect.Descriptor instead. func (*CreateDomainRecordsRequest) Descriptor() ([]byte, []int) { +<<<<<<< HEAD:api/pb/cluster.pb.go return file_api_pb_cluster_proto_rawDescGZIP(), []int{7} +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + return file_internal_machine_api_pb_cluster_proto_rawDescGZIP(), []int{7} +======= + return file_internal_machine_api_pb_cluster_proto_rawDescGZIP(), []int{10} +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go } func (x *CreateDomainRecordsRequest) GetRecords() []*DNSRecord { @@ -538,7 +783,13 @@ type CreateDomainRecordsResponse struct { func (x *CreateDomainRecordsResponse) Reset() { *x = CreateDomainRecordsResponse{} if protoimpl.UnsafeEnabled { +<<<<<<< HEAD:api/pb/cluster.pb.go mi := &file_api_pb_cluster_proto_msgTypes[8] +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[8] +======= + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[11] +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -551,7 +802,13 @@ func (x *CreateDomainRecordsResponse) String() string { func (*CreateDomainRecordsResponse) ProtoMessage() {} func (x *CreateDomainRecordsResponse) ProtoReflect() protoreflect.Message { +<<<<<<< HEAD:api/pb/cluster.pb.go mi := &file_api_pb_cluster_proto_msgTypes[8] +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[8] +======= + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[11] +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -564,7 +821,13 @@ func (x *CreateDomainRecordsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateDomainRecordsResponse.ProtoReflect.Descriptor instead. func (*CreateDomainRecordsResponse) Descriptor() ([]byte, []int) { +<<<<<<< HEAD:api/pb/cluster.pb.go return file_api_pb_cluster_proto_rawDescGZIP(), []int{8} +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + return file_internal_machine_api_pb_cluster_proto_rawDescGZIP(), []int{8} +======= + return file_internal_machine_api_pb_cluster_proto_rawDescGZIP(), []int{11} +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go } func (x *CreateDomainRecordsResponse) GetRecords() []*DNSRecord { @@ -587,7 +850,13 @@ type DNSRecord struct { func (x *DNSRecord) Reset() { *x = DNSRecord{} if protoimpl.UnsafeEnabled { +<<<<<<< HEAD:api/pb/cluster.pb.go mi := &file_api_pb_cluster_proto_msgTypes[9] +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[9] +======= + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[12] +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -600,7 +869,13 @@ func (x *DNSRecord) String() string { func (*DNSRecord) ProtoMessage() {} func (x *DNSRecord) ProtoReflect() protoreflect.Message { +<<<<<<< HEAD:api/pb/cluster.pb.go mi := &file_api_pb_cluster_proto_msgTypes[9] +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[9] +======= + mi := &file_internal_machine_api_pb_cluster_proto_msgTypes[12] +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -613,7 +888,13 @@ func (x *DNSRecord) ProtoReflect() protoreflect.Message { // Deprecated: Use DNSRecord.ProtoReflect.Descriptor instead. func (*DNSRecord) Descriptor() ([]byte, []int) { +<<<<<<< HEAD:api/pb/cluster.pb.go return file_api_pb_cluster_proto_rawDescGZIP(), []int{9} +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + return file_internal_machine_api_pb_cluster_proto_rawDescGZIP(), []int{9} +======= + return file_internal_machine_api_pb_cluster_proto_rawDescGZIP(), []int{12} +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go } func (x *DNSRecord) GetName() string { @@ -639,6 +920,7 @@ func (x *DNSRecord) GetValues() []string { var File_api_pb_cluster_proto protoreflect.FileDescriptor +<<<<<<< HEAD:api/pb/cluster.pb.go var file_api_pb_cluster_proto_rawDesc = []byte{ 0x0a, 0x14, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x62, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x61, 0x70, 0x69, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, @@ -733,6 +1015,231 @@ var file_api_pb_cluster_proto_rawDesc = []byte{ 0x2f, 0x70, 0x73, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x6b, 0x69, 0x2f, 0x75, 0x6e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go +var file_internal_machine_api_pb_cluster_proto_rawDesc = []byte{ + 0x0a, 0x25, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x62, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x61, 0x70, 0x69, 0x1a, 0x1b, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, + 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x70, 0x62, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x25, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x62, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x7b, 0x0a, 0x11, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x2c, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x24, 0x0a, + 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x07, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x50, 0x52, 0x08, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x49, 0x70, 0x22, 0x40, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x07, 0x6d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6d, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x65, 0x22, 0xb4, 0x01, 0x0a, 0x0d, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x12, 0x38, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, + 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x3d, 0x0a, + 0x0f, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x06, 0x0a, + 0x02, 0x55, 0x50, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x53, 0x50, 0x45, 0x43, 0x54, + 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x03, 0x22, 0x46, 0x0a, 0x14, + 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x08, 0x6d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x73, 0x22, 0x26, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x1c, 0x0a, 0x06, + 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x32, 0x0a, 0x14, 0x52, 0x65, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x46, + 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x07, + 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x44, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x07, 0x72, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x47, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x4e, 0x53, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, + 0x96, 0x01, 0x0a, 0x09, 0x44, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x2e, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x05, 0x0a, 0x01, 0x41, 0x10, 0x01, 0x12, 0x08, + 0x0a, 0x04, 0x41, 0x41, 0x41, 0x41, 0x10, 0x02, 0x32, 0xca, 0x03, 0x0a, 0x07, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x12, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x19, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x12, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x37, 0x0a, 0x0d, 0x52, 0x65, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x19, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x34, 0x0a, 0x0d, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0b, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x58, 0x0a, 0x13, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x73, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x37, 0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x73, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x6b, 0x69, 0x2f, 0x75, + 0x6e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, + 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x62, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +======= +var file_internal_machine_api_pb_cluster_proto_rawDesc = []byte{ + 0x0a, 0x25, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x62, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x61, 0x70, 0x69, 0x1a, 0x1b, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, + 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x70, 0x62, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x25, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x62, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x7b, 0x0a, 0x11, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x2c, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x24, 0x0a, + 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x07, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x50, 0x52, 0x08, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x49, 0x70, 0x22, 0x40, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x07, 0x6d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6d, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x65, 0x22, 0xb4, 0x01, 0x0a, 0x0d, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x12, 0x38, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, + 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x3d, 0x0a, + 0x0f, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x06, 0x0a, + 0x02, 0x55, 0x50, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x53, 0x50, 0x45, 0x43, 0x54, + 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x03, 0x22, 0x46, 0x0a, 0x14, + 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x08, 0x6d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x73, 0x22, 0xbb, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, + 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, + 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, + 0x50, 0x48, 0x01, 0x52, 0x08, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x50, 0x50, 0x6f, 0x72, 0x74, + 0x52, 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, + 0x69, 0x70, 0x22, 0x43, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x07, 0x6d, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, + 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x22, 0x26, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, + 0x1c, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x32, 0x0a, + 0x14, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x22, 0x26, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x46, 0x0a, 0x1a, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, + 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x73, 0x22, 0x47, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x28, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x96, 0x01, 0x0a, 0x09, 0x44, + 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x44, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x22, 0x2e, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x05, 0x0a, 0x01, 0x41, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x41, 0x41, + 0x41, 0x10, 0x02, 0x32, 0xc3, 0x04, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, + 0x3d, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x12, 0x16, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x64, 0x64, 0x4d, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, + 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x46, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x12, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x12, 0x19, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x37, 0x0a, + 0x0d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x19, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x2f, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x44, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x12, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0b, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x44, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0b, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x34, 0x0a, 0x0d, 0x52, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x1a, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, + 0x58, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x37, 0x5a, 0x35, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x73, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, + 0x6b, 0x69, 0x2f, 0x75, 0x6e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go } var ( @@ -747,55 +1254,90 @@ func file_api_pb_cluster_proto_rawDescGZIP() []byte { return file_api_pb_cluster_proto_rawDescData } +<<<<<<< HEAD:api/pb/cluster.pb.go var file_api_pb_cluster_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_api_pb_cluster_proto_msgTypes = make([]protoimpl.MessageInfo, 10) var file_api_pb_cluster_proto_goTypes = []any{ +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go +var file_internal_machine_api_pb_cluster_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_internal_machine_api_pb_cluster_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_internal_machine_api_pb_cluster_proto_goTypes = []any{ +======= +var file_internal_machine_api_pb_cluster_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_internal_machine_api_pb_cluster_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_internal_machine_api_pb_cluster_proto_goTypes = []any{ +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go (MachineMember_MembershipState)(0), // 0: api.MachineMember.MembershipState (DNSRecord_RecordType)(0), // 1: api.DNSRecord.RecordType (*AddMachineRequest)(nil), // 2: api.AddMachineRequest (*AddMachineResponse)(nil), // 3: api.AddMachineResponse (*MachineMember)(nil), // 4: api.MachineMember (*ListMachinesResponse)(nil), // 5: api.ListMachinesResponse - (*RemoveMachineRequest)(nil), // 6: api.RemoveMachineRequest - (*Domain)(nil), // 7: api.Domain - (*ReserveDomainRequest)(nil), // 8: api.ReserveDomainRequest - (*CreateDomainRecordsRequest)(nil), // 9: api.CreateDomainRecordsRequest - (*CreateDomainRecordsResponse)(nil), // 10: api.CreateDomainRecordsResponse - (*DNSRecord)(nil), // 11: api.DNSRecord - (*NetworkConfig)(nil), // 12: api.NetworkConfig - (*IP)(nil), // 13: api.IP - (*MachineInfo)(nil), // 14: api.MachineInfo - (*emptypb.Empty)(nil), // 15: google.protobuf.Empty + (*UpdateMachineRequest)(nil), // 6: api.UpdateMachineRequest + (*UpdateMachineResponse)(nil), // 7: api.UpdateMachineResponse + (*RemoveMachineRequest)(nil), // 8: api.RemoveMachineRequest + (*Domain)(nil), // 9: api.Domain + (*ReserveDomainRequest)(nil), // 10: api.ReserveDomainRequest + (*SetDomainRequest)(nil), // 11: api.SetDomainRequest + (*CreateDomainRecordsRequest)(nil), // 12: api.CreateDomainRecordsRequest + (*CreateDomainRecordsResponse)(nil), // 13: api.CreateDomainRecordsResponse + (*DNSRecord)(nil), // 14: api.DNSRecord + (*NetworkConfig)(nil), // 15: api.NetworkConfig + (*IP)(nil), // 16: api.IP + (*MachineInfo)(nil), // 17: api.MachineInfo + (*IPPort)(nil), // 18: api.IPPort + (*emptypb.Empty)(nil), // 19: google.protobuf.Empty } +<<<<<<< HEAD:api/pb/cluster.pb.go var file_api_pb_cluster_proto_depIdxs = []int32{ 12, // 0: api.AddMachineRequest.network:type_name -> api.NetworkConfig 13, // 1: api.AddMachineRequest.public_ip:type_name -> api.IP 14, // 2: api.AddMachineResponse.machine:type_name -> api.MachineInfo 14, // 3: api.MachineMember.machine:type_name -> api.MachineInfo +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go +var file_internal_machine_api_pb_cluster_proto_depIdxs = []int32{ + 12, // 0: api.AddMachineRequest.network:type_name -> api.NetworkConfig + 13, // 1: api.AddMachineRequest.public_ip:type_name -> api.IP + 14, // 2: api.AddMachineResponse.machine:type_name -> api.MachineInfo + 14, // 3: api.MachineMember.machine:type_name -> api.MachineInfo +======= +var file_internal_machine_api_pb_cluster_proto_depIdxs = []int32{ + 15, // 0: api.AddMachineRequest.network:type_name -> api.NetworkConfig + 16, // 1: api.AddMachineRequest.public_ip:type_name -> api.IP + 17, // 2: api.AddMachineResponse.machine:type_name -> api.MachineInfo + 17, // 3: api.MachineMember.machine:type_name -> api.MachineInfo +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go 0, // 4: api.MachineMember.state:type_name -> api.MachineMember.MembershipState 4, // 5: api.ListMachinesResponse.machines:type_name -> api.MachineMember - 11, // 6: api.CreateDomainRecordsRequest.records:type_name -> api.DNSRecord - 11, // 7: api.CreateDomainRecordsResponse.records:type_name -> api.DNSRecord - 1, // 8: api.DNSRecord.type:type_name -> api.DNSRecord.RecordType - 2, // 9: api.Cluster.AddMachine:input_type -> api.AddMachineRequest - 15, // 10: api.Cluster.ListMachines:input_type -> google.protobuf.Empty - 6, // 11: api.Cluster.RemoveMachine:input_type -> api.RemoveMachineRequest - 8, // 12: api.Cluster.ReserveDomain:input_type -> api.ReserveDomainRequest - 15, // 13: api.Cluster.GetDomain:input_type -> google.protobuf.Empty - 15, // 14: api.Cluster.ReleaseDomain:input_type -> google.protobuf.Empty - 9, // 15: api.Cluster.CreateDomainRecords:input_type -> api.CreateDomainRecordsRequest - 3, // 16: api.Cluster.AddMachine:output_type -> api.AddMachineResponse - 5, // 17: api.Cluster.ListMachines:output_type -> api.ListMachinesResponse - 15, // 18: api.Cluster.RemoveMachine:output_type -> google.protobuf.Empty - 7, // 19: api.Cluster.ReserveDomain:output_type -> api.Domain - 7, // 20: api.Cluster.GetDomain:output_type -> api.Domain - 7, // 21: api.Cluster.ReleaseDomain:output_type -> api.Domain - 10, // 22: api.Cluster.CreateDomainRecords:output_type -> api.CreateDomainRecordsResponse - 16, // [16:23] is the sub-list for method output_type - 9, // [9:16] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 16, // 6: api.UpdateMachineRequest.public_ip:type_name -> api.IP + 18, // 7: api.UpdateMachineRequest.endpoints:type_name -> api.IPPort + 17, // 8: api.UpdateMachineResponse.machine:type_name -> api.MachineInfo + 14, // 9: api.CreateDomainRecordsRequest.records:type_name -> api.DNSRecord + 14, // 10: api.CreateDomainRecordsResponse.records:type_name -> api.DNSRecord + 1, // 11: api.DNSRecord.type:type_name -> api.DNSRecord.RecordType + 2, // 12: api.Cluster.AddMachine:input_type -> api.AddMachineRequest + 19, // 13: api.Cluster.ListMachines:input_type -> google.protobuf.Empty + 6, // 14: api.Cluster.UpdateMachine:input_type -> api.UpdateMachineRequest + 8, // 15: api.Cluster.RemoveMachine:input_type -> api.RemoveMachineRequest + 10, // 16: api.Cluster.ReserveDomain:input_type -> api.ReserveDomainRequest + 11, // 17: api.Cluster.SetDomain:input_type -> api.SetDomainRequest + 19, // 18: api.Cluster.GetDomain:input_type -> google.protobuf.Empty + 19, // 19: api.Cluster.ReleaseDomain:input_type -> google.protobuf.Empty + 12, // 20: api.Cluster.CreateDomainRecords:input_type -> api.CreateDomainRecordsRequest + 3, // 21: api.Cluster.AddMachine:output_type -> api.AddMachineResponse + 5, // 22: api.Cluster.ListMachines:output_type -> api.ListMachinesResponse + 7, // 23: api.Cluster.UpdateMachine:output_type -> api.UpdateMachineResponse + 19, // 24: api.Cluster.RemoveMachine:output_type -> google.protobuf.Empty + 9, // 25: api.Cluster.ReserveDomain:output_type -> api.Domain + 9, // 26: api.Cluster.SetDomain:output_type -> api.Domain + 9, // 27: api.Cluster.GetDomain:output_type -> api.Domain + 9, // 28: api.Cluster.ReleaseDomain:output_type -> api.Domain + 13, // 29: api.Cluster.CreateDomainRecords:output_type -> api.CreateDomainRecordsResponse + 21, // [21:30] is the sub-list for method output_type + 12, // [12:21] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name } func init() { file_api_pb_cluster_proto_init() } @@ -854,8 +1396,16 @@ func file_api_pb_cluster_proto_init() { return nil } } +<<<<<<< HEAD:api/pb/cluster.pb.go file_api_pb_cluster_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*RemoveMachineRequest); i { +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + file_internal_machine_api_pb_cluster_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*RemoveMachineRequest); i { +======= + file_internal_machine_api_pb_cluster_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*UpdateMachineRequest); i { +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go case 0: return &v.state case 1: @@ -866,8 +1416,16 @@ func file_api_pb_cluster_proto_init() { return nil } } +<<<<<<< HEAD:api/pb/cluster.pb.go file_api_pb_cluster_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*Domain); i { +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + file_internal_machine_api_pb_cluster_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*Domain); i { +======= + file_internal_machine_api_pb_cluster_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*UpdateMachineResponse); i { +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go case 0: return &v.state case 1: @@ -878,8 +1436,16 @@ func file_api_pb_cluster_proto_init() { return nil } } +<<<<<<< HEAD:api/pb/cluster.pb.go file_api_pb_cluster_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*ReserveDomainRequest); i { +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + file_internal_machine_api_pb_cluster_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*ReserveDomainRequest); i { +======= + file_internal_machine_api_pb_cluster_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*RemoveMachineRequest); i { +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go case 0: return &v.state case 1: @@ -890,8 +1456,65 @@ func file_api_pb_cluster_proto_init() { return nil } } +<<<<<<< HEAD:api/pb/cluster.pb.go file_api_pb_cluster_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*CreateDomainRecordsRequest); i { +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + file_internal_machine_api_pb_cluster_proto_msgTypes[7].Exporter = func(v any, i int) any { + switch v := v.(*CreateDomainRecordsRequest); i { +======= + file_internal_machine_api_pb_cluster_proto_msgTypes[7].Exporter = func(v any, i int) any { + switch v := v.(*Domain); i { +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } +<<<<<<< HEAD:api/pb/cluster.pb.go + file_api_pb_cluster_proto_msgTypes[8].Exporter = func(v any, i int) any { + switch v := v.(*CreateDomainRecordsResponse); i { +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + file_internal_machine_api_pb_cluster_proto_msgTypes[8].Exporter = func(v any, i int) any { + switch v := v.(*CreateDomainRecordsResponse); i { +======= + file_internal_machine_api_pb_cluster_proto_msgTypes[8].Exporter = func(v any, i int) any { + switch v := v.(*ReserveDomainRequest); i { +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } +<<<<<<< HEAD:api/pb/cluster.pb.go + file_api_pb_cluster_proto_msgTypes[9].Exporter = func(v any, i int) any { +||||||| parent of bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go + file_internal_machine_api_pb_cluster_proto_msgTypes[9].Exporter = func(v any, i int) any { +======= + file_internal_machine_api_pb_cluster_proto_msgTypes[9].Exporter = func(v any, i int) any { + switch v := v.(*SetDomainRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_internal_machine_api_pb_cluster_proto_msgTypes[10].Exporter = func(v any, i int) any { + switch v := v.(*CreateDomainRecordsRequest); i { case 0: return &v.state case 1: @@ -902,7 +1525,7 @@ func file_api_pb_cluster_proto_init() { return nil } } - file_api_pb_cluster_proto_msgTypes[8].Exporter = func(v any, i int) any { + file_internal_machine_api_pb_cluster_proto_msgTypes[11].Exporter = func(v any, i int) any { switch v := v.(*CreateDomainRecordsResponse); i { case 0: return &v.state @@ -914,7 +1537,8 @@ func file_api_pb_cluster_proto_init() { return nil } } - file_api_pb_cluster_proto_msgTypes[9].Exporter = func(v any, i int) any { + file_internal_machine_api_pb_cluster_proto_msgTypes[12].Exporter = func(v any, i int) any { +>>>>>>> bbbdfd4 (feat: add uc dns set):internal/machine/api/pb/cluster.pb.go switch v := v.(*DNSRecord); i { case 0: return &v.state @@ -927,13 +1551,14 @@ func file_api_pb_cluster_proto_init() { } } } + file_internal_machine_api_pb_cluster_proto_msgTypes[4].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_api_pb_cluster_proto_rawDesc, NumEnums: 2, - NumMessages: 10, + NumMessages: 13, NumExtensions: 0, NumServices: 1, }, diff --git a/api/pb/cluster.proto b/api/pb/cluster.proto index cb9ef95d..c9269b0f 100644 --- a/api/pb/cluster.proto +++ b/api/pb/cluster.proto @@ -14,6 +14,7 @@ service Cluster { rpc RemoveMachine(RemoveMachineRequest) returns (google.protobuf.Empty); rpc ReserveDomain(ReserveDomainRequest) returns (Domain); + rpc SetDomain(SetDomainRequest) returns (Domain); rpc GetDomain(google.protobuf.Empty) returns (Domain); rpc ReleaseDomain(google.protobuf.Empty) returns (Domain); rpc CreateDomainRecords(CreateDomainRecordsRequest) returns (CreateDomainRecordsResponse); @@ -62,6 +63,10 @@ message ReserveDomainRequest { string endpoint = 1; } +message SetDomainRequest { + string name = 1; +} + message CreateDomainRecordsRequest { repeated DNSRecord records = 1; } diff --git a/api/pb/cluster_grpc.pb.go b/api/pb/cluster_grpc.pb.go index 8979a127..5ef40ded 100644 --- a/api/pb/cluster_grpc.pb.go +++ b/api/pb/cluster_grpc.pb.go @@ -24,6 +24,7 @@ const ( Cluster_ListMachines_FullMethodName = "/api.Cluster/ListMachines" Cluster_RemoveMachine_FullMethodName = "/api.Cluster/RemoveMachine" Cluster_ReserveDomain_FullMethodName = "/api.Cluster/ReserveDomain" + Cluster_SetDomain_FullMethodName = "/api.Cluster/SetDomain" Cluster_GetDomain_FullMethodName = "/api.Cluster/GetDomain" Cluster_ReleaseDomain_FullMethodName = "/api.Cluster/ReleaseDomain" Cluster_CreateDomainRecords_FullMethodName = "/api.Cluster/CreateDomainRecords" @@ -37,6 +38,7 @@ type ClusterClient interface { ListMachines(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ListMachinesResponse, error) RemoveMachine(ctx context.Context, in *RemoveMachineRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) ReserveDomain(ctx context.Context, in *ReserveDomainRequest, opts ...grpc.CallOption) (*Domain, error) + SetDomain(ctx context.Context, in *SetDomainRequest, opts ...grpc.CallOption) (*Domain, error) GetDomain(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Domain, error) ReleaseDomain(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Domain, error) CreateDomainRecords(ctx context.Context, in *CreateDomainRecordsRequest, opts ...grpc.CallOption) (*CreateDomainRecordsResponse, error) @@ -90,6 +92,16 @@ func (c *clusterClient) ReserveDomain(ctx context.Context, in *ReserveDomainRequ return out, nil } +func (c *clusterClient) SetDomain(ctx context.Context, in *SetDomainRequest, opts ...grpc.CallOption) (*Domain, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Domain) + err := c.cc.Invoke(ctx, Cluster_SetDomain_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *clusterClient) GetDomain(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Domain, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(Domain) @@ -128,6 +140,7 @@ type ClusterServer interface { ListMachines(context.Context, *emptypb.Empty) (*ListMachinesResponse, error) RemoveMachine(context.Context, *RemoveMachineRequest) (*emptypb.Empty, error) ReserveDomain(context.Context, *ReserveDomainRequest) (*Domain, error) + SetDomain(context.Context, *SetDomainRequest) (*Domain, error) GetDomain(context.Context, *emptypb.Empty) (*Domain, error) ReleaseDomain(context.Context, *emptypb.Empty) (*Domain, error) CreateDomainRecords(context.Context, *CreateDomainRecordsRequest) (*CreateDomainRecordsResponse, error) @@ -153,6 +166,9 @@ func (UnimplementedClusterServer) RemoveMachine(context.Context, *RemoveMachineR func (UnimplementedClusterServer) ReserveDomain(context.Context, *ReserveDomainRequest) (*Domain, error) { return nil, status.Errorf(codes.Unimplemented, "method ReserveDomain not implemented") } +func (UnimplementedClusterServer) SetDomain(context.Context, *SetDomainRequest) (*Domain, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetDomain not implemented") +} func (UnimplementedClusterServer) GetDomain(context.Context, *emptypb.Empty) (*Domain, error) { return nil, status.Errorf(codes.Unimplemented, "method GetDomain not implemented") } @@ -255,6 +271,24 @@ func _Cluster_ReserveDomain_Handler(srv interface{}, ctx context.Context, dec fu return interceptor(ctx, in, info, handler) } +func _Cluster_SetDomain_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetDomainRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClusterServer).SetDomain(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cluster_SetDomain_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClusterServer).SetDomain(ctx, req.(*SetDomainRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Cluster_GetDomain_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(emptypb.Empty) if err := dec(in); err != nil { @@ -332,6 +366,10 @@ var Cluster_ServiceDesc = grpc.ServiceDesc{ MethodName: "ReserveDomain", Handler: _Cluster_ReserveDomain_Handler, }, + { + MethodName: "SetDomain", + Handler: _Cluster_SetDomain_Handler, + }, { MethodName: "GetDomain", Handler: _Cluster_GetDomain_Handler, diff --git a/cmd/uc/dns/root.go b/cmd/uc/dns/root.go index 187afafb..ab9c07e3 100644 --- a/cmd/uc/dns/root.go +++ b/cmd/uc/dns/root.go @@ -17,6 +17,7 @@ func NewRootCommand() *cobra.Command { NewReleaseCommand(), NewReserveCommand(), NewShowCommand(), + NewSetCommand(), ) return cmd } diff --git a/cmd/uc/dns/set.go b/cmd/uc/dns/set.go new file mode 100644 index 00000000..c86005c8 --- /dev/null +++ b/cmd/uc/dns/set.go @@ -0,0 +1,64 @@ +package dns + +import ( + "context" + "errors" + "fmt" + + "github.com/psviderski/uncloud/cmd/uc/caddy" + "github.com/psviderski/uncloud/internal/cli" + "github.com/psviderski/uncloud/internal/machine/api/pb" + "github.com/psviderski/uncloud/pkg/api" + "github.com/psviderski/uncloud/pkg/client" + "github.com/spf13/cobra" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +func NewSetCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "set DOMAIN_NAME", + Args: cobra.ExactArgs(1), + Short: "Set a cluster domain directly in the cluster.", + Long: "Set a cluster domain directly in the cluster, bypassing Uncloud DNS. " + + "This assumes the DNS is externally set up.", + RunE: func(cmd *cobra.Command, args []string) error { + uncli := cmd.Context().Value("cli").(*cli.CLI) + return set(cmd.Context(), uncli, args[0]) + }, + } + + return cmd +} + +func set(ctx context.Context, uncli *cli.CLI, name string) error { + clusterClient, err := uncli.ConnectCluster(ctx) + if err != nil { + return fmt.Errorf("connect to cluster: %w", err) + } + defer clusterClient.Close() + + // need 2 dots normally, and most be domain name. + + domain, err := clusterClient.SetDomain(ctx, &pb.SetDomainRequest{Name: name}) + if err != nil { + if status.Convert(err).Code() == codes.AlreadyExists { + return errors.New("domain already reserved") + } + return err + } + + fmt.Printf("Set cluster domain: %s\n", domain.Name) + + // Update cluster domain records in Uncloud DNS to point to machines running caddy service if it has been deployed. + if _, err = clusterClient.InspectService(ctx, client.CaddyServiceName); err != nil { + if errors.Is(err, api.ErrNotFound) { + fmt.Println("Deploy the Caddy reverse proxy service ('uc caddy deploy') to enable internet access " + + "to your services via the reserved or your custom domain.") + return nil + } + return fmt.Errorf("inspect caddy service: %w", err) + } + + return caddy.UpdateDomainRecords(ctx, clusterClient, uncli.ProgressOut()) +} diff --git a/internal/machine/cluster/dns.go b/internal/machine/cluster/dns.go index c414ec84..74264009 100644 --- a/internal/machine/cluster/dns.go +++ b/internal/machine/cluster/dns.go @@ -112,6 +112,35 @@ func (c *Cluster) ReleaseDomain(ctx context.Context, _ *emptypb.Empty) (*pb.Doma return &pb.Domain{Name: domain.Name}, nil } +func (c *Cluster) SetDomain(ctx context.Context, req *pb.SetDomainRequest) (*pb.Domain, error) { + if err := c.checkReady(); err != nil { + return nil, err + } + + if _, err := c.storedDomain(ctx); err == nil { + return nil, status.Errorf(codes.AlreadyExists, "domain already reserved") + } else { + if s := status.Convert(err); s.Code() != codes.NotFound { + return nil, err + } + } + + domain := uncloudDNSDomain{ + Endpoint: "", + Name: req.Name, + Token: "", + } + domainJSON, err := json.Marshal(domain) + if err != nil { + return nil, status.Errorf(codes.Internal, "marshal set domain for store: %v", err) + } + if err = c.store.Put(ctx, uncloudDNSKey, domainJSON); err != nil { + return nil, status.Errorf(codes.Internal, "store set domain: %v", err) + } + + return &pb.Domain{Name: req.Name}, nil +} + func (c *Cluster) CreateDomainRecords( ctx context.Context, req *pb.CreateDomainRecordsRequest, ) (*pb.CreateDomainRecordsResponse, error) {