Server IP : 85.214.239.14 / Your IP : 18.221.240.145 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Mon Sep 30 15:36:27 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /lib/python3/dist-packages/ansible_collections/cisco/ucs/plugins/modules/ |
Upload File : |
#!/usr/bin/python # -*- coding: utf-8 -*- # 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: ucs_scrub_policy short_description: Manages UCS Scrub Policies on UCS Manager description: - Manages UCS Scrub Policies on UCS Manager. extends_documentation_fragment: cisco.ucs.ucs options: state: description: - If C(absent), will remove organization. - If C(present), will create or update organization. choices: [absent, present] default: present type: str name: description: - The name of the organization. - Enter up to 16 characters. - "You can use any characters or spaces except the following:" - "` (accent mark), \ (backslash), ^ (carat), \" (double quote)" - "= (equal sign), > (greater than), < (less than), ' (single quote)." required: true type: str description: description: - A user-defined description of the organization. - Enter up to 256 characters. - "You can use any characters or spaces except the following:" - "` (accent mark), \ (backslash), ^ (carat), \" (double quote)" - "= (equal sign), > (greater than), < (less than), ' (single quote)." aliases: [ descr ] type: str bios_settings_scrub: description: - Scrub the BIOS settings. - If the field is set to Yes, when a service profile containing this - scrub policy is disassociated from a server, the BIOS settings for - that server are erased and reset to the defaults for that server - type and vendor. If this field is set to No, the BIOS settings are - preserved. - yes scrub the BIOS settings. - no do not scrub the BIOS settings. choices: [yes, no] type: str disk_scrub: description: - Scrub the BIOS settings. - If this field is set to Yes, when a service profile containing this - scrub policy is disassociated from a server, all data on the server - local drives is completely erased. If this field is set to No, the - data on the local drives is preserved, including all local storage - configuration. - yes scrub the server disks. - no do not scrub the server disks. choices: [yes, no] type: str flex_flash_scrub: description: - Scrub the BIOS settings. - If the field is set to Yes, the HV partition on the SD card is - formatted using the PNUOS formatting utility when the server is - reacknowledged. If this field is set to No, the SD card is preserved. - yes scrub the flex flash. - no do not scrub the flex flash. choices: [yes, no] type: str persistent_memory_scrub: description: - Scrub the BIOS settings. - If the field is set to Yes, when a service profile containing this - scrub policy is disassociated from a server, all persistent memory - modules for that server are erased and reset to the defaults for that - server type and vendor. If this field is set to No, the persistent - memory modules are preserved. - yes scrub the persistent memory. - no do not scrub the persistent memory. choices: [yes, no] type: str org_dn: description: - Org dn (distinguished name) default: org-root type: str requirements: - ucsmsdk author: - John McDonough (@movinalot) version_added: "2.9" ''' EXAMPLES = r''' - name: Add UCS Scrub Policy cisco.ucs.ucs_scrub_policy: hostname: "{{ ucs_hostname }}" username: "{{ ucs_username }}" password: "{{ ucs_password }}" state: present description: Scrub All Policy name: all_scrub bios_settings_scrub: yes disk_scrub: yes flex_flash_scrub: yes persistent_memory_scrub: yes delegate_to: localhost - name: Add UCS Scrub Policy in an Organization cisco.ucs.ucs_scrub_policy: hostname: "{{ ucs_hostname }}" username: "{{ ucs_username }}" password: "{{ ucs_password }}" state: present org_dn: org-root/org-prod name: all_scrub description: Scrub All Policy Org Prod servers bios_settings_scrub: yes disk_scrub: yes flex_flash_scrub: yes persistent_memory_scrub: yes delegate_to: localhost - name: Update UCS Scrub Policy cisco.ucs.ucs_scrub_policy: hostname: "{{ ucs_hostname }}" username: "{{ ucs_username }}" password: "{{ ucs_password }}" state: present org_dn: org-root/org-prod name: BD_scrub description: Scrub BIOS and Disk Policy Org Prod servers bios_settings_scrub: yes disk_scrub: yes flex_flash_scrub: no persistent_memory_scrub: no delegate_to: localhost - name: Update UCS Scrub Policy cisco.ucs.ucs_scrub_policy: hostname: "{{ ucs_hostname }}" username: "{{ ucs_username }}" password: "{{ ucs_password }}" state: present org_dn: org-root/org-prod name: BD_scrub description: Scrub BIOS and Disk Policy Org Prod servers bios_settings_scrub: yes disk_scrub: yes flex_flash_scrub: yes delegate_to: localhost - name: Delete UCS Scrub Policy cisco.ucs.ucs_scrub_policy: hostname: "{{ ucs_hostname }}" username: "{{ ucs_username }}" password: "{{ ucs_password }}" state: absent org_dn: org-root/org-prod name: BD_scrub delegate_to: localhost - name: Delete UCS Scrub Policy cisco.ucs.ucs_scrub_policy: hostname: "{{ ucs_hostname }}" username: "{{ ucs_username }}" password: "{{ ucs_password }}" state: absent name: BD_scrub delegate_to: localhost ''' RETURN = r''' # ''' from ansible.module_utils.basic import AnsibleModule from ansible_collections.cisco.ucs.plugins.module_utils.ucs import ( UCSModule, ucs_argument_spec ) def main(): argument_spec = ucs_argument_spec argument_spec.update( org_dn=dict(type='str', default='org-root'), name=dict(required=True, type='str'), descr=dict(type='str'), description=dict(type='str', aliases=['descr']), bios_settings_scrub=dict(type='str', choices=['yes', 'no']), disk_scrub=dict(type='str', choices=['yes', 'no']), flex_flash_scrub=dict(type='str', choices=['yes', 'no']), persistent_memory_scrub=dict(type='str', choices=['yes', 'no']), state=dict( type='str', default='present', choices=['present', 'absent'] ), ) module = AnsibleModule( argument_spec, supports_check_mode=True, required_if=[ ['state', 'present', ['name']], ], ) # UCSModule verifies ucsmsdk is present and exits on failure. # Imports are below for UCS object creation. ucs = UCSModule(module) from importlib import import_module from ucsmsdk.ucscoreutils import get_meta_info # The Class(es) this module is managing module_file = 'ucsmsdk.mometa.compute.ComputeScrubPolicy' module_class = 'ComputeScrubPolicy' mo_module = import_module(module_file) mo_class = getattr(mo_module, module_class) META = get_meta_info(class_id=module_class) err = False changed = False requested_state = module.params['state'] kwargs = dict() # Manage Aliased Attributes for attribute in ['descr:description']: attribute_alias = attribute.split(':') if module.params[attribute_alias[1]] is not None: kwargs[attribute_alias[0]] = module.params[attribute_alias[1]] # Manage Attributes for attribute in [ 'bios_settings_scrub', 'descr', 'disk_scrub', 'flex_flash_scrub', 'persistent_memory_scrub' ]: if module.params[attribute] is not None: kwargs[attribute] = module.params[attribute] try: dn = ( module.params['org_dn'] + '/' + META.rn[0:META.rn.index('-') + 1] + module.params['name'] ) mo = ucs.login_handle.query_dn(dn) # Determine state change if mo: # Object exists, if it should exist has anything changed? if requested_state == 'present': # Do some or all Object properties not match, that is a change if not mo.check_prop_match(**kwargs): changed = True # Object does not exist but should, that is a change else: if requested_state == 'present': changed = True # Object exists but should not, that is a change if mo and requested_state == 'absent': changed = True # Apply state if not check_mode if changed and not module.check_mode: if requested_state == 'absent': ucs.login_handle.remove_mo(mo) else: kwargs['parent_mo_or_dn'] = module.params['org_dn'] kwargs['name'] = module.params['name'] mo = mo_class(**kwargs) ucs.login_handle.add_mo(mo, modify_present=True) ucs.login_handle.commit() except Exception as e: err = True ucs.result['msg'] = "setup error: %s " % str(e) ucs.result['changed'] = changed if err: module.fail_json(**ucs.result) module.exit_json(**ucs.result) if __name__ == '__main__': main()