-
Notifications
You must be signed in to change notification settings - Fork 490
/
bcs_types.go
146 lines (129 loc) · 5.68 KB
/
bcs_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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/*
Copyright 2017 The BCS Authors All rights reserved
*/
package types
import (
"time"
)
// ReplicaControllerStatus define the bcs application status.
type ReplicaControllerStatus string
const (
RCStaging ReplicaControllerStatus = "Staging"
RCDeploying ReplicaControllerStatus = "Deploying"
RCRunning ReplicaControllerStatus = "Running"
RCOperating ReplicaControllerStatus = "Operating"
RCFinish ReplicaControllerStatus = "Finish"
RCError ReplicaControllerStatus = "Error"
)
// ObjectMeta define the bcs resource meta data.
type ObjectMeta struct {
Name string `json:"name"`
NameSpace string `json:"namespace"`
CreationTimestamp time.Time `json:"creationTimestamp,omitempty"`
Labels map[string]string `json:"labels,omitempty"`
Annotations map[string]string `json:"annotations,omitempty"`
ClusterName string `json:"clusterName,omitempty"`
}
// BcsReplicaControllerStatus define ReplicaController status
type BcsReplicaControllerStatus struct {
ObjectMeta `json:"metadata"`
CreateTime time.Time `json:"createTime"`
LastUpdateTime time.Time `json:"lastUpdateTime,omitempty"`
ReportTime time.Time `json:"reportTime,omitempty"`
Status ReplicaControllerStatus `json:"status"`
LastStatus ReplicaControllerStatus `json:"lastStatus,omitempty"`
Message string `json:"message, omitempty"`
Pods []*BcsPodIndex `json:"pods"`
// Instance is the number of requested instance
Instance int `json:"instance"`
// BuildedInstance is the number of actual instance
BuildedInstance int `json:"buildedInstance"`
// RunningInstance is the number of running status instance
RunningInstance int `json:"runningInstance"`
}
// PodStatus define the bcs task group status
type PodStatus string
const (
PodStaging PodStatus = "Staging"
PodStarting PodStatus = "Starting"
PodRunning PodStatus = "Running"
PodError PodStatus = "Error"
PodKilling PodStatus = "Killing"
PodKilled PodStatus = "Killed"
PodFailed PodStatus = "Failed"
PodFinish PodStatus = "Finish"
)
// BcsPodIndex describe the pod name data in application status.
type BcsPodIndex struct {
Name string `json:"name"`
}
// BcsPodStatus define pod status
type BcsPodStatus struct {
ObjectMeta `json:"metadata"`
RcName string `json:"rcname, omitempty"`
Status PodStatus `json:"status, omitempty"`
LastStatus PodStatus `json:"lastStatus, omitempty"`
HostIP string `json:"hostIP, omitempty"`
HostName string `json:"hostName"`
PodIP string `json:"podIP, omitempty"`
Message string `json:"message, omitempty"`
StartTime time.Time `json:"startTime, omitempty"`
LastUpdateTime time.Time `json:"lastUpdateTime, omitempty"`
ReportTime time.Time `json:"reportTime, omitempty"`
ContainerStatuses []*BcsContainerStatus `json:"containerStatuses, omitempty"`
BcsMessage string `json:"bcsMessage, omitempty"`
}
// ContainerStatus define the bcs container status.
type ContainerStatus string
// There are the valid statuses of container
const (
ContainerStaging ContainerStatus = "Staging"
ContainerStarting ContainerStatus = "Starting"
ContainerRunning ContainerStatus = "Running"
ContainerKilling ContainerStatus = "Killing"
ContainerKilled ContainerStatus = "Killed"
ContainerFinish ContainerStatus = "Finish"
ContainerFailed ContainerStatus = "Failed"
ContainerError ContainerStatus = "Error"
)
// BcsContainerStatus define container status
type BcsContainerStatus struct {
Name string `json:"name"`
ContainerID string `json:"containerID"`
RestartCount int32 `json:"restartCount, omitempty"`
Status ContainerStatus `json:"status, omitempty"`
LastStatus ContainerStatus `json:"lastStatus, omitempty"`
TerminateExitCode int `json:"exitcode, omitempty"`
Image string `json:"image"`
Message string `json:"message, omitempty"`
StartTime time.Time `json:"startTime,omitempty"`
LastUpdateTime time.Time `json:"lastUpdateTime,omitempty"`
FinishTime time.Time `json:"finishTime,omitempty"`
Ports []ContainerPort `json:"containerPort,omitempty"`
Command string `json:"command,omitempty"`
Args []string `json:"args,omitempty"`
Network string `json:"networkMode,omitempty"`
Labels map[string]string `json:"labels,omitempty"`
Resources ResourceRequirements `json:"resources,omitempty"`
Env map[string]string `json:"env,omitempty"`
}
// ContainerPort represents a network port in a single container
type ContainerPort struct {
//each named port in a pod must have a unique name.
Name string `json:"name"`
HostPort int `json:"hostPort,omitempty"`
ContainerPort int `json:"containerPort"`
HostIP string `json:"hostIP,omitempty"`
Protocol string `json:"protocol"`
}
// ResourceRequirements describes the compute resource requirement
type ResourceRequirements struct {
Limits ResourceItem `json:"limits,omitempty"`
Requests ResourceItem `json:"requests,omitempty"`
}
// ResourceItem define the resource.
type ResourceItem struct {
CPU string `json:"cpu,omitempty"`
Mem string `json:"memory,omitempty"`
Storage string `json:"storage,omitempty"`
}