mirror of
https://github.com/juanfont/headscale.git
synced 2025-08-14 13:51:01 +02:00
update health check implementation to allow for more checks to added over time
This commit is contained in:
parent
569459209a
commit
3f066c12bb
@ -1,8 +1,6 @@
|
|||||||
package cli
|
package cli
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
|
|
||||||
v1 "github.com/juanfont/headscale/gen/go/headscale/v1"
|
v1 "github.com/juanfont/headscale/gen/go/headscale/v1"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
@ -26,14 +24,6 @@ var healthCmd = &cobra.Command{
|
|||||||
ErrorOutput(err, "Error checking health", output)
|
ErrorOutput(err, "Error checking health", output)
|
||||||
}
|
}
|
||||||
|
|
||||||
if response.Status == v1.HealthStatus_Pass {
|
SuccessOutput(response, "", output)
|
||||||
SuccessOutput("Headscale server is healthy", "", output)
|
|
||||||
}
|
|
||||||
|
|
||||||
ErrorOutput(
|
|
||||||
fmt.Errorf("server health check failed: %s", response.Status),
|
|
||||||
"Headscale server is unhealthy",
|
|
||||||
output,
|
|
||||||
)
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -22,52 +22,6 @@ const (
|
|||||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||||
)
|
)
|
||||||
|
|
||||||
type HealthStatus int32
|
|
||||||
|
|
||||||
const (
|
|
||||||
HealthStatus_Fail HealthStatus = 0
|
|
||||||
HealthStatus_Pass HealthStatus = 1
|
|
||||||
)
|
|
||||||
|
|
||||||
// Enum value maps for HealthStatus.
|
|
||||||
var (
|
|
||||||
HealthStatus_name = map[int32]string{
|
|
||||||
0: "Fail",
|
|
||||||
1: "Pass",
|
|
||||||
}
|
|
||||||
HealthStatus_value = map[string]int32{
|
|
||||||
"Fail": 0,
|
|
||||||
"Pass": 1,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
func (x HealthStatus) Enum() *HealthStatus {
|
|
||||||
p := new(HealthStatus)
|
|
||||||
*p = x
|
|
||||||
return p
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x HealthStatus) String() string {
|
|
||||||
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (HealthStatus) Descriptor() protoreflect.EnumDescriptor {
|
|
||||||
return file_headscale_v1_headscale_proto_enumTypes[0].Descriptor()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (HealthStatus) Type() protoreflect.EnumType {
|
|
||||||
return &file_headscale_v1_headscale_proto_enumTypes[0]
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x HealthStatus) Number() protoreflect.EnumNumber {
|
|
||||||
return protoreflect.EnumNumber(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use HealthStatus.Descriptor instead.
|
|
||||||
func (HealthStatus) EnumDescriptor() ([]byte, []int) {
|
|
||||||
return file_headscale_v1_headscale_proto_rawDescGZIP(), []int{0}
|
|
||||||
}
|
|
||||||
|
|
||||||
type HealthRequest struct {
|
type HealthRequest struct {
|
||||||
state protoimpl.MessageState `protogen:"open.v1"`
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
@ -106,7 +60,7 @@ func (*HealthRequest) Descriptor() ([]byte, []int) {
|
|||||||
|
|
||||||
type HealthResponse struct {
|
type HealthResponse struct {
|
||||||
state protoimpl.MessageState `protogen:"open.v1"`
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
Status HealthStatus `protobuf:"varint,1,opt,name=status,proto3,enum=headscale.v1.HealthStatus" json:"status,omitempty"`
|
DbPing bool `protobuf:"varint,1,opt,name=db_ping,json=dbPing,proto3" json:"db_ping,omitempty"`
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
}
|
}
|
||||||
@ -141,11 +95,11 @@ func (*HealthResponse) Descriptor() ([]byte, []int) {
|
|||||||
return file_headscale_v1_headscale_proto_rawDescGZIP(), []int{1}
|
return file_headscale_v1_headscale_proto_rawDescGZIP(), []int{1}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *HealthResponse) GetStatus() HealthStatus {
|
func (x *HealthResponse) GetDbPing() bool {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.Status
|
return x.DbPing
|
||||||
}
|
}
|
||||||
return HealthStatus_Fail
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
var File_headscale_v1_headscale_proto protoreflect.FileDescriptor
|
var File_headscale_v1_headscale_proto protoreflect.FileDescriptor
|
||||||
@ -153,12 +107,9 @@ var File_headscale_v1_headscale_proto protoreflect.FileDescriptor
|
|||||||
const file_headscale_v1_headscale_proto_rawDesc = "" +
|
const file_headscale_v1_headscale_proto_rawDesc = "" +
|
||||||
"\n" +
|
"\n" +
|
||||||
"\x1cheadscale/v1/headscale.proto\x12\fheadscale.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17headscale/v1/user.proto\x1a\x1dheadscale/v1/preauthkey.proto\x1a\x17headscale/v1/node.proto\x1a\x19headscale/v1/apikey.proto\x1a\x19headscale/v1/policy.proto\"\x0f\n" +
|
"\x1cheadscale/v1/headscale.proto\x12\fheadscale.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17headscale/v1/user.proto\x1a\x1dheadscale/v1/preauthkey.proto\x1a\x17headscale/v1/node.proto\x1a\x19headscale/v1/apikey.proto\x1a\x19headscale/v1/policy.proto\"\x0f\n" +
|
||||||
"\rHealthRequest\"D\n" +
|
"\rHealthRequest\")\n" +
|
||||||
"\x0eHealthResponse\x122\n" +
|
"\x0eHealthResponse\x12\x17\n" +
|
||||||
"\x06status\x18\x01 \x01(\x0e2\x1a.headscale.v1.HealthStatusR\x06status*\"\n" +
|
"\adb_ping\x18\x01 \x01(\bR\x06dbPing2\x80\x17\n" +
|
||||||
"\fHealthStatus\x12\b\n" +
|
|
||||||
"\x04Fail\x10\x00\x12\b\n" +
|
|
||||||
"\x04Pass\x10\x012\x80\x17\n" +
|
|
||||||
"\x10HeadscaleService\x12h\n" +
|
"\x10HeadscaleService\x12h\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
"CreateUser\x12\x1f.headscale.v1.CreateUserRequest\x1a .headscale.v1.CreateUserResponse\"\x17\x82\xd3\xe4\x93\x02\x11:\x01*\"\f/api/v1/user\x12\x80\x01\n" +
|
"CreateUser\x12\x1f.headscale.v1.CreateUserRequest\x1a .headscale.v1.CreateUserResponse\"\x17\x82\xd3\xe4\x93\x02\x11:\x01*\"\f/api/v1/user\x12\x80\x01\n" +
|
||||||
@ -204,118 +155,115 @@ func file_headscale_v1_headscale_proto_rawDescGZIP() []byte {
|
|||||||
return file_headscale_v1_headscale_proto_rawDescData
|
return file_headscale_v1_headscale_proto_rawDescData
|
||||||
}
|
}
|
||||||
|
|
||||||
var file_headscale_v1_headscale_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
|
|
||||||
var file_headscale_v1_headscale_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
|
var file_headscale_v1_headscale_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
|
||||||
var file_headscale_v1_headscale_proto_goTypes = []any{
|
var file_headscale_v1_headscale_proto_goTypes = []any{
|
||||||
(HealthStatus)(0), // 0: headscale.v1.HealthStatus
|
(*HealthRequest)(nil), // 0: headscale.v1.HealthRequest
|
||||||
(*HealthRequest)(nil), // 1: headscale.v1.HealthRequest
|
(*HealthResponse)(nil), // 1: headscale.v1.HealthResponse
|
||||||
(*HealthResponse)(nil), // 2: headscale.v1.HealthResponse
|
(*CreateUserRequest)(nil), // 2: headscale.v1.CreateUserRequest
|
||||||
(*CreateUserRequest)(nil), // 3: headscale.v1.CreateUserRequest
|
(*RenameUserRequest)(nil), // 3: headscale.v1.RenameUserRequest
|
||||||
(*RenameUserRequest)(nil), // 4: headscale.v1.RenameUserRequest
|
(*DeleteUserRequest)(nil), // 4: headscale.v1.DeleteUserRequest
|
||||||
(*DeleteUserRequest)(nil), // 5: headscale.v1.DeleteUserRequest
|
(*ListUsersRequest)(nil), // 5: headscale.v1.ListUsersRequest
|
||||||
(*ListUsersRequest)(nil), // 6: headscale.v1.ListUsersRequest
|
(*CreatePreAuthKeyRequest)(nil), // 6: headscale.v1.CreatePreAuthKeyRequest
|
||||||
(*CreatePreAuthKeyRequest)(nil), // 7: headscale.v1.CreatePreAuthKeyRequest
|
(*ExpirePreAuthKeyRequest)(nil), // 7: headscale.v1.ExpirePreAuthKeyRequest
|
||||||
(*ExpirePreAuthKeyRequest)(nil), // 8: headscale.v1.ExpirePreAuthKeyRequest
|
(*ListPreAuthKeysRequest)(nil), // 8: headscale.v1.ListPreAuthKeysRequest
|
||||||
(*ListPreAuthKeysRequest)(nil), // 9: headscale.v1.ListPreAuthKeysRequest
|
(*DebugCreateNodeRequest)(nil), // 9: headscale.v1.DebugCreateNodeRequest
|
||||||
(*DebugCreateNodeRequest)(nil), // 10: headscale.v1.DebugCreateNodeRequest
|
(*GetNodeRequest)(nil), // 10: headscale.v1.GetNodeRequest
|
||||||
(*GetNodeRequest)(nil), // 11: headscale.v1.GetNodeRequest
|
(*SetTagsRequest)(nil), // 11: headscale.v1.SetTagsRequest
|
||||||
(*SetTagsRequest)(nil), // 12: headscale.v1.SetTagsRequest
|
(*SetApprovedRoutesRequest)(nil), // 12: headscale.v1.SetApprovedRoutesRequest
|
||||||
(*SetApprovedRoutesRequest)(nil), // 13: headscale.v1.SetApprovedRoutesRequest
|
(*RegisterNodeRequest)(nil), // 13: headscale.v1.RegisterNodeRequest
|
||||||
(*RegisterNodeRequest)(nil), // 14: headscale.v1.RegisterNodeRequest
|
(*DeleteNodeRequest)(nil), // 14: headscale.v1.DeleteNodeRequest
|
||||||
(*DeleteNodeRequest)(nil), // 15: headscale.v1.DeleteNodeRequest
|
(*ExpireNodeRequest)(nil), // 15: headscale.v1.ExpireNodeRequest
|
||||||
(*ExpireNodeRequest)(nil), // 16: headscale.v1.ExpireNodeRequest
|
(*RenameNodeRequest)(nil), // 16: headscale.v1.RenameNodeRequest
|
||||||
(*RenameNodeRequest)(nil), // 17: headscale.v1.RenameNodeRequest
|
(*ListNodesRequest)(nil), // 17: headscale.v1.ListNodesRequest
|
||||||
(*ListNodesRequest)(nil), // 18: headscale.v1.ListNodesRequest
|
(*MoveNodeRequest)(nil), // 18: headscale.v1.MoveNodeRequest
|
||||||
(*MoveNodeRequest)(nil), // 19: headscale.v1.MoveNodeRequest
|
(*BackfillNodeIPsRequest)(nil), // 19: headscale.v1.BackfillNodeIPsRequest
|
||||||
(*BackfillNodeIPsRequest)(nil), // 20: headscale.v1.BackfillNodeIPsRequest
|
(*CreateApiKeyRequest)(nil), // 20: headscale.v1.CreateApiKeyRequest
|
||||||
(*CreateApiKeyRequest)(nil), // 21: headscale.v1.CreateApiKeyRequest
|
(*ExpireApiKeyRequest)(nil), // 21: headscale.v1.ExpireApiKeyRequest
|
||||||
(*ExpireApiKeyRequest)(nil), // 22: headscale.v1.ExpireApiKeyRequest
|
(*ListApiKeysRequest)(nil), // 22: headscale.v1.ListApiKeysRequest
|
||||||
(*ListApiKeysRequest)(nil), // 23: headscale.v1.ListApiKeysRequest
|
(*DeleteApiKeyRequest)(nil), // 23: headscale.v1.DeleteApiKeyRequest
|
||||||
(*DeleteApiKeyRequest)(nil), // 24: headscale.v1.DeleteApiKeyRequest
|
(*GetPolicyRequest)(nil), // 24: headscale.v1.GetPolicyRequest
|
||||||
(*GetPolicyRequest)(nil), // 25: headscale.v1.GetPolicyRequest
|
(*SetPolicyRequest)(nil), // 25: headscale.v1.SetPolicyRequest
|
||||||
(*SetPolicyRequest)(nil), // 26: headscale.v1.SetPolicyRequest
|
(*CreateUserResponse)(nil), // 26: headscale.v1.CreateUserResponse
|
||||||
(*CreateUserResponse)(nil), // 27: headscale.v1.CreateUserResponse
|
(*RenameUserResponse)(nil), // 27: headscale.v1.RenameUserResponse
|
||||||
(*RenameUserResponse)(nil), // 28: headscale.v1.RenameUserResponse
|
(*DeleteUserResponse)(nil), // 28: headscale.v1.DeleteUserResponse
|
||||||
(*DeleteUserResponse)(nil), // 29: headscale.v1.DeleteUserResponse
|
(*ListUsersResponse)(nil), // 29: headscale.v1.ListUsersResponse
|
||||||
(*ListUsersResponse)(nil), // 30: headscale.v1.ListUsersResponse
|
(*CreatePreAuthKeyResponse)(nil), // 30: headscale.v1.CreatePreAuthKeyResponse
|
||||||
(*CreatePreAuthKeyResponse)(nil), // 31: headscale.v1.CreatePreAuthKeyResponse
|
(*ExpirePreAuthKeyResponse)(nil), // 31: headscale.v1.ExpirePreAuthKeyResponse
|
||||||
(*ExpirePreAuthKeyResponse)(nil), // 32: headscale.v1.ExpirePreAuthKeyResponse
|
(*ListPreAuthKeysResponse)(nil), // 32: headscale.v1.ListPreAuthKeysResponse
|
||||||
(*ListPreAuthKeysResponse)(nil), // 33: headscale.v1.ListPreAuthKeysResponse
|
(*DebugCreateNodeResponse)(nil), // 33: headscale.v1.DebugCreateNodeResponse
|
||||||
(*DebugCreateNodeResponse)(nil), // 34: headscale.v1.DebugCreateNodeResponse
|
(*GetNodeResponse)(nil), // 34: headscale.v1.GetNodeResponse
|
||||||
(*GetNodeResponse)(nil), // 35: headscale.v1.GetNodeResponse
|
(*SetTagsResponse)(nil), // 35: headscale.v1.SetTagsResponse
|
||||||
(*SetTagsResponse)(nil), // 36: headscale.v1.SetTagsResponse
|
(*SetApprovedRoutesResponse)(nil), // 36: headscale.v1.SetApprovedRoutesResponse
|
||||||
(*SetApprovedRoutesResponse)(nil), // 37: headscale.v1.SetApprovedRoutesResponse
|
(*RegisterNodeResponse)(nil), // 37: headscale.v1.RegisterNodeResponse
|
||||||
(*RegisterNodeResponse)(nil), // 38: headscale.v1.RegisterNodeResponse
|
(*DeleteNodeResponse)(nil), // 38: headscale.v1.DeleteNodeResponse
|
||||||
(*DeleteNodeResponse)(nil), // 39: headscale.v1.DeleteNodeResponse
|
(*ExpireNodeResponse)(nil), // 39: headscale.v1.ExpireNodeResponse
|
||||||
(*ExpireNodeResponse)(nil), // 40: headscale.v1.ExpireNodeResponse
|
(*RenameNodeResponse)(nil), // 40: headscale.v1.RenameNodeResponse
|
||||||
(*RenameNodeResponse)(nil), // 41: headscale.v1.RenameNodeResponse
|
(*ListNodesResponse)(nil), // 41: headscale.v1.ListNodesResponse
|
||||||
(*ListNodesResponse)(nil), // 42: headscale.v1.ListNodesResponse
|
(*MoveNodeResponse)(nil), // 42: headscale.v1.MoveNodeResponse
|
||||||
(*MoveNodeResponse)(nil), // 43: headscale.v1.MoveNodeResponse
|
(*BackfillNodeIPsResponse)(nil), // 43: headscale.v1.BackfillNodeIPsResponse
|
||||||
(*BackfillNodeIPsResponse)(nil), // 44: headscale.v1.BackfillNodeIPsResponse
|
(*CreateApiKeyResponse)(nil), // 44: headscale.v1.CreateApiKeyResponse
|
||||||
(*CreateApiKeyResponse)(nil), // 45: headscale.v1.CreateApiKeyResponse
|
(*ExpireApiKeyResponse)(nil), // 45: headscale.v1.ExpireApiKeyResponse
|
||||||
(*ExpireApiKeyResponse)(nil), // 46: headscale.v1.ExpireApiKeyResponse
|
(*ListApiKeysResponse)(nil), // 46: headscale.v1.ListApiKeysResponse
|
||||||
(*ListApiKeysResponse)(nil), // 47: headscale.v1.ListApiKeysResponse
|
(*DeleteApiKeyResponse)(nil), // 47: headscale.v1.DeleteApiKeyResponse
|
||||||
(*DeleteApiKeyResponse)(nil), // 48: headscale.v1.DeleteApiKeyResponse
|
(*GetPolicyResponse)(nil), // 48: headscale.v1.GetPolicyResponse
|
||||||
(*GetPolicyResponse)(nil), // 49: headscale.v1.GetPolicyResponse
|
(*SetPolicyResponse)(nil), // 49: headscale.v1.SetPolicyResponse
|
||||||
(*SetPolicyResponse)(nil), // 50: headscale.v1.SetPolicyResponse
|
|
||||||
}
|
}
|
||||||
var file_headscale_v1_headscale_proto_depIdxs = []int32{
|
var file_headscale_v1_headscale_proto_depIdxs = []int32{
|
||||||
0, // 0: headscale.v1.HealthResponse.status:type_name -> headscale.v1.HealthStatus
|
2, // 0: headscale.v1.HeadscaleService.CreateUser:input_type -> headscale.v1.CreateUserRequest
|
||||||
3, // 1: headscale.v1.HeadscaleService.CreateUser:input_type -> headscale.v1.CreateUserRequest
|
3, // 1: headscale.v1.HeadscaleService.RenameUser:input_type -> headscale.v1.RenameUserRequest
|
||||||
4, // 2: headscale.v1.HeadscaleService.RenameUser:input_type -> headscale.v1.RenameUserRequest
|
4, // 2: headscale.v1.HeadscaleService.DeleteUser:input_type -> headscale.v1.DeleteUserRequest
|
||||||
5, // 3: headscale.v1.HeadscaleService.DeleteUser:input_type -> headscale.v1.DeleteUserRequest
|
5, // 3: headscale.v1.HeadscaleService.ListUsers:input_type -> headscale.v1.ListUsersRequest
|
||||||
6, // 4: headscale.v1.HeadscaleService.ListUsers:input_type -> headscale.v1.ListUsersRequest
|
6, // 4: headscale.v1.HeadscaleService.CreatePreAuthKey:input_type -> headscale.v1.CreatePreAuthKeyRequest
|
||||||
7, // 5: headscale.v1.HeadscaleService.CreatePreAuthKey:input_type -> headscale.v1.CreatePreAuthKeyRequest
|
7, // 5: headscale.v1.HeadscaleService.ExpirePreAuthKey:input_type -> headscale.v1.ExpirePreAuthKeyRequest
|
||||||
8, // 6: headscale.v1.HeadscaleService.ExpirePreAuthKey:input_type -> headscale.v1.ExpirePreAuthKeyRequest
|
8, // 6: headscale.v1.HeadscaleService.ListPreAuthKeys:input_type -> headscale.v1.ListPreAuthKeysRequest
|
||||||
9, // 7: headscale.v1.HeadscaleService.ListPreAuthKeys:input_type -> headscale.v1.ListPreAuthKeysRequest
|
9, // 7: headscale.v1.HeadscaleService.DebugCreateNode:input_type -> headscale.v1.DebugCreateNodeRequest
|
||||||
10, // 8: headscale.v1.HeadscaleService.DebugCreateNode:input_type -> headscale.v1.DebugCreateNodeRequest
|
10, // 8: headscale.v1.HeadscaleService.GetNode:input_type -> headscale.v1.GetNodeRequest
|
||||||
11, // 9: headscale.v1.HeadscaleService.GetNode:input_type -> headscale.v1.GetNodeRequest
|
11, // 9: headscale.v1.HeadscaleService.SetTags:input_type -> headscale.v1.SetTagsRequest
|
||||||
12, // 10: headscale.v1.HeadscaleService.SetTags:input_type -> headscale.v1.SetTagsRequest
|
12, // 10: headscale.v1.HeadscaleService.SetApprovedRoutes:input_type -> headscale.v1.SetApprovedRoutesRequest
|
||||||
13, // 11: headscale.v1.HeadscaleService.SetApprovedRoutes:input_type -> headscale.v1.SetApprovedRoutesRequest
|
13, // 11: headscale.v1.HeadscaleService.RegisterNode:input_type -> headscale.v1.RegisterNodeRequest
|
||||||
14, // 12: headscale.v1.HeadscaleService.RegisterNode:input_type -> headscale.v1.RegisterNodeRequest
|
14, // 12: headscale.v1.HeadscaleService.DeleteNode:input_type -> headscale.v1.DeleteNodeRequest
|
||||||
15, // 13: headscale.v1.HeadscaleService.DeleteNode:input_type -> headscale.v1.DeleteNodeRequest
|
15, // 13: headscale.v1.HeadscaleService.ExpireNode:input_type -> headscale.v1.ExpireNodeRequest
|
||||||
16, // 14: headscale.v1.HeadscaleService.ExpireNode:input_type -> headscale.v1.ExpireNodeRequest
|
16, // 14: headscale.v1.HeadscaleService.RenameNode:input_type -> headscale.v1.RenameNodeRequest
|
||||||
17, // 15: headscale.v1.HeadscaleService.RenameNode:input_type -> headscale.v1.RenameNodeRequest
|
17, // 15: headscale.v1.HeadscaleService.ListNodes:input_type -> headscale.v1.ListNodesRequest
|
||||||
18, // 16: headscale.v1.HeadscaleService.ListNodes:input_type -> headscale.v1.ListNodesRequest
|
18, // 16: headscale.v1.HeadscaleService.MoveNode:input_type -> headscale.v1.MoveNodeRequest
|
||||||
19, // 17: headscale.v1.HeadscaleService.MoveNode:input_type -> headscale.v1.MoveNodeRequest
|
19, // 17: headscale.v1.HeadscaleService.BackfillNodeIPs:input_type -> headscale.v1.BackfillNodeIPsRequest
|
||||||
20, // 18: headscale.v1.HeadscaleService.BackfillNodeIPs:input_type -> headscale.v1.BackfillNodeIPsRequest
|
20, // 18: headscale.v1.HeadscaleService.CreateApiKey:input_type -> headscale.v1.CreateApiKeyRequest
|
||||||
21, // 19: headscale.v1.HeadscaleService.CreateApiKey:input_type -> headscale.v1.CreateApiKeyRequest
|
21, // 19: headscale.v1.HeadscaleService.ExpireApiKey:input_type -> headscale.v1.ExpireApiKeyRequest
|
||||||
22, // 20: headscale.v1.HeadscaleService.ExpireApiKey:input_type -> headscale.v1.ExpireApiKeyRequest
|
22, // 20: headscale.v1.HeadscaleService.ListApiKeys:input_type -> headscale.v1.ListApiKeysRequest
|
||||||
23, // 21: headscale.v1.HeadscaleService.ListApiKeys:input_type -> headscale.v1.ListApiKeysRequest
|
23, // 21: headscale.v1.HeadscaleService.DeleteApiKey:input_type -> headscale.v1.DeleteApiKeyRequest
|
||||||
24, // 22: headscale.v1.HeadscaleService.DeleteApiKey:input_type -> headscale.v1.DeleteApiKeyRequest
|
24, // 22: headscale.v1.HeadscaleService.GetPolicy:input_type -> headscale.v1.GetPolicyRequest
|
||||||
25, // 23: headscale.v1.HeadscaleService.GetPolicy:input_type -> headscale.v1.GetPolicyRequest
|
25, // 23: headscale.v1.HeadscaleService.SetPolicy:input_type -> headscale.v1.SetPolicyRequest
|
||||||
26, // 24: headscale.v1.HeadscaleService.SetPolicy:input_type -> headscale.v1.SetPolicyRequest
|
0, // 24: headscale.v1.HeadscaleService.Health:input_type -> headscale.v1.HealthRequest
|
||||||
1, // 25: headscale.v1.HeadscaleService.Health:input_type -> headscale.v1.HealthRequest
|
26, // 25: headscale.v1.HeadscaleService.CreateUser:output_type -> headscale.v1.CreateUserResponse
|
||||||
27, // 26: headscale.v1.HeadscaleService.CreateUser:output_type -> headscale.v1.CreateUserResponse
|
27, // 26: headscale.v1.HeadscaleService.RenameUser:output_type -> headscale.v1.RenameUserResponse
|
||||||
28, // 27: headscale.v1.HeadscaleService.RenameUser:output_type -> headscale.v1.RenameUserResponse
|
28, // 27: headscale.v1.HeadscaleService.DeleteUser:output_type -> headscale.v1.DeleteUserResponse
|
||||||
29, // 28: headscale.v1.HeadscaleService.DeleteUser:output_type -> headscale.v1.DeleteUserResponse
|
29, // 28: headscale.v1.HeadscaleService.ListUsers:output_type -> headscale.v1.ListUsersResponse
|
||||||
30, // 29: headscale.v1.HeadscaleService.ListUsers:output_type -> headscale.v1.ListUsersResponse
|
30, // 29: headscale.v1.HeadscaleService.CreatePreAuthKey:output_type -> headscale.v1.CreatePreAuthKeyResponse
|
||||||
31, // 30: headscale.v1.HeadscaleService.CreatePreAuthKey:output_type -> headscale.v1.CreatePreAuthKeyResponse
|
31, // 30: headscale.v1.HeadscaleService.ExpirePreAuthKey:output_type -> headscale.v1.ExpirePreAuthKeyResponse
|
||||||
32, // 31: headscale.v1.HeadscaleService.ExpirePreAuthKey:output_type -> headscale.v1.ExpirePreAuthKeyResponse
|
32, // 31: headscale.v1.HeadscaleService.ListPreAuthKeys:output_type -> headscale.v1.ListPreAuthKeysResponse
|
||||||
33, // 32: headscale.v1.HeadscaleService.ListPreAuthKeys:output_type -> headscale.v1.ListPreAuthKeysResponse
|
33, // 32: headscale.v1.HeadscaleService.DebugCreateNode:output_type -> headscale.v1.DebugCreateNodeResponse
|
||||||
34, // 33: headscale.v1.HeadscaleService.DebugCreateNode:output_type -> headscale.v1.DebugCreateNodeResponse
|
34, // 33: headscale.v1.HeadscaleService.GetNode:output_type -> headscale.v1.GetNodeResponse
|
||||||
35, // 34: headscale.v1.HeadscaleService.GetNode:output_type -> headscale.v1.GetNodeResponse
|
35, // 34: headscale.v1.HeadscaleService.SetTags:output_type -> headscale.v1.SetTagsResponse
|
||||||
36, // 35: headscale.v1.HeadscaleService.SetTags:output_type -> headscale.v1.SetTagsResponse
|
36, // 35: headscale.v1.HeadscaleService.SetApprovedRoutes:output_type -> headscale.v1.SetApprovedRoutesResponse
|
||||||
37, // 36: headscale.v1.HeadscaleService.SetApprovedRoutes:output_type -> headscale.v1.SetApprovedRoutesResponse
|
37, // 36: headscale.v1.HeadscaleService.RegisterNode:output_type -> headscale.v1.RegisterNodeResponse
|
||||||
38, // 37: headscale.v1.HeadscaleService.RegisterNode:output_type -> headscale.v1.RegisterNodeResponse
|
38, // 37: headscale.v1.HeadscaleService.DeleteNode:output_type -> headscale.v1.DeleteNodeResponse
|
||||||
39, // 38: headscale.v1.HeadscaleService.DeleteNode:output_type -> headscale.v1.DeleteNodeResponse
|
39, // 38: headscale.v1.HeadscaleService.ExpireNode:output_type -> headscale.v1.ExpireNodeResponse
|
||||||
40, // 39: headscale.v1.HeadscaleService.ExpireNode:output_type -> headscale.v1.ExpireNodeResponse
|
40, // 39: headscale.v1.HeadscaleService.RenameNode:output_type -> headscale.v1.RenameNodeResponse
|
||||||
41, // 40: headscale.v1.HeadscaleService.RenameNode:output_type -> headscale.v1.RenameNodeResponse
|
41, // 40: headscale.v1.HeadscaleService.ListNodes:output_type -> headscale.v1.ListNodesResponse
|
||||||
42, // 41: headscale.v1.HeadscaleService.ListNodes:output_type -> headscale.v1.ListNodesResponse
|
42, // 41: headscale.v1.HeadscaleService.MoveNode:output_type -> headscale.v1.MoveNodeResponse
|
||||||
43, // 42: headscale.v1.HeadscaleService.MoveNode:output_type -> headscale.v1.MoveNodeResponse
|
43, // 42: headscale.v1.HeadscaleService.BackfillNodeIPs:output_type -> headscale.v1.BackfillNodeIPsResponse
|
||||||
44, // 43: headscale.v1.HeadscaleService.BackfillNodeIPs:output_type -> headscale.v1.BackfillNodeIPsResponse
|
44, // 43: headscale.v1.HeadscaleService.CreateApiKey:output_type -> headscale.v1.CreateApiKeyResponse
|
||||||
45, // 44: headscale.v1.HeadscaleService.CreateApiKey:output_type -> headscale.v1.CreateApiKeyResponse
|
45, // 44: headscale.v1.HeadscaleService.ExpireApiKey:output_type -> headscale.v1.ExpireApiKeyResponse
|
||||||
46, // 45: headscale.v1.HeadscaleService.ExpireApiKey:output_type -> headscale.v1.ExpireApiKeyResponse
|
46, // 45: headscale.v1.HeadscaleService.ListApiKeys:output_type -> headscale.v1.ListApiKeysResponse
|
||||||
47, // 46: headscale.v1.HeadscaleService.ListApiKeys:output_type -> headscale.v1.ListApiKeysResponse
|
47, // 46: headscale.v1.HeadscaleService.DeleteApiKey:output_type -> headscale.v1.DeleteApiKeyResponse
|
||||||
48, // 47: headscale.v1.HeadscaleService.DeleteApiKey:output_type -> headscale.v1.DeleteApiKeyResponse
|
48, // 47: headscale.v1.HeadscaleService.GetPolicy:output_type -> headscale.v1.GetPolicyResponse
|
||||||
49, // 48: headscale.v1.HeadscaleService.GetPolicy:output_type -> headscale.v1.GetPolicyResponse
|
49, // 48: headscale.v1.HeadscaleService.SetPolicy:output_type -> headscale.v1.SetPolicyResponse
|
||||||
50, // 49: headscale.v1.HeadscaleService.SetPolicy:output_type -> headscale.v1.SetPolicyResponse
|
1, // 49: headscale.v1.HeadscaleService.Health:output_type -> headscale.v1.HealthResponse
|
||||||
2, // 50: headscale.v1.HeadscaleService.Health:output_type -> headscale.v1.HealthResponse
|
25, // [25:50] is the sub-list for method output_type
|
||||||
26, // [26:51] is the sub-list for method output_type
|
0, // [0:25] is the sub-list for method input_type
|
||||||
1, // [1:26] is the sub-list for method input_type
|
0, // [0:0] is the sub-list for extension type_name
|
||||||
1, // [1:1] is the sub-list for extension type_name
|
0, // [0:0] is the sub-list for extension extendee
|
||||||
1, // [1:1] is the sub-list for extension extendee
|
0, // [0:0] is the sub-list for field type_name
|
||||||
0, // [0:1] is the sub-list for field type_name
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { file_headscale_v1_headscale_proto_init() }
|
func init() { file_headscale_v1_headscale_proto_init() }
|
||||||
@ -333,14 +281,13 @@ func file_headscale_v1_headscale_proto_init() {
|
|||||||
File: protoimpl.DescBuilder{
|
File: protoimpl.DescBuilder{
|
||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
RawDescriptor: unsafe.Slice(unsafe.StringData(file_headscale_v1_headscale_proto_rawDesc), len(file_headscale_v1_headscale_proto_rawDesc)),
|
RawDescriptor: unsafe.Slice(unsafe.StringData(file_headscale_v1_headscale_proto_rawDesc), len(file_headscale_v1_headscale_proto_rawDesc)),
|
||||||
NumEnums: 1,
|
NumEnums: 0,
|
||||||
NumMessages: 2,
|
NumMessages: 2,
|
||||||
NumExtensions: 0,
|
NumExtensions: 0,
|
||||||
NumServices: 1,
|
NumServices: 1,
|
||||||
},
|
},
|
||||||
GoTypes: file_headscale_v1_headscale_proto_goTypes,
|
GoTypes: file_headscale_v1_headscale_proto_goTypes,
|
||||||
DependencyIndexes: file_headscale_v1_headscale_proto_depIdxs,
|
DependencyIndexes: file_headscale_v1_headscale_proto_depIdxs,
|
||||||
EnumInfos: file_headscale_v1_headscale_proto_enumTypes,
|
|
||||||
MessageInfos: file_headscale_v1_headscale_proto_msgTypes,
|
MessageInfos: file_headscale_v1_headscale_proto_msgTypes,
|
||||||
}.Build()
|
}.Build()
|
||||||
File_headscale_v1_headscale_proto = out.File
|
File_headscale_v1_headscale_proto = out.File
|
||||||
|
@ -1082,19 +1082,11 @@
|
|||||||
"v1HealthResponse": {
|
"v1HealthResponse": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"status": {
|
"dbPing": {
|
||||||
"$ref": "#/definitions/v1HealthStatus"
|
"type": "boolean"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"v1HealthStatus": {
|
|
||||||
"type": "string",
|
|
||||||
"enum": [
|
|
||||||
"Fail",
|
|
||||||
"Pass"
|
|
||||||
],
|
|
||||||
"default": "Fail"
|
|
||||||
},
|
|
||||||
"v1ListApiKeysResponse": {
|
"v1ListApiKeysResponse": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -823,14 +823,20 @@ func (api headscaleV1APIServer) Health(
|
|||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
request *v1.HealthRequest,
|
request *v1.HealthRequest,
|
||||||
) (*v1.HealthResponse, error) {
|
) (*v1.HealthResponse, error) {
|
||||||
|
var healthErr error
|
||||||
|
response := &v1.HealthResponse{}
|
||||||
|
|
||||||
if err := api.h.state.PingDB(ctx); err != nil {
|
if err := api.h.state.PingDB(ctx); err != nil {
|
||||||
log.Error().
|
healthErr = fmt.Errorf("database ping failed: %w", err)
|
||||||
Err(err).
|
} else {
|
||||||
Msg("Health check failed: database ping failed")
|
response.DbPing = true
|
||||||
return &v1.HealthResponse{Status: v1.HealthStatus_Fail}, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return &v1.HealthResponse{Status: v1.HealthStatus_Pass}, nil
|
if healthErr != nil {
|
||||||
|
log.Error().Err(healthErr).Msg("Health check failed")
|
||||||
|
}
|
||||||
|
|
||||||
|
return response, healthErr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (api headscaleV1APIServer) mustEmbedUnimplementedHeadscaleServiceServer() {}
|
func (api headscaleV1APIServer) mustEmbedUnimplementedHeadscaleServiceServer() {}
|
||||||
|
@ -218,13 +218,8 @@ service HeadscaleService {
|
|||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
enum HealthStatus {
|
|
||||||
Fail = 0;
|
|
||||||
Pass = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message HealthRequest {}
|
message HealthRequest {}
|
||||||
|
|
||||||
message HealthResponse {
|
message HealthResponse {
|
||||||
HealthStatus status = 1;
|
bool db_ping = 1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user