Skip to content

Commit dce15ce

Browse files
committed
move hook mechanism to gop cli and rename validation to a proper name
1 parent 9b78e60 commit dce15ce

File tree

3 files changed

+20
-30
lines changed

3 files changed

+20
-30
lines changed

src/main/groovy/com/cloudogu/gitops/cli/GitopsPlaygroundCli.groovy

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ import ch.qos.logback.classic.encoder.PatternLayoutEncoder
77
import ch.qos.logback.classic.spi.ILoggingEvent
88
import ch.qos.logback.core.ConsoleAppender
99
import com.cloudogu.gitops.Application
10+
import com.cloudogu.gitops.Feature
1011
import com.cloudogu.gitops.config.ApplicationConfigurator
1112
import com.cloudogu.gitops.config.Config
1213
import com.cloudogu.gitops.config.schema.JsonSchemaValidator
1314
import com.cloudogu.gitops.destroy.Destroyer
1415
import com.cloudogu.gitops.utils.CommandExecutor
15-
import com.cloudogu.gitops.utils.FeatureUtils
1616
import com.cloudogu.gitops.utils.FileSystemUtils
1717
import com.cloudogu.gitops.utils.K8sClient
1818
import groovy.util.logging.Slf4j
@@ -21,9 +21,8 @@ import io.micronaut.context.ApplicationContext
2121
import org.slf4j.LoggerFactory
2222
import picocli.CommandLine
2323

24-
2524
import static com.cloudogu.gitops.config.ConfigConstants.APP_NAME
26-
import static com.cloudogu.gitops.utils.MapUtils.deepMerge
25+
import static com.cloudogu.gitops.utils.MapUtils.deepMerge
2726
/**
2827
* Provides the entrypoint to the application as well as all config parameters.
2928
* When changing parameters, make sure to update the Config for the config file as well
@@ -75,7 +74,7 @@ class GitopsPlaygroundCli {
7574
config = applicationConfigurator.initConfig(config)
7675
log.debug("Actual config: ${config.toYaml(true)}")
7776

78-
FeatureUtils.runHook(app, 'postConfigValidation', config)
77+
runHook(app, 'postConfigValidation', config)
7978
register(config, context)
8079

8180
if (config.application.destroy) {
@@ -213,7 +212,7 @@ class GitopsPlaygroundCli {
213212
new CommandLine(mergedConfig).parseArgs(args)
214213

215214
def app = ApplicationContext.run().getBean(Application)
216-
FeatureUtils.runHook(app, 'preConfigValidation', mergedConfig)
215+
runHook(app, 'preConfigValidation', mergedConfig)
217216

218217
return mergedConfig
219218
}
@@ -245,4 +244,18 @@ class GitopsPlaygroundCli {
245244
|----------------------------------------------------------------------------------------------|
246245
'''
247246
}
247+
248+
static void runHook(Application app, String methodName, def config) {
249+
250+
251+
252+
app.features.each { feature ->
253+
// Executing only the method if the derived feature class has implemented the passed specific hook method
254+
def mm = feature.metaClass.getMetaMethod(methodName, config)
255+
if (mm && mm.declaringClass.theClass != Feature) {
256+
log.debug("Executing ${methodName} hook on feature ${feature.class.name}")
257+
mm.invoke(feature, config)
258+
}
259+
}
260+
}
248261
}

src/main/groovy/com/cloudogu/gitops/config/ConfigValidator.groovy renamed to src/main/groovy/com/cloudogu/gitops/config/CommonFeatureConfig.groovy

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,10 @@ import jakarta.inject.Singleton
88
@Slf4j
99
@Singleton
1010
@Order(40)
11-
class ConfigValidator extends Feature {
12-
13-
ConfigValidator() {
14-
log.debug("Doing common pre/post config validation...")
15-
}
16-
11+
class CommonFeatureConfig extends Feature {
1712
@Override
1813
void preConfigValidation(Config configToSet) {
14+
log.debug("Doing common preConfigValidation")
1915
validateScmmAndJenkinsAreBothSet(configToSet)
2016
validateMirrorReposHelmChartFolderSet(configToSet)
2117
}

src/main/groovy/com/cloudogu/gitops/utils/FeatureUtils.groovy

Lines changed: 0 additions & 19 deletions
This file was deleted.

0 commit comments

Comments
 (0)