blob: f17897ede86ec944ef642f75ee28411b0ad97fc1 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package metadata
const (
Domain = "sonataflow.org"
Key = Domain + "/key"
Name = Domain + "/name"
Description = Domain + "/description"
ExpressionLang = Domain + "/expressionLang"
Version = Domain + "/version"
Label = Domain + "/label"
Profile = Domain + "/profile"
SecondaryPlatformAnnotation = Domain + "/secondary.platform"
OperatorIDAnnotation = Domain + "/operator.id"
RestartedAt = Domain + "/restartedAt"
Checksum = Domain + "/checksum-config"
)
const (
// DefaultExpressionLang is the default serverless workflow specification language
DefaultExpressionLang = "jq"
// SpecVersion is the current CNCF Serverless Workflow version supported by the operator
SpecVersion = "0.8"
)
type QuarkusProfileType string
func (p QuarkusProfileType) String() string {
return string(p)
}
const (
// QuarkusDevProfile the profile used by quarkus in devmode
QuarkusDevProfile QuarkusProfileType = "dev"
// QuarkusProdProfile the profile used by quarkus in an immutable image
QuarkusProdProfile QuarkusProfileType = "prod"
)
type ProfileType string
func (p ProfileType) String() string {
return string(p)
}
const (
// DevProfile deploys a mutable workflow that can be changed based on .spec.flow definitions CR change.
DevProfile ProfileType = "dev"
// Deprecated: use PreviewProfile.
ProdProfile ProfileType = "prod"
// PreviewProfile is the default profile if none is set.
// The operator will use the platform to do a minimal image build for users to preview an immutable app deployed in the cluster.
// Not suitable for production use cases since the managed build has configuration and resources limitations.
PreviewProfile ProfileType = "preview"
// GitOpsProfile signs the operator that the application image is built externally, skipping any internal managed build.
// Ideally used in production use cases
GitOpsProfile ProfileType = "gitops"
)
const (
DefaultProfile = PreviewProfile
)
// deprecated prod profile is deprecate and not supported, use preview profile
var supportedProfiles = map[ProfileType]ProfileType{DevProfile: DevProfile, PreviewProfile: PreviewProfile, GitOpsProfile: GitOpsProfile}
func GetProfileOrDefault(annotation map[string]string) ProfileType {
if annotation == nil {
return DefaultProfile
}
if profile, ok := supportedProfiles[ProfileType(annotation[Profile])]; !ok {
return DefaultProfile
} else {
return profile
}
}
func (p ProfileType) isValidProfile() bool {
_, ok := supportedProfiles[p]
return ok
}
func IsDevProfile(annotation map[string]string) bool {
if annotation == nil {
return false
}
if len(annotation[Profile]) == 0 {
return false
}
return ProfileType(annotation[Profile]) == DevProfile
}