diff --git a/lib/ansible/modules/storage/netapp/na_ontap_cluster_ha.py b/lib/ansible/modules/storage/netapp/na_ontap_cluster_ha.py index 55c31edbaa5..22e6bcd5767 100644 --- a/lib/ansible/modules/storage/netapp/na_ontap_cluster_ha.py +++ b/lib/ansible/modules/storage/netapp/na_ontap_cluster_ha.py @@ -12,7 +12,7 @@ ANSIBLE_METADATA = {'metadata_version': '1.1', DOCUMENTATION = ''' -author: "Suhas Bangalore Shekar (bsuhas@netapp.com), Archana Ganesan (garchana@netapp.com)" +author: NetApp Ansible Team (ng-ansibleteam@netapp.com) description: - "Enable or disable HA on a cluster" extends_documentation_fragment: @@ -44,6 +44,8 @@ import traceback from ansible.module_utils.basic import AnsibleModule from ansible.module_utils._text import to_native import ansible.module_utils.netapp as netapp_utils +from ansible.module_utils.netapp_module import NetAppModule + HAS_NETAPP_LIB = netapp_utils.has_netapp_lib() @@ -61,9 +63,9 @@ class NetAppOntapClusterHA(object): argument_spec=self.argument_spec, supports_check_mode=True ) - parameters = self.module.params - # set up state variable - self.state = parameters['state'] + + self.na_helper = NetAppModule() + self.parameters = self.na_helper.set_parameters(self.module.params) if HAS_NETAPP_LIB is False: self.module.fail_json(msg="the python NetApp-Lib module is required") @@ -73,6 +75,7 @@ class NetAppOntapClusterHA(object): def modify_cluster_ha(self, configure): """ Enable or disable HA on cluster + :return: None """ cluster_ha_modify = netapp_utils.zapi.NaElement.create_node_with_children( 'cluster-ha-modify', **{'ha-configured': configure}) @@ -84,22 +87,38 @@ class NetAppOntapClusterHA(object): % (configure, to_native(error)), exception=traceback.format_exc()) + def get_cluster_ha_enabled(self): + """ + Get current cluster HA details + :return: dict if enabled, None if disabled + """ + cluster_ha_get = netapp_utils.zapi.NaElement('cluster-ha-get') + try: + result = self.server.invoke_successfully(cluster_ha_get, + enable_tunneling=True) + except netapp_utils.zapi.NaApiError as error: + self.module.fail_json(msg='Error fetching cluster HA details', + exception=traceback.format_exc()) + cluster_ha_info = result.get_child_by_name('attributes').get_child_by_name('cluster-ha-info') + if cluster_ha_info.get_child_content('ha-configured') == 'true': + return {'ha-configured': True} + return None + def apply(self): """ Apply action to cluster HA """ - changed = False results = netapp_utils.get_cserver(self.server) cserver = netapp_utils.setup_na_ontap_zapi(module=self.module, vserver=results) - netapp_utils.ems_log_event("na_ontap_cluster", cserver) - if self.state == 'present': + netapp_utils.ems_log_event("na_ontap_cluster_ha", cserver) + current = self.get_cluster_ha_enabled() + cd_action = self.na_helper.get_cd_action(current, self.parameters) + if cd_action == 'create': self.modify_cluster_ha("true") - changed = True - elif self.state == 'absent': + elif cd_action == 'delete': self.modify_cluster_ha("false") - changed = True - self.module.exit_json(changed=changed) + self.module.exit_json(changed=self.na_helper.changed) def main():