Example #1
0
    def apply(self):
        '''Apply action to disks'''
        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_disks", cserver)

        # check if anything needs to be changed (add/delete/update)
        unowned_disks = self.get_unassigned_disk_count()
        owned_disks = self.get_owned_disk_count()
        if 'disk_count' in self.parameters:
            if self.parameters['disk_count'] < owned_disks:
                self.module.fail_json(
                    msg="Fewer disks than are currently owned was requested. "
                    "This module does not do any disk removing. "
                    "All disk removing will need to be done manually.")
            if self.parameters['disk_count'] > owned_disks + unowned_disks:
                self.module.fail_json(
                    msg="Not enough unowned disks remain to fulfill request")
        if unowned_disks >= 1:
            if 'disk_count' in self.parameters:
                if self.parameters['disk_count'] > owned_disks:
                    needed_disks = self.parameters['disk_count'] - owned_disks
                    self.disk_assign(needed_disks)
                    changed = True
            else:
                self.disk_assign(0)
                changed = True
        self.module.exit_json(changed=changed)
 def apply(self):
     netapp_utils.ems_log_event("na_ontap_vscan_on_access_policy", self.server)
     changed = False
     policy_obj = self.return_on_access_policy()
     if self.state == 'present':
         if not self.exists_access_policy(policy_obj):
             if not self.module.check_mode:
                 self.create_on_access_policy()
                 if self.policy_status:
                     self.status_modify_on_access_policy()
             changed = True
         else:
             # Check if anything has changed first.
             if self.has_policy_changed():
                 if not self.module.check_mode:
                     result = policy_obj.get_child_by_name('attributes-list').get_child_by_name('vscan-on-access-policy-info')
                     if str(self.policy_status).lower() != result.get_child_content('is-policy-enabled'):
                         if self.policy_status is not None:
                             self.status_modify_on_access_policy()
                     self.modify_on_access_policy()
                 changed = True
     if self.state == 'absent':
         if self.exists_access_policy(policy_obj):
             if not self.module.check_mode:
                 result = policy_obj.get_child_by_name('attributes-list').get_child_by_name('vscan-on-access-policy-info')
                 if result.get_child_content('is-policy-enabled') == 'true':
                     self.status_modify_on_access_policy()
                 self.delete_on_access_policy()
             changed = True
     self.module.exit_json(changed=changed)
Example #3
0
 def apply(self):
     """
     Check to see which play we should run
     """
     current = self.get_snapshot()
     netapp_utils.ems_log_event("na_ontap_snapshot", self.server)
     rename, cd_action = None, None
     modify = {}
     if self.parameters.get('from_name'):
         current_old_name = self.get_snapshot(self.parameters['from_name'])
         rename = self.na_helper.is_rename_action(current_old_name, current)
         modify = self.na_helper.get_modified_attributes(
             current_old_name, self.parameters)
     else:
         cd_action = self.na_helper.get_cd_action(current, self.parameters)
         if cd_action is None:
             modify = self.na_helper.get_modified_attributes(
                 current, self.parameters)
     if self.na_helper.changed:
         if self.module.check_mode:
             pass
         else:
             if rename:
                 self.rename_snapshot()
             if cd_action == 'create':
                 self.create_snapshot()
             elif cd_action == 'delete':
                 self.delete_snapshot()
             elif modify:
                 self.modify_snapshot()
     self.module.exit_json(changed=self.na_helper.changed)
    def apply(self):
        """
        Applies action from playbook
        """
        netapp_utils.ems_log_event("na_ontap_autosupport", self.server)
        current, modify = self.portset_get(), None
        cd_action = self.na_helper.get_cd_action(current, self.parameters)
        if cd_action is None and self.parameters['state'] == 'present':
            if self.parameters.get(
                    'type') and self.parameters['type'] != current['type']:
                self.module.fail_json(
                    msg=
                    "modify protocol(type) not supported and %s already exists in vserver %s under different type"
                    % (self.parameters['name'], self.parameters['vserver']))
            modify = self.na_helper.get_modified_attributes(
                current, self.parameters)

        if self.na_helper.changed:
            if self.module.check_mode:
                pass
            else:
                if cd_action == 'create':
                    self.create_portset()
                    self.add_ports()
                elif cd_action == 'delete':
                    self.delete_portset()
                elif modify:
                    self.remove_ports(current['ports'])
                    self.add_ports()
        self.module.exit_json(changed=self.na_helper.changed)
Example #5
0
 def autosupport_log(self, event_name):
     """
     Create a log event against the provided vserver
     """
     server = netapp_utils.setup_na_ontap_zapi(
         module=self.module, vserver=self.parameters['vserver'])
     netapp_utils.ems_log_event(event_name, server)
Example #6
0
 def apply(self):
     """
     Apply action to quotas
     """
     netapp_utils.ems_log_event("na_ontap_quotas", self.server)
     modify_quota_status = None
     modify_quota = None
     current = self.get_quotas()
     if 'set_quota_status' in self.parameters:
         quota_status = self.get_quota_status()
         if quota_status is not None:
             quota_status_action = self.na_helper.get_modified_attributes(
                 {'set_quota_status': True if quota_status == 'on' else False}, self.parameters)
             if quota_status_action:
                 modify_quota_status = 'quota-on' if quota_status_action['set_quota_status'] else 'quota-off'
     cd_action = self.na_helper.get_cd_action(current, self.parameters)
     if cd_action is None:
         modify_quota = self.na_helper.get_modified_attributes(current, self.parameters)
     if self.na_helper.changed:
         if self.module.check_mode:
             pass
         else:
             if cd_action == 'create':
                 self.quota_entry_set()
             elif cd_action == 'delete':
                 self.quota_entry_delete()
             elif modify_quota is not None:
                 for key in list(modify_quota):
                     modify_quota[key.replace("_", "-")] = modify_quota.pop(key)
                 self.quota_entry_modify(modify_quota)
             if modify_quota_status is not None:
                 self.on_or_off_quota(modify_quota_status)
     self.module.exit_json(changed=self.na_helper.changed)
Example #7
0
    def apply(self):
        # logging ems event
        results = netapp_utils.get_cserver(self.cluster)
        cserver = netapp_utils.setup_na_ontap_zapi(module=self.module,
                                                   vserver=results)
        netapp_utils.ems_log_event("na_ontap_node", cserver)
        from_exists = None
        modify = None
        current = self.get_node(self.parameters['name'])
        if current is None and 'from_name' in self.parameters:
            from_exists = self.get_node(self.parameters['from_name'])
            # since from_exists contains the node name, modify will at least contain the node name if a rename is required.
            modify = self.na_helper.get_modified_attributes(
                from_exists, self.parameters)
        elif current is not None:
            modify = self.na_helper.get_modified_attributes(
                current, self.parameters)

        if current is None and from_exists is None:
            msg = 'from_name: %s' % self.parameters.get('from_name') if 'from_name' in self.parameters \
                  else 'name: %s' % self.parameters['name']
            self.module.fail_json(msg='Node not found: %s' % msg)
        if self.na_helper.changed:
            if not self.module.check_mode:
                if 'name' in modify:
                    self.rename_node()
                    modify.pop('name')
                if modify:
                    self.modify_node()

        self.module.exit_json(changed=self.na_helper.changed)
Example #8
0
    def apply(self):
        """
        Run Module based on play book
        """
        changed = False
        broadcast_domain_details = self.get_broadcast_domain_ports()
        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_broadcast_domain_ports", cserver)
        if broadcast_domain_details is None:
            self.module.fail_json(msg='Error broadcast domain not found: %s' %
                                  self.broadcast_domain)
        if self.module.check_mode:
            pass
        else:
            if self.state == 'present':  # execute create
                ports_to_add = [
                    port for port in self.ports
                    if port not in broadcast_domain_details['ports']
                ]
                if len(ports_to_add) > 0:
                    changed = self.create_broadcast_domain_ports(ports_to_add)
            elif self.state == 'absent':  # execute delete
                ports_to_delete = [
                    port for port in self.ports
                    if port in broadcast_domain_details['ports']
                ]
                if len(ports_to_delete) > 0:
                    changed = self.delete_broadcast_domain_ports(
                        ports_to_delete)

        self.module.exit_json(changed=changed)
Example #9
0
    def apply(self):
        '''Call create/modify/delete operations.'''
        current = self.get_ldap_client()
        cd_action = self.na_helper.get_cd_action(current, self.parameters)

        # state is present, either ldap_servers or ad_domain is required
        if self.parameters['state'] == 'present' and not self.parameters.get('ldap_servers') \
                and self.parameters.get('ad_domain') is None:
            self.module.fail_json(
                msg='Required one of ldap_servers or ad_domain')

        if self.parameters['state'] == 'present' and cd_action is None:
            modify = self.na_helper.get_modified_attributes(
                current, self.parameters)

        # create an ems log event for users with auto support turned on
        try:
            netapp_utils.ems_log_event("na_ontap_ldap_client", self.server)
        except netapp_utils.zapi.NaApiError as errcatch:
            self.module.fail_json(
                msg='Error connecting to %s: %s' %
                (self.parameters['hostname'], to_native(errcatch)),
                exception=traceback.format_exc())

        if self.na_helper.changed:
            if self.module.check_mode:
                pass
            else:
                if cd_action == 'create':
                    self.create_ldap_client()
                elif cd_action == 'delete':
                    self.delete_ldap_client()
                elif modify:
                    self.modify_ldap_client(modify)
        self.module.exit_json(changed=self.na_helper.changed)
Example #10
0
 def apply(self):
     netapp_utils.ems_log_event("na_ontap_lun_map_reporting_nodes",
                                self.server)
     reporting_nodes = self.get_lun_map_reporting_nodes()
     if reporting_nodes is None:
         self.module.fail_json(
             msg=
             'Error: LUN map for found for vserver %s, LUN path: %s, igroup: %s'
             % (self.parameters['vserver'], self.parameters['path'],
                self.parameters['initiator_group_name']))
     if self.parameters['state'] == 'present':
         nodes_to_add = [
             node for node in self.parameters['nodes']
             if node not in reporting_nodes
         ]
         nodes_to_delete = list()
     else:
         nodes_to_add = list()
         nodes_to_delete = [
             node for node in self.parameters['nodes']
             if node in reporting_nodes
         ]
     changed = len(nodes_to_add) > 0 or len(nodes_to_delete) > 0
     if changed and not self.module.check_mode:
         if nodes_to_add:
             self.add_lun_map_reporting_nodes(nodes_to_add)
         if nodes_to_delete:
             self.remove_lun_map_reporting_nodes(nodes_to_delete)
     self.module.exit_json(changed=changed,
                           reporting_nodes=reporting_nodes,
                           nodes_to_add=nodes_to_add,
                           nodes_to_delete=nodes_to_delete)
    def apply(self):
        '''Call create/modify/delete operations.'''
        current = self.get_ldap_client()
        cd_action = self.na_helper.get_cd_action(current, self.parameters)

        # state is present, either ldap_servers or ad_domain is required
        if self.parameters['state'] == 'present' and not self.parameters.get('ldap_servers') \
                and self.parameters.get('ad_domain') is None:
            self.module.fail_json(
                msg='Required one of ldap_servers or ad_domain')

        if self.parameters['state'] == 'present' and cd_action is None:
            modify = self.na_helper.get_modified_attributes(
                current, self.parameters)

        # create an ems log event for users with auto support turned on
        netapp_utils.ems_log_event("na_ontap_ldap_client", self.server)

        if self.na_helper.changed:
            if self.module.check_mode:
                pass
            else:
                if cd_action == 'create':
                    self.create_ldap_client()
                elif cd_action == 'delete':
                    self.delete_ldap_client()
                elif modify:
                    self.modify_ldap_client(modify)
        self.module.exit_json(changed=self.na_helper.changed)
Example #12
0
    def apply(self):
        if not self.use_rest:
            netapp_utils.ems_log_event("na_ontap_volume_efficiency", self.server)

        current = self.get_volume_efficiency()

        # If the volume efficiency does not exist for a given path to create this current is set to disabled
        # this is for ONTAP systems that do not enable efficiency by default.
        if current is None:
            current = {'enabled': 'disabled'}

        modify = self.na_helper.get_modified_attributes(current, self.parameters)

        if self.na_helper.changed:
            if not self.module.check_mode:
                if self.parameters['state'] == 'present' and current['enabled'] == 'disabled':
                    self.enable_volume_efficiency()
                    # Checking to see if there are any additional parameters that need to be set after enabling volume efficiency required for Non-AFF systems
                    current = self.get_volume_efficiency()
                    modify = self.na_helper.get_modified_attributes(current, self.parameters)
                elif self.parameters['state'] == 'absent' and current['enabled'] == 'enabled':
                    self.disable_volume_efficiency()

                if 'enabled' in modify:
                    del modify['enabled']
                # Removed the enabled key if there is anything remaining in the modify dict we need to modify.
                if modify:
                    self.modify_volume_efficiency()

        self.module.exit_json(changed=self.na_helper.changed)
Example #13
0
    def apply(self):
        """
        Apply action to NVMe service
        """
        netapp_utils.ems_log_event("na_ontap_nvme", self.server)
        current = self.get_nvme()
        cd_action = self.na_helper.get_cd_action(current, self.parameters)
        if self.parameters.get('status_admin') is not None:
            self.parameters[
                'status_admin'] = self.na_helper.get_value_for_bool(
                    False, self.parameters['status_admin'])
            if cd_action is None and self.parameters['state'] == 'present':
                modify = self.na_helper.get_modified_attributes(
                    current, self.parameters)
        if self.na_helper.changed:
            if self.module.check_mode:
                pass
            else:
                if cd_action == 'create':
                    self.create_nvme()
                elif cd_action == 'delete':
                    # NVMe status_admin needs to be down before deleting it
                    self.modify_nvme('false')
                    self.delete_nvme()
                elif modify:
                    self.modify_nvme()

        self.module.exit_json(changed=self.na_helper.changed)
Example #14
0
    def apply(self):
        netapp_utils.ems_log_event("na_ontap_lun", self.server)
        current = self.get_lun()
        cd_action = self.na_helper.get_cd_action(current, self.parameters)
        modify = None
        if cd_action is None and self.parameters['state'] == 'present':
            modify = self.na_helper.get_modified_attributes(
                current, self.parameters)
        if cd_action == 'create' and self.parameters.get('size') is None:
            self.module.fail_json(
                msg="size is a required parameter for create.")
        if self.na_helper.changed and not self.module.check_mode:
            if cd_action == 'create':
                self.create_lun()
            elif cd_action == 'delete':
                self.delete_lun()
            else:
                size_changed = False
                if 'size' in modify:
                    # Ensure that size was actually changed. Please
                    # read notes in 'resize_lun' function for details.
                    size_changed = self.resize_lun()
                    modify.pop('size')
                if modify:
                    self.modify_lun(modify)
                else:
                    self.na_helper.changed = size_changed

        self.module.exit_json(changed=self.na_helper.changed)
Example #15
0
 def apply(self):
     """
     check the option in the playbook to see what needs to be done
     :return:
     """
     changed = False
     result = None
     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_net_vlan", cserver)
     existing_vlan = self.does_vlan_exist()
     if existing_vlan:
         if self.state == 'absent':  # delete
             changed = True
     else:
         if self.state == 'present':  # create
             changed = True
     if changed:
         if self.module.check_mode:
             pass
         else:
             if self.state == 'present':
                 self.create_vlan()
             elif self.state == 'absent':
                 self.delete_vlan()
     self.module.exit_json(changed=changed, meta=result)
Example #16
0
 def apply(self):
     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_fcp", cserver)
     exists = self.get_fcp()
     changed = False
     if self.parameters['state'] == 'present':
         if exists:
             if self.parameters['status'] == 'up':
                 if not self.current_status():
                     self.start_fcp()
                     changed = True
             else:
                 if self.current_status():
                     self.stop_fcp()
                     changed = True
         else:
             self.create_fcp()
             if self.parameters['status'] == 'up':
                 self.start_fcp()
             elif self.parameters['status'] == 'down':
                 self.stop_fcp()
             changed = True
     else:
         if exists:
             if self.current_status():
                 self.stop_fcp()
             self.destroy_fcp()
             changed = True
     self.module.exit_json(changed=changed)
Example #17
0
    def apply(self):
        """Apply action to ntp-server"""

        changed = False
        ntp_modify = 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_ntp", cserver)
        ntp_server_details = self.get_ntp_server()
        if ntp_server_details is not None:
            if self.state == 'absent':  # delete
                changed = True
            elif self.state == 'present' and self.version:
                # modify version
                if self.version != ntp_server_details['version']:
                    ntp_modify = True
                    changed = True
        else:
            if self.state == 'present':  # create
                changed = True

        if changed:
            if self.module.check_mode:
                pass
            else:
                if self.state == 'present':
                    if ntp_server_details is None:
                        self.create_ntp_server()
                    elif ntp_modify:
                        self.modify_version()
                elif self.state == 'absent':
                    self.delete_ntp_server()

        self.module.exit_json(changed=changed)
Example #18
0
 def apply(self):
     '''Apply action to cifs share'''
     netapp_utils.ems_log_event("na_ontap_cifs", self.server)
     current = self.get_cifs_share()
     cd_action = self.na_helper.get_cd_action(current, self.parameters)
     modify = None
     if cd_action is None:
         # ZAPI accepts both 'show-previous-versions' and 'show_previous_versions', but only returns the latter
         if 'show-previous-versions' in self.parameters.get('share_properties', []) and\
            current and 'show_previous_versions' in current.get('share_properties', []):
             self.parameters['share_properties'].remove(
                 'show-previous-versions')
             self.parameters['share_properties'].append(
                 'show_previous_versions')
         modify = self.na_helper.get_modified_attributes(
             current, self.parameters)
     if self.na_helper.changed and not self.module.check_mode:
         if cd_action == 'create':
             self.create_cifs_share()
         elif cd_action == 'delete':
             self.delete_cifs_share()
         elif modify:
             self.modify_cifs_share()
     results = dict(changed=self.na_helper.changed)
     if modify and netapp_utils.has_feature(self.module, 'show_modified'):
         results['modify'] = str(modify)
     self.module.exit_json(**results)
    def apply(self):
        """
        Apply action to cifs-share-access-control
        """
        changed = False
        cifs_acl_exists = False
        netapp_utils.ems_log_event("na_ontap_cifs_acl", self.server)
        cifs_acl_details = self.get_cifs_acl()
        if cifs_acl_details:
            cifs_acl_exists = True
            if self.state == 'absent':  # delete
                changed = True
            elif self.state == 'present':
                if cifs_acl_details['permission'] != self.permission:  # rename
                    changed = True
        else:
            if self.state == 'present':  # create
                changed = True
        if changed:
            if self.module.check_mode:
                pass
            else:
                if self.state == 'present':  # execute create
                    if not cifs_acl_exists:
                        self.create_cifs_acl()
                    else:  # execute modify
                        self.modify_cifs_acl_permission()
                elif self.state == 'absent':  # execute delete
                    self.delete_cifs_acl()

        self.module.exit_json(changed=changed)
 def apply(self):
     changed = False
     netapp_utils.ems_log_event("na_ontap_svm_options", self.server)
     is_set = self.is_option_set()
     if not is_set:
         self.set_options()
         changed = True
     self.module.exit_json(changed=changed)
 def autosupport_log(self):
     """
     Autosupport log for software_update
     :return:
     """
     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_firmware_upgrade", cserver)
 def autosupport_log(self):
     """
     Autosupport log for job_schedule
     :return: None
     """
     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_job_schedule", cserver)
 def asup_log_for_cserver(self, event_name):
     """
     Fetch admin vserver for the given cluster
     Create and Autosupport log event with the given module name
     :param event_name: Name of the event log
     :return: None
     """
     netapp_utils.ems_log_event(event_name, self.server)
Example #24
0
 def autosupport_log(self):
     """
     Autosupport log for ucadater
     :return:
     """
     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_ucadapter", cserver)
Example #25
0
def test_ems_log_event_version():
    ''' validate Ansible version is correctly read '''
    source = 'unittest'
    server = MockONTAPConnection()
    netapp_utils.ems_log_event(source, server)
    xml = server.xml_in
    version = xml.get_child_content('app-version')
    assert version == ansible_version
    print("Ansible version: %s" % ansible_version)
    def apply(self):
        if self.use_rest:
            self.apply_for_rest()
        else:
            create_delete_decision = {}
            modify_decision = {}
            netapp_utils.ems_log_event("na_ontap_user", self.server)
            for application in self.parameters['applications']:
                current = self.get_user(application)

                if current is not None:
                    current['lock_user'] = self.na_helper.get_value_for_bool(
                        True, current['lock_user'])

                cd_action = self.na_helper.get_cd_action(
                    current, self.parameters)

                if cd_action is not None:
                    create_delete_decision[application] = cd_action
                else:
                    modify_decision[
                        application] = self.na_helper.get_modified_attributes(
                            current, self.parameters)

            if not create_delete_decision and self.parameters.get(
                    'state') == 'present':
                if self.parameters.get('set_password') is not None:
                    self.na_helper.changed = True

            if self.na_helper.changed:

                if self.module.check_mode:
                    pass
                else:
                    for application in create_delete_decision:
                        if create_delete_decision[application] == 'create':
                            self.create_user(application)
                        elif create_delete_decision[application] == 'delete':
                            self.delete_user(application)
                    lock_user = False
                    for application in modify_decision:
                        if 'role_name' in modify_decision[application]:
                            self.modify_user(application)
                        if 'lock_user' in modify_decision[application]:
                            lock_user = True
                    if not create_delete_decision and self.parameters.get(
                            'set_password') is not None:
                        # if change password return false nothing has changed so we need to set changed to False
                        self.na_helper.changed = self.change_password()
                    # NOTE: unlock has to be performed after setting a password
                    if lock_user:
                        if self.parameters.get('lock_user'):
                            self.lock_given_user()
                        else:
                            self.unlock_given_user()
        self.module.exit_json(changed=self.na_helper.changed)
Example #27
0
    def apply(self):
        '''Call create/delete/modify/rename operations'''
        if not self.use_rest:
            netapp_utils.ems_log_event("na_ontap_qtree", self.server)
        current = self.get_qtree()
        rename, cd_action, modify = None, None, None
        if self.parameters.get('from_name'):
            from_qtree = self.get_qtree(self.parameters['from_name'])
            rename = self.na_helper.is_rename_action(from_qtree, current)
            if rename is None:
                self.module.fail_json(
                    msg='Error renaming: qtree %s does not exist' %
                    self.parameters['from_name'])
            if rename:
                current = from_qtree
        else:
            cd_action = self.na_helper.get_cd_action(current, self.parameters)
        if cd_action is None and self.parameters['state'] == 'present':
            if self.parameters.get('security_style') and self.parameters[
                    'security_style'] != current['security_style']:
                modify = True
            if self.parameters.get('unix_permissions') and \
                    self.parameters['unix_permissions'] != str(current['unix_permissions']):
                modify = True
            # rest and zapi handle export policy differently
            if self.use_rest:
                if self.parameters.get('export_policy') and \
                        self.parameters['export_policy'] != current['export_policy']['name']:
                    modify = True
            else:
                if self.parameters.get('export_policy') and \
                        self.parameters['export_policy'] != current['export_policy']:
                    modify = True
        if self.use_rest and cd_action == 'delete' and not self.parameters[
                'force_delete']:
            self.module.fail_json(
                msg=
                'Error: force_delete option is not supported for REST, unless set to true.'
            )

        if modify:
            self.na_helper.changed = True
        if self.na_helper.changed:
            if self.module.check_mode:
                pass
            else:
                if cd_action == 'create':
                    self.create_qtree()
                elif cd_action == 'delete':
                    self.delete_qtree(current)
                else:
                    if rename:
                        self.rename_qtree(current)
                    if modify:
                        self.modify_qtree(current)
        self.module.exit_json(changed=self.na_helper.changed)
Example #28
0
 def asup_log_for_cserver(self, event_name):
     """
     Fetch admin vserver for the given cluster
     Create and Autosupport log event with the given module name
     :param event_name: Name of the event log
     :return: None
     """
     results = netapp_utils.get_cserver(self.server)
     cserver = netapp_utils.setup_na_ontap_zapi(module=self.module, vserver=results)
     netapp_utils.ems_log_event(event_name, cserver)
Example #29
0
 def apply(self):
     """
     Run Module based on play book
     """
     if not self.use_rest:
         netapp_utils.ems_log_event("na_ontap_net_routes", self.server)
     current = self.get_net_route()
     modify, cd_action = None, None
     if self.use_rest:
         modify_params = {'gateway': self.parameters.get('from_gateway'),
                          'destination': self.parameters.get('from_destination')}
         if any(modify_params.values()):
             # destination and gateway combination is unique, and is considered like a id. so modify destination
             # or gateway is considered a rename action.
             old_params = self.get_net_route(modify_params)
             modify = self.na_helper.is_rename_action(old_params, current)
             if modify is None:
                 self.module.fail_json(msg="Error modifying: route %s does not exist" % self.parameters['from_destination'])
         else:
             cd_action = self.na_helper.get_cd_action(current, self.parameters)
     else:
         modify_params = {'destination': self.parameters.get('from_destination'),
                          'gateway': self.parameters.get('from_gateway'),
                          'metric': self.parameters.get('from_metric')}
         # if any from_* param is present in playbook, check for modify action
         if any(modify_params.values()):
             # destination and gateway combination is unique, and is considered like a id. so modify destination
             # or gateway is considered a rename action. metric is considered an attribute of the route so it is
             # considered as modify.
             if modify_params.get('metric') is not None:
                 modify = True
                 old_params = current
             else:
                 # get parameters that are eligible for modify
                 old_params = self.get_net_route(modify_params)
                 modify = self.na_helper.is_rename_action(old_params, current)
             if modify is None:
                 self.module.fail_json(msg="Error modifying: route %s does not exist" % self.parameters['from_destination'])
         else:
             cd_action = self.na_helper.get_cd_action(current, self.parameters)
     if cd_action == 'create':
         if not self.module.check_mode:
             self.create_net_route()
     elif cd_action == 'delete':
         if not self.module.check_mode:
             self.delete_net_route(current)
     elif modify:
         desired = {}
         for key, value in old_params.items():
             desired[key] = value
         for key, value in modify_params.items():
             if value is not None:
                 desired[key] = self.parameters.get(key)
         self.modify_net_route(old_params, desired)
     self.module.exit_json(changed=self.na_helper.changed)
Example #30
0
 def ems(self, zapi):
     """
     Error out if Cluster Admin username is used with Vserver, or Vserver admin used with out vserver being set
     :return:
     """
     if self.vserver:
         try:
             netapp_utils.ems_log_event("na_ontap_zapi" + str(zapi), self.server)
         except netapp_utils.zapi.NaApiError:
             pass
     else:
         self.asup_log_for_cserver("na_ontap_zapi: " + str(zapi))