From 68c335f36593340555097fdeaa86f63de545a91e Mon Sep 17 00:00:00 2001 From: Rhys Campbell Date: Fri, 11 Feb 2022 07:04:35 +0100 Subject: [PATCH 1/7] Remove master_timeout --- README.md | 7 +++---- plugins/doc_fragments/login_options.py | 5 ----- plugins/module_utils/elastic_common.py | 2 -- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 4779e6dc..8acda886 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,6 @@ The follow common module options are setable via shell variables... - LOGIN_PASSWORD - LOGIN_HOSTS - LOGIN_PORT -- MASTER_TIMEOUT - TIMEOUT For example the following could be set in the shell... @@ -119,17 +118,17 @@ Please note that most of these integration tests are intended to run directly in * Run integration tests for the elastic_user module. ```bash -ansible-test integration -v --color --python 3.6 elastic_user +ansible-test integration -v --color yes --python 3.6 elastic_user ``` * Run integration tests for the elastic_cluster_health module. ```bash -ansible-test integration -v --color --python 3.6 elastic_cluster_health +ansible-test integration -v --color yes --python 3.6 elastic_cluster_health ``` * Run tests for everything in the collection. ```bash -ansible-test integration -v --color --python 3.6 +ansible-test integration -v --color yes --python 3.6 ``` diff --git a/plugins/doc_fragments/login_options.py b/plugins/doc_fragments/login_options.py index 19ff303d..3b0a87f9 100644 --- a/plugins/doc_fragments/login_options.py +++ b/plugins/doc_fragments/login_options.py @@ -55,11 +55,6 @@ class ModuleDocFragment(object): required: no type: int default: 9200 - master_timeout: - description: - - Timeout in seconds for connection to a master node. - type: int - default: 30 timeout: description: - Response timeout in seconds. diff --git a/plugins/module_utils/elastic_common.py b/plugins/module_utils/elastic_common.py index c3f7c335..624e2584 100644 --- a/plugins/module_utils/elastic_common.py +++ b/plugins/module_utils/elastic_common.py @@ -35,7 +35,6 @@ def elastic_common_argument_spec(): login_password=dict(type='str', required=False, no_log=True, fallback=(env_fallback, ["LOGIN_PASSWORD"])), login_hosts=dict(type='list', elements='str', required=False, default=['localhost'], fallback=(env_fallback, ["LOGIN_HOSTS"])), login_port=dict(type='int', required=False, default=9200, fallback=(env_fallback, ["LOGIN_PORT"])), - master_timeout=dict(type='int', default=30, fallback=(env_fallback, ["MASTER_TIMEOUT"])), timeout=dict(type='int', default=30, fallback=(env_fallback, ["TIMEOUT"])), ) return options @@ -72,7 +71,6 @@ def connect(self): auth = self.build_auth(self.module) hosts = list(map(lambda host: "{0}:{1}".format(host, self.module.params['login_port']), self.module.params['login_hosts'])) elastic = Elasticsearch(hosts, - master_timeout=self.module.params['master_timeout'], timeout=self.module.params['timeout'], *self.module.params['connection_options'], **auth) From a600b2ad91cdd5370afd7eb9549cb1e4c6e85f88 Mon Sep 17 00:00:00 2001 From: Rhys Campbell Date: Fri, 11 Feb 2022 07:43:38 +0100 Subject: [PATCH 2/7] Add auth scheme --- plugins/module_utils/elastic_common.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/module_utils/elastic_common.py b/plugins/module_utils/elastic_common.py index 624e2584..e8e74d54 100644 --- a/plugins/module_utils/elastic_common.py +++ b/plugins/module_utils/elastic_common.py @@ -69,7 +69,10 @@ def build_auth(self, module): def connect(self): auth = self.build_auth(self.module) - hosts = list(map(lambda host: "{0}:{1}".format(host, self.module.params['login_port']), self.module.params['login_hosts'])) + hosts = list(map(lambda host: "{0}://{1}:{2}/".format(self.module.params['auth_scheme'], + host, + self.module.params['login_port']), + self.module.params['login_hosts'])) elastic = Elasticsearch(hosts, timeout=self.module.params['timeout'], *self.module.params['connection_options'], From 4d4e456c7c214dbf5f9c5700742b6db7e78fec2b Mon Sep 17 00:00:00 2001 From: Rhys Campbell Date: Fri, 11 Feb 2022 07:55:58 +0100 Subject: [PATCH 3/7] Name a few parameters for 8.0 driver --- plugins/module_utils/elastic_common.py | 6 +++--- plugins/modules/elastic_index.py | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/plugins/module_utils/elastic_common.py b/plugins/module_utils/elastic_common.py index e8e74d54..1143fb2b 100644 --- a/plugins/module_utils/elastic_common.py +++ b/plugins/module_utils/elastic_common.py @@ -70,8 +70,8 @@ def build_auth(self, module): def connect(self): auth = self.build_auth(self.module) hosts = list(map(lambda host: "{0}://{1}:{2}/".format(self.module.params['auth_scheme'], - host, - self.module.params['login_port']), + host, + self.module.params['login_port']), self.module.params['login_hosts'])) elastic = Elasticsearch(hosts, timeout=self.module.params['timeout'], @@ -91,7 +91,7 @@ def index_dynamic_method(self, module, client, method, name): @method - The indicies method to call @name - The index name. ''' - if not client.indices.exists(name): + if not client.indices.exists(index=name): module.fail_json(msg='Cannot perform {0} action on an index that does not exist'.format(method)) else: class_method = getattr(client.indices, method) diff --git a/plugins/modules/elastic_index.py b/plugins/modules/elastic_index.py index 2b5a27e3..1595d562 100644 --- a/plugins/modules/elastic_index.py +++ b/plugins/modules/elastic_index.py @@ -158,7 +158,7 @@ def main(): client = elastic.connect() if state == 'present': - if client.indices.exists(name): + if client.indices.exists(index=name): module.exit_json(changed=False, msg="The index '{0}' already exists.".format(name)) else: request_body = {"settings": settings, "mappings": mappings} @@ -168,11 +168,11 @@ def main(): response = dict(client.indices.create(index=name, body=request_body)) module.exit_json(changed=True, msg="The index '{0}' was created.".format(name), **response) elif state == 'absent': - if client.indices.exists(name): + if client.indices.exists(index=name): if module.check_mode: response = {"acknowledged": True} else: - response = dict(client.indices.delete(name)) + response = dict(client.indices.delete(index=name)) module.exit_json(changed=True, msg="The index '{0}' was deleted.".format(name), **response) else: module.exit_json(changed=False, msg="The index '{0}' does not exist.".format(name)) @@ -183,7 +183,7 @@ def main(): elif state == "upgrade": elastic.index_dynamic_method(module, client, 'upgrade', name) elif state == "stats": - response = dict(client.indices.stats(name)) + response = dict(client.indices.stats(index=name)) module.exit_json(changed=True, msg="Stats from index '{0}'.".format(name), **response) else: # Catch all for everything else. Need to make sure the state == method name elastic.index_dynamic_method(module, client, state, name) From aa55fc0dd67aa28683c33fc23cc87f87e4d74c2d Mon Sep 17 00:00:00 2001 From: Rhys Campbell Date: Fri, 11 Feb 2022 08:14:37 +0100 Subject: [PATCH 4/7] Fix driver version to 7 --- .github/workflows/ansible-test.yml | 2 +- plugins/doc_fragments/login_options.py | 5 +++++ plugins/module_utils/elastic_common.py | 7 ++++--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ansible-test.yml b/.github/workflows/ansible-test.yml index 50890be2..fda7b949 100644 --- a/.github/workflows/ansible-test.yml +++ b/.github/workflows/ansible-test.yml @@ -127,7 +127,7 @@ jobs: with: timeout_minutes: 3 max_attempts: 3 - command: pip install docker elasticsearch requests coverage + command: pip install docker elasticsearch==7.* requests coverage - name: Install ansible-base (${{ matrix.version_combinations.ansible_version }}) uses: nick-invision/retry@v2 diff --git a/plugins/doc_fragments/login_options.py b/plugins/doc_fragments/login_options.py index 3b0a87f9..97328632 100644 --- a/plugins/doc_fragments/login_options.py +++ b/plugins/doc_fragments/login_options.py @@ -60,6 +60,11 @@ class ModuleDocFragment(object): - Response timeout in seconds. type: int default: 30 + compatible_with: + description: + - Version of Elasticsearch Compatibility to set in the request headers. + type: int + default: 7 notes: - Requires the elasticsearch Python module. diff --git a/plugins/module_utils/elastic_common.py b/plugins/module_utils/elastic_common.py index 1143fb2b..a5fa3e60 100644 --- a/plugins/module_utils/elastic_common.py +++ b/plugins/module_utils/elastic_common.py @@ -36,6 +36,7 @@ def elastic_common_argument_spec(): login_hosts=dict(type='list', elements='str', required=False, default=['localhost'], fallback=(env_fallback, ["LOGIN_HOSTS"])), login_port=dict(type='int', required=False, default=9200, fallback=(env_fallback, ["LOGIN_PORT"])), timeout=dict(type='int', default=30, fallback=(env_fallback, ["TIMEOUT"])), + compatible_with=dict(type='int', default=7), ) return options @@ -70,9 +71,9 @@ def build_auth(self, module): def connect(self): auth = self.build_auth(self.module) hosts = list(map(lambda host: "{0}://{1}:{2}/".format(self.module.params['auth_scheme'], - host, - self.module.params['login_port']), - self.module.params['login_hosts'])) + host, + self.module.params['login_port']), + self.module.params['login_hosts'])) elastic = Elasticsearch(hosts, timeout=self.module.params['timeout'], *self.module.params['connection_options'], From 214e291a88354e3a46841f18c1e8afa913eb7556 Mon Sep 17 00:00:00 2001 From: Rhys Campbell Date: Fri, 11 Feb 2022 08:44:07 +0100 Subject: [PATCH 5/7] pep8 --- plugins/module_utils/elastic_common.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/module_utils/elastic_common.py b/plugins/module_utils/elastic_common.py index a5fa3e60..57503303 100644 --- a/plugins/module_utils/elastic_common.py +++ b/plugins/module_utils/elastic_common.py @@ -71,9 +71,9 @@ def build_auth(self, module): def connect(self): auth = self.build_auth(self.module) hosts = list(map(lambda host: "{0}://{1}:{2}/".format(self.module.params['auth_scheme'], - host, - self.module.params['login_port']), - self.module.params['login_hosts'])) + host, + self.module.params['login_port']), + self.module.params['login_hosts'])) elastic = Elasticsearch(hosts, timeout=self.module.params['timeout'], *self.module.params['connection_options'], From 3d891a32e71e263b1af7ed08551b9c9360c56d2f Mon Sep 17 00:00:00 2001 From: Rhys Campbell Date: Fri, 11 Feb 2022 08:49:11 +0100 Subject: [PATCH 6/7] pep8 --- plugins/module_utils/elastic_common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/module_utils/elastic_common.py b/plugins/module_utils/elastic_common.py index 57503303..067af250 100644 --- a/plugins/module_utils/elastic_common.py +++ b/plugins/module_utils/elastic_common.py @@ -73,7 +73,7 @@ def connect(self): hosts = list(map(lambda host: "{0}://{1}:{2}/".format(self.module.params['auth_scheme'], host, self.module.params['login_port']), - self.module.params['login_hosts'])) + self.module.params['login_hosts'])) elastic = Elasticsearch(hosts, timeout=self.module.params['timeout'], *self.module.params['connection_options'], From e24d12e20f4cbdcc1abbc80a33d4fbbc77ec8da3 Mon Sep 17 00:00:00 2001 From: Rhys Campbell Date: Sat, 12 Feb 2022 10:54:56 +0100 Subject: [PATCH 7/7] Fix params --- plugins/doc_fragments/login_options.py | 5 ----- plugins/module_utils/elastic_common.py | 1 - 2 files changed, 6 deletions(-) diff --git a/plugins/doc_fragments/login_options.py b/plugins/doc_fragments/login_options.py index 97328632..3b0a87f9 100644 --- a/plugins/doc_fragments/login_options.py +++ b/plugins/doc_fragments/login_options.py @@ -60,11 +60,6 @@ class ModuleDocFragment(object): - Response timeout in seconds. type: int default: 30 - compatible_with: - description: - - Version of Elasticsearch Compatibility to set in the request headers. - type: int - default: 7 notes: - Requires the elasticsearch Python module. diff --git a/plugins/module_utils/elastic_common.py b/plugins/module_utils/elastic_common.py index 067af250..c36b903b 100644 --- a/plugins/module_utils/elastic_common.py +++ b/plugins/module_utils/elastic_common.py @@ -36,7 +36,6 @@ def elastic_common_argument_spec(): login_hosts=dict(type='list', elements='str', required=False, default=['localhost'], fallback=(env_fallback, ["LOGIN_HOSTS"])), login_port=dict(type='int', required=False, default=9200, fallback=(env_fallback, ["LOGIN_PORT"])), timeout=dict(type='int', default=30, fallback=(env_fallback, ["TIMEOUT"])), - compatible_with=dict(type='int', default=7), ) return options