This repository has been archived by the owner on Nov 8, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy pathedgex_types.go
121 lines (96 loc) · 4 KB
/
edgex_types.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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*
Copyright 2021.
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 (
appsv1 "k8s.io/api/apps/v1"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
)
const (
// name of finalizer
EdgexFinalizer = "edgex.edgexfoundry.org"
LabelEdgeXGenerate = "www.edgexfoundry.org/generate"
)
// DeploymentTemplateSpec defines the pool template of Deployment.
type DeploymentTemplateSpec struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec appsv1.DeploymentSpec `json:"spec"`
}
// DeploymentTemplateSpec defines the pool template of Deployment.
type ServiceTemplateSpec struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec corev1.ServiceSpec `json:"spec"`
}
// EdgeXSpec defines the desired state of EdgeX
type EdgeXSpec struct {
Version string `json:"version,omitempty"`
ImageRegistry string `json:"imageRegistry,omitempty"`
PoolName string `json:"poolName,omitempty"`
ServiceType corev1.ServiceType `json:"serviceType,omitempty"`
// +optional
AdditionalService []ServiceTemplateSpec `json:"additionalServices,omitempty"`
// +optional
AdditionalDeployment []DeploymentTemplateSpec `json:"additionalDeployments,omitempty"`
}
// EdgeXStatus defines the observed state of EdgeX
type EdgeXStatus struct {
// +optional
Ready bool `json:"ready,omitempty"`
// +optional
Initialized bool `json:"initialized,omitempty"`
// +optional
ServiceReplicas int32 `json:"serviceReplicas,omitempty"`
// +optional
ServiceReadyReplicas int32 `json:"serviceReadyReplicas,omitempty"`
// +optional
DeploymentReplicas int32 `json:"deploymentReplicas,omitempty"`
// +optional
DeploymentReadyReplicas int32 `json:"deploymentReadyReplicas,omitempty"`
// Current Edgex state
// +optional
Conditions clusterv1.Conditions `json:"conditions,omitempty"`
}
//+kubebuilder:object:root=true
//+kubebuilder:subresource:status
//+kubebuilder:resource:path=edgexes
//+kubebuilder:resource:shortName=edgex
//+kubebuilder:printcolumn:name="READY",type="boolean",JSONPath=".status.ready",description="The edgex ready status"
//+kubebuilder:printcolumn:name="Service",type="integer",JSONPath=".status.serviceReplicas",description="The Service Replica."
//+kubebuilder:printcolumn:name="ReadyService",type="integer",JSONPath=".status.serviceReadyReplicas",description="The Ready Service Replica."
//+kubebuilder:printcolumn:name="Deployment",type="integer",JSONPath=".status.deploymentReplicas",description="The Deployment Replica."
//+kubebuilder:printcolumn:name="ReadyDeployment",type="integer",JSONPath=".status.deploymentReadyReplicas",description="The Ready Deployment Replica."
//+kubebuilder:deprecatedversion:warning="device.openyurt.io/v1alpha1 EdgeX will be deprecated in future; use device.openyurt.io/v1alpha2 EdgeX; v1alpha1 EdgeX.Spec.ServiceType only support ClusterIP"
// EdgeX is the Schema for the edgexes API
type EdgeX struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec EdgeXSpec `json:"spec,omitempty"`
Status EdgeXStatus `json:"status,omitempty"`
}
func (c *EdgeX) GetConditions() clusterv1.Conditions {
return c.Status.Conditions
}
func (c *EdgeX) SetConditions(conditions clusterv1.Conditions) {
c.Status.Conditions = conditions
}
//+kubebuilder:object:root=true
// EdgeXList contains a list of EdgeX
type EdgeXList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []EdgeX `json:"items"`
}
func init() {
SchemeBuilder.Register(&EdgeX{}, &EdgeXList{})
}