in pkg/platform/defaults.go [327:435]
func setPlatformDefaults(p *v1.IntegrationPlatform, verbose bool) error {
if p.Status.Build.PublishStrategyOptions == nil {
log.Debugf("Integration Platform %s [%s]: setting publish strategy options", p.Name, p.Namespace)
p.Status.Build.PublishStrategyOptions = map[string]string{}
}
if p.Status.Build.RuntimeVersion == "" {
log.Debugf("Integration Platform %s [%s]: setting runtime version", p.Name, p.Namespace)
p.Status.Build.RuntimeVersion = defaults.DefaultRuntimeVersion
}
if p.Status.Build.BaseImage == "" {
log.Debugf("Integration Platform %s [%s]: setting base image", p.Name, p.Namespace)
p.Status.Build.BaseImage = defaults.BaseImage()
// Workaround to ensure the default image from buildah is full name. Any baseImage override is in charge of it's validity
if p.Status.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyBuildah && defaults.IsBaseImageDefault() {
p.Status.Build.BaseImage = builder.BuildahDefaultBaseImageName
}
}
if p.Status.Build.Maven.LocalRepository == "" {
log.Debugf("Integration Platform %s [%s]: setting local repository", p.Name, p.Namespace)
p.Status.Build.Maven.LocalRepository = defaults.LocalRepository
}
if len(p.Status.Build.Maven.CLIOptions) == 0 {
log.Debugf("Integration Platform %s [%s]: setting CLI options", p.Name, p.Namespace)
p.Status.Build.Maven.CLIOptions = []string{
"-V",
"--no-transfer-progress",
"-Dstyle.color=never",
}
}
if _, ok := p.Status.Build.PublishStrategyOptions[builder.KanikoPVCName]; !ok {
log.Debugf("Integration Platform %s [%s]: setting publish strategy options", p.Name, p.Namespace)
p.Status.Build.PublishStrategyOptions[builder.KanikoPVCName] = p.Name
}
// Build timeout
if p.Status.Build.GetTimeout().Duration == 0 {
p.Status.Build.Timeout = &metav1.Duration{
Duration: 5 * time.Minute,
}
} else {
d := p.Status.Build.GetTimeout().Duration.Truncate(time.Second)
if verbose && p.Status.Build.GetTimeout().Duration != d {
log.Log.Infof("Build timeout minimum unit is sec (configured: %s, truncated: %s)", p.Status.Build.GetTimeout().Duration, d)
}
log.Debugf("Integration Platform %s [%s]: setting build timeout", p.Name, p.Namespace)
p.Status.Build.Timeout = &metav1.Duration{
Duration: d,
}
}
// Catalog tools build timeout
if p.Status.Build.GetBuildCatalogToolTimeout().Duration == 0 {
log.Debugf("Integration Platform %s [%s]: setting default build camel catalog tool timeout (1 minute)", p.Name, p.Namespace)
p.Status.Build.BuildCatalogToolTimeout = &metav1.Duration{
Duration: 1 * time.Minute,
}
} else {
d := p.Status.Build.GetBuildCatalogToolTimeout().Duration.Truncate(time.Second)
if verbose && p.Status.Build.GetBuildCatalogToolTimeout().Duration != d {
log.Log.Infof("Build catalog tools timeout minimum unit is sec (configured: %s, truncated: %s)", p.Status.Build.GetBuildCatalogToolTimeout().Duration, d)
}
log.Debugf("Integration Platform %s [%s]: setting build catalog tools timeout", p.Name, p.Namespace)
p.Status.Build.BuildCatalogToolTimeout = &metav1.Duration{
Duration: d,
}
}
if p.Status.Build.MaxRunningBuilds <= 0 {
log.Debugf("Integration Platform %s [%s]: setting max running builds", p.Name, p.Namespace)
if p.Status.Build.BuildConfiguration.Strategy == v1.BuildStrategyRoutine {
p.Status.Build.MaxRunningBuilds = 3
} else if p.Status.Build.BuildConfiguration.Strategy == v1.BuildStrategyPod {
p.Status.Build.MaxRunningBuilds = 10
}
}
_, cacheEnabled := p.Status.Build.PublishStrategyOptions[builder.KanikoBuildCacheEnabled]
if p.Status.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyKaniko && !cacheEnabled {
// Default to disabling Kaniko cache warmer
// Using the cache warmer pod seems unreliable with the current Kaniko version
// and requires relying on a persistent volume.
defaultKanikoBuildCache := "false"
p.Status.Build.PublishStrategyOptions[builder.KanikoBuildCacheEnabled] = defaultKanikoBuildCache
if verbose {
log.Log.Infof("Kaniko cache set to %s", defaultKanikoBuildCache)
}
}
if len(p.Status.Kamelet.Repositories) == 0 {
log.Debugf("Integration Platform %s [%s]: setting kamelet repositories", p.Name, p.Namespace)
p.Status.Kamelet.Repositories = append(p.Status.Kamelet.Repositories, v1.IntegrationPlatformKameletRepositorySpec{
URI: repository.DefaultRemoteRepository,
})
}
setStatusAdditionalInfo(p)
if verbose {
log.Log.Infof("RuntimeVersion set to %s", p.Status.Build.RuntimeVersion)
log.Log.Infof("BaseImage set to %s", p.Status.Build.BaseImage)
log.Log.Infof("LocalRepository set to %s", p.Status.Build.Maven.LocalRepository)
log.Log.Infof("Timeout set to %s", p.Status.Build.GetTimeout())
}
return nil
}