supervisor

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 1, 2021 License: Apache-2.0 Imports: 11 Imported by: 1

Documentation

Index

Constants

View Source
const (
	// CategoryAll is just for filter of search.
	CategoryAll ObjectCategory = ""
	// CategorySystemController is the category of system controller.
	CategorySystemController = "SystemController"
	// CategoryBusinessController is the category of business controller.
	CategoryBusinessController = "BusinessController"
	// CategoryPipeline is the category of pipeline.
	CategoryPipeline = "Pipeline"
	// CategoryTrafficGate is the category of traffic gate.
	CategoryTrafficGate = "TrafficGate"
)

Variables

This section is empty.

Functions

func InitGlobalSupervisor

func InitGlobalSupervisor(super *Supervisor)

InitGlobalSupervisor initializes global supervisor. FIXME: Prune Global stuff after sending super to filters.

func ObjectKinds

func ObjectKinds() []string

ObjectKinds returns all object kinds.

func Register

func Register(o Object)

Register registers object.

Types

type Controller

type Controller interface {
	Object
}

Controller is the object in category of Controller.

type MetaSpec

type MetaSpec struct {
	Name string `yaml:"name" jsonschema:"required,format=urlname"`
	Kind string `yaml:"kind" jsonschema:"required"`
}

MetaSpec is metadata for all specs.

type Object

type Object interface {
	// Category returns the object category of itself.
	Category() ObjectCategory

	// Kind returns the unique kind name to represent itself.
	Kind() string

	// DefaultSpec returns the default spec.
	// It must return a pointer to point a struct.
	DefaultSpec() interface{}

	// Init initializes the Obejct.
	Init(superSpec *Spec, super *Supervisor)

	// Inherit also initializes the Object.
	// But it needs to handle the lifecycle of the previous generation.
	// So it's own responsibility for the object to inherit and clean the previous generation stuff.
	// The supervisor won't call Close for the previous generation.
	Inherit(superSpec *Spec, previousGeneration Object, super *Supervisor)

	// Status returns its runtime status.
	Status() *Status

	// Close closes itself. It is called by deleting.
	// Supervisor won't call Close for previous generation in Update.
	Close()
}

Object is the common interface for all objects whose lifecycle supervisor handles.

type ObjectCategory

type ObjectCategory string

ObjectCategory is the type to classify all objects.

type Pipeline

type Pipeline interface {
	Object
}

Pipeline is the object in category of Pipeline.

type RunningCategory

type RunningCategory struct {
	// contains filtered or unexported fields
}

RunningCategory is the bucket to gather running objects in the same category.

type RunningObject

type RunningObject struct {
	// contains filtered or unexported fields
}

RunningObject is the running object.

func (*RunningObject) Instance

func (ro *RunningObject) Instance() Object

Instance returns the instance of the object.

func (*RunningObject) Spec

func (ro *RunningObject) Spec() *Spec

Spec returns the spec of the object.

type Spec

type Spec struct {
	// contains filtered or unexported fields
}

Spec is the universal spec for all objects.

func NewSpec

func NewSpec(yamlConfig string) (*Spec, error)

NewSpec creates a spec and validates it.

func (*Spec) Kind

func (s *Spec) Kind() string

Kind returns kind.

func (*Spec) Name

func (s *Spec) Name() string

Name returns name.

func (*Spec) ObjectSpec

func (s *Spec) ObjectSpec() interface{}

ObjectSpec returns the object spec.

func (*Spec) YAMLConfig

func (s *Spec) YAMLConfig() string

YAMLConfig returns the config in yaml format.

type Status

type Status struct {
	// If the ObjectStatus contains field `timestamp`,
	// it will be covered by the top-level Timestamp here.
	ObjectStatus interface{}
	// Timestamp is the global unix timestamp, the object
	// needs not to set it on its own.
	Timestamp int64
}

Status is the universal status for all objects.

type Supervisor

type Supervisor struct {
	// contains filtered or unexported fields
}

Supervisor manages all objects.

var Global *Supervisor

Global is the global supervisor.

func MustNew

func MustNew(opt *option.Options, cls cluster.Cluster) *Supervisor

MustNew creates a Supervisor.

func (*Supervisor) Close

func (s *Supervisor) Close(wg *sync.WaitGroup)

Close closes Supervisor.

func (*Supervisor) Cluster

func (s *Supervisor) Cluster() cluster.Cluster

Cluster return the cluster applied to supervisor.

func (*Supervisor) FirstHandleDone

func (s *Supervisor) FirstHandleDone() chan struct{}

FirstHandleDone returns the firstHandleDone channel, which will be closed after creating all objects at first time.

func (*Supervisor) GetRunningObject

func (s *Supervisor) GetRunningObject(name string, category ObjectCategory) (ro *RunningObject, exists bool)

GetRunningObject returns the running object with the existing flag. If the category is empty string, GetRunningObject will try to find the running object in every category.

func (*Supervisor) Options

func (s *Supervisor) Options() *option.Options

Options returns the options applied to supervisor.

func (*Supervisor) WalkRunningObjects

func (s *Supervisor) WalkRunningObjects(walkFn WalkFunc, category ObjectCategory)

WalkRunningObjects walks every running object until walkFn returns false.

type TrafficGate

type TrafficGate interface {
	Object
}

TrafficGate is the object in category of TrafficGate.

type WalkFunc

type WalkFunc func(runningObject *RunningObject) bool

WalkFunc is the type of the function called for each running object visited by WalkRunningObjects.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL