func()

in pkg/cmd/install.go [474:614]


func (o *installCmdOptions) setupIntegrationPlatform(c client.Client, namespace string, platformName string, registrySecretName string,
	output *kubernetes.Collection,
) (*v1.IntegrationPlatform, error) {
	platform, err := install.NewPlatform(o.Context, c, o.ClusterType, o.SkipRegistrySetup, o.registry, platformName)
	if err != nil {
		return nil, err
	}

	if registrySecretName != "" {
		platform.Spec.Build.Registry.Secret = registrySecretName
	}

	if len(o.MavenProperties) > 0 {
		platform.Spec.Build.Maven.Properties = make(map[string]string)
		for _, property := range o.MavenProperties {
			kv := strings.Split(property, "=")
			if len(kv) == 2 {
				platform.Spec.Build.Maven.Properties[kv[0]] = kv[1]
			}
		}
	}

	if size := len(o.MavenExtensions); size > 0 {
		platform.Spec.Build.Maven.Extension = make([]v1.MavenArtifact, 0, size)
		for _, extension := range o.MavenExtensions {
			gav := strings.Split(extension, ":")
			if len(gav) != 2 && len(gav) != 3 {
				msg := fmt.Sprintf("Maven build extension GAV must match <groupId>:<artifactId>:<version>, found: %s", extension)
				return nil, errors.New(msg)
			}
			ext := v1.MavenArtifact{
				GroupID:    gav[0],
				ArtifactID: gav[1],
			}
			if len(gav) == 3 {
				ext.Version = gav[2]
			}
			platform.Spec.Build.Maven.Extension = append(platform.Spec.Build.Maven.Extension, ext)
		}
	}

	if o.MavenLocalRepository != "" {
		platform.Spec.Build.Maven.LocalRepository = o.MavenLocalRepository
	}

	if len(o.MavenCLIOptions) > 0 {
		platform.Spec.Build.Maven.CLIOptions = o.MavenCLIOptions
	}

	if o.RuntimeVersion != "" {
		platform.Spec.Build.RuntimeVersion = o.RuntimeVersion
	}
	if o.BaseImage != "" {
		platform.Spec.Build.BaseImage = o.BaseImage
	}
	if o.BuildStrategy != "" {
		platform.Spec.Build.BuildConfiguration.Strategy = v1.BuildStrategy(o.BuildStrategy)
	}
	if o.BuildOrderStrategy != "" {
		platform.Spec.Build.BuildConfiguration.OrderStrategy = v1.BuildOrderStrategy(o.BuildOrderStrategy)
	}
	if o.BuildPublishStrategy != "" {
		platform.Spec.Build.PublishStrategy = v1.IntegrationPlatformBuildPublishStrategy(o.BuildPublishStrategy)
	}
	if o.BuildTimeout != "" {
		d, err := time.ParseDuration(o.BuildTimeout)
		if err != nil {
			return nil, err
		}

		platform.Spec.Build.Timeout = &metav1.Duration{
			Duration: d,
		}
	}
	if o.MaxRunningBuilds > 0 {
		platform.Spec.Build.MaxRunningBuilds = o.MaxRunningBuilds
	}

	if o.TraitProfile != "" {
		platform.Spec.Profile = v1.TraitProfileByName(o.TraitProfile)
	}

	if len(o.MavenRepositories) > 0 {
		settings, err := maven.NewSettings(maven.Repositories(o.MavenRepositories...), maven.DefaultRepositories)
		if err != nil {
			return nil, err
		}
		err = createDefaultMavenSettingsConfigMap(o.Context, c, namespace, platform.Name, settings)
		if err != nil {
			return nil, err
		}
		platform.Spec.Build.Maven.Settings.ConfigMapKeyRef = &corev1.ConfigMapKeySelector{
			LocalObjectReference: corev1.LocalObjectReference{
				Name: platform.Name + "-maven-settings",
			},
			Key: "settings.xml",
		}
	}

	if o.MavenSettings != "" {
		mavenSettings, err := v1.DecodeValueSource(o.MavenSettings, "settings.xml")
		if err != nil {
			return nil, err
		}
		platform.Spec.Build.Maven.Settings = mavenSettings
	}

	if o.MavenCASecret != "" {
		secret, err := decodeSecretKeySelector(o.MavenCASecret)
		if err != nil {
			return nil, err
		}
		platform.Spec.Build.Maven.CASecrets = append(platform.Spec.Build.Maven.CASecrets, *secret)
	}

	if o.ClusterType != "" {
		for _, c := range v1.AllIntegrationPlatformClusters {
			if strings.EqualFold(string(c), o.ClusterType) {
				platform.Spec.Cluster = c
			}
		}
	}
	// Always create a platform in the namespace where the operator is located
	err = install.ObjectOrCollect(o.Context, c, namespace, output, o.Force, platform)
	if err != nil {
		return nil, err
	}

	if err := install.IntegrationPlatformViewerRole(o.Context, c, namespace); err != nil && !k8serrors.IsAlreadyExists(err) {
		return nil, fmt.Errorf("error while installing global IntegrationPlatform viewer role: %w", err)
	}

	if o.ExampleSetup {
		err = install.ExampleOrCollect(o.Context, c, namespace, output, o.Force)
		if err != nil {
			return nil, err
		}
	}

	return platform, nil
}