1
2
3
4
5 package prune
6
7 import (
8 "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
9 "sigs.k8s.io/cli-utils/pkg/apply/event"
10 "sigs.k8s.io/cli-utils/pkg/object"
11 )
12
13
14
15 type EventFactory interface {
16 CreateSuccessEvent(obj *unstructured.Unstructured) event.Event
17 CreateSkippedEvent(obj *unstructured.Unstructured, err error) event.Event
18 CreateFailedEvent(id object.ObjMetadata, err error) event.Event
19 }
20
21
22
23 func CreateEventFactory(isDelete bool, groupName string) EventFactory {
24 if isDelete {
25 return DeleteEventFactory{
26 groupName: groupName,
27 }
28 }
29 return PruneEventFactory{
30 groupName: groupName,
31 }
32 }
33
34
35
36
37
38 type PruneEventFactory struct {
39 groupName string
40 }
41
42 func (pef PruneEventFactory) CreateSuccessEvent(obj *unstructured.Unstructured) event.Event {
43 return event.Event{
44 Type: event.PruneType,
45 PruneEvent: event.PruneEvent{
46 GroupName: pef.groupName,
47 Status: event.PruneSuccessful,
48 Object: obj,
49 Identifier: object.UnstructuredToObjMetadata(obj),
50 },
51 }
52 }
53
54 func (pef PruneEventFactory) CreateSkippedEvent(obj *unstructured.Unstructured, err error) event.Event {
55 return event.Event{
56 Type: event.PruneType,
57 PruneEvent: event.PruneEvent{
58 GroupName: pef.groupName,
59 Status: event.PruneSkipped,
60 Object: obj,
61 Identifier: object.UnstructuredToObjMetadata(obj),
62 Error: err,
63 },
64 }
65 }
66
67 func (pef PruneEventFactory) CreateFailedEvent(id object.ObjMetadata, err error) event.Event {
68 return event.Event{
69 Type: event.PruneType,
70 PruneEvent: event.PruneEvent{
71 GroupName: pef.groupName,
72 Status: event.PruneFailed,
73 Identifier: id,
74 Error: err,
75 },
76 }
77 }
78
79
80
81 type DeleteEventFactory struct {
82 groupName string
83 }
84
85 func (def DeleteEventFactory) CreateSuccessEvent(obj *unstructured.Unstructured) event.Event {
86 return event.Event{
87 Type: event.DeleteType,
88 DeleteEvent: event.DeleteEvent{
89 GroupName: def.groupName,
90 Status: event.DeleteSuccessful,
91 Object: obj,
92 Identifier: object.UnstructuredToObjMetadata(obj),
93 },
94 }
95 }
96
97 func (def DeleteEventFactory) CreateSkippedEvent(obj *unstructured.Unstructured, err error) event.Event {
98 return event.Event{
99 Type: event.DeleteType,
100 DeleteEvent: event.DeleteEvent{
101 GroupName: def.groupName,
102 Status: event.DeleteSkipped,
103 Object: obj,
104 Identifier: object.UnstructuredToObjMetadata(obj),
105 Error: err,
106 },
107 }
108 }
109
110 func (def DeleteEventFactory) CreateFailedEvent(id object.ObjMetadata, err error) event.Event {
111 return event.Event{
112 Type: event.DeleteType,
113 DeleteEvent: event.DeleteEvent{
114 GroupName: def.groupName,
115 Status: event.DeleteFailed,
116 Identifier: id,
117 Error: err,
118 },
119 }
120 }
121
View as plain text