@@ -50,6 +50,34 @@ func findService(client *opslevel.Client, registration ServiceRegistration) (*op
5050 return nil , false
5151}
5252
53+ func serviceNeedsUpdate (input opslevel.ServiceUpdateInput , service * opslevel.Service ) bool {
54+ if input .Name != "" && input .Name != service .Name {
55+ return true
56+ }
57+ if input .Product != "" && input .Product != service .Product {
58+ return true
59+ }
60+ if input .Description != "" && input .Description != service .Description {
61+ return true
62+ }
63+ if input .Language != "" && input .Language != service .Language {
64+ return true
65+ }
66+ if input .Framework != "" && input .Framework != service .Framework {
67+ return true
68+ }
69+ if input .Tier != "" && input .Tier != service .Tier .Alias {
70+ return true
71+ }
72+ if input .Lifecycle != "" && input .Lifecycle != service .Lifecycle .Alias {
73+ return true
74+ }
75+ if input .Owner != "" && input .Owner != service .Owner .Alias {
76+ return true
77+ }
78+ return false
79+ }
80+
5381func createService (client * opslevel.Client , registration ServiceRegistration ) (* opslevel.Service , error ) {
5482 serviceCreateInput := opslevel.ServiceCreateInput {
5583 Name : registration .Name ,
@@ -105,13 +133,17 @@ func updateService(client *opslevel.Client, registration ServiceRegistration, se
105133 } else if registration .Owner != "" {
106134 log .Warn ().Msgf ("[%s] Unable to find 'Team' with alias '%s'" , service .Name , registration .Owner )
107135 }
108- updatedService , updateServiceErr := client .UpdateService (updateServiceInput )
109- if updateServiceErr != nil {
110- log .Error ().Msgf ("[%s] Failed updating service\n \t REASON: %v" , service .Name , updateServiceErr .Error ())
111- } else {
112- if diff := cmp .Diff (service , updatedService ); diff != "" {
113- log .Info ().Msgf ("[%s] Updated Service - Diff:\n %s" , service .Name , diff )
136+ if serviceNeedsUpdate (updateServiceInput , service ) {
137+ updatedService , updateServiceErr := client .UpdateService (updateServiceInput )
138+ if updateServiceErr != nil {
139+ log .Error ().Msgf ("[%s] Failed updating service\n \t REASON: %v" , service .Name , updateServiceErr .Error ())
140+ } else {
141+ if diff := cmp .Diff (service , updatedService ); diff != "" {
142+ log .Info ().Msgf ("[%s] Updated Service - Diff:\n %s" , service .Name , diff )
143+ }
114144 }
145+ } else {
146+ log .Info ().Msgf ("[%s] No changes detected to fields - skipping update" , service .Name )
115147 }
116148}
117149
@@ -219,7 +251,7 @@ func handleRepositories(client *opslevel.Client, registration ServiceRegistratio
219251 repositoryCreate .Service = opslevel.IdentifierInput {Id : service .Id }
220252 _ , err := client .CreateServiceRepository (repositoryCreate )
221253 if err != nil {
222- log .Error ().Msgf ("[%s] Failed assigning repository '$ s'\n \t REASON: %v" , service .Name , repositoryAsString , err .Error ())
254+ log .Error ().Msgf ("[%s] Failed assigning repository '% s'\n \t REASON: %v" , service .Name , repositoryAsString , err .Error ())
223255 } else {
224256 log .Info ().Msgf ("[%s] Attached repository '%s'" , service .Name , repositoryAsString )
225257 }
0 commit comments