-
Notifications
You must be signed in to change notification settings - Fork 186
/
common.go
106 lines (86 loc) · 3.01 KB
/
common.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/*
Copyright 2020 The Tekton Authors
Licensed 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 v1alpha1
import (
"os"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"knative.dev/pkg/apis"
)
const (
// InstallSucceeded is a Condition indiciating that the installation of the component
// itself has been successful.
InstallSucceeded apis.ConditionType = "InstallSucceeded"
)
// TektonComponent is a common interface for accessing meta, spec and status of all known types.
type TektonComponent interface {
metav1.Object
schema.ObjectKind
// GetSpec returns the common spec for all known types.
GetSpec() TektonComponentSpec
// GetStatus returns the common status of all known types.
GetStatus() TektonComponentStatus
}
// TektonComponentSpec is a common interface for accessing the common spec of all known types.
type TektonComponentSpec interface {
// GetTargetNamespace gets the version to be installed
GetTargetNamespace() string
}
// TektonComponentStatus is a common interface for status mutations of all known types.
type TektonComponentStatus interface {
MarkNotReady(string)
MarkInstallerSetReady()
MarkInstallerSetNotReady(string)
MarkInstallerSetAvailable()
MarkPreReconcilerFailed(string)
MarkPostReconcilerFailed(string)
// GetVersion gets the currently installed version of the component.
GetVersion() string
// SetVersion sets the currently installed version of the component.
SetVersion(version string)
// IsReady return true if all conditions are satisfied
IsReady() bool
// ConditionAccessor Implement to interact with a condition
apis.ConditionAccessor
}
// CommonSpec unifies common fields and functions on the Spec.
type CommonSpec struct {
// TargetNamespace is where resources will be installed
// +optional
TargetNamespace string `json:"targetNamespace,omitempty"`
}
// GetTargetNamespace implements KComponentSpec.
func (c *CommonSpec) GetTargetNamespace() string {
return c.TargetNamespace
}
// Param declares an string value to use for the parameter called name.
type Param struct {
Name string `json:"name,omitempty"`
Value string `json:"value,omitempty"`
}
// ParamValue defines a default value and possible values for a param
type ParamValue struct {
Default string
Possible []string
}
// ParseParams returns the params array as map
func ParseParams(params []Param) map[string]string {
paramsMap := map[string]string{}
for _, p := range params {
paramsMap[p.Name] = p.Value
}
return paramsMap
}
func IsOpenShiftPlatform() bool {
return os.Getenv("PLATFORM") == "openshift"
}