in pkg/controller/integrationplatform/monitor.go [50:140]
func (action *monitorAction) Handle(ctx context.Context, platform *v1.IntegrationPlatform) (*v1.IntegrationPlatform, error) {
runtimeVersion := specOrDefault(platform.Spec.Build.RuntimeVersion)
if platform.Status.Build.RuntimeVersion != runtimeVersion {
action.L.Infof("IntegrationPlatform version updated from %s to %s", platform.Status.Build.RuntimeVersion, runtimeVersion)
// Reset the status to reinitialize the resource
platform.Status = v1.IntegrationPlatformStatus{}
return platform, nil
}
// Sync status configuration
if err := platformutil.ConfigureDefaults(ctx, action.client, platform, false); err != nil {
return nil, err
}
// Get the information about Camel version in the catalog
runtimeSpec := v1.RuntimeSpec{
Version: platform.Status.Build.RuntimeVersion,
Provider: platform.Status.Build.RuntimeProvider,
}
catalog, err := loadCatalog(ctx, action.client, platform.Namespace, runtimeSpec)
if catalog == nil || err != nil {
// error, a catalog must be available
platform.Status.Phase = v1.IntegrationPlatformPhaseError
platform.Status.SetCondition(
v1.IntegrationPlatformConditionCamelCatalogAvailable,
corev1.ConditionFalse,
v1.IntegrationPlatformConditionCamelCatalogAvailableReason,
fmt.Sprintf("camel catalog %s not available, please review given runtime version", runtimeSpec.Version))
return platform, err
}
// So far the ITP is good
platform.Status.Phase = v1.IntegrationPlatformPhaseReady
platform.Status.Build.RuntimeCoreVersion = catalog.Spec.GetCamelVersion()
// Registry condition
isOpenshift, err := openshift.IsOpenShift(action.client)
if err != nil {
return platform, err
}
//nolint: nestif
if isOpenshift && platform.Status.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyS2I {
platform.Status.SetCondition(
v1.IntegrationPlatformConditionTypeRegistryAvailable,
corev1.ConditionFalse,
v1.IntegrationPlatformConditionTypeRegistryAvailableReason,
"registry not available because provided by Openshift S2I")
action.L.Infof("WARN: S2I publishing strategy is deprecated and may be removed in the future, use Jib strategy instead")
platform.Status.SetCondition(
"S2IPublishingStrategyDeprecated",
corev1.ConditionTrue,
"PublishingStrategyDeprecationNoticeReason",
"S2I publishing strategy is deprecated and may be removed in the future, use Jib strategy instead")
} else {
if platform.Status.Build.Registry.Address == "" {
// error, we need a registry if we're not on Openshift
platform.Status.Phase = v1.IntegrationPlatformPhaseError
platform.Status.SetCondition(
v1.IntegrationPlatformConditionTypeRegistryAvailable,
corev1.ConditionFalse,
v1.IntegrationPlatformConditionTypeRegistryAvailableReason,
"registry address not available, you need to set one")
} else {
platform.Status.SetCondition(
v1.IntegrationPlatformConditionTypeRegistryAvailable,
corev1.ConditionTrue,
v1.IntegrationPlatformConditionTypeRegistryAvailableReason,
fmt.Sprintf("registry available at %s", platform.Status.Build.Registry.Address))
// Warn if insecure registry
if platform.Status.Build.Registry.Insecure {
platform.Status.SetCondition(
v1.IntegrationPlatformConditionType("InsecureRegistryWarning"),
corev1.ConditionTrue,
"InsecureRegistryWarningReason",
"Registry is insecure. This setup should not be used in a production environment.")
action.L.Infof(
"WARN: provided container registry is insecure. This setup should not be used in a production environment.",
)
}
}
}
action.checkTraitAnnotationsDeprecatedNotice(platform)
action.checkMavenSettings(platform)
if err = action.addPlainQuarkusCatalog(ctx, catalog); err != nil {
// Only warn the user, we don't want to fail
action.L.Infof(
"WARN: the operator wasn't able to clone %s catalog. You won't be able to run a plain Quarkus runtime provider.",
catalog.Name,
)
}
return platform, nil
}