diff --git a/.github/workflows/generate-chart-readme.yml b/.github/workflows/generate-chart-readme.yml index 34e0df87..7c63a2a6 100644 --- a/.github/workflows/generate-chart-readme.yml +++ b/.github/workflows/generate-chart-readme.yml @@ -58,6 +58,7 @@ jobs: - name: Execute readme-generator-for-helm run: | + pwd && ls -Rah readme-generator-for-helm/bin/index.js -r $(cat prepared-inputs | grep README) -v $(cat prepared-inputs | grep values) - name: Output generated README.md diff --git a/.github/workflows/test-unit.yml b/.github/workflows/test-unit.yml index 03fca4b3..b282ca4c 100644 --- a/.github/workflows/test-unit.yml +++ b/.github/workflows/test-unit.yml @@ -41,6 +41,9 @@ jobs: - name: Unit test run: | - alias kubectl='microk8s kubectl' - alias helm='microk8s helm3' + snap alias microk8s.kubectl kubectl + snap alias microk8s.helm3 helm + + # alias kubectl='microk8s kubectl' + # alias helm='microk8s helm3' make test \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index b1fcb70c..f5b30e9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,20 +2,36 @@ ## Changes Since Last Release +### Changed defaults / behaviours +- ... + +### New Features & Functionality +- Add autocompletion for uninstall command. +- Add validation for missing callable. +- ... + +## Bug Fixes +- Remove VirtualObjects and Templates from the list of CRDs whose finalizers can be forcibly deleted (they have no finalizers). +- ... + + +## 1.0.42 \[2023-06-27\] + ### Changed defaults / behaviours - Moved charts from `charts/{category}` to `examples/apps`. This allows to have the apps and the test-cases on the same directory. Additionally, that - means that chart releasing is no longer part of the frisbee release -- which shouldn't have been the case in the first place. -- Renamed template to be in the format 'frisbee.system...' and 'frisbee.apps'. This, however, warrants a new release because - the renamed systems templates affect the controller. +means that chart releasing is no longer part of the frisbee release -- which shouldn't have been the case in the first place. +- Renamed template to be in the format 'frisbee.system...' and 'frisbee.apps'. This, however, warrants a new release because +the renamed systems templates affect the controller. - ... ### New Features & Functionality - ... ## Bug Fixes -- Stalled cached files were used in reporting. Update the cached files every time we run the report command. +- Stalled cached files were used in reporting. Update the cached files every time we run the report command. - ... + ## 1.0.41 \[2023-06-22\] ### Changed defaults / behaviours diff --git a/Dockerfile b/Dockerfile index b6680d6a..5e41c4ff 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,23 @@ # Build the Frisbee operator binary FROM golang:1.19 as builder + +ENV GOOS=linux +ENV GOARCH=amd64 +ENV CGO_ENABLED=0 +ENV GOPROXY=direct +ENV GOSUMDB=off + WORKDIR /workspace # Copy the Go Modules manifests COPY go.mod go.mod COPY go.sum go.sum # cache deps before building and copying source so that we don't need to re-download as much # and so that source changes don't invalidate our downloaded layer -RUN go mod download +RUN go mod download + +# go env -w GOPROXY=direct + #go env -w GOSUMDB=off # Copy the go source COPY ./cmd/manager/main.go main.go @@ -16,7 +26,7 @@ COPY controllers/ controllers/ COPY pkg/ pkg/ # Build -RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o /manager main.go +RUN go build -a -o /manager main.go # Use alpine as minimal base image to package the Frisbee operator binary # We use a non-root user setup. diff --git a/README.md b/README.md index df36a5df..a9cc569f 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,23 @@ To learn more about Frisbee, check the **[QuickStart](https://frisbee.dev/docs/q our **[Website](https://frisbee.dev)**. +## Use-Cases and Testing Patterns + +In declarative testing, a test scenario focuses on what to accomplish rather than on the imperative details of how to manipulate the state of an application under test and verify the final application state against an expected state. + +This approach not make tests more *readable, maintainable, and reproducible*, but it also help devops in identifying testing patterns. + +Here, you can see some testing patterns we have identified across different application domains. + +👉 [Databases](./examples/patterns/databases) + +👉 [Federated Learning](./examples/patterns/federated-learning) + +👉 [HPC](./examples/patterns/hpc) + +👉 [CI](./examples/patterns/ci) + + ## Getting Started @@ -227,24 +244,9 @@ Finally, Frisbee provides an advanced functionality for auto-generating reports kubectl-frisbee report test demo-326 ~/frisbee-reports --pdf --force ``` -This will create report on `~/frisbee/reports` directory including the pdf from Grafana. - - -## Use-Cases and Testing Patterns - -In declarative testing, a test scenario focuses on what to accomplish rather than on the imperative details of how to manipulate the state of an application under test and verify the final application state against an expected state. - -This approach not make tests more *readable, maintainable, and reproducible*, but it also help devops in identifying testing patterns. - -Here, you can see some testing patterns we have identified across different application domains. - -👉 [Databases](./examples/patterns/databases) - -👉 [Federated Learning](./examples/patterns/federated-learning) +This will create report on `~/frisbee-reports` directory including the pdf from Grafana. -👉 [HPC](./examples/patterns/hpc) -👉 [CI](./examples/patterns/ci) ## Features diff --git a/api/v1alpha1/crd_call.go b/api/v1alpha1/crd_call.go index c613f390..851d5de7 100644 --- a/api/v1alpha1/crd_call.go +++ b/api/v1alpha1/crd_call.go @@ -51,7 +51,7 @@ type MatchOutputs struct { type CallSpec struct { // Callable is the name of the endpoint that will be called // +kubebuilder:validation:minlength=1 - Callable string `json:"callable,omitempty"` + Callable string `json:"callable"` // Services is a list of services that will be stopped. // +kubebuilder:validation:minimum=1 diff --git a/api/v1alpha1/crd_service.go b/api/v1alpha1/crd_service.go index 0d77041b..4bcbb952 100644 --- a/api/v1alpha1/crd_service.go +++ b/api/v1alpha1/crd_service.go @@ -35,40 +35,6 @@ type Service struct { Status ServiceStatus `json:"status,omitempty"` } -// NIC specifies the capabilities of the emulated network interface. -type NIC struct { - Rate string `json:"rate,omitempty"` - - Latency string `json:"latency,omitempty"` -} - -// Disk specifies the capabilities of the emulated storage device. -type Disk struct { - // ReadBPS limits read rate (bytes per second) - ReadBPS string `json:"readbps,omitempty"` - - // ReadIOPS limits read rate (IO per second) - ReadIOPS string `json:"readiops,omitempty"` - - // WriteBPS limits write rate (bytes per second) - WriteBPS string `json:"writebps,omitempty"` - - // WriteIOPS limits write rate (IO per second) - WriteIOPS string `json:"writeiops,omitempty"` -} - -// Resources specifies limitations as to how the container will access host resources. -type Resources struct { - // +optional - Memory string `json:"memory,omitempty"` - // +optional - CPU string `json:"cpu,omitempty"` - // +optional - NIC *NIC `json:"nic,omitempty"` - // +optional - Disk *Disk `json:"disk,omitempty"` -} - type SetField struct { // Field is the path to the field whose value will be replaced. // Examples: Containers.0.Ports.0 diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index 820178e0..484165ff 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -674,21 +674,6 @@ func (in *DeleteSpec) DeepCopy() *DeleteSpec { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Disk) DeepCopyInto(out *Disk) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Disk. -func (in *Disk) DeepCopy() *Disk { - if in == nil { - return nil - } - out := new(Disk) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *DistParamsPareto) DeepCopyInto(out *DistParamsPareto) { *out = *in @@ -914,21 +899,6 @@ func (in *MatchOutputs) DeepCopy() *MatchOutputs { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NIC) DeepCopyInto(out *NIC) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NIC. -func (in *NIC) DeepCopy() *NIC { - if in == nil { - return nil - } - out := new(NIC) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in Parameters) DeepCopyInto(out *Parameters) { { @@ -1037,31 +1007,6 @@ func (in *ResourceDistributionSpec) DeepCopy() *ResourceDistributionSpec { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Resources) DeepCopyInto(out *Resources) { - *out = *in - if in.NIC != nil { - in, out := &in.NIC, &out.NIC - *out = new(NIC) - **out = **in - } - if in.Disk != nil { - in, out := &in.Disk, &out.Disk - *out = new(Disk) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Resources. -func (in *Resources) DeepCopy() *Resources { - if in == nil { - return nil - } - out := new(Resources) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Scenario) DeepCopyInto(out *Scenario) { *out = *in diff --git a/charts/platform/crds/frisbee.dev_calls.yaml b/charts/platform/crds/frisbee.dev_calls.yaml index ec0b9e1a..dd9361fd 100644 --- a/charts/platform/crds/frisbee.dev_calls.yaml +++ b/charts/platform/crds/frisbee.dev_calls.yaml @@ -3,7 +3,8 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null name: calls.frisbee.dev spec: group: frisbee.dev @@ -177,6 +178,7 @@ spec: type: integer type: object required: + - callable - services type: object status: diff --git a/charts/platform/crds/frisbee.dev_cascades.yaml b/charts/platform/crds/frisbee.dev_cascades.yaml index 43b7e9da..a27f0389 100644 --- a/charts/platform/crds/frisbee.dev_cascades.yaml +++ b/charts/platform/crds/frisbee.dev_cascades.yaml @@ -3,7 +3,8 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null name: cascades.frisbee.dev spec: group: frisbee.dev diff --git a/charts/platform/crds/frisbee.dev_chaos.yaml b/charts/platform/crds/frisbee.dev_chaos.yaml index 50d72dc2..207df7ea 100644 --- a/charts/platform/crds/frisbee.dev_chaos.yaml +++ b/charts/platform/crds/frisbee.dev_chaos.yaml @@ -3,7 +3,8 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null name: chaos.frisbee.dev spec: group: frisbee.dev diff --git a/charts/platform/crds/frisbee.dev_clusters.yaml b/charts/platform/crds/frisbee.dev_clusters.yaml index 3598e13a..5cb663e5 100644 --- a/charts/platform/crds/frisbee.dev_clusters.yaml +++ b/charts/platform/crds/frisbee.dev_clusters.yaml @@ -3,7 +3,8 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null name: clusters.frisbee.dev spec: group: frisbee.dev diff --git a/charts/platform/crds/frisbee.dev_scenarios.yaml b/charts/platform/crds/frisbee.dev_scenarios.yaml index c8b96397..a53652f4 100644 --- a/charts/platform/crds/frisbee.dev_scenarios.yaml +++ b/charts/platform/crds/frisbee.dev_scenarios.yaml @@ -3,7 +3,8 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null name: scenarios.frisbee.dev spec: group: frisbee.dev @@ -226,6 +227,7 @@ spec: type: integer type: object required: + - callable - services type: object cascade: diff --git a/charts/platform/crds/frisbee.dev_services.yaml b/charts/platform/crds/frisbee.dev_services.yaml index 57046848..0d44a87e 100644 --- a/charts/platform/crds/frisbee.dev_services.yaml +++ b/charts/platform/crds/frisbee.dev_services.yaml @@ -3,7 +3,8 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null name: services.frisbee.dev spec: group: frisbee.dev diff --git a/charts/platform/crds/frisbee.dev_templates.yaml b/charts/platform/crds/frisbee.dev_templates.yaml index 30b49183..d4cfd8aa 100644 --- a/charts/platform/crds/frisbee.dev_templates.yaml +++ b/charts/platform/crds/frisbee.dev_templates.yaml @@ -3,7 +3,8 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null name: templates.frisbee.dev spec: group: frisbee.dev diff --git a/charts/platform/crds/frisbee.dev_virtualobjects.yaml b/charts/platform/crds/frisbee.dev_virtualobjects.yaml index e64fb465..ce451c85 100644 --- a/charts/platform/crds/frisbee.dev_virtualobjects.yaml +++ b/charts/platform/crds/frisbee.dev_virtualobjects.yaml @@ -3,7 +3,8 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null name: virtualobjects.frisbee.dev spec: group: frisbee.dev diff --git a/charts/platform/templates/rbac/role.yaml b/charts/platform/templates/rbac/role.yaml index 4725bb59..b20d6f61 100644 --- a/charts/platform/templates/rbac/role.yaml +++ b/charts/platform/templates/rbac/role.yaml @@ -2,6 +2,7 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: + creationTimestamp: null name: frisbee rules: - apiGroups: diff --git a/charts/system/templates/chaos/network-partition.yml b/charts/system/templates/chaos/network-partition.yml index a796ef28..6d0c8df9 100644 --- a/charts/system/templates/chaos/network-partition.yml +++ b/charts/system/templates/chaos/network-partition.yml @@ -38,7 +38,7 @@ spec: apiVersion: frisbee.dev/v1alpha1 kind: Template metadata: - name: system.chaos.network.partition.scenario + name: frisbee.system.chaos.network.partition.scenario spec: inputs: scenario: "default" @@ -66,13 +66,13 @@ spec: {{.Release.Namespace}}: [{{"{{.inputs.parameters.source}}"}}] --- -# system.chaos.network.partition.namespace will separate the target service from every other service in the namespace, +# frisbee.system.chaos.network.partition.namespace will separate the target service from every other service in the namespace, # including the monitoring stack and other services irrelevant to frisbee. If the namespace is not specified, the # installation namespace will be used. apiVersion: frisbee.dev/v1alpha1 kind: Template metadata: - name: system.chaos.network.partition.namespace + name: frisbee.system.chaos.network.partition.namespace spec: inputs: parameters: diff --git a/cmd/kubectl-frisbee/commands/common/kubectl-wrapper.go b/cmd/kubectl-frisbee/commands/common/kubectl-wrapper.go index 208a630d..a033e1b2 100644 --- a/cmd/kubectl-frisbee/commands/common/kubectl-wrapper.go +++ b/cmd/kubectl-frisbee/commands/common/kubectl-wrapper.go @@ -620,9 +620,13 @@ const ( // ForceDelete iterates the Frisbee CRDs and remove its finalizers. func ForceDelete(testName string) error { - crds := []string{Services, Clusters, Chaos, Cascades, VirtualObjects, Calls, Templates, Scenarios} + // CRDS without finalizers: + // VirtualObjects + // Templates - for _, crd := range crds { + crdsWithFinalizers := []string{Services, Clusters, Chaos, Cascades, Calls, Scenarios} + + for _, crd := range crdsWithFinalizers { resourceQuery := []string{"get", crd, "-o", "jsonpath='{.items[*].metadata.name}'"} // get all resources of the given Kind diff --git a/cmd/kubectl-frisbee/commands/uninstall.go b/cmd/kubectl-frisbee/commands/uninstall.go index 8985d183..44501f59 100644 --- a/cmd/kubectl-frisbee/commands/uninstall.go +++ b/cmd/kubectl-frisbee/commands/uninstall.go @@ -26,12 +26,16 @@ import ( "github.com/spf13/cobra" ) -type PlatformUninstallOptions struct { +func UninstallCmdCompletion(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + return common.CompleteFlags(cmd, args, toComplete) +} + +type UninstallOptions struct { RepositoryCache string DeleteTests, DeleteOperator, DeleteCRDS, DeleteCache, All bool } -func PopulatePlatformUninstallFlags(cmd *cobra.Command, options *PlatformUninstallOptions) { +func UninstallFlags(cmd *cobra.Command, options *UninstallOptions) { cmd.Flags().BoolVar(&options.DeleteTests, "tests", false, "delete frisbee tests") cmd.Flags().BoolVar(&options.DeleteOperator, "operator", false, "delete frisbee operator") cmd.Flags().BoolVar(&options.DeleteCRDS, "crds", false, "delete frisbee crds") @@ -43,12 +47,13 @@ func PopulatePlatformUninstallFlags(cmd *cobra.Command, options *PlatformUninsta } func NewUninstallCmd() *cobra.Command { - var options PlatformUninstallOptions + var options UninstallOptions cmd := &cobra.Command{ - Use: "uninstall", - Short: "Uninstall Frisbee from current kubectl context", - Aliases: []string{"un", "purge"}, + Use: "uninstall", + Short: "Uninstall Frisbee from current kubectl context", + Aliases: []string{"un", "purge"}, + ValidArgsFunction: UninstallCmdCompletion, PersistentPreRun: func(cmd *cobra.Command, args []string) { env.Logo() ui.SetVerbose(env.Default.Debug) @@ -119,7 +124,7 @@ func NewUninstallCmd() *cobra.Command { } }, } - PopulatePlatformUninstallFlags(cmd, &options) + UninstallFlags(cmd, &options) return cmd } diff --git a/controllers/common/controller.go b/controllers/common/controller.go index 117c1d99..7e1a409c 100644 --- a/controllers/common/controller.go +++ b/controllers/common/controller.go @@ -103,6 +103,8 @@ func Reconcile(parentCtx context.Context, r Reconciler, req ctrl.Request, obj cl /*-- make the calling controller to return --*/ *requeue = true + logger := r.WithValues("req", req) + /*--------------------------------------------------- * Retrieve CR by name *---------------------------------------------------*/ @@ -115,11 +117,11 @@ func Reconcile(parentCtx context.Context, r Reconciler, req ctrl.Request, obj cl return Stop(r, req) } + logger.Error(err, "Unable to find requested object") + return RequeueWithError(r, req, err) } - logger := r.WithValues("obj", client.ObjectKeyFromObject(obj)) - /*--------------------------------------------------- * Set Finalizers for CR *---------------------------------------------------*/ @@ -139,7 +141,7 @@ func Reconcile(parentCtx context.Context, r Reconciler, req ctrl.Request, obj cl retryCond := func(ctx context.Context) (done bool, err error) { if err := Update(ctx, r, obj); err != nil { // Retry - logger.Info("Retry to add finalizer", "obj", obj, "Err", err) + logger.Info("Retry to add finalizer", "err", err) return false, nil } @@ -182,7 +184,7 @@ func Reconcile(parentCtx context.Context, r Reconciler, req ctrl.Request, obj cl retryCond := func(ctx context.Context) (done bool, err error) { if err := Update(ctx, r, obj); err != nil { - logger.Info("Retry to remove finalizer", "obj", obj, "Err", err) + logger.Info("Retry to remove finalizer", "err", err) // Retry return false, nil @@ -210,25 +212,39 @@ func Reconcile(parentCtx context.Context, r Reconciler, req ctrl.Request, obj cl // Update will update the metadata and the spec of the Object. If there is a conflict, it will retry again. func Update(ctx context.Context, reconciler Reconciler, obj client.Object) error { - reconciler.Info("OO UpdtMeta", - "obj", client.ObjectKeyFromObject(obj), - "version", obj.GetResourceVersion(), - ) + logger := reconciler.WithValues("obj", client.ObjectKeyFromObject(obj)) + + logger.Info("OO UpdtMeta", "version", obj.GetResourceVersion()) + + err := reconciler.GetClient().Update(ctx, obj) + if k8errors.IsNotFound(err) { + logger.Info("Object Not found. Skip Update()") - return reconciler.GetClient().Update(ctx, obj) + return nil + } + + return err } // UpdateStatus will update the status of the Object. If there is a conflict, it will retry again. func UpdateStatus(ctx context.Context, reconciler Reconciler, obj client.Object) error { + logger := reconciler.WithValues("obj", client.ObjectKeyFromObject(obj)) + statusAwre, ok := obj.(v1alpha1.ReconcileStatusAware) if ok { - reconciler.Info("OO UpdtStatus", - "obj", client.ObjectKeyFromObject(obj), + logger.Info("OO UpdtStatus", "phase", statusAwre.GetReconcileStatus().Phase, "version", obj.GetResourceVersion(), ) - return reconciler.GetClient().Status().Update(ctx, obj) + err := reconciler.GetClient().Status().Update(ctx, obj) + if k8errors.IsNotFound(err) { + logger.Info("Object Not found. Skip UpdateStatus()") + + return nil + } + + return err } return errors.Errorf("object '%s' of GKV '%s' is not status aware", diff --git a/docs/api.html b/docs/api.html index d0df1333..1cf94424 100644 --- a/docs/api.html +++ b/docs/api.html @@ -16,1427 +16,1552 @@ ---
Packages:
Package v1alpha1 contains API Schema definitions for the Frisbee v1alpha1 API group
+Package v1alpha1 contains API Schema definitions for the Frisbee v1alpha1 API group
- (Appears on:ScenarioSpec) +(Appears on:ScenarioSpec)
Action is a step in a workflow that defines a particular part of a testing process.
+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 that must be maintained after the action has been started. - If the evaluation of the condition is false, the Scenario will abort immediately. - |
-
- EmbedActions - - - EmbedActions - - - |
-
-
- (Members of |
-
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 that must be maintained after the action has been started. +If the evaluation of the condition is false, the Scenario will abort immediately. + |
+
+EmbedActions + + +EmbedActions + + + |
+
+
+(Members of |
+
string
alias)string
alias)
- (Appears on:Action) +(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. - |
-
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 is the Schema for the Call API.
+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 - - - |
-
- - -
|
- ||||||||||||||
- status - - - CallStatus - - - |
- - | -||||||||||||||
Field | +Description | +||||||||||||||
+metadata + + +Kubernetes meta/v1.ObjectMeta + + + |
+
+Refer to the Kubernetes API documentation for the fields of the
+metadata field.
+ |
+||||||||||||||
+spec + + +CallSpec + + + |
+
+ + +
|
+||||||||||||||
+status + + +CallStatus + + + |
++ | +
- (Appears on:Call, EmbedActions) +(Appears on:Call, EmbedActions)
CallSpec defines the desired state of Call.
+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. - |
-
- expect - - - []MatchOutputs - - - |
-
- (Optional)
- Expect declares a list of expected outputs. The number of expected outputs must be the same - as the number of defined services. - |
-
- tolerate - - - TolerateSpec - - - |
-
- (Optional)
- Tolerate specifies the conditions under which the call will fail. If undefined, the call fails - immediately when a call to service has failed. - |
-
- 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. - |
-
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. + |
+
+schedule + + +TaskSchedulerSpec + + + |
+
+(Optional)
+
+Schedule defines the interval between the invocations of the callable. + |
+
+expect + + +[]MatchOutputs + + + |
+
+(Optional)
+ Expect declares a list of expected outputs. The number of expected outputs must be the same +as the number of defined services. + |
+
+suspend + +bool + + |
+
+(Optional)
+
+Suspend forces the Controller to stop scheduling any new jobs until it is resumed. Defaults to false. + |
+
+suspendWhen + + +ConditionalExpr + + + |
+
+(Optional)
+ SuspendWhen automatically sets Suspend to True, when certain conditions are met. + |
+
+tolerate + + +TolerateSpec + + + |
+
+(Optional)
+ Tolerate specifies the conditions under which the call will fail. If undefined, the call fails +immediately when a call to service has failed. + |
+
- (Appears on:Call) +(Appears on:Call)
CallStatus defines the observed state of Call.
+CallStatus defines the observed state of Call.
Field | -Description | -
---|---|
- Lifecycle - - - Lifecycle - - - |
-
-
- (Members of |
-
- 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. - |
-
Field | +Description | +
+Lifecycle + + +Lifecycle + + + |
+
+
+(Members of |
+
+queuedJobs + + +[]Callable + + + |
+
+(Optional)
+ QueuedJobs is a list of services scheduled for stopping. + |
+
+expectedTimeline + + +Timeline + + + |
+
+(Optional)
+ ExpectedTimeline is the result of evaluating a timeline distribution into specific points in time. + |
+
+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. + |
+
- (Appears on:CallStatus, ServiceSpec) +(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.
+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. - |
-
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 is the Schema for the clusters API.
+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 - - - |
-
- - -
|
- ||||||||
- status - - - CascadeStatus - - - |
- - | -||||||||
Field | +Description | +||||||||
+metadata + + +Kubernetes meta/v1.ObjectMeta + + + |
+
+Refer to the Kubernetes API documentation for the fields of the
+metadata field.
+ |
+||||||||
+spec + + +CascadeSpec + + + |
+
+ + +
|
+||||||||
+status + + +CascadeStatus + + + |
++ | +
- (Appears on:Cascade, EmbedActions) +(Appears on:Cascade, EmbedActions)
CascadeSpec defines the desired state of Cascade.
+CascadeSpec defines the desired state of Cascade.
Field | -Description | -
---|---|
- GenerateFromTemplate - - - GenerateFromTemplate - - - |
-
-
- (Members of |
-
- 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. - |
-
Field | +Description | +
+GenerateObjectFromTemplate + + +GenerateObjectFromTemplate + + + |
+
+
+(Members of |
+
+schedule + + +TaskSchedulerSpec + + + |
+
+(Optional)
+ Schedule defines the interval between the creation of services within the group. + |
+
+suspend + +bool + + |
+
+(Optional)
+ Suspend forces the Controller to stop scheduling any new jobs until it is resumed. Defaults to false. + |
+
+suspendWhen + + +ConditionalExpr + + + |
+
+(Optional)
+ SuspendWhen automatically sets Suspend to True, when certain conditions are met. + |
+
- (Appears on:Cascade) +(Appears on:Cascade)
CascadeStatus defines the observed state of Cascade.
+CascadeStatus defines the observed state of Cascade.
Field | -Description | -
---|---|
- Lifecycle - - - Lifecycle - - - |
-
-
- (Members of |
-
- 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. - |
-
Field | +Description | +
+Lifecycle + + +Lifecycle + + + |
+
+
+(Members of |
+
+queuedJobs + + +[]ChaosSpec + + + |
+
+(Optional)
+ QueuedJobs is a list of Chaos jobs scheduled for creation by the cascade. + |
+
+expectedTimeline + + +Timeline + + + |
+
+(Optional)
+ ExpectedTimeline is the result of evaluating a timeline distribution into specific points in time. + |
+
+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 is the Schema for the chaos API.
+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 - - - |
-
- - -
|
- ||
- status - - - ChaosStatus - - - |
- - | -||
Field | +Description | +||
+metadata + + +Kubernetes meta/v1.ObjectMeta + + + |
+
+Refer to the Kubernetes API documentation for the fields of the
+metadata field.
+ |
+||
+spec + + +ChaosSpec + + + |
+
+ + +
|
+||
+status + + +ChaosStatus + + + |
++ | +
- (Appears on:CascadeStatus, Chaos, EmbedSpecs) +(Appears on:CascadeStatus, Chaos, EmbedSpecs)
ChaosSpec defines the desired state of Chaos.
+ChaosSpec defines the desired state of Chaos.
Field | -Description | -
---|---|
- raw - - string - - |
- - | -
Field | +Description | +
+raw + +string + + |
++ | +
- (Appears on:Chaos) +(Appears on:Chaos)
ChaosStatus defines the observed state of Chaos.
+ChaosStatus defines the observed state of Chaos.
Field | -Description | -
---|---|
- Lifecycle - - - Lifecycle - - - |
-
-
- (Members of |
-
- lastScheduleTime - - - Kubernetes meta/v1.Time - - - |
-
- LastScheduleTime provide information about the last time a Pod was scheduled. - |
-
Field | +Description | +
+Lifecycle + + +Lifecycle + + + |
+
+
+(Members of |
+
+lastScheduleTime + + +Kubernetes meta/v1.Time + + + |
+
+ LastScheduleTime provide information about the last time a Pod was scheduled. + |
+
Cluster is the Schema for the clusters API.
+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 - - - |
-
- - -
|
- ||||||||||||||||||
- status - - - ClusterStatus - - - |
- - | -||||||||||||||||||
Field | +Description | +||||||||||||||||||
+metadata + + +Kubernetes meta/v1.ObjectMeta + + + |
+
+Refer to the Kubernetes API documentation for the fields of the
+metadata field.
+ |
+||||||||||||||||||
+spec + + +ClusterSpec + + + |
+
+ + +
|
+||||||||||||||||||
+status + + +ClusterStatus + + + |
++ | +
- (Appears on:Cluster, EmbedActions) +(Appears on:Cluster, EmbedActions)
ClusterSpec defines the desired state of Cluster.
+ClusterSpec defines the desired state of Cluster.
Field | -Description | -
---|---|
- GenerateFromTemplate - - - GenerateFromTemplate - - - |
-
-
- (Members of |
-
- testData - - - TestdataVolume - - - |
-
- TestData defines a volume that will be mounted across the Scenario’s Services. - |
-
- 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. - |
-
Field | +Description | +
+GenerateObjectFromTemplate + + +GenerateObjectFromTemplate + + + |
+
+
+(Members of |
+
+testData + + +TestdataVolume + + + |
+
+(Optional)
+ TestData defines a volume that will be mounted across the Scenario’s Services. + |
+
+defaultDistribution + + +DistributionSpec + + + |
+
+(Optional)
+ DefaultDistributionSpec pre-calculates a scoped distribution that can be accessed by other entities +using “distribution.name : default”. This default distribution allows us to describe complex relations +across features managed by different entities (e.g, place the largest dataset on the largest node). + |
+
+resources + + +ResourceDistributionSpec + + + |
+
+(Optional)
+ Resources defines how a set of resources will be distributed among the cluster’s services. + |
+
+schedule + + +TaskSchedulerSpec + + + |
+
+(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 forces the Controller to stop scheduling any new jobs until it is resumed. Defaults to false. + |
+
+suspendWhen + + +ConditionalExpr + + + |
+
+(Optional)
+ SuspendWhen automatically sets Suspend to True, when certain conditions are met. + |
+
+tolerate + + +TolerateSpec + + + |
+
+(Optional)
+ Tolerate forces the Controller to continue in spite of failed jobs. + |
+
- (Appears on:Cluster) +(Appears on:Cluster)
ClusterStatus defines the observed state of Cluster.
+ClusterStatus defines the observed state of Cluster.
Field | -Description | -
---|---|
- Lifecycle - - - Lifecycle - - - |
-
-
- (Members of |
-
- 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. - |
-
Field | +Description | +
+Lifecycle + + +Lifecycle + + + |
+
+
+(Members of |
+
+queuedJobs + + +[]ServiceSpec + + + |
+
+(Optional)
+ QueuedJobs is a list of jobs that the controller has to scheduled. + |
+
+defaultDistribution + +[]float64 + + |
+
+(Optional)
+ DefaultDistribution keeps the evaluated expression of GenerateObjectFromTemplate.DefaultDistributionSpec. + |
+
+expectedTimeline + + +Timeline + + + |
+
+(Optional)
+ ExpectedTimeline is the result of evaluating a timeline distribution into specific points in time. + |
+
+scheduledJobs + +int + + |
+
+ ScheduledJobs points to the next QueuedJobs. + |
+
+lastScheduleTime + + +Kubernetes meta/v1.Time + + + |
+
+ LastScheduleTime provide information about the last time a Job was successfully scheduled. + |
+
string
alias)string
alias)
Value | -Description | -
---|---|
"SUT" |
- ComponentSUT is a component that belongs to the system under testing. - |
-
"SYS" |
- ComponentSys is a Frisbee component that is necessary for the execution of a test (e.g, Chaos, Grafana, - …) - |
-
Value | +Description | +
"SUT" |
+ComponentSUT is a component that belongs to the system under testing. + |
+
"SYS" |
+ComponentSys is a Frisbee component that is necessary for the execution of a test (e.g, Chaos, Grafana, …) + |
+
string
alias)string
alias)
ConditionType is a valid value for WorkflowCondition.Type
+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. - |
-
"AssertError" |
- ConditionAssertionError indicate that an assertion condition is false. - |
-
"Initialized" |
- ConditionCRInitialized indicates whether the workflow has been initialized - |
-
"InvalidStateTransition" |
- ConditionInvalidStateTransition indicates the transition of a resource into another state. - This is used for debugging. - |
-
"UnexpectedTermination" |
- ConditionJobUnexpectedTermination is used for a job that has been unexpectedly terminated. - The termination refers to both Success and Fail. - |
-
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. + |
+
"AssertError" |
+ConditionAssertionError indicate that an assertion condition is false. + |
+
"Initialized" |
+ConditionCRInitialized indicates whether the workflow has been initialized. + |
+
"InvalidStateTransition" |
+ConditionInvalidStateTransition indicates the transition of a resource into another state. +This is used for debugging. + |
+
"UnexpectedTermination" |
+ConditionJobUnexpectedTermination is used for a job that has been unexpectedly terminated. +The termination refers to both Success and Fail. + |
+
- (Appears on:Action, CallSpec, - GenerateFromTemplate, SchedulerSpec) +(Appears on:Action, CallSpec, CascadeSpec, ClusterSpec, TaskSchedulerSpec)
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.
+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. - |
-
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. + |
+
- (Appears on:ServiceSpec) +(Appears on:ServiceSpec)
Decorators takes-in a PodSpec, add some functionality and returns it.
+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. - |
-
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. + |
+
+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. + |
+
+ingressPort + + +Kubernetes networking/v1.ServiceBackendPort + + + |
+
+(Optional)
+ IngressPort builds an ingress for making the service’s port accessible outside the Kubernetes cluster. + |
+
- (Appears on:EmbedActions) +(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”} - |
-
Field | +Description | +
+jobs + +[]string + + |
+
+ Jobs is a list of jobs to be deleted. The format is {“kind”:“name”}, e.g, {“service”,“client”} + |
+
- (Appears on:Resources) +(Appears on:Resources)
Disk specifies the capabilities of the emulated storage device.
+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) - |
-
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) + |
+
- (Appears on:Action) +(Appears on:DistributionSpec)
DistParamsPareto are parameters for the Pareto distribution.
Field | -Description | -
---|---|
- service - - - GenerateFromTemplate - - - |
- - (Optional) - | -
- cluster - - - ClusterSpec - - - |
- - (Optional) - | -
- chaos - - - GenerateFromTemplate - - - |
- - (Optional) - | -
- cascade - - - CascadeSpec - - - |
- - (Optional) - | -
- delete - - - DeleteSpec - - - |
- - (Optional) - | -
- call - - - CallSpec - - - |
- - (Optional) - | -
Field | +Description | +
+scale + +float64 + + |
++ | +
+shape + +float64 + + |
++ | +
string
alias)+(Appears on:DistributionSpec) +
+Value | +Description | +
---|---|
"constant" |
+DistributionConstant is a fixed distributed with all elements having a probability of 1. + |
+
"default" |
+DistributionDefault instructs the controller to use an already evaluated distribution. + |
+
"normal" |
+DistributionNormal draws samples from a normal (Gaussian) distribution + |
+
"pareto" |
+DistributionPareto draws samples from a Pareto distribution + |
+
"uniform" |
+DistributionUniform draws samples from a continuous uniform distribution + |
+
- (Appears on:TemplateSpec) +(Appears on:ClusterSpec, ResourceDistributionSpec, TimelineDistributionSpec)
Field | -Description | -
---|---|
- service - - - ServiceSpec - - - |
- - (Optional) - | -
- chaos - - - ChaosSpec - - - |
- - (Optional) - | -
Field | +Description | +
+name + + +DistributionName + + + |
++ | +
+histogram + + +DistParamsPareto + + + |
++(Optional) + | +
- (Appears on:Requirements) +(Appears on:Action)
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 - - - |
-
- - -
|
- ||||||||||||||||
Field | +Description | +||||||||||||||||
+service + + +GenerateObjectFromTemplate + + + |
++(Optional) + | +||||||||||||||||
+cluster + + +ClusterSpec + + + |
++(Optional) + | +||||||||||||||||
+chaos + + +GenerateObjectFromTemplate + + + |
++(Optional) + | +||||||||||||||||
+cascade + + +CascadeSpec + + + |
++(Optional) + | +||||||||||||||||
+delete + + +DeleteSpec + + + |
++(Optional) + | +||||||||||||||||
+call + + +CallSpec + + + |
++(Optional) + | +
+(Appears on:TemplateSpec) +
+Field | +Description | +
---|---|
+service + + +ServiceSpec + + + |
++(Optional) + | +
+chaos + + +ChaosSpec + + + |
++(Optional) + | +
string
alias)string
alias)
- (Appears on:ConditionalExpr) +(Appears on:ConditionalExpr)
string
alias)string
alias)
- (Appears on:ConditionalExpr) +(Appears on:ConditionalExpr)
- (Appears on:CascadeSpec, ClusterSpec, EmbedActions) +(Appears on:CascadeSpec, ClusterSpec, EmbedActions)
GenerateFromTemplate generates a spec by parameterizing the templateRef with the given inputs.
+GenerateObjectFromTemplate 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. - Event used in conjunction with Until, MaxInstances as a max bound. - |
-
- inputs - - []map[string]string - - |
-
- (Optional)
- Inputs are list of inputs passed to the objects. - Event used in conjunction with instances, if the number of instances is larger that the number of - inputs, - then inputs are recursively iteration. - |
-
Field | +Description | +
+templateRef + +string + + |
+
+ TemplateRef refers to a template (e.g, iperf-server). + |
+
+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. +Event used in conjunction with Until, MaxInstances as a max bound. + |
+
+inputs + + +[]UserInputs + + + |
+
+(Optional)
+ UserParameters is a map of parameters passed to the objects. +Event used in conjunction with instances, if the number of instances is larger that the number of inputs, +then inputs are recursively iteration. + |
+
- (Appears on:Scheme, TemplateSpec) -
Field | -Description | -
---|---|
- parameters - - map[string]string - - |
-
- Parameters are user-set values that are dynamically evaluated - |
-
- (Appears on:CallStatus, CascadeStatus, ChaosStatus, - ClusterStatus, ScenarioStatus, - ServiceStatus, TemplateStatus, - VirtualObjectStatus) +(Appears on:CallStatus, CascadeStatus, ChaosStatus, ClusterStatus, ScenarioStatus, ServiceStatus, TemplateStatus, 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. - |
-
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. + |
+
- (Appears on:ServiceSelector) +(Appears on:ServiceSelector)
MatchBy defines the selectors for services. - If the all selectors are empty, all services will be selected.
+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. - |
-
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. + |
+
- (Appears on:CallSpec) +(Appears on:CallSpec)
MatchOutputs defined a set of remote command outputs that must be matched. The limit for both Stdout and Stderr - is 1024 characters.
+MatchOutputs defined a set of remote command outputs that must be matched. The limit for both Stdout and Stderr +is 1024 characters.
Field | -Description | -
---|---|
- stdout - - string - - |
-
- (Optional)
- Stdout is a regex that describes the expected output from stdout. It cannot be longer than 1024 - characters. - |
-
- stderr - - string - - |
-
- (Optional)
- Stderr is a regex that describes the expected output from stderr. It cannot be longer than 1024 - characters. - |
-
Field | +Description | +
+stdout + +string + + |
+
+(Optional)
+ Stdout is a regex that describes the expected output from stdout. It cannot be longer than 1024 characters. + |
+
+stderr + +string + + |
+
+(Optional)
+ Stderr is a regex that describes the expected output from stderr. It cannot be longer than 1024 characters. + |
+
string
alias)string
alias)
- (Appears on:ServiceSelector) +(Appears on:ServiceSelector)
Mode represents the filter for selecting on of many.
+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 - |
-
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. + |
+
- (Appears on:Resources) +(Appears on:Resources)
NIC specifies the capabilities of the emulated network interface.
+NIC specifies the capabilities of the emulated network interface.
Field | -Description | -
---|---|
- rate - - string - - |
- - | -
- latency - - string - - |
- - | -
Field | +Description | +
+rate + +string + + |
++ | +
+latency + +string + + |
++ | +
map[string]*k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1.JSON
alias)+(Appears on:TemplateInputs) +
+string
alias)string
alias)
- (Appears on:Lifecycle) +(Appears on:Lifecycle)
Phase is a simple, high-level summary of where the Object is in its 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. - |
-
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. + |
+
- (Appears on:ClusterSpec) +(Appears on:ClusterSpec)
PlacementSpec defines rules for placing the containers across the available nodes.
+PlacementSpec defines rules for placing the containers across the available nodes.
Field | -Description | -
---|---|
- collocate - - bool - - |
-
- (Optional)
- Collocate will place all the Services of this Cluster 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 of this Cluster within the specific set of nodes. - |
-
Field | +Description | +
+collocate + +bool + + |
+
+(Optional)
+ Collocate will place all the Services of this Cluster 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 of this Cluster within the specific set of nodes. + |
+
[]k8s.io/api/core/v1.ResourceList
alias)- (Appears on:ServiceSpec) +(Appears on:ClusterSpec)
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. - |
-
Field | +Description | +
+total + + +Kubernetes core/v1.ResourceList + + + |
+
+ TotalResources defines the total resources that will be distributed among the cluster’s services. + |
+
+distribution + + +DistributionSpec + + + |
+
+ DistributionSpec defines how the TotalResources will be assigned to resources. + |
+
- (Appears on:Decorators) -
Resources specifies limitations as to how the container will access host resources.
+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) - | -
Field | +Description | +
+memory + +string + + |
++(Optional) + | +
+cpu + +string + + |
++(Optional) + | +
+nic + + +NIC + + + |
++(Optional) + | +
+disk + + +Disk + + + |
++(Optional) + | +
Scenario is the Schema for the Scenarios API.
+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 - - - |
-
- - -
|
- ||||||
- status - - - ScenarioStatus - - - |
- - | -||||||
Field | +Description | +||||||
+metadata + + +Kubernetes meta/v1.ObjectMeta + + + |
+
+Refer to the Kubernetes API documentation for the fields of the
+metadata field.
+ |
+||||||
+spec + + +ScenarioSpec + + + |
+
+ + +
|
+||||||
+status + + +ScenarioStatus + + + |
++ | +
- (Appears on:Scenario) +(Appears on:Scenario)
ScenarioSpec defines the desired state of Scenario.
+ScenarioSpec defines the desired state of Scenario.
Field | -Description | -
---|---|
- testData - - - TestdataVolume - - - |
-
- TestData defines a volume that will be mounted across the Scenario’s Services. - |
-
- 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. - |
-
Field | +Description | +
+testData + + +TestdataVolume + + + |
+
+ TestData defines a volume that will be mounted across the Scenario’s Services. + |
+
+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. + |
+
- (Appears on:Scenario) +(Appears on:Scenario)
ScenarioStatus defines the observed state of Scenario.
+ScenarioStatus defines the observed state of Scenario.
Field | -Description | -
---|---|
- Lifecycle - - - Lifecycle - - - |
-
-
- (Members of |
-
- scheduledJobs - - []string - - |
-
- (Optional)
- ScheduledJobs is a list of references to the names of executed actions. - |
-
- grafanaEndpoint - - string - - |
-
- GrafanaEndpoint points to the local Grafana instance - |
-
- prometheusEndpoint - - string - - |
-
- PrometheusEndpoint points to the local Prometheus instance - |
-
- dataviewerEndpoint - - string - - |
-
- Dataviewer points to the local Dataviewer instance - |
-
Lifecycle
- (Appears on:CallSpec, CascadeSpec, ClusterSpec)
+(Members of Lifecycle
are embedded into this type.)
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 - |
-
- event - - - ConditionalExpr - - - |
-
- (Optional)
- Event schedules a new every when an event has happened. - |
-
Field | -Description | -
---|---|
- scenario - - string - - |
-
- Scenario returns the name of the scenario that invokes the template. - |
-
- namespace - - string - - |
-
- Returns the namespace where the scenario is running - |
-
- spec - - []byte - - |
-
- Spec is the body whose Inputs.Parameters will be expanded. -- - |
-
- inputs - - - Inputs - - - |
-
- (Optional)
- Inputs are dynamic fields that populate the spec. - |
-
+scheduledJobs + +[]string + + |
+
+(Optional)
+ ScheduledJobs is a list of references to the names of executed actions. + |
+
+grafanaEndpoint + +string + + |
+
+ GrafanaEndpoint points to the local Grafana instance + |
+
+prometheusEndpoint + +string + + |
+
+ PrometheusEndpoint points to the local Prometheus instance + |
+
+dataviewerEndpoint + +string + + |
+
+ Dataviewer points to the local Dataviewer instance + |
+
Service is the Schema for the services API.
+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 - - - |
-
- - -
|
- ||||||||
- status - - - ServiceStatus - - - |
- - | -||||||||
Field | +Description | +||||||||
+metadata + + +Kubernetes meta/v1.ObjectMeta + + + |
+
+Refer to the Kubernetes API documentation for the fields of the
+metadata field.
+ |
+||||||||
+spec + + +ServiceSpec + + + |
+
+ + +
|
+||||||||
+status + + +ServiceStatus + + + |
++ | +
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 |
-
- 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. - |
-
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 |
+
+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. + |
+
- (Appears on:ClusterStatus, EmbedSpecs, Service) +(Appears on:ClusterStatus, EmbedSpecs, Service)
ServiceSpec defines the desired state of Service.
+ServiceSpec defines the desired state of Service.
Field | -Description | -
---|---|
- decorators - - - Decorators - - - |
- - (Optional) - | -
- requirements - - - Requirements - - - |
- - (Optional) - | -
- callables - - - map[string]./api/v1alpha1.Callable - - - |
- - (Optional) - | -
- PodSpec - - - Kubernetes core/v1.PodSpec - - - |
-
-
- (Members of |
-
Field | +Description | +
+decorators + + +Decorators + + + |
++(Optional) + | +
+callables + + +map[string]./api/v1alpha1.Callable + + + |
++(Optional) + | +
+PodSpec + + +Kubernetes core/v1.PodSpec + + + |
+
+
+(Members of |
+
- (Appears on:Service) +(Appears on:Service)
ServiceStatus defines the observed state of Service.
+ServiceStatus defines the observed state of Service.
Field | -Description | -
---|---|
- Lifecycle - - - Lifecycle - - - |
-
-
- (Members of |
-
- lastScheduleTime - - - Kubernetes meta/v1.Time - - - |
-
- LastScheduleTime provide information about the last time a Pod was scheduled. - |
-
Field | +Description | +
+Lifecycle + + +Lifecycle + + + |
+
+
+(Members of |
+
+lastScheduleTime + + +Kubernetes meta/v1.Time + + + |
+
+ LastScheduleTime provide information about the last time a Pod was scheduled. + |
+
- (Appears on:Decorators) +(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 - - |
- - | -
Field | +Description | +
+field + +string + + |
+
+ Field is the path to the field whose value will be replaced. +Examples: Containers.0.Ports.0 + |
+
+value + +string + + |
++ | +
StateAggregationFunctions is a set of aggregation functions for managing the lifecycle of different - resources.
+StateAggregationFunctions is a set of aggregation functions for managing the lifecycle of different resources.
+(Appears on:CallSpec, CascadeSpec, ClusterSpec) +
+TaskSchedulerSpec determines the conditions for creating new tasks of a Job. +The scheduler will schedule up to spec.GenerateObjectFromTemplate.Instances or spec.GenerateObjectFromTemplate.Until.
+Field | +Description | +
---|---|
+sequential + +bool + + |
+
+ Sequential schedules a new task once the previous task is complete. + |
+
+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 + |
+
+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 + |
+
+timeline + + +TimelineDistributionSpec + + + |
+
+(Optional)
+ Timeline schedules new tasks deterministically, based on predefined times that honors the underlying distribution. +Multiple tasks may run concurrently. + |
+
+event + + +ConditionalExpr + + + |
+
+(Optional)
+ Event schedules new tasks in a non-deterministic manner, based on system-driven events. +Multiple tasks may run concurrently. + |
+
Template is the Schema for the templates API
+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 - - - |
-
- - -
|
- ||||
- status - - - TemplateStatus - - - |
- - | -||||
Field | +Description | +||||
+metadata + + +Kubernetes meta/v1.ObjectMeta + + + |
+
+Refer to the Kubernetes API documentation for the fields of the
+metadata field.
+ |
+||||
+spec + + +TemplateSpec + + + |
+
+ + +
|
+||||
+status + + +TemplateStatus + + + |
++ | +
+(Appears on:TemplateSpec) +
+Field | +Description | +
---|---|
+parameters + + +Parameters + + + |
+
+(Optional)
+ Parameters are user-set values that are dynamically evaluated + |
+
+namespace + +string + + |
+
+(Optional)
+ Namespace returns the namespace from which the template is called from. + |
+
+scenario + +string + + |
+
+(Optional)
+ Scenario returns the scenario from which the template is called from. + |
+
- (Appears on:Template) +(Appears on:Template)
TemplateSpec defines the desired state of 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 point to the Frisbee specs that can be templated. - |
-
Field | +Description | +
+inputs + + +TemplateInputs + + + |
+
+(Optional)
+ Inputs are dynamic fields that populate the spec. + |
+
+EmbedSpecs + + +EmbedSpecs + + + |
+
+
+(Members of EmbedSpecs point to the Frisbee specs that can be templated. + |
+
- (Appears on:Template) +(Appears on:Template)
TemplateStatus defines the observed state of Template
+TemplateStatus defines the observed state of Template.
Field | -Description | -
---|---|
- Lifecycle - - - Lifecycle - - - |
-
-
- (Members of |
-
Field | +Description | +
+Lifecycle + + +Lifecycle + + + |
+
+
+(Members of |
+
- (Appears on:ClusterSpec, ScenarioSpec) +(Appears on:ClusterSpec, ScenarioSpec) +
+Field | +Description | +
---|---|
+volume + + +Kubernetes core/v1.PersistentVolumeClaimVolumeSource + + + |
++ | +
+globalNamespace + +bool + + |
+
+(Optional)
+ GlobalNamespace if disabled, all containers see the name root directory. If enabled, each container +sees its own namespace. + |
+
[]k8s.io/apimachinery/pkg/apis/meta/v1.Time
alias)+(Appears on:CallStatus, CascadeStatus, ClusterStatus) +
++(Appears on:TaskSchedulerSpec)
Field | -Description | -
---|---|
- volume - - - Kubernetes core/v1.PersistentVolumeClaimVolumeSource - - - |
- - | -
- globalNamespace - - bool - - |
-
- (Optional)
- GlobalNamespace if disabled, all containers see the name root directory. If enabled, each container - sees its own namespace. - |
-
Field | +Description | +
+total + + +Kubernetes meta/v1.Duration + + + |
+
+ TotalDuration defines the total duration within which events will happen. + |
+
+distribution + + +DistributionSpec + + + |
+
+ DistributionSpec defines how the TotalDuration will be divided into time-based events. + |
+
- (Appears on:CallSpec, ClusterSpec) +(Appears on:CallSpec, 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.
+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 | -
---|---|
- failedJobs - - int - - |
-
- (Optional)
- FailedJobs indicate the number of services that may fail before the cluster fails itself. - |
-
Field | +Description | +
+failedJobs + +int + + |
+
+(Optional)
+ FailedJobs indicate the number of services that may fail before the cluster fails itself. + |
+
map[string]*k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1.JSON
alias)+(Appears on:GenerateObjectFromTemplate) +
+VirtualObject is a CRD without a dedicated controller. Practically, it is just an entry in the Kubernetes API - that is used as placeholder for action like Delete and Call.
+VirtualObject is a CRD without a dedicated controller. Practically, it is just an entry in the Kubernetes API +that is used as placeholder for action like Delete and Call.
Field | -Description | -
---|---|
- metadata - - - Kubernetes meta/v1.ObjectMeta - - - |
-
- Refer to the Kubernetes API documentation for the fields of the
- metadata field.
- |
-
- spec - - - VirtualObjectSpec - - - |
-
- - - |
-
- status - - - VirtualObjectStatus - - - |
- - | -
Field | +Description | +
+metadata + + +Kubernetes meta/v1.ObjectMeta + + + |
+
+Refer to the Kubernetes API documentation for the fields of the
+metadata field.
+ |
+
+spec + + +VirtualObjectSpec + + + |
+
+ + + |
+
+status + + +VirtualObjectStatus + + + |
++ | +
- (Appears on:VirtualObject) +(Appears on:VirtualObject)
- (Appears on:VirtualObject) +(Appears on:VirtualObject)
Field | -Description | -
---|---|
- Lifecycle - - - Lifecycle - - - |
-
-
- (Members of |
-
- data - - map[string]string - - |
-
- (Optional)
- Data contains the configuration data. - Each key must consist of alphanumeric characters, ‘-’, ‘_’ or ‘.’. - Values with non-UTF-8 byte sequences must use the BinaryData field. - The keys stored in Data must not overlap with the keys in - the BinaryData field, this is enforced during validation process. - |
-
Field | +Description | +
+Lifecycle + + +Lifecycle + + + |
+
+
+(Members of |
+
+data + +map[string]string + + |
+
+(Optional)
+ Data contains the configuration data. +Each key must consist of alphanumeric characters, ‘-’, ‘_’ or ‘.’. +Values with non-UTF-8 byte sequences must use the BinaryData field. +The keys stored in Data must not overlap with the keys in +the BinaryData field, this is enforced during validation process. + |
+
- (Appears on:Action) +(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. - |
-
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 3e6ca05
.
+Generated with gen-crd-api-reference-docs
+on git commit 1b9af175
.