Hi there,
I'm experiencing an issue with the Python packages elasticsearch and elastic_transport in an OCP cluster. The code I'm using works in DEV and QAT environments but throws this error in PROD:
Traceback (most recent call last):
File "src/update_watchers.py", line 18, in <module>
es = ElasticResource(config)
File "/app/src/utils/elastic_resources.py", line 29, in __init__
config['elastic']['password']))
File "/usr/local/miniconda/lib/python3.7/site-packages/elasticsearch/_sync/client/__init__.py", line 399, in __init__
**transport_kwargs,
File "/usr/local/miniconda/lib/python3.7/site-packages/elastic_transport/_transport.py", line 233, in __init__
**node_pool_kwargs,
File "/usr/local/miniconda/lib/python3.7/site-packages/elastic_transport/_node_pool.py", line 180, in __init__
raise ValueError("Cannot use duplicate NodeConfigs within a NodePool")
ValueError: Cannot use duplicate NodeConfigs within a NodePool
The file src/update_watchers.py is my code where I am trying to instantiate the class on line 18.
Python package versions are:
- elastic-transport 8.1.2
- elasticsearch 8.2.3
Has anyone encountered this type of issue before? I'm perplexed as to why it would work in the lower environments but not in PROD when it's the same codebase. Should I consider raising an issue on GitHub?
This is my code where I am trying to instantiate the class:
update_watchers.py
env = resolve_env(os.getenv('KUBERNETES_NAMESPACE'))
config = {
'elastic' : {
'username' : os.getenv('ELASTIC_USERNAME'),
'password' : os.getenv('ELASTIC_PASSWORD')
}
}
es = ElasticResource(config)
elastic_resource.py
class ElasticResource():
def __init__(self, config):
self.config = config
self.es = Elasticsearch(
elastic_url,
basic_auth=(config['elastic']['username'],
config['elastic']['password']))