mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-08 14:22:46 +00:00
Remove wildcard imports
Made the following changes: * Removed wildcard imports * Replaced long form of GPL header with short form * Removed get_exception usage * Added from __future__ boilerplate * Adjust division operator to // where necessary For the following files: * web_infrastructure modules * system modules * linode, lxc, lxd, atomic, cloudscale, dimensiondata, ovh, packet, profitbricks, pubnub, smartos, softlayer, univention modules * compat dirs (disabled as its used intentionally)
This commit is contained in:
@@ -2,21 +2,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# (c) 2016, Gregory Shulov (gregory.shulov@gmail.com)
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
@@ -59,6 +49,8 @@ options:
|
||||
required: true
|
||||
extends_documentation_fragment:
|
||||
- infinibox
|
||||
requirements:
|
||||
- munch
|
||||
'''
|
||||
|
||||
EXAMPLES = '''
|
||||
@@ -91,15 +83,14 @@ EXAMPLES = '''
|
||||
|
||||
RETURN = '''
|
||||
'''
|
||||
|
||||
HAS_INFINISDK = True
|
||||
try:
|
||||
from infinisdk import InfiniBox, core
|
||||
from munch import unmunchify
|
||||
HAS_MUNCH = True
|
||||
except ImportError:
|
||||
HAS_INFINISDK = False
|
||||
HAS_MUNCH = False
|
||||
|
||||
from ansible.module_utils.infinibox import *
|
||||
from munch import unmunchify
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.infinibox import HAS_INFINISDK, api_wrapper, get_system, infinibox_argument_spec
|
||||
|
||||
|
||||
def transform(d):
|
||||
@@ -178,6 +169,8 @@ def main():
|
||||
|
||||
if not HAS_INFINISDK:
|
||||
module.fail_json(msg='infinisdk is required for this module')
|
||||
if not HAS_MUNCH:
|
||||
module.fail_json(msg='the python munch library is required for this module')
|
||||
|
||||
state = module.params['state']
|
||||
system = get_system(module)
|
||||
@@ -195,7 +188,5 @@ def main():
|
||||
module.exit_json(changed=False)
|
||||
|
||||
|
||||
# Import Ansible Utilities
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
@@ -2,21 +2,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# (c) 2016, Gregory Shulov (gregory.shulov@gmail.com)
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
@@ -62,6 +52,8 @@ options:
|
||||
required: true
|
||||
extends_documentation_fragment:
|
||||
- infinibox
|
||||
requirements:
|
||||
- munch
|
||||
'''
|
||||
|
||||
EXAMPLES = '''
|
||||
@@ -92,14 +84,14 @@ EXAMPLES = '''
|
||||
RETURN = '''
|
||||
'''
|
||||
|
||||
HAS_INFINISDK = True
|
||||
try:
|
||||
from infinisdk import InfiniBox, core
|
||||
from munch import Munch, unmunchify
|
||||
HAS_MUNCH = True
|
||||
except ImportError:
|
||||
HAS_INFINISDK = False
|
||||
HAS_MUNCH = False
|
||||
|
||||
from ansible.module_utils.infinibox import *
|
||||
from munch import Munch, unmunchify
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.infinibox import HAS_INFINISDK, api_wrapper, get_system, infinibox_argument_spec
|
||||
|
||||
|
||||
def transform(d):
|
||||
@@ -195,6 +187,8 @@ def main():
|
||||
|
||||
if not HAS_INFINISDK:
|
||||
module.fail_json(msg='infinisdk is required for this module')
|
||||
if not HAS_MUNCH:
|
||||
module.fail_json(msg='the python munch library is required for this module')
|
||||
|
||||
system = get_system(module)
|
||||
export = get_export(module, system)
|
||||
@@ -204,7 +198,6 @@ def main():
|
||||
else:
|
||||
delete_client(module, export)
|
||||
|
||||
# Import Ansible Utilities
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
@@ -2,21 +2,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# (c) 2016, Gregory Shulov (gregory.shulov@gmail.com)
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
@@ -52,6 +42,8 @@ options:
|
||||
required: true
|
||||
extends_documentation_fragment:
|
||||
- infinibox
|
||||
requirements:
|
||||
- capacity
|
||||
'''
|
||||
|
||||
EXAMPLES = '''
|
||||
@@ -69,14 +61,14 @@ EXAMPLES = '''
|
||||
RETURN = '''
|
||||
'''
|
||||
|
||||
HAS_INFINISDK = True
|
||||
try:
|
||||
from infinisdk import InfiniBox, core
|
||||
from capacity import KiB, Capacity
|
||||
HAS_CAPACITY = True
|
||||
except ImportError:
|
||||
HAS_INFINISDK = False
|
||||
HAS_CAPACITY = False
|
||||
|
||||
from ansible.module_utils.infinibox import *
|
||||
from capacity import KiB, Capacity
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.infinibox import HAS_INFINISDK, api_wrapper, get_system, infinibox_argument_spec
|
||||
|
||||
|
||||
@api_wrapper
|
||||
@@ -145,6 +137,8 @@ def main():
|
||||
|
||||
if not HAS_INFINISDK:
|
||||
module.fail_json(msg='infinisdk is required for this module')
|
||||
if not HAS_CAPACITY:
|
||||
module.fail_json(msg='The capacity python library is required for this module')
|
||||
|
||||
if module.params['size']:
|
||||
try:
|
||||
@@ -170,7 +164,5 @@ def main():
|
||||
module.exit_json(changed=False)
|
||||
|
||||
|
||||
# Import Ansible Utilities
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
@@ -2,21 +2,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# (c) 2016, Gregory Shulov (gregory.shulov@gmail.com)
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
@@ -84,14 +74,8 @@ EXAMPLES = '''
|
||||
RETURN = '''
|
||||
'''
|
||||
|
||||
HAS_INFINISDK = True
|
||||
try:
|
||||
from infinisdk import InfiniBox, core
|
||||
except ImportError:
|
||||
HAS_INFINISDK = False
|
||||
|
||||
from ansible.module_utils.infinibox import *
|
||||
from collections import Counter
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.infinibox import HAS_INFINISDK, api_wrapper, get_system, infinibox_argument_spec
|
||||
|
||||
|
||||
@api_wrapper
|
||||
@@ -125,7 +109,6 @@ def create_host(module, system):
|
||||
@api_wrapper
|
||||
def update_host(module, host):
|
||||
changed = False
|
||||
name = module.params['name']
|
||||
module.exit_json(changed=changed)
|
||||
|
||||
|
||||
@@ -173,7 +156,5 @@ def main():
|
||||
create_host(module, system)
|
||||
|
||||
|
||||
# Import Ansible Utilities
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
@@ -2,21 +2,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# (c) 2016, Gregory Shulov (gregory.shulov@gmail.com)
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
@@ -64,6 +54,8 @@ notes:
|
||||
- Infinibox Admin level access is required for pool modifications
|
||||
extends_documentation_fragment:
|
||||
- infinibox
|
||||
requirements:
|
||||
- capacity
|
||||
'''
|
||||
|
||||
EXAMPLES = '''
|
||||
@@ -88,14 +80,14 @@ EXAMPLES = '''
|
||||
RETURN = '''
|
||||
'''
|
||||
|
||||
HAS_INFINISDK = True
|
||||
try:
|
||||
from infinisdk import InfiniBox, core
|
||||
from capacity import KiB, Capacity
|
||||
HAS_CAPACITY = True
|
||||
except ImportError:
|
||||
HAS_INFINISDK = False
|
||||
HAS_CAPACITY = False
|
||||
|
||||
from ansible.module_utils.infinibox import *
|
||||
from capacity import KiB, Capacity
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.infinibox import HAS_INFINISDK, api_wrapper, get_system, infinibox_argument_spec
|
||||
|
||||
|
||||
@api_wrapper
|
||||
@@ -187,6 +179,8 @@ def main():
|
||||
|
||||
if not HAS_INFINISDK:
|
||||
module.fail_json(msg='infinisdk is required for this module')
|
||||
if not HAS_CAPACITY:
|
||||
module.fail_json(msg='The capacity python library is required for this module')
|
||||
|
||||
if module.params['size']:
|
||||
try:
|
||||
@@ -214,7 +208,5 @@ def main():
|
||||
module.exit_json(changed=False)
|
||||
|
||||
|
||||
# Import Ansible Utilities
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
@@ -2,21 +2,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# (c) 2016, Gregory Shulov (gregory.shulov@gmail.com)
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
@@ -52,6 +42,8 @@ options:
|
||||
required: true
|
||||
extends_documentation_fragment:
|
||||
- infinibox
|
||||
requirements:
|
||||
- capacity
|
||||
'''
|
||||
|
||||
EXAMPLES = '''
|
||||
@@ -69,14 +61,14 @@ EXAMPLES = '''
|
||||
RETURN = '''
|
||||
'''
|
||||
|
||||
HAS_INFINISDK = True
|
||||
try:
|
||||
from infinisdk import InfiniBox, core
|
||||
from capacity import KiB, Capacity
|
||||
HAS_CAPACITY = True
|
||||
except ImportError:
|
||||
HAS_INFINISDK = False
|
||||
HAS_CAPACITY = False
|
||||
|
||||
from ansible.module_utils.infinibox import *
|
||||
from capacity import KiB, Capacity
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.infinibox import HAS_INFINISDK, api_wrapper, get_system, infinibox_argument_spec
|
||||
|
||||
|
||||
@api_wrapper
|
||||
@@ -170,7 +162,5 @@ def main():
|
||||
module.exit_json(changed=False)
|
||||
|
||||
|
||||
# Import Ansible Utilities
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2017, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
@@ -80,9 +70,10 @@ EXAMPLES = """
|
||||
RETURN = """
|
||||
|
||||
"""
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils._text import to_native
|
||||
import ansible.module_utils.netapp as netapp_utils
|
||||
|
||||
|
||||
@@ -140,13 +131,12 @@ class NetAppCDOTAggregate(object):
|
||||
try:
|
||||
result = self.server.invoke_successfully(aggr_get_iter,
|
||||
enable_tunneling=False)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
# Error 13040 denotes an aggregate not being found.
|
||||
e = get_exception()
|
||||
if str(e.code) == "13040":
|
||||
if to_native(e.code) == "13040":
|
||||
return False
|
||||
else:
|
||||
self.module.fail_json(exception=str(e))
|
||||
self.module.fail_json(msg=to_native(e), exception=traceback.format_exc())
|
||||
|
||||
if (result.get_child_by_name('num-records') and
|
||||
int(result.get_child_content('num-records')) >= 1):
|
||||
@@ -162,10 +152,9 @@ class NetAppCDOTAggregate(object):
|
||||
try:
|
||||
self.server.invoke_successfully(aggr_create,
|
||||
enable_tunneling=False)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg="Error provisioning aggregate %s." % self.name,
|
||||
exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg="Error provisioning aggregate %s: %s" % (self.name, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def delete_aggr(self):
|
||||
aggr_destroy = netapp_utils.zapi.NaElement.create_node_with_children(
|
||||
@@ -174,10 +163,9 @@ class NetAppCDOTAggregate(object):
|
||||
try:
|
||||
self.server.invoke_successfully(aggr_destroy,
|
||||
enable_tunneling=False)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg="Error removing aggregate %s." % self.name,
|
||||
exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg="Error removing aggregate %s: %s" % (self.name, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def rename_aggregate(self):
|
||||
aggr_rename = netapp_utils.zapi.NaElement.create_node_with_children(
|
||||
@@ -188,10 +176,9 @@ class NetAppCDOTAggregate(object):
|
||||
try:
|
||||
self.server.invoke_successfully(aggr_rename,
|
||||
enable_tunneling=False)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg="Error renaming aggregate %s." % self.name,
|
||||
exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg="Error renaming aggregate %s: %s" % (self.name, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def apply(self):
|
||||
changed = False
|
||||
@@ -237,5 +224,6 @@ def main():
|
||||
v = NetAppCDOTAggregate()
|
||||
v.apply()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2017, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
@@ -135,11 +125,13 @@ EXAMPLES = """
|
||||
RETURN = """
|
||||
|
||||
"""
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils._text import to_native
|
||||
import ansible.module_utils.netapp as netapp_utils
|
||||
|
||||
|
||||
HAS_NETAPP_LIB = netapp_utils.has_netapp_lib()
|
||||
|
||||
|
||||
@@ -184,10 +176,9 @@ class NetAppCDOTLicense(object):
|
||||
try:
|
||||
result = self.server.invoke_successfully(license_status,
|
||||
enable_tunneling=False)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg="Error checking license status",
|
||||
exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg="Error checking license status: %s" %
|
||||
to_native(e), exception=traceback.format_exc())
|
||||
|
||||
return_dictionary = {}
|
||||
license_v2_status = result.get_child_by_name('license-v2-status')
|
||||
@@ -216,10 +207,9 @@ class NetAppCDOTLicense(object):
|
||||
try:
|
||||
self.server.invoke_successfully(license_delete,
|
||||
enable_tunneling=False)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg="Error removing license",
|
||||
exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg="Error removing license %s" %
|
||||
to_native(e), exception=traceback.format_exc())
|
||||
|
||||
def remove_unused_licenses(self):
|
||||
"""
|
||||
@@ -229,10 +219,9 @@ class NetAppCDOTLicense(object):
|
||||
try:
|
||||
self.server.invoke_successfully(remove_unused,
|
||||
enable_tunneling=False)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg="Error removing unused licenses",
|
||||
exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg="Error removing unused licenses: %s" %
|
||||
to_native(e), exception=traceback.format_exc())
|
||||
|
||||
def remove_expired_licenses(self):
|
||||
"""
|
||||
@@ -242,10 +231,9 @@ class NetAppCDOTLicense(object):
|
||||
try:
|
||||
self.server.invoke_successfully(remove_expired,
|
||||
enable_tunneling=False)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg="Error removing expired licenses",
|
||||
exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg="Error removing expired licenses: %s" %
|
||||
to_native(e), exception=traceback.format_exc())
|
||||
|
||||
def update_licenses(self):
|
||||
"""
|
||||
@@ -281,10 +269,9 @@ class NetAppCDOTLicense(object):
|
||||
try:
|
||||
self.server.invoke_successfully(license_add,
|
||||
enable_tunneling=False)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg="Error adding licenses",
|
||||
exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg="Error adding licenses: %s" %
|
||||
to_native(e), exception=traceback.format_exc())
|
||||
|
||||
def apply(self):
|
||||
changed = False
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2017, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
@@ -119,9 +109,10 @@ EXAMPLES = """
|
||||
RETURN = """
|
||||
|
||||
"""
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils._text import to_native
|
||||
import ansible.module_utils.netapp as netapp_utils
|
||||
|
||||
HAS_NETAPP_LIB = netapp_utils.has_netapp_lib()
|
||||
@@ -273,10 +264,9 @@ class NetAppCDOTLUN(object):
|
||||
|
||||
try:
|
||||
self.server.invoke_successfully(lun_create, enable_tunneling=True)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg="Error provisioning lun %s of size %s" % (self.name, self.size),
|
||||
exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg="Error provisioning lun %s of size %s: %s" % (self.name, self.size, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def delete_lun(self):
|
||||
"""
|
||||
@@ -292,10 +282,9 @@ class NetAppCDOTLUN(object):
|
||||
|
||||
try:
|
||||
self.server.invoke_successfully(lun_delete, enable_tunneling=True)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg="Error deleting lun %s" % path,
|
||||
exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg="Error deleting lun %s: %s" % (path, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def resize_lun(self):
|
||||
"""
|
||||
@@ -312,9 +301,8 @@ class NetAppCDOTLUN(object):
|
||||
'force': str(self.force_resize)})
|
||||
try:
|
||||
self.server.invoke_successfully(lun_resize, enable_tunneling=True)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
e = get_exception()
|
||||
if str(e.code) == "9042":
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
if to_native(e.code) == "9042":
|
||||
# Error 9042 denotes the new LUN size being the same as the
|
||||
# old LUN size. This happens when there's barely any difference
|
||||
# in the two sizes. For example, from 8388608 bytes to
|
||||
@@ -323,9 +311,8 @@ class NetAppCDOTLUN(object):
|
||||
# larger unit (MB/GB/TB).
|
||||
return False
|
||||
else:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg="Error resizing lun %s" % path,
|
||||
exception=str(err))
|
||||
self.module.fail_json(msg="Error resizing lun %s: %s" % (path, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
return True
|
||||
|
||||
@@ -381,5 +368,6 @@ def main():
|
||||
v = NetAppCDOTLUN()
|
||||
v.apply()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2017, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
@@ -84,11 +74,13 @@ EXAMPLES = """
|
||||
RETURN = """
|
||||
|
||||
"""
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils._text import to_native
|
||||
import ansible.module_utils.netapp as netapp_utils
|
||||
|
||||
|
||||
HAS_NETAPP_LIB = netapp_utils.has_netapp_lib()
|
||||
|
||||
|
||||
@@ -161,10 +153,9 @@ class NetAppCDOTQTree(object):
|
||||
try:
|
||||
self.server.invoke_successfully(qtree_create,
|
||||
enable_tunneling=True)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg="Error provisioning qtree %s." % self.name,
|
||||
exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg="Error provisioning qtree %s: %s" % (self.name, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def delete_qtree(self):
|
||||
path = '/vol/%s/%s' % (self.flexvol_name, self.name)
|
||||
@@ -174,10 +165,9 @@ class NetAppCDOTQTree(object):
|
||||
try:
|
||||
self.server.invoke_successfully(qtree_delete,
|
||||
enable_tunneling=True)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg="Error deleting qtree %s." % path,
|
||||
exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg="Error deleting qtree %s: %s" % (path, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def rename_qtree(self):
|
||||
path = '/vol/%s/%s' % (self.flexvol_name, self.name)
|
||||
@@ -189,10 +179,9 @@ class NetAppCDOTQTree(object):
|
||||
try:
|
||||
self.server.invoke_successfully(qtree_rename,
|
||||
enable_tunneling=True)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg="Error renaming qtree %s." % self.name,
|
||||
exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg="Error renaming qtree %s: %s" % (self.name, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def apply(self):
|
||||
changed = False
|
||||
@@ -240,5 +229,6 @@ def main():
|
||||
v = NetAppCDOTQTree()
|
||||
v.apply()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2017, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
@@ -88,11 +78,13 @@ EXAMPLES = """
|
||||
RETURN = """
|
||||
|
||||
"""
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils._text import to_native
|
||||
import ansible.module_utils.netapp as netapp_utils
|
||||
|
||||
|
||||
HAS_NETAPP_LIB = netapp_utils.has_netapp_lib()
|
||||
|
||||
|
||||
@@ -182,11 +174,10 @@ class NetAppCDOTSVM(object):
|
||||
try:
|
||||
self.server.invoke_successfully(vserver_create,
|
||||
enable_tunneling=False)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error provisioning SVM %s with root volume %s on aggregate %s'
|
||||
% (self.name, self.root_volume, self.root_volume_aggregate),
|
||||
exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg='Error provisioning SVM %s with root volume %s on aggregate %s: %s'
|
||||
% (self.name, self.root_volume, self.root_volume_aggregate, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def delete_vserver(self):
|
||||
vserver_delete = netapp_utils.zapi.NaElement.create_node_with_children(
|
||||
@@ -195,11 +186,10 @@ class NetAppCDOTSVM(object):
|
||||
try:
|
||||
self.server.invoke_successfully(vserver_delete,
|
||||
enable_tunneling=False)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error deleting SVM %s with root volume %s on aggregate %s'
|
||||
% (self.name, self.root_volume, self.root_volume_aggregate),
|
||||
exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg='Error deleting SVM %s with root volume %s on aggregate %s: %s'
|
||||
% (self.name, self.root_volume, self.root_volume_aggregate, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def rename_vserver(self):
|
||||
vserver_rename = netapp_utils.zapi.NaElement.create_node_with_children(
|
||||
@@ -209,9 +199,9 @@ class NetAppCDOTSVM(object):
|
||||
try:
|
||||
self.server.invoke_successfully(vserver_rename,
|
||||
enable_tunneling=False)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error renaming SVM %s' % self.name, exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg='Error renaming SVM %s: %s' % (self.name, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def apply(self):
|
||||
changed = False
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2017, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
@@ -110,11 +100,13 @@ EXAMPLES = """
|
||||
RETURN = """
|
||||
|
||||
"""
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils._text import to_native
|
||||
import ansible.module_utils.netapp as netapp_utils
|
||||
|
||||
|
||||
HAS_NETAPP_LIB = netapp_utils.has_netapp_lib()
|
||||
|
||||
|
||||
@@ -199,13 +191,13 @@ class NetAppCDOTUser(object):
|
||||
else:
|
||||
return False
|
||||
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
e = get_exception()
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
# Error 16034 denotes a user not being found.
|
||||
if str(e.code) == "16034":
|
||||
if to_native(e.code) == "16034":
|
||||
return False
|
||||
else:
|
||||
self.module.fail_json(msg='Error getting user %s' % self.name, exception=str(e))
|
||||
self.module.fail_json(msg='Error getting user %s: %s' % (self.name, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def create_user(self):
|
||||
user_create = netapp_utils.zapi.NaElement.create_node_with_children(
|
||||
@@ -221,9 +213,9 @@ class NetAppCDOTUser(object):
|
||||
try:
|
||||
self.server.invoke_successfully(user_create,
|
||||
enable_tunneling=False)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error creating user %s' % self.name, exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg='Error creating user %s: %s' % (self.name, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def delete_user(self):
|
||||
user_delete = netapp_utils.zapi.NaElement.create_node_with_children(
|
||||
@@ -236,9 +228,9 @@ class NetAppCDOTUser(object):
|
||||
try:
|
||||
self.server.invoke_successfully(user_delete,
|
||||
enable_tunneling=False)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error removing user %s' % self.name, exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg='Error removing user %s: %s' % (self.name, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def change_password(self):
|
||||
"""
|
||||
@@ -257,13 +249,12 @@ class NetAppCDOTUser(object):
|
||||
try:
|
||||
self.server.invoke_successfully(modify_password,
|
||||
enable_tunneling=True)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
e = get_exception()
|
||||
if str(e.code) == '13114':
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
if to_native(e.code) == '13114':
|
||||
return False
|
||||
else:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error setting password for user %s' % self.name, exception=str(err))
|
||||
self.module.fail_json(msg='Error setting password for user %s: %s' % (self.name, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
self.server.set_vserver(None)
|
||||
return True
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2017, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
@@ -84,11 +74,13 @@ EXAMPLES = """
|
||||
RETURN = """
|
||||
|
||||
"""
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils._text import to_native
|
||||
import ansible.module_utils.netapp as netapp_utils
|
||||
|
||||
|
||||
HAS_NETAPP_LIB = netapp_utils.has_netapp_lib()
|
||||
|
||||
|
||||
@@ -153,13 +145,13 @@ class NetAppCDOTUserRole(object):
|
||||
try:
|
||||
result = self.server.invoke_successfully(
|
||||
security_login_role_get_iter, enable_tunneling=False)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
e = get_exception()
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
# Error 16031 denotes a role not being found.
|
||||
if str(e.code) == "16031":
|
||||
if to_native(e.code) == "16031":
|
||||
return False
|
||||
else:
|
||||
self.module.fail_json(msg='Error getting role %s' % self.name, exception=str(e))
|
||||
self.module.fail_json(msg='Error getting role %s: %s' % (self.name, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
if (result.get_child_by_name('num-records') and
|
||||
int(result.get_child_content('num-records')) >= 1):
|
||||
@@ -179,9 +171,9 @@ class NetAppCDOTUserRole(object):
|
||||
try:
|
||||
self.server.invoke_successfully(role_create,
|
||||
enable_tunneling=False)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error creating role %s' % self.name, exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg='Error creating role %s: %s' % (self.name, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def delete_role(self):
|
||||
role_delete = netapp_utils.zapi.NaElement.create_node_with_children(
|
||||
@@ -193,9 +185,9 @@ class NetAppCDOTUserRole(object):
|
||||
try:
|
||||
self.server.invoke_successfully(role_delete,
|
||||
enable_tunneling=False)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error removing role %s' % self.name, exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg='Error removing role %s: %s' % (self.name, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def apply(self):
|
||||
changed = False
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2017, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
@@ -114,11 +104,13 @@ RETURN = """
|
||||
|
||||
|
||||
"""
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils._text import to_native
|
||||
import ansible.module_utils.netapp as netapp_utils
|
||||
|
||||
|
||||
HAS_NETAPP_LIB = netapp_utils.has_netapp_lib()
|
||||
|
||||
|
||||
@@ -243,10 +235,9 @@ class NetAppCDOTVolume(object):
|
||||
try:
|
||||
self.server.invoke_successfully(volume_create,
|
||||
enable_tunneling=True)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error provisioning volume %s of size %s' % (self.name, self.size),
|
||||
exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg='Error provisioning volume %s of size %s: %s' % (self.name, self.size, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def delete_volume(self):
|
||||
if self.is_infinite:
|
||||
@@ -260,10 +251,9 @@ class NetAppCDOTVolume(object):
|
||||
try:
|
||||
self.server.invoke_successfully(volume_delete,
|
||||
enable_tunneling=True)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error deleting volume %s' % self.name,
|
||||
exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg='Error deleting volume %s: %s' % (self.name, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def rename_volume(self):
|
||||
"""
|
||||
@@ -284,10 +274,9 @@ class NetAppCDOTVolume(object):
|
||||
try:
|
||||
self.server.invoke_successfully(volume_rename,
|
||||
enable_tunneling=True)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error renaming volume %s' % self.name,
|
||||
exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg='Error renaming volume %s: %s' % (self.name, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def resize_volume(self):
|
||||
"""
|
||||
@@ -308,10 +297,9 @@ class NetAppCDOTVolume(object):
|
||||
try:
|
||||
self.server.invoke_successfully(volume_resize,
|
||||
enable_tunneling=True)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error re-sizing volume %s' % self.name,
|
||||
exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg='Error re-sizing volume %s: %s' % (self.name, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def change_volume_state(self):
|
||||
"""
|
||||
@@ -346,10 +334,10 @@ class NetAppCDOTVolume(object):
|
||||
try:
|
||||
self.server.invoke_successfully(volume_change_state,
|
||||
enable_tunneling=True)
|
||||
except netapp_utils.zapi.NaApiError:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error changing the state of volume %s to %s' % (self.name, state_requested),
|
||||
exception=str(err))
|
||||
except netapp_utils.zapi.NaApiError as e:
|
||||
self.module.fail_json(msg='Error changing the state of volume %s to %s: %s' %
|
||||
(self.name, state_requested, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def apply(self):
|
||||
changed = False
|
||||
|
||||
@@ -1,21 +1,11 @@
|
||||
#!/usr/bin/python
|
||||
# (c) 2016, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
@@ -122,15 +112,19 @@ msg:
|
||||
""" # NOQA
|
||||
|
||||
import json
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule, get_exception
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils._text import to_native
|
||||
from ansible.module_utils.netapp import request, eseries_host_argument_spec
|
||||
|
||||
|
||||
HEADERS = {
|
||||
"Content-Type": "application/json",
|
||||
"Accept": "application/json",
|
||||
}
|
||||
|
||||
|
||||
def has_match(module, ssid, api_url, api_pwd, api_usr, body):
|
||||
compare_keys = ['syncIntervalMinutes', 'syncWarnThresholdMinutes',
|
||||
'recoveryWarnThresholdMinutes', 'repoUtilizationWarnThreshold']
|
||||
@@ -145,9 +139,8 @@ def has_match(module, ssid, api_url, api_pwd, api_usr, body):
|
||||
url = api_url + endpoint
|
||||
try:
|
||||
rc, data = request(url, url_username=api_usr, url_password=api_pwd, headers=HEADERS)
|
||||
except Exception:
|
||||
error = get_exception()
|
||||
module.exit_json(exception="Error finding a match. Message: %s" % str(error))
|
||||
except Exception as e:
|
||||
module.exit_json(msg="Error finding a match. Message: %s" % to_native(e), exception=traceback.format_exc())
|
||||
|
||||
for async_group in data:
|
||||
if async_group['label'] == desired_name:
|
||||
@@ -174,9 +167,9 @@ def create_async(module, ssid, api_url, api_pwd, api_usr, body):
|
||||
try:
|
||||
rc, data = request(url, data=post_data, method='POST', url_username=api_usr, url_password=api_pwd,
|
||||
headers=HEADERS)
|
||||
except Exception:
|
||||
error = get_exception()
|
||||
module.exit_json(exception="Exception while creating aysnc mirror group. Message: %s" % str(error))
|
||||
except Exception as e:
|
||||
module.exit_json(msg="Exception while creating aysnc mirror group. Message: %s" % to_native(e),
|
||||
exception=traceback.format_exc())
|
||||
return data
|
||||
|
||||
|
||||
@@ -195,9 +188,9 @@ def update_async(module, ssid, api_url, pwd, user, body, new_name, async_id):
|
||||
try:
|
||||
rc, data = request(url, data=post_data, method='POST', headers=HEADERS,
|
||||
url_username=user, url_password=pwd)
|
||||
except Exception:
|
||||
error = get_exception()
|
||||
module.exit_json(exception="Exception while updating async mirror group. Message: %s" % str(error))
|
||||
except Exception as e:
|
||||
module.exit_json(msg="Exception while updating async mirror group. Message: %s" % to_native(e),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
return data
|
||||
|
||||
@@ -208,9 +201,9 @@ def remove_amg(module, ssid, api_url, pwd, user, async_id):
|
||||
try:
|
||||
rc, data = request(url, method='DELETE', url_username=user, url_password=pwd,
|
||||
headers=HEADERS)
|
||||
except Exception:
|
||||
error = get_exception()
|
||||
module.exit_json(exception="Exception while removing async mirror group. Message: %s" % str(error))
|
||||
except Exception as e:
|
||||
module.exit_json(msg="Exception while removing async mirror group. Message: %s" % to_native(e),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2016, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
@@ -90,13 +80,14 @@ msg:
|
||||
sample: "No Async Mirror Group with the name."
|
||||
"""
|
||||
import json
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.api import basic_auth_argument_spec
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils.urls import open_url
|
||||
from ansible.module_utils.six.moves.urllib.error import HTTPError
|
||||
from ansible.module_utils._text import to_native
|
||||
from ansible.module_utils.urls import open_url
|
||||
|
||||
|
||||
HEADERS = {
|
||||
"Content-Type": "application/json",
|
||||
@@ -112,9 +103,8 @@ def request(url, data=None, headers=None, method='GET', use_proxy=True,
|
||||
force=force, last_mod_time=last_mod_time, timeout=timeout, validate_certs=validate_certs,
|
||||
url_username=url_username, url_password=url_password, http_agent=http_agent,
|
||||
force_basic_auth=force_basic_auth)
|
||||
except HTTPError:
|
||||
err = get_exception()
|
||||
r = err.fp
|
||||
except HTTPError as e:
|
||||
r = e.fp
|
||||
|
||||
try:
|
||||
raw_data = r.read()
|
||||
@@ -167,21 +157,21 @@ def update_amg(module, ssid, api_url, api_usr, api_pwd, body, amg_id):
|
||||
try:
|
||||
request(url, data=post_data, method='POST', url_username=api_usr,
|
||||
url_password=api_pwd, headers=HEADERS)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as e:
|
||||
module.fail_json(
|
||||
msg="Failed to change role of AMG. Id [%s]. AMG Id [%s]. Error [%s]" % (ssid, amg_id, str(err)))
|
||||
msg="Failed to change role of AMG. Id [%s]. AMG Id [%s]. Error [%s]" % (ssid, amg_id, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
status_endpoint = 'storage-systems/%s/async-mirrors/%s' % (ssid, amg_id)
|
||||
status_url = api_url + status_endpoint
|
||||
try:
|
||||
rc, status = request(status_url, method='GET', url_username=api_usr,
|
||||
url_password=api_pwd, headers=HEADERS)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as e:
|
||||
module.fail_json(
|
||||
msg="Failed to check status of AMG after role reversal. " +
|
||||
"Id [%s]. AMG Id [%s]. Error [%s]" % (ssid, amg_id, str(err)))
|
||||
msg="Failed to check status of AMG after role reversal. "
|
||||
"Id [%s]. AMG Id [%s]. Error [%s]" % (ssid, amg_id, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
# Here we wait for the role reversal to complete
|
||||
if 'roleChangeProgress' in status:
|
||||
@@ -189,11 +179,11 @@ def update_amg(module, ssid, api_url, api_usr, api_pwd, body, amg_id):
|
||||
try:
|
||||
rc, status = request(status_url, method='GET',
|
||||
url_username=api_usr, url_password=api_pwd, headers=HEADERS)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as e:
|
||||
module.fail_json(
|
||||
msg="Failed to check status of AMG after role reversal. " +
|
||||
"Id [%s]. AMG Id [%s]. Error [%s]" % (ssid, amg_id, str(err)))
|
||||
msg="Failed to check status of AMG after role reversal. "
|
||||
"Id [%s]. AMG Id [%s]. Error [%s]" % (ssid, amg_id, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
return status
|
||||
|
||||
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2016, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
@@ -133,10 +123,8 @@ import json
|
||||
|
||||
from ansible.module_utils.api import basic_auth_argument_spec
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils.urls import open_url
|
||||
from ansible.module_utils.six.moves.urllib.error import HTTPError
|
||||
from ansible.module_utils.urls import open_url
|
||||
|
||||
|
||||
def request(url, data=None, headers=None, method='GET', use_proxy=True,
|
||||
@@ -147,9 +135,8 @@ def request(url, data=None, headers=None, method='GET', use_proxy=True,
|
||||
force=force, last_mod_time=last_mod_time, timeout=timeout, validate_certs=validate_certs,
|
||||
url_username=url_username, url_password=url_password, http_agent=http_agent,
|
||||
force_basic_auth=force_basic_auth)
|
||||
except HTTPError:
|
||||
err = get_exception()
|
||||
r = err.fp
|
||||
except HTTPError as e:
|
||||
r = e.fp
|
||||
|
||||
try:
|
||||
raw_data = r.read()
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2016, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
@@ -96,13 +86,13 @@ msg:
|
||||
sample: "Password Updated Successfully"
|
||||
'''
|
||||
import json
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.api import basic_auth_argument_spec
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils.urls import open_url
|
||||
from ansible.module_utils.six.moves.urllib.error import HTTPError
|
||||
from ansible.module_utils._text import to_native
|
||||
from ansible.module_utils.urls import open_url
|
||||
|
||||
|
||||
HEADERS = {
|
||||
@@ -119,9 +109,8 @@ def request(url, data=None, headers=None, method='GET', use_proxy=True,
|
||||
force=force, last_mod_time=last_mod_time, timeout=timeout, validate_certs=validate_certs,
|
||||
url_username=url_username, url_password=url_password, http_agent=http_agent,
|
||||
force_basic_auth=force_basic_auth)
|
||||
except HTTPError:
|
||||
err = get_exception()
|
||||
r = err.fp
|
||||
except HTTPError as e:
|
||||
r = e.fp
|
||||
|
||||
try:
|
||||
raw_data = r.read()
|
||||
@@ -173,10 +162,9 @@ def get_pwd_status(module, ssid, api_url, user, pwd):
|
||||
try:
|
||||
rc, data = request(url, headers=HEADERS, url_username=user, url_password=pwd)
|
||||
return data['readOnlyPasswordSet'], data['adminPasswordSet']
|
||||
except HTTPError:
|
||||
error = get_exception()
|
||||
except HTTPError as e:
|
||||
module.fail_json(msg="There was an issue with connecting, please check that your "
|
||||
"endpoint is properly defined and your credentials are correct: %s" % str(error))
|
||||
"endpoint is properly defined and your credentials are correct: %s" % to_native(e))
|
||||
|
||||
|
||||
def update_storage_system_pwd(module, ssid, pwd, api_url, api_usr, api_pwd):
|
||||
@@ -186,9 +174,8 @@ def update_storage_system_pwd(module, ssid, pwd, api_url, api_usr, api_pwd):
|
||||
try:
|
||||
rc, data = request(url, data=post_body, method='POST', headers=HEADERS, url_username=api_usr,
|
||||
url_password=api_pwd)
|
||||
except:
|
||||
err = get_exception()
|
||||
module.fail_json(msg="Failed to update system password. Id [%s]. Error [%s]" % (ssid, str(err)))
|
||||
except Exception as e:
|
||||
module.fail_json(msg="Failed to update system password. Id [%s]. Error [%s]" % (ssid, to_native(e)))
|
||||
return data
|
||||
|
||||
|
||||
@@ -205,15 +192,14 @@ def set_password(module, ssid, api_url, user, pwd, current_password=None, new_pa
|
||||
try:
|
||||
rc, data = request(url, method='POST', data=post_body, headers=HEADERS, url_username=user, url_password=pwd,
|
||||
ignore_errors=True)
|
||||
except:
|
||||
err = get_exception()
|
||||
module.fail_json(msg="Failed to set system password. Id [%s]. Error [%s]" % (ssid, str(err)))
|
||||
except Exception as e:
|
||||
module.fail_json(msg="Failed to set system password. Id [%s]. Error [%s]" % (ssid, to_native(e)), exception=traceback.format_exc())
|
||||
|
||||
if rc == 422:
|
||||
post_body = json.dumps(dict(currentAdminPassword='', adminPassword=set_admin, newPassword=new_password))
|
||||
try:
|
||||
rc, data = request(url, method='POST', data=post_body, headers=HEADERS, url_username=user, url_password=pwd)
|
||||
except Exception:
|
||||
except:
|
||||
module.fail_json(msg="Wrong or no admin password supplied. Please update your playbook and try again")
|
||||
|
||||
update_data = update_storage_system_pwd(module, ssid, new_password, api_url, user, pwd)
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2016, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
@@ -75,7 +65,8 @@ msg:
|
||||
import json
|
||||
|
||||
from ansible.module_utils.api import basic_auth_argument_spec
|
||||
from ansible.module_utils.basic import AnsibleModule, get_exception
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils._text import to_native
|
||||
from ansible.module_utils.urls import open_url
|
||||
from ansible.module_utils.six.moves.urllib.error import HTTPError
|
||||
|
||||
@@ -88,9 +79,8 @@ def request(url, data=None, headers=None, method='GET', use_proxy=True,
|
||||
force=force, last_mod_time=last_mod_time, timeout=timeout, validate_certs=validate_certs,
|
||||
url_username=url_username, url_password=url_password, http_agent=http_agent,
|
||||
force_basic_auth=force_basic_auth)
|
||||
except HTTPError:
|
||||
err = get_exception()
|
||||
r = err.fp
|
||||
except HTTPError as e:
|
||||
r = e.fp
|
||||
|
||||
try:
|
||||
raw_data = r.read()
|
||||
@@ -141,10 +131,9 @@ def main():
|
||||
(rc, resp) = request(api_url + "/storage-systems/%s/graph" % ssid,
|
||||
headers=dict(Accept="application/json"),
|
||||
url_username=api_usr, url_password=api_pwd, validate_certs=validate_certs)
|
||||
except:
|
||||
error = get_exception()
|
||||
except Exception as e:
|
||||
module.fail_json(
|
||||
msg="Failed to obtain facts from storage array with id [%s]. Error [%s]" % (ssid, str(error)))
|
||||
msg="Failed to obtain facts from storage array with id [%s]. Error [%s]" % (ssid, to_native(e)))
|
||||
|
||||
facts['snapshot_images'] = [
|
||||
dict(
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2016, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2016, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
|
||||
@@ -2,23 +2,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# (c) 2016, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
@@ -139,10 +128,9 @@ HEADERS = {
|
||||
import json
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
|
||||
from ansible.module_utils.urls import open_url
|
||||
from ansible.module_utils.six.moves.urllib.error import HTTPError
|
||||
from ansible.module_utils._text import to_native
|
||||
from ansible.module_utils.urls import open_url
|
||||
|
||||
|
||||
def request(url, data=None, headers=None, method='GET', use_proxy=True,
|
||||
@@ -153,9 +141,8 @@ def request(url, data=None, headers=None, method='GET', use_proxy=True,
|
||||
force=force, last_mod_time=last_mod_time, timeout=timeout, validate_certs=validate_certs,
|
||||
url_username=url_username, url_password=url_password, http_agent=http_agent,
|
||||
force_basic_auth=force_basic_auth)
|
||||
except HTTPError:
|
||||
err = get_exception()
|
||||
r = err.fp
|
||||
except HTTPError as e:
|
||||
r = e.fp
|
||||
|
||||
try:
|
||||
raw_data = r.read()
|
||||
@@ -194,9 +181,8 @@ def get_hostgroups(module, ssid, api_url, user, pwd):
|
||||
try:
|
||||
rc, data = request(url, headers=HEADERS, url_username=user, url_password=pwd)
|
||||
return rc, data
|
||||
except HTTPError:
|
||||
err = get_exception()
|
||||
module.fail_json(msg="Failed to get host groups. Id [%s]. Error [%s]." % (ssid, str(err)))
|
||||
except HTTPError as e:
|
||||
module.fail_json(msg="Failed to get host groups. Id [%s]. Error [%s]." % (ssid, to_native(e)))
|
||||
|
||||
|
||||
def get_hostref(module, ssid, name, api_url, user, pwd):
|
||||
@@ -204,9 +190,8 @@ def get_hostref(module, ssid, name, api_url, user, pwd):
|
||||
url = api_url + all_hosts
|
||||
try:
|
||||
rc, data = request(url, method='GET', headers=HEADERS, url_username=user, url_password=pwd)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
module.fail_json(msg="Failed to get hosts. Id [%s]. Error [%s]." % (ssid, str(err)))
|
||||
except Exception as e:
|
||||
module.fail_json(msg="Failed to get hosts. Id [%s]. Error [%s]." % (ssid, to_native(e)))
|
||||
|
||||
for host in data:
|
||||
if host['name'] == name:
|
||||
@@ -230,9 +215,8 @@ def create_hostgroup(module, ssid, name, api_url, user, pwd, hosts=None):
|
||||
post_data = json.dumps(dict(name=name, hosts=hostrefs))
|
||||
try:
|
||||
rc, data = request(url, method='POST', data=post_data, headers=HEADERS, url_username=user, url_password=pwd)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
module.fail_json(msg="Failed to create host group. Id [%s]. Error [%s]." % (ssid, str(err)))
|
||||
except Exception as e:
|
||||
module.fail_json(msg="Failed to create host group. Id [%s]. Error [%s]." % (ssid, to_native(e)))
|
||||
|
||||
return rc, data
|
||||
|
||||
@@ -255,10 +239,9 @@ def update_hostgroup(module, ssid, name, api_url, user, pwd, hosts=None, new_nam
|
||||
|
||||
try:
|
||||
rc, data = request(url, method='POST', data=post_data, headers=HEADERS, url_username=user, url_password=pwd)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
except Exception as e:
|
||||
module.fail_json(msg="Failed to update host group. Group [%s]. Id [%s]. Error [%s]." % (gid, ssid,
|
||||
str(err)))
|
||||
to_native(e)))
|
||||
|
||||
return rc, data
|
||||
|
||||
@@ -269,9 +252,8 @@ def delete_hostgroup(module, ssid, group_id, api_url, user, pwd):
|
||||
# TODO: Loop through hosts, do mapping to href, make new list to pass to data
|
||||
try:
|
||||
rc, data = request(url, method='DELETE', headers=HEADERS, url_username=user, url_password=pwd)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
module.fail_json(msg="Failed to delete host group. Group [%s]. Id [%s]. Error [%s]." % (group_id, ssid, str(err)))
|
||||
except Exception as e:
|
||||
module.fail_json(msg="Failed to delete host group. Group [%s]. Id [%s]. Error [%s]." % (group_id, ssid, to_native(e)))
|
||||
|
||||
return rc, data
|
||||
|
||||
@@ -294,24 +276,22 @@ def get_hosts_in_group(module, ssid, group_name, api_url, user, pwd):
|
||||
g_url = api_url + all_groups
|
||||
try:
|
||||
g_rc, g_data = request(g_url, method='GET', headers=HEADERS, url_username=user, url_password=pwd)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
except Exception as e:
|
||||
module.fail_json(
|
||||
msg="Failed in first step getting hosts from group. Group: [%s]. Id [%s]. Error [%s]." % (group_name,
|
||||
ssid,
|
||||
str(err)))
|
||||
to_native(e)))
|
||||
|
||||
all_hosts = 'storage-systems/%s/hosts' % ssid
|
||||
h_url = api_url + all_hosts
|
||||
try:
|
||||
h_rc, h_data = request(h_url, method='GET', headers=HEADERS, url_username=user, url_password=pwd)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
except Exception as e:
|
||||
module.fail_json(
|
||||
msg="Failed in second step getting hosts from group. Group: [%s]. Id [%s]. Error [%s]." % (
|
||||
group_name,
|
||||
ssid,
|
||||
str(err)))
|
||||
to_native(e)))
|
||||
|
||||
hosts_in_group = []
|
||||
|
||||
@@ -371,9 +351,8 @@ def main():
|
||||
if not exists:
|
||||
try:
|
||||
rc, data = create_hostgroup(module, ssid, name, api_url, user, pwd, hosts)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
module.fail_json(msg="Failed to create a host group. Id [%s]. Error [%s]." % (ssid, str(err)))
|
||||
except Exception as e:
|
||||
module.fail_json(msg="Failed to create a host group. Id [%s]. Error [%s]." % (ssid, to_native(e)))
|
||||
|
||||
hosts = get_hosts_in_group(module, ssid, name, api_url, user, pwd)
|
||||
module.exit_json(changed=True, hosts=hosts, **data)
|
||||
@@ -389,10 +368,9 @@ def main():
|
||||
if set(current_hosts) != set(hosts):
|
||||
try:
|
||||
rc, data = update_hostgroup(module, ssid, name, api_url, user, pwd, hosts, new_name)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
except Exception as e:
|
||||
module.fail_json(
|
||||
msg="Failed to update host group. Group: [%s]. Id [%s]. Error [%s]." % (name, ssid, str(err)))
|
||||
msg="Failed to update host group. Group: [%s]. Id [%s]. Error [%s]." % (name, ssid, to_native(e)))
|
||||
module.exit_json(changed=True, hosts=hosts, **data)
|
||||
else:
|
||||
for group in group_data:
|
||||
@@ -404,10 +382,9 @@ def main():
|
||||
hg_id = get_hostgroup_id(module, ssid, name, api_url, user, pwd)
|
||||
try:
|
||||
rc, data = delete_hostgroup(module, ssid, hg_id, api_url, user, pwd)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
except Exception as e:
|
||||
module.fail_json(
|
||||
msg="Failed to delete host group. Group: [%s]. Id [%s]. Error [%s]." % (name, ssid, str(err)))
|
||||
msg="Failed to delete host group. Group: [%s]. Id [%s]. Error [%s]." % (name, ssid, to_native(e)))
|
||||
|
||||
module.exit_json(changed=True, msg="Host Group deleted")
|
||||
else:
|
||||
|
||||
@@ -1,22 +1,11 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2016, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2016, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2016, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2016, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2016, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
|
||||
@@ -1,21 +1,11 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2016, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
@@ -409,7 +399,7 @@ class NetAppESeriesStoragePool(object):
|
||||
if raid_level in [None, 'raid0']:
|
||||
return disk_size_bytes * disk_count
|
||||
if raid_level == 'raid1':
|
||||
return (disk_size_bytes * disk_count) / 2
|
||||
return (disk_size_bytes * disk_count) // 2
|
||||
if raid_level in ['raid3', 'raid5']:
|
||||
return (disk_size_bytes * disk_count) - disk_size_bytes
|
||||
if raid_level in ['raid6', 'raidDiskPool']:
|
||||
|
||||
@@ -1,22 +1,11 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2016, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2016, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2017, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
@@ -115,11 +105,13 @@ EXAMPLES = """
|
||||
RETURN = """
|
||||
|
||||
"""
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils._text import to_native
|
||||
import ansible.module_utils.netapp as netapp_utils
|
||||
|
||||
|
||||
HAS_SF_SDK = netapp_utils.has_sf_sdk()
|
||||
|
||||
|
||||
@@ -188,17 +180,17 @@ class SolidFireAccount(object):
|
||||
initiator_secret=self.initiator_secret,
|
||||
target_secret=self.target_secret,
|
||||
attributes=self.attributes)
|
||||
except:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error creating account %s' % self.name, exception=str(err))
|
||||
except Exception as e:
|
||||
self.module.fail_json(msg='Error creating account %s: %s)' % (self.name, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def delete_account(self):
|
||||
try:
|
||||
self.sfe.remove_account(account_id=self.account_id)
|
||||
|
||||
except:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error deleting account %s' % self.account_id, exception=str(err))
|
||||
except Exception as e:
|
||||
self.module.fail_json(msg='Error deleting account %s: %s' % (self.account_id, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def update_account(self):
|
||||
try:
|
||||
@@ -209,9 +201,9 @@ class SolidFireAccount(object):
|
||||
target_secret=self.target_secret,
|
||||
attributes=self.attributes)
|
||||
|
||||
except:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error updating account %s' % self.account_id, exception=str(err))
|
||||
except Exception as e:
|
||||
self.module.fail_json(msg='Error updating account %s: %s' % (self.account_id, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def apply(self):
|
||||
changed = False
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2017, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
@@ -72,11 +62,13 @@ EXAMPLES = """
|
||||
RETURN = """
|
||||
|
||||
"""
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils._text import to_native
|
||||
import ansible.module_utils.netapp as netapp_utils
|
||||
|
||||
|
||||
HAS_SF_SDK = netapp_utils.has_sf_sdk()
|
||||
|
||||
|
||||
@@ -120,9 +112,8 @@ class SolidFireConnection(object):
|
||||
# Todo - Log details about the test
|
||||
return result
|
||||
|
||||
except:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error checking connection to MVIP', exception=str(err))
|
||||
except Exception as e:
|
||||
self.module.fail_json(msg='Error checking connection to MVIP: %s' % to_native(e), exception=traceback.format_exc())
|
||||
return False
|
||||
|
||||
def check_svip_connection(self):
|
||||
@@ -138,9 +129,8 @@ class SolidFireConnection(object):
|
||||
# Todo - Log details about the test
|
||||
return result
|
||||
|
||||
except:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error checking connection to SVIP', exception=str(err))
|
||||
except Exception as e:
|
||||
self.module.fail_json(msg='Error checking connection to SVIP: %s' % to_native(e), exception=traceback.format_exc())
|
||||
return False
|
||||
|
||||
def check(self):
|
||||
|
||||
@@ -1,21 +1,11 @@
|
||||
#!/usr/bin/python
|
||||
# (c) 2017, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
@@ -141,13 +131,16 @@ schedule_id:
|
||||
returned: success
|
||||
type: string
|
||||
"""
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils._text import to_native
|
||||
import ansible.module_utils.netapp as netapp_utils
|
||||
|
||||
|
||||
HAS_SF_SDK = netapp_utils.has_sf_sdk()
|
||||
|
||||
|
||||
class SolidFireSnapShotSchedule(object):
|
||||
|
||||
def __init__(self):
|
||||
@@ -249,9 +242,9 @@ class SolidFireSnapShotSchedule(object):
|
||||
|
||||
self.create_schedule_result = self.sfe.create_schedule(schedule=sched)
|
||||
|
||||
except:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error creating schedule %s' % self.name, exception=str(err))
|
||||
except Exception as e:
|
||||
self.module.fail_json(msg='Error creating schedule %s: %s' % (self.name, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def delete_schedule(self):
|
||||
|
||||
@@ -261,9 +254,9 @@ class SolidFireSnapShotSchedule(object):
|
||||
sched.to_be_deleted = True
|
||||
self.sfe.modify_schedule(schedule=sched)
|
||||
|
||||
except:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error deleting schedule %s' % self.name, exception=str(err))
|
||||
except Exception as e:
|
||||
self.module.fail_json(msg='Error deleting schedule %s: %s' % (self.name, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def update_schedule(self):
|
||||
|
||||
@@ -300,9 +293,9 @@ class SolidFireSnapShotSchedule(object):
|
||||
# Make API call
|
||||
self.sfe.modify_schedule(schedule=sched)
|
||||
|
||||
except:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg='Error updating schedule %s' % self.name, exception=str(err))
|
||||
except Exception as e:
|
||||
self.module.fail_json(msg='Error updating schedule %s: %s' % (self.name, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def apply(self):
|
||||
changed = False
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2017, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
@@ -117,10 +107,10 @@ RETURN = """
|
||||
|
||||
|
||||
"""
|
||||
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils._text import to_native
|
||||
import ansible.module_utils.netapp as netapp_utils
|
||||
|
||||
HAS_SF_SDK = netapp_utils.has_sf_sdk()
|
||||
@@ -188,19 +178,18 @@ class SolidFireVolumeAccessGroup(object):
|
||||
virtual_network_id=self.virtual_network_id,
|
||||
virtual_network_tags=self.virtual_network_tags,
|
||||
attributes=self.attributes)
|
||||
except:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg="Error creating volume access group %s" % self.name,
|
||||
exception=str(err))
|
||||
except Exception as e:
|
||||
self.module.fail_json(msg="Error creating volume access group %s: %s" %
|
||||
(self.name, to_native(e)), exception=traceback.format_exc())
|
||||
|
||||
def delete_volume_access_group(self):
|
||||
try:
|
||||
self.sfe.delete_volume_access_group(volume_access_group_id=self.volume_access_group_id)
|
||||
|
||||
except:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg="Error deleting volume access group %s" % self.volume_access_group_id,
|
||||
exception=str(err))
|
||||
except Exception as e:
|
||||
self.module.fail_json(msg="Error deleting volume access group %s: %s" %
|
||||
(self.volume_access_group_id, to_native(e)),
|
||||
exception=traceback.format_exc())
|
||||
|
||||
def update_volume_access_group(self):
|
||||
try:
|
||||
@@ -211,10 +200,9 @@ class SolidFireVolumeAccessGroup(object):
|
||||
initiators=self.initiators,
|
||||
volumes=self.volumes,
|
||||
attributes=self.attributes)
|
||||
except:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg="Error updating volume access group %s" % self.volume_access_group_id,
|
||||
exception=str(err))
|
||||
except Exception as e:
|
||||
self.module.fail_json(msg="Error updating volume access group %s: %s" %
|
||||
(self.volume_access_group_id, to_native(e)), exception=traceback.format_exc())
|
||||
|
||||
def apply(self):
|
||||
changed = False
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# (c) 2017, NetApp, Inc
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
|
||||
@@ -2,21 +2,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# (c) 2017, Simon Dodsley (simon@purestorage.com)
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
|
||||
@@ -2,21 +2,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# (c) 2017, Simon Dodsley (simon@purestorage.com)
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
@@ -84,16 +74,15 @@ EXAMPLES = '''
|
||||
RETURN = '''
|
||||
'''
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.pure import get_system, purefa_argument_spec
|
||||
|
||||
|
||||
HAS_PURESTORAGE = True
|
||||
try:
|
||||
from purestorage import purestorage
|
||||
except ImportError:
|
||||
HAS_PURESTORAGE = False
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.pure import get_system, purefa_argument_spec
|
||||
|
||||
|
||||
def human_to_bytes(size):
|
||||
"""Given a human-readable byte string (e.g. 2G, 30M),
|
||||
|
||||
@@ -2,22 +2,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# (c) 2013, Johan Wiren <johan.wiren.se@gmail.com>
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
@@ -93,9 +82,10 @@ EXAMPLES = '''
|
||||
state: absent
|
||||
'''
|
||||
|
||||
|
||||
import os
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
|
||||
|
||||
class Zfs(object):
|
||||
|
||||
@@ -275,8 +265,6 @@ def main():
|
||||
result['changed'] = zfs.changed
|
||||
module.exit_json(**result)
|
||||
|
||||
# import module snippets
|
||||
from ansible.module_utils.basic import *
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
@@ -2,22 +2,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# (c) 2016, Adam Števko <adam.stevko@gmail.com>
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
@@ -171,10 +160,11 @@ zfs_datasets:
|
||||
}
|
||||
'''
|
||||
|
||||
import os
|
||||
from collections import defaultdict
|
||||
from ansible.module_utils.six import iteritems
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.six import iteritems
|
||||
|
||||
|
||||
SUPPORTED_TYPES = ['all', 'filesystem', 'volume', 'snapshot', 'bookmark']
|
||||
|
||||
|
||||
@@ -2,22 +2,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# (c) 2016, Adam Števko <adam.stevko@gmail.com>
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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.0',
|
||||
'status': ['preview'],
|
||||
@@ -123,11 +112,12 @@ zfs_pools:
|
||||
}
|
||||
'''
|
||||
|
||||
import os
|
||||
from collections import defaultdict
|
||||
|
||||
from ansible.module_utils.six import iteritems
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
|
||||
|
||||
class ZPoolFacts(object):
|
||||
def __init__(self, module):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user