Packages:

frisbee.dev/v1alpha1

Package v1alpha1 is the v1alpha1 version of the Frisbee API.

Resource Types:

Action

(Appears on:ScenarioSpec)

Action is a step in a workflow that defines a particular part of a testing process.

Field Description
action
ActionType

ActionType refers to a category of actions that can be associated with a specific controller.

name
string

Name is a unique identifier of the action

depends
WaitSpec
(Optional)

DependsOn defines the conditions for the execution of this action

assert
ConditionalExpr
(Optional)

Assert defines the conditions under which the Scenario will terminate with a “passed” or “failed” message

EmbedActions
EmbedActions

(Members of EmbedActions are embedded into this type.)

ActionType (string alias)

(Appears on:Action)

Value Description

"Call"

ActionCall starts a remote process execution, from the controller to the targeted services.

"Cascade"

ActionCascade injects multiple failures into the running system.

"Chaos"

ActionChaos injects failures into the running system.

"Cluster"

ActionCluster creates multiple services running in a shared context.

"Delete"

ActionDelete deletes a created Frisbee resource (i.e services, clusters,).

"Service"

ActionService creates a new service.

Call

Call is the Schema for the Call API.

Field Description
metadata
Kubernetes meta/v1.ObjectMeta
Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
CallSpec


callable
string

Callable is the name of the endpoint that will be called

services
[]string

Services is a list of services that will be stopped.

until
ConditionalExpr
(Optional)

Until defines the conditions under which the CR will stop spawning new jobs. If used in conjunction with inputs, it will loop over inputs until the conditions are met.

schedule
SchedulerSpec
(Optional)

Schedule defines the interval between the invocations of the callable.

suspend
bool
(Optional)

Suspend flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.

status
CallStatus

CallSpec

(Appears on:Call, EmbedActions)

CallSpec defines the desired state of Call.

Field Description
callable
string

Callable is the name of the endpoint that will be called

services
[]string

Services is a list of services that will be stopped.

until
ConditionalExpr
(Optional)

Until defines the conditions under which the CR will stop spawning new jobs. If used in conjunction with inputs, it will loop over inputs until the conditions are met.

schedule
SchedulerSpec
(Optional)

Schedule defines the interval between the invocations of the callable.

suspend
bool
(Optional)

Suspend flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.

CallStatus

(Appears on:Call)

CallStatus defines the observed state of Call.

Field Description
Lifecycle
Lifecycle

(Members of Lifecycle are embedded into this type.)

queuedJobs
[]Callable
(Optional)

QueuedJobs is a list of services scheduled for stopping.

scheduledJobs
int

ScheduledJobs points to the next QueuedJobs.

lastScheduleTime
Kubernetes meta/v1.Time

LastScheduleTime provide information about the last time a Service was successfully scheduled.

Callable

(Appears on:CallStatus, ServiceSpec)

Callable is a script that is executed within the service container, and returns a value. For example, a callable can be a command for stopping the containers that run in the Pod.

Field Description
container
string

Container specific the name of the container to which we will run the command

command
[]string

Container specifies a command and arguments to stop the targeted container in an application-specific manner.

Cascade

Cascade is the Schema for the clusters API.

Field Description
metadata
Kubernetes meta/v1.ObjectMeta
Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
CascadeSpec


GenerateFromTemplate
GenerateFromTemplate

(Members of GenerateFromTemplate are embedded into this type.)

schedule
SchedulerSpec
(Optional)

Schedule defines the interval between the creation of services within the group.

suspend
bool
(Optional)

Suspend flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.

status
CascadeStatus

CascadeSpec

(Appears on:Cascade, EmbedActions)

CascadeSpec defines the desired state of Cascade.

Field Description
GenerateFromTemplate
GenerateFromTemplate

(Members of GenerateFromTemplate are embedded into this type.)

schedule
SchedulerSpec
(Optional)

Schedule defines the interval between the creation of services within the group.

suspend
bool
(Optional)

Suspend flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.

CascadeStatus

(Appears on:Cascade)

CascadeStatus defines the observed state of Cascade.

Field Description
Lifecycle
Lifecycle

(Members of Lifecycle are embedded into this type.)

queuedJobs
[]ChaosSpec
(Optional)

QueuedJobs is a list of Chaos jobs scheduled for creation by the cascade.

scheduledJobs
int

ScheduledJobs points to the next QueuedJobs.

lastScheduleTime
Kubernetes meta/v1.Time

LastScheduleTime provide information about the last time a Chaos job was successfully scheduled.

Chaos

Chaos is the Schema for the chaos API.

Field Description
metadata
Kubernetes meta/v1.ObjectMeta
Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
ChaosSpec


type
FaultType

Type indicate the type of the injected fault

EmbedFaultType
EmbedFaultType

(Members of EmbedFaultType are embedded into this type.)

status
ChaosStatus

ChaosSpec

(Appears on:CascadeStatus, Chaos, EmbedSpecs)

ChaosSpec defines the desired state of Chaos.

Field Description
type
FaultType

Type indicate the type of the injected fault

EmbedFaultType
EmbedFaultType

(Members of EmbedFaultType are embedded into this type.)

ChaosStatus

(Appears on:Chaos)

ChaosStatus defines the observed state of Chaos.

Field Description
Lifecycle
Lifecycle

(Members of Lifecycle are embedded into this type.)

lastScheduleTime
Kubernetes meta/v1.Time

LastScheduleTime provide information about the last time a Pod was scheduled.

Cluster

Cluster is the Schema for the clusters API.

Field Description
metadata
Kubernetes meta/v1.ObjectMeta
Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
ClusterSpec


GenerateFromTemplate
GenerateFromTemplate

(Members of GenerateFromTemplate are embedded into this type.)

tolerate
TolerateSpec
(Optional)

Tolerate specifies the conditions under which the cluster will fail. If undefined, the cluster fails immediately when a service has failed.

schedule
SchedulerSpec
(Optional)

Schedule defines the interval between the creation of services in the group.

placement
PlacementSpec
(Optional)

Placement defines rules for placing the containers across the available nodes.

suspend
bool
(Optional)

Suspend flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.

status
ClusterStatus

ClusterSpec

(Appears on:Cluster, EmbedActions)

ClusterSpec defines the desired state of Cluster.

Field Description
GenerateFromTemplate
GenerateFromTemplate

(Members of GenerateFromTemplate are embedded into this type.)

tolerate
TolerateSpec
(Optional)

Tolerate specifies the conditions under which the cluster will fail. If undefined, the cluster fails immediately when a service has failed.

schedule
SchedulerSpec
(Optional)

Schedule defines the interval between the creation of services in the group.

placement
PlacementSpec
(Optional)

Placement defines rules for placing the containers across the available nodes.

suspend
bool
(Optional)

Suspend flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.

ClusterStatus

(Appears on:Cluster)

ClusterStatus defines the observed state of Cluster.

Field Description
Lifecycle
Lifecycle

(Members of Lifecycle are embedded into this type.)

queuedJobs
[]ServiceSpec
(Optional)

QueuedJobs is a list of services scheduled for creation by the cluster.

scheduledJobs
int

ScheduledJobs points to the next QueuedJobs.

lastScheduleTime
Kubernetes meta/v1.Time

LastScheduleTime provide information about the last time a Service was successfully scheduled.

ConditionType (string alias)

ConditionType is a valid value for WorkflowCondition.Type

Value Description

"AllJobsAreCompleted"

ConditionAllJobsAreCompleted indicates that all jobs have been successfully completed. Jobs may refer to actions of a scenario, services of a cluster, chaos events of a cascade, etc.

"AllJobsAreScheduled"

ConditionAllJobsAreScheduled indicates that all jobs have been successfully scheduled. Jobs may refer to actions of a scenario, services of a cluster, chaos events of a cascade, etc.

"Initialized"

ConditionCRInitialized indicates whether the workflow has been initialized

"UnexpectedTermination"

ConditionJobUnexpectedTermination is used for a job that has been unexpectedly terminated. The termination refers to both Success and Fail.

"Terminated"

ConditionTerminated indicates the user-defined conditions are met.

ConditionalExpr

(Appears on:Action, CallSpec, GenerateFromTemplate, SchedulerSpec, ScenarioStatus)

ConditionalExpr is a source of information about whether the state of the workflow after a given time is correct or not. This is needed because some scenarios may run in infinite-horizons.

Field Description
metrics
ExprMetrics
(Optional)

Metrics set a Grafana alert that will be triggered once the condition is met. Parsing: Grafana URL: http://grafana/d/A2EjFbsMk/ycsb-services?editPanel=86 metrics: A2EjFbsMk/86/Average (Panel/Dashboard/Metric)

state
ExprState
(Optional)

State describe the runtime condition that should be met after the action has been executed Shall be defined using .Lifecycle() methods. The methods account only jobs that are managed by the object.

Decorators

(Appears on:ServiceSpec)

Decorators takes-in a PodSpec, add some functionality and returns it.

Field Description
labels
map[string]string
(Optional)
annotations
map[string]string
(Optional)
setFields
[]SetField
(Optional)

SetFields is used to populate fields. Used for dynamic assignment based templated inputs.

resources
Resources
(Optional)

Resources specifies limitations as to how the container will access host resources.

telemetry
[]string
(Optional)

Telemetry is a list of referenced agents responsible to monitor the Service. Agents are sidecar services will be deployed in the same Pod as the Service container.

DeleteSpec

(Appears on:EmbedActions)

Field Description
jobs
[]string

Jobs is a list of jobs to be deleted. The format is {“kind”:“name”}, e.g, {“service”,“client”}

Disk

(Appears on:Resources)

Disk specifies the capabilities of the emulated storage device.

Field Description
readbps
string

ReadBPS limits read rate (bytes per second)

readiops
string

ReadIOPS limits read rate (IO per second)

writebps
string

WriteBPS limits write rate (bytes per second)

writeiops
string

WriteIOPS limits write rate (IO per second)

EmbedActions

(Appears on:Action)

Field Description
service
GenerateFromTemplate
(Optional)
cluster
ClusterSpec
(Optional)
chaos
GenerateFromTemplate
(Optional)
cascade
CascadeSpec
(Optional)
delete
DeleteSpec
(Optional)
call
CallSpec
(Optional)

EmbedFaultType

(Appears on:ChaosSpec)

Field Description
raw
RawSpec
(Optional)

EmbedSpecs

(Appears on:TemplateSpec)

Field Description
service
ServiceSpec
(Optional)
chaos
ChaosSpec
(Optional)

EphemeralVolumeSpec

(Appears on:Requirements)

EphemeralVolumeSpec defines an ephemeral volume that has the lifetime of a pod, It’s use for application that need additional storage but don’t care whether that data is stored persistently across restarts.

Field Description
name
string
spec
Kubernetes core/v1.PersistentVolumeClaimSpec


accessModes
[]Kubernetes core/v1.PersistentVolumeAccessMode
(Optional)

AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

selector
Kubernetes meta/v1.LabelSelector
(Optional)

A label query over volumes to consider for binding.

resources
Kubernetes core/v1.ResourceRequirements
(Optional)

Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

volumeName
string
(Optional)

VolumeName is the binding reference to the PersistentVolume backing this claim.

storageClassName
string
(Optional)

Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1

volumeMode
Kubernetes core/v1.PersistentVolumeMode
(Optional)

volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.

dataSource
Kubernetes core/v1.TypedLocalObjectReference
(Optional)

This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) * An existing custom resource that implements data population (Alpha) In order to use custom resource types that implement data population, the AnyVolumeDataSource feature gate must be enabled. If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source.

ExprMetrics (string alias)

(Appears on:ConditionalExpr)

ExprState (string alias)

(Appears on:ConditionalExpr)

FaultType (string alias)

(Appears on:ChaosSpec)

GenerateFromTemplate

(Appears on:CascadeSpec, ClusterSpec, EmbedActions)

GenerateFromTemplate generates a spec by parameterizing the templateRef with the given inputs.

Field Description
templateRef
string

TemplateRef refers to a template (e.g, iperf-server).

until
ConditionalExpr
(Optional)

Until defines the conditions under which the CR will stop spawning new jobs. If used in conjunction with inputs, it will loop over inputs until the conditions are met.

instances
int
(Optional)

MaxInstances dictate the number of objects to be created for the CR. If no inputs are defined, then all instances will be initiated using the default parameters of the template. Conditions used in conjunction with Until, MaxInstances as a max bound.

inputs
[]map[string]string
(Optional)

Inputs are list of inputs passed to the objects. Conditions used in conjunction with instances, if the number of instances is larger that the number of inputs, then inputs are recursively iteration.

Inputs

(Appears on:TemplateSpec)

Field Description
parameters
map[string]string

Parameters are user-set values that are dynamically evaluated

Lifecycle

(Appears on:CallStatus, CascadeStatus, ChaosStatus, ClusterStatus, ServiceStatus, TemplateStatus, ScenarioStatus, VirtualObjectStatus)

Field Description
phase
Phase

Phase is a simple, high-level summary of where the Object is in its lifecycle. The conditions array, the reason and message fields, and the individual container status arrays contain more detail about the pod’s status.

reason
string
(Optional)

Reason is A brief CamelCase message indicating details about why the service is in this Phase. e.g. ‘Evicted’

message
string

Message provides more details for understanding the Reason.

conditions
[]Kubernetes meta/v1.Condition
(Optional)

Conditions describe sequences of events that warrant the present Phase.

MatchBy

(Appears on:ServiceSelector)

MatchBy defines the selectors for services. If the all selectors are empty, all services will be selected.

Field Description
byName
map[string][]string
(Optional)

ByName is a map of string keys and a set values that used to select services. The key defines the namespace which services belong, and the values is a set of service names.

byCluster
map[string]string
(Optional)

ByCluster defines the service group where services belong.

Mode (string alias)

(Appears on:ServiceSelector)

Mode represents the filter for selecting on of many.

Value Description

"all"

AllMode represents that the system will select all objects regardless of status (not ready or not running pods includes). Use this label carefully.

"fixed"

FixedMode represents that the system will select a specific number of running objects.

"fixed-percent"

FixedPercentMode to specify a fixed % of a cluster

"one"

OneMode represents that the system will select one object randomly.

"random-max-percent"

RandomMaxPercentMode to specify a maximum % of a cluster

NIC

(Appears on:Resources)

NIC specifies the capabilities of the emulated network interface.

Field Description
rate
string
latency
string

Phase (string alias)

(Appears on:Lifecycle)

Phase is a simple, high-level summary of where the Object is in its lifecycle.

Value Description

"Failed"

PhaseFailed means that at least one job of the CR has terminated in a failure (exited with a non-zero exit code or was stopped by the system).

"Pending"

PhasePending means that the CR has been accepted by the Kubernetes cluster, but one of the child jobs has not been created. This includes the time waiting for logical dependencies, Ports discovery, data rewiring, and placement of Pods.

"Running"

PhaseRunning means that all the child jobs of a CR have been created, and at least one job is still running.

"Success"

PhaseSuccess means that all jobs in a CR have voluntarily exited, and the system is not going to restart any of these Jobs.

""

PhaseUninitialized means that request is not yet accepted by the controller.

PlacementSpec

(Appears on:ClusterSpec)

PlacementSpec defines rules for placing the containers across the available nodes.

Field Description
collocate
bool
(Optional)

Collocate will place all the services within the same node.

conflictsWith
[]string

ConflictsWith points to another cluster whose services cannot be located with this one. For example, this is needed for placing the master nodes on a different failure domain than the slave nodes.

nodes
[]string
(Optional)

Nodes will place all the services within the same specific node.

RawSpec (string alias)

(Appears on:EmbedFaultType)

Requirements

(Appears on:ServiceSpec)

Requirements points to Kinds and their respective configurations required for the Service operation. For example, this field can be used to create PVCs dedicated to this service.

Field Description
persistentVolumeClaim
EphemeralVolumeSpec
(Optional)

EphemeralVolume creates an ephemeral volume type.

ingressBackend
Kubernetes networking/v1.IngressBackend
(Optional)

Ingress makes An API object that manages external access to the services in a cluster, typically HTTP.

Resources

(Appears on:Decorators)

Resources specifies limitations as to how the container will access host resources.

Field Description
memory
string
(Optional)
cpu
string
(Optional)
nic
NIC
(Optional)
disk
Disk
(Optional)

SchedulerSpec

(Appears on:CallSpec, CascadeSpec, ClusterSpec)

SchedulerSpec defines information about schedule of the chaos experiment. The scheduler will schedule up to spec.GenerateFromTemplate.Instances or spec.GenerateFromTemplate.Until.

Field Description
cron
string
(Optional)

Cron defines a cron job rule.

Some rule examples: “0 30 * * * *” means to “Every hour on the half hour” “@hourly” means to “Every hour” “@every 1h30m” means to “Every hour thirty”

More rule info: https://godoc.org/github.com/robfig/cron

startingDeadlineSeconds
int64
(Optional)

StartingDeadlineSeconds is an optional deadline in seconds for starting the job if it misses scheduled time for any reason. if we miss this deadline, we’ll just wait till the next scheduled time

conditions
ConditionalExpr
(Optional)

Service

Service is the Schema for the services API.

Field Description
metadata
Kubernetes meta/v1.ObjectMeta
Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
ServiceSpec


requirements
Requirements
(Optional)
decorators
Decorators
(Optional)
callables
map[string]./api/v1alpha1.Callable
(Optional)
PodSpec
Kubernetes core/v1.PodSpec

(Members of PodSpec are embedded into this type.)

(Optional)
status
ServiceStatus

ServiceSelector

Field Description
match
MatchBy
(Optional)

Match contains the rules to select target

mode
Mode
(Optional)

Mode defines which of the selected services to use. If undefined, all() is used Supported mode: one / all / fixed / fixed-percent / random-max-percent

value
string
(Optional)

Value is required when the mode is set to FixedPodMode / FixedPercentPodMod / RandomMaxPercentPodMod. If FixedPodMode, provide an integer of pods to do chaos action. If FixedPercentPodMod, provide a number from 0-100 to specify the percent of pods the server can do chaos action. IF RandomMaxPercentPodMod, provide a number from 0-100 to specify the max percent of pods to do chaos action

macro
string
(Optional)

Macro abstract selector parameters into a structured string (e.g, .cluster.master.all). Every parsed field is represents an inner structure of the selector. In case of invalid macro, the selector will return empty results. Macro conflicts with any other parameter.

ServiceSpec

(Appears on:ClusterStatus, EmbedSpecs, Service)

ServiceSpec defines the desired state of Service.

Field Description
requirements
Requirements
(Optional)
decorators
Decorators
(Optional)
callables
map[string]./api/v1alpha1.Callable
(Optional)
PodSpec
Kubernetes core/v1.PodSpec

(Members of PodSpec are embedded into this type.)

(Optional)

ServiceStatus

(Appears on:Service)

ServiceStatus defines the observed state of Service.

Field Description
Lifecycle
Lifecycle

(Members of Lifecycle are embedded into this type.)

lastScheduleTime
Kubernetes meta/v1.Time

LastScheduleTime provide information about the last time a Pod was scheduled.

SetField

(Appears on:Decorators)

Field Description
field
string

Field is the path to the field whose value will be replaced. Examples: Containers.0.Ports.0

value
string

Template

Template is the Schema for the templates API

Field Description
metadata
Kubernetes meta/v1.ObjectMeta
Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
TemplateSpec


inputs
Inputs
(Optional)

Inputs are dynamic fields that populate the spec.

EmbedSpecs
EmbedSpecs

(Members of EmbedSpecs are embedded into this type.)

EmbedSpecs point to the Frisbee specs that can be templated.

status
TemplateStatus

TemplateSpec

(Appears on:Template)

TemplateSpec defines the desired state of Template

Field Description
inputs
Inputs
(Optional)

Inputs are dynamic fields that populate the spec.

EmbedSpecs
EmbedSpecs

(Members of EmbedSpecs are embedded into this type.)

EmbedSpecs point to the Frisbee specs that can be templated.

TemplateStatus

(Appears on:Template)

TemplateStatus defines the observed state of Template

Field Description
Lifecycle
Lifecycle

(Members of Lifecycle are embedded into this type.)

Scenario

Scenario is the Schema for the Scenarios API.

Field Description
metadata
Kubernetes meta/v1.ObjectMeta
Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
ScenarioSpec


actions
[]Action

Actions are the tasks that will be taken.

suspend
bool
(Optional)

Suspend flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.

status
ScenarioStatus

ScenarioSpec

(Appears on:Scenario)

ScenarioSpec defines the desired state of Scenario.

Field Description
actions
[]Action

Actions are the tasks that will be taken.

suspend
bool
(Optional)

Suspend flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.

ScenarioStatus

(Appears on:Scenario)

ScenarioStatus defines the observed state of Scenario.

Field Description
Lifecycle
Lifecycle

(Members of Lifecycle are embedded into this type.)

executedActions
map[string]./api/v1alpha1.ConditionalExpr
(Optional)

ExecutedActions is a list of executed actions.

grafanaEndpoint
string

GrafanaEndpoint points to the local Grafana instance

prometheusEndpoint
string

PrometheusEndpoint points to the local Prometheus instance

TolerateSpec

(Appears on:ClusterSpec)

TolerateSpec specifies the system’s ability to continue operating despite failures or malfunctions. If tolerate is enable, the cluster will remain “alive” even if some services have failed. Such failures are likely to happen as part of a Chaos experiment.

Field Description
failedServices
int

FailedServices indicate the number of services that may fail before the cluster fails itself.

VirtualObject

VirtualObject is a wrapper for jobs that do not actually create something on the system. For example, Deletion jobs. These jobs do not have a dedicated controller, but their fields are set manually.

Field Description
metadata
Kubernetes meta/v1.ObjectMeta
Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
VirtualObjectSpec


status
VirtualObjectStatus

VirtualObjectSpec

(Appears on:VirtualObject)

VirtualObjectStatus

(Appears on:VirtualObject)

Field Description
Lifecycle
Lifecycle

(Members of Lifecycle are embedded into this type.)

WaitSpec

(Appears on:Action)

Field Description
running
[]string
(Optional)

Running waits for the given groups to be running

success
[]string
(Optional)

Success waits for the given groups to be succeeded

after
Kubernetes meta/v1.Duration
(Optional)

After is the time offset since the beginning of this action.


Generated with gen-crd-api-reference-docs on git commit e10f12d.