private String updateOrCreateBuildConfig(BuildServiceConfig config, OpenShiftClient client, KubernetesListBuilder builder, ImageConfiguration imageConfig, String openshiftPullSecret) {
ImageName imageName = new ImageName(imageConfig.getName());
String buildName = getS2IBuildName(config, imageName);
String imageStreamName = getImageStreamName(imageName);
String outputImageStreamTag = imageStreamName + ":" + (imageName.getTag() != null ? imageName.getTag() : "latest");
BuildStrategy buildStrategyResource = createBuildStrategy(imageConfig, config.getOpenshiftBuildStrategy(), openshiftPullSecret);
BuildOutput buildOutput = new BuildOutputBuilder().withNewTo()
.withKind("ImageStreamTag")
.withName(outputImageStreamTag)
.endTo().build();
BuildConfig buildConfig = client.buildConfigs().withName(buildName).get();
if (buildConfig != null) {
BuildConfigSpec spec = getBuildConfigSpec(buildConfig);
validateSourceType(buildName, spec);
if (config.getBuildRecreateMode().isBuildConfig()) {
client.buildConfigs().withName(buildName).delete();
return createBuildConfig(builder, buildName, buildStrategyResource, buildOutput);
} else {
return updateBuildConfig(client, buildName, buildStrategyResource, buildOutput, spec);
}
} else {
return createBuildConfig(builder, buildName, buildStrategyResource, buildOutput);
}
}