mirror of
https://github.com/rancher/norman.git
synced 2025-08-24 09:58:33 +00:00
58 lines
1.2 KiB
Go
58 lines
1.2 KiB
Go
package objectset
|
|
|
|
import (
|
|
"github.com/rancher/norman/controller"
|
|
"github.com/rancher/norman/objectclient"
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
)
|
|
|
|
type Client interface {
|
|
Generic() controller.GenericController
|
|
ObjectClient() *objectclient.ObjectClient
|
|
}
|
|
|
|
type Processor struct {
|
|
setID string
|
|
codeVersion string
|
|
clients map[schema.GroupVersionKind]Client
|
|
}
|
|
|
|
func NewProcessor(setID string) Processor {
|
|
return Processor{
|
|
setID: setID,
|
|
clients: map[schema.GroupVersionKind]Client{},
|
|
}
|
|
}
|
|
|
|
func (t Processor) CodeVersion(version string) Processor {
|
|
t.codeVersion = version
|
|
return t
|
|
}
|
|
|
|
func (t Processor) Client(clients ...Client) Processor {
|
|
// ensure cache is enabled
|
|
for _, client := range clients {
|
|
client.Generic()
|
|
t.clients[client.ObjectClient().GroupVersionKind()] = client
|
|
}
|
|
return t
|
|
}
|
|
|
|
func (t Processor) Remove(owner runtime.Object) error {
|
|
return t.NewDesiredSet(owner, nil).Apply()
|
|
}
|
|
|
|
func (t Processor) NewDesiredSet(owner runtime.Object, objs *ObjectSet) *DesiredSet {
|
|
if objs == nil {
|
|
objs = &ObjectSet{}
|
|
}
|
|
return &DesiredSet{
|
|
objs: objs,
|
|
setID: t.setID,
|
|
codeVersion: t.codeVersion,
|
|
clients: t.clients,
|
|
owner: owner,
|
|
}
|
|
}
|