Info modal + proto
Deploy / deploy (push) Successful in 9s

This commit is contained in:
2026-08-31 16:37:43 +05:00
parent 202ab22530
commit 315ced56bb
7 changed files with 335 additions and 56 deletions
+136 -29
View File
@@ -869,6 +869,102 @@ func (x *ServiceActionResponse) GetOutput() string {
return ""
}
type ServiceInfoRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
Kind ServiceKind `protobuf:"varint,2,opt,name=kind,proto3,enum=homelab.v1.ServiceKind" json:"kind,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ServiceInfoRequest) Reset() {
*x = ServiceInfoRequest{}
mi := &file_homelab_v1_homelab_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ServiceInfoRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ServiceInfoRequest) ProtoMessage() {}
func (x *ServiceInfoRequest) ProtoReflect() protoreflect.Message {
mi := &file_homelab_v1_homelab_proto_msgTypes[14]
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 ServiceInfoRequest.ProtoReflect.Descriptor instead.
func (*ServiceInfoRequest) Descriptor() ([]byte, []int) {
return file_homelab_v1_homelab_proto_rawDescGZIP(), []int{14}
}
func (x *ServiceInfoRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *ServiceInfoRequest) GetKind() ServiceKind {
if x != nil {
return x.Kind
}
return ServiceKind_SYSTEMD
}
type ServiceInfoResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
Output string `protobuf:"bytes,1,opt,name=output,proto3" json:"output,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ServiceInfoResponse) Reset() {
*x = ServiceInfoResponse{}
mi := &file_homelab_v1_homelab_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ServiceInfoResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ServiceInfoResponse) ProtoMessage() {}
func (x *ServiceInfoResponse) ProtoReflect() protoreflect.Message {
mi := &file_homelab_v1_homelab_proto_msgTypes[15]
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 ServiceInfoResponse.ProtoReflect.Descriptor instead.
func (*ServiceInfoResponse) Descriptor() ([]byte, []int) {
return file_homelab_v1_homelab_proto_rawDescGZIP(), []int{15}
}
func (x *ServiceInfoResponse) GetOutput() string {
if x != nil {
return x.Output
}
return ""
}
type RunScriptRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@@ -879,7 +975,7 @@ type RunScriptRequest struct {
func (x *RunScriptRequest) Reset() {
*x = RunScriptRequest{}
mi := &file_homelab_v1_homelab_proto_msgTypes[14]
mi := &file_homelab_v1_homelab_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -891,7 +987,7 @@ func (x *RunScriptRequest) String() string {
func (*RunScriptRequest) ProtoMessage() {}
func (x *RunScriptRequest) ProtoReflect() protoreflect.Message {
mi := &file_homelab_v1_homelab_proto_msgTypes[14]
mi := &file_homelab_v1_homelab_proto_msgTypes[16]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -904,7 +1000,7 @@ func (x *RunScriptRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use RunScriptRequest.ProtoReflect.Descriptor instead.
func (*RunScriptRequest) Descriptor() ([]byte, []int) {
return file_homelab_v1_homelab_proto_rawDescGZIP(), []int{14}
return file_homelab_v1_homelab_proto_rawDescGZIP(), []int{16}
}
func (x *RunScriptRequest) GetName() string {
@@ -930,7 +1026,7 @@ type RunScriptResponse struct {
func (x *RunScriptResponse) Reset() {
*x = RunScriptResponse{}
mi := &file_homelab_v1_homelab_proto_msgTypes[15]
mi := &file_homelab_v1_homelab_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -942,7 +1038,7 @@ func (x *RunScriptResponse) String() string {
func (*RunScriptResponse) ProtoMessage() {}
func (x *RunScriptResponse) ProtoReflect() protoreflect.Message {
mi := &file_homelab_v1_homelab_proto_msgTypes[15]
mi := &file_homelab_v1_homelab_proto_msgTypes[17]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -955,7 +1051,7 @@ func (x *RunScriptResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use RunScriptResponse.ProtoReflect.Descriptor instead.
func (*RunScriptResponse) Descriptor() ([]byte, []int) {
return file_homelab_v1_homelab_proto_rawDescGZIP(), []int{15}
return file_homelab_v1_homelab_proto_rawDescGZIP(), []int{17}
}
func (x *RunScriptResponse) GetOutput() string {
@@ -1018,6 +1114,11 @@ const file_homelab_v1_homelab_proto_rawDesc = "" +
"\x04kind\x18\x02 \x01(\x0e2\x17.homelab.v1.ServiceKindR\x04kind\x12%\n" +
"\x02op\x18\x03 \x01(\x0e2\x15.homelab.v1.ServiceOpR\x02op\"/\n" +
"\x15ServiceActionResponse\x12\x16\n" +
"\x06output\x18\x01 \x01(\tR\x06output\"U\n" +
"\x12ServiceInfoRequest\x12\x12\n" +
"\x04name\x18\x01 \x01(\tR\x04name\x12+\n" +
"\x04kind\x18\x02 \x01(\x0e2\x17.homelab.v1.ServiceKindR\x04kind\"-\n" +
"\x13ServiceInfoResponse\x12\x16\n" +
"\x06output\x18\x01 \x01(\tR\x06output\":\n" +
"\x10RunScriptRequest\x12\x12\n" +
"\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n" +
@@ -1031,13 +1132,14 @@ const file_homelab_v1_homelab_proto_rawDesc = "" +
"\tServiceOp\x12\t\n" +
"\x05START\x10\x00\x12\b\n" +
"\x04STOP\x10\x01\x12\v\n" +
"\aRESTART\x10\x022\xcc\x03\n" +
"\aRESTART\x10\x022\x9c\x04\n" +
"\x0eHomelabService\x12N\n" +
"\vListContent\x12\x1e.homelab.v1.ListContentRequest\x1a\x1f.homelab.v1.ListContentResponse\x12E\n" +
"\bListDocs\x12\x1b.homelab.v1.ListDocsRequest\x1a\x1c.homelab.v1.ListDocsResponse\x12?\n" +
"\x06GetDoc\x12\x19.homelab.v1.GetDocRequest\x1a\x1a.homelab.v1.GetDocResponse\x12B\n" +
"\aSaveDoc\x12\x1a.homelab.v1.SaveDocRequest\x1a\x1b.homelab.v1.SaveDocResponse\x12T\n" +
"\rServiceAction\x12 .homelab.v1.ServiceActionRequest\x1a!.homelab.v1.ServiceActionResponse\x12H\n" +
"\rServiceAction\x12 .homelab.v1.ServiceActionRequest\x1a!.homelab.v1.ServiceActionResponse\x12N\n" +
"\vServiceInfo\x12\x1e.homelab.v1.ServiceInfoRequest\x1a\x1f.homelab.v1.ServiceInfoResponse\x12H\n" +
"\tRunScript\x12\x1c.homelab.v1.RunScriptRequest\x1a\x1d.homelab.v1.RunScriptResponseB*Z(pwa-homelab-mon/gen/homelab/v1;homelabv1b\x06proto3"
var (
@@ -1053,7 +1155,7 @@ func file_homelab_v1_homelab_proto_rawDescGZIP() []byte {
}
var file_homelab_v1_homelab_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_homelab_v1_homelab_proto_msgTypes = make([]protoimpl.MessageInfo, 16)
var file_homelab_v1_homelab_proto_msgTypes = make([]protoimpl.MessageInfo, 18)
var file_homelab_v1_homelab_proto_goTypes = []any{
(ServiceKind)(0), // 0: homelab.v1.ServiceKind
(ServiceOp)(0), // 1: homelab.v1.ServiceOp
@@ -1071,8 +1173,10 @@ var file_homelab_v1_homelab_proto_goTypes = []any{
(*Service)(nil), // 13: homelab.v1.Service
(*ServiceActionRequest)(nil), // 14: homelab.v1.ServiceActionRequest
(*ServiceActionResponse)(nil), // 15: homelab.v1.ServiceActionResponse
(*RunScriptRequest)(nil), // 16: homelab.v1.RunScriptRequest
(*RunScriptResponse)(nil), // 17: homelab.v1.RunScriptResponse
(*ServiceInfoRequest)(nil), // 16: homelab.v1.ServiceInfoRequest
(*ServiceInfoResponse)(nil), // 17: homelab.v1.ServiceInfoResponse
(*RunScriptRequest)(nil), // 18: homelab.v1.RunScriptRequest
(*RunScriptResponse)(nil), // 19: homelab.v1.RunScriptResponse
}
var file_homelab_v1_homelab_proto_depIdxs = []int32{
3, // 0: homelab.v1.ListContentResponse.links:type_name -> homelab.v1.Link
@@ -1083,23 +1187,26 @@ var file_homelab_v1_homelab_proto_depIdxs = []int32{
0, // 5: homelab.v1.Service.kind:type_name -> homelab.v1.ServiceKind
0, // 6: homelab.v1.ServiceActionRequest.kind:type_name -> homelab.v1.ServiceKind
1, // 7: homelab.v1.ServiceActionRequest.op:type_name -> homelab.v1.ServiceOp
4, // 8: homelab.v1.HomelabService.ListContent:input_type -> homelab.v1.ListContentRequest
7, // 9: homelab.v1.HomelabService.ListDocs:input_type -> homelab.v1.ListDocsRequest
9, // 10: homelab.v1.HomelabService.GetDoc:input_type -> homelab.v1.GetDocRequest
11, // 11: homelab.v1.HomelabService.SaveDoc:input_type -> homelab.v1.SaveDocRequest
14, // 12: homelab.v1.HomelabService.ServiceAction:input_type -> homelab.v1.ServiceActionRequest
16, // 13: homelab.v1.HomelabService.RunScript:input_type -> homelab.v1.RunScriptRequest
5, // 14: homelab.v1.HomelabService.ListContent:output_type -> homelab.v1.ListContentResponse
8, // 15: homelab.v1.HomelabService.ListDocs:output_type -> homelab.v1.ListDocsResponse
10, // 16: homelab.v1.HomelabService.GetDoc:output_type -> homelab.v1.GetDocResponse
12, // 17: homelab.v1.HomelabService.SaveDoc:output_type -> homelab.v1.SaveDocResponse
15, // 18: homelab.v1.HomelabService.ServiceAction:output_type -> homelab.v1.ServiceActionResponse
17, // 19: homelab.v1.HomelabService.RunScript:output_type -> homelab.v1.RunScriptResponse
14, // [14:20] is the sub-list for method output_type
8, // [8:14] is the sub-list for method input_type
8, // [8:8] is the sub-list for extension type_name
8, // [8:8] is the sub-list for extension extendee
0, // [0:8] is the sub-list for field type_name
0, // 8: homelab.v1.ServiceInfoRequest.kind:type_name -> homelab.v1.ServiceKind
4, // 9: homelab.v1.HomelabService.ListContent:input_type -> homelab.v1.ListContentRequest
7, // 10: homelab.v1.HomelabService.ListDocs:input_type -> homelab.v1.ListDocsRequest
9, // 11: homelab.v1.HomelabService.GetDoc:input_type -> homelab.v1.GetDocRequest
11, // 12: homelab.v1.HomelabService.SaveDoc:input_type -> homelab.v1.SaveDocRequest
14, // 13: homelab.v1.HomelabService.ServiceAction:input_type -> homelab.v1.ServiceActionRequest
16, // 14: homelab.v1.HomelabService.ServiceInfo:input_type -> homelab.v1.ServiceInfoRequest
18, // 15: homelab.v1.HomelabService.RunScript:input_type -> homelab.v1.RunScriptRequest
5, // 16: homelab.v1.HomelabService.ListContent:output_type -> homelab.v1.ListContentResponse
8, // 17: homelab.v1.HomelabService.ListDocs:output_type -> homelab.v1.ListDocsResponse
10, // 18: homelab.v1.HomelabService.GetDoc:output_type -> homelab.v1.GetDocResponse
12, // 19: homelab.v1.HomelabService.SaveDoc:output_type -> homelab.v1.SaveDocResponse
15, // 20: homelab.v1.HomelabService.ServiceAction:output_type -> homelab.v1.ServiceActionResponse
17, // 21: homelab.v1.HomelabService.ServiceInfo:output_type -> homelab.v1.ServiceInfoResponse
19, // 22: homelab.v1.HomelabService.RunScript:output_type -> homelab.v1.RunScriptResponse
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
}
func init() { file_homelab_v1_homelab_proto_init() }
@@ -1113,7 +1220,7 @@ func file_homelab_v1_homelab_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_homelab_v1_homelab_proto_rawDesc), len(file_homelab_v1_homelab_proto_rawDesc)),
NumEnums: 2,
NumMessages: 16,
NumMessages: 18,
NumExtensions: 0,
NumServices: 1,
},
@@ -45,6 +45,9 @@ const (
// HomelabServiceServiceActionProcedure is the fully-qualified name of the HomelabService's
// ServiceAction RPC.
HomelabServiceServiceActionProcedure = "/homelab.v1.HomelabService/ServiceAction"
// HomelabServiceServiceInfoProcedure is the fully-qualified name of the HomelabService's
// ServiceInfo RPC.
HomelabServiceServiceInfoProcedure = "/homelab.v1.HomelabService/ServiceInfo"
// HomelabServiceRunScriptProcedure is the fully-qualified name of the HomelabService's RunScript
// RPC.
HomelabServiceRunScriptProcedure = "/homelab.v1.HomelabService/RunScript"
@@ -57,6 +60,7 @@ type HomelabServiceClient interface {
GetDoc(context.Context, *connect.Request[v1.GetDocRequest]) (*connect.Response[v1.GetDocResponse], error)
SaveDoc(context.Context, *connect.Request[v1.SaveDocRequest]) (*connect.Response[v1.SaveDocResponse], error)
ServiceAction(context.Context, *connect.Request[v1.ServiceActionRequest]) (*connect.Response[v1.ServiceActionResponse], error)
ServiceInfo(context.Context, *connect.Request[v1.ServiceInfoRequest]) (*connect.Response[v1.ServiceInfoResponse], error)
RunScript(context.Context, *connect.Request[v1.RunScriptRequest]) (*connect.Response[v1.RunScriptResponse], error)
}
@@ -101,6 +105,12 @@ func NewHomelabServiceClient(httpClient connect.HTTPClient, baseURL string, opts
connect.WithSchema(homelabServiceMethods.ByName("ServiceAction")),
connect.WithClientOptions(opts...),
),
serviceInfo: connect.NewClient[v1.ServiceInfoRequest, v1.ServiceInfoResponse](
httpClient,
baseURL+HomelabServiceServiceInfoProcedure,
connect.WithSchema(homelabServiceMethods.ByName("ServiceInfo")),
connect.WithClientOptions(opts...),
),
runScript: connect.NewClient[v1.RunScriptRequest, v1.RunScriptResponse](
httpClient,
baseURL+HomelabServiceRunScriptProcedure,
@@ -117,6 +127,7 @@ type homelabServiceClient struct {
getDoc *connect.Client[v1.GetDocRequest, v1.GetDocResponse]
saveDoc *connect.Client[v1.SaveDocRequest, v1.SaveDocResponse]
serviceAction *connect.Client[v1.ServiceActionRequest, v1.ServiceActionResponse]
serviceInfo *connect.Client[v1.ServiceInfoRequest, v1.ServiceInfoResponse]
runScript *connect.Client[v1.RunScriptRequest, v1.RunScriptResponse]
}
@@ -145,6 +156,11 @@ func (c *homelabServiceClient) ServiceAction(ctx context.Context, req *connect.R
return c.serviceAction.CallUnary(ctx, req)
}
// ServiceInfo calls homelab.v1.HomelabService.ServiceInfo.
func (c *homelabServiceClient) ServiceInfo(ctx context.Context, req *connect.Request[v1.ServiceInfoRequest]) (*connect.Response[v1.ServiceInfoResponse], error) {
return c.serviceInfo.CallUnary(ctx, req)
}
// RunScript calls homelab.v1.HomelabService.RunScript.
func (c *homelabServiceClient) RunScript(ctx context.Context, req *connect.Request[v1.RunScriptRequest]) (*connect.Response[v1.RunScriptResponse], error) {
return c.runScript.CallUnary(ctx, req)
@@ -157,6 +173,7 @@ type HomelabServiceHandler interface {
GetDoc(context.Context, *connect.Request[v1.GetDocRequest]) (*connect.Response[v1.GetDocResponse], error)
SaveDoc(context.Context, *connect.Request[v1.SaveDocRequest]) (*connect.Response[v1.SaveDocResponse], error)
ServiceAction(context.Context, *connect.Request[v1.ServiceActionRequest]) (*connect.Response[v1.ServiceActionResponse], error)
ServiceInfo(context.Context, *connect.Request[v1.ServiceInfoRequest]) (*connect.Response[v1.ServiceInfoResponse], error)
RunScript(context.Context, *connect.Request[v1.RunScriptRequest]) (*connect.Response[v1.RunScriptResponse], error)
}
@@ -197,6 +214,12 @@ func NewHomelabServiceHandler(svc HomelabServiceHandler, opts ...connect.Handler
connect.WithSchema(homelabServiceMethods.ByName("ServiceAction")),
connect.WithHandlerOptions(opts...),
)
homelabServiceServiceInfoHandler := connect.NewUnaryHandler(
HomelabServiceServiceInfoProcedure,
svc.ServiceInfo,
connect.WithSchema(homelabServiceMethods.ByName("ServiceInfo")),
connect.WithHandlerOptions(opts...),
)
homelabServiceRunScriptHandler := connect.NewUnaryHandler(
HomelabServiceRunScriptProcedure,
svc.RunScript,
@@ -215,6 +238,8 @@ func NewHomelabServiceHandler(svc HomelabServiceHandler, opts ...connect.Handler
homelabServiceSaveDocHandler.ServeHTTP(w, r)
case HomelabServiceServiceActionProcedure:
homelabServiceServiceActionHandler.ServeHTTP(w, r)
case HomelabServiceServiceInfoProcedure:
homelabServiceServiceInfoHandler.ServeHTTP(w, r)
case HomelabServiceRunScriptProcedure:
homelabServiceRunScriptHandler.ServeHTTP(w, r)
default:
@@ -246,6 +271,10 @@ func (UnimplementedHomelabServiceHandler) ServiceAction(context.Context, *connec
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("homelab.v1.HomelabService.ServiceAction is not implemented"))
}
func (UnimplementedHomelabServiceHandler) ServiceInfo(context.Context, *connect.Request[v1.ServiceInfoRequest]) (*connect.Response[v1.ServiceInfoResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("homelab.v1.HomelabService.ServiceInfo is not implemented"))
}
func (UnimplementedHomelabServiceHandler) RunScript(context.Context, *connect.Request[v1.RunScriptRequest]) (*connect.Response[v1.RunScriptResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("homelab.v1.HomelabService.RunScript is not implemented"))
}