Comments (6)
I'm probably missing something, but why not just do this?
@kopf.on.update('httprequests', retries=3, backoff=10)
def handler(memo: kopf.Memo, spec, name, namespace, logger, **kwargs):
r = requests.request(some_url)
if r.status_code == 500:
raise kopf.TemporaryError(f"Resource at {some_url} returns {r.status_code}", delay=60)
from kopf.
That does not update status field.
from kopf.
There is the patch
kwarg. You can populate it with whatever you want during the handler execution. Kopf will add a few things of its own later after the error (or success) — and will apply it to the k8s api.
Manually patching the resource is also a right way to go, there is nothing wrong with it (except for one extremely rare edge case under high load, which will be fixed soon). The only downside is that you will have 2 patch api calls: one from you, one from kopf; and you will also have to authenticate somehow not with kopf’s login machinery.
from kopf.
@nolar
if I read the docs correctly https://kopf.readthedocs.io/en/stable/kwargs/#patching patch is a pass through object that I can fill with anything that will get passed to the patching logic
@kopf.on.update('httprequests', retries=3, backoff=10)
def handler(memo: kopf.Memo, spec, name, namespace, logger, **kwargs):
r = requests.request(some_url)
if r.status_code == 500:
kwargs['patch'] = {
'status': {
'handler': {
'httpStatusCode': 500
}
}
}
raise kopf.TemporaryError(f"Resource at {some_url} returns {r.status_code}", delay=60)
is it the right way to do? I am asking, because following snippet does not work.
from kopf.
The right way. But in your case, you override the kwarg key in the local dict, you do not modify the object itself. Try this:
def …(…, patch, **kwargs):
patch.status.setdefault('handler', {})['httpStatusCode'] = 500
from kopf.
Perfect, it works.
Thanks for the guidance.
Closing/
from kopf.
Related Issues (20)
- kubeconfig proxy-url support
- Monitor watchers with Liveness Probe
- Integrate kopf with kinD not minikube HOT 3
- Add login_via_kr8s() auth piggyback backend HOT 3
- Flakey behavior of on.create handler not reacting to CRO creation event. HOT 1
- Automating Kopf Operator Code Updates: Seeking a Convenient Solution to Avoid Tedious Run Commands HOT 1
- Controlling Kopf Operator Behavior to Prevent Unwanted Object Creation HOT 8
- Using named import in kopf
- Handle large resource spec being annotated to `last-handled-configuration` HOT 3
- Namespace deletion is stuck when using namespace selector startup mode HOT 1
- Infinite watch-streams stopping immediately with no obvious reasons why. The watched resources do then spin up.
- Liveness probe stops working HOT 2
- Kubernetes client not configured in startup handler HOT 3
- Admission Controller Path
- `FieldSpec` and `resolve` does not support list access
- Attach to container start event
- Behaviour of timer with finalizer
- Finalisers race condition
- Finalizers from other controllers conflicting with kopf finalizer
- Kopf does not restart after 429 too many requests error HOT 1
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 kopf.