@@ -47,6 +47,9 @@ public class ConfigService {
47
47
@ ConfigProperty (name = "config.gitlab.ref" , defaultValue = "master" )
48
48
String gitRef ;
49
49
50
+ @ ConfigProperty (name = "config.reload" )
51
+ boolean reloadConfig ;
52
+
50
53
ConfigMap hookConfigMap ;
51
54
ConfigMap configurationConfigMap ;
52
55
@@ -74,8 +77,10 @@ public class ConfigService {
74
77
*/
75
78
@ Scheduled (every = "30s" )
76
79
void reloadConfigMapData () {
77
- loadWebHookData ();
78
- loadConfigurationData ();
80
+ if (reloadConfig ) {
81
+ loadWebHookData ();
82
+ loadConfigurationData ();
83
+ }
79
84
}
80
85
81
86
/**
@@ -87,17 +92,16 @@ void loadWebHookData() {
87
92
// create config map
88
93
if (null == hookConfigMap ) {
89
94
hookConfigMap = ConfigMap .builder ().filePath (webHooksFile ).build ();
90
- LOGGER .trace ("setting webhook config map: {}" , hookConfigMap );
95
+ LOGGER .debug ("setting webhook config map: {}" , hookConfigMap );
91
96
}
92
97
93
98
// load content from file
94
99
if (hookConfigMap .updateMountedFile ()) {
95
- LOGGER .trace ("loading latest version of webhook file" );
96
100
97
101
// set hook config as list
98
102
if (hookConfigMap .getContent ().isPresent ()) {
99
103
hookConfigList = marshaller .fromYaml (hookConfigMap .getContent ().get (), HookConfig .class );
100
- LOGGER .debug ("Hook Config List {}" , hookConfigList );
104
+ LOGGER .debug ("Loaded Hook Config List {}" , hookConfigList );
101
105
}
102
106
103
107
// update web hooks
@@ -119,14 +123,20 @@ void updateWebHooksInGitLab() {
119
123
projects .stream ().filter (project -> project .getName ().equals (IAC ))
120
124
.filter (project -> !engagementIsArchived (project )).forEach (project -> {
121
125
126
+ Integer projectId = project .getId ();
127
+
122
128
LOGGER .debug ("updating project: {}" ,
123
- (null != project .getNamespace ()) ? project .getNamespace ().getFullPath () : project .getId ());
129
+ (null != project .getNamespace ()) ? project .getNamespace ().getFullPath () : projectId );
130
+
131
+ // remove existing webhooks for project
132
+ hookService .deleteProjectHooks (projectId );
124
133
134
+ // create hooks from configuration
125
135
hookConfigs .stream ().forEach (hookC -> {
126
- Hook hook = Hook .builder ().projectId (project . getId () ).pushEvents (true ).url (hookC .getBaseUrl ())
136
+ Hook hook = Hook .builder ().projectId (projectId ).pushEvents (true ).url (hookC .getBaseUrl ())
127
137
.token (hookC .getToken ()).build ();
128
- LOGGER .debug ("\t updating webhook {}" , hook .getUrl ());
129
- Response response = hookService .createOrUpdateProjectHook ( project . getId () , hook );
138
+ LOGGER .debug ("\t creating webhook {}" , hook .getUrl ());
139
+ Response response = hookService .createProjectHook ( projectId , hook );
130
140
LOGGER .debug ("\t \t service response code: {}" , response .getStatus ());
131
141
response .close ();
132
142
0 commit comments