mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-26 21:17:23 +00:00
Merge pull request #35998 from yujuhong/fix_enum
Automatic merge from submit-queue CRI: Rename container/sandbox states The enum constants are not namespaced. The shorter, unspecifc names are likely to cause naming conflicts in the future. Also replace "SandBox" with "Sandbox" in the API for consistency. /cc @kubernetes/sig-node
This commit is contained in:
commit
ecfde2b853
@ -119,7 +119,7 @@ func (r *FakeRuntimeService) RunPodSandbox(config *runtimeApi.PodSandboxConfig)
|
|||||||
// fixed name from BuildSandboxName() for easily making fake sandboxes.
|
// fixed name from BuildSandboxName() for easily making fake sandboxes.
|
||||||
podSandboxID := BuildSandboxName(config.Metadata)
|
podSandboxID := BuildSandboxName(config.Metadata)
|
||||||
createdAt := time.Now().Unix()
|
createdAt := time.Now().Unix()
|
||||||
readyState := runtimeApi.PodSandBoxState_READY
|
readyState := runtimeApi.PodSandboxState_SANDBOX_READY
|
||||||
r.Sandboxes[podSandboxID] = &FakePodSandbox{
|
r.Sandboxes[podSandboxID] = &FakePodSandbox{
|
||||||
PodSandboxStatus: runtimeApi.PodSandboxStatus{
|
PodSandboxStatus: runtimeApi.PodSandboxStatus{
|
||||||
Id: &podSandboxID,
|
Id: &podSandboxID,
|
||||||
@ -143,7 +143,7 @@ func (r *FakeRuntimeService) StopPodSandbox(podSandboxID string) error {
|
|||||||
|
|
||||||
r.Called = append(r.Called, "StopPodSandbox")
|
r.Called = append(r.Called, "StopPodSandbox")
|
||||||
|
|
||||||
notReadyState := runtimeApi.PodSandBoxState_NOTREADY
|
notReadyState := runtimeApi.PodSandboxState_SANDBOX_NOTREADY
|
||||||
if s, ok := r.Sandboxes[podSandboxID]; ok {
|
if s, ok := r.Sandboxes[podSandboxID]; ok {
|
||||||
s.State = ¬ReadyState
|
s.State = ¬ReadyState
|
||||||
} else {
|
} else {
|
||||||
@ -231,7 +231,7 @@ func (r *FakeRuntimeService) CreateContainer(podSandboxID string, config *runtim
|
|||||||
// fixed BuildContainerName() for easily making fake containers.
|
// fixed BuildContainerName() for easily making fake containers.
|
||||||
containerID := BuildContainerName(config.Metadata, podSandboxID)
|
containerID := BuildContainerName(config.Metadata, podSandboxID)
|
||||||
createdAt := time.Now().Unix()
|
createdAt := time.Now().Unix()
|
||||||
createdState := runtimeApi.ContainerState_CREATED
|
createdState := runtimeApi.ContainerState_CONTAINER_CREATED
|
||||||
imageRef := config.Image.GetImage()
|
imageRef := config.Image.GetImage()
|
||||||
r.Containers[containerID] = &FakeContainer{
|
r.Containers[containerID] = &FakeContainer{
|
||||||
ContainerStatus: runtimeApi.ContainerStatus{
|
ContainerStatus: runtimeApi.ContainerStatus{
|
||||||
@ -263,7 +263,7 @@ func (r *FakeRuntimeService) StartContainer(containerID string) error {
|
|||||||
|
|
||||||
// Set container to running.
|
// Set container to running.
|
||||||
startedAt := time.Now().Unix()
|
startedAt := time.Now().Unix()
|
||||||
runningState := runtimeApi.ContainerState_RUNNING
|
runningState := runtimeApi.ContainerState_CONTAINER_RUNNING
|
||||||
c.State = &runningState
|
c.State = &runningState
|
||||||
c.StartedAt = &startedAt
|
c.StartedAt = &startedAt
|
||||||
|
|
||||||
@ -283,7 +283,7 @@ func (r *FakeRuntimeService) StopContainer(containerID string, timeout int64) er
|
|||||||
|
|
||||||
// Set container to exited state.
|
// Set container to exited state.
|
||||||
finishedAt := time.Now().Unix()
|
finishedAt := time.Now().Unix()
|
||||||
exitedState := runtimeApi.ContainerState_EXITED
|
exitedState := runtimeApi.ContainerState_CONTAINER_EXITED
|
||||||
c.State = &exitedState
|
c.State = &exitedState
|
||||||
c.FinishedAt = &finishedAt
|
c.FinishedAt = &finishedAt
|
||||||
|
|
||||||
|
@ -152,60 +152,60 @@ func (x *Protocol) UnmarshalJSON(data []byte) error {
|
|||||||
}
|
}
|
||||||
func (Protocol) EnumDescriptor() ([]byte, []int) { return fileDescriptorApi, []int{0} }
|
func (Protocol) EnumDescriptor() ([]byte, []int) { return fileDescriptorApi, []int{0} }
|
||||||
|
|
||||||
type PodSandBoxState int32
|
type PodSandboxState int32
|
||||||
|
|
||||||
const (
|
const (
|
||||||
PodSandBoxState_READY PodSandBoxState = 0
|
PodSandboxState_SANDBOX_READY PodSandboxState = 0
|
||||||
PodSandBoxState_NOTREADY PodSandBoxState = 1
|
PodSandboxState_SANDBOX_NOTREADY PodSandboxState = 1
|
||||||
)
|
)
|
||||||
|
|
||||||
var PodSandBoxState_name = map[int32]string{
|
var PodSandboxState_name = map[int32]string{
|
||||||
0: "READY",
|
0: "SANDBOX_READY",
|
||||||
1: "NOTREADY",
|
1: "SANDBOX_NOTREADY",
|
||||||
}
|
}
|
||||||
var PodSandBoxState_value = map[string]int32{
|
var PodSandboxState_value = map[string]int32{
|
||||||
"READY": 0,
|
"SANDBOX_READY": 0,
|
||||||
"NOTREADY": 1,
|
"SANDBOX_NOTREADY": 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x PodSandBoxState) Enum() *PodSandBoxState {
|
func (x PodSandboxState) Enum() *PodSandboxState {
|
||||||
p := new(PodSandBoxState)
|
p := new(PodSandboxState)
|
||||||
*p = x
|
*p = x
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
func (x PodSandBoxState) String() string {
|
func (x PodSandboxState) String() string {
|
||||||
return proto.EnumName(PodSandBoxState_name, int32(x))
|
return proto.EnumName(PodSandboxState_name, int32(x))
|
||||||
}
|
}
|
||||||
func (x *PodSandBoxState) UnmarshalJSON(data []byte) error {
|
func (x *PodSandboxState) UnmarshalJSON(data []byte) error {
|
||||||
value, err := proto.UnmarshalJSONEnum(PodSandBoxState_value, data, "PodSandBoxState")
|
value, err := proto.UnmarshalJSONEnum(PodSandboxState_value, data, "PodSandboxState")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
*x = PodSandBoxState(value)
|
*x = PodSandboxState(value)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
func (PodSandBoxState) EnumDescriptor() ([]byte, []int) { return fileDescriptorApi, []int{1} }
|
func (PodSandboxState) EnumDescriptor() ([]byte, []int) { return fileDescriptorApi, []int{1} }
|
||||||
|
|
||||||
type ContainerState int32
|
type ContainerState int32
|
||||||
|
|
||||||
const (
|
const (
|
||||||
ContainerState_CREATED ContainerState = 0
|
ContainerState_CONTAINER_CREATED ContainerState = 0
|
||||||
ContainerState_RUNNING ContainerState = 1
|
ContainerState_CONTAINER_RUNNING ContainerState = 1
|
||||||
ContainerState_EXITED ContainerState = 2
|
ContainerState_CONTAINER_EXITED ContainerState = 2
|
||||||
ContainerState_UNKNOWN ContainerState = 3
|
ContainerState_CONTAINER_UNKNOWN ContainerState = 3
|
||||||
)
|
)
|
||||||
|
|
||||||
var ContainerState_name = map[int32]string{
|
var ContainerState_name = map[int32]string{
|
||||||
0: "CREATED",
|
0: "CONTAINER_CREATED",
|
||||||
1: "RUNNING",
|
1: "CONTAINER_RUNNING",
|
||||||
2: "EXITED",
|
2: "CONTAINER_EXITED",
|
||||||
3: "UNKNOWN",
|
3: "CONTAINER_UNKNOWN",
|
||||||
}
|
}
|
||||||
var ContainerState_value = map[string]int32{
|
var ContainerState_value = map[string]int32{
|
||||||
"CREATED": 0,
|
"CONTAINER_CREATED": 0,
|
||||||
"RUNNING": 1,
|
"CONTAINER_RUNNING": 1,
|
||||||
"EXITED": 2,
|
"CONTAINER_EXITED": 2,
|
||||||
"UNKNOWN": 3,
|
"CONTAINER_UNKNOWN": 3,
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x ContainerState) Enum() *ContainerState {
|
func (x ContainerState) Enum() *ContainerState {
|
||||||
@ -823,7 +823,7 @@ func (m *Namespace) GetOptions() *NamespaceOption {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// LinuxSandBoxStatus contains status specific to Linux sandboxes.
|
// LinuxSandboxStatus contains status specific to Linux sandboxes.
|
||||||
type LinuxPodSandboxStatus struct {
|
type LinuxPodSandboxStatus struct {
|
||||||
// Namespaces contains paths to the sandbox's namespaces.
|
// Namespaces contains paths to the sandbox's namespaces.
|
||||||
Namespaces *Namespace `protobuf:"bytes,1,opt,name=namespaces" json:"namespaces,omitempty"`
|
Namespaces *Namespace `protobuf:"bytes,1,opt,name=namespaces" json:"namespaces,omitempty"`
|
||||||
@ -849,7 +849,7 @@ type PodSandboxStatus struct {
|
|||||||
// Metadata of the sandbox.
|
// Metadata of the sandbox.
|
||||||
Metadata *PodSandboxMetadata `protobuf:"bytes,2,opt,name=metadata" json:"metadata,omitempty"`
|
Metadata *PodSandboxMetadata `protobuf:"bytes,2,opt,name=metadata" json:"metadata,omitempty"`
|
||||||
// State of the sandbox.
|
// State of the sandbox.
|
||||||
State *PodSandBoxState `protobuf:"varint,3,opt,name=state,enum=runtime.PodSandBoxState" json:"state,omitempty"`
|
State *PodSandboxState `protobuf:"varint,3,opt,name=state,enum=runtime.PodSandboxState" json:"state,omitempty"`
|
||||||
// Creation timestamp of the sandbox in nanoseconds.
|
// Creation timestamp of the sandbox in nanoseconds.
|
||||||
CreatedAt *int64 `protobuf:"varint,4,opt,name=created_at,json=createdAt" json:"created_at,omitempty"`
|
CreatedAt *int64 `protobuf:"varint,4,opt,name=created_at,json=createdAt" json:"created_at,omitempty"`
|
||||||
// Network contains network status if network is handled by the runtime.
|
// Network contains network status if network is handled by the runtime.
|
||||||
@ -883,11 +883,11 @@ func (m *PodSandboxStatus) GetMetadata() *PodSandboxMetadata {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *PodSandboxStatus) GetState() PodSandBoxState {
|
func (m *PodSandboxStatus) GetState() PodSandboxState {
|
||||||
if m != nil && m.State != nil {
|
if m != nil && m.State != nil {
|
||||||
return *m.State
|
return *m.State
|
||||||
}
|
}
|
||||||
return PodSandBoxState_READY
|
return PodSandboxState_SANDBOX_READY
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *PodSandboxStatus) GetCreatedAt() int64 {
|
func (m *PodSandboxStatus) GetCreatedAt() int64 {
|
||||||
@ -949,7 +949,7 @@ type PodSandboxFilter struct {
|
|||||||
// ID of the sandbox.
|
// ID of the sandbox.
|
||||||
Id *string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
|
Id *string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
|
||||||
// State of the sandbox.
|
// State of the sandbox.
|
||||||
State *PodSandBoxState `protobuf:"varint,2,opt,name=state,enum=runtime.PodSandBoxState" json:"state,omitempty"`
|
State *PodSandboxState `protobuf:"varint,2,opt,name=state,enum=runtime.PodSandboxState" json:"state,omitempty"`
|
||||||
// LabelSelector to select matches.
|
// LabelSelector to select matches.
|
||||||
// Only api.MatchLabels is supported for now and the requirements
|
// Only api.MatchLabels is supported for now and the requirements
|
||||||
// are ANDed. MatchExpressions is not supported yet.
|
// are ANDed. MatchExpressions is not supported yet.
|
||||||
@ -969,11 +969,11 @@ func (m *PodSandboxFilter) GetId() string {
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *PodSandboxFilter) GetState() PodSandBoxState {
|
func (m *PodSandboxFilter) GetState() PodSandboxState {
|
||||||
if m != nil && m.State != nil {
|
if m != nil && m.State != nil {
|
||||||
return *m.State
|
return *m.State
|
||||||
}
|
}
|
||||||
return PodSandBoxState_READY
|
return PodSandboxState_SANDBOX_READY
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *PodSandboxFilter) GetLabelSelector() map[string]string {
|
func (m *PodSandboxFilter) GetLabelSelector() map[string]string {
|
||||||
@ -1008,7 +1008,7 @@ type PodSandbox struct {
|
|||||||
// Metadata of the sandbox
|
// Metadata of the sandbox
|
||||||
Metadata *PodSandboxMetadata `protobuf:"bytes,2,opt,name=metadata" json:"metadata,omitempty"`
|
Metadata *PodSandboxMetadata `protobuf:"bytes,2,opt,name=metadata" json:"metadata,omitempty"`
|
||||||
// The state of the PodSandbox
|
// The state of the PodSandbox
|
||||||
State *PodSandBoxState `protobuf:"varint,3,opt,name=state,enum=runtime.PodSandBoxState" json:"state,omitempty"`
|
State *PodSandboxState `protobuf:"varint,3,opt,name=state,enum=runtime.PodSandboxState" json:"state,omitempty"`
|
||||||
// Creation timestamps of the sandbox in nanoseconds
|
// Creation timestamps of the sandbox in nanoseconds
|
||||||
CreatedAt *int64 `protobuf:"varint,4,opt,name=created_at,json=createdAt" json:"created_at,omitempty"`
|
CreatedAt *int64 `protobuf:"varint,4,opt,name=created_at,json=createdAt" json:"created_at,omitempty"`
|
||||||
// The labels of the PodSandbox
|
// The labels of the PodSandbox
|
||||||
@ -1038,11 +1038,11 @@ func (m *PodSandbox) GetMetadata() *PodSandboxMetadata {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *PodSandbox) GetState() PodSandBoxState {
|
func (m *PodSandbox) GetState() PodSandboxState {
|
||||||
if m != nil && m.State != nil {
|
if m != nil && m.State != nil {
|
||||||
return *m.State
|
return *m.State
|
||||||
}
|
}
|
||||||
return PodSandBoxState_READY
|
return PodSandboxState_SANDBOX_READY
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *PodSandbox) GetCreatedAt() int64 {
|
func (m *PodSandbox) GetCreatedAt() int64 {
|
||||||
@ -1727,7 +1727,7 @@ func (m *ContainerFilter) GetState() ContainerState {
|
|||||||
if m != nil && m.State != nil {
|
if m != nil && m.State != nil {
|
||||||
return *m.State
|
return *m.State
|
||||||
}
|
}
|
||||||
return ContainerState_CREATED
|
return ContainerState_CONTAINER_CREATED
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *ContainerFilter) GetPodSandboxId() string {
|
func (m *ContainerFilter) GetPodSandboxId() string {
|
||||||
@ -1832,7 +1832,7 @@ func (m *Container) GetState() ContainerState {
|
|||||||
if m != nil && m.State != nil {
|
if m != nil && m.State != nil {
|
||||||
return *m.State
|
return *m.State
|
||||||
}
|
}
|
||||||
return ContainerState_CREATED
|
return ContainerState_CONTAINER_CREATED
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Container) GetCreatedAt() int64 {
|
func (m *Container) GetCreatedAt() int64 {
|
||||||
@ -1950,7 +1950,7 @@ func (m *ContainerStatus) GetState() ContainerState {
|
|||||||
if m != nil && m.State != nil {
|
if m != nil && m.State != nil {
|
||||||
return *m.State
|
return *m.State
|
||||||
}
|
}
|
||||||
return ContainerState_CREATED
|
return ContainerState_CONTAINER_CREATED
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *ContainerStatus) GetCreatedAt() int64 {
|
func (m *ContainerStatus) GetCreatedAt() int64 {
|
||||||
@ -2677,7 +2677,7 @@ func init() {
|
|||||||
proto.RegisterType((*UpdateRuntimeConfigRequest)(nil), "runtime.UpdateRuntimeConfigRequest")
|
proto.RegisterType((*UpdateRuntimeConfigRequest)(nil), "runtime.UpdateRuntimeConfigRequest")
|
||||||
proto.RegisterType((*UpdateRuntimeConfigResponse)(nil), "runtime.UpdateRuntimeConfigResponse")
|
proto.RegisterType((*UpdateRuntimeConfigResponse)(nil), "runtime.UpdateRuntimeConfigResponse")
|
||||||
proto.RegisterEnum("runtime.Protocol", Protocol_name, Protocol_value)
|
proto.RegisterEnum("runtime.Protocol", Protocol_name, Protocol_value)
|
||||||
proto.RegisterEnum("runtime.PodSandBoxState", PodSandBoxState_name, PodSandBoxState_value)
|
proto.RegisterEnum("runtime.PodSandboxState", PodSandboxState_name, PodSandboxState_value)
|
||||||
proto.RegisterEnum("runtime.ContainerState", ContainerState_name, ContainerState_value)
|
proto.RegisterEnum("runtime.ContainerState", ContainerState_name, ContainerState_value)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2706,7 +2706,7 @@ type RuntimeServiceClient interface {
|
|||||||
RemovePodSandbox(ctx context.Context, in *RemovePodSandboxRequest, opts ...grpc.CallOption) (*RemovePodSandboxResponse, error)
|
RemovePodSandbox(ctx context.Context, in *RemovePodSandboxRequest, opts ...grpc.CallOption) (*RemovePodSandboxResponse, error)
|
||||||
// PodSandboxStatus returns the status of the PodSandbox.
|
// PodSandboxStatus returns the status of the PodSandbox.
|
||||||
PodSandboxStatus(ctx context.Context, in *PodSandboxStatusRequest, opts ...grpc.CallOption) (*PodSandboxStatusResponse, error)
|
PodSandboxStatus(ctx context.Context, in *PodSandboxStatusRequest, opts ...grpc.CallOption) (*PodSandboxStatusResponse, error)
|
||||||
// ListPodSandbox returns a list of SandBox.
|
// ListPodSandbox returns a list of Sandbox.
|
||||||
ListPodSandbox(ctx context.Context, in *ListPodSandboxRequest, opts ...grpc.CallOption) (*ListPodSandboxResponse, error)
|
ListPodSandbox(ctx context.Context, in *ListPodSandboxRequest, opts ...grpc.CallOption) (*ListPodSandboxResponse, error)
|
||||||
// CreateContainer creates a new container in specified PodSandbox
|
// CreateContainer creates a new container in specified PodSandbox
|
||||||
CreateContainer(ctx context.Context, in *CreateContainerRequest, opts ...grpc.CallOption) (*CreateContainerResponse, error)
|
CreateContainer(ctx context.Context, in *CreateContainerRequest, opts ...grpc.CallOption) (*CreateContainerResponse, error)
|
||||||
@ -2912,7 +2912,7 @@ type RuntimeServiceServer interface {
|
|||||||
RemovePodSandbox(context.Context, *RemovePodSandboxRequest) (*RemovePodSandboxResponse, error)
|
RemovePodSandbox(context.Context, *RemovePodSandboxRequest) (*RemovePodSandboxResponse, error)
|
||||||
// PodSandboxStatus returns the status of the PodSandbox.
|
// PodSandboxStatus returns the status of the PodSandbox.
|
||||||
PodSandboxStatus(context.Context, *PodSandboxStatusRequest) (*PodSandboxStatusResponse, error)
|
PodSandboxStatus(context.Context, *PodSandboxStatusRequest) (*PodSandboxStatusResponse, error)
|
||||||
// ListPodSandbox returns a list of SandBox.
|
// ListPodSandbox returns a list of Sandbox.
|
||||||
ListPodSandbox(context.Context, *ListPodSandboxRequest) (*ListPodSandboxResponse, error)
|
ListPodSandbox(context.Context, *ListPodSandboxRequest) (*ListPodSandboxResponse, error)
|
||||||
// CreateContainer creates a new container in specified PodSandbox
|
// CreateContainer creates a new container in specified PodSandbox
|
||||||
CreateContainer(context.Context, *CreateContainerRequest) (*CreateContainerResponse, error)
|
CreateContainer(context.Context, *CreateContainerRequest) (*CreateContainerResponse, error)
|
||||||
@ -3503,199 +3503,201 @@ var _ImageService_serviceDesc = grpc.ServiceDesc{
|
|||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptorApi = []byte{
|
var fileDescriptorApi = []byte{
|
||||||
// 3101 bytes of a gzipped FileDescriptorProto
|
// 3133 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x1a, 0x4d, 0x77, 0xdb, 0xc6,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x3a, 0x4d, 0x73, 0x1b, 0xc7,
|
||||||
0x31, 0x24, 0x45, 0x8a, 0x1c, 0x8a, 0x14, 0xbd, 0x92, 0x25, 0x9a, 0x8e, 0x6d, 0x19, 0x49, 0x9a,
|
0xb1, 0x04, 0xc0, 0x0f, 0xa0, 0x41, 0x80, 0xe0, 0x90, 0x22, 0x21, 0xd0, 0x92, 0xa8, 0xb5, 0x65,
|
||||||
0x44, 0x49, 0xfc, 0x12, 0xb6, 0x4d, 0x9a, 0x2f, 0x27, 0x8a, 0xa4, 0xa4, 0x8a, 0x6d, 0x5a, 0x05,
|
0x4b, 0xb2, 0xad, 0xb2, 0xf0, 0xde, 0xb3, 0x9e, 0x65, 0x4b, 0x36, 0x4c, 0xd2, 0x0e, 0x2d, 0x09,
|
||||||
0xed, 0x34, 0x79, 0x39, 0xa0, 0x30, 0x01, 0x4b, 0xb0, 0x49, 0x00, 0x01, 0x40, 0xc5, 0xec, 0xb5,
|
0x62, 0x06, 0x92, 0x63, 0x97, 0x0f, 0x9b, 0x15, 0x76, 0x04, 0xae, 0x04, 0xec, 0xae, 0x67, 0x07,
|
||||||
0x97, 0x1e, 0x7a, 0xe8, 0xb5, 0xb7, 0x1e, 0xfa, 0x5e, 0x0f, 0xbd, 0xf5, 0xbd, 0xbe, 0xd7, 0xff,
|
0xb4, 0x98, 0x6b, 0x2e, 0x39, 0xe4, 0x90, 0x6b, 0x6e, 0x39, 0xa4, 0xca, 0x87, 0xdc, 0x52, 0x95,
|
||||||
0xd0, 0xd7, 0x1f, 0xd2, 0x43, 0xcf, 0xed, 0xb1, 0xb3, 0x1f, 0x58, 0x2c, 0xbe, 0x14, 0xc9, 0x79,
|
0xaa, 0xfc, 0x87, 0x54, 0x7e, 0x48, 0x0e, 0x39, 0x27, 0xc7, 0xd4, 0x7c, 0xec, 0xec, 0xec, 0x07,
|
||||||
0xaf, 0xf1, 0x0d, 0x3b, 0x3b, 0x3b, 0x33, 0x3b, 0x33, 0x3b, 0x3b, 0x33, 0x0b, 0x68, 0x99, 0xbe,
|
0x68, 0x52, 0xae, 0x8a, 0x75, 0xdb, 0xe9, 0xe9, 0xee, 0xe9, 0xe9, 0xee, 0xe9, 0xe9, 0xee, 0x59,
|
||||||
0x73, 0xc3, 0x0f, 0xbc, 0xc8, 0x23, 0xcb, 0xc1, 0xdc, 0x8d, 0x9c, 0x99, 0xad, 0x6d, 0x43, 0xf7,
|
0xa8, 0x39, 0xa1, 0x77, 0x23, 0xa4, 0x01, 0x0b, 0xd0, 0x12, 0x9d, 0xfa, 0xcc, 0x9b, 0x10, 0xeb,
|
||||||
0x0b, 0x3b, 0x08, 0x1d, 0xcf, 0xd5, 0xed, 0x6f, 0xe6, 0x76, 0x18, 0x91, 0x3e, 0x2c, 0x9f, 0x70,
|
0x3a, 0x34, 0xbf, 0x24, 0x34, 0xf2, 0x02, 0x1f, 0x93, 0x6f, 0xa7, 0x24, 0x62, 0xa8, 0x0d, 0x4b,
|
||||||
0x48, 0xbf, 0xb2, 0x55, 0x79, 0xa5, 0xa5, 0xc7, 0x43, 0xed, 0xcf, 0x15, 0x58, 0x95, 0xc8, 0xa1,
|
0x47, 0x12, 0xd2, 0x2e, 0x6d, 0x97, 0xae, 0xd6, 0x70, 0x3c, 0xb4, 0xbe, 0x2f, 0xc1, 0x8a, 0x46,
|
||||||
0xef, 0xb9, 0xa1, 0x5d, 0x8e, 0x4d, 0xae, 0xc3, 0x8a, 0x60, 0x62, 0xb8, 0xe6, 0xcc, 0xee, 0x57,
|
0x8e, 0xc2, 0xc0, 0x8f, 0xc8, 0x6c, 0x6c, 0x74, 0x19, 0x96, 0xd5, 0x22, 0xb6, 0xef, 0x4c, 0x48,
|
||||||
0xd9, 0x74, 0x5b, 0xc0, 0x46, 0x08, 0x22, 0x2f, 0xc3, 0x6a, 0x8c, 0x12, 0x13, 0xa9, 0x31, 0xac,
|
0xbb, 0x2c, 0xa6, 0xeb, 0x0a, 0xd6, 0x77, 0x26, 0x04, 0xbd, 0x05, 0x2b, 0x31, 0x4a, 0xcc, 0xa4,
|
||||||
0xae, 0x00, 0x0b, 0x6e, 0xe4, 0x06, 0xac, 0xc5, 0x88, 0xb8, 0x07, 0x89, 0xbc, 0xc4, 0x90, 0x2f,
|
0x22, 0xb0, 0x9a, 0x0a, 0xac, 0x56, 0x43, 0x37, 0x60, 0x2d, 0x46, 0x74, 0x42, 0x4f, 0x23, 0xcf,
|
||||||
0x88, 0xa9, 0x1d, 0xdf, 0x11, 0xf8, 0xda, 0xd7, 0xd0, 0xda, 0x1b, 0x8d, 0x77, 0x3d, 0xf7, 0xa1,
|
0x0b, 0xe4, 0x55, 0x35, 0xd5, 0x0b, 0x3d, 0x85, 0x6f, 0x7d, 0x03, 0xb5, 0xdd, 0xfe, 0x60, 0x27,
|
||||||
0x73, 0x44, 0x45, 0x0c, 0xed, 0x80, 0xae, 0x41, 0x11, 0x6b, 0x54, 0x44, 0x31, 0x24, 0x03, 0x68,
|
0xf0, 0x9f, 0x7a, 0x23, 0x2e, 0x62, 0x44, 0x28, 0xa7, 0x69, 0x97, 0xb6, 0x2b, 0x5c, 0x44, 0x35,
|
||||||
0x86, 0xb6, 0x19, 0x4c, 0x8e, 0xed, 0x10, 0xc5, 0xa3, 0x53, 0x72, 0x4c, 0x57, 0x79, 0x7e, 0x84,
|
0x44, 0x1d, 0xa8, 0x46, 0xc4, 0xa1, 0xc3, 0x43, 0x12, 0xb5, 0xcb, 0x62, 0x4a, 0x8f, 0x39, 0x55,
|
||||||
0xc4, 0x42, 0x94, 0x89, 0xad, 0x12, 0x43, 0xed, 0x0f, 0x15, 0x68, 0x1f, 0x7a, 0x41, 0x74, 0xc7,
|
0x10, 0x32, 0x2f, 0xf0, 0xa3, 0x76, 0x45, 0x52, 0xa9, 0xa1, 0xf5, 0xfb, 0x12, 0xd4, 0x0f, 0x02,
|
||||||
0xf4, 0x7d, 0xc7, 0x3d, 0x22, 0x6f, 0x40, 0x93, 0x29, 0x75, 0xe2, 0x4d, 0x99, 0x0e, 0xba, 0xc3,
|
0xca, 0x1e, 0x38, 0x61, 0xe8, 0xf9, 0x23, 0xf4, 0x2e, 0x54, 0x85, 0x52, 0x87, 0xc1, 0x58, 0xe8,
|
||||||
0x0b, 0x37, 0x84, 0x48, 0x37, 0x0e, 0xc5, 0x84, 0x2e, 0x51, 0xc8, 0x4b, 0xd0, 0x9d, 0x78, 0x6e,
|
0xa0, 0xd9, 0x5d, 0xbd, 0xa1, 0x44, 0xba, 0x71, 0xa0, 0x26, 0xb0, 0x46, 0x41, 0x57, 0xa0, 0x39,
|
||||||
0x64, 0x3a, 0xae, 0x1d, 0x18, 0x3e, 0xd2, 0x61, 0x9a, 0xa9, 0xeb, 0x1d, 0x09, 0xa5, 0xc4, 0xc9,
|
0x0c, 0x7c, 0xe6, 0x78, 0x3e, 0xa1, 0x76, 0x18, 0x50, 0x26, 0x34, 0xb3, 0x80, 0x1b, 0x1a, 0xca,
|
||||||
0x65, 0x68, 0x1d, 0x7b, 0x61, 0xc4, 0x31, 0x6a, 0x0c, 0xa3, 0x49, 0x01, 0x6c, 0x72, 0x13, 0x96,
|
0x99, 0xa3, 0x2d, 0xa8, 0x1d, 0x06, 0x11, 0x93, 0x18, 0x15, 0x81, 0x51, 0xe5, 0x00, 0x31, 0xb9,
|
||||||
0xd9, 0xa4, 0xe3, 0x0b, 0x1d, 0x34, 0xe8, 0xf0, 0xc0, 0xd7, 0x7e, 0x5f, 0x81, 0xfa, 0x1d, 0x0f,
|
0x09, 0x4b, 0x62, 0xd2, 0x0b, 0x95, 0x0e, 0x16, 0xf9, 0x70, 0x3f, 0xb4, 0x7e, 0x57, 0x82, 0x85,
|
||||||
0x99, 0x67, 0xd8, 0x98, 0xd1, 0xb1, 0xb0, 0x8f, 0xc2, 0x06, 0x81, 0x09, 0x1b, 0x8a, 0xc1, 0x4d,
|
0x07, 0xc1, 0xd4, 0x67, 0x99, 0x65, 0x1c, 0x76, 0xa8, 0xec, 0x63, 0x2c, 0xe3, 0xb0, 0xc3, 0x64,
|
||||||
0xc4, 0xd9, 0xd0, 0x49, 0xd4, 0x4f, 0x60, 0x9b, 0x96, 0xe7, 0x4e, 0x17, 0x4c, 0x84, 0xa6, 0x2e,
|
0x19, 0x8e, 0x21, 0x4d, 0x24, 0x97, 0xe1, 0x93, 0x1d, 0xa8, 0x52, 0xe2, 0xb8, 0x81, 0x3f, 0x3e,
|
||||||
0xc7, 0xd4, 0x76, 0xa1, 0x3d, 0x75, 0xdc, 0xf9, 0x13, 0x23, 0xb0, 0xa7, 0xe6, 0x03, 0x7b, 0xca,
|
0x16, 0x22, 0x54, 0xb1, 0x1e, 0x73, 0xdb, 0x45, 0x64, 0xec, 0xf9, 0xd3, 0x17, 0x36, 0x25, 0x63,
|
||||||
0x44, 0x69, 0xea, 0x5d, 0x01, 0xd6, 0x39, 0x54, 0x7b, 0x04, 0xab, 0xd4, 0xd8, 0xa1, 0x6f, 0x4e,
|
0xe7, 0x09, 0x19, 0x0b, 0x51, 0xaa, 0xb8, 0xa9, 0xc0, 0x58, 0x42, 0xad, 0x67, 0xb0, 0xc2, 0x8d,
|
||||||
0xec, 0xbb, 0x4c, 0x85, 0xd4, 0x35, 0x18, 0x53, 0xd7, 0x8e, 0xbe, 0xf5, 0x82, 0xc7, 0x4c, 0xb2,
|
0x1d, 0x85, 0xce, 0x90, 0x3c, 0x14, 0x2a, 0xe4, 0xae, 0x21, 0x16, 0xf5, 0x09, 0xfb, 0x2e, 0xa0,
|
||||||
0xa6, 0xde, 0xa6, 0xb0, 0x11, 0x07, 0x91, 0x4b, 0xd0, 0xe4, 0x72, 0x39, 0x16, 0x13, 0xab, 0xa9,
|
0xcf, 0x85, 0x64, 0x55, 0x5c, 0xe7, 0xb0, 0xbe, 0x04, 0xa1, 0xf3, 0x50, 0x95, 0x72, 0x79, 0xae,
|
||||||
0xb3, 0x1d, 0x1f, 0x3a, 0x96, 0x9c, 0x72, 0xfc, 0x89, 0x90, 0x6a, 0x99, 0xef, 0x7e, 0xa2, 0xfd,
|
0x10, 0xab, 0x8a, 0xc5, 0x8e, 0x0f, 0x3c, 0x57, 0x4f, 0x79, 0xe1, 0x50, 0x49, 0xb5, 0x24, 0x77,
|
||||||
0xa6, 0x02, 0x17, 0x6f, 0x53, 0xe6, 0x87, 0x9e, 0x35, 0x36, 0x5d, 0xeb, 0x81, 0xf7, 0x44, 0x38,
|
0x3f, 0xb4, 0x7e, 0x5d, 0x82, 0x73, 0xf7, 0xf9, 0xe2, 0x07, 0x81, 0x3b, 0x70, 0x7c, 0xf7, 0x49,
|
||||||
0xc1, 0x0b, 0xd0, 0x99, 0x1c, 0x05, 0xde, 0xdc, 0xc7, 0x9d, 0x06, 0xb6, 0x1b, 0x09, 0x6d, 0xac,
|
0xf0, 0x42, 0x39, 0xc1, 0xeb, 0xd0, 0x18, 0x8e, 0x68, 0x30, 0x0d, 0xed, 0xd0, 0xa1, 0xc4, 0x67,
|
||||||
0x70, 0xe0, 0x21, 0x83, 0x91, 0x7d, 0xb8, 0xe0, 0xc6, 0xa2, 0x1a, 0xb1, 0xf5, 0x29, 0xf7, 0xf6,
|
0x4a, 0x1b, 0xcb, 0x12, 0x78, 0x20, 0x60, 0x68, 0x0f, 0x56, 0xfd, 0x58, 0x54, 0x3b, 0xb6, 0x3e,
|
||||||
0xb0, 0x2f, 0x4d, 0x9a, 0xd9, 0x8c, 0xde, 0x73, 0xd3, 0x80, 0x50, 0x0b, 0x80, 0x24, 0xfc, 0xef,
|
0x5f, 0xbd, 0xde, 0x6d, 0x6b, 0x93, 0x66, 0x36, 0x83, 0x5b, 0x7e, 0x1a, 0x10, 0x59, 0x14, 0x50,
|
||||||
0xd8, 0x91, 0x69, 0x99, 0x91, 0x49, 0x08, 0x2c, 0xb1, 0x73, 0xc0, 0x19, 0xb3, 0x6f, 0xd2, 0x83,
|
0xb2, 0xfe, 0x03, 0xc2, 0x1c, 0xd7, 0x61, 0x0e, 0x42, 0x30, 0x2f, 0xce, 0x81, 0x5c, 0x58, 0x7c,
|
||||||
0xda, 0x5c, 0x6c, 0xb0, 0xa5, 0xd3, 0x4f, 0xf2, 0x3c, 0xb4, 0x24, 0x3d, 0x71, 0x18, 0x12, 0x00,
|
0xa3, 0x16, 0x54, 0xa6, 0x6a, 0x83, 0x35, 0xcc, 0x3f, 0xd1, 0x6b, 0x50, 0xd3, 0xfc, 0xd4, 0x61,
|
||||||
0x75, 0x4a, 0x33, 0x8a, 0xec, 0x99, 0x1f, 0x31, 0x65, 0x77, 0xf4, 0x78, 0xa8, 0xfd, 0x7d, 0x09,
|
0x48, 0x00, 0xdc, 0x29, 0x1d, 0xc6, 0xc8, 0x24, 0x64, 0x42, 0xd9, 0x0d, 0x1c, 0x0f, 0xad, 0xbf,
|
||||||
0x7a, 0xb9, 0x4d, 0xbf, 0x03, 0xcd, 0x99, 0x60, 0xcf, 0xd8, 0xb6, 0x87, 0x97, 0x13, 0xcf, 0xcc,
|
0xce, 0x43, 0x2b, 0xb7, 0xe9, 0x5b, 0x50, 0x9d, 0xa8, 0xe5, 0xc5, 0xb2, 0xf5, 0xee, 0x56, 0xe2,
|
||||||
0x49, 0xa8, 0x4b, 0x64, 0x6a, 0x78, 0xaa, 0x52, 0xe5, 0xdc, 0xca, 0x31, 0xd5, 0xe4, 0xd4, 0x3b,
|
0x99, 0x39, 0x09, 0xb1, 0x46, 0xe6, 0x86, 0xe7, 0x2a, 0x35, 0xce, 0xad, 0x1e, 0x73, 0x4d, 0x8e,
|
||||||
0x32, 0x2c, 0x27, 0xb0, 0x27, 0x91, 0x17, 0x2c, 0x84, 0x94, 0x2b, 0x08, 0xdc, 0x8b, 0x61, 0xe4,
|
0x83, 0x91, 0xed, 0x7a, 0x94, 0x0c, 0x59, 0x40, 0x8f, 0x95, 0x94, 0xcb, 0xe3, 0x60, 0xb4, 0x1b,
|
||||||
0x2d, 0x00, 0xcb, 0x0d, 0x8d, 0x09, 0x93, 0x83, 0xc9, 0xda, 0x1e, 0x12, 0xc9, 0x5b, 0x9e, 0x4d,
|
0xc3, 0xd0, 0x4d, 0x00, 0xd7, 0x8f, 0xec, 0xa1, 0x90, 0x43, 0xc8, 0x5a, 0xef, 0x22, 0xbd, 0xb6,
|
||||||
0xbd, 0x85, 0x58, 0x42, 0xd8, 0x77, 0xa1, 0x43, 0x7d, 0xdd, 0x98, 0xf1, 0x63, 0x15, 0xf6, 0xeb,
|
0x3e, 0x9b, 0xb8, 0xe6, 0xfa, 0x91, 0x12, 0xf6, 0x03, 0x68, 0x70, 0x5f, 0xb7, 0x27, 0xf2, 0x58,
|
||||||
0x78, 0xec, 0xda, 0xc3, 0x75, 0x45, 0x62, 0x79, 0xe6, 0xf4, 0x15, 0x3f, 0x19, 0x84, 0xe4, 0x43,
|
0x45, 0xed, 0x85, 0xed, 0xca, 0xd5, 0x7a, 0x77, 0xdd, 0x90, 0x58, 0x9f, 0x39, 0xbc, 0x1c, 0x26,
|
||||||
0x68, 0x30, 0x5f, 0x0b, 0xfb, 0x0d, 0xb6, 0xe6, 0xa5, 0x82, 0x5d, 0x72, 0x2e, 0x37, 0x6e, 0x33,
|
0x83, 0x08, 0xdd, 0x81, 0x45, 0xe1, 0x6b, 0x51, 0x7b, 0x51, 0xd0, 0x5c, 0x29, 0xd8, 0xa5, 0x5c,
|
||||||
0xbc, 0x7d, 0x37, 0x0a, 0x16, 0xba, 0x58, 0x44, 0x6e, 0x43, 0xdb, 0x74, 0x5d, 0x2f, 0x32, 0xb9,
|
0xe5, 0xc6, 0x7d, 0x81, 0xb7, 0xe7, 0x33, 0x7a, 0x8c, 0x15, 0x11, 0xba, 0x0f, 0x75, 0xc7, 0xf7,
|
||||||
0xc1, 0x97, 0x19, 0x8d, 0xed, 0x72, 0x1a, 0x3b, 0x09, 0x32, 0x27, 0xa4, 0x2e, 0x27, 0x3f, 0x81,
|
0x03, 0xe6, 0x48, 0x83, 0x2f, 0x09, 0x1e, 0xd7, 0x67, 0xf3, 0xe8, 0x25, 0xc8, 0x92, 0x91, 0x49,
|
||||||
0x3a, 0xf3, 0xff, 0x7e, 0x93, 0xed, 0xfa, 0xaa, 0xa4, 0x53, 0xe8, 0x98, 0x3a, 0x47, 0x1e, 0xbc,
|
0x8e, 0xfe, 0x17, 0x16, 0x84, 0xff, 0xb7, 0xab, 0x62, 0xd7, 0x17, 0x35, 0x9f, 0x42, 0xc7, 0xc4,
|
||||||
0x0b, 0x6d, 0x45, 0x34, 0xea, 0x18, 0x8f, 0xed, 0x85, 0xf0, 0x15, 0xfa, 0x49, 0xd6, 0xa1, 0x7e,
|
0x12, 0xb9, 0xf3, 0x01, 0xd4, 0x0d, 0xd1, 0xb8, 0x63, 0x3c, 0x27, 0xc7, 0xca, 0x57, 0xf8, 0x27,
|
||||||
0x62, 0x4e, 0xe7, 0xb1, 0x3d, 0xf8, 0xe0, 0xbd, 0xea, 0xcf, 0x2a, 0x83, 0x9b, 0xd0, 0xcb, 0x4a,
|
0x5a, 0x87, 0x85, 0x23, 0x67, 0x3c, 0x8d, 0xed, 0x21, 0x07, 0xb7, 0xcb, 0xff, 0x5f, 0xea, 0xdc,
|
||||||
0x74, 0x9e, 0xf5, 0xda, 0x01, 0xac, 0xeb, 0x73, 0x37, 0x11, 0x2c, 0xbe, 0x08, 0xde, 0x82, 0x86,
|
0x85, 0x56, 0x56, 0xa2, 0xb3, 0xd0, 0x5b, 0xfb, 0xb0, 0x8e, 0xa7, 0x7e, 0x22, 0x58, 0x7c, 0x11,
|
||||||
0xb0, 0x1f, 0xf7, 0x9d, 0x4b, 0xa5, 0x1a, 0xd1, 0x05, 0xa2, 0xf6, 0x21, 0x5c, 0xcc, 0x90, 0x12,
|
0xdc, 0x84, 0x45, 0x65, 0x3f, 0xe9, 0x3b, 0xe7, 0x67, 0x6a, 0x04, 0x2b, 0x44, 0xeb, 0x0e, 0x9c,
|
||||||
0xd7, 0xc4, 0x8b, 0xd0, 0xf5, 0x3d, 0xcb, 0x08, 0x39, 0xd8, 0x40, 0x9f, 0x17, 0xe7, 0xcf, 0x97,
|
0xcb, 0xb0, 0x52, 0xd7, 0xc4, 0x1b, 0xd0, 0x0c, 0x03, 0xd7, 0x8e, 0x24, 0xd8, 0xf6, 0xdc, 0xf8,
|
||||||
0xb8, 0x07, 0x16, 0x5d, 0x3e, 0x8e, 0x3c, 0x3f, 0x2f, 0xca, 0xd9, 0x96, 0xf7, 0x61, 0x23, 0xbb,
|
0xfc, 0x85, 0x1a, 0x77, 0xdf, 0xe5, 0xe4, 0x03, 0x16, 0x84, 0x79, 0x51, 0x4e, 0x47, 0xde, 0x86,
|
||||||
0x9c, 0xb3, 0xd7, 0x3e, 0x82, 0x4d, 0xdd, 0x9e, 0x79, 0x27, 0xf6, 0xd3, 0x92, 0x1e, 0x40, 0x3f,
|
0x8d, 0x2c, 0xb9, 0x5c, 0xde, 0xfa, 0x18, 0x36, 0x31, 0x99, 0x04, 0x47, 0xe4, 0x65, 0x59, 0x77,
|
||||||
0x4f, 0x20, 0x21, 0x9e, 0x40, 0xc7, 0x68, 0x86, 0x79, 0x78, 0x3e, 0xe2, 0xaf, 0xaa, 0x04, 0x44,
|
0xa0, 0x9d, 0x67, 0x90, 0x30, 0x4f, 0xa0, 0x03, 0xe6, 0xb0, 0x69, 0x74, 0x36, 0xe6, 0xd7, 0x4c,
|
||||||
0x00, 0xe4, 0x74, 0x48, 0x17, 0xaa, 0x18, 0xe3, 0xf9, 0x22, 0xfc, 0xd2, 0xbe, 0x82, 0xd6, 0x48,
|
0x06, 0x2a, 0x00, 0x4a, 0x3e, 0xa8, 0x09, 0x65, 0x2f, 0x54, 0x44, 0x65, 0x2f, 0xb4, 0xbe, 0x86,
|
||||||
0x8d, 0x06, 0x6a, 0x04, 0xc5, 0x2b, 0x4a, 0x0c, 0xc9, 0x30, 0xb9, 0xbc, 0xbe, 0x2b, 0x7c, 0xc9,
|
0x5a, 0xdf, 0x8c, 0x06, 0x66, 0x04, 0xad, 0xe1, 0x78, 0x88, 0xba, 0xc9, 0xe5, 0xf5, 0x43, 0xe1,
|
||||||
0x6b, 0xed, 0x56, 0x2e, 0x74, 0x0a, 0x19, 0x86, 0x00, 0x32, 0x02, 0x85, 0xc2, 0x17, 0x48, 0x9e,
|
0x4b, 0x5f, 0x6b, 0xf7, 0x72, 0xa1, 0x53, 0xc9, 0xd0, 0x05, 0xd0, 0x11, 0x28, 0x52, 0xbe, 0x80,
|
||||||
0x9e, 0xae, 0x60, 0x69, 0x7f, 0x4a, 0x85, 0x23, 0x65, 0x33, 0x96, 0xdc, 0x8c, 0x95, 0x0a, 0x4f,
|
0xf2, 0xfc, 0xb0, 0x81, 0x65, 0xfd, 0x31, 0x15, 0x8e, 0x8c, 0xcd, 0xb8, 0x7a, 0x33, 0x6e, 0x2a,
|
||||||
0xd5, 0xf3, 0x84, 0xa7, 0x1b, 0x50, 0x0f, 0x91, 0x24, 0x0f, 0x90, 0x5d, 0x65, 0x73, 0x62, 0xd5,
|
0x3c, 0x95, 0xcf, 0x12, 0x9e, 0x6e, 0xc0, 0x42, 0xc4, 0x1c, 0x26, 0x03, 0x64, 0xd3, 0xd8, 0x5c,
|
||||||
0x27, 0x9c, 0xa5, 0xad, 0x73, 0x34, 0x72, 0x05, 0x60, 0x82, 0x17, 0x57, 0x64, 0x5b, 0x86, 0xc9,
|
0x7a, 0x49, 0x82, 0x25, 0x1a, 0xba, 0x00, 0x30, 0xa4, 0xc4, 0x61, 0xc4, 0xb5, 0x1d, 0x19, 0x39,
|
||||||
0x23, 0x67, 0x4d, 0x6f, 0x09, 0xc8, 0x4e, 0x44, 0xde, 0x4b, 0xf4, 0x58, 0x67, 0x62, 0x6c, 0x15,
|
0x2b, 0xb8, 0xa6, 0x20, 0x3d, 0x86, 0x6e, 0x27, 0x7a, 0x5c, 0x10, 0x62, 0x6c, 0x17, 0x30, 0x4c,
|
||||||
0x88, 0x91, 0xb2, 0x4b, 0xa2, 0x69, 0x79, 0xda, 0x1b, 0xa7, 0x9f, 0x76, 0xb1, 0x8e, 0x23, 0x2b,
|
0xd9, 0x25, 0xd1, 0xb4, 0x3e, 0xed, 0x8b, 0x27, 0x9f, 0x76, 0x45, 0x27, 0x91, 0x8d, 0x80, 0xb5,
|
||||||
0x01, 0x6b, 0xb9, 0x34, 0x60, 0xf1, 0x15, 0x67, 0x09, 0x58, 0xcd, 0xd2, 0x80, 0x25, 0x68, 0x9c,
|
0x34, 0x33, 0x60, 0x49, 0x8a, 0xd3, 0x04, 0xac, 0xea, 0xcc, 0x80, 0xa5, 0x78, 0x9c, 0x18, 0xb0,
|
||||||
0x1a, 0xb0, 0x7e, 0xc8, 0xd0, 0x73, 0x07, 0xfa, 0xf9, 0xa3, 0x23, 0x42, 0x06, 0x86, 0x9f, 0x90,
|
0x7e, 0xca, 0xd0, 0xf3, 0x00, 0xda, 0xf9, 0xa3, 0xa3, 0x42, 0xc6, 0x4d, 0x58, 0x8c, 0x04, 0xe4,
|
||||||
0x41, 0x4e, 0x09, 0x3f, 0x62, 0x89, 0x40, 0xd4, 0xfe, 0x55, 0x51, 0xbd, 0xee, 0x53, 0x67, 0x1a,
|
0x84, 0xf0, 0xa3, 0x48, 0x14, 0xa2, 0xf5, 0x8f, 0x92, 0xe9, 0x75, 0x9f, 0x79, 0x63, 0x46, 0x68,
|
||||||
0xd9, 0x41, 0xce, 0xeb, 0xa4, 0xf3, 0x54, 0xcf, 0xe6, 0x3c, 0x63, 0xe8, 0x32, 0xb5, 0x1b, 0x98,
|
0xce, 0xeb, 0xb4, 0xf3, 0x94, 0x4f, 0xe7, 0x3c, 0x03, 0x68, 0x0a, 0xb5, 0xdb, 0x11, 0x19, 0x8b,
|
||||||
0xd7, 0xb0, 0xdb, 0x8d, 0xe5, 0x83, 0xed, 0xe1, 0xeb, 0x05, 0xf2, 0x70, 0x96, 0xdc, 0x66, 0x63,
|
0xdb, 0x4d, 0xe4, 0x83, 0xf5, 0xee, 0x3b, 0x05, 0x84, 0x72, 0x49, 0x69, 0xb3, 0x81, 0x42, 0x97,
|
||||||
0x81, 0xce, 0x35, 0xde, 0x99, 0xaa, 0xb0, 0xc1, 0xc7, 0x40, 0xf2, 0x48, 0xe7, 0x52, 0xdd, 0xe7,
|
0x1a, 0x6f, 0x8c, 0x4d, 0x58, 0xe7, 0x13, 0x40, 0x79, 0xa4, 0x33, 0xa9, 0xee, 0x0b, 0x7e, 0x5c,
|
||||||
0xf4, 0xb8, 0xd2, 0x74, 0xb0, 0x20, 0x6c, 0x3f, 0x64, 0x62, 0x9c, 0xa2, 0x37, 0x2e, 0xa7, 0x2e,
|
0x79, 0x3a, 0x58, 0x10, 0xb6, 0x9f, 0x0a, 0x31, 0x4e, 0xd0, 0x9b, 0x94, 0x13, 0x2b, 0x44, 0xeb,
|
||||||
0x10, 0xb5, 0x3f, 0xd6, 0x00, 0x92, 0xc9, 0x67, 0xf6, 0x9c, 0xbe, 0x23, 0x4f, 0x0d, 0x4f, 0x0d,
|
0x0f, 0x15, 0x80, 0x64, 0xf2, 0x95, 0x3d, 0xa7, 0xb7, 0xf4, 0xa9, 0x91, 0xa9, 0xc1, 0xa5, 0x02,
|
||||||
0xae, 0x15, 0x48, 0x51, 0x78, 0x5e, 0x3e, 0x4d, 0x9f, 0x17, 0x9e, 0x24, 0xbc, 0x58, 0xb4, 0xfa,
|
0x7e, 0x85, 0xe7, 0xe5, 0xb3, 0xf4, 0x79, 0x91, 0x49, 0xc2, 0x1b, 0x45, 0xd4, 0xaf, 0xec, 0x49,
|
||||||
0x99, 0x3d, 0x29, 0xbb, 0xb0, 0x91, 0x35, 0xb7, 0x38, 0x27, 0xaf, 0x42, 0xdd, 0xc1, 0x1c, 0x90,
|
0xd9, 0x81, 0x8d, 0xac, 0xb9, 0xd5, 0x39, 0xb9, 0x06, 0x0b, 0x1e, 0x23, 0x13, 0x59, 0xdc, 0xd4,
|
||||||
0x17, 0x37, 0xed, 0xe1, 0x5a, 0xc1, 0xb6, 0x74, 0x8e, 0xa1, 0x5d, 0x87, 0xd6, 0xc1, 0xcc, 0x3c,
|
0xbb, 0x6b, 0x05, 0xdb, 0xc2, 0x12, 0xc3, 0xba, 0x0c, 0xb5, 0xfd, 0x89, 0x33, 0x22, 0x83, 0x90,
|
||||||
0xb2, 0xc7, 0xbe, 0x3d, 0xa1, 0xbc, 0x1c, 0x3a, 0x10, 0xfc, 0xf9, 0x40, 0x1b, 0x42, 0xf3, 0x96,
|
0x0c, 0xf9, 0x5a, 0x1e, 0x1f, 0xa8, 0xf5, 0xe5, 0xc0, 0xea, 0x42, 0xf5, 0x1e, 0x39, 0xfe, 0x92,
|
||||||
0xbd, 0xf8, 0x82, 0xf2, 0x3d, 0xab, 0x7c, 0xda, 0x3f, 0x2a, 0xb0, 0xc9, 0xc2, 0xdd, 0x6e, 0x5c,
|
0xaf, 0x7b, 0x5a, 0xf9, 0xac, 0xbf, 0x95, 0x60, 0x53, 0x84, 0xbb, 0x9d, 0xb8, 0xb4, 0xc0, 0x24,
|
||||||
0x5a, 0xa0, 0x70, 0xde, 0x3c, 0xc0, 0x8b, 0x80, 0x99, 0xd4, 0x9f, 0x1b, 0xbe, 0x1d, 0x38, 0x1e,
|
0x0a, 0xa6, 0x74, 0x48, 0x22, 0x61, 0xd2, 0x70, 0x6a, 0x87, 0x84, 0x7a, 0x81, 0xf4, 0x29, 0x6e,
|
||||||
0xf7, 0x29, 0x6a, 0x52, 0x7f, 0x7e, 0xc8, 0x00, 0xb4, 0xfc, 0xa0, 0xd3, 0xdf, 0xcc, 0x3d, 0xe1,
|
0xd2, 0x70, 0x7a, 0x20, 0x00, 0xbc, 0xfc, 0xe0, 0xd3, 0xdf, 0x4e, 0x03, 0xe5, 0x5b, 0x15, 0x5c,
|
||||||
0x5b, 0x35, 0xbd, 0x89, 0x80, 0x5f, 0xd0, 0x71, 0xbc, 0x36, 0x3c, 0xc6, 0xec, 0x3c, 0x64, 0x3e,
|
0x1d, 0x86, 0xd3, 0x9f, 0xf3, 0x71, 0x4c, 0x1b, 0x1d, 0x3a, 0x94, 0x44, 0xc2, 0x87, 0x24, 0xed,
|
||||||
0xc4, 0xd7, 0x8e, 0x19, 0x00, 0x1d, 0xfd, 0xe2, 0x0c, 0xef, 0xe4, 0x60, 0x61, 0x4c, 0x9d, 0x99,
|
0x40, 0x00, 0xd0, 0x4d, 0x38, 0x37, 0x21, 0x93, 0x80, 0x1e, 0xdb, 0x63, 0x6f, 0xe2, 0x31, 0xdb,
|
||||||
0x83, 0xf5, 0x80, 0x6b, 0x3c, 0x58, 0x44, 0x88, 0xc9, 0x1d, 0x87, 0xf0, 0xc9, 0xdb, 0x74, 0xee,
|
0xf3, 0xed, 0x27, 0xc7, 0x8c, 0x44, 0xca, 0x71, 0x90, 0x9c, 0xbc, 0xcf, 0xe7, 0xf6, 0xfd, 0x4f,
|
||||||
0xc0, 0xfd, 0x84, 0xce, 0x10, 0x0d, 0x3a, 0x9e, 0x37, 0x33, 0xc2, 0x89, 0x17, 0x60, 0x25, 0x69,
|
0xf9, 0x0c, 0xb2, 0xa0, 0x11, 0x04, 0x13, 0x3b, 0x1a, 0x06, 0x94, 0xd8, 0x8e, 0xfb, 0x4c, 0xc4,
|
||||||
0x3d, 0x62, 0xf1, 0xbe, 0xa6, 0xb7, 0x11, 0x38, 0xa6, 0xb0, 0x1d, 0xeb, 0x91, 0x66, 0x42, 0x67,
|
0xfb, 0x0a, 0xae, 0x07, 0xc1, 0x64, 0xc0, 0x61, 0x3d, 0xf7, 0x99, 0xe5, 0x40, 0x63, 0xb0, 0x27,
|
||||||
0xbc, 0xcf, 0xb6, 0x23, 0xaa, 0x15, 0x4c, 0xdc, 0xe7, 0xa1, 0x38, 0x4e, 0x98, 0xb8, 0xd3, 0x6f,
|
0xb6, 0xa3, 0xaa, 0x15, 0x04, 0xf3, 0xd3, 0x48, 0x1d, 0xa7, 0x1a, 0x16, 0xdf, 0x1c, 0x46, 0x83,
|
||||||
0x0a, 0x0b, 0xbc, 0x69, 0xac, 0x07, 0xf6, 0x4d, 0x61, 0xd1, 0xc2, 0x8f, 0xb3, 0x76, 0xf6, 0x4d,
|
0x71, 0xac, 0x07, 0xf1, 0xcd, 0x61, 0xec, 0x38, 0x8c, 0xb3, 0x76, 0xf1, 0xcd, 0x15, 0x36, 0x26,
|
||||||
0x15, 0x36, 0xb5, 0x4f, 0x44, 0x6d, 0x84, 0x0a, 0x63, 0x03, 0xcd, 0x02, 0xd8, 0x35, 0x7d, 0xf3,
|
0x47, 0xaa, 0x36, 0xaa, 0x61, 0x39, 0xb0, 0x5c, 0x80, 0x1d, 0x27, 0x74, 0x9e, 0x78, 0x63, 0x8f,
|
||||||
0x81, 0x33, 0x75, 0xa2, 0x05, 0x1a, 0xb0, 0x67, 0x5a, 0x96, 0x31, 0x89, 0x21, 0x8e, 0x1d, 0x17,
|
0x1d, 0xa3, 0x6b, 0xd0, 0x72, 0x5c, 0xd7, 0x1e, 0xc6, 0x10, 0x8f, 0xc4, 0x85, 0xea, 0x8a, 0xe3,
|
||||||
0xaa, 0xab, 0x08, 0xdf, 0x55, 0xc0, 0xe4, 0x35, 0xb8, 0x60, 0x05, 0x9e, 0x9f, 0xc6, 0xe5, 0x95,
|
0xba, 0x3b, 0x06, 0x18, 0xbd, 0x0d, 0xab, 0x2e, 0x0d, 0xc2, 0x34, 0xae, 0xac, 0x5c, 0x5b, 0x7c,
|
||||||
0x6b, 0x8f, 0x4e, 0xa8, 0xc8, 0xda, 0x7f, 0x2b, 0xb0, 0x9e, 0x36, 0x8b, 0xc8, 0xb4, 0x6f, 0x42,
|
0xc2, 0x44, 0xb6, 0xfe, 0x5d, 0x82, 0xf5, 0xb4, 0x59, 0x54, 0xa6, 0x7d, 0x17, 0x6a, 0x34, 0x36,
|
||||||
0x2b, 0x88, 0x0d, 0x24, 0x82, 0xc4, 0x56, 0xfa, 0xde, 0xca, 0x1b, 0x52, 0x4f, 0x96, 0xe0, 0x39,
|
0x90, 0x0a, 0x12, 0xdb, 0xe9, 0x7b, 0x2b, 0x6f, 0x48, 0x9c, 0x90, 0xa0, 0x5b, 0xb0, 0x9c, 0x11,
|
||||||
0x5c, 0xc9, 0x08, 0x50, 0x49, 0x39, 0x5e, 0xb2, 0x37, 0x3d, 0x85, 0x48, 0x3e, 0x4a, 0x6a, 0xc6,
|
0xa0, 0x94, 0x72, 0xbc, 0x64, 0x6f, 0x38, 0x85, 0x88, 0x3e, 0x4e, 0x6a, 0xc6, 0xa4, 0xb6, 0xe6,
|
||||||
0xa4, 0xb6, 0xa6, 0x6b, 0x37, 0xe4, 0xda, 0x94, 0xea, 0x65, 0x2d, 0x29, 0x2a, 0x2b, 0xf2, 0x23,
|
0xb4, 0x1b, 0x9a, 0x36, 0xa5, 0x7a, 0x5d, 0x4b, 0xaa, 0xca, 0x0a, 0xbd, 0xa9, 0x4c, 0x91, 0x2d,
|
||||||
0x61, 0x8a, 0x6c, 0x41, 0xc1, 0xd6, 0xdc, 0xc7, 0x19, 0x6e, 0x1e, 0xed, 0x4b, 0x68, 0x49, 0x50,
|
0x28, 0x04, 0xcd, 0xe3, 0x88, 0x50, 0x69, 0x1e, 0xeb, 0x2b, 0xa8, 0x69, 0x50, 0x5c, 0x64, 0x49,
|
||||||
0x5c, 0x64, 0x71, 0xdf, 0x63, 0x45, 0x16, 0x42, 0x8e, 0x44, 0xd9, 0x85, 0x10, 0xfc, 0xa4, 0xd5,
|
0xdf, 0x13, 0x45, 0x56, 0x0b, 0x2a, 0x23, 0x55, 0x76, 0x55, 0x30, 0xff, 0xe4, 0xd5, 0xac, 0xe3,
|
||||||
0x2c, 0xea, 0xda, 0xa1, 0x5c, 0xcc, 0xa9, 0x81, 0x10, 0x5e, 0xf5, 0xd7, 0xf4, 0x6e, 0x02, 0xfe,
|
0xba, 0x1e, 0x5f, 0xc5, 0x19, 0xdb, 0x23, 0xcf, 0x95, 0x55, 0x7f, 0x05, 0x37, 0x13, 0xf0, 0xe7,
|
||||||
0x0c, 0xa1, 0xda, 0x0e, 0x5c, 0x90, 0xca, 0x39, 0xb5, 0xb4, 0x53, 0x4a, 0xb5, 0x6a, 0xba, 0x54,
|
0x9e, 0x1b, 0x59, 0x3d, 0x58, 0xd5, 0xca, 0x39, 0xb1, 0xb4, 0x33, 0x4a, 0xb5, 0x72, 0xba, 0x54,
|
||||||
0xfb, 0x4f, 0x1d, 0x56, 0xb3, 0x26, 0x79, 0x3b, 0x57, 0xa9, 0x0d, 0x12, 0x75, 0x66, 0xf9, 0x29,
|
0xfb, 0xd7, 0x02, 0xac, 0x64, 0x4d, 0xf2, 0x7e, 0xae, 0x52, 0xeb, 0x24, 0xea, 0xcc, 0xae, 0x67,
|
||||||
0x11, 0xf6, 0x95, 0xf8, 0x10, 0x57, 0x33, 0x1a, 0x91, 0xe7, 0x5c, 0x1c, 0x6c, 0x2a, 0xcf, 0xc4,
|
0x44, 0xd8, 0xab, 0xf1, 0x21, 0x2e, 0x67, 0x34, 0xa2, 0xcf, 0xb9, 0x3a, 0xd8, 0x5c, 0x9e, 0x61,
|
||||||
0x9b, 0xcd, 0x30, 0x20, 0xc4, 0xfd, 0x0c, 0x31, 0xa4, 0xd2, 0x9b, 0xc1, 0x11, 0x3d, 0x36, 0x14,
|
0x30, 0x99, 0x38, 0xbe, 0x1b, 0xf7, 0x33, 0xd4, 0x90, 0x4b, 0xef, 0xd0, 0x11, 0x3f, 0x36, 0x1c,
|
||||||
0xcc, 0xbe, 0xc9, 0x35, 0x68, 0xd3, 0xf4, 0x06, 0xab, 0x2b, 0x5a, 0xe8, 0xb1, 0x63, 0xd2, 0xd2,
|
0x2c, 0xbe, 0xd1, 0x25, 0xa8, 0xf3, 0xf4, 0xc6, 0xf3, 0x45, 0xa1, 0x27, 0x8e, 0x49, 0x0d, 0x83,
|
||||||
0x41, 0x80, 0xb0, 0xcc, 0x23, 0x2f, 0xc1, 0x92, 0xed, 0x9e, 0xc4, 0xb1, 0x34, 0x69, 0x78, 0xc4,
|
0x02, 0xed, 0x7a, 0x14, 0x5d, 0x81, 0x79, 0xe2, 0x1f, 0xc5, 0xb1, 0x34, 0x69, 0x78, 0xc4, 0xc1,
|
||||||
0xc1, 0x43, 0x67, 0xd3, 0x68, 0xb0, 0xc6, 0x8c, 0xb6, 0x23, 0xe2, 0x44, 0xa7, 0x2b, 0x11, 0x59,
|
0x03, 0x8b, 0x69, 0xf4, 0x26, 0x2c, 0x4e, 0x82, 0xa9, 0xcf, 0xe2, 0x44, 0xa7, 0xa9, 0x11, 0x45,
|
||||||
0x97, 0x42, 0x17, 0xb3, 0xe4, 0x03, 0x19, 0xda, 0x9b, 0x99, 0xe0, 0x9c, 0xd1, 0x54, 0x61, 0x7c,
|
0x97, 0x02, 0xab, 0x59, 0xf4, 0x91, 0x0e, 0xed, 0xd5, 0x4c, 0x70, 0xce, 0x68, 0xaa, 0x30, 0xbe,
|
||||||
0xbf, 0x95, 0x8e, 0xef, 0x2d, 0x46, 0xe2, 0xd5, 0x52, 0x12, 0xa7, 0xd7, 0x6f, 0x57, 0x01, 0xfc,
|
0xdf, 0x4b, 0xc7, 0xf7, 0x9a, 0x60, 0x71, 0x6d, 0x26, 0x8b, 0x93, 0xeb, 0xb7, 0x8b, 0x00, 0x21,
|
||||||
0xc0, 0x39, 0x71, 0xa6, 0xf6, 0x91, 0x6d, 0xf5, 0x81, 0x35, 0x18, 0x14, 0x08, 0x6b, 0x5a, 0x89,
|
0xf5, 0x8e, 0xbc, 0x31, 0x19, 0x11, 0xb7, 0x0d, 0xa2, 0xc1, 0x60, 0x40, 0x44, 0xd3, 0x4a, 0x35,
|
||||||
0x26, 0x88, 0x11, 0x78, 0x5e, 0xf4, 0x30, 0xec, 0xb7, 0x79, 0xe3, 0x23, 0x06, 0xeb, 0x0c, 0x4a,
|
0x41, 0x6c, 0x1a, 0x04, 0xec, 0x69, 0xd4, 0xae, 0xcb, 0xc6, 0x47, 0x0c, 0xc6, 0x02, 0x8a, 0xce,
|
||||||
0xfb, 0x14, 0xb4, 0x50, 0x66, 0x9d, 0x95, 0x15, 0x9e, 0x9f, 0xe3, 0x98, 0x35, 0x56, 0xd6, 0xe9,
|
0x43, 0x95, 0x17, 0xca, 0xa2, 0xb3, 0xb2, 0x2c, 0xf3, 0xf3, 0x71, 0x30, 0x12, 0x8d, 0x95, 0x75,
|
||||||
0xc5, 0x68, 0x39, 0x6e, 0xbf, 0xc3, 0x56, 0xf2, 0x01, 0x8d, 0x77, 0xec, 0xc3, 0xf0, 0x5c, 0x2c,
|
0x7e, 0x31, 0xba, 0x9e, 0xdf, 0x6e, 0x08, 0x4a, 0x39, 0xe0, 0xf1, 0x4e, 0x7c, 0xd8, 0x81, 0x3f,
|
||||||
0xfe, 0xbb, 0x6c, 0xaa, 0xc5, 0x20, 0x77, 0x11, 0x40, 0xbd, 0x36, 0x8a, 0x16, 0xfd, 0x55, 0x06,
|
0x24, 0xed, 0xa6, 0x98, 0xaa, 0x09, 0xc8, 0x43, 0x7f, 0x28, 0xc2, 0x31, 0x63, 0xc7, 0xed, 0x15,
|
||||||
0xa7, 0x9f, 0xe4, 0xc7, 0x71, 0xf2, 0xd9, 0x63, 0xd6, 0xbf, 0x52, 0x72, 0x88, 0x9f, 0x99, 0x4a,
|
0x01, 0xe7, 0x9f, 0xe8, 0x7f, 0xe2, 0xe4, 0xb3, 0x25, 0xac, 0x7f, 0x61, 0xc6, 0x21, 0x7e, 0x65,
|
||||||
0xf3, 0xaf, 0x15, 0xd8, 0xd8, 0x65, 0xd7, 0xb9, 0x12, 0x60, 0xce, 0x51, 0x29, 0x91, 0x37, 0x65,
|
0x2a, 0xcd, 0x3f, 0x97, 0x60, 0x63, 0x47, 0x5c, 0xe7, 0x46, 0x80, 0x39, 0x43, 0xa5, 0x84, 0xde,
|
||||||
0x49, 0x9a, 0x2d, 0x6b, 0xb2, 0x9b, 0x15, 0x78, 0xe4, 0x63, 0xe8, 0xc6, 0x34, 0xc5, 0xca, 0xda,
|
0xd3, 0x25, 0x69, 0xb6, 0xac, 0xc9, 0x6e, 0x56, 0xe1, 0xa1, 0x4f, 0xa0, 0x19, 0xf3, 0x54, 0x94,
|
||||||
0x77, 0x15, 0xb3, 0x9d, 0x50, 0x1d, 0x6a, 0x1f, 0xc0, 0x66, 0x4e, 0x66, 0x71, 0xf5, 0x5e, 0xc7,
|
0x95, 0x1f, 0x2a, 0x66, 0x1b, 0x91, 0x39, 0xb4, 0x3e, 0x82, 0xcd, 0x9c, 0xcc, 0xea, 0xea, 0xbd,
|
||||||
0x40, 0x28, 0x7b, 0x6c, 0x52, 0xe4, 0xb6, 0x84, 0x61, 0x6d, 0xf7, 0x1e, 0x2d, 0x69, 0xcd, 0x20,
|
0x0c, 0xcb, 0x49, 0x8f, 0x4d, 0x8b, 0x5c, 0xd7, 0xb0, 0x7d, 0xd7, 0xba, 0xcd, 0x4b, 0x5a, 0x87,
|
||||||
0xca, 0x6d, 0xf8, 0x0c, 0x6b, 0x59, 0x3d, 0x9b, 0x5e, 0x2b, 0x4a, 0xce, 0x31, 0xac, 0xd3, 0x4a,
|
0xb2, 0xdc, 0x86, 0x4f, 0x41, 0x2b, 0xea, 0xd9, 0x34, 0xad, 0x2a, 0x39, 0x07, 0xb0, 0xce, 0x2b,
|
||||||
0xf7, 0x29, 0x88, 0xd2, 0x38, 0x40, 0xb7, 0xed, 0xcd, 0x23, 0x11, 0xff, 0xe2, 0xa1, 0xb6, 0xc9,
|
0xdd, 0x97, 0x60, 0xca, 0xe3, 0x00, 0xdf, 0x76, 0x30, 0x65, 0x2a, 0xfe, 0xc5, 0x43, 0x6b, 0x53,
|
||||||
0xab, 0xef, 0x3c, 0xb7, 0xf7, 0x61, 0x83, 0x17, 0xbf, 0x4f, 0xb3, 0x89, 0x4b, 0x71, 0xe9, 0x9d,
|
0x56, 0xdf, 0xf9, 0xd5, 0x3e, 0x84, 0x0d, 0x59, 0xfc, 0xbe, 0xcc, 0x26, 0xce, 0xc7, 0xa5, 0x77,
|
||||||
0xa7, 0xfb, 0xbb, 0xaa, 0x12, 0x08, 0x4b, 0xb2, 0xf5, 0x37, 0xd2, 0xd9, 0xfa, 0x66, 0xde, 0xe0,
|
0x9e, 0xef, 0x6f, 0xcb, 0x46, 0x20, 0x9c, 0x91, 0xad, 0xbf, 0x9b, 0xce, 0xd6, 0x37, 0xf3, 0x06,
|
||||||
0xa9, 0x0c, 0x32, 0xef, 0x46, 0xb5, 0x02, 0x37, 0xd2, 0x73, 0x29, 0xfd, 0x12, 0x0b, 0x19, 0xaf,
|
0x4f, 0x65, 0x90, 0x79, 0x37, 0xaa, 0x14, 0xb8, 0x11, 0xce, 0xa5, 0xf4, 0xf3, 0x22, 0x64, 0xbc,
|
||||||
0xe5, 0xa9, 0xff, 0x1f, 0x33, 0xfa, 0x03, 0x9e, 0xd1, 0x4b, 0xd6, 0xb2, 0x8b, 0xf0, 0x66, 0x26,
|
0x9d, 0xe7, 0xfe, 0x5f, 0xcc, 0xe8, 0xf7, 0x65, 0x46, 0xaf, 0x97, 0xd6, 0x5d, 0x84, 0xf7, 0x32,
|
||||||
0xa3, 0xef, 0x97, 0x89, 0x29, 0x13, 0xfa, 0xdf, 0x2e, 0x41, 0x4b, 0xce, 0xe5, 0x74, 0x9a, 0x57,
|
0x19, 0x7d, 0x7b, 0x96, 0x98, 0x3a, 0xa1, 0xff, 0xcd, 0x3c, 0xd4, 0xf4, 0x5c, 0x4e, 0xa7, 0x79,
|
||||||
0x52, 0xb5, 0x40, 0x49, 0xea, 0x95, 0x54, 0x7b, 0x9a, 0x2b, 0x69, 0xe9, 0xbb, 0xae, 0x24, 0x4c,
|
0x25, 0x95, 0x0b, 0x94, 0x64, 0x5e, 0x49, 0x95, 0x97, 0xb9, 0x92, 0xe6, 0x7f, 0xe8, 0x4a, 0xda,
|
||||||
0xfe, 0xd8, 0x87, 0x11, 0xd8, 0x0f, 0xc5, 0x15, 0xd3, 0x64, 0x00, 0xdd, 0x7e, 0x98, 0x18, 0xbe,
|
0x82, 0x9a, 0xf8, 0xb0, 0x29, 0x79, 0xaa, 0xae, 0x98, 0xaa, 0x00, 0x60, 0xf2, 0x34, 0x31, 0xfc,
|
||||||
0x71, 0x26, 0xc3, 0xa7, 0x4b, 0x87, 0xe5, 0x6c, 0xe9, 0xf0, 0x76, 0xe6, 0x7e, 0xb9, 0x9a, 0x27,
|
0xe2, 0xa9, 0x0c, 0x9f, 0x2e, 0x1d, 0x96, 0xb2, 0xa5, 0xc3, 0xfb, 0x99, 0xfb, 0xe5, 0x62, 0x9e,
|
||||||
0x57, 0x78, 0xb3, 0xec, 0x17, 0xdd, 0x2c, 0x2f, 0x14, 0x2c, 0x7e, 0x66, 0x0b, 0x87, 0xdb, 0xbc,
|
0x5d, 0xe1, 0xcd, 0xb2, 0x57, 0x74, 0xb3, 0xbc, 0x5e, 0x40, 0xfc, 0xca, 0x16, 0x0e, 0xf7, 0x65,
|
||||||
0x70, 0x50, 0xbd, 0x4a, 0x44, 0xaf, 0x21, 0xaa, 0x4c, 0x42, 0x45, 0xf5, 0x40, 0xf2, 0x5b, 0xd3,
|
0xe1, 0x60, 0x7a, 0x95, 0x8a, 0x5e, 0x5d, 0x00, 0x7d, 0x50, 0xe3, 0xea, 0x01, 0xe5, 0xb7, 0x86,
|
||||||
0x15, 0x2c, 0x1a, 0x0a, 0x52, 0xfa, 0x4f, 0x5a, 0x5d, 0x67, 0x08, 0x05, 0x7f, 0x51, 0x13, 0x9f,
|
0x0d, 0x2c, 0x1e, 0x0a, 0x52, 0xfa, 0x4f, 0x5a, 0x5d, 0xa7, 0x08, 0x05, 0x7f, 0x32, 0x13, 0x9f,
|
||||||
0x92, 0x9e, 0xd0, 0xdb, 0xb9, 0x5a, 0xf3, 0x6c, 0x5e, 0xf7, 0x46, 0xba, 0xd4, 0x3c, 0x9f, 0xbb,
|
0x19, 0x3d, 0xa1, 0xf7, 0x73, 0xb5, 0xe6, 0xe9, 0xbc, 0xee, 0xdd, 0x74, 0xa9, 0x79, 0x36, 0x77,
|
||||||
0xe4, 0x2a, 0x4d, 0x76, 0x13, 0x63, 0xe4, 0xe5, 0xd3, 0xbc, 0x48, 0x68, 0x09, 0x08, 0x4e, 0x63,
|
0xc9, 0x55, 0x9a, 0xe2, 0x26, 0x76, 0xa8, 0x9a, 0x96, 0x45, 0x42, 0x4d, 0x41, 0x7a, 0x8c, 0x67,
|
||||||
0x76, 0xf4, 0xd0, 0x71, 0x9d, 0xf0, 0x98, 0xcf, 0x37, 0xd8, 0x3c, 0xc4, 0xa0, 0x1d, 0xf6, 0x78,
|
0x47, 0x4f, 0x3d, 0xdf, 0x8b, 0x0e, 0xe5, 0xfc, 0xa2, 0x98, 0x87, 0x18, 0xd4, 0x13, 0x8f, 0x37,
|
||||||
0x63, 0x3f, 0xc1, 0x92, 0x64, 0xe2, 0x59, 0x36, 0x73, 0xc6, 0xba, 0xde, 0xa4, 0x80, 0x5d, 0x1c,
|
0xe4, 0x85, 0xc7, 0xec, 0x61, 0xe0, 0x12, 0xe1, 0x8c, 0x0b, 0xb8, 0xca, 0x01, 0x3b, 0x81, 0x4b,
|
||||||
0x27, 0x07, 0xa4, 0x79, 0xae, 0x03, 0xd2, 0xca, 0x1c, 0x90, 0x0d, 0x68, 0xa0, 0xbc, 0xa1, 0xe7,
|
0x92, 0x03, 0x52, 0x3d, 0xd3, 0x01, 0xa9, 0x65, 0x0e, 0xc8, 0x06, 0x2c, 0x52, 0xe2, 0x44, 0x81,
|
||||||
0xb2, 0x1c, 0xa5, 0xa5, 0x8b, 0x11, 0x0d, 0xf0, 0x33, 0x3b, 0x0c, 0x29, 0x83, 0x36, 0xcf, 0x3a,
|
0x2f, 0x72, 0x94, 0x1a, 0x56, 0x23, 0x1e, 0xe0, 0x27, 0x24, 0x8a, 0xf8, 0x02, 0x75, 0x99, 0x75,
|
||||||
0xc4, 0x50, 0x49, 0xb2, 0x56, 0xca, 0x92, 0xac, 0x53, 0x9a, 0x4e, 0x99, 0x24, 0xab, 0x53, 0x96,
|
0xa8, 0xa1, 0x91, 0x64, 0x2d, 0xcf, 0x4a, 0xb2, 0x4e, 0x68, 0x3a, 0x65, 0x92, 0xac, 0xc6, 0xac,
|
||||||
0x64, 0x9d, 0xa5, 0xe7, 0xa4, 0xe4, 0x85, 0xdd, 0xd3, 0xf2, 0xc2, 0x1f, 0xf2, 0xe0, 0xdc, 0xc2,
|
0x24, 0xeb, 0x34, 0x3d, 0x27, 0x23, 0x2f, 0x6c, 0x9e, 0x94, 0x17, 0xfe, 0x94, 0x07, 0xe7, 0x1e,
|
||||||
0x7b, 0x3f, 0xeb, 0xea, 0xe2, 0xe4, 0xbc, 0x99, 0x69, 0x4d, 0xf5, 0xcb, 0xb4, 0x20, 0x3b, 0x53,
|
0x6c, 0xe6, 0x5c, 0x5d, 0x9d, 0x9c, 0xf7, 0x32, 0xad, 0xa9, 0xf6, 0x2c, 0x2d, 0xe8, 0xce, 0xd4,
|
||||||
0xbf, 0x82, 0xd5, 0xfd, 0x27, 0xf6, 0x64, 0xbc, 0x70, 0x27, 0xe7, 0xb8, 0xab, 0x51, 0xdc, 0xc9,
|
0x2f, 0x61, 0x65, 0xef, 0x05, 0x19, 0x0e, 0x8e, 0xfd, 0xe1, 0x19, 0xee, 0xea, 0x16, 0x54, 0x86,
|
||||||
0xcc, 0x12, 0x05, 0x1e, 0xfd, 0x54, 0x6f, 0xef, 0x5a, 0xfa, 0xf6, 0x36, 0xa0, 0x97, 0x70, 0x10,
|
0x13, 0x57, 0x15, 0x78, 0xfc, 0xd3, 0xbc, 0xbd, 0x2b, 0xe9, 0xdb, 0xdb, 0x86, 0x56, 0xb2, 0x82,
|
||||||
0x72, 0x6e, 0x50, 0x39, 0x2d, 0x8a, 0x4c, 0x89, 0xaf, 0xe8, 0x62, 0x24, 0xe0, 0x76, 0x10, 0xb0,
|
0x92, 0x73, 0x83, 0xcb, 0xe9, 0x72, 0x64, 0xce, 0x7c, 0x19, 0xab, 0x91, 0x82, 0x13, 0x4a, 0xc5,
|
||||||
0x5d, 0x73, 0x38, 0x8e, 0xd2, 0x6e, 0x5b, 0x4b, 0xbb, 0xad, 0xf6, 0x08, 0xda, 0x94, 0xc1, 0xf7,
|
0xae, 0x25, 0x9c, 0x50, 0x9a, 0x76, 0xdb, 0x4a, 0xda, 0x6d, 0xad, 0x67, 0x50, 0xe7, 0x0b, 0xfc,
|
||||||
0x12, 0x5f, 0xa4, 0xb0, 0xb5, 0x24, 0x85, 0x95, 0x99, 0xf0, 0x92, 0x92, 0x09, 0x6b, 0x5b, 0xb0,
|
0x28, 0xf1, 0x55, 0x0a, 0x5b, 0x49, 0x52, 0x58, 0x9d, 0x09, 0xcf, 0x1b, 0x99, 0xb0, 0xb5, 0x0d,
|
||||||
0xc2, 0x79, 0x89, 0x8d, 0xd0, 0x12, 0x2e, 0x98, 0xc6, 0x76, 0xc3, 0x4f, 0xed, 0xe7, 0xd0, 0xd9,
|
0xcb, 0x72, 0x2d, 0xb5, 0x11, 0x5e, 0xc2, 0xd1, 0x71, 0x6c, 0xb7, 0x29, 0x1d, 0x5b, 0x3f, 0x83,
|
||||||
0x89, 0x22, 0x73, 0x72, 0x7c, 0x0e, 0x79, 0x24, 0xaf, 0xaa, 0xca, 0x4b, 0x83, 0x6e, 0x4c, 0xa9,
|
0x46, 0x8f, 0x31, 0x67, 0x78, 0x78, 0x06, 0x79, 0xf4, 0x5a, 0x65, 0x73, 0x2d, 0x0b, 0x9a, 0x31,
|
||||||
0x94, 0xdb, 0x88, 0xbe, 0xe8, 0x05, 0xd1, 0xa7, 0x5e, 0xf0, 0xad, 0x19, 0x58, 0xe7, 0xcb, 0x59,
|
0xa7, 0x99, 0xab, 0xf5, 0x01, 0x1d, 0x04, 0x94, 0x7d, 0x16, 0xd0, 0xef, 0x1c, 0xea, 0x9e, 0x2d,
|
||||||
0xb1, 0xbc, 0x12, 0xaf, 0xbc, 0x35, 0xd4, 0x27, 0xfb, 0xd6, 0x5e, 0x86, 0xb5, 0x14, 0xbd, 0x52,
|
0x67, 0x45, 0x30, 0xaf, 0x5e, 0x79, 0x2b, 0x57, 0x17, 0xb0, 0xf8, 0xb6, 0xde, 0x82, 0xb5, 0x14,
|
||||||
0xc6, 0xef, 0x40, 0x9b, 0x45, 0x05, 0x91, 0x1d, 0xbd, 0xa2, 0xf6, 0x6c, 0x4e, 0x0b, 0x1d, 0xb4,
|
0xbf, 0x99, 0x0b, 0xdf, 0x82, 0xba, 0x88, 0x0a, 0x2a, 0x3b, 0xba, 0x6a, 0xf6, 0x6c, 0x4e, 0x0a,
|
||||||
0x4e, 0xa5, 0x61, 0x9f, 0xc1, 0x65, 0x8c, 0x7e, 0x3d, 0x93, 0x48, 0xac, 0xa7, 0xd7, 0x67, 0x92,
|
0x1d, 0xbc, 0x4e, 0xe5, 0x61, 0x5f, 0xc0, 0x75, 0x8c, 0x7e, 0x27, 0x93, 0x48, 0xac, 0xa7, 0xe9,
|
||||||
0x88, 0xc7, 0x50, 0x67, 0xe0, 0x5c, 0x8c, 0xbe, 0x4c, 0xfb, 0x07, 0xbe, 0x67, 0x44, 0xe6, 0x91,
|
0x33, 0x49, 0xc4, 0x73, 0x58, 0x10, 0xe0, 0x5c, 0x8c, 0xde, 0x82, 0x1a, 0x25, 0x61, 0x60, 0x33,
|
||||||
0x7c, 0x37, 0xa7, 0x80, 0x7b, 0x38, 0x66, 0xcf, 0xfe, 0x74, 0xd2, 0x72, 0x90, 0x71, 0x14, 0x3f,
|
0x67, 0xa4, 0xdf, 0xcd, 0x39, 0xe0, 0x91, 0x33, 0x8a, 0xc4, 0xb3, 0x3f, 0x9f, 0x74, 0xbd, 0x11,
|
||||||
0x9e, 0xb7, 0x29, 0x6c, 0x8f, 0x83, 0xa8, 0x46, 0x42, 0xe7, 0xd7, 0x3c, 0x41, 0x58, 0xd2, 0xd9,
|
0x89, 0x58, 0xfc, 0x78, 0x5e, 0xe7, 0xb0, 0x5d, 0x09, 0xe2, 0x1a, 0x89, 0xbc, 0x5f, 0xc9, 0x04,
|
||||||
0x37, 0x66, 0xd9, 0x44, 0x95, 0x57, 0x28, 0x04, 0xc3, 0x04, 0xdb, 0x4e, 0x7c, 0x3d, 0x75, 0xd3,
|
0x61, 0x1e, 0x8b, 0x6f, 0xeb, 0x23, 0x40, 0xa6, 0xbc, 0x4a, 0x21, 0x6f, 0xc2, 0xa2, 0xd8, 0x4e,
|
||||||
0x02, 0xeb, 0x62, 0x56, 0xbb, 0x09, 0x84, 0x6b, 0x20, 0x75, 0x25, 0x9d, 0x5d, 0x5b, 0xef, 0xc3,
|
0x7c, 0x3d, 0x35, 0xd3, 0x02, 0x63, 0x35, 0x6b, 0xdd, 0x05, 0x24, 0x35, 0x90, 0xba, 0x92, 0x4e,
|
||||||
0x5a, 0x6a, 0xbd, 0x7c, 0xb5, 0x4a, 0x11, 0xc8, 0x72, 0x17, 0x8b, 0xff, 0x59, 0x01, 0xd8, 0x99,
|
0xaf, 0xad, 0x0f, 0x61, 0x2d, 0x45, 0xaf, 0x5f, 0xad, 0x52, 0x0c, 0xb2, 0xab, 0x2b, 0xe2, 0xbf,
|
||||||
0x47, 0xc7, 0xa2, 0x94, 0x1f, 0x40, 0x93, 0xf6, 0x20, 0x94, 0x86, 0x80, 0x1c, 0xd3, 0x39, 0xdf,
|
0x97, 0x00, 0x7a, 0x53, 0x76, 0xa8, 0x4a, 0xf9, 0x0e, 0x54, 0xa7, 0x11, 0xa1, 0x46, 0x43, 0x40,
|
||||||
0x0c, 0x43, 0xac, 0xa3, 0xe3, 0x9c, 0x4b, 0x8e, 0x59, 0x19, 0x8e, 0x54, 0xe2, 0xf6, 0x11, 0xfd,
|
0x8f, 0xf9, 0x5c, 0xe8, 0x44, 0xd1, 0x77, 0x01, 0x8d, 0x73, 0x2e, 0x3d, 0x16, 0x65, 0xf8, 0x94,
|
||||||
0xa6, 0x8f, 0xf8, 0xfc, 0x5f, 0x05, 0xc3, 0xb4, 0xac, 0x00, 0xc3, 0xb8, 0xe8, 0x23, 0x75, 0x38,
|
0x1d, 0xc6, 0xed, 0x23, 0xfe, 0x8d, 0xae, 0x40, 0x53, 0xfe, 0xab, 0x60, 0x3b, 0xae, 0x4b, 0x49,
|
||||||
0x74, 0x87, 0x03, 0x29, 0x9a, 0x63, 0xd9, 0x28, 0x5a, 0xb4, 0x30, 0x22, 0xef, 0xb1, 0xed, 0x8a,
|
0x14, 0xa9, 0x3e, 0x52, 0x43, 0x42, 0x7b, 0x12, 0xc8, 0xd1, 0x3c, 0x97, 0xf8, 0xcc, 0x63, 0xc7,
|
||||||
0x6c, 0xaa, 0x13, 0x43, 0xef, 0x51, 0x20, 0x45, 0x0b, 0xec, 0x23, 0xd4, 0x72, 0x10, 0xa3, 0x35,
|
0x36, 0x0b, 0x9e, 0x13, 0x5f, 0x65, 0x53, 0x8d, 0x18, 0xfa, 0x88, 0x03, 0x39, 0x1a, 0x25, 0x23,
|
||||||
0x38, 0x5a, 0x0c, 0x65, 0x68, 0xf4, 0x37, 0x8f, 0xde, 0xe1, 0x7c, 0x3a, 0xe5, 0x9b, 0x3c, 0xaf,
|
0x2f, 0x62, 0x34, 0x46, 0x5b, 0x94, 0x68, 0x31, 0x54, 0xa0, 0x59, 0xdf, 0x97, 0xa0, 0x75, 0x30,
|
||||||
0x2e, 0xb1, 0x3e, 0xe6, 0xfb, 0xc8, 0x76, 0x85, 0x12, 0x15, 0x89, 0xcd, 0x7d, 0xff, 0xd2, 0x6c,
|
0x1d, 0x8f, 0xe5, 0x26, 0xcf, 0xaa, 0x4b, 0xf4, 0x96, 0xda, 0x47, 0xb6, 0x2b, 0x94, 0xa8, 0x48,
|
||||||
0x0d, 0x2e, 0x28, 0x82, 0x8a, 0xaa, 0x02, 0x7d, 0x81, 0x17, 0x1c, 0x4f, 0x27, 0xbf, 0x76, 0x11,
|
0x6d, 0xee, 0xc7, 0x97, 0x66, 0x6b, 0xb0, 0x6a, 0x08, 0xaa, 0xaa, 0x8a, 0xbb, 0x80, 0x64, 0xc1,
|
||||||
0xd6, 0x52, 0xeb, 0x05, 0xd9, 0x6d, 0xe8, 0x88, 0x27, 0x20, 0x61, 0x67, 0x2c, 0xef, 0xe9, 0xe9,
|
0xf1, 0x72, 0xf2, 0x5b, 0xe7, 0x60, 0x2d, 0x45, 0xaf, 0xd8, 0x5e, 0x87, 0x86, 0x7a, 0x02, 0x52,
|
||||||
0x9f, 0x38, 0x56, 0xdc, 0x1a, 0x5c, 0xc6, 0xf1, 0x2e, 0x0e, 0x31, 0x5c, 0x74, 0x74, 0x4e, 0x5e,
|
0x76, 0x3e, 0x0f, 0x55, 0x7e, 0xfa, 0x87, 0x9e, 0x1b, 0xb7, 0x06, 0x97, 0xc2, 0xc0, 0xdd, 0xf1,
|
||||||
0xe0, 0x7e, 0x08, 0x5d, 0xf1, 0x60, 0x64, 0xa4, 0x9e, 0x54, 0x93, 0xbe, 0x57, 0x8a, 0xb6, 0xde,
|
0x5c, 0x6a, 0xf5, 0xa1, 0x81, 0x25, 0x7b, 0x85, 0x7b, 0x07, 0x9a, 0xea, 0xc1, 0xc8, 0x4e, 0x3d,
|
||||||
0x71, 0xd5, 0xa1, 0xf6, 0x35, 0x0c, 0xee, 0xfb, 0x16, 0x4d, 0x5f, 0x54, 0xaa, 0xf1, 0xd6, 0x90,
|
0xa9, 0x26, 0x7d, 0xaf, 0x14, 0x6f, 0xdc, 0xf0, 0xcd, 0xa1, 0xf5, 0x0d, 0x74, 0x1e, 0x87, 0x2e,
|
||||||
0x78, 0xfc, 0x73, 0x4c, 0x09, 0xf1, 0xf4, 0xb2, 0x4e, 0xa0, 0x0e, 0xb5, 0x2b, 0x70, 0xb9, 0x90,
|
0x4f, 0x5f, 0x4c, 0xae, 0xf1, 0xd6, 0xee, 0x40, 0xfc, 0xbb, 0xcc, 0x2c, 0xe6, 0x69, 0xb2, 0x06,
|
||||||
0x38, 0xdf, 0xf7, 0xf6, 0xf3, 0xd0, 0x8c, 0x7f, 0x62, 0x21, 0xcb, 0x50, 0xbb, 0xb7, 0x7b, 0xd8,
|
0x35, 0x87, 0xd6, 0x05, 0xd8, 0x2a, 0x64, 0x2e, 0xf7, 0x7d, 0xfd, 0x35, 0xa8, 0xc6, 0x3f, 0xb1,
|
||||||
0x7b, 0x8e, 0x7e, 0xdc, 0xdf, 0x3b, 0xec, 0x55, 0xb6, 0xb7, 0x61, 0x35, 0xd3, 0xcb, 0x27, 0x2d,
|
0xa0, 0x25, 0xa8, 0x3c, 0xda, 0x39, 0x68, 0xcd, 0xf1, 0x8f, 0xc7, 0xbb, 0x07, 0xad, 0xd2, 0xf5,
|
||||||
0xa8, 0xeb, 0xfb, 0x3b, 0x7b, 0x5f, 0x21, 0xda, 0x0a, 0x34, 0x47, 0x77, 0xef, 0xf1, 0x51, 0x65,
|
0xdb, 0xb0, 0x92, 0xe9, 0xe5, 0xa3, 0x55, 0x68, 0x0c, 0x7a, 0xfd, 0xdd, 0x4f, 0x1f, 0x7e, 0x65,
|
||||||
0x7b, 0x17, 0xba, 0xe9, 0x64, 0x8c, 0xb4, 0x61, 0x79, 0x17, 0x67, 0xef, 0xed, 0xef, 0x21, 0x32,
|
0xe3, 0xbd, 0xde, 0xee, 0xd7, 0xad, 0x39, 0xb4, 0x0e, 0xad, 0x18, 0xd4, 0x7f, 0xf8, 0x48, 0x42,
|
||||||
0x0e, 0xf4, 0xfb, 0xa3, 0xd1, 0xc1, 0xe8, 0xb3, 0x5e, 0x85, 0x00, 0x34, 0xf6, 0xbf, 0x3c, 0xa0,
|
0x4b, 0xd7, 0x9f, 0x43, 0x33, 0x9d, 0x9c, 0xa1, 0x73, 0xb0, 0xba, 0xf3, 0xb0, 0xff, 0xa8, 0xb7,
|
||||||
0x13, 0x55, 0x3a, 0x71, 0x7f, 0x74, 0x6b, 0x74, 0xf7, 0x97, 0xa3, 0x5e, 0x6d, 0xf8, 0x6f, 0x80,
|
0xdf, 0xdf, 0xc3, 0xf6, 0x0e, 0xde, 0xeb, 0x3d, 0xda, 0xdb, 0x6d, 0xcd, 0xa5, 0xc1, 0xf8, 0x71,
|
||||||
0xae, 0x10, 0x74, 0x8c, 0x67, 0xc0, 0x99, 0xd8, 0xe4, 0x26, 0x2c, 0xc7, 0xff, 0x09, 0x25, 0x69,
|
0xbf, 0xbf, 0xdf, 0xff, 0xbc, 0x55, 0xe2, 0x5c, 0x13, 0xf0, 0xde, 0x57, 0xfb, 0x1c, 0xb9, 0x9c,
|
||||||
0x5f, 0xfa, 0xa7, 0xa6, 0x41, 0x3f, 0x3f, 0x21, 0xec, 0xfa, 0x1c, 0x39, 0x64, 0xd6, 0x52, 0xde,
|
0x46, 0x7e, 0xdc, 0xbf, 0xd7, 0x7f, 0xf8, 0x8b, 0x7e, 0xab, 0xd2, 0xfd, 0x27, 0x40, 0x53, 0x6d,
|
||||||
0x3f, 0xae, 0xa8, 0x8a, 0xcb, 0x3d, 0xb0, 0x0c, 0xae, 0x96, 0x4d, 0x4b, 0x8a, 0x63, 0xe8, 0xa6,
|
0x70, 0x40, 0xe8, 0x91, 0x37, 0x24, 0xe8, 0x2e, 0x2c, 0xc5, 0xff, 0x17, 0x25, 0xe9, 0x62, 0xfa,
|
||||||
0x1f, 0xa2, 0x49, 0xb2, 0xa6, 0xf0, 0x81, 0x7b, 0x70, 0xad, 0x74, 0x5e, 0x12, 0xfd, 0x0a, 0x7a,
|
0x67, 0xa8, 0x4e, 0x3b, 0x3f, 0xa1, 0xfc, 0x61, 0x0e, 0x1d, 0x08, 0x2b, 0x1b, 0xef, 0x26, 0x17,
|
||||||
0xd9, 0x27, 0x68, 0x92, 0xb4, 0x6d, 0x4b, 0x9e, 0xb7, 0x07, 0xd7, 0x4f, 0xc1, 0x50, 0x49, 0xe7,
|
0x4c, 0x85, 0xe7, 0x1e, 0x66, 0x3a, 0x17, 0x67, 0x4d, 0x6b, 0x8e, 0x03, 0x68, 0xa6, 0x1f, 0xb0,
|
||||||
0x1e, 0x6b, 0xb7, 0xca, 0x9f, 0xdb, 0x72, 0xa4, 0xcb, 0xde, 0xf0, 0xb8, 0x2a, 0xd2, 0xef, 0x16,
|
0x51, 0x42, 0x53, 0xf8, 0x30, 0xde, 0xb9, 0x34, 0x73, 0x5e, 0x33, 0xfd, 0x1a, 0x5a, 0xd9, 0xa7,
|
||||||
0x44, 0x7d, 0x22, 0x2d, 0x78, 0xbf, 0x52, 0x54, 0x51, 0xfc, 0xe0, 0x81, 0x44, 0xbf, 0xc0, 0x3a,
|
0x6b, 0x94, 0xb4, 0x7b, 0x67, 0x3c, 0x8b, 0x77, 0x2e, 0x9f, 0x80, 0x61, 0xb2, 0xce, 0x3d, 0xf2,
|
||||||
0x22, 0xdd, 0x92, 0x21, 0xc9, 0xaa, 0xe2, 0x06, 0xd3, 0x60, 0xab, 0x1c, 0x21, 0x6d, 0x37, 0xb5,
|
0x6e, 0xcf, 0x7e, 0xa6, 0xcb, 0xb1, 0x9e, 0xf5, 0xf6, 0x27, 0x55, 0x91, 0x7e, 0xef, 0x40, 0xe6,
|
||||||
0xe1, 0x92, 0xb2, 0x5b, 0x41, 0x17, 0x27, 0x65, 0xb7, 0xc2, 0x4e, 0x0d, 0x73, 0xaf, 0x54, 0x5b,
|
0xd3, 0x6a, 0xc1, 0xbb, 0x97, 0xa1, 0x8a, 0xe2, 0x87, 0x12, 0x6b, 0x0e, 0x7d, 0x09, 0x2b, 0x99,
|
||||||
0x45, 0x71, 0xaf, 0xa2, 0x1e, 0xce, 0xe0, 0x6a, 0xd9, 0xb4, 0xba, 0xfd, 0x4c, 0x4b, 0x45, 0xd9,
|
0x56, 0x0e, 0x4a, 0xa8, 0x8a, 0x1b, 0x53, 0x9d, 0xed, 0xd9, 0x08, 0x69, 0xbb, 0x99, 0x8d, 0x9a,
|
||||||
0x7e, 0x71, 0xa7, 0x66, 0xb0, 0x55, 0x8e, 0x90, 0xb5, 0x55, 0x52, 0x2a, 0x66, 0x6c, 0x95, 0xeb,
|
0x94, 0xdd, 0x0a, 0xba, 0x3f, 0x29, 0xbb, 0x15, 0x76, 0x78, 0x84, 0x7b, 0xa5, 0xda, 0x31, 0x86,
|
||||||
0x4c, 0x64, 0x6c, 0x95, 0xaf, 0x31, 0x85, 0xad, 0x32, 0x35, 0xdf, 0xb5, 0xd2, 0x74, 0x39, 0x6f,
|
0x7b, 0x15, 0xf5, 0x7e, 0x3a, 0x17, 0x67, 0x4d, 0x9b, 0xdb, 0xcf, 0xb4, 0x62, 0x8c, 0xed, 0x17,
|
||||||
0xab, 0xe2, 0x0c, 0x1c, 0xe9, 0xee, 0x40, 0x33, 0xce, 0x77, 0x49, 0x72, 0xba, 0x33, 0x49, 0xf6,
|
0x77, 0x78, 0x3a, 0xdb, 0xb3, 0x11, 0xb2, 0xb6, 0x4a, 0x4a, 0xcc, 0x8c, 0xad, 0x72, 0x1d, 0x8d,
|
||||||
0xe0, 0x52, 0xc1, 0x8c, 0x24, 0xf1, 0x53, 0x58, 0xa2, 0x50, 0xb2, 0x9e, 0x42, 0x8a, 0x97, 0x5e,
|
0x8c, 0xad, 0xf2, 0xb5, 0xa9, 0xb2, 0x55, 0xa6, 0x56, 0xbc, 0x34, 0x33, 0xcd, 0xce, 0xdb, 0xaa,
|
||||||
0xcc, 0x40, 0xe5, 0xb2, 0xf7, 0xa1, 0xc1, 0x13, 0x46, 0x92, 0x44, 0xd8, 0x54, 0x2e, 0x3a, 0xd8,
|
0x38, 0x73, 0xb7, 0xe6, 0x50, 0x0f, 0xaa, 0x71, 0x9e, 0x8c, 0x92, 0xd3, 0x9d, 0x49, 0xce, 0x3b,
|
||||||
0xcc, 0xc1, 0xe5, 0xe2, 0xcf, 0xf9, 0xbf, 0x83, 0x22, 0xf3, 0x23, 0x97, 0x53, 0x7f, 0x37, 0xa5,
|
0xe7, 0x0b, 0x66, 0x34, 0x8b, 0xff, 0x83, 0x79, 0x0e, 0x45, 0xeb, 0x29, 0xa4, 0x98, 0xf4, 0x5c,
|
||||||
0xf3, 0xcb, 0xc1, 0xf3, 0xc5, 0x93, 0x92, 0xd6, 0x03, 0x58, 0x2b, 0x88, 0xdc, 0x24, 0x69, 0x4f,
|
0x06, 0xaa, 0xc9, 0x3e, 0x84, 0x45, 0x99, 0x68, 0xa2, 0x24, 0x32, 0xa7, 0x72, 0xd8, 0xce, 0x66,
|
||||||
0x94, 0x5f, 0x1a, 0x83, 0x17, 0x4f, 0x47, 0x8a, 0x79, 0x0c, 0xff, 0x56, 0x85, 0x15, 0x7e, 0x45,
|
0x0e, 0xae, 0x89, 0xbf, 0x90, 0xff, 0x1c, 0xaa, 0x8c, 0x11, 0x6d, 0xa5, 0xfe, 0x8a, 0x4a, 0xe7,
|
||||||
0x8a, 0x68, 0xfb, 0x19, 0x40, 0x92, 0xa8, 0x91, 0x41, 0xca, 0x01, 0x52, 0xd9, 0xe6, 0xe0, 0x72,
|
0xa5, 0x9d, 0xd7, 0x8a, 0x27, 0x35, 0xaf, 0x27, 0xb0, 0x56, 0x10, 0xf1, 0x51, 0xd2, 0xd6, 0x98,
|
||||||
0xe1, 0x9c, 0xaa, 0x09, 0x25, 0xe7, 0x52, 0x34, 0x91, 0xcf, 0xe4, 0x14, 0x4d, 0x14, 0xa4, 0x69,
|
0x7d, 0xd9, 0x74, 0xde, 0x38, 0x19, 0x29, 0x5e, 0xa3, 0xfb, 0x97, 0x32, 0x2c, 0xcb, 0xab, 0x55,
|
||||||
0x48, 0x6b, 0x0f, 0x5a, 0x32, 0x11, 0x20, 0x4a, 0xfe, 0x90, 0xc9, 0x62, 0x06, 0x83, 0xa2, 0x29,
|
0x45, 0xdb, 0xcf, 0x01, 0x92, 0x04, 0x0f, 0x75, 0x52, 0x0e, 0x90, 0xca, 0x52, 0x3b, 0x5b, 0x85,
|
||||||
0x55, 0x22, 0xe5, 0xe6, 0x57, 0x24, 0xca, 0xe7, 0x13, 0x8a, 0x44, 0x45, 0xc9, 0xc2, 0x73, 0xff,
|
0x73, 0xa6, 0x26, 0x8c, 0x5c, 0xcd, 0xd0, 0x44, 0x3e, 0x03, 0x34, 0x34, 0x51, 0x90, 0xde, 0x59,
|
||||||
0x0b, 0x00, 0x00, 0xff, 0xff, 0x27, 0xd9, 0x1b, 0x77, 0x6c, 0x2b, 0x00, 0x00,
|
0x73, 0x68, 0x17, 0x6a, 0x3a, 0x81, 0x40, 0x46, 0xde, 0x91, 0xc9, 0x7e, 0x3a, 0x9d, 0xa2, 0x29,
|
||||||
|
0x53, 0x22, 0x23, 0x63, 0x30, 0x24, 0xca, 0xe7, 0x21, 0x86, 0x44, 0x45, 0x49, 0xc6, 0xdc, 0x7f,
|
||||||
|
0x02, 0x00, 0x00, 0xff, 0xff, 0x45, 0x43, 0x5d, 0x1f, 0xa4, 0x2b, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ service RuntimeService {
|
|||||||
rpc RemovePodSandbox(RemovePodSandboxRequest) returns (RemovePodSandboxResponse) {}
|
rpc RemovePodSandbox(RemovePodSandboxRequest) returns (RemovePodSandboxResponse) {}
|
||||||
// PodSandboxStatus returns the status of the PodSandbox.
|
// PodSandboxStatus returns the status of the PodSandbox.
|
||||||
rpc PodSandboxStatus(PodSandboxStatusRequest) returns (PodSandboxStatusResponse) {}
|
rpc PodSandboxStatus(PodSandboxStatusRequest) returns (PodSandboxStatusResponse) {}
|
||||||
// ListPodSandbox returns a list of SandBox.
|
// ListPodSandbox returns a list of Sandbox.
|
||||||
rpc ListPodSandbox(ListPodSandboxRequest) returns (ListPodSandboxResponse) {}
|
rpc ListPodSandbox(ListPodSandboxRequest) returns (ListPodSandboxResponse) {}
|
||||||
|
|
||||||
// CreateContainer creates a new container in specified PodSandbox
|
// CreateContainer creates a new container in specified PodSandbox
|
||||||
@ -270,15 +270,15 @@ message Namespace {
|
|||||||
optional NamespaceOption options = 2;
|
optional NamespaceOption options = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// LinuxSandBoxStatus contains status specific to Linux sandboxes.
|
// LinuxSandboxStatus contains status specific to Linux sandboxes.
|
||||||
message LinuxPodSandboxStatus {
|
message LinuxPodSandboxStatus {
|
||||||
// Namespaces contains paths to the sandbox's namespaces.
|
// Namespaces contains paths to the sandbox's namespaces.
|
||||||
optional Namespace namespaces = 1;
|
optional Namespace namespaces = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum PodSandBoxState {
|
enum PodSandboxState {
|
||||||
READY = 0;
|
SANDBOX_READY = 0;
|
||||||
NOTREADY = 1;
|
SANDBOX_NOTREADY = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// PodSandboxStatus contains the status of the PodSandbox.
|
// PodSandboxStatus contains the status of the PodSandbox.
|
||||||
@ -288,7 +288,7 @@ message PodSandboxStatus {
|
|||||||
// Metadata of the sandbox.
|
// Metadata of the sandbox.
|
||||||
optional PodSandboxMetadata metadata = 2;
|
optional PodSandboxMetadata metadata = 2;
|
||||||
// State of the sandbox.
|
// State of the sandbox.
|
||||||
optional PodSandBoxState state = 3;
|
optional PodSandboxState state = 3;
|
||||||
// Creation timestamp of the sandbox in nanoseconds.
|
// Creation timestamp of the sandbox in nanoseconds.
|
||||||
optional int64 created_at = 4;
|
optional int64 created_at = 4;
|
||||||
// Network contains network status if network is handled by the runtime.
|
// Network contains network status if network is handled by the runtime.
|
||||||
@ -313,7 +313,7 @@ message PodSandboxFilter {
|
|||||||
// ID of the sandbox.
|
// ID of the sandbox.
|
||||||
optional string id = 1;
|
optional string id = 1;
|
||||||
// State of the sandbox.
|
// State of the sandbox.
|
||||||
optional PodSandBoxState state = 2;
|
optional PodSandboxState state = 2;
|
||||||
// LabelSelector to select matches.
|
// LabelSelector to select matches.
|
||||||
// Only api.MatchLabels is supported for now and the requirements
|
// Only api.MatchLabels is supported for now and the requirements
|
||||||
// are ANDed. MatchExpressions is not supported yet.
|
// are ANDed. MatchExpressions is not supported yet.
|
||||||
@ -333,7 +333,7 @@ message PodSandbox {
|
|||||||
// Metadata of the sandbox
|
// Metadata of the sandbox
|
||||||
optional PodSandboxMetadata metadata = 2;
|
optional PodSandboxMetadata metadata = 2;
|
||||||
// The state of the PodSandbox
|
// The state of the PodSandbox
|
||||||
optional PodSandBoxState state = 3;
|
optional PodSandboxState state = 3;
|
||||||
// Creation timestamps of the sandbox in nanoseconds
|
// Creation timestamps of the sandbox in nanoseconds
|
||||||
optional int64 created_at = 4;
|
optional int64 created_at = 4;
|
||||||
// The labels of the PodSandbox
|
// The labels of the PodSandbox
|
||||||
@ -529,10 +529,10 @@ message RemoveContainerRequest {
|
|||||||
message RemoveContainerResponse {}
|
message RemoveContainerResponse {}
|
||||||
|
|
||||||
enum ContainerState {
|
enum ContainerState {
|
||||||
CREATED = 0;
|
CONTAINER_CREATED = 0;
|
||||||
RUNNING = 1;
|
CONTAINER_RUNNING = 1;
|
||||||
EXITED = 2;
|
CONTAINER_EXITED = 2;
|
||||||
UNKNOWN = 3;
|
CONTAINER_UNKNOWN = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ContainerFilter is used to filter containers.
|
// ContainerFilter is used to filter containers.
|
||||||
|
@ -206,11 +206,11 @@ func ConvertPodStatusToRunningPod(runtimeName string, podStatus *PodStatus) Pod
|
|||||||
// This is only needed because we need to return sandboxes as if they were
|
// This is only needed because we need to return sandboxes as if they were
|
||||||
// kubecontainer.Containers to avoid substantial changes to PLEG.
|
// kubecontainer.Containers to avoid substantial changes to PLEG.
|
||||||
// TODO: Remove this once it becomes obsolete.
|
// TODO: Remove this once it becomes obsolete.
|
||||||
func SandboxToContainerState(state runtimeApi.PodSandBoxState) ContainerState {
|
func SandboxToContainerState(state runtimeApi.PodSandboxState) ContainerState {
|
||||||
switch state {
|
switch state {
|
||||||
case runtimeApi.PodSandBoxState_READY:
|
case runtimeApi.PodSandboxState_SANDBOX_READY:
|
||||||
return ContainerStateRunning
|
return ContainerStateRunning
|
||||||
case runtimeApi.PodSandBoxState_NOTREADY:
|
case runtimeApi.PodSandboxState_SANDBOX_NOTREADY:
|
||||||
return ContainerStateExited
|
return ContainerStateExited
|
||||||
}
|
}
|
||||||
return ContainerStateUnknown
|
return ContainerStateUnknown
|
||||||
|
@ -100,13 +100,13 @@ func toRuntimeAPIContainer(c *dockertypes.Container) (*runtimeApi.Container, err
|
|||||||
|
|
||||||
func toDockerContainerStatus(state runtimeApi.ContainerState) string {
|
func toDockerContainerStatus(state runtimeApi.ContainerState) string {
|
||||||
switch state {
|
switch state {
|
||||||
case runtimeApi.ContainerState_CREATED:
|
case runtimeApi.ContainerState_CONTAINER_CREATED:
|
||||||
return "created"
|
return "created"
|
||||||
case runtimeApi.ContainerState_RUNNING:
|
case runtimeApi.ContainerState_CONTAINER_RUNNING:
|
||||||
return "running"
|
return "running"
|
||||||
case runtimeApi.ContainerState_EXITED:
|
case runtimeApi.ContainerState_CONTAINER_EXITED:
|
||||||
return "exited"
|
return "exited"
|
||||||
case runtimeApi.ContainerState_UNKNOWN:
|
case runtimeApi.ContainerState_CONTAINER_UNKNOWN:
|
||||||
fallthrough
|
fallthrough
|
||||||
default:
|
default:
|
||||||
return "unknown"
|
return "unknown"
|
||||||
@ -118,24 +118,24 @@ func toRuntimeAPIContainerState(state string) runtimeApi.ContainerState {
|
|||||||
// we upgrade docker.
|
// we upgrade docker.
|
||||||
switch {
|
switch {
|
||||||
case strings.HasPrefix(state, statusRunningPrefix):
|
case strings.HasPrefix(state, statusRunningPrefix):
|
||||||
return runtimeApi.ContainerState_RUNNING
|
return runtimeApi.ContainerState_CONTAINER_RUNNING
|
||||||
case strings.HasPrefix(state, statusExitedPrefix):
|
case strings.HasPrefix(state, statusExitedPrefix):
|
||||||
return runtimeApi.ContainerState_EXITED
|
return runtimeApi.ContainerState_CONTAINER_EXITED
|
||||||
case strings.HasPrefix(state, statusCreatedPrefix):
|
case strings.HasPrefix(state, statusCreatedPrefix):
|
||||||
return runtimeApi.ContainerState_CREATED
|
return runtimeApi.ContainerState_CONTAINER_CREATED
|
||||||
default:
|
default:
|
||||||
return runtimeApi.ContainerState_UNKNOWN
|
return runtimeApi.ContainerState_CONTAINER_UNKNOWN
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func toRuntimeAPISandboxState(state string) runtimeApi.PodSandBoxState {
|
func toRuntimeAPISandboxState(state string) runtimeApi.PodSandboxState {
|
||||||
// Parse the state string in dockertypes.Container. This could break when
|
// Parse the state string in dockertypes.Container. This could break when
|
||||||
// we upgrade docker.
|
// we upgrade docker.
|
||||||
switch {
|
switch {
|
||||||
case strings.HasPrefix(state, statusRunningPrefix):
|
case strings.HasPrefix(state, statusRunningPrefix):
|
||||||
return runtimeApi.PodSandBoxState_READY
|
return runtimeApi.PodSandboxState_SANDBOX_READY
|
||||||
default:
|
default:
|
||||||
return runtimeApi.PodSandBoxState_NOTREADY
|
return runtimeApi.PodSandboxState_SANDBOX_NOTREADY
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,10 +30,10 @@ func TestConvertDockerStatusToRuntimeAPIState(t *testing.T) {
|
|||||||
input string
|
input string
|
||||||
expected runtimeApi.ContainerState
|
expected runtimeApi.ContainerState
|
||||||
}{
|
}{
|
||||||
{input: "Up 5 hours", expected: runtimeApi.ContainerState_RUNNING},
|
{input: "Up 5 hours", expected: runtimeApi.ContainerState_CONTAINER_RUNNING},
|
||||||
{input: "Exited (0) 2 hours ago", expected: runtimeApi.ContainerState_EXITED},
|
{input: "Exited (0) 2 hours ago", expected: runtimeApi.ContainerState_CONTAINER_EXITED},
|
||||||
{input: "Created", expected: runtimeApi.ContainerState_CREATED},
|
{input: "Created", expected: runtimeApi.ContainerState_CONTAINER_CREATED},
|
||||||
{input: "Random string", expected: runtimeApi.ContainerState_UNKNOWN},
|
{input: "Random string", expected: runtimeApi.ContainerState_CONTAINER_UNKNOWN},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range testCases {
|
for _, test := range testCases {
|
||||||
|
@ -327,7 +327,7 @@ func (ds *dockerService) ContainerStatus(containerID string) (*runtimeApi.Contai
|
|||||||
var reason, message string
|
var reason, message string
|
||||||
if r.State.Running {
|
if r.State.Running {
|
||||||
// Container is running.
|
// Container is running.
|
||||||
state = runtimeApi.ContainerState_RUNNING
|
state = runtimeApi.ContainerState_CONTAINER_RUNNING
|
||||||
} else {
|
} else {
|
||||||
// Container is *not* running. We need to get more details.
|
// Container is *not* running. We need to get more details.
|
||||||
// * Case 1: container has run and exited with non-zero finishedAt
|
// * Case 1: container has run and exited with non-zero finishedAt
|
||||||
@ -336,7 +336,7 @@ func (ds *dockerService) ContainerStatus(containerID string) (*runtimeApi.Contai
|
|||||||
// time, but a non-zero exit code.
|
// time, but a non-zero exit code.
|
||||||
// * Case 3: container has been created, but not started (yet).
|
// * Case 3: container has been created, but not started (yet).
|
||||||
if !finishedAt.IsZero() { // Case 1
|
if !finishedAt.IsZero() { // Case 1
|
||||||
state = runtimeApi.ContainerState_EXITED
|
state = runtimeApi.ContainerState_CONTAINER_EXITED
|
||||||
switch {
|
switch {
|
||||||
case r.State.OOMKilled:
|
case r.State.OOMKilled:
|
||||||
// TODO: consider exposing OOMKilled via the runtimeAPI.
|
// TODO: consider exposing OOMKilled via the runtimeAPI.
|
||||||
@ -349,13 +349,13 @@ func (ds *dockerService) ContainerStatus(containerID string) (*runtimeApi.Contai
|
|||||||
reason = "Error"
|
reason = "Error"
|
||||||
}
|
}
|
||||||
} else if r.State.ExitCode != 0 { // Case 2
|
} else if r.State.ExitCode != 0 { // Case 2
|
||||||
state = runtimeApi.ContainerState_EXITED
|
state = runtimeApi.ContainerState_CONTAINER_EXITED
|
||||||
// Adjust finshedAt and startedAt time to createdAt time to avoid
|
// Adjust finshedAt and startedAt time to createdAt time to avoid
|
||||||
// the confusion.
|
// the confusion.
|
||||||
finishedAt, startedAt = createdAt, createdAt
|
finishedAt, startedAt = createdAt, createdAt
|
||||||
reason = "ContainerCannotRun"
|
reason = "ContainerCannotRun"
|
||||||
} else { // Case 3
|
} else { // Case 3
|
||||||
state = runtimeApi.ContainerState_CREATED
|
state = runtimeApi.ContainerState_CONTAINER_CREATED
|
||||||
}
|
}
|
||||||
message = r.State.Error
|
message = r.State.Error
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ func TestListContainers(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
expected := []*runtimeApi.Container{}
|
expected := []*runtimeApi.Container{}
|
||||||
state := runtimeApi.ContainerState_RUNNING
|
state := runtimeApi.ContainerState_CONTAINER_RUNNING
|
||||||
var createdAt int64 = 0
|
var createdAt int64 = 0
|
||||||
for i := range configs {
|
for i := range configs {
|
||||||
// We don't care about the sandbox id; pass a bogus one.
|
// We don't care about the sandbox id; pass a bogus one.
|
||||||
@ -105,7 +105,7 @@ func TestContainerStatus(t *testing.T) {
|
|||||||
var defaultTime time.Time
|
var defaultTime time.Time
|
||||||
dt := defaultTime.UnixNano()
|
dt := defaultTime.UnixNano()
|
||||||
ct, st, ft := dt, dt, dt
|
ct, st, ft := dt, dt, dt
|
||||||
state := runtimeApi.ContainerState_CREATED
|
state := runtimeApi.ContainerState_CONTAINER_CREATED
|
||||||
// The following variables are not set in FakeDockerClient.
|
// The following variables are not set in FakeDockerClient.
|
||||||
imageRef := DockerImageIDPrefix + ""
|
imageRef := DockerImageIDPrefix + ""
|
||||||
exitCode := int32(0)
|
exitCode := int32(0)
|
||||||
@ -149,7 +149,7 @@ func TestContainerStatus(t *testing.T) {
|
|||||||
// Advance the clock and start the container.
|
// Advance the clock and start the container.
|
||||||
fClock.SetTime(time.Now())
|
fClock.SetTime(time.Now())
|
||||||
*expected.StartedAt = fClock.Now().UnixNano()
|
*expected.StartedAt = fClock.Now().UnixNano()
|
||||||
*expected.State = runtimeApi.ContainerState_RUNNING
|
*expected.State = runtimeApi.ContainerState_CONTAINER_RUNNING
|
||||||
|
|
||||||
err = ds.StartContainer(id)
|
err = ds.StartContainer(id)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
@ -159,7 +159,7 @@ func TestContainerStatus(t *testing.T) {
|
|||||||
// Advance the clock and stop the container.
|
// Advance the clock and stop the container.
|
||||||
fClock.SetTime(time.Now().Add(1 * time.Hour))
|
fClock.SetTime(time.Now().Add(1 * time.Hour))
|
||||||
*expected.FinishedAt = fClock.Now().UnixNano()
|
*expected.FinishedAt = fClock.Now().UnixNano()
|
||||||
*expected.State = runtimeApi.ContainerState_EXITED
|
*expected.State = runtimeApi.ContainerState_CONTAINER_EXITED
|
||||||
*expected.Reason = "Completed"
|
*expected.Reason = "Completed"
|
||||||
|
|
||||||
err = ds.StopContainer(id, 0)
|
err = ds.StopContainer(id, 0)
|
||||||
|
@ -192,9 +192,9 @@ func (ds *dockerService) PodSandboxStatus(podSandboxID string) (*runtimeApi.PodS
|
|||||||
ct := createdAt.UnixNano()
|
ct := createdAt.UnixNano()
|
||||||
|
|
||||||
// Translate container to sandbox state.
|
// Translate container to sandbox state.
|
||||||
state := runtimeApi.PodSandBoxState_NOTREADY
|
state := runtimeApi.PodSandboxState_SANDBOX_NOTREADY
|
||||||
if r.State.Running {
|
if r.State.Running {
|
||||||
state = runtimeApi.PodSandBoxState_READY
|
state = runtimeApi.PodSandboxState_SANDBOX_READY
|
||||||
}
|
}
|
||||||
IP, err := ds.getIP(r)
|
IP, err := ds.getIP(r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -244,11 +244,11 @@ func (ds *dockerService) ListPodSandbox(filter *runtimeApi.PodSandboxFilter) ([]
|
|||||||
f.Add("id", filter.GetId())
|
f.Add("id", filter.GetId())
|
||||||
}
|
}
|
||||||
if filter.State != nil {
|
if filter.State != nil {
|
||||||
if filter.GetState() == runtimeApi.PodSandBoxState_READY {
|
if filter.GetState() == runtimeApi.PodSandboxState_SANDBOX_READY {
|
||||||
// Only list running containers.
|
// Only list running containers.
|
||||||
opts.All = false
|
opts.All = false
|
||||||
} else {
|
} else {
|
||||||
// runtimeApi.PodSandBoxState_NOTREADY can mean the
|
// runtimeApi.PodSandboxState_SANDBOX_NOTREADY can mean the
|
||||||
// container is in any of the non-running state (e.g., created,
|
// container is in any of the non-running state (e.g., created,
|
||||||
// exited). We can't tell docker to filter out running
|
// exited). We can't tell docker to filter out running
|
||||||
// containers directly, so we'll need to filter them out
|
// containers directly, so we'll need to filter them out
|
||||||
@ -277,7 +277,7 @@ func (ds *dockerService) ListPodSandbox(filter *runtimeApi.PodSandboxFilter) ([]
|
|||||||
glog.V(5).Infof("Unable to convert docker to runtime API sandbox: %v", err)
|
glog.V(5).Infof("Unable to convert docker to runtime API sandbox: %v", err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if filterOutReadySandboxes && converted.GetState() == runtimeApi.PodSandBoxState_READY {
|
if filterOutReadySandboxes && converted.GetState() == runtimeApi.PodSandboxState_SANDBOX_READY {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ func TestListSandboxes(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
expected := []*runtimeApi.PodSandbox{}
|
expected := []*runtimeApi.PodSandbox{}
|
||||||
state := runtimeApi.PodSandBoxState_READY
|
state := runtimeApi.PodSandboxState_SANDBOX_READY
|
||||||
var createdAt int64 = 0
|
var createdAt int64 = 0
|
||||||
for i := range configs {
|
for i := range configs {
|
||||||
id, err := ds.RunPodSandbox(configs[i])
|
id, err := ds.RunPodSandbox(configs[i])
|
||||||
@ -98,7 +98,7 @@ func TestSandboxStatus(t *testing.T) {
|
|||||||
fakeIP := "2.3.4.5"
|
fakeIP := "2.3.4.5"
|
||||||
fakeNS := fmt.Sprintf("/proc/%d/ns/net", os.Getpid())
|
fakeNS := fmt.Sprintf("/proc/%d/ns/net", os.Getpid())
|
||||||
|
|
||||||
state := runtimeApi.PodSandBoxState_READY
|
state := runtimeApi.PodSandboxState_SANDBOX_READY
|
||||||
ct := int64(0)
|
ct := int64(0)
|
||||||
hostNetwork := false
|
hostNetwork := false
|
||||||
expected := &runtimeApi.PodSandboxStatus{
|
expected := &runtimeApi.PodSandboxStatus{
|
||||||
@ -128,7 +128,7 @@ func TestSandboxStatus(t *testing.T) {
|
|||||||
assert.Equal(t, expected, status)
|
assert.Equal(t, expected, status)
|
||||||
|
|
||||||
// Stop the sandbox.
|
// Stop the sandbox.
|
||||||
*expected.State = runtimeApi.PodSandBoxState_NOTREADY
|
*expected.State = runtimeApi.PodSandboxState_SANDBOX_NOTREADY
|
||||||
err = ds.StopPodSandbox(id)
|
err = ds.StopPodSandbox(id)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
status, err = ds.PodSandboxStatus(id)
|
status, err = ds.PodSandboxStatus(id)
|
||||||
|
@ -72,13 +72,13 @@ func (c containerStatusByCreated) Less(i, j int) bool { return c[i].CreatedAt.Af
|
|||||||
// toKubeContainerState converts runtimeApi.ContainerState to kubecontainer.ContainerState.
|
// toKubeContainerState converts runtimeApi.ContainerState to kubecontainer.ContainerState.
|
||||||
func toKubeContainerState(state runtimeApi.ContainerState) kubecontainer.ContainerState {
|
func toKubeContainerState(state runtimeApi.ContainerState) kubecontainer.ContainerState {
|
||||||
switch state {
|
switch state {
|
||||||
case runtimeApi.ContainerState_CREATED:
|
case runtimeApi.ContainerState_CONTAINER_CREATED:
|
||||||
return kubecontainer.ContainerStateCreated
|
return kubecontainer.ContainerStateCreated
|
||||||
case runtimeApi.ContainerState_RUNNING:
|
case runtimeApi.ContainerState_CONTAINER_RUNNING:
|
||||||
return kubecontainer.ContainerStateRunning
|
return kubecontainer.ContainerStateRunning
|
||||||
case runtimeApi.ContainerState_EXITED:
|
case runtimeApi.ContainerState_CONTAINER_EXITED:
|
||||||
return kubecontainer.ContainerStateExited
|
return kubecontainer.ContainerStateExited
|
||||||
case runtimeApi.ContainerState_UNKNOWN:
|
case runtimeApi.ContainerState_CONTAINER_UNKNOWN:
|
||||||
return kubecontainer.ContainerStateUnknown
|
return kubecontainer.ContainerStateUnknown
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -301,7 +301,7 @@ func (m *kubeGenericRuntimeManager) getKubeletContainers(allContainers bool) ([]
|
|||||||
LabelSelector: map[string]string{kubernetesManagedLabel: "true"},
|
LabelSelector: map[string]string{kubernetesManagedLabel: "true"},
|
||||||
}
|
}
|
||||||
if !allContainers {
|
if !allContainers {
|
||||||
runningState := runtimeApi.ContainerState_RUNNING
|
runningState := runtimeApi.ContainerState_CONTAINER_RUNNING
|
||||||
filter.State = &runningState
|
filter.State = &runningState
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -390,7 +390,7 @@ func (m *kubeGenericRuntimeManager) getPodContainerStatuses(uid kubetypes.UID, n
|
|||||||
CreatedAt: time.Unix(0, status.GetCreatedAt()),
|
CreatedAt: time.Unix(0, status.GetCreatedAt()),
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.GetState() == runtimeApi.ContainerState_RUNNING {
|
if c.GetState() == runtimeApi.ContainerState_CONTAINER_RUNNING {
|
||||||
cStatus.StartedAt = time.Unix(0, status.GetStartedAt())
|
cStatus.StartedAt = time.Unix(0, status.GetStartedAt())
|
||||||
} else {
|
} else {
|
||||||
cStatus.Reason = status.GetReason()
|
cStatus.Reason = status.GetReason()
|
||||||
|
@ -154,7 +154,7 @@ func (cgc *containerGC) evictableContainers(minAge time.Duration) (containersByE
|
|||||||
newestGCTime := time.Now().Add(-minAge)
|
newestGCTime := time.Now().Add(-minAge)
|
||||||
for _, container := range containers {
|
for _, container := range containers {
|
||||||
// Prune out running containers.
|
// Prune out running containers.
|
||||||
if container.GetState() == runtimeApi.ContainerState_RUNNING {
|
if container.GetState() == runtimeApi.ContainerState_CONTAINER_RUNNING {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,7 +249,7 @@ func (cgc *containerGC) evictSandboxes(minAge time.Duration) error {
|
|||||||
newestGCTime := time.Now().Add(-minAge)
|
newestGCTime := time.Now().Add(-minAge)
|
||||||
for _, sandbox := range sandboxes {
|
for _, sandbox := range sandboxes {
|
||||||
// Prune out ready sandboxes.
|
// Prune out ready sandboxes.
|
||||||
if sandbox.GetState() == runtimeApi.PodSandBoxState_READY {
|
if sandbox.GetState() == runtimeApi.PodSandboxState_SANDBOX_READY {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ func TestSandboxGC(t *testing.T) {
|
|||||||
{
|
{
|
||||||
description: "sandbox with no containers should be garbage collected.",
|
description: "sandbox with no containers should be garbage collected.",
|
||||||
sandboxes: []sandboxTemplate{
|
sandboxes: []sandboxTemplate{
|
||||||
{pod: pods[0], state: runtimeApi.PodSandBoxState_NOTREADY},
|
{pod: pods[0], state: runtimeApi.PodSandboxState_SANDBOX_NOTREADY},
|
||||||
},
|
},
|
||||||
containers: []containerTemplate{},
|
containers: []containerTemplate{},
|
||||||
remain: []int{},
|
remain: []int{},
|
||||||
@ -62,7 +62,7 @@ func TestSandboxGC(t *testing.T) {
|
|||||||
{
|
{
|
||||||
description: "running sandbox should not be garbage collected.",
|
description: "running sandbox should not be garbage collected.",
|
||||||
sandboxes: []sandboxTemplate{
|
sandboxes: []sandboxTemplate{
|
||||||
{pod: pods[0], state: runtimeApi.PodSandBoxState_READY},
|
{pod: pods[0], state: runtimeApi.PodSandboxState_SANDBOX_READY},
|
||||||
},
|
},
|
||||||
containers: []containerTemplate{},
|
containers: []containerTemplate{},
|
||||||
remain: []int{0},
|
remain: []int{0},
|
||||||
@ -70,18 +70,18 @@ func TestSandboxGC(t *testing.T) {
|
|||||||
{
|
{
|
||||||
description: "sandbox with containers should not be garbage collected.",
|
description: "sandbox with containers should not be garbage collected.",
|
||||||
sandboxes: []sandboxTemplate{
|
sandboxes: []sandboxTemplate{
|
||||||
{pod: pods[0], state: runtimeApi.PodSandBoxState_NOTREADY},
|
{pod: pods[0], state: runtimeApi.PodSandboxState_SANDBOX_NOTREADY},
|
||||||
},
|
},
|
||||||
containers: []containerTemplate{
|
containers: []containerTemplate{
|
||||||
{pod: pods[0], container: &pods[0].Spec.Containers[0], state: runtimeApi.ContainerState_EXITED},
|
{pod: pods[0], container: &pods[0].Spec.Containers[0], state: runtimeApi.ContainerState_CONTAINER_EXITED},
|
||||||
},
|
},
|
||||||
remain: []int{0},
|
remain: []int{0},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: "sandbox within min age should not be garbage collected.",
|
description: "sandbox within min age should not be garbage collected.",
|
||||||
sandboxes: []sandboxTemplate{
|
sandboxes: []sandboxTemplate{
|
||||||
{pod: pods[0], createdAt: time.Now().UnixNano(), state: runtimeApi.PodSandBoxState_NOTREADY},
|
{pod: pods[0], createdAt: time.Now().UnixNano(), state: runtimeApi.PodSandboxState_SANDBOX_NOTREADY},
|
||||||
{pod: pods[1], createdAt: time.Now().Add(-2 * time.Hour).UnixNano(), state: runtimeApi.PodSandBoxState_NOTREADY},
|
{pod: pods[1], createdAt: time.Now().Add(-2 * time.Hour).UnixNano(), state: runtimeApi.PodSandboxState_SANDBOX_NOTREADY},
|
||||||
},
|
},
|
||||||
containers: []containerTemplate{},
|
containers: []containerTemplate{},
|
||||||
minAge: time.Hour, // assume the test won't take an hour
|
minAge: time.Hour, // assume the test won't take an hour
|
||||||
@ -91,14 +91,14 @@ func TestSandboxGC(t *testing.T) {
|
|||||||
description: "multiple sandboxes should be handled properly.",
|
description: "multiple sandboxes should be handled properly.",
|
||||||
sandboxes: []sandboxTemplate{
|
sandboxes: []sandboxTemplate{
|
||||||
// running sandbox.
|
// running sandbox.
|
||||||
{pod: pods[0], attempt: 1, state: runtimeApi.PodSandBoxState_READY},
|
{pod: pods[0], attempt: 1, state: runtimeApi.PodSandboxState_SANDBOX_READY},
|
||||||
// exited sandbox with containers.
|
// exited sandbox with containers.
|
||||||
{pod: pods[1], attempt: 1, state: runtimeApi.PodSandBoxState_NOTREADY},
|
{pod: pods[1], attempt: 1, state: runtimeApi.PodSandboxState_SANDBOX_NOTREADY},
|
||||||
// exited sandbox without containers.
|
// exited sandbox without containers.
|
||||||
{pod: pods[1], attempt: 0, state: runtimeApi.PodSandBoxState_NOTREADY},
|
{pod: pods[1], attempt: 0, state: runtimeApi.PodSandboxState_SANDBOX_NOTREADY},
|
||||||
},
|
},
|
||||||
containers: []containerTemplate{
|
containers: []containerTemplate{
|
||||||
{pod: pods[1], container: &pods[1].Spec.Containers[0], sandboxAttempt: 1, state: runtimeApi.ContainerState_EXITED},
|
{pod: pods[1], container: &pods[1].Spec.Containers[0], sandboxAttempt: 1, state: runtimeApi.ContainerState_CONTAINER_EXITED},
|
||||||
},
|
},
|
||||||
remain: []int{0, 1},
|
remain: []int{0, 1},
|
||||||
},
|
},
|
||||||
@ -153,7 +153,7 @@ func TestContainerGC(t *testing.T) {
|
|||||||
{
|
{
|
||||||
description: "all containers should be removed when max container limit is 0",
|
description: "all containers should be removed when max container limit is 0",
|
||||||
containers: []containerTemplate{
|
containers: []containerTemplate{
|
||||||
makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
},
|
},
|
||||||
policy: &kubecontainer.ContainerGCPolicy{MinAge: time.Minute, MaxPerPodContainer: 1, MaxContainers: 0},
|
policy: &kubecontainer.ContainerGCPolicy{MinAge: time.Minute, MaxPerPodContainer: 1, MaxContainers: 0},
|
||||||
remain: []int{},
|
remain: []int{},
|
||||||
@ -161,11 +161,11 @@ func TestContainerGC(t *testing.T) {
|
|||||||
{
|
{
|
||||||
description: "max containers should be complied when no max per pod container limit is set",
|
description: "max containers should be complied when no max per pod container limit is set",
|
||||||
containers: []containerTemplate{
|
containers: []containerTemplate{
|
||||||
makeGCContainer("foo", "bar", 4, 4, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 4, 4, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo", "bar", 3, 3, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 3, 3, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
},
|
},
|
||||||
policy: &kubecontainer.ContainerGCPolicy{MinAge: time.Minute, MaxPerPodContainer: -1, MaxContainers: 4},
|
policy: &kubecontainer.ContainerGCPolicy{MinAge: time.Minute, MaxPerPodContainer: -1, MaxContainers: 4},
|
||||||
remain: []int{0, 1, 2, 3},
|
remain: []int{0, 1, 2, 3},
|
||||||
@ -173,9 +173,9 @@ func TestContainerGC(t *testing.T) {
|
|||||||
{
|
{
|
||||||
description: "no containers should be removed if both max container and per pod container limits are not set",
|
description: "no containers should be removed if both max container and per pod container limits are not set",
|
||||||
containers: []containerTemplate{
|
containers: []containerTemplate{
|
||||||
makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
},
|
},
|
||||||
policy: &kubecontainer.ContainerGCPolicy{MinAge: time.Minute, MaxPerPodContainer: -1, MaxContainers: -1},
|
policy: &kubecontainer.ContainerGCPolicy{MinAge: time.Minute, MaxPerPodContainer: -1, MaxContainers: -1},
|
||||||
remain: []int{0, 1, 2},
|
remain: []int{0, 1, 2},
|
||||||
@ -183,94 +183,94 @@ func TestContainerGC(t *testing.T) {
|
|||||||
{
|
{
|
||||||
description: "recently started containers should not be removed",
|
description: "recently started containers should not be removed",
|
||||||
containers: []containerTemplate{
|
containers: []containerTemplate{
|
||||||
makeGCContainer("foo", "bar", 2, time.Now().UnixNano(), runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 2, time.Now().UnixNano(), runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo", "bar", 1, time.Now().UnixNano(), runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 1, time.Now().UnixNano(), runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo", "bar", 0, time.Now().UnixNano(), runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 0, time.Now().UnixNano(), runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
},
|
},
|
||||||
remain: []int{0, 1, 2},
|
remain: []int{0, 1, 2},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: "oldest containers should be removed when per pod container limit exceeded",
|
description: "oldest containers should be removed when per pod container limit exceeded",
|
||||||
containers: []containerTemplate{
|
containers: []containerTemplate{
|
||||||
makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
},
|
},
|
||||||
remain: []int{0, 1},
|
remain: []int{0, 1},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: "running containers should not be removed",
|
description: "running containers should not be removed",
|
||||||
containers: []containerTemplate{
|
containers: []containerTemplate{
|
||||||
makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_RUNNING),
|
makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_CONTAINER_RUNNING),
|
||||||
},
|
},
|
||||||
remain: []int{0, 1, 2},
|
remain: []int{0, 1, 2},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: "no containers should be removed when limits are not exceeded",
|
description: "no containers should be removed when limits are not exceeded",
|
||||||
containers: []containerTemplate{
|
containers: []containerTemplate{
|
||||||
makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
},
|
},
|
||||||
remain: []int{0, 1},
|
remain: []int{0, 1},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: "max container count should apply per (UID, container) pair",
|
description: "max container count should apply per (UID, container) pair",
|
||||||
containers: []containerTemplate{
|
containers: []containerTemplate{
|
||||||
makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo1", "baz", 2, 2, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo1", "baz", 2, 2, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo1", "baz", 1, 1, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo1", "baz", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo1", "baz", 0, 0, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo1", "baz", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo2", "bar", 2, 2, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo2", "bar", 2, 2, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo2", "bar", 1, 1, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo2", "bar", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo2", "bar", 0, 0, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo2", "bar", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
},
|
},
|
||||||
remain: []int{0, 1, 3, 4, 6, 7},
|
remain: []int{0, 1, 3, 4, 6, 7},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: "max limit should apply and try to keep from every pod",
|
description: "max limit should apply and try to keep from every pod",
|
||||||
containers: []containerTemplate{
|
containers: []containerTemplate{
|
||||||
makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo1", "bar1", 1, 1, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo1", "bar1", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo1", "bar1", 0, 0, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo1", "bar1", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo2", "bar2", 1, 1, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo2", "bar2", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo2", "bar2", 0, 0, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo2", "bar2", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo3", "bar3", 1, 1, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo3", "bar3", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo3", "bar3", 0, 0, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo3", "bar3", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo4", "bar4", 1, 1, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo4", "bar4", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo4", "bar4", 0, 0, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo4", "bar4", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
},
|
},
|
||||||
remain: []int{0, 2, 4, 6, 8},
|
remain: []int{0, 2, 4, 6, 8},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: "oldest pods should be removed if limit exceeded",
|
description: "oldest pods should be removed if limit exceeded",
|
||||||
containers: []containerTemplate{
|
containers: []containerTemplate{
|
||||||
makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo1", "bar1", 2, 2, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo1", "bar1", 2, 2, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo1", "bar1", 1, 1, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo1", "bar1", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo2", "bar2", 1, 1, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo2", "bar2", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo3", "bar3", 0, 0, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo3", "bar3", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo4", "bar4", 1, 1, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo4", "bar4", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo5", "bar5", 0, 0, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo5", "bar5", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo6", "bar6", 2, 2, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo6", "bar6", 2, 2, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo7", "bar7", 1, 1, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo7", "bar7", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
},
|
},
|
||||||
remain: []int{0, 2, 4, 6, 8, 9},
|
remain: []int{0, 2, 4, 6, 8, 9},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: "containers for deleted pods should be removed",
|
description: "containers for deleted pods should be removed",
|
||||||
containers: []containerTemplate{
|
containers: []containerTemplate{
|
||||||
makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
// deleted pods still respect MinAge.
|
// deleted pods still respect MinAge.
|
||||||
makeGCContainer("deleted", "bar1", 2, time.Now().UnixNano(), runtimeApi.ContainerState_EXITED),
|
makeGCContainer("deleted", "bar1", 2, time.Now().UnixNano(), runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("deleted", "bar1", 1, 1, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("deleted", "bar1", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
makeGCContainer("deleted", "bar1", 0, 0, runtimeApi.ContainerState_EXITED),
|
makeGCContainer("deleted", "bar1", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
|
||||||
},
|
},
|
||||||
remain: []int{0, 1, 2},
|
remain: []int{0, 1, 2},
|
||||||
},
|
},
|
||||||
|
@ -393,14 +393,14 @@ func (m *kubeGenericRuntimeManager) podSandboxChanged(pod *api.Pod, podStatus *k
|
|||||||
|
|
||||||
readySandboxCount := 0
|
readySandboxCount := 0
|
||||||
for _, s := range podStatus.SandboxStatuses {
|
for _, s := range podStatus.SandboxStatuses {
|
||||||
if s.GetState() == runtimeApi.PodSandBoxState_READY {
|
if s.GetState() == runtimeApi.PodSandboxState_SANDBOX_READY {
|
||||||
readySandboxCount++
|
readySandboxCount++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Needs to create a new sandbox when readySandboxCount > 1 or the ready sandbox is not the latest one.
|
// Needs to create a new sandbox when readySandboxCount > 1 or the ready sandbox is not the latest one.
|
||||||
sandboxStatus := podStatus.SandboxStatuses[0]
|
sandboxStatus := podStatus.SandboxStatuses[0]
|
||||||
if readySandboxCount > 1 || sandboxStatus.GetState() != runtimeApi.PodSandBoxState_READY {
|
if readySandboxCount > 1 || sandboxStatus.GetState() != runtimeApi.PodSandboxState_SANDBOX_READY {
|
||||||
glog.V(2).Infof("No ready sandbox for pod %q can be found. Need to start a new one", format.Pod(pod))
|
glog.V(2).Infof("No ready sandbox for pod %q can be found. Need to start a new one", format.Pod(pod))
|
||||||
return true, sandboxStatus.Metadata.GetAttempt() + 1, sandboxStatus.GetId()
|
return true, sandboxStatus.Metadata.GetAttempt() + 1, sandboxStatus.GetId()
|
||||||
}
|
}
|
||||||
@ -865,7 +865,7 @@ func (m *kubeGenericRuntimeManager) GetPodStatus(uid kubetypes.UID, name, namesp
|
|||||||
sandboxStatuses[idx] = podSandboxStatus
|
sandboxStatuses[idx] = podSandboxStatus
|
||||||
|
|
||||||
// Only get pod IP from latest sandbox
|
// Only get pod IP from latest sandbox
|
||||||
if idx == 0 && podSandboxStatus.GetState() == runtimeApi.PodSandBoxState_READY {
|
if idx == 0 && podSandboxStatus.GetState() == runtimeApi.PodSandboxState_SANDBOX_READY {
|
||||||
podIP = m.determinePodSandboxIP(namespace, name, podSandboxStatus)
|
podIP = m.determinePodSandboxIP(namespace, name, podSandboxStatus)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,7 @@ type sandboxTemplate struct {
|
|||||||
pod *api.Pod
|
pod *api.Pod
|
||||||
attempt uint32
|
attempt uint32
|
||||||
createdAt int64
|
createdAt int64
|
||||||
state runtimeApi.PodSandBoxState
|
state runtimeApi.PodSandboxState
|
||||||
}
|
}
|
||||||
|
|
||||||
// containerTemplate is a container template to create fake container.
|
// containerTemplate is a container template to create fake container.
|
||||||
@ -86,7 +86,7 @@ func makeAndSetFakePod(t *testing.T, m *kubeGenericRuntimeManager, fakeRuntime *
|
|||||||
sandbox := makeFakePodSandbox(t, m, sandboxTemplate{
|
sandbox := makeFakePodSandbox(t, m, sandboxTemplate{
|
||||||
pod: pod,
|
pod: pod,
|
||||||
createdAt: fakeCreatedAt,
|
createdAt: fakeCreatedAt,
|
||||||
state: runtimeApi.PodSandBoxState_READY,
|
state: runtimeApi.PodSandboxState_SANDBOX_READY,
|
||||||
})
|
})
|
||||||
|
|
||||||
var containers []*apitest.FakeContainer
|
var containers []*apitest.FakeContainer
|
||||||
@ -95,7 +95,7 @@ func makeAndSetFakePod(t *testing.T, m *kubeGenericRuntimeManager, fakeRuntime *
|
|||||||
pod: pod,
|
pod: pod,
|
||||||
container: c,
|
container: c,
|
||||||
createdAt: fakeCreatedAt,
|
createdAt: fakeCreatedAt,
|
||||||
state: runtimeApi.ContainerState_RUNNING,
|
state: runtimeApi.ContainerState_CONTAINER_RUNNING,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for i := range pod.Spec.Containers {
|
for i := range pod.Spec.Containers {
|
||||||
@ -509,10 +509,10 @@ func TestKillPod(t *testing.T) {
|
|||||||
assert.Equal(t, 2, len(fakeRuntime.Containers))
|
assert.Equal(t, 2, len(fakeRuntime.Containers))
|
||||||
assert.Equal(t, 1, len(fakeRuntime.Sandboxes))
|
assert.Equal(t, 1, len(fakeRuntime.Sandboxes))
|
||||||
for _, sandbox := range fakeRuntime.Sandboxes {
|
for _, sandbox := range fakeRuntime.Sandboxes {
|
||||||
assert.Equal(t, runtimeApi.PodSandBoxState_NOTREADY, sandbox.GetState())
|
assert.Equal(t, runtimeApi.PodSandboxState_SANDBOX_NOTREADY, sandbox.GetState())
|
||||||
}
|
}
|
||||||
for _, c := range fakeRuntime.Containers {
|
for _, c := range fakeRuntime.Containers {
|
||||||
assert.Equal(t, runtimeApi.ContainerState_EXITED, c.GetState())
|
assert.Equal(t, runtimeApi.ContainerState_CONTAINER_EXITED, c.GetState())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -550,10 +550,10 @@ func TestSyncPod(t *testing.T) {
|
|||||||
assert.Equal(t, 2, len(fakeImage.Images))
|
assert.Equal(t, 2, len(fakeImage.Images))
|
||||||
assert.Equal(t, 1, len(fakeRuntime.Sandboxes))
|
assert.Equal(t, 1, len(fakeRuntime.Sandboxes))
|
||||||
for _, sandbox := range fakeRuntime.Sandboxes {
|
for _, sandbox := range fakeRuntime.Sandboxes {
|
||||||
assert.Equal(t, runtimeApi.PodSandBoxState_READY, sandbox.GetState())
|
assert.Equal(t, runtimeApi.PodSandboxState_SANDBOX_READY, sandbox.GetState())
|
||||||
}
|
}
|
||||||
for _, c := range fakeRuntime.Containers {
|
for _, c := range fakeRuntime.Containers {
|
||||||
assert.Equal(t, runtimeApi.ContainerState_RUNNING, c.GetState())
|
assert.Equal(t, runtimeApi.ContainerState_CONTAINER_RUNNING, c.GetState())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -575,11 +575,11 @@ func TestPruneInitContainers(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
templates := []containerTemplate{
|
templates := []containerTemplate{
|
||||||
{pod: pod, container: &init1, attempt: 2, createdAt: 2, state: runtimeApi.ContainerState_EXITED},
|
{pod: pod, container: &init1, attempt: 2, createdAt: 2, state: runtimeApi.ContainerState_CONTAINER_EXITED},
|
||||||
{pod: pod, container: &init1, attempt: 1, createdAt: 1, state: runtimeApi.ContainerState_EXITED},
|
{pod: pod, container: &init1, attempt: 1, createdAt: 1, state: runtimeApi.ContainerState_CONTAINER_EXITED},
|
||||||
{pod: pod, container: &init2, attempt: 1, createdAt: 1, state: runtimeApi.ContainerState_EXITED},
|
{pod: pod, container: &init2, attempt: 1, createdAt: 1, state: runtimeApi.ContainerState_CONTAINER_EXITED},
|
||||||
{pod: pod, container: &init2, attempt: 0, createdAt: 0, state: runtimeApi.ContainerState_EXITED},
|
{pod: pod, container: &init2, attempt: 0, createdAt: 0, state: runtimeApi.ContainerState_CONTAINER_EXITED},
|
||||||
{pod: pod, container: &init1, attempt: 0, createdAt: 0, state: runtimeApi.ContainerState_EXITED},
|
{pod: pod, container: &init1, attempt: 0, createdAt: 0, state: runtimeApi.ContainerState_CONTAINER_EXITED},
|
||||||
}
|
}
|
||||||
fakes := makeFakeContainers(t, m, templates)
|
fakes := makeFakeContainers(t, m, templates)
|
||||||
fakeRuntime.SetFakeContainers(fakes)
|
fakeRuntime.SetFakeContainers(fakes)
|
||||||
|
@ -153,7 +153,7 @@ func generatePodSandboxLinuxConfig(pod *api.Pod, cgroupParent string) *runtimeAp
|
|||||||
func (m *kubeGenericRuntimeManager) getKubeletSandboxes(all bool) ([]*runtimeApi.PodSandbox, error) {
|
func (m *kubeGenericRuntimeManager) getKubeletSandboxes(all bool) ([]*runtimeApi.PodSandbox, error) {
|
||||||
var filter *runtimeApi.PodSandboxFilter
|
var filter *runtimeApi.PodSandboxFilter
|
||||||
if !all {
|
if !all {
|
||||||
readyState := runtimeApi.PodSandBoxState_READY
|
readyState := runtimeApi.PodSandboxState_SANDBOX_READY
|
||||||
filter = &runtimeApi.PodSandboxFilter{
|
filter = &runtimeApi.PodSandboxFilter{
|
||||||
State: &readyState,
|
State: &readyState,
|
||||||
}
|
}
|
||||||
@ -195,7 +195,7 @@ func (m *kubeGenericRuntimeManager) determinePodSandboxIP(podNamespace, podName
|
|||||||
|
|
||||||
// getPodSandboxID gets the sandbox id by podUID and returns ([]sandboxID, error).
|
// getPodSandboxID gets the sandbox id by podUID and returns ([]sandboxID, error).
|
||||||
// Param state could be nil in order to get all sandboxes belonging to same pod.
|
// Param state could be nil in order to get all sandboxes belonging to same pod.
|
||||||
func (m *kubeGenericRuntimeManager) getSandboxIDByPodUID(podUID string, state *runtimeApi.PodSandBoxState) ([]string, error) {
|
func (m *kubeGenericRuntimeManager) getSandboxIDByPodUID(podUID string, state *runtimeApi.PodSandboxState) ([]string, error) {
|
||||||
filter := &runtimeApi.PodSandboxFilter{
|
filter := &runtimeApi.PodSandboxFilter{
|
||||||
State: state,
|
State: state,
|
||||||
LabelSelector: map[string]string{types.KubernetesPodUIDLabel: podUID},
|
LabelSelector: map[string]string{types.KubernetesPodUIDLabel: podUID},
|
||||||
|
@ -88,13 +88,13 @@ type fakeContainer struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *fakeContainer) Start() {
|
func (c *fakeContainer) Start() {
|
||||||
c.State = runtimeApi.ContainerState_RUNNING
|
c.State = runtimeApi.ContainerState_CONTAINER_RUNNING
|
||||||
|
|
||||||
c.Status.State = &c.State
|
c.Status.State = &c.State
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *fakeContainer) Stop() {
|
func (c *fakeContainer) Stop() {
|
||||||
c.State = runtimeApi.ContainerState_EXITED
|
c.State = runtimeApi.ContainerState_CONTAINER_EXITED
|
||||||
|
|
||||||
c.Status.State = &c.State
|
c.Status.State = &c.State
|
||||||
|
|
||||||
@ -135,11 +135,11 @@ func (r *FakeRuntime) StartContainer(id string) error {
|
|||||||
return ErrContainerNotFound
|
return ErrContainerNotFound
|
||||||
}
|
}
|
||||||
switch c.State {
|
switch c.State {
|
||||||
case runtimeApi.ContainerState_EXITED:
|
case runtimeApi.ContainerState_CONTAINER_EXITED:
|
||||||
fallthrough
|
fallthrough
|
||||||
case runtimeApi.ContainerState_CREATED:
|
case runtimeApi.ContainerState_CONTAINER_CREATED:
|
||||||
c.Start()
|
c.Start()
|
||||||
case runtimeApi.ContainerState_UNKNOWN:
|
case runtimeApi.ContainerState_CONTAINER_UNKNOWN:
|
||||||
// TODO(tmrts): add timeout to Start API or generalize timeout somehow
|
// TODO(tmrts): add timeout to Start API or generalize timeout somehow
|
||||||
//<-time.After(time.Duration(timeout) * time.Second)
|
//<-time.After(time.Duration(timeout) * time.Second)
|
||||||
fallthrough
|
fallthrough
|
||||||
@ -157,9 +157,9 @@ func (r *FakeRuntime) StopContainer(id string, timeout int64) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch c.State {
|
switch c.State {
|
||||||
case runtimeApi.ContainerState_RUNNING:
|
case runtimeApi.ContainerState_CONTAINER_RUNNING:
|
||||||
c.State = runtimeApi.ContainerState_EXITED // This state might not be the best one
|
c.State = runtimeApi.ContainerState_CONTAINER_EXITED // This state might not be the best one
|
||||||
case runtimeApi.ContainerState_UNKNOWN:
|
case runtimeApi.ContainerState_CONTAINER_UNKNOWN:
|
||||||
<-time.After(time.Duration(timeout) * time.Second)
|
<-time.After(time.Duration(timeout) * time.Second)
|
||||||
fallthrough
|
fallthrough
|
||||||
default:
|
default:
|
||||||
@ -214,7 +214,7 @@ func (r *FakeRuntime) ExecSync(containerID string, cmd []string, timeout time.Du
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO(tmrts): Validate the assumption that container has to be running for exec to work.
|
// TODO(tmrts): Validate the assumption that container has to be running for exec to work.
|
||||||
if c.State != runtimeApi.ContainerState_RUNNING {
|
if c.State != runtimeApi.ContainerState_CONTAINER_RUNNING {
|
||||||
return nil, nil, ErrInvalidContainerStateTransition
|
return nil, nil, ErrInvalidContainerStateTransition
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user