Skip to content

Commit 214785b

Browse files
committed
Boot Services
1 parent 2f183a3 commit 214785b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+5030
-465
lines changed

doc/index.html

Lines changed: 868 additions & 3 deletions
Large diffs are not rendered by default.

generate/generate.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ func servicePermissions(root string) (*permissions.ServicePermissions, error) {
9797
roles = permissions.Roles{
9898
Admin: permissions.Admin{},
9999
Infra: permissions.Infra{},
100+
Machine: permissions.Machine{},
100101
Tenant: permissions.Tenant{},
101102
Project: permissions.Project{},
102103
}
@@ -114,6 +115,7 @@ func servicePermissions(root string) (*permissions.ServicePermissions, error) {
114115
Self: map[string]bool{},
115116
Admin: map[string]bool{},
116117
Infra: map[string]bool{},
118+
Machine: map[string]bool{},
117119
Tenant: map[string]bool{},
118120
Project: map[string]bool{},
119121
}
@@ -167,6 +169,12 @@ func servicePermissions(root string) (*permissions.ServicePermissions, error) {
167169
visibility.Infra[methodName] = true
168170
case v1.InfraRole_INFRA_ROLE_UNSPECIFIED.String():
169171
// noop
172+
// Machine
173+
case v1.MachineRole_MACHINE_ROLE_EDITOR.String(), v1.MachineRole_MACHINE_ROLE_VIEWER.String():
174+
roles.Machine[role] = append(roles.Machine[role], methodName)
175+
visibility.Machine[methodName] = true
176+
case v1.MachineRole_MACHINE_ROLE_UNSPECIFIED.String():
177+
// noop
170178
// Visibility
171179
case v1.Visibility_VISIBILITY_PUBLIC.String():
172180
visibility.Public[methodName] = true

generate/go_servicepermissions.tpl

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,15 @@ func GetServicePermissions() *ServicePermissions {
3434
},
3535
{{- end }}
3636
},
37+
Machine: Machine{
38+
{{- range $role, $methods := .Roles.Machine }}
39+
"{{ $role }}": []string{
40+
{{- range $method := $methods }}
41+
"{{ $method }}",
42+
{{- end }}
43+
},
44+
{{- end }}
45+
},
3746
Tenant: Tenant{
3847
{{- range $role, $methods := .Roles.Tenant }}
3948
"{{ $role }}": []string{
@@ -77,6 +86,11 @@ func GetServicePermissions() *ServicePermissions {
7786
Infra: map[string]bool{
7887
{{- range $key, $value := .Visibility.Infra }}
7988
"{{ $key }}": {{ $value }} ,
89+
{{- end }}
90+
},
91+
Machine: map[string]bool{
92+
{{- range $key, $value := .Visibility.Machine }}
93+
"{{ $key }}": {{ $value }} ,
8094
{{- end }}
8195
},
8296
Tenant: map[string]bool{
@@ -118,6 +132,11 @@ func IsInfraScope(req connect.AnyRequest) bool {
118132
return ok
119133
}
120134

135+
func IsMachineScope(req connect.AnyRequest) bool {
136+
_, ok := GetServicePermissions().Visibility.Machine[req.Spec().Procedure]
137+
return ok
138+
}
139+
121140
func IsTenantScope(req connect.AnyRequest) bool {
122141
_, ok := GetServicePermissions().Visibility.Tenant[req.Spec().Procedure]
123142
return ok
@@ -153,4 +172,15 @@ func GetProjectFromRequest(req connect.AnyRequest) (string, bool) {
153172
return rq.GetProject(), true
154173
}
155174
return "", false
175+
}
176+
177+
func GetMachineIdFromRequest(req connect.AnyRequest) (string, bool) {
178+
if !IsMachineScope(req) {
179+
return "", false
180+
}
181+
switch rq := req.Any().(type) {
182+
case interface{ GetUuid() string }:
183+
return rq.GetUuid(), true
184+
}
185+
return "", false
156186
}

go.mod

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/metal-stack/api
33
go 1.25
44

55
require (
6-
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.10-20251209175733-2a1774d88802.1
6+
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20251209175733-2a1774d88802.1
77
buf.build/go/protovalidate v1.1.0
88
connectrpc.com/connect v1.19.1
99
github.com/bufbuild/protocompile v0.14.1
@@ -12,7 +12,7 @@ require (
1212
github.com/google/go-cmp v0.7.0
1313
github.com/klauspost/connect-compress/v2 v2.1.0
1414
github.com/stretchr/testify v1.11.1
15-
google.golang.org/protobuf v1.36.10
15+
google.golang.org/protobuf v1.36.11
1616
)
1717

1818
require (
@@ -22,14 +22,17 @@ require (
2222
github.com/google/cel-go v0.26.1 // indirect
2323
github.com/klauspost/compress v1.18.2 // indirect
2424
github.com/kr/pretty v0.3.1 // indirect
25+
github.com/kr/text v0.2.0 // indirect
2526
github.com/minio/minlz v1.0.1 // indirect
2627
github.com/pmezard/go-difflib v1.0.0 // indirect
28+
github.com/rogpeppe/go-internal v1.9.0 // indirect
2729
github.com/stoewer/go-strcase v1.3.1 // indirect
2830
github.com/stretchr/objx v0.5.3 // indirect
29-
golang.org/x/exp v0.0.0-20251209150349-8475f28825e9 // indirect
31+
golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 // indirect
32+
golang.org/x/sync v0.19.0 // indirect
3033
golang.org/x/text v0.32.0 // indirect
31-
google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect
32-
google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect
34+
google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect
35+
google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect
3336
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
3437
gopkg.in/yaml.v3 v3.0.1 // indirect
3538
)

go.sum

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.10-20251209175733-2a1774d88802.1 h1:ZnX3qpF/pDiYrf+Q3p+/zCzZ5ELSpszy5hdVarDMSV4=
22
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.10-20251209175733-2a1774d88802.1/go.mod h1:fUl8CEN/6ZAMk6bP8ahBJPUJw7rbp+j4x+wCcYi2IG4=
3+
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20251209175733-2a1774d88802.1 h1:j9yeqTWEFrtimt8Nng2MIeRrpoCvQzM9/g25XTvqUGg=
4+
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20251209175733-2a1774d88802.1/go.mod h1:tvtbpgaVXZX4g6Pn+AnzFycuRK3MOz5HJfEGeEllXYM=
35
buf.build/go/protovalidate v1.1.0 h1:pQqEQRpOo4SqS60qkvmhLTTQU9JwzEvdyiqAtXa5SeY=
46
buf.build/go/protovalidate v1.1.0/go.mod h1:bGZcPiAQDC3ErCHK3t74jSoJDFOs2JH3d7LWuTEIdss=
57
cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=
@@ -58,14 +60,24 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu
5860
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
5961
golang.org/x/exp v0.0.0-20251209150349-8475f28825e9 h1:MDfG8Cvcqlt9XXrmEiD4epKn7VJHZO84hejP9Jmp0MM=
6062
golang.org/x/exp v0.0.0-20251209150349-8475f28825e9/go.mod h1:EPRbTFwzwjXj9NpYyyrvenVh9Y+GFeEvMNh7Xuz7xgU=
63+
golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 h1:fQsdNF2N+/YewlRZiricy4P1iimyPKZ/xwniHj8Q2a0=
64+
golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93/go.mod h1:EPRbTFwzwjXj9NpYyyrvenVh9Y+GFeEvMNh7Xuz7xgU=
65+
golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
66+
golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
6167
golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU=
6268
golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY=
6369
google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls=
6470
google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto=
71+
google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b h1:uA40e2M6fYRBf0+8uN5mLlqUtV192iiksiICIBkYJ1E=
72+
google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:Xa7le7qx2vmqB/SzWUBa7KdMjpdpAHlh5QCSnjessQk=
6573
google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww=
6674
google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk=
75+
google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b h1:Mv8VFug0MP9e5vUxfBcE3vUkV6CImK3cMNMIDFjmzxU=
76+
google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ=
6777
google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=
6878
google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
79+
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
80+
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
6981
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
7082
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
7183
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=

go/client/client.go

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

go/metalstack/admin/v2/filesystem.pb.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

go/metalstack/admin/v2/image.pb.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

go/metalstack/admin/v2/ip.pb.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

go/metalstack/admin/v2/machine.pb.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)