/
cstor_pool_instance.go
63 lines (51 loc) · 2.07 KB
/
cstor_pool_instance.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
/*
Copyright 2018 The OpenEBS 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 (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// +genclient
// +genclient:noStatus
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +resource:path=cstorpoolinstance
// CStorPoolInstance describes a cstor pool instance resource created as custom resource.
type CStorPoolInstance struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec CStorPoolInstanceSpec `json:"spec"`
Status CStorPoolStatus `json:"status"`
VersionDetails VersionDetails `json:"versionDetails"`
}
// CStorPoolInstanceSpec is the spec listing fields for a CStorPoolInstance resource.
type CStorPoolInstanceSpec struct {
// HostName is the name of kubernetes node where the pool
// should be created.
HostName string `json:"hostName"`
// NodeSelector is the labels that will be used to select
// a node for pool provisioning.
// Required field
NodeSelector map[string]string `json:"nodeSelector"`
// PoolConfig is the default pool config that applies to the
// pool on node.
PoolConfig PoolConfig `json:"poolConfig"`
// RaidGroups is the group containing block devices
RaidGroups []RaidGroup `json:"raidGroup"`
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +resource:path=cstorpoolinstance
// CStorPoolInstanceList is a list of CStorPoolInstance resources
type CStorPoolInstanceList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata"`
Items []CStorPoolInstance `json:"items"`
}