Server IP : 85.214.239.14 / Your IP : 3.137.200.56 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 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/community/general/plugins/module_utils/ |
Upload File : |
# -*- coding: utf-8 -*- # # Copyright (c) 2019, Sandeep Kasargod <sandeep@vexata.com> # Simplified BSD License (see LICENSES/BSD-2-Clause.txt or https://opensource.org/licenses/BSD-2-Clause) # SPDX-License-Identifier: BSD-2-Clause from __future__ import (absolute_import, division, print_function) __metaclass__ = type HAS_VEXATAPI = True try: from vexatapi.vexata_api_proxy import VexataAPIProxy except ImportError: HAS_VEXATAPI = False from ansible.module_utils.common.text.converters import to_native from ansible.module_utils.basic import env_fallback VXOS_VERSION = None def get_version(iocs_json): if not iocs_json: raise Exception('Invalid IOC json') active = filter(lambda x: x['mgmtRole'], iocs_json) if not active: raise Exception('Unable to detect active IOC') active = active[0] ver = active['swVersion'] if ver[0] != 'v': raise Exception('Illegal version string') ver = ver[1:ver.find('-')] ver = map(int, ver.split('.')) return tuple(ver) def get_array(module): """Return storage array object or fail""" global VXOS_VERSION array = module.params['array'] user = module.params.get('user', None) password = module.params.get('password', None) validate = module.params.get('validate_certs') if not HAS_VEXATAPI: module.fail_json(msg='vexatapi library is required for this module. ' 'To install, use `pip install vexatapi`') if user and password: system = VexataAPIProxy(array, user, password, verify_cert=validate) else: module.fail_json(msg='The user/password are required to be passed in to ' 'the module as arguments or by setting the ' 'VEXATA_USER and VEXATA_PASSWORD environment variables.') try: if system.test_connection(): VXOS_VERSION = get_version(system.iocs()) return system else: module.fail_json(msg='Test connection to array failed.') except Exception as e: module.fail_json(msg='Vexata API access failed: {0}'.format(to_native(e))) def argument_spec(): """Return standard base dictionary used for the argument_spec argument in AnsibleModule""" return dict( array=dict(type='str', required=True), user=dict(type='str', fallback=(env_fallback, ['VEXATA_USER'])), password=dict(type='str', no_log=True, fallback=(env_fallback, ['VEXATA_PASSWORD'])), validate_certs=dict(type='bool', required=False, default=False), ) def required_together(): """Return the default list used for the required_together argument to AnsibleModule""" return [['user', 'password']] def size_to_MiB(size): """Convert a '<integer>[MGT]' string to MiB, return -1 on error.""" quant = size[:-1] exponent = size[-1] if not quant.isdigit() or exponent not in 'MGT': return -1 quant = int(quant) if exponent == 'G': quant <<= 10 elif exponent == 'T': quant <<= 20 return quant