summaryrefslogtreecommitdiff
path: root/lib/ansible/modules/storage
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ansible/modules/storage')
-rw-r--r--lib/ansible/modules/storage/purestorage/purefa_smtp.py150
1 files changed, 150 insertions, 0 deletions
diff --git a/lib/ansible/modules/storage/purestorage/purefa_smtp.py b/lib/ansible/modules/storage/purestorage/purefa_smtp.py
new file mode 100644
index 0000000000..3d42379925
--- /dev/null
+++ b/lib/ansible/modules/storage/purestorage/purefa_smtp.py
@@ -0,0 +1,150 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+# (c) 2018, Simon Dodsley (simon@purestorage.com)
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'}
+
+DOCUMENTATION = r'''
+---
+module: purefa_smtp
+version_added: '2.9'
+author:
+ - Pure Storage ansible Team (@sdodsley) <pure-ansible-team@purestorage.com>
+short_description: Configure FlashArray SMTP settings
+description:
+- Set or erase configuration for the SMTP settings.
+- If username/password are set this will always force a change as there is
+ no way to see if the password is differnet from the current SMTP configuration.
+- Pure Storage Ansible Team (@sdodsley) <pure-ansible-team@purestorage.com>
+options:
+ state:
+ description:
+ - Set or delete SMTP configuration
+ default: present
+ type: str
+ choices: [ absent, present ]
+ password:
+ description:
+ - The SMTP password.
+ type: str
+ user:
+ description:
+ - The SMTP username.
+ type: str
+ relay_host:
+ description:
+ - IPv4 or IPv6 address or FQDN. A port number may be appended.
+ type: str
+ sender_domain:
+ description:
+ - Domain name.
+ type: str
+extends_documentation_fragment:
+- purestorage.fa
+'''
+
+EXAMPLES = r'''
+- name: Delete exisitng SMTP settings
+ purefa_smtp:
+ state: absent
+ fa_url: 10.10.10.2
+ api_token: e31060a7-21fc-e277-6240-25983c6c4592
+
+- name: Set SMTP settings
+ purefa_smtp:
+ sender_domain: purestorage.com
+ password: account_password
+ user: smtp_account
+ relay_host: 10.2.56.78:2345
+ fa_url: 10.10.10.2
+ api_token: e31060a7-21fc-e277-6240-25983c6c4592
+'''
+
+RETURN = r'''
+'''
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.pure import get_system, purefa_argument_spec
+
+
+def delete_smtp(module, array):
+ """Delete SMTP settings"""
+ changed = True
+ if not module.check_mode:
+ try:
+ array.set_smtp(sender_domain='', username='', password='', relay_host='')
+ except Exception:
+ module.fail_json(msg='Delete SMTP settigs failed')
+ module.exit_json(changed=changed)
+
+
+def create_smtp(module, array):
+ """Set SMTP settings"""
+ changed = True
+ current_smtp = array.get_smtp()
+ if not module.check_mode:
+ if module.params['sender_domain'] and current_smtp['sender_domain'] != module.params['sender_domain']:
+ try:
+ array.set_smtp(sender_domain=module.params['sender_domain'])
+ changed_sender = True
+ except Exception:
+ module.fail_json(msg='Set SMTP sender domain failed.')
+ else:
+ changed_sender = False
+ if module.params['relay_host'] and current_smtp['relay_host'] != module.params['relay_host']:
+ try:
+ array.set_smtp(relay_host=module.params['relay_host'])
+ changed_relay = True
+ except Exception:
+ module.fail_json(msg='Set SMTP relay host failed.')
+ else:
+ changed_relay = False
+ if module.params['user']:
+ try:
+ array.set_smtp(user_name=module.params['user'], password=module.params['password'])
+ changed_creds = True
+ except Exception:
+ module.fail_json(msg='Set SMTP username/password failed.')
+ else:
+ changed_creds = False
+ changed = bool(changed_sender or changed_relay or changed_creds)
+
+ module.exit_json(changed=changed)
+
+
+def main():
+ argument_spec = purefa_argument_spec()
+ argument_spec.update(dict(
+ state=dict(type='str', default='present', choices=['absent', 'present']),
+ sender_domain=dict(type='str'),
+ password=dict(type='str', no_log=True),
+ user=dict(type='str'),
+ relay_host=dict(type='str'),
+ ))
+
+ required_together = [['user', 'password']]
+
+ module = AnsibleModule(argument_spec,
+ required_together=required_together,
+ supports_check_mode=True)
+
+ state = module.params['state']
+ array = get_system(module)
+
+ if state == 'absent':
+ delete_smtp(module, array)
+ elif state == 'present':
+ create_smtp(module, array)
+ else:
+ module.exit_json(changed=False)
+
+
+if __name__ == '__main__':
+ main()