Comments (20)
Oh right. The ctk validator is unaware that this particular control uses probes to achieve its goal. So they are not validated.
I can't make the validator support that but I could bring the validation into the control itself, when we configure it.
from chaostoolkit-addons.
Oh right. The ctk validator is unaware that this particular control uses probes to achieve its goal. So they are not validated.
I can't make the validator support that but I could bring the validation into the control itself, when we configure it.
Sure, as long as it stops the experiment and throws an error, would be fantastic :)
from chaostoolkit-addons.
Yeap. I can't work on this today but I'll try tomorrow, ping me otherwise :)
from chaostoolkit-addons.
Awesome thank you! @Lawouach
from chaostoolkit-addons.
Hey @WixoLeo could you try the latest commit on master and see if that works?
from chaostoolkit-addons.
Hey @WixoLeo could you try the latest commit on master and see if that works?
Hi, sorry for late response, I tested it, and still the same problem for some reason
from chaostoolkit-addons.
Python:
__all__ = [
"some_probe"
]
def some_probe():
print("Hello mate")
return True
exp.json
{
"version": "1.0.0",
"title": "test",
"description": "test",
"configuration": {
"myarg": "exp.json",
"another_arg": "another.json"
},
"variables": {
"selected_instance": null
},
"tags": [
"network",
"lala"
],
"controls": [
{
"name": "Safeguards",
"provider": {
"type": "python",
"module": "chaosaddons.controls.safeguards",
"arguments": {
"probes": [
{
"name": "Non existing probe",
"description": "Probe that doesn't exist",
"type": "probe",
"provider": {
"type": "python",
"module": "testoplugin.testo.probes1",
"func": "some_probe",
"arguments": {}
},
"tolerance": true
}
]
}
}
}
],
"steady-state-hypothesis": {
"title": "Check something",
"probes": [
{
"name": "Non existing probe",
"description": "Probe that doesn't exist",
"type": "probe",
"provider": {
"type": "python",
"module": "testoplugin.testo.probes",
"func": "some_probe",
"arguments": {}
},
"tolerance": true
}
]
},
"method": [
{
"name": "My probe",
"description": "My best probe",
"tolerance": {
"type": "regex",
"pattern": "exp.json",
"target": "stdout"
},
"type": "probe",
"provider": {
"type": "process",
"path": "echo",
"arguments": "${myarg}"
}
}
],
"rollbacks": [
{
"name": "My probe",
"description": "My best probe",
"tolerance": {
"type": "regex",
"pattern": "exp.json",
"target": "stdout"
},
"type": "probe",
"provider": {
"type": "process",
"path": "echo",
"arguments": "${myarg}"
}
}
]
}```
from chaostoolkit-addons.
Found the reason why my fix wasn't enough. I'll have to update the ctk core lib and release it for this. On it.
from chaostoolkit-addons.
Once this one is merged and released, i'll update this repo accordingly chaostoolkit/chaostoolkit-lib#225
from chaostoolkit-addons.
Once this one is merged and released, i'll update this repo accordingly chaostoolkit/chaostoolkit-lib#225
Awesome, thank you @Lawouach, absolute pro!
from chaostoolkit-addons.
Hey @WixoLeo I have updated the master branch with the changes from ctklib 1.20.0, feel free to give it a spin :)
from chaostoolkit-addons.
Hey @WixoLeo I have updated the master branch with the changes from ctklib 1.20.0, feel free to give it a spin :)
So I've tested it, and it seems like it's still not working..
I used ctk, ctk-lib and addons from master branch
from chaostoolkit-addons.
Could you upload a ctk log file here and your experiment again?
from chaostoolkit-addons.
from chaostoolkit-addons.
{
"version": "1.0.0",
"title": "test",
"description": "test",
"configuration": {
"myarg": "exp.json",
"another_arg": "another.json"
},
"variables": {
"selected_instance": null
},
"tags": [
"network",
"lala"
],
"controls": [
{
"name": "Safeguards",
"provider": {
"type": "python",
"module": "chaosaddons.controls.safeguards",
"arguments": {
"probes": [
{
"name": "Non existing probe",
"description": "Probe that doesn't exist",
"type": "probe",
"provider": {
"type": "python",
"module": "bla",
"func": "some_probe",
"arguments": {}
}
}
]
}
}
}
],
"steady-state-hypothesis": {
"title": "Check something",
"probes": []
},
"method": [],
"rollbacks": []
}
from chaostoolkit-addons.
The log says:
�[36m[2021-09-01 13:47:08 DEBUG] [python:167]�[39m Control module '/Users/leonidh/Documents/repos/ctk-tests/venv/lib/python3.9/site-packages/chaosaddons/controls/safeguards.py' does not declare 'validate_control'
Maybe you're not updated properly?
from chaostoolkit-addons.
I've done a clean install, this happened:
(venv) $ chaos run exp.json
zsh: /usr/local/bin/chaos: bad interpreter: /usr/local/opt/python/bin/python3.7: no such file or directory
[2021-09-01 14:53:05 INFO] Validating the experiment's syntax
Traceback (most recent call last):
File "/Users/leonidh/Documents/repos/ctk-tests/venv/bin/chaos", line 33, in <module>
sys.exit(load_entry_point('chaostoolkit', 'console_scripts', 'chaos')())
File "/Users/leonidh/Documents/repos/ctk-tests/venv/lib/python3.9/site-packages/click/core.py", line 1137, in __call__
return self.main(*args, **kwargs)
File "/Users/leonidh/Documents/repos/ctk-tests/venv/lib/python3.9/site-packages/click/core.py", line 1062, in main
rv = self.invoke(ctx)
File "/Users/leonidh/Documents/repos/ctk-tests/venv/lib/python3.9/site-packages/click/core.py", line 1668, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/Users/leonidh/Documents/repos/ctk-tests/venv/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/Users/leonidh/Documents/repos/ctk-tests/venv/lib/python3.9/site-packages/click/core.py", line 763, in invoke
return __callback(*args, **kwargs)
File "/Users/leonidh/Documents/repos/ctk-tests/venv/lib/python3.9/site-packages/click/decorators.py", line 26, in new_func
return f(get_current_context(), *args, **kwargs)
File "/Users/leonidh/Documents/repos/ctk-tests/chaostoolkit/chaostoolkit/cli.py", line 246, in run
ensure_experiment_is_valid(experiment)
File "/Users/leonidh/Documents/repos/ctk-tests/venv/lib/python3.9/site-packages/chaoslib/caching.py", line 76, in wrapped
return f(**arguments)
File "/Users/leonidh/Documents/repos/ctk-tests/venv/lib/python3.9/site-packages/chaoslib/experiment.py", line 94, in ensure_experiment_is_valid
validate_controls(experiment)
File "/Users/leonidh/Documents/repos/ctk-tests/venv/lib/python3.9/site-packages/chaoslib/control/__init__.py", line 121, in validate_controls
validate_python_control(c)
File "/Users/leonidh/Documents/repos/ctk-tests/venv/lib/python3.9/site-packages/chaoslib/control/python.py", line 111, in validate_python_control
func(control)
File "/Users/leonidh/Documents/repos/ctk-tests/chaostoolkit-addons/chaosaddons/controls/safeguards.py", line 211, in validate_control
validate_probes(probes)
File "/Users/leonidh/Documents/repos/ctk-tests/chaostoolkit-addons/chaosaddons/controls/safeguards.py", line 353, in validate_probes
ensure_activity_is_valid(probe)
File "/Users/leonidh/Documents/repos/ctk-tests/venv/lib/python3.9/site-packages/chaoslib/activity.py", line 43, in ensure_activity_is_valid
ref = activity.get("ref")
AttributeError: 'str' object has no attribute 'get'
If I remove the probe and leave just the control in, it's going good
from chaostoolkit-addons.
Good and bad. Good because it uses now the chaosaddon as expected, bad because that chaosaddon master is broken in your case. Let me look.
from chaostoolkit-addons.
I think this is fixed in 98bcd4a
from chaostoolkit-addons.
Amazing! It's working! Thank you very much! @Lawouach Absolute pro!
from chaostoolkit-addons.
Related Issues (10)
- `importlib.metadata` requires python 3.8+
- control for loading configurations from settings.yaml before each chaos run
- chaos --no-log-file info extensions fails for chaostoolkit-addons 0.6.0 up to latest version HOT 1
- Safeguard - Interval problem
- Safeguard - Interval is stopping the experiment after the second time the tolerance doesn't met HOT 1
- Unable to discover chaostoolkit-addons HOT 1
- Safeguards don't always stop the experiment HOT 6
- Race condition on safeguards
- idle_for type error when used within method
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from chaostoolkit-addons.