@@ -83,7 +83,16 @@ func (o *CreateOptions) NewTransformationCmd() *cobra.Command {
8383func (o * CreateOptions ) transformation (name , target , file string , eventSourcesFilter , eventTypesFilter []string ) error {
8484 ctx := context .Background ()
8585 configDir := path .Join (o .ConfigBase , o .Context )
86- manifest := path .Join (configDir , manifestFile )
86+ manifestFile := path .Join (configDir , manifestFile )
87+
88+ var targetPort string
89+ if target != "" {
90+ port , err := o .lookupTarget (ctx , target )
91+ if err != nil {
92+ return err
93+ }
94+ targetPort = port
95+ }
8796
8897 for _ , source := range eventSourcesFilter {
8998 et , err := o .producersEventTypes (source )
@@ -117,7 +126,7 @@ func (o *CreateOptions) transformation(name, target, file string, eventSourcesFi
117126 }
118127 }
119128 log .Println ("Updating manifest" )
120- restart , err := triggermesh .WriteObject (ctx , t , manifest )
129+ restart , err := triggermesh .WriteObject (t , manifestFile )
121130 if err != nil {
122131 return err
123132 }
@@ -127,29 +136,38 @@ func (o *CreateOptions) transformation(name, target, file string, eventSourcesFi
127136 return err
128137 }
129138
130- var targetFilters []tmbroker.Filter
139+ var targetTriggers []tmbroker.Trigger
131140 if target != "" {
132141 transformationEventTypes , err := t .GetEventTypes ()
133142 if err != nil {
134143 return fmt .Errorf ("transformation event type: %w" , err )
135144 }
136- if targetFilters , err = o .updateTarget (ctx , target , transformationEventTypes ); err != nil {
145+ if targetTriggers , err = o .updateTarget (target , targetPort , transformationEventTypes ); err != nil {
137146 return fmt .Errorf ("updating target: %w" , err )
138147 }
139148 }
140149
141- var filters []tmbroker.Filter
142150 if len (eventTypesFilter ) != 0 {
143- filters = []tmbroker.Filter {tmbroker .FilterType (eventTypesFilter )}
144- } else if len (targetFilters ) != 0 {
145- filters = targetFilters
146- }
147- if len (filters ) != 0 {
148151 log .Println ("Creating trigger" )
149- if err := o .createTrigger ("" , container .Name , container .HostPort (), filters ... ); err != nil {
152+ if err := o .createTrigger ("" , container .Name , container .HostPort (), []tmbroker. Filter { tmbroker . FilterType ( eventTypesFilter )} ... ); err != nil {
150153 return err
151154 }
155+ for _ , trigger := range targetTriggers {
156+ if err := trigger .RemoveTriggerFromConfig (); err != nil {
157+ return err
158+ }
159+ if err := triggermesh .RemoveObject (trigger .Name , manifestFile ); err != nil {
160+ return err
161+ }
162+ }
163+ } else {
164+ for _ , trigger := range targetTriggers {
165+ if err := o .createTrigger (trigger .Name , container .Name , container .HostPort (), trigger .Filters ... ); err != nil {
166+ return err
167+ }
168+ }
152169 }
170+
153171 output .PrintStatus ("consumer" , t , eventSourcesFilter , eventTypesFilter )
154172 return nil
155173}
@@ -179,43 +197,38 @@ func readInput() (string, error) {
179197 return lines , scn .Err ()
180198}
181199
182- func (o * CreateOptions ) updateTarget (ctx context.Context , target string , transformationEventTypes [] string ) ([]tmbroker. Filter , error ) {
200+ func (o * CreateOptions ) lookupTarget (ctx context.Context , target string ) (string , error ) {
183201 manifest := path .Join (o .ConfigBase , o .Context , manifestFile )
184202 targetObject , err := o .getObject (target , manifest )
185203 if err != nil {
186- return []tmbroker. Filter {} , fmt .Errorf ("transformation target: %w" , err )
204+ return "" , fmt .Errorf ("transformation target: %w" , err )
187205 }
188206 consumer , ok := targetObject .(triggermesh.Consumer )
189207 if ! ok {
190- return []tmbroker.Filter {}, fmt .Errorf ("%q is not an event consumer" , target )
191- }
192- targetPort , err := consumer .GetPort (ctx )
193- if err != nil {
194- return []tmbroker.Filter {}, fmt .Errorf ("target port: %w" , err )
208+ return "" , fmt .Errorf ("%q is not an event consumer" , target )
195209 }
210+ return consumer .GetPort (ctx )
211+ }
212+
213+ func (o * CreateOptions ) updateTarget (target , targetPort string , transformationEventTypes []string ) ([]tmbroker.Trigger , error ) {
196214 broker , err := tmbroker .New (o .Context , path .Join (o .ConfigBase , o .Context ))
197215 if err != nil {
198- return []tmbroker.Filter {}, fmt .Errorf ("broker: %w" , err )
216+ return []tmbroker.Trigger {}, fmt .Errorf ("broker: %w" , err )
199217 }
200218 triggers , err := broker .GetTriggers ()
201219 if err != nil {
202- return []tmbroker.Filter {}, fmt .Errorf ("triggers: %w" , err )
220+ return []tmbroker.Trigger {}, fmt .Errorf ("triggers: %w" , err )
203221 }
204- var triggerExisted bool
205- var targetFilters []tmbroker.Filter
206- for triggerName , triggerToTarget := range triggers {
222+ var targetTriggers []tmbroker.Trigger
223+ for name , triggerToTarget := range triggers {
207224 if target == triggerToTarget .GetTarget ().Component {
208- triggerExisted = true
209- targetFilters = append (targetFilters , triggerToTarget .GetFilters ()... )
210- if err := o .createTrigger (triggerName , target , targetPort , tmbroker .FilterType (transformationEventTypes )); err != nil {
211- return []tmbroker.Filter {}, fmt .Errorf ("update trigger: %w" , err )
212- }
225+ triggerToTarget .Name = name
226+ triggerToTarget .BrokerConfigDir = path .Join (o .ConfigBase , o .Context )
227+ targetTriggers = append (targetTriggers , triggerToTarget )
213228 }
214229 }
215- if ! triggerExisted {
216- if err := o .createTrigger ("" , target , targetPort , tmbroker .FilterType (transformationEventTypes )); err != nil {
217- return []tmbroker.Filter {}, fmt .Errorf ("create trigger: %w" , err )
218- }
230+ if err := o .createTrigger ("" , target , targetPort , tmbroker .FilterType (transformationEventTypes )); err != nil {
231+ return []tmbroker.Trigger {}, fmt .Errorf ("create trigger: %w" , err )
219232 }
220- return targetFilters , nil
233+ return targetTriggers , nil
221234}
0 commit comments