| /* |
| 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 v1 |
| |
| import ( |
| corev1 "k8s.io/api/core/v1" |
| metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" |
| ) |
| |
| // NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. |
| |
| // IntegrationPlatformSpec defines the desired state of IntegrationPlatform |
| type IntegrationPlatformSpec struct { |
| Cluster IntegrationPlatformCluster `json:"cluster,omitempty"` |
| Profile TraitProfile `json:"profile,omitempty"` |
| Build IntegrationPlatformBuildSpec `json:"build,omitempty"` |
| Resources IntegrationPlatformResourcesSpec `json:"resources,omitempty"` |
| Traits map[string]TraitSpec `json:"traits,omitempty"` |
| Configuration []ConfigurationSpec `json:"configuration,omitempty"` |
| } |
| |
| // IntegrationPlatformResourcesSpec contains platform related resources |
| type IntegrationPlatformResourcesSpec struct { |
| } |
| |
| // IntegrationPlatformStatus defines the observed state of IntegrationPlatform |
| type IntegrationPlatformStatus struct { |
| IntegrationPlatformSpec `json:",inline"` |
| |
| Phase IntegrationPlatformPhase `json:"phase,omitempty"` |
| Conditions []IntegrationPlatformCondition `json:"conditions,omitempty"` |
| Version string `json:"version,omitempty"` |
| } |
| |
| // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object |
| // +k8s:openapi-gen=true |
| // +genclient |
| // +kubebuilder:resource:path=integrationplatforms,scope=Namespaced,shortName=ip,categories=kamel;camel |
| // +kubebuilder:subresource:status |
| // +kubebuilder:printcolumn:name="Phase",type=string,JSONPath=`.status.phase`,description="The integration platform phase" |
| |
| // IntegrationPlatform is the Schema for the integrationplatforms API |
| type IntegrationPlatform struct { |
| metav1.TypeMeta `json:",inline"` |
| metav1.ObjectMeta `json:"metadata,omitempty"` |
| |
| Spec IntegrationPlatformSpec `json:"spec,omitempty"` |
| Status IntegrationPlatformStatus `json:"status,omitempty"` |
| } |
| |
| // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object |
| |
| // IntegrationPlatformList contains a list of IntegrationPlatform |
| type IntegrationPlatformList struct { |
| metav1.TypeMeta `json:",inline"` |
| metav1.ListMeta `json:"metadata,omitempty"` |
| Items []IntegrationPlatform `json:"items"` |
| } |
| |
| // IntegrationPlatformCluster is the kind of orchestration cluster the platform is installed into |
| type IntegrationPlatformCluster string |
| |
| const ( |
| // IntegrationPlatformClusterOpenShift is used when targeting a OpenShift cluster |
| IntegrationPlatformClusterOpenShift IntegrationPlatformCluster = "OpenShift" |
| // IntegrationPlatformClusterKubernetes is used when targeting a Kubernetes cluster |
| IntegrationPlatformClusterKubernetes IntegrationPlatformCluster = "Kubernetes" |
| ) |
| |
| // AllIntegrationPlatformClusters -- |
| var AllIntegrationPlatformClusters = []IntegrationPlatformCluster{IntegrationPlatformClusterOpenShift, IntegrationPlatformClusterKubernetes} |
| |
| // TraitProfile represents lists of traits that are enabled for the specific installation/integration |
| type TraitProfile string |
| |
| const ( |
| // TraitProfileOpenShift is used by default on OpenShift clusters |
| TraitProfileOpenShift TraitProfile = "OpenShift" |
| // TraitProfileKubernetes is used by default on Kubernetes clusters |
| TraitProfileKubernetes TraitProfile = "Kubernetes" |
| // TraitProfileKnative is used by default on OpenShift/Kubernetes clusters powered by Knative |
| TraitProfileKnative TraitProfile = "Knative" |
| // DefaultTraitProfile is the trait profile used as default when no other profile is set |
| DefaultTraitProfile = TraitProfileKubernetes |
| ) |
| |
| // AllTraitProfiles contains all allowed profiles |
| var AllTraitProfiles = []TraitProfile{TraitProfileKubernetes, TraitProfileKnative, TraitProfileOpenShift} |
| |
| // IntegrationPlatformBuildSpec contains platform related build information |
| type IntegrationPlatformBuildSpec struct { |
| BuildStrategy IntegrationPlatformBuildStrategy `json:"buildStrategy,omitempty"` |
| PublishStrategy IntegrationPlatformBuildPublishStrategy `json:"publishStrategy,omitempty"` |
| RuntimeVersion string `json:"runtimeVersion,omitempty"` |
| RuntimeProvider RuntimeProvider `json:"runtimeProvider,omitempty"` |
| BaseImage string `json:"baseImage,omitempty"` |
| Properties map[string]string `json:"properties,omitempty"` |
| Registry IntegrationPlatformRegistrySpec `json:"registry,omitempty"` |
| Timeout *metav1.Duration `json:"timeout,omitempty"` |
| PersistentVolumeClaim string `json:"persistentVolumeClaim,omitempty"` |
| Maven MavenSpec `json:"maven,omitempty"` |
| HTTPProxySecret string `json:"httpProxySecret,omitempty"` |
| KanikoBuildCache *bool `json:"kanikoBuildCache,omitempty"` |
| } |
| |
| // IntegrationPlatformRegistrySpec -- |
| type IntegrationPlatformRegistrySpec struct { |
| Insecure bool `json:"insecure,omitempty"` |
| Address string `json:"address,omitempty"` |
| Secret string `json:"secret,omitempty"` |
| CA string `json:"ca,omitempty"` |
| Organization string `json:"organization,omitempty"` |
| } |
| |
| // IntegrationPlatformBuildStrategy enumerates all implemented build strategies |
| type IntegrationPlatformBuildStrategy string |
| |
| const ( |
| // IntegrationPlatformBuildStrategyRoutine performs the build in a routine |
| IntegrationPlatformBuildStrategyRoutine IntegrationPlatformBuildStrategy = "routine" |
| // IntegrationPlatformBuildStrategyPod performs the build in a pod |
| IntegrationPlatformBuildStrategyPod IntegrationPlatformBuildStrategy = "pod" |
| ) |
| |
| // IntegrationPlatformBuildStrategies -- |
| var IntegrationPlatformBuildStrategies = []IntegrationPlatformBuildStrategy{ |
| IntegrationPlatformBuildStrategyRoutine, |
| IntegrationPlatformBuildStrategyPod, |
| } |
| |
| // IntegrationPlatformBuildPublishStrategy enumerates all implemented publish strategies |
| type IntegrationPlatformBuildPublishStrategy string |
| |
| const ( |
| // IntegrationPlatformBuildPublishStrategyBuildah -- |
| IntegrationPlatformBuildPublishStrategyBuildah IntegrationPlatformBuildPublishStrategy = "Buildah" |
| // IntegrationPlatformBuildPublishStrategyKaniko -- |
| IntegrationPlatformBuildPublishStrategyKaniko IntegrationPlatformBuildPublishStrategy = "Kaniko" |
| // IntegrationPlatformBuildPublishStrategyS2I -- |
| IntegrationPlatformBuildPublishStrategyS2I IntegrationPlatformBuildPublishStrategy = "S2I" |
| // IntegrationPlatformBuildPublishStrategySpectrum -- |
| IntegrationPlatformBuildPublishStrategySpectrum IntegrationPlatformBuildPublishStrategy = "Spectrum" |
| ) |
| |
| // IntegrationPlatformBuildPublishStrategies -- |
| var IntegrationPlatformBuildPublishStrategies = []IntegrationPlatformBuildPublishStrategy{ |
| IntegrationPlatformBuildPublishStrategyBuildah, |
| IntegrationPlatformBuildPublishStrategyKaniko, |
| IntegrationPlatformBuildPublishStrategyS2I, |
| IntegrationPlatformBuildPublishStrategySpectrum, |
| } |
| |
| // IntegrationPlatformPhase -- |
| type IntegrationPlatformPhase string |
| |
| // IntegrationPlatformConditionType -- |
| type IntegrationPlatformConditionType string |
| |
| const ( |
| // IntegrationPlatformKind -- |
| IntegrationPlatformKind string = "IntegrationPlatform" |
| |
| // IntegrationPlatformPhaseNone -- |
| IntegrationPlatformPhaseNone IntegrationPlatformPhase = "" |
| // IntegrationPlatformPhaseCreating -- |
| IntegrationPlatformPhaseCreating IntegrationPlatformPhase = "Creating" |
| // IntegrationPlatformPhaseWarming -- |
| IntegrationPlatformPhaseWarming IntegrationPlatformPhase = "Warming" |
| // IntegrationPlatformPhaseReady -- |
| IntegrationPlatformPhaseReady IntegrationPlatformPhase = "Ready" |
| // IntegrationPlatformPhaseError -- |
| IntegrationPlatformPhaseError IntegrationPlatformPhase = "Error" |
| // IntegrationPlatformPhaseDuplicate -- |
| IntegrationPlatformPhaseDuplicate IntegrationPlatformPhase = "Duplicate" |
| ) |
| |
| // IntegrationPlatformCondition describes the state of a resource at a certain point. |
| type IntegrationPlatformCondition struct { |
| // Type of integration condition. |
| Type IntegrationPlatformConditionType `json:"type"` |
| // Status of the condition, one of True, False, Unknown. |
| Status corev1.ConditionStatus `json:"status"` |
| // The last time this condition was updated. |
| LastUpdateTime metav1.Time `json:"lastUpdateTime,omitempty"` |
| // Last time the condition transitioned from one status to another. |
| LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty"` |
| // The reason for the condition's last transition. |
| Reason string `json:"reason,omitempty"` |
| // A human readable message indicating details about the transition. |
| Message string `json:"message,omitempty"` |
| } |