@@ -8,9 +8,11 @@ import (
88"fmt"
99"time"
1010
11+ "k8s.io/apimachinery/pkg/api/meta"
1112metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
13+ "k8s.io/client-go/discovery"
14+ "k8s.io/client-go/dynamic"
1215"k8s.io/klog/v2"
13- cmdutil "k8s.io/kubectl/pkg/cmd/util"
1416"sigs.k8s.io/cli-utils/pkg/apis/actuation"
1517"sigs.k8s.io/cli-utils/pkg/apply/cache"
1618"sigs.k8s.io/cli-utils/pkg/apply/event"
@@ -26,41 +28,16 @@ import (
2628"sigs.k8s.io/cli-utils/pkg/object/validation"
2729)
2830
29- // NewDestroyer returns a new destroyer. It will set up the ApplyOptions and
30- // PruneOptions which are responsible for capturing any command line flags.
31- // It currently requires IOStreams, but this is a legacy from when
32- // the ApplyOptions were responsible for printing progress. This is now
33- // handled by a separate printer with the KubectlPrinterAdapter bridging
34- // between the two.
35- func NewDestroyer (factory cmdutil.Factory , invClient inventory.Client ) (* Destroyer , error ) {
36- pruner , err := prune .NewPruner (factory , invClient )
37- if err != nil {
38- return nil , fmt .Errorf ("error setting up PruneOptions: %w" , err )
39- }
40- client , err := factory .DynamicClient ()
41- if err != nil {
42- return nil , err
43- }
44- mapper , err := factory .ToRESTMapper ()
45- if err != nil {
46- return nil , err
47- }
48- statusWatcher := watcher .NewDefaultStatusWatcher (client , mapper )
49- return & Destroyer {
50- pruner : pruner ,
51- statusWatcher : statusWatcher ,
52- factory : factory ,
53- invClient : invClient ,
54- }, nil
55- }
56-
5731// Destroyer performs the step of grabbing all the previous inventory objects and
5832// prune them. This also deletes all the previous inventory objects
5933type Destroyer struct {
6034pruner * prune.Pruner
6135statusWatcher watcher.StatusWatcher
62- factory cmdutil.Factory
6336invClient inventory.Client
37+ mapper meta.RESTMapper
38+ client dynamic.Interface
39+ openAPIGetter discovery.OpenAPISchemaInterface
40+ infoHelper info.Helper
6441}
6542
6643type DestroyerOptions struct {
@@ -112,18 +89,13 @@ func (d *Destroyer) Run(ctx context.Context, invInfo inventory.Info, options Des
11289handleError (eventChannel , err )
11390return
11491}
115- mapper , err := d .factory .ToRESTMapper ()
116- if err != nil {
117- handleError (eventChannel , err )
118- return
119- }
12092
12193// Validate the resources to make sure we catch those problems early
12294// before anything has been updated in the cluster.
12395vCollector := & validation.Collector {}
12496validator := & validation.Validator {
12597Collector : vCollector ,
126- Mapper : mapper ,
98+ Mapper : d . mapper ,
12799}
128100validator .Validate (deleteObjs )
129101
@@ -132,11 +104,6 @@ func (d *Destroyer) Run(ctx context.Context, invInfo inventory.Info, options Des
132104taskContext := taskrunner .NewTaskContext (eventChannel , resourceCache )
133105
134106klog .V (4 ).Infoln ("destroyer building task queue..." )
135- dynamicClient , err := d .factory .DynamicClient ()
136- if err != nil {
137- handleError (eventChannel , err )
138- return
139- }
140107deleteFilters := []filter.ValidationFilter {
141108filter.PreventRemoveFilter {},
142109filter.InventoryPolicyPruneFilter {
@@ -151,10 +118,10 @@ func (d *Destroyer) Run(ctx context.Context, invInfo inventory.Info, options Des
151118}
152119taskBuilder := & solver.TaskQueueBuilder {
153120Pruner : d .pruner ,
154- DynamicClient : dynamicClient ,
155- OpenAPIGetter : d .factory . OpenAPIGetter () ,
156- InfoHelper : info . NewHelper ( mapper , d . factory . UnstructuredClientForMapping ) ,
157- Mapper : mapper ,
121+ DynamicClient : d . client ,
122+ OpenAPIGetter : d .openAPIGetter ,
123+ InfoHelper : d . infoHelper ,
124+ Mapper : d . mapper ,
158125InvClient : d .invClient ,
159126Collector : vCollector ,
160127PruneFilters : deleteFilters ,
0 commit comments