package kubeedit import ( "context" "fmt" "git.k8s-git-k6n.net/mats/fancy-dns/internal/kubesource" ) // ListObject is a stored BlockList. type ListObject struct { Name string Spec kubesource.BlockListSpec } // Lists returns the BlockList objects. func (e *Editor) Lists(ctx context.Context) ([]ListObject, error) { items, err := e.list(ctx, kubesource.ListGVR) if err != nil { return nil, err } out := make([]ListObject, 0, len(items)) for i := range items { var s kubesource.BlockListSpec if err := decodeSpec(&items[i], &s); err != nil { continue } out = append(out, ListObject{Name: items[i].GetName(), Spec: s}) } return out, nil } // PutList creates or replaces a BlockList. func (e *Editor) PutList(ctx context.Context, name string, spec kubesource.BlockListSpec, actor string) error { if err := checkName("blocklist", name); err != nil { return err } if _, err := kubesource.CheckList(name, spec); err != nil { return fmt.Errorf("blocklist %q: %w", name, err) } _, err := e.upsert(ctx, kubesource.ListGVR, "BlockList", name, actor, spec) return err } // SetListDisabled flips spec.disabled on one BlockList. func (e *Editor) SetListDisabled(ctx context.Context, name string, disabled bool, actor string) error { items, err := e.Lists(ctx) if err != nil { return err } for _, l := range items { if l.Name == name { l.Spec.Disabled = disabled return e.PutList(ctx, name, l.Spec, actor) } } return fmt.Errorf("%w: no BlockList named %q", ErrNotFound, name) } // DeleteList removes a BlockList. func (e *Editor) DeleteList(ctx context.Context, name string) error { return e.remove(ctx, kubesource.ListGVR, name) }