Files
krkn/scenarios/plugin.schema.json
T
yogananth-subramanianandNaga Ravi Chaitanya Elluri 8806781a4f Pod network outage Chaos scenario
Pod network outage chaos scenario blocks traffic at pod level irrespective of the network policy used.
With the current network policies, it is not possible to explicitly block ports which are enabled
by allowed network policy rule. This chaos scenario addresses this issue by using OVS flow rules
to block ports related to the pod. It supports OpenShiftSDN and OVNKubernetes based networks.

Below example config blocks access to openshift console.
````
- id: pod_network_outage
  config:
    namespace: openshift-console
    direction:
        - ingress
    ingress_ports:
        - 8443
    label_selector: 'component=ui'
````
2023-05-15 10:43:58 -04:00

2260 lines
63 KiB
JSON

{
"$id": "https://github.com/redhat-chaos/krkn/",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Kraken Arcaflow scenarios",
"description": "Serial execution of Arcaflow Python plugins. See https://github.com/arcaflow for details.",
"type": "array",
"minContains": 1,
"items": {
"oneOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"const": "kill-pods"
},
"config": {
"$defs": {
"KillPodConfig": {
"type": "object",
"properties": {
"namespace_pattern": {
"type": "string",
"format": "regex",
"title": "Namespace pattern",
"description": "Regular expression for target pod namespaces."
},
"name_pattern": {
"type": "string",
"format": "regex",
"title": "Name pattern",
"description": "Regular expression for target pods. Required if label_selector is not set."
},
"kill": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Number of pods to kill",
"description": "How many pods should we attempt to kill?"
},
"label_selector": {
"type": "string",
"minLength": 1,
"title": "Label selector",
"description": "Kubernetes label selector for the target pods. Required if name_pattern is not set.\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for details."
},
"kubeconfig_path": {
"type": "string",
"title": "Kubeconfig path",
"description": "Path to your Kubeconfig file. Defaults to ~/.kube/config.\nSee https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ for details."
},
"timeout": {
"type": "integer",
"default": 180,
"title": "Timeout",
"description": "Timeout to wait for the target pod(s) to be removed in seconds."
},
"backoff": {
"type": "integer",
"default": 1,
"title": "Backoff",
"description": "How many seconds to wait between checks for the target pod status."
}
},
"required": [
"namespace_pattern"
],
"additionalProperties": false,
"dependentRequired": {}
}
},
"type": "object",
"properties": {
"namespace_pattern": {
"type": "string",
"format": "regex",
"title": "Namespace pattern",
"description": "Regular expression for target pod namespaces."
},
"name_pattern": {
"type": "string",
"format": "regex",
"title": "Name pattern",
"description": "Regular expression for target pods. Required if label_selector is not set."
},
"kill": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Number of pods to kill",
"description": "How many pods should we attempt to kill?"
},
"label_selector": {
"type": "string",
"minLength": 1,
"title": "Label selector",
"description": "Kubernetes label selector for the target pods. Required if name_pattern is not set.\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for details."
},
"kubeconfig_path": {
"type": "string",
"title": "Kubeconfig path",
"description": "Path to your Kubeconfig file. Defaults to ~/.kube/config.\nSee https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ for details."
},
"timeout": {
"type": "integer",
"default": 180,
"title": "Timeout",
"description": "Timeout to wait for the target pod(s) to be removed in seconds."
},
"backoff": {
"type": "integer",
"default": 1,
"title": "Backoff",
"description": "How many seconds to wait between checks for the target pod status."
}
},
"required": [
"namespace_pattern"
],
"additionalProperties": false,
"dependentRequired": {}
}
},
"required": [
"id",
"config"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string",
"const": "wait-for-pods"
},
"config": {
"$defs": {
"WaitForPodsConfig": {
"type": "object",
"properties": {
"namespace_pattern": {
"type": "string",
"format": "regex"
},
"name_pattern": {
"type": "string",
"format": "regex"
},
"label_selector": {
"type": "string",
"minLength": 1
},
"count": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Pod count",
"description": "Wait for at least this many pods to exist"
},
"timeout": {
"type": "integer",
"minimum": 1,
"default": 180,
"title": "Timeout",
"description": "How many seconds to wait for?"
},
"backoff": {
"type": "integer",
"default": 1,
"title": "Backoff",
"description": "How many seconds to wait between checks for the target pod status."
},
"kubeconfig_path": {
"type": "string"
}
},
"required": [
"namespace_pattern"
],
"additionalProperties": false,
"dependentRequired": {}
}
},
"type": "object",
"properties": {
"namespace_pattern": {
"type": "string",
"format": "regex"
},
"name_pattern": {
"type": "string",
"format": "regex"
},
"label_selector": {
"type": "string",
"minLength": 1
},
"count": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Pod count",
"description": "Wait for at least this many pods to exist"
},
"timeout": {
"type": "integer",
"minimum": 1,
"default": 180,
"title": "Timeout",
"description": "How many seconds to wait for?"
},
"backoff": {
"type": "integer",
"default": 1,
"title": "Backoff",
"description": "How many seconds to wait between checks for the target pod status."
},
"kubeconfig_path": {
"type": "string"
}
},
"required": [
"namespace_pattern"
],
"additionalProperties": false,
"dependentRequired": {}
}
},
"required": [
"id",
"config"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string",
"const": "run_python"
},
"config": {
"$defs": {
"RunPythonFileInput": {
"type": "object",
"properties": {
"filename": {
"type": "string"
}
},
"required": [
"filename"
],
"additionalProperties": false,
"dependentRequired": {}
}
},
"type": "object",
"properties": {
"filename": {
"type": "string"
}
},
"required": [
"filename"
],
"additionalProperties": false,
"dependentRequired": {}
}
},
"required": [
"id",
"config"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string",
"const": "vmware-node-start"
},
"config": {
"$defs": {
"NodeScenarioConfig": {
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "Name(s) for target nodes. Required if label_selector is not set."
},
"runs": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Number of runs per node",
"description": "Number of times to inject each scenario under actions (will perform on same node each time)"
},
"label_selector": {
"type": "string",
"minLength": 1,
"title": "Label selector",
"description": "Kubernetes label selector for the target nodes. Required if name is not set.\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for details."
},
"timeout": {
"type": "integer",
"minimum": 1,
"default": 180,
"title": "Timeout",
"description": "Timeout to wait for the target pod(s) to be removed in seconds."
},
"instance_count": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Instance Count",
"description": "Number of nodes to perform action/select that match the label selector."
},
"skip_openshift_checks": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": false,
"title": "Skip Openshift Checks",
"description": "Skip checking the status of the openshift nodes."
},
"verify_session": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": true,
"title": "Verify API Session",
"description": "Verifies the vSphere client session. It is enabled by default"
},
"kubeconfig_path": {
"type": "string",
"title": "Kubeconfig path",
"description": "Path to your Kubeconfig file. Defaults to ~/.kube/config.\nSee https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ for details."
}
},
"required": [],
"additionalProperties": false,
"dependentRequired": {
"name": [
"skip_openshift_checks"
]
}
}
},
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "Name(s) for target nodes. Required if label_selector is not set."
},
"runs": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Number of runs per node",
"description": "Number of times to inject each scenario under actions (will perform on same node each time)"
},
"label_selector": {
"type": "string",
"minLength": 1,
"title": "Label selector",
"description": "Kubernetes label selector for the target nodes. Required if name is not set.\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for details."
},
"timeout": {
"type": "integer",
"minimum": 1,
"default": 180,
"title": "Timeout",
"description": "Timeout to wait for the target pod(s) to be removed in seconds."
},
"instance_count": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Instance Count",
"description": "Number of nodes to perform action/select that match the label selector."
},
"skip_openshift_checks": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": false,
"title": "Skip Openshift Checks",
"description": "Skip checking the status of the openshift nodes."
},
"verify_session": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": true,
"title": "Verify API Session",
"description": "Verifies the vSphere client session. It is enabled by default"
},
"kubeconfig_path": {
"type": "string",
"title": "Kubeconfig path",
"description": "Path to your Kubeconfig file. Defaults to ~/.kube/config.\nSee https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ for details."
}
},
"required": [],
"additionalProperties": false,
"dependentRequired": {
"name": [
"skip_openshift_checks"
]
}
}
},
"required": [
"id",
"config"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string",
"const": "vmware-node-stop"
},
"config": {
"$defs": {
"NodeScenarioConfig": {
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "Name(s) for target nodes. Required if label_selector is not set."
},
"runs": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Number of runs per node",
"description": "Number of times to inject each scenario under actions (will perform on same node each time)"
},
"label_selector": {
"type": "string",
"minLength": 1,
"title": "Label selector",
"description": "Kubernetes label selector for the target nodes. Required if name is not set.\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for details."
},
"timeout": {
"type": "integer",
"minimum": 1,
"default": 180,
"title": "Timeout",
"description": "Timeout to wait for the target pod(s) to be removed in seconds."
},
"instance_count": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Instance Count",
"description": "Number of nodes to perform action/select that match the label selector."
},
"skip_openshift_checks": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": false,
"title": "Skip Openshift Checks",
"description": "Skip checking the status of the openshift nodes."
},
"verify_session": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": true,
"title": "Verify API Session",
"description": "Verifies the vSphere client session. It is enabled by default"
},
"kubeconfig_path": {
"type": "string",
"title": "Kubeconfig path",
"description": "Path to your Kubeconfig file. Defaults to ~/.kube/config.\nSee https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ for details."
}
},
"required": [],
"additionalProperties": false,
"dependentRequired": {
"name": [
"skip_openshift_checks"
]
}
}
},
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "Name(s) for target nodes. Required if label_selector is not set."
},
"runs": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Number of runs per node",
"description": "Number of times to inject each scenario under actions (will perform on same node each time)"
},
"label_selector": {
"type": "string",
"minLength": 1,
"title": "Label selector",
"description": "Kubernetes label selector for the target nodes. Required if name is not set.\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for details."
},
"timeout": {
"type": "integer",
"minimum": 1,
"default": 180,
"title": "Timeout",
"description": "Timeout to wait for the target pod(s) to be removed in seconds."
},
"instance_count": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Instance Count",
"description": "Number of nodes to perform action/select that match the label selector."
},
"skip_openshift_checks": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": false,
"title": "Skip Openshift Checks",
"description": "Skip checking the status of the openshift nodes."
},
"verify_session": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": true,
"title": "Verify API Session",
"description": "Verifies the vSphere client session. It is enabled by default"
},
"kubeconfig_path": {
"type": "string",
"title": "Kubeconfig path",
"description": "Path to your Kubeconfig file. Defaults to ~/.kube/config.\nSee https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ for details."
}
},
"required": [],
"additionalProperties": false,
"dependentRequired": {
"name": [
"skip_openshift_checks"
]
}
}
},
"required": [
"id",
"config"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string",
"const": "vmware-node-reboot"
},
"config": {
"$defs": {
"NodeScenarioConfig": {
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "Name(s) for target nodes. Required if label_selector is not set."
},
"runs": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Number of runs per node",
"description": "Number of times to inject each scenario under actions (will perform on same node each time)"
},
"label_selector": {
"type": "string",
"minLength": 1,
"title": "Label selector",
"description": "Kubernetes label selector for the target nodes. Required if name is not set.\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for details."
},
"timeout": {
"type": "integer",
"minimum": 1,
"default": 180,
"title": "Timeout",
"description": "Timeout to wait for the target pod(s) to be removed in seconds."
},
"instance_count": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Instance Count",
"description": "Number of nodes to perform action/select that match the label selector."
},
"skip_openshift_checks": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": false,
"title": "Skip Openshift Checks",
"description": "Skip checking the status of the openshift nodes."
},
"verify_session": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": true,
"title": "Verify API Session",
"description": "Verifies the vSphere client session. It is enabled by default"
},
"kubeconfig_path": {
"type": "string",
"title": "Kubeconfig path",
"description": "Path to your Kubeconfig file. Defaults to ~/.kube/config.\nSee https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ for details."
}
},
"required": [],
"additionalProperties": false,
"dependentRequired": {
"name": [
"skip_openshift_checks"
]
}
}
},
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "Name(s) for target nodes. Required if label_selector is not set."
},
"runs": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Number of runs per node",
"description": "Number of times to inject each scenario under actions (will perform on same node each time)"
},
"label_selector": {
"type": "string",
"minLength": 1,
"title": "Label selector",
"description": "Kubernetes label selector for the target nodes. Required if name is not set.\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for details."
},
"timeout": {
"type": "integer",
"minimum": 1,
"default": 180,
"title": "Timeout",
"description": "Timeout to wait for the target pod(s) to be removed in seconds."
},
"instance_count": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Instance Count",
"description": "Number of nodes to perform action/select that match the label selector."
},
"skip_openshift_checks": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": false,
"title": "Skip Openshift Checks",
"description": "Skip checking the status of the openshift nodes."
},
"verify_session": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": true,
"title": "Verify API Session",
"description": "Verifies the vSphere client session. It is enabled by default"
},
"kubeconfig_path": {
"type": "string",
"title": "Kubeconfig path",
"description": "Path to your Kubeconfig file. Defaults to ~/.kube/config.\nSee https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ for details."
}
},
"required": [],
"additionalProperties": false,
"dependentRequired": {
"name": [
"skip_openshift_checks"
]
}
}
},
"required": [
"id",
"config"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string",
"const": "vmware-node-terminate"
},
"config": {
"$defs": {
"NodeScenarioConfig": {
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "Name(s) for target nodes. Required if label_selector is not set."
},
"runs": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Number of runs per node",
"description": "Number of times to inject each scenario under actions (will perform on same node each time)"
},
"label_selector": {
"type": "string",
"minLength": 1,
"title": "Label selector",
"description": "Kubernetes label selector for the target nodes. Required if name is not set.\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for details."
},
"timeout": {
"type": "integer",
"minimum": 1,
"default": 180,
"title": "Timeout",
"description": "Timeout to wait for the target pod(s) to be removed in seconds."
},
"instance_count": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Instance Count",
"description": "Number of nodes to perform action/select that match the label selector."
},
"skip_openshift_checks": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": false,
"title": "Skip Openshift Checks",
"description": "Skip checking the status of the openshift nodes."
},
"verify_session": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": true,
"title": "Verify API Session",
"description": "Verifies the vSphere client session. It is enabled by default"
},
"kubeconfig_path": {
"type": "string",
"title": "Kubeconfig path",
"description": "Path to your Kubeconfig file. Defaults to ~/.kube/config.\nSee https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ for details."
}
},
"required": [],
"additionalProperties": false,
"dependentRequired": {
"name": [
"skip_openshift_checks"
]
}
}
},
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "Name(s) for target nodes. Required if label_selector is not set."
},
"runs": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Number of runs per node",
"description": "Number of times to inject each scenario under actions (will perform on same node each time)"
},
"label_selector": {
"type": "string",
"minLength": 1,
"title": "Label selector",
"description": "Kubernetes label selector for the target nodes. Required if name is not set.\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for details."
},
"timeout": {
"type": "integer",
"minimum": 1,
"default": 180,
"title": "Timeout",
"description": "Timeout to wait for the target pod(s) to be removed in seconds."
},
"instance_count": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Instance Count",
"description": "Number of nodes to perform action/select that match the label selector."
},
"skip_openshift_checks": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": false,
"title": "Skip Openshift Checks",
"description": "Skip checking the status of the openshift nodes."
},
"verify_session": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": true,
"title": "Verify API Session",
"description": "Verifies the vSphere client session. It is enabled by default"
},
"kubeconfig_path": {
"type": "string",
"title": "Kubeconfig path",
"description": "Path to your Kubeconfig file. Defaults to ~/.kube/config.\nSee https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ for details."
}
},
"required": [],
"additionalProperties": false,
"dependentRequired": {
"name": [
"skip_openshift_checks"
]
}
}
},
"required": [
"id",
"config"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string",
"const": "ibmcloud-node-start"
},
"config": {
"$defs": {
"NodeScenarioConfig": {
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "Name(s) for target nodes. Required if label_selector is not set."
},
"runs": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Number of runs per node",
"description": "Number of times to inject each scenario under actions (will perform on same node each time)"
},
"label_selector": {
"type": "string",
"minLength": 1,
"title": "Label selector",
"description": "Kubernetes label selector for the target nodes. Required if name is not set.\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for details."
},
"timeout": {
"type": "integer",
"minimum": 1,
"default": 180,
"title": "Timeout",
"description": "Timeout to wait for the target pod(s) to be removed in seconds."
},
"instance_count": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Instance Count",
"description": "Number of nodes to perform action/select that match the label selector."
},
"skip_openshift_checks": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": false,
"title": "Skip Openshift Checks",
"description": "Skip checking the status of the openshift nodes."
},
"kubeconfig_path": {
"type": "string",
"title": "Kubeconfig path",
"description": "Path to your Kubeconfig file. Defaults to ~/.kube/config.\nSee https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ for details."
}
},
"required": [],
"additionalProperties": false,
"dependentRequired": {
"name": [
"skip_openshift_checks"
]
}
}
},
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "Name(s) for target nodes. Required if label_selector is not set."
},
"runs": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Number of runs per node",
"description": "Number of times to inject each scenario under actions (will perform on same node each time)"
},
"label_selector": {
"type": "string",
"minLength": 1,
"title": "Label selector",
"description": "Kubernetes label selector for the target nodes. Required if name is not set.\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for details."
},
"timeout": {
"type": "integer",
"minimum": 1,
"default": 180,
"title": "Timeout",
"description": "Timeout to wait for the target pod(s) to be removed in seconds."
},
"instance_count": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Instance Count",
"description": "Number of nodes to perform action/select that match the label selector."
},
"skip_openshift_checks": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": false,
"title": "Skip Openshift Checks",
"description": "Skip checking the status of the openshift nodes."
},
"kubeconfig_path": {
"type": "string",
"title": "Kubeconfig path",
"description": "Path to your Kubeconfig file. Defaults to ~/.kube/config.\nSee https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ for details."
}
},
"required": [],
"additionalProperties": false,
"dependentRequired": {
"name": [
"skip_openshift_checks"
]
}
}
},
"required": [
"id",
"config"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string",
"const": "ibmcloud-node-stop"
},
"config": {
"$defs": {
"NodeScenarioConfig": {
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "Name(s) for target nodes. Required if label_selector is not set."
},
"runs": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Number of runs per node",
"description": "Number of times to inject each scenario under actions (will perform on same node each time)"
},
"label_selector": {
"type": "string",
"minLength": 1,
"title": "Label selector",
"description": "Kubernetes label selector for the target nodes. Required if name is not set.\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for details."
},
"timeout": {
"type": "integer",
"minimum": 1,
"default": 180,
"title": "Timeout",
"description": "Timeout to wait for the target pod(s) to be removed in seconds."
},
"instance_count": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Instance Count",
"description": "Number of nodes to perform action/select that match the label selector."
},
"skip_openshift_checks": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": false,
"title": "Skip Openshift Checks",
"description": "Skip checking the status of the openshift nodes."
},
"kubeconfig_path": {
"type": "string",
"title": "Kubeconfig path",
"description": "Path to your Kubeconfig file. Defaults to ~/.kube/config.\nSee https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ for details."
}
},
"required": [],
"additionalProperties": false,
"dependentRequired": {
"name": [
"skip_openshift_checks"
]
}
}
},
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "Name(s) for target nodes. Required if label_selector is not set."
},
"runs": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Number of runs per node",
"description": "Number of times to inject each scenario under actions (will perform on same node each time)"
},
"label_selector": {
"type": "string",
"minLength": 1,
"title": "Label selector",
"description": "Kubernetes label selector for the target nodes. Required if name is not set.\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for details."
},
"timeout": {
"type": "integer",
"minimum": 1,
"default": 180,
"title": "Timeout",
"description": "Timeout to wait for the target pod(s) to be removed in seconds."
},
"instance_count": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Instance Count",
"description": "Number of nodes to perform action/select that match the label selector."
},
"skip_openshift_checks": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": false,
"title": "Skip Openshift Checks",
"description": "Skip checking the status of the openshift nodes."
},
"kubeconfig_path": {
"type": "string",
"title": "Kubeconfig path",
"description": "Path to your Kubeconfig file. Defaults to ~/.kube/config.\nSee https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ for details."
}
},
"required": [],
"additionalProperties": false,
"dependentRequired": {
"name": [
"skip_openshift_checks"
]
}
}
},
"required": [
"id",
"config"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string",
"const": "ibmcloud-node-reboot"
},
"config": {
"$defs": {
"NodeScenarioConfig": {
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "Name(s) for target nodes. Required if label_selector is not set."
},
"runs": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Number of runs per node",
"description": "Number of times to inject each scenario under actions (will perform on same node each time)"
},
"label_selector": {
"type": "string",
"minLength": 1,
"title": "Label selector",
"description": "Kubernetes label selector for the target nodes. Required if name is not set.\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for details."
},
"timeout": {
"type": "integer",
"minimum": 1,
"default": 180,
"title": "Timeout",
"description": "Timeout to wait for the target pod(s) to be removed in seconds."
},
"instance_count": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Instance Count",
"description": "Number of nodes to perform action/select that match the label selector."
},
"skip_openshift_checks": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": false,
"title": "Skip Openshift Checks",
"description": "Skip checking the status of the openshift nodes."
},
"kubeconfig_path": {
"type": "string",
"title": "Kubeconfig path",
"description": "Path to your Kubeconfig file. Defaults to ~/.kube/config.\nSee https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ for details."
}
},
"required": [],
"additionalProperties": false,
"dependentRequired": {
"name": [
"skip_openshift_checks"
]
}
}
},
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "Name(s) for target nodes. Required if label_selector is not set."
},
"runs": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Number of runs per node",
"description": "Number of times to inject each scenario under actions (will perform on same node each time)"
},
"label_selector": {
"type": "string",
"minLength": 1,
"title": "Label selector",
"description": "Kubernetes label selector for the target nodes. Required if name is not set.\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for details."
},
"timeout": {
"type": "integer",
"minimum": 1,
"default": 180,
"title": "Timeout",
"description": "Timeout to wait for the target pod(s) to be removed in seconds."
},
"instance_count": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Instance Count",
"description": "Number of nodes to perform action/select that match the label selector."
},
"skip_openshift_checks": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": false,
"title": "Skip Openshift Checks",
"description": "Skip checking the status of the openshift nodes."
},
"kubeconfig_path": {
"type": "string",
"title": "Kubeconfig path",
"description": "Path to your Kubeconfig file. Defaults to ~/.kube/config.\nSee https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ for details."
}
},
"required": [],
"additionalProperties": false,
"dependentRequired": {
"name": [
"skip_openshift_checks"
]
}
}
},
"required": [
"id",
"config"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string",
"const": "ibmcloud-node-terminate"
},
"config": {
"$defs": {
"NodeScenarioConfig": {
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "Name(s) for target nodes. Required if label_selector is not set."
},
"runs": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Number of runs per node",
"description": "Number of times to inject each scenario under actions (will perform on same node each time)"
},
"label_selector": {
"type": "string",
"minLength": 1,
"title": "Label selector",
"description": "Kubernetes label selector for the target nodes. Required if name is not set.\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for details."
},
"timeout": {
"type": "integer",
"minimum": 1,
"default": 180,
"title": "Timeout",
"description": "Timeout to wait for the target pod(s) to be removed in seconds."
},
"instance_count": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Instance Count",
"description": "Number of nodes to perform action/select that match the label selector."
},
"skip_openshift_checks": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": false,
"title": "Skip Openshift Checks",
"description": "Skip checking the status of the openshift nodes."
},
"kubeconfig_path": {
"type": "string",
"title": "Kubeconfig path",
"description": "Path to your Kubeconfig file. Defaults to ~/.kube/config.\nSee https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ for details."
}
},
"required": [],
"additionalProperties": false,
"dependentRequired": {
"name": [
"skip_openshift_checks"
]
}
}
},
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "Name(s) for target nodes. Required if label_selector is not set."
},
"runs": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Number of runs per node",
"description": "Number of times to inject each scenario under actions (will perform on same node each time)"
},
"label_selector": {
"type": "string",
"minLength": 1,
"title": "Label selector",
"description": "Kubernetes label selector for the target nodes. Required if name is not set.\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for details."
},
"timeout": {
"type": "integer",
"minimum": 1,
"default": 180,
"title": "Timeout",
"description": "Timeout to wait for the target pod(s) to be removed in seconds."
},
"instance_count": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Instance Count",
"description": "Number of nodes to perform action/select that match the label selector."
},
"skip_openshift_checks": {
"anyOf": [
{
"title": "Boolean",
"type": "boolean"
},
{
"title": "String",
"type": "string",
"enum": [
"yes",
"y",
"true",
"on",
"enable",
"enabled",
"1",
"no",
"n",
"false",
"off",
"disable",
"disabled",
"0"
]
},
{
"title": "Integer",
"type": "integer",
"maximum": 1,
"minimum": 0
}
],
"default": false,
"title": "Skip Openshift Checks",
"description": "Skip checking the status of the openshift nodes."
},
"kubeconfig_path": {
"type": "string",
"title": "Kubeconfig path",
"description": "Path to your Kubeconfig file. Defaults to ~/.kube/config.\nSee https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ for details."
}
},
"required": [],
"additionalProperties": false,
"dependentRequired": {
"name": [
"skip_openshift_checks"
]
}
}
},
"required": [
"id",
"config"
]
},
{
"type": "object",
"title": "pod_network_outage Arcaflow scenarios",
"properties": {
"id": {
"type": "string",
"const": "pod_network_outage"
},
"config": {
"$defs": {
"InputParams": {
"type": "object",
"properties": {
"namespace": {
"type": "string",
"minLength": 1,
"title": "Namespace",
"description": "Namespace of the pod to which filter need to be appliedfor details."
},
"direction": {
"type": "array",
"items": {
"type": "string"
},
"default": [
"ingress",
"egress"
],
"title": "Direction",
"description": "List of directions to apply filtersDefault both egress and ingress."
},
"ingress_ports": {
"type": "array",
"items": {
"type": "integer"
},
"default": [],
"title": "Ingress ports",
"description": "List of ports to block traffic onDefault [], i.e. all ports"
},
"egress_ports": {
"type": "array",
"items": {
"type": "integer"
},
"default": [],
"title": "Egress ports",
"description": "List of ports to block traffic onDefault [], i.e. all ports"
},
"kubeconfig_path": {
"type": "string",
"title": "Kubeconfig path",
"description": "Kubeconfig file as string\nSee https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ for details."
},
"pod_name": {
"type": "string",
"title": "Pod name",
"description": "When label_selector is not specified, pod matching the name will beselected for the chaos scenario"
},
"label_selector": {
"type": "string",
"title": "Label selector",
"description": "Kubernetes label selector for the target pod. When pod_name is not specified, pod with matching label_selector is selected for chaos scenario"
},
"kraken_config": {
"type": "string",
"title": "Kraken Config",
"description": "Path to the config file of Kraken. Set this field if you wish to publish status onto Cerberus"
},
"test_duration": {
"type": "integer",
"minimum": 1,
"default": 120,
"title": "Test duration",
"description": "Duration for which each step of the ingress chaos testing is to be performed."
},
"wait_duration": {
"type": "integer",
"minimum": 1,
"default": 300,
"title": "Wait Duration",
"description": "Wait duration for finishing a test and its cleanup.Ensure that it is significantly greater than wait_duration"
},
"instance_count": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Instance Count",
"description": "Number of pods to perform action/select that match the label selector."
}
},
"required": [
"namespace"
],
"additionalProperties": false,
"dependentRequired": {}
}
},
"type": "object",
"properties": {
"namespace": {
"type": "string",
"minLength": 1,
"title": "Namespace",
"description": "Namespace of the pod to which filter need to be appliedfor details."
},
"direction": {
"type": "array",
"items": {
"type": "string"
},
"default": [
"ingress",
"egress"
],
"title": "Direction",
"description": "List of directions to apply filtersDefault both egress and ingress."
},
"ingress_ports": {
"type": "array",
"items": {
"type": "integer"
},
"default": [],
"title": "Ingress ports",
"description": "List of ports to block traffic onDefault [], i.e. all ports"
},
"egress_ports": {
"type": "array",
"items": {
"type": "integer"
},
"default": [],
"title": "Egress ports",
"description": "List of ports to block traffic onDefault [], i.e. all ports"
},
"kubeconfig_path": {
"type": "string",
"title": "Kubeconfig path",
"description": "Kubeconfig file as string\nSee https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ for details."
},
"pod_name": {
"type": "string",
"title": "Pod name",
"description": "When label_selector is not specified, pod matching the name will beselected for the chaos scenario"
},
"label_selector": {
"type": "string",
"title": "Label selector",
"description": "Kubernetes label selector for the target pod. When pod_name is not specified, pod with matching label_selector is selected for chaos scenario"
},
"kraken_config": {
"type": "string",
"title": "Kraken Config",
"description": "Path to the config file of Kraken. Set this field if you wish to publish status onto Cerberus"
},
"test_duration": {
"type": "integer",
"minimum": 1,
"default": 120,
"title": "Test duration",
"description": "Duration for which each step of the ingress chaos testing is to be performed."
},
"wait_duration": {
"type": "integer",
"minimum": 1,
"default": 300,
"title": "Wait Duration",
"description": "Wait duration for finishing a test and its cleanup.Ensure that it is significantly greater than wait_duration"
},
"instance_count": {
"type": "integer",
"minimum": 1,
"default": 1,
"title": "Instance Count",
"description": "Number of pods to perform action/select that match the label selector."
}
},
"required": [
"namespace"
],
"additionalProperties": false,
"dependentRequired": {}
}
},
"required": [
"id",
"config"
]
}
]
}
}