Skip to content

Commit 777e090

Browse files
Merge branch 'main' into sysfile
2 parents 7357b34 + 1a63764 commit 777e090

12 files changed

Lines changed: 431 additions & 12 deletions

File tree

plugins/module_utils/module_executor.py

Lines changed: 48 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -382,10 +382,23 @@ def install(self):
382382

383383
@trace
384384
def create_or_update(self):
385+
desired_state = self.module.params["state"]
386+
if (
387+
desired_state == "present" and
388+
self.resource_name.endswith("_binding") and
389+
"state" in self.resource_module_params
390+
):
391+
self.resource_module_params.pop("state")
385392
self.update_diff_list(
386393
existing=self.existing_resource, desired=self.resource_module_params
387394
)
388395
if not self.existing_resource and "add" in self.supported_operations:
396+
if (
397+
self.resource_name.endswith("_binding") and
398+
desired_state in {"enabled", "disabled"}
399+
):
400+
self.resource_module_params["state"] = desired_state.upper()
401+
389402
self.module_result["changed"] = True
390403
log(
391404
"INFO: Resource %s:%s does not exist. Will be CREATED."
@@ -464,6 +477,14 @@ def create_or_update(self):
464477
% (self.resource_name, self.resource_id)
465478
)
466479
self.delete()
480+
if (
481+
self.module.params["state"] == "present" and
482+
any(x in self.supported_operations for x in ("enabled", "disabled"))
483+
):
484+
# We want to keep the previous state of the binding
485+
self.resource_module_params["state"] = (
486+
self.existing_resource.get("state", "ENABLED").upper()
487+
)
467488
ok, err = create_resource(
468489
self.client, self.resource_name, self.resource_module_params
469490
)
@@ -495,6 +516,22 @@ def create_or_update(self):
495516
self.module_result["changed"] = False
496517
self.module.exit_json(**self.module_result)
497518
else:
519+
if (
520+
self.resource_name.endswith("_binding") and
521+
self.module.params["state"] in {"enabled", "disabled"}
522+
):
523+
existing_state = self.existing_resource.get("state", "").upper()
524+
if existing_state != desired_state:
525+
# Create the resource in desired state
526+
self.module_result["changed"] = True
527+
self.delete()
528+
self.resource_module_params["state"] = desired_state
529+
ok, err = create_resource(
530+
self.client, self.resource_name, self.resource_module_params
531+
)
532+
if not ok:
533+
self.return_failure(err)
534+
return
498535
self.module_result["changed"] = True
499536
msg = (
500537
f"Resource {self.resource_name}/{self.resource_id} is updated after ignoring following "
@@ -515,16 +552,17 @@ def enable_or_disable(self, desired_state):
515552
)
516553
self.update_diff_list(custom_msg=not_implemented_msg)
517554
self.module_result["changed"] = True
518-
if desired_state == "enabled":
519-
ok, err = enable_resource(
520-
self.client, self.resource_name, self.resource_module_params
521-
)
522-
else:
523-
ok, err = disable_resource(
524-
self.client, self.resource_name, self.resource_module_params
525-
)
526-
if not ok:
527-
self.return_failure(err)
555+
if not self.resource_name.endswith("_binding"):
556+
if desired_state == "enabled":
557+
ok, err = enable_resource(
558+
self.client, self.resource_name, self.resource_module_params
559+
)
560+
else:
561+
ok, err = disable_resource(
562+
self.client, self.resource_name, self.resource_module_params
563+
)
564+
if not ok:
565+
self.return_failure(err)
528566

529567
@trace
530568
def delete(self):

plugins/module_utils/nitro_resource_map.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28911,7 +28911,15 @@
2891128911
],
2891228912
},
2891328913
"gslbservicegroup_gslbservicegroupmember_binding": {
28914-
"_supported_operations": ["add", "count", "delete", "get-all", "get-byname"],
28914+
"_supported_operations": [
28915+
"add",
28916+
"count",
28917+
"delete",
28918+
"get-all",
28919+
"get-byname",
28920+
"enable",
28921+
"disable",
28922+
],
2891528923
"action_payload_keys": {
2891628924
"apply": [],
2891728925
"create": [],
@@ -28933,6 +28941,7 @@
2893328941
"servicegroupname",
2893428942
"siteprefix",
2893528943
"weight",
28944+
"state",
2893628945
],
2893728946
"bindprimary_key": "ip",
2893828947
"delete_arg_keys": ["ip", "port", "servername"],
@@ -28950,6 +28959,7 @@
2895028959
"servicegroupname",
2895128960
"siteprefix",
2895228961
"weight",
28962+
"state",
2895328963
],
2895428964
"password_keys": [],
2895528965
"primary_key": "servicegroupname",
@@ -28965,6 +28975,7 @@
2896528975
"servicegroupname": {"no_log": False, "type": "str"},
2896628976
"siteprefix": {"no_log": False, "type": "str"},
2896728977
"weight": {"no_log": False, "type": "float"},
28978+
"state": {"no_log": False, "type": "str"},
2896828979
},
2896928980
"singleton": False,
2897028981
"update_payload_keys": [],
@@ -50390,7 +50401,15 @@
5039050401
"update_payload_keys": [],
5039150402
},
5039250403
"servicegroup_servicegroupmember_binding": {
50393-
"_supported_operations": ["add", "count", "delete", "get-all", "get-byname"],
50404+
"_supported_operations": [
50405+
"add",
50406+
"count",
50407+
"delete",
50408+
"get-all",
50409+
"get-byname",
50410+
"enable",
50411+
"disable",
50412+
],
5039450413
"action_payload_keys": {
5039550414
"apply": [],
5039650415
"create": [],
@@ -50414,6 +50433,7 @@
5041450433
"servicegroupname",
5041550434
"servicegroupname",
5041650435
"weight",
50436+
"state",
5041750437
],
5041850438
"bindprimary_key": "ip",
5041950439
"delete_arg_keys": ["ip", "port", "servername"],
@@ -50432,6 +50452,7 @@
5043250452
"servername",
5043350453
"servicegroupname",
5043450454
"weight",
50455+
"state",
5043550456
],
5043650457
"password_keys": [],
5043750458
"primary_key": "servicegroupname",
@@ -50448,6 +50469,7 @@
5044850469
"servername": {"no_log": False, "type": "str"},
5044950470
"servicegroupname": {"no_log": False, "type": "str"},
5045050471
"weight": {"no_log": False, "type": "float"},
50472+
"state": {"no_log": False, "type": "str"},
5045150473
},
5045250474
"singleton": False,
5045350475
"update_payload_keys": [],

plugins/modules/gslbservicegroup_gslbservicegroupmember_binding.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,17 @@
3232
choices:
3333
- present
3434
- absent
35+
- enabled
36+
- disabled
3537
default: present
3638
description:
3739
- The state of the resource being configured by the module on the NetScaler
3840
ADC node.
3941
- When C(present), the resource will be added/updated configured according to
4042
the module's parameters.
4143
- When C(absent), the resource will be deleted from the NetScaler ADC node.
44+
- When C(enabled), the resource will be updated and enabled on the NetScaler ADC node.
45+
- When C(disabled), the resource will be updated and disabled on the NetScaler ADC node.
4246
type: str
4347
hashid:
4448
type: float

plugins/modules/servicegroup_servicegroupmember_binding.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,17 @@
3232
choices:
3333
- present
3434
- absent
35+
- enabled
36+
- disabled
3537
default: present
3638
description:
3739
- The state of the resource being configured by the module on the NetScaler
3840
ADC node.
3941
- When C(present), the resource will be added/updated configured according to
4042
the module's parameters.
4143
- When C(absent), the resource will be deleted from the NetScaler ADC node.
44+
- When C(enabled), the resource will be updated and enabled on the NetScaler ADC node.
45+
- When C(disabled), the resource will be updated and disabled on the NetScaler ADC node.
4246
type: str
4347
customserverid:
4448
type: str
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
gather_facts/no
2+
netscaler/cpx/
3+
netscaler/vpx/
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
---
2+
- name: Include prerequisite tasks
3+
ansible.builtin.include_tasks: setup.yaml
4+
- name: GSLBSERVICEGROUP_GSLBSERVICEGROUPMEMEBER_BINDING | ADD
5+
delegate_to: localhost
6+
register: result
7+
check_mode: false
8+
tags: test
9+
netscaler.adc.gslbservicegroup_gslbservicegroupmember_binding:
10+
nsip: "{{ nsip }}"
11+
nitro_user: "{{ nitro_user }}"
12+
nitro_pass: "{{ nitro_pass }}"
13+
nitro_protocol: "{{ nitro_protocol }}"
14+
validate_certs: "{{ validate_certs }}"
15+
save_config: "{{ save_config }}"
16+
state: disabled
17+
servicegroupname: test-gslbservicegroup
18+
port: 65530
19+
ip: 10.10.10.10
20+
- name: Assert | GSLBSERVICEGROUP_GSLBSERVICEGROUPMEMEBER_BINDING | ADD
21+
ansible.builtin.assert:
22+
that:
23+
- result.failed == false
24+
- result.changed == true
25+
- name: GSLBSERVICEGROUP_GSLBSERVICEGROUPMEMEBER_BINDING | ENABLE STATE
26+
delegate_to: localhost
27+
register: result
28+
check_mode: false
29+
tags: test
30+
netscaler.adc.gslbservicegroup_gslbservicegroupmember_binding:
31+
nsip: "{{ nsip }}"
32+
nitro_user: "{{ nitro_user }}"
33+
nitro_pass: "{{ nitro_pass }}"
34+
nitro_protocol: "{{ nitro_protocol }}"
35+
validate_certs: "{{ validate_certs }}"
36+
save_config: "{{ save_config }}"
37+
state: enabled
38+
servicegroupname: test-gslbservicegroup
39+
port: 65530
40+
ip: 10.10.10.10
41+
- name: Assert | GSLBSERVICEGROUP_GSLBSERVICEGROUPMEMEBER_BINDING | ENABLE STATE
42+
ansible.builtin.assert:
43+
that:
44+
- result.failed == false
45+
- result.changed == true
46+
- name: GSLBSERVICEGROUP_GSLBSERVICEGROUPMEMEBER_BINDING | ADD | idempotent
47+
delegate_to: localhost
48+
register: result
49+
check_mode: false
50+
tags: test
51+
netscaler.adc.gslbservicegroup_gslbservicegroupmember_binding:
52+
nsip: "{{ nsip }}"
53+
nitro_user: "{{ nitro_user }}"
54+
nitro_pass: "{{ nitro_pass }}"
55+
nitro_protocol: "{{ nitro_protocol }}"
56+
validate_certs: "{{ validate_certs }}"
57+
save_config: "{{ save_config }}"
58+
state: present
59+
servicegroupname: test-gslbservicegroup
60+
port: 65530
61+
ip: 10.10.10.10
62+
- name: Assert | GSLBSERVICEGROUP_GSLBSERVICEGROUPMEMEBER_BINDING | ADD | idempotent
63+
tags: test
64+
ansible.builtin.assert:
65+
that:
66+
- result.failed == false
67+
- result.changed == false
68+
- name: GSLBSERVICEGROUP_GSLBSERVICEGROUPMEMEBER_BINDING | DELETE | --check
69+
delegate_to: localhost
70+
register: result
71+
check_mode: true
72+
tags: test
73+
netscaler.adc.gslbservicegroup_gslbservicegroupmember_binding:
74+
nsip: "{{ nsip }}"
75+
nitro_user: "{{ nitro_user }}"
76+
nitro_pass: "{{ nitro_pass }}"
77+
nitro_protocol: "{{ nitro_protocol }}"
78+
validate_certs: "{{ validate_certs }}"
79+
save_config: "{{ save_config }}"
80+
state: absent
81+
servicegroupname: test-gslbservicegroup
82+
ip: 10.10.10.10
83+
port: 65530
84+
- name: Assert | GSLBSERVICEGROUP_GSLBSERVICEGROUPMEMEBER_BINDING | DELETE | --check
85+
tags: test
86+
ansible.builtin.assert:
87+
that:
88+
- result.failed == false
89+
- result.changed == true
90+
- name: GSLBSERVICEGROUP_GSLBSERVICEGROUPMEMEBER_BINDING | DELETE
91+
delegate_to: localhost
92+
register: result
93+
check_mode: false
94+
tags: test
95+
netscaler.adc.gslbservicegroup_gslbservicegroupmember_binding:
96+
nsip: "{{ nsip }}"
97+
nitro_user: "{{ nitro_user }}"
98+
nitro_pass: "{{ nitro_pass }}"
99+
nitro_protocol: "{{ nitro_protocol }}"
100+
validate_certs: "{{ validate_certs }}"
101+
save_config: "{{ save_config }}"
102+
state: absent
103+
servicegroupname: test-gslbservicegroup
104+
ip: 10.10.10.10
105+
port: 65530
106+
- name: Assert | GSLBSERVICEGROUP_GSLBSERVICEGROUPMEMEBER_BINDING | DELETE
107+
ansible.builtin.assert:
108+
that:
109+
- result.failed == false
110+
- result.changed == true
111+
- name: GSLBSERVICEGROUP_GSLBSERVICEGROUPMEMEBER_BINDING | DELETE | idempotent
112+
delegate_to: localhost
113+
register: result
114+
check_mode: false
115+
tags: test
116+
netscaler.adc.gslbservicegroup_gslbservicegroupmember_binding:
117+
nsip: "{{ nsip }}"
118+
nitro_user: "{{ nitro_user }}"
119+
nitro_pass: "{{ nitro_pass }}"
120+
nitro_protocol: "{{ nitro_protocol }}"
121+
validate_certs: "{{ validate_certs }}"
122+
save_config: "{{ save_config }}"
123+
state: absent
124+
servicegroupname: test-gslbservicegroup
125+
ip: 10.10.10.10
126+
port: 65530
127+
- name: Assert | GSLBSERVICEGROUP_GSLBSERVICEGROUPMEMEBER_BINDING | DELETE | idempotent
128+
tags: test
129+
ansible.builtin.assert:
130+
that:
131+
- result.failed == false
132+
- result.changed == false
133+
- name: Include teardown tasks
134+
ansible.builtin.include_tasks: teardown.yaml
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
- name: Create GSLB Site
3+
delegate_to: localhost
4+
netscaler.adc.gslbsite:
5+
nsip: "{{ nsip }}"
6+
nitro_user: "{{ nitro_user }}"
7+
nitro_pass: "{{ nitro_pass }}"
8+
nitro_protocol: "{{ nitro_protocol }}"
9+
validate_certs: "{{ validate_certs }}"
10+
save_config: "{{ save_config }}"
11+
state: present
12+
sitename: test-gslbsite
13+
siteipaddress: 10.10.10.10
14+
- name: Create GSLB Servicegroup
15+
delegate_to: localhost
16+
netscaler.adc.gslbservicegroup:
17+
nsip: "{{ nsip }}"
18+
nitro_user: "{{ nitro_user }}"
19+
nitro_pass: "{{ nitro_pass }}"
20+
nitro_protocol: "{{ nitro_protocol }}"
21+
validate_certs: "{{ validate_certs }}"
22+
save_config: "{{ save_config }}"
23+
state: present
24+
servicegroupname: test-gslbservicegroup
25+
servicetype: TCP
26+
sitename: test-gslbsite
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
- name: Create GSLB Servicegroup
3+
delegate_to: localhost
4+
netscaler.adc.gslbservicegroup:
5+
nsip: "{{ nsip }}"
6+
nitro_user: "{{ nitro_user }}"
7+
nitro_pass: "{{ nitro_pass }}"
8+
nitro_protocol: "{{ nitro_protocol }}"
9+
validate_certs: "{{ validate_certs }}"
10+
save_config: "{{ save_config }}"
11+
state: absent
12+
servicegroupname: test-gslbservicegroup
13+
servicetype: TCP
14+
- name: Create GSLB Site
15+
delegate_to: localhost
16+
netscaler.adc.gslbsite:
17+
nsip: "{{ nsip }}"
18+
nitro_user: "{{ nitro_user }}"
19+
nitro_pass: "{{ nitro_pass }}"
20+
nitro_protocol: "{{ nitro_protocol }}"
21+
validate_certs: "{{ validate_certs }}"
22+
save_config: "{{ save_config }}"
23+
state: absent
24+
sitename: test-gslbsite
25+
siteipaddress: 10.10.10.10

0 commit comments

Comments
 (0)