From 5a7577babc08251ec50056625d9e8d278c833a5b Mon Sep 17 00:00:00 2001 From: Jaykumar Chhatbar <45447272+JchhatbarInfoblox@users.noreply.github.com> Date: Tue, 5 Dec 2023 10:01:24 +0530 Subject: [PATCH] [Fix] TCP Monitor and topology (#205) * [Fix] TCP Monitor and topology * [Fix] Sanity test for TCP Monitor * [Fix] Integration test for TCP Monitor --- plugins/module_utils/api.py | 5 +++++ plugins/modules/nios_dtc_monitor_tcp.py | 3 ++- plugins/modules/nios_dtc_topology.py | 7 +++++-- .../tasks/nios_dtc_monitor_tcp_idempotence.yaml | 5 +++++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/plugins/module_utils/api.py b/plugins/module_utils/api.py index e1616ad9..8962703c 100644 --- a/plugins/module_utils/api.py +++ b/plugins/module_utils/api.py @@ -753,6 +753,11 @@ def get_object_ref(self, module, ib_obj_type, obj_filter, ib_spec): except TypeError: txt = obj_filter['text'] test_obj_filter['text'] = txt + + # removing Port param from get params for NIOS_DTC_MONITOR_TCP + if (ib_obj_type == NIOS_DTC_MONITOR_TCP): + test_obj_filter = dict([('name', obj_filter['name'])]) + # check if test_obj_filter is empty copy passed obj_filter else: test_obj_filter = obj_filter diff --git a/plugins/modules/nios_dtc_monitor_tcp.py b/plugins/modules/nios_dtc_monitor_tcp.py index f06b5cac..7708baea 100644 --- a/plugins/modules/nios_dtc_monitor_tcp.py +++ b/plugins/modules/nios_dtc_monitor_tcp.py @@ -32,6 +32,7 @@ description: - Configures the port value for TCP requests. The field is required on creation. + required: true type: int interval: description: @@ -128,8 +129,8 @@ def main(): ib_spec = dict( name=dict(required=True, ib_req=True), + port=dict(type='int', required=True, ib_req=True), - port=dict(type='int'), interval=dict(type='int', default=5), retry_down=dict(type='int', default=1), retry_up=dict(type='int', default=1), diff --git a/plugins/modules/nios_dtc_topology.py b/plugins/modules/nios_dtc_topology.py index 32a21528..eec85725 100644 --- a/plugins/modules/nios_dtc_topology.py +++ b/plugins/modules/nios_dtc_topology.py @@ -185,19 +185,22 @@ def sources_transform(sources, module): def rules_transform(module): rule_list = list() + dest_obj = None + if not module.params['rules']: return rule_list + for rule in module.params['rules']: if rule['dest_type'] == 'POOL': dest_obj = wapi.get_object('dtc:pool', {'name': rule['destination_link']}) else: dest_obj = wapi.get_object('dtc:server', {'name': rule['destination_link']}) - if not dest_obj: + if not dest_obj and rule['return_type'] == 'REGULAR': module.fail_json(msg='destination_link %s does not exist' % rule['destination_link']) tf_rule = dict( dest_type=rule['dest_type'], - destination_link=dest_obj[0]['_ref'], + destination_link=dest_obj[0]['_ref'] if dest_obj else None, return_type=rule['return_type'] ) diff --git a/tests/integration/targets/nios_dtc_monitor_tcp/tasks/nios_dtc_monitor_tcp_idempotence.yaml b/tests/integration/targets/nios_dtc_monitor_tcp/tasks/nios_dtc_monitor_tcp_idempotence.yaml index 89b4431d..1c025b93 100644 --- a/tests/integration/targets/nios_dtc_monitor_tcp/tasks/nios_dtc_monitor_tcp_idempotence.yaml +++ b/tests/integration/targets/nios_dtc_monitor_tcp/tasks/nios_dtc_monitor_tcp_idempotence.yaml @@ -13,6 +13,7 @@ - name: Clean up the DTC TCP monitor infoblox.nios_modules.nios_dtc_monitor_tcp: name: tcp_monitor + port: 8080 state: absent provider: "{{ nios_provider }}" @@ -35,6 +36,7 @@ - name: Add a comment to an existing DTC TCP monitor infoblox.nios_modules.nios_dtc_monitor_tcp: name: tcp_monitor + port: 8080 comment: this is a test comment state: present provider: "{{ nios_provider }}" @@ -43,6 +45,7 @@ - name: Readd a comment to an existing DTC TCP monitor infoblox.nios_modules.nios_dtc_monitor_tcp: name: tcp_monitor + port: 8080 comment: this is a test comment state: present provider: "{{ nios_provider }}" @@ -51,6 +54,7 @@ - name: Remove a DTC TCP monitor from the system infoblox.nios_modules.nios_dtc_monitor_tcp: name: tcp_monitor + port: 8080 state: absent provider: "{{ nios_provider }}" register: dtc_monitor_tcp_delete1 @@ -58,6 +62,7 @@ - name: Reremove a DTC TCP monitor from the system infoblox.nios_modules.nios_dtc_monitor_tcp: name: tcp_monitor + port: 8080 state: absent provider: "{{ nios_provider }}" register: dtc_monitor_tcp_delete2