-
Notifications
You must be signed in to change notification settings - Fork 8
/
kubernetes.go
119 lines (103 loc) · 5.33 KB
/
kubernetes.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
package upcloud
type (
KubernetesClusterState string
KubernetesNodeGroupState string
KubernetesClusterType string
KubernetesClusterTaintEffect string
KubernetesNodeState string
)
const (
KubernetesClusterStatePending KubernetesClusterState = "pending"
KubernetesClusterStateRunning KubernetesClusterState = "running"
KubernetesClusterStateTerminating KubernetesClusterState = "terminating"
KubernetesClusterStateTerminated KubernetesClusterState = "terminated"
KubernetesClusterStateFailed KubernetesClusterState = "failed"
KubernetesClusterStateUnknown KubernetesClusterState = "unknown"
KubernetesNodeGroupStatePending KubernetesNodeGroupState = "pending"
KubernetesNodeGroupStateRunning KubernetesNodeGroupState = "running"
KubernetesNodeGroupStateScalingUp KubernetesNodeGroupState = "scaling-up"
KubernetesNodeGroupStateScalingDown KubernetesNodeGroupState = "scaling-down"
KubernetesNodeGroupStateTerminating KubernetesNodeGroupState = "terminating"
KubernetesNodeGroupStateFailed KubernetesNodeGroupState = "failed"
KubernetesNodeGroupStateUnknown KubernetesNodeGroupState = "unknown"
KubernetesClusterTaintEffectNoExecute KubernetesClusterTaintEffect = "NoExecute"
KubernetesClusterTaintEffectNoSchedule KubernetesClusterTaintEffect = "NoSchedule"
KubernetesClusterTaintEffectPreferNoSchedule KubernetesClusterTaintEffect = "PreferNoSchedule"
KubernetesNodeStateFailed KubernetesNodeState = "failed"
KubernetesNodeStatePending KubernetesNodeState = "pending"
KubernetesNodeStateRunning KubernetesNodeState = "running"
KubernetesNodeStateTerminating KubernetesNodeState = "terminating"
KubernetesNodeStateUnknown KubernetesNodeState = "unknown"
KubernetesStorageTierHDD StorageTier = StorageTierHDD
KubernetesStorageTierMaxIOPS StorageTier = StorageTierMaxIOPS
)
type KubernetesCluster struct {
ControlPlaneIPFilter []string `json:"control_plane_ip_filter,omitempty"`
Labels []Label `json:"labels,omitempty"`
Name string `json:"name,omitempty"`
Network string `json:"network,omitempty"`
NetworkCIDR string `json:"network_cidr,omitempty"`
NodeGroups []KubernetesNodeGroup `json:"node_groups,omitempty"`
State KubernetesClusterState `json:"state,omitempty"`
UUID string `json:"uuid,omitempty"`
Version string `json:"version,omitempty"`
Zone string `json:"zone,omitempty"`
Plan string `json:"plan,omitempty"`
PrivateNodeGroups bool `json:"private_node_groups,omitempty"`
// The default storage encryption strategy for all node groups.
StorageEncryption StorageEncryption `json:"storage_encryption,omitempty"`
}
type KubernetesNodeGroup struct {
AntiAffinity bool `json:"anti_affinity,omitempty"`
Count int `json:"count,omitempty"`
KubeletArgs []KubernetesKubeletArg `json:"kubelet_args,omitempty"`
Labels []Label `json:"labels,omitempty"`
Name string `json:"name,omitempty"`
Plan string `json:"plan,omitempty"`
CustomPlan *KubernetesNodeGroupCustomPlan `json:"custom_plan,omitempty"`
SSHKeys []string `json:"ssh_keys,omitempty"`
State KubernetesNodeGroupState `json:"state,omitempty"`
Storage string `json:"storage,omitempty"`
Taints []KubernetesTaint `json:"taints,omitempty"`
UtilityNetworkAccess bool `json:"utility_network_access,omitempty"`
// Node group storage encryption strategy.
StorageEncryption StorageEncryption `json:"storage_encryption,omitempty"`
}
type KubernetesNodeGroupDetails struct {
KubernetesNodeGroup
Nodes []KubernetesNode `json:"nodes,omitempty"`
}
type KubernetesNode struct {
UUID string `json:"uuid,omitempty"`
Name string `json:"name,omitempty"`
State KubernetesNodeState `json:"state,omitempty"`
}
type KubernetesKubeletArg struct {
Key string `json:"key"`
Value string `json:"value"`
}
type KubernetesTaint struct {
Effect KubernetesClusterTaintEffect `json:"effect"`
Key string `json:"key"`
Value string `json:"value"`
}
type KubernetesPlan struct {
Name string `json:"name"`
ServerNumber int `json:"server_number"`
MaxNodes int `json:"max_nodes"`
}
type KubernetesVersion struct {
Id string `json:"id"`
Version string `json:"version"`
}
// KubernetesNodeGroupCustomPlan represents custom server plan used for each node in the node group.
type KubernetesNodeGroupCustomPlan struct {
// The number of CPU cores dedicated to individual node group node
Cores int `json:"cores"`
// The amount of memory in megabytes to assign to individual node group node
Memory int `json:"memory"`
// The size of the storage device in gigabytes.
StorageSize int `json:"storage_size"`
// The storage tier is MaxIOPS® or HDD.
StorageTier StorageTier `json:"storage_tier,omitempty"`
}