| Tim Windelschmidt | 6d33a43 | 2025-02-04 14:34:25 +0100 | [diff] [blame^] | 1 | // Copyright The Monogon Project Authors. |
| Serge Bazanski | e6030f6 | 2020-06-03 17:52:59 +0200 | [diff] [blame] | 2 | // SPDX-License-Identifier: Apache-2.0 |
| Serge Bazanski | e6030f6 | 2020-06-03 17:52:59 +0200 | [diff] [blame] | 3 | |
| 4 | package reconciler |
| 5 | |
| 6 | import ( |
| 7 | "context" |
| 8 | |
| 9 | storage "k8s.io/api/storage/v1" |
| 10 | meta "k8s.io/apimachinery/pkg/apis/meta/v1" |
| 11 | "k8s.io/client-go/kubernetes" |
| Tim Windelschmidt | d77e26e | 2024-12-02 18:23:10 +0100 | [diff] [blame] | 12 | "k8s.io/utils/ptr" |
| Serge Bazanski | e6030f6 | 2020-06-03 17:52:59 +0200 | [diff] [blame] | 13 | ) |
| 14 | |
| Serge Bazanski | 216fe7b | 2021-05-21 18:36:16 +0200 | [diff] [blame] | 15 | // TODO(q3k): this is duplicated with |
| 16 | // //metropolis/node/kubernetes:provisioner.go; integrate this once |
| 17 | // provisioner.go gets moved into a subpackage. |
| 18 | // ONCHANGE(//metropolis/node/kubernetes:provisioner.go): needs to match |
| 19 | // csiProvisionerName declared. |
| Serge Bazanski | 662b5b3 | 2020-12-21 13:49:00 +0100 | [diff] [blame] | 20 | const csiProvisionerName = "dev.monogon.metropolis.vfs" |
| Serge Bazanski | e6030f6 | 2020-06-03 17:52:59 +0200 | [diff] [blame] | 21 | |
| 22 | type resourceCSIDrivers struct { |
| 23 | kubernetes.Interface |
| 24 | } |
| 25 | |
| Jan Schär | 7f72748 | 2024-03-25 13:03:51 +0100 | [diff] [blame] | 26 | func (r resourceCSIDrivers) List(ctx context.Context) ([]meta.Object, error) { |
| Serge Bazanski | e6030f6 | 2020-06-03 17:52:59 +0200 | [diff] [blame] | 27 | res, err := r.StorageV1().CSIDrivers().List(ctx, listBuiltins) |
| 28 | if err != nil { |
| 29 | return nil, err |
| 30 | } |
| Jan Schär | 7f72748 | 2024-03-25 13:03:51 +0100 | [diff] [blame] | 31 | objs := make([]meta.Object, len(res.Items)) |
| 32 | for i := range res.Items { |
| 33 | objs[i] = &res.Items[i] |
| Serge Bazanski | e6030f6 | 2020-06-03 17:52:59 +0200 | [diff] [blame] | 34 | } |
| 35 | return objs, nil |
| 36 | } |
| 37 | |
| Jan Schär | 7f72748 | 2024-03-25 13:03:51 +0100 | [diff] [blame] | 38 | func (r resourceCSIDrivers) Create(ctx context.Context, el meta.Object) error { |
| Serge Bazanski | e6030f6 | 2020-06-03 17:52:59 +0200 | [diff] [blame] | 39 | _, err := r.StorageV1().CSIDrivers().Create(ctx, el.(*storage.CSIDriver), meta.CreateOptions{}) |
| 40 | return err |
| 41 | } |
| 42 | |
| Jan Schär | 69f5f4e | 2024-05-15 10:32:07 +0200 | [diff] [blame] | 43 | func (r resourceCSIDrivers) Update(ctx context.Context, el meta.Object) error { |
| 44 | _, err := r.StorageV1().CSIDrivers().Update(ctx, el.(*storage.CSIDriver), meta.UpdateOptions{}) |
| 45 | return err |
| 46 | } |
| 47 | |
| 48 | func (r resourceCSIDrivers) Delete(ctx context.Context, name string, opts meta.DeleteOptions) error { |
| 49 | return r.StorageV1().CSIDrivers().Delete(ctx, name, opts) |
| Serge Bazanski | e6030f6 | 2020-06-03 17:52:59 +0200 | [diff] [blame] | 50 | } |
| 51 | |
| Jan Schär | 7f72748 | 2024-03-25 13:03:51 +0100 | [diff] [blame] | 52 | func (r resourceCSIDrivers) Expected() []meta.Object { |
| Jan Schär | 7f72748 | 2024-03-25 13:03:51 +0100 | [diff] [blame] | 53 | return []meta.Object{ |
| 54 | &storage.CSIDriver{ |
| Serge Bazanski | e6030f6 | 2020-06-03 17:52:59 +0200 | [diff] [blame] | 55 | ObjectMeta: meta.ObjectMeta{ |
| 56 | Name: csiProvisionerName, |
| 57 | Labels: builtinLabels(nil), |
| 58 | }, |
| 59 | Spec: storage.CSIDriverSpec{ |
| Tim Windelschmidt | d77e26e | 2024-12-02 18:23:10 +0100 | [diff] [blame] | 60 | AttachRequired: ptr.To(false), |
| 61 | PodInfoOnMount: ptr.To(false), |
| Serge Bazanski | e6030f6 | 2020-06-03 17:52:59 +0200 | [diff] [blame] | 62 | VolumeLifecycleModes: []storage.VolumeLifecycleMode{storage.VolumeLifecyclePersistent}, |
| Tim Windelschmidt | d77e26e | 2024-12-02 18:23:10 +0100 | [diff] [blame] | 63 | StorageCapacity: ptr.To(false), |
| Jan Schär | d1a8b64 | 2024-12-03 17:40:41 +0100 | [diff] [blame] | 64 | FSGroupPolicy: ptr.To(storage.FileFSGroupPolicy), |
| Tim Windelschmidt | d77e26e | 2024-12-02 18:23:10 +0100 | [diff] [blame] | 65 | RequiresRepublish: ptr.To(false), |
| 66 | SELinuxMount: ptr.To(false), |
| Serge Bazanski | e6030f6 | 2020-06-03 17:52:59 +0200 | [diff] [blame] | 67 | }, |
| 68 | }, |
| 69 | } |
| 70 | } |