/
starrockswarehouse_types.go
95 lines (77 loc) · 3.39 KB
/
starrockswarehouse_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
/*
Copyright 2021-present, StarRocks Inc.
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 v1
import (
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.
// StarRocksWarehouseSpec defines the desired state of StarRocksWarehouse
type StarRocksWarehouseSpec struct {
// StarRocksCluster is the name of a StarRocksCluster which the warehouse belongs to.
StarRocksCluster string `json:"starRocksCluster"`
// Template define component configuration.
Template *WarehouseComponentSpec `json:"template"`
}
// WarehouseComponentSpec defines the desired state of component.
type WarehouseComponentSpec struct {
StarRocksComponentSpec `json:",inline"`
// +optional
// envVars is a slice of environment variables that are added to the pods, the default is empty.
EnvVars []corev1.EnvVar `json:"envVars,omitempty"`
// AutoScalingPolicy defines auto scaling policy
AutoScalingPolicy *AutoScalingPolicy `json:"autoScalingPolicy,omitempty"`
}
func (componentSpec *WarehouseComponentSpec) ToCnSpec() *StarRocksCnSpec {
return &StarRocksCnSpec{
StarRocksComponentSpec: componentSpec.StarRocksComponentSpec,
CnEnvVars: componentSpec.EnvVars,
AutoScalingPolicy: componentSpec.AutoScalingPolicy,
}
}
// WarehouseComponentStatus represents the status of component.
// +kubebuilder:object:generate=false
type WarehouseComponentStatus = StarRocksCnStatus
// StarRocksWarehouseStatus defines the observed state of StarRocksWarehouse.
type StarRocksWarehouseStatus struct {
*WarehouseComponentStatus `json:",inline"`
}
// StarRocksWarehouse defines a starrocks warehouse.
// +kubebuilder:object:root=true
// +kubebuilder:resource:shortName=warehouse
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:subresource:status
// +kubebuilder:printcolumn:name="status",type=string,JSONPath=`.status.phase`
// +kubebuilder:printcolumn:name="reason",type=string,JSONPath=`.status.reason`
// +kubebuilder:storageversion
// +k8s:openapi-gen=true
// +genclient
type StarRocksWarehouse struct {
metav1.TypeMeta `json:",inline"`
// +k8s:openapi-gen=false
metav1.ObjectMeta `json:"metadata,omitempty"`
// Spec represents the specification of desired state of a starrocks warehouse.
Spec StarRocksWarehouseSpec `json:"spec,omitempty"`
// Status represents the recent observed status of the starrocks warehouse.
Status StarRocksWarehouseStatus `json:"status,omitempty"`
}
// StarRocksWarehouseList contains a list of StarRocksWarehouse
// +kubebuilder:object:root=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +k8s:openapi-gen=true
type StarRocksWarehouseList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []StarRocksWarehouse `json:"items"`
}