mirror of https://github.com/k3s-io/k3s
58 lines
2.0 KiB
Go
58 lines
2.0 KiB
Go
/*
|
|
Copyright 2015 The Kubernetes Authors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
package pleg
|
|
|
|
import (
|
|
"k8s.io/apimachinery/pkg/types"
|
|
)
|
|
|
|
// PodLifeCycleEventType define the event type of pod life cycle events.
|
|
type PodLifeCycleEventType string
|
|
|
|
const (
|
|
// ContainerStarted - event type when the new state of container is running.
|
|
ContainerStarted PodLifeCycleEventType = "ContainerStarted"
|
|
// ContainerDied - event type when the new state of container is exited.
|
|
ContainerDied PodLifeCycleEventType = "ContainerDied"
|
|
// ContainerRemoved - event type when the old state of container is exited.
|
|
ContainerRemoved PodLifeCycleEventType = "ContainerRemoved"
|
|
// PodSync is used to trigger syncing of a pod when the observed change of
|
|
// the state of the pod cannot be captured by any single event above.
|
|
PodSync PodLifeCycleEventType = "PodSync"
|
|
// ContainerChanged - event type when the new state of container is unknown.
|
|
ContainerChanged PodLifeCycleEventType = "ContainerChanged"
|
|
)
|
|
|
|
// PodLifecycleEvent is an event that reflects the change of the pod state.
|
|
type PodLifecycleEvent struct {
|
|
// The pod ID.
|
|
ID types.UID
|
|
// The type of the event.
|
|
Type PodLifeCycleEventType
|
|
// The accompanied data which varies based on the event type.
|
|
// - ContainerStarted/ContainerStopped: the container name (string).
|
|
// - All other event types: unused.
|
|
Data interface{}
|
|
}
|
|
|
|
// PodLifecycleEventGenerator contains functions for generating pod life cycle events.
|
|
type PodLifecycleEventGenerator interface {
|
|
Start()
|
|
Watch() chan *PodLifecycleEvent
|
|
Healthy() (bool, error)
|
|
}
|