Skip to content

Commit 700874f

Browse files
Merge pull request #554 from netscaler/sslhsmkey
Support for sslhsmkey
2 parents c33ea0f + d503629 commit 700874f

3 files changed

Lines changed: 75 additions & 2 deletions

File tree

examples/sslhsmkey.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
- name: Create ssl hsm key
3+
hosts: localhost
4+
gather_facts: false
5+
tasks:
6+
- name: Create ssl hsm key
7+
delegate_to: localhost
8+
netscaler.adc.sslhsmkey:
9+
state: present
10+
hsmkeyname: "hsmk1"
11+
hsmtype: "SAFENET"
12+
serialnum: "116877xxxx465464"
13+
password: "xxxxxxx"

plugins/module_utils/module_executor.py

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
__metaclass__ = type
99

1010
import os
11+
import re
1112

1213
from ansible.module_utils.basic import AnsibleModule
1314

@@ -490,7 +491,30 @@ def create_or_update(self):
490491
self.client, self.resource_name, self.resource_module_params
491492
)
492493
if not ok:
493-
self.return_failure(err)
494+
if not self.resource_name == "sslhsmkey":
495+
self.return_failure(err)
496+
else:
497+
# sslhsmkey returns errocode 1065 and message
498+
# "Internal error while adding HSM key" on successful addition
499+
status_code = None
500+
errorcode = None
501+
message = None
502+
err_str = str(err)
503+
regex_string = re.search(r'status_code:\s*(\d+)', err_str)
504+
if regex_string:
505+
status_code = int(regex_string.group(1))
506+
regex_string = re.search(r"'errorcode':\s*(\d+)", err_str)
507+
if regex_string:
508+
regex_string = int(regex_string.group(1))
509+
regex_string = re.search(r"'message':\s*'([^']+)'", err_str)
510+
if regex_string:
511+
message = regex_string.group(1)
512+
if not (
513+
status_code == 599 and
514+
errorcode == 1065 and
515+
message == "Internal error while adding HSM key."
516+
):
517+
self.return_failure(err)
494518

495519
# There can be module_params in the playbook which are not part of `add_payload_keys`,
496520
# but part of `update_payload_keys` in the NITRO_RESOURCE_MAP
@@ -676,7 +700,30 @@ def delete(self):
676700
self.client, self.resource_name, self.resource_module_params
677701
)
678702
if not ok:
679-
self.return_failure(err)
703+
if self.resource_name == "sslhsmkey":
704+
# sslhsmkey returns errocode 1065 and message
705+
# "Internal error while adding HSM key" on successful addition
706+
status_code = None
707+
errorcode = None
708+
message = None
709+
err_str = str(err)
710+
regex_string = re.search(r'status_code:\s*(\d+)', err_str)
711+
if regex_string:
712+
status_code = int(regex_string.group(1))
713+
regex_string = re.search(r"'errorcode':\s*(\d+)", err_str)
714+
if regex_string:
715+
errorcode = int(regex_string.group(1))
716+
regex_string = re.search(r"'message':\s*'([^']+)'", err_str)
717+
if regex_string:
718+
message = regex_string.group(1)
719+
if not (
720+
status_code == 599 and
721+
errorcode == 1065 and
722+
message == "Internal error while adding HSM key."
723+
):
724+
self.return_failure(err)
725+
else:
726+
self.return_failure(err)
680727

681728
@trace
682729
def delete_bindings(

plugins/modules/sslhsmkey.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,19 @@
8585
"""
8686

8787
EXAMPLES = r"""
88+
---
89+
- name: Create ssl hsm key
90+
hosts: localhost
91+
gather_facts: false
92+
tasks:
93+
- name: Create ssl hsm key
94+
delegate_to: localhost
95+
netscaler.adc.sslhsmkey:
96+
state: present
97+
hsmkeyname: "hsmk1"
98+
hsmtype: "SAFENET"
99+
serialnum: "116877xxxx465464"
100+
password: "xxxxxxx"
88101
"""
89102

90103
RETURN = r"""

0 commit comments

Comments
 (0)