exec

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Sep 23, 2019 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DestroyKey = "suid"
)
View Source
const ProcessKey = "process"

grep ${key}

Variables

This section is empty.

Functions

func GetPidUser added in v0.3.0

func GetPidUser(pid string) (string, error)

GetPidUser

func GetPidsByProcessCmdName

func GetPidsByProcessCmdName(processName string, ctx context.Context) ([]string, error)

GetPidsByProcessCmdName returns the matched process other than the current process

func GetPidsByProcessName

func GetPidsByProcessName(processName string, ctx context.Context) ([]string, error)

GetPidsByProcessName returns the matched process other than the current process

func GetPsArgs

func GetPsArgs() string

GetPsArgs for querying the process info

func IsCommandAvailable added in v0.0.3

func IsCommandAvailable(commandName string) bool

IsCommandAvailable return true if the command exists

func IsDestroy

func IsDestroy(ctx context.Context) (string, bool)

IsDestroy command

func MarshalModelSpec

func MarshalModelSpec(models *Models, writer io.Writer)

func ProcessExists added in v0.3.0

func ProcessExists(pid string) (bool, error)

ProcessExists returns true if the pid exists, otherwise return false.

func SetDestroyFlag

func SetDestroyFlag(ctx context.Context, suid string) context.Context

Types

type ActionModel

type ActionModel struct {
	ActionName      string    `yaml:"action"`
	ActionAliases   []string  `yaml:"aliases,flow,omitempty"`
	ActionShortDesc string    `yaml:"shortDesc"`
	ActionLongDesc  string    `yaml:"longDesc"`
	ActionMatchers  []ExpFlag `yaml:"matchers,omitempty"`
	ActionFlags     []ExpFlag `yaml:"flags,omitempty"`
	// contains filtered or unexported fields
}

func (*ActionModel) Aliases

func (am *ActionModel) Aliases() []string

func (*ActionModel) Executor

func (am *ActionModel) Executor(Channel) Executor

func (*ActionModel) Flags

func (am *ActionModel) Flags() []ExpFlagSpec

func (*ActionModel) LongDesc

func (am *ActionModel) LongDesc() string

func (*ActionModel) Matchers

func (am *ActionModel) Matchers() []ExpFlagSpec

func (*ActionModel) Name

func (am *ActionModel) Name() string

func (*ActionModel) ShortDesc

func (am *ActionModel) ShortDesc() string

type Channel

type Channel interface {
	// Run command
	Run(ctx context.Context, script, args string) *transport.Response

	// GetScriptPath
	GetScriptPath() string
}

func NewLocalChannel

func NewLocalChannel() Channel

type Executor

type Executor interface {
	// FlagName is used to identify the executor
	Name() string

	// Exec is used to execute the experiment
	Exec(uid string, ctx context.Context, model *ExpModel) *transport.Response

	SetChannel(channel Channel)
}

Executor defines the executor interface

type ExpActionCommandSpec

type ExpActionCommandSpec interface {
	// FlagName returns the action FlagName
	Name() string

	// Aliases returns command alias names
	Aliases() []string

	// ShortDesc returns short description for the action
	ShortDesc() string

	// LongDesc returns full description for the action
	LongDesc() string

	// Matchers returns the list of matchers supported by the action
	Matchers() []ExpFlagSpec

	// Flags returns the list of flags supported by the action
	Flags() []ExpFlagSpec

	// Executor returns the action command executor
	Executor(channel Channel) Executor
}

ExpActionCommandSpec defines the action command interface for the experimental plugin

type ExpCommandModel

type ExpCommandModel struct {
	ExpName      string        `yaml:"target"`
	ExpShortDesc string        `yaml:"shortDesc"`
	ExpLongDesc  string        `yaml:"longDesc"`
	ExpExample   string        `yaml:"example"`
	ExpActions   []ActionModel `yaml:"actions"`

	ExpScope        string          `yaml:"scope"`
	ExpPrepareModel ExpPrepareModel `yaml:"prepare,omitempty"`
	ExpSubTargets   []string        `yaml:"subTargets,flow,omitempty"`
	// contains filtered or unexported fields
}

func (*ExpCommandModel) Actions

func (ecm *ExpCommandModel) Actions() []ExpActionCommandSpec

func (*ExpCommandModel) Example

func (ecm *ExpCommandModel) Example() string

func (*ExpCommandModel) Flags

func (ecm *ExpCommandModel) Flags() []ExpFlagSpec

func (*ExpCommandModel) LongDesc

func (ecm *ExpCommandModel) LongDesc() string

func (*ExpCommandModel) Name

func (ecm *ExpCommandModel) Name() string

func (*ExpCommandModel) PreExecutor

func (ecm *ExpCommandModel) PreExecutor() PreExecutor

func (*ExpCommandModel) ShortDesc

func (ecm *ExpCommandModel) ShortDesc() string

type ExpFlag

type ExpFlag struct {
	// Name returns the flag FlagName
	Name string `yaml:"name"`

	// Desc returns the flag description
	Desc string `yaml:"desc"`

	// NoArgs means no arguments
	NoArgs bool `yaml:"noArgs"`

	// Required means necessary or not
	Required bool `yaml:"required"`
}

ExpFlag defines the action flag

func (*ExpFlag) FlagDesc

func (f *ExpFlag) FlagDesc() string

func (*ExpFlag) FlagName

func (f *ExpFlag) FlagName() string

func (*ExpFlag) FlagNoArgs

func (f *ExpFlag) FlagNoArgs() bool

func (*ExpFlag) FlagRequired

func (f *ExpFlag) FlagRequired() bool

type ExpFlagSpec

type ExpFlagSpec interface {
	FlagName() string
	FlagDesc() string
	FlagNoArgs() bool
	FlagRequired() bool
}

type ExpModel

type ExpModel struct {
	// Target is experiment target
	Target string

	// ActionName is the experiment action FlagName, for example delay
	ActionName string

	// ActionFlags is the experiment action flags, for example time and offset
	ActionFlags map[string]string
}

ExpModel is the experiment data object

func (*ExpModel) GetFlags

func (exp *ExpModel) GetFlags() string

type ExpModelCommandSpec

type ExpModelCommandSpec interface {
	// FlagName returns the command FlagName
	Name() string

	// ShortDesc returns short description for the command
	ShortDesc() string

	// LongDesc returns full description for the command
	LongDesc() string

	// Example returns use case for the command
	Example() string

	// Actions returns the list of actions supported by the command
	Actions() []ExpActionCommandSpec

	// Flags returns the command flags
	Flags() []ExpFlagSpec

	PreExecutor() PreExecutor
}

ExpModelCommandSpec defines the command interface for the experimental plugin

type ExpPrepareModel

type ExpPrepareModel struct {
	PrepareType     string    `yaml:"type"`
	PrepareFlags    []ExpFlag `yaml:"flags"`
	PrepareRequired bool      `yaml:"required"`
}

type LocalChannel

type LocalChannel struct {
}

func (*LocalChannel) GetScriptPath

func (client *LocalChannel) GetScriptPath() string

func (*LocalChannel) Run

func (client *LocalChannel) Run(ctx context.Context, script, args string) *transport.Response

type MockLocalChannel added in v0.2.0

type MockLocalChannel struct {
	Response         *transport.Response
	ScriptPath       string
	ExpectedCommands []string
	InvokeTime       int
	NoCheck          bool
	T                *testing.T
}

func (*MockLocalChannel) GetScriptPath added in v0.2.0

func (mlc *MockLocalChannel) GetScriptPath() string

func (*MockLocalChannel) Run added in v0.2.0

func (mlc *MockLocalChannel) Run(ctx context.Context, script, args string) *transport.Response

type Models

type Models struct {
	Version string            `yaml:"version"`
	Kind    string            `yaml:"kind"`
	Models  []ExpCommandModel `yaml:"items"`
}

func ParseSpecsToModel

func ParseSpecsToModel(file string, executor Executor) (*Models, error)

type PreExecutor

type PreExecutor interface {
	PreExec(cmdName, parentCmdName string, flags map[string]string) func(ctx context.Context) (Channel, context.Context, error)
}

Jump to

Keyboard shortcuts

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