blob: 2fde6f0f33419b5fe00855a02369e347b1e8fd9b [file] [log] [blame]
Tim Windelschmidt6d33a432025-02-04 14:34:25 +01001// Copyright The Monogon Project Authors.
Lorenz Brun5e4fc2d2020-09-22 18:35:15 +02002// SPDX-License-Identifier: Apache-2.0
Lorenz Brun5e4fc2d2020-09-22 18:35:15 +02003
4package reconciler
5
6import (
7 "context"
8
Lorenz Brun6211e4d2023-11-14 19:09:40 +01009 node "k8s.io/api/node/v1"
Lorenz Brun5e4fc2d2020-09-22 18:35:15 +020010 meta "k8s.io/apimachinery/pkg/apis/meta/v1"
11 "k8s.io/client-go/kubernetes"
12)
13
14type resourceRuntimeClasses struct {
15 kubernetes.Interface
16}
17
Jan Schär7f727482024-03-25 13:03:51 +010018func (r resourceRuntimeClasses) List(ctx context.Context) ([]meta.Object, error) {
Lorenz Brun6211e4d2023-11-14 19:09:40 +010019 res, err := r.NodeV1().RuntimeClasses().List(ctx, listBuiltins)
Lorenz Brun5e4fc2d2020-09-22 18:35:15 +020020 if err != nil {
21 return nil, err
22 }
Jan Schär7f727482024-03-25 13:03:51 +010023 objs := make([]meta.Object, len(res.Items))
24 for i := range res.Items {
25 objs[i] = &res.Items[i]
Lorenz Brun5e4fc2d2020-09-22 18:35:15 +020026 }
27 return objs, nil
28}
29
Jan Schär7f727482024-03-25 13:03:51 +010030func (r resourceRuntimeClasses) Create(ctx context.Context, el meta.Object) error {
Lorenz Brun6211e4d2023-11-14 19:09:40 +010031 _, err := r.NodeV1().RuntimeClasses().Create(ctx, el.(*node.RuntimeClass), meta.CreateOptions{})
Lorenz Brun5e4fc2d2020-09-22 18:35:15 +020032 return err
33}
34
Jan Schär69f5f4e2024-05-15 10:32:07 +020035func (r resourceRuntimeClasses) Update(ctx context.Context, el meta.Object) error {
36 _, err := r.NodeV1().RuntimeClasses().Update(ctx, el.(*node.RuntimeClass), meta.UpdateOptions{})
37 return err
38}
39
40func (r resourceRuntimeClasses) Delete(ctx context.Context, name string, opts meta.DeleteOptions) error {
41 return r.NodeV1().RuntimeClasses().Delete(ctx, name, opts)
Lorenz Brun5e4fc2d2020-09-22 18:35:15 +020042}
43
Jan Schär7f727482024-03-25 13:03:51 +010044func (r resourceRuntimeClasses) Expected() []meta.Object {
45 return []meta.Object{
46 &node.RuntimeClass{
Lorenz Brun5e4fc2d2020-09-22 18:35:15 +020047 ObjectMeta: meta.ObjectMeta{
48 Name: "gvisor",
49 Labels: builtinLabels(nil),
50 },
51 Handler: "runsc",
52 },
Jan Schär7f727482024-03-25 13:03:51 +010053 &node.RuntimeClass{
Lorenz Brun5e4fc2d2020-09-22 18:35:15 +020054 ObjectMeta: meta.ObjectMeta{
55 Name: "runc",
56 Labels: builtinLabels(nil),
57 },
58 Handler: "runc",
59 },
60 }
61}