Comments (6)
Did you try with pin_node
removed from the CR?
# pin_node is an optional kubernetes hostname to which the pgbench pod will be pinned
pin_node:
When looking at the code.
{% if item.1.pin_node is defined and item.1.pin_node|length and item.1.pin_node is not sameas "" %}
nodeSelector:
kubernetes.io/hostname: '{{ item.1.pin_node }}'
{% endif %}
We might want to check the length of pin_node against a value, for example :
{% if item.1.pin_node is defined and item.1.pin_node|length > 1 and item.1.pin_node is not sameas "" %}
nodeSelector:
kubernetes.io/hostname: '{{ item.1.pin_node }}'
{% endif %}
from benchmark-operator.
Tested these conditions:
pin_node
not defined: passedpin_node
defined with a valid node name (from oc get nodes): passedpin_node
defined but empty: failedpin_node
defined as '': passedpin_node
defined as false: failed
5 above was just an extra test, so I'm sure 3 is what got you.
In the case of 3, we get the error:
object of type 'NoneType' has no len()
So I don't think there will be a difference in checking item.1.pin_node|length
vs item.1.pin_node|length > 0
since it's simply angry that you can't check length on a NoneType
variable (defined but without a value).
I'll look at this again tomorrow after some sleep and coffee. I'm sure there is a simple solution in the if statement that I'm not seeing right now.
from benchmark-operator.
Instead of us having to duplicate logic (like we currently are), how about we create role/pretasks
that runs before all the other roles.
The responsibility of this role is to check for things like this in the CR, reducing the duplicate checks we currently have to do.
In this case we would need
item.1.ping_node is not none
I don't think this will eliminate all checks in other roles, but it will reduce things, additionally catch the error early... @dustinblack @aakarshg @dry923 thoughts?
from benchmark-operator.
@jtaleric So this might for instance convert any defined but empty variables from the CR into blank values ('') instead, so that the validation logic within the main role is simplified?
from benchmark-operator.
Tested with simplified if
logic:
{% if item.1.pin_node is defined and item.1.pin_node %}
And the results look good:
pin_node
not defined: passedpin_node
defined with a valid node name (from oc get nodes): passedpin_node
defined but empty: passed << winningpin_node
defined as '': passedpin_node
defined as false: passed << winning
from benchmark-operator.
Fixed with PR #145
from benchmark-operator.
Related Issues (20)
- fio benchmark - Grafana dashboard shows nothing HOT 8
- Ports getting assigned incorrectly for client-server pairs in uperf workload (Multiple pairs use case) HOT 5
- CNV Perf CI[benchmark-runner]: Uperf workload failed in Pod/Kata/VM HOT 5
- Test type 'bidirec' not working in uperf
- benchmark-controller-manager: ImagePullBackOff HOT 2
- The client pod was not created in FIO workload HOT 5
- Distributed-FIO: PV not getting mounted to server POD when created with pvcvolumemode: Block HOT 5
- Adding support for benchmark-operator v1.0.0 based on benchmark-wrapper v1.0.0 HOT 2
- uperf client pods are not being created in pod2service network perf tests HOT 15
- All client and Server pods are scheduled to the different nodes with 2pairs of server and client scenario HOT 3
- OCP4.12: System-metrics-collector pod does not create HOT 1
- Seeing `run_snafu: Not connected to Elasticsearch` while running fio ( disabled `elasticsearch` in cr.yaml file) HOT 15
- Seeing more Latency for Intra-Node-POD compare with Inter-node-POD interface using Uperf Benchmark Operator HOT 4
- Output format is different if we run uperf manully and uperf with Benchmark Operator HOT 2
- Starting benchmark fails to retrieve status HOT 1
- iPerf client pod creation failed for ipv6 traffic HOT 2
- iPerf: client pod failure on ipv6 traffic required for dual-stack cluster HOT 2
- Option to specify resources for sysbench workload HOT 1
- cross cluster network benchmark tests HOT 2
- Public Archive of benchmark-operator HOT 4
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 benchmark-operator.