def test_has_feature_invalid_key(): ''' existing feature_flag with unknown key ''' flag = 'deprecation_warning_bad_key' module = create_module(mock_args()) # replace ANsible fail method with ours module.fail_json = fail_json with pytest.raises(AnsibleFailJson) as exc: netapp_utils.has_feature(module, flag) msg = 'Internal error: unexpected feature flag: %s' % flag assert exc.value.args[0]['msg'] == msg
def test_has_feature_success_user_true(): ''' existing feature_flag with value set to True ''' flag = 'user_deprecation_warning' args = dict(mock_args({flag: True})) module = create_module(args) value = netapp_utils.has_feature(module, flag) assert value
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 check_and_set_parameters(self, module): self.parameters = dict() check_for_none = netapp_utils.has_feature(module, 'check_required_params_for_none') if check_for_none: required_keys = [key for key, value in module.argument_spec.items() if value.get('required')] for param in module.params: if module.params[param] is not None: self.parameters[param] = module.params[param] elif check_for_none and param in required_keys: module.fail_json(msg="%s requires a value, got: None" % param) return self.parameters
def apply(self): '''Call create/modify/delete operations.''' if not self.use_rest: self.asup_log_for_cserver("na_ontap_svm") current = self.get_vserver() cd_action, rename = None, None if self.parameters.get('from_name'): old_svm = self.get_vserver(self.parameters['from_name']) rename = self.na_helper.is_rename_action(old_svm, current) if rename is None: self.module.fail_json( msg='Error renaming SVM %s: no SVM with from_name %s.' % (self.parameters['name'], self.parameters['from_name'])) else: cd_action = self.na_helper.get_cd_action(current, self.parameters) modify = self.na_helper.get_modified_attributes( current, self.parameters) for attribute in modify: if attribute in [ 'root_volume', 'root_volume_aggregate', 'root_volume_security_style', 'subtype', 'ipspace' ]: self.module.fail_json( msg='Error modifying SVM %s: can not modify %s.' % (self.parameters['name'], attribute)) if self.na_helper.changed and not self.module.check_mode: if rename: self.rename_vserver(old_svm) # If rename is True, cd_action is None, but modify could be true or false. if cd_action == 'create': self.create_vserver() elif cd_action == 'delete': self.delete_vserver(current) elif modify: self.modify_vserver(modify, current) results = dict(changed=self.na_helper.changed) if modify: if netapp_utils.has_feature(self.module, 'show_modified'): results['modify'] = str(modify) if 'aggr_list' in modify: if '*' in modify['aggr_list']: results[ 'warnings'] = "Changed always 'True' when aggr_list is '*'." self.module.exit_json(**results)
def test_has_feature_success_default(): ''' existing feature_flag with default ''' flag = 'deprecation_warning' module = create_module(mock_args()) value = netapp_utils.has_feature(module, flag) assert value