blob: 070cb96e9941f4458ba7c55309675b1ac851caa6 [file] [log] [blame]
Lorenz Brun5e4fc2d2020-09-22 18:35:15 +02001// Copyright 2020 The Monogon Project Authors.
2//
3// SPDX-License-Identifier: Apache-2.0
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing, software
12// distributed under the License is distributed on an "AS IS" BASIS,
13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14// See the License for the specific language governing permissions and
15// limitations under the License.
16
17package reconciler
18
19import (
20 "context"
21
Lorenz Brun6211e4d2023-11-14 19:09:40 +010022 node "k8s.io/api/node/v1"
Lorenz Brun5e4fc2d2020-09-22 18:35:15 +020023 meta "k8s.io/apimachinery/pkg/apis/meta/v1"
24 "k8s.io/client-go/kubernetes"
25)
26
27type resourceRuntimeClasses struct {
28 kubernetes.Interface
29}
30
Jan Schär7f727482024-03-25 13:03:51 +010031func (r resourceRuntimeClasses) List(ctx context.Context) ([]meta.Object, error) {
Lorenz Brun6211e4d2023-11-14 19:09:40 +010032 res, err := r.NodeV1().RuntimeClasses().List(ctx, listBuiltins)
Lorenz Brun5e4fc2d2020-09-22 18:35:15 +020033 if err != nil {
34 return nil, err
35 }
Jan Schär7f727482024-03-25 13:03:51 +010036 objs := make([]meta.Object, len(res.Items))
37 for i := range res.Items {
38 objs[i] = &res.Items[i]
Lorenz Brun5e4fc2d2020-09-22 18:35:15 +020039 }
40 return objs, nil
41}
42
Jan Schär7f727482024-03-25 13:03:51 +010043func (r resourceRuntimeClasses) Create(ctx context.Context, el meta.Object) error {
Lorenz Brun6211e4d2023-11-14 19:09:40 +010044 _, err := r.NodeV1().RuntimeClasses().Create(ctx, el.(*node.RuntimeClass), meta.CreateOptions{})
Lorenz Brun5e4fc2d2020-09-22 18:35:15 +020045 return err
46}
47
Jan Schär69f5f4e2024-05-15 10:32:07 +020048func (r resourceRuntimeClasses) Update(ctx context.Context, el meta.Object) error {
49 _, err := r.NodeV1().RuntimeClasses().Update(ctx, el.(*node.RuntimeClass), meta.UpdateOptions{})
50 return err
51}
52
53func (r resourceRuntimeClasses) Delete(ctx context.Context, name string, opts meta.DeleteOptions) error {
54 return r.NodeV1().RuntimeClasses().Delete(ctx, name, opts)
Lorenz Brun5e4fc2d2020-09-22 18:35:15 +020055}
56
Jan Schär7f727482024-03-25 13:03:51 +010057func (r resourceRuntimeClasses) Expected() []meta.Object {
58 return []meta.Object{
59 &node.RuntimeClass{
Lorenz Brun5e4fc2d2020-09-22 18:35:15 +020060 ObjectMeta: meta.ObjectMeta{
61 Name: "gvisor",
62 Labels: builtinLabels(nil),
63 },
64 Handler: "runsc",
65 },
Jan Schär7f727482024-03-25 13:03:51 +010066 &node.RuntimeClass{
Lorenz Brun5e4fc2d2020-09-22 18:35:15 +020067 ObjectMeta: meta.ObjectMeta{
68 Name: "runc",
69 Labels: builtinLabels(nil),
70 },
71 Handler: "runc",
72 },
73 }
74}