mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-22 21:00:22 -07:00
Remove deprecated get_exception API
Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
This commit is contained in:
parent
caefe31125
commit
6bd0fbb63c
42 changed files with 284 additions and 409 deletions
|
@ -66,7 +66,7 @@ import json
|
|||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.netapp import request, eseries_host_argument_spec
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils._text import to_native
|
||||
|
||||
HEADERS = {
|
||||
"Content-Type": "application/json",
|
||||
|
@ -110,10 +110,9 @@ class Host(object):
|
|||
try:
|
||||
(rc, host_types) = request(self.url + 'storage-systems/%s/host-types' % self.ssid, url_password=self.pwd,
|
||||
url_username=self.user, validate_certs=self.certs, headers=HEADERS)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(
|
||||
msg="Failed to get host types. Array Id [%s]. Error [%s]." % (self.ssid, str(err)))
|
||||
msg="Failed to get host types. Array Id [%s]. Error [%s]." % (self.ssid, to_native(err)))
|
||||
|
||||
try:
|
||||
match = filter(lambda host_type: host_type['index'] == self.host_type_index, host_types)[0]
|
||||
|
@ -129,10 +128,9 @@ class Host(object):
|
|||
url_password=self.pwd, url_username=self.user,
|
||||
validate_certs=self.certs,
|
||||
headers=HEADERS)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(
|
||||
msg="Failed to get unassociated host ports. Array Id [%s]. Error [%s]." % (self.ssid, str(err)))
|
||||
msg="Failed to get unassociated host ports. Array Id [%s]. Error [%s]." % (self.ssid, to_native(err)))
|
||||
|
||||
if len(self.available_ports) > 0 and len(self.ports) <= len(self.available_ports):
|
||||
for port in self.ports:
|
||||
|
@ -159,10 +157,9 @@ class Host(object):
|
|||
(rc, all_groups) = request(self.url + 'storage-systems/%s/host-groups' % self.ssid,
|
||||
url_password=self.pwd,
|
||||
url_username=self.user, validate_certs=self.certs, headers=HEADERS)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(
|
||||
msg="Failed to get host groups. Array Id [%s]. Error [%s]." % (self.ssid, str(err)))
|
||||
msg="Failed to get host groups. Array Id [%s]. Error [%s]." % (self.ssid, to_native(err)))
|
||||
|
||||
try:
|
||||
group_obj = filter(lambda group: group['name'] == self.group, all_groups)[0]
|
||||
|
@ -178,10 +175,9 @@ class Host(object):
|
|||
try:
|
||||
(rc, all_hosts) = request(self.url + 'storage-systems/%s/hosts' % self.ssid, url_password=self.pwd,
|
||||
url_username=self.user, validate_certs=self.certs, headers=HEADERS)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(
|
||||
msg="Failed to determine host existence. Array Id [%s]. Error [%s]." % (self.ssid, str(err)))
|
||||
msg="Failed to determine host existence. Array Id [%s]. Error [%s]." % (self.ssid, to_native(err)))
|
||||
|
||||
self.all_hosts = all_hosts
|
||||
try: # Try to grab the host object
|
||||
|
@ -260,11 +256,10 @@ class Host(object):
|
|||
self.url + 'storage-systems/%s/hosts/%s' % (self.ssid, self.host_obj['id']),
|
||||
url_username=self.user, url_password=self.pwd, headers=HEADERS,
|
||||
validate_certs=self.certs, method='POST', data=json.dumps(self.post_body))
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(
|
||||
msg="Failed to reassign host port. Host Id [%s]. Array Id [%s]. Error [%s]." % (
|
||||
self.host_obj['id'], self.ssid, str(err)))
|
||||
self.host_obj['id'], self.ssid, to_native(err)))
|
||||
|
||||
def update_host(self):
|
||||
if self.ports:
|
||||
|
@ -285,9 +280,8 @@ class Host(object):
|
|||
(rc, self.host_obj) = request(self.url + 'storage-systems/%s/hosts/%s' % (self.ssid, self.host_obj['id']),
|
||||
url_username=self.user, url_password=self.pwd, headers=HEADERS,
|
||||
validate_certs=self.certs, method='POST', data=json.dumps(self.post_body))
|
||||
except:
|
||||
err = get_exception()
|
||||
self.module.fail_json(msg="Failed to update host. Array Id [%s]. Error [%s]." % (self.ssid, str(err)))
|
||||
except Exception as err:
|
||||
self.module.fail_json(msg="Failed to update host. Array Id [%s]. Error [%s]." % (self.ssid, to_native(err)))
|
||||
|
||||
self.module.exit_json(changed=True, **self.host_obj)
|
||||
|
||||
|
@ -311,10 +305,9 @@ class Host(object):
|
|||
(rc, create_resp) = request(self.url + "storage-systems/%s/hosts" % self.ssid, method='POST',
|
||||
url_username=self.user, url_password=self.pwd, validate_certs=self.certs,
|
||||
data=json.dumps(post_body), headers=HEADERS)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(
|
||||
msg="Failed to create host. Array Id [%s]. Error [%s]." % (self.ssid, str(err)))
|
||||
msg="Failed to create host. Array Id [%s]. Error [%s]." % (self.ssid, to_native(err)))
|
||||
else:
|
||||
self.module.exit_json(changed=False,
|
||||
msg="Host already exists. Id [%s]. Host [%s]." % (self.ssid, self.name))
|
||||
|
@ -331,12 +324,11 @@ class Host(object):
|
|||
(rc, resp) = request(self.url + "storage-systems/%s/hosts/%s" % (self.ssid, self.host_obj['id']),
|
||||
method='DELETE',
|
||||
url_username=self.user, url_password=self.pwd, validate_certs=self.certs)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(
|
||||
msg="Failed to remote host. Host[%s]. Array Id [%s]. Error [%s]." % (self.host_obj['id'],
|
||||
self.ssid,
|
||||
str(err)))
|
||||
to_native(err)))
|
||||
|
||||
def apply(self):
|
||||
if self.state == 'present':
|
||||
|
|
|
@ -78,7 +78,7 @@ import json
|
|||
from ansible.module_utils.api import basic_auth_argument_spec
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.netapp import request, eseries_host_argument_spec
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils._text import to_native
|
||||
|
||||
HEADERS = {
|
||||
"Content-Type": "application/json",
|
||||
|
@ -94,9 +94,8 @@ def get_host_and_group_map(module, ssid, api_url, user, pwd, validate_certs):
|
|||
try:
|
||||
hg_rc, hg_data = request(groups_url, headers=HEADERS, url_username=user, url_password=pwd,
|
||||
validate_certs=validate_certs)
|
||||
except:
|
||||
err = get_exception()
|
||||
module.fail_json(msg="Failed to get host groups. Id [%s]. Error [%s]" % (ssid, str(err)))
|
||||
except Exception as err:
|
||||
module.fail_json(msg="Failed to get host groups. Id [%s]. Error [%s]" % (ssid, to_native(err)))
|
||||
|
||||
for group in hg_data:
|
||||
mapping['group'][group['name']] = group['id']
|
||||
|
@ -106,9 +105,8 @@ def get_host_and_group_map(module, ssid, api_url, user, pwd, validate_certs):
|
|||
try:
|
||||
h_rc, h_data = request(hosts_url, headers=HEADERS, url_username=user, url_password=pwd,
|
||||
validate_certs=validate_certs)
|
||||
except:
|
||||
err = get_exception()
|
||||
module.fail_json(msg="Failed to get hosts. Id [%s]. Error [%s]" % (ssid, str(err)))
|
||||
except Exception as err:
|
||||
module.fail_json(msg="Failed to get hosts. Id [%s]. Error [%s]" % (ssid, to_native(err)))
|
||||
|
||||
for host in h_data:
|
||||
mapping['host'][host['name']] = host['id']
|
||||
|
@ -150,10 +148,9 @@ def get_volumes(module, ssid, api_url, user, pwd, mappable, validate_certs):
|
|||
url = api_url + volumes
|
||||
try:
|
||||
rc, data = request(url, url_username=user, url_password=pwd, validate_certs=validate_certs)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
module.fail_json(
|
||||
msg="Failed to mappable objects. Type[%s. Id [%s]. Error [%s]." % (mappable, ssid, str(err)))
|
||||
msg="Failed to mappable objects. Type[%s. Id [%s]. Error [%s]." % (mappable, ssid, to_native(err)))
|
||||
return data
|
||||
|
||||
|
||||
|
|
|
@ -136,7 +136,7 @@ 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._text import to_native
|
||||
from ansible.module_utils.urls import open_url
|
||||
from ansible.module_utils.six.moves.urllib.error import HTTPError
|
||||
|
||||
|
@ -149,8 +149,7 @@ 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()
|
||||
except HTTPError as err:
|
||||
r = err.fp
|
||||
|
||||
try:
|
||||
|
@ -223,10 +222,9 @@ class SnapshotGroup(object):
|
|||
url = self.url + pools
|
||||
try:
|
||||
(rc, data) = request(url, headers=HEADERS, url_username=self.user, url_password=self.pwd)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(msg="Snapshot group module - Failed to fetch storage pools. " +
|
||||
"Id [%s]. Error [%s]." % (self.ssid, str(err)))
|
||||
"Id [%s]. Error [%s]." % (self.ssid, to_native(err)))
|
||||
|
||||
for pool in data:
|
||||
if pool['name'] == self.storage_pool_name:
|
||||
|
@ -242,10 +240,9 @@ class SnapshotGroup(object):
|
|||
try:
|
||||
rc, data = request(url, headers=HEADERS, url_username=self.user, url_password=self.pwd,
|
||||
validate_certs=self.certs)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(msg="Snapshot group module - Failed to fetch volumes. " +
|
||||
"Id [%s]. Error [%s]." % (self.ssid, str(err)))
|
||||
"Id [%s]. Error [%s]." % (self.ssid, to_native(err)))
|
||||
qty = 0
|
||||
for volume in data:
|
||||
if volume['name'] == self.base_volume_name:
|
||||
|
@ -269,10 +266,9 @@ class SnapshotGroup(object):
|
|||
try:
|
||||
rc, data = request(url, headers=HEADERS, url_username=self.user, url_password=self.pwd,
|
||||
validate_certs=self.certs)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(msg="Failed to fetch snapshot groups. " +
|
||||
"Id [%s]. Error [%s]." % (self.ssid, str(err)))
|
||||
"Id [%s]. Error [%s]." % (self.ssid, to_native(err)))
|
||||
for ssg in data:
|
||||
if ssg['name'] == self.name:
|
||||
self.ssg_data = ssg
|
||||
|
@ -305,12 +301,11 @@ class SnapshotGroup(object):
|
|||
try:
|
||||
rc, self.ssg_data = request(url, data=json.dumps(self.post_data), method='POST', headers=HEADERS,
|
||||
url_username=self.user, url_password=self.pwd, validate_certs=self.certs)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(msg="Failed to create snapshot group. " +
|
||||
"Snapshot group [%s]. Id [%s]. Error [%s]." % (self.name,
|
||||
self.ssid,
|
||||
str(err)))
|
||||
to_native(err)))
|
||||
|
||||
if not self.snapshot_group_id:
|
||||
self.snapshot_group_id = self.ssg_data['id']
|
||||
|
@ -332,12 +327,11 @@ class SnapshotGroup(object):
|
|||
try:
|
||||
rc, self.ssg_data = request(url, data=json.dumps(self.post_data), method='POST', headers=HEADERS,
|
||||
url_username=self.user, url_password=self.pwd, validate_certs=self.certs)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(msg="Failed to update snapshot group. " +
|
||||
"Snapshot group [%s]. Id [%s]. Error [%s]." % (self.name,
|
||||
self.ssid,
|
||||
str(err)))
|
||||
to_native(err)))
|
||||
|
||||
def apply(self):
|
||||
if self.state == 'absent':
|
||||
|
@ -347,12 +341,11 @@ class SnapshotGroup(object):
|
|||
self.url + 'storage-systems/%s/snapshot-groups/%s' % (self.ssid, self.snapshot_group_id),
|
||||
method='DELETE', headers=HEADERS, url_password=self.pwd, url_username=self.user,
|
||||
validate_certs=self.certs)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(msg="Failed to delete snapshot group. " +
|
||||
"Snapshot group [%s]. Id [%s]. Error [%s]." % (self.name,
|
||||
self.ssid,
|
||||
str(err)))
|
||||
to_native(err)))
|
||||
self.module.exit_json(changed=True, msg="Snapshot group removed", **self.ssg_data)
|
||||
else:
|
||||
self.module.exit_json(changed=False, msg="Snapshot group absent")
|
||||
|
|
|
@ -84,7 +84,7 @@ 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._text import to_native
|
||||
from ansible.module_utils.urls import open_url
|
||||
from ansible.module_utils.six.moves.urllib.error import HTTPError
|
||||
|
||||
|
@ -97,8 +97,7 @@ 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()
|
||||
except HTTPError as err:
|
||||
r = err.fp
|
||||
|
||||
try:
|
||||
|
@ -145,10 +144,9 @@ def oldest_image(module, ssid, api_url, api_pwd, api_usr, name):
|
|||
try:
|
||||
(ret, images) = request(url, url_username=api_usr, url_password=api_pwd, headers=HEADERS,
|
||||
validate_certs=module.params['validate_certs'])
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
module.fail_json(msg="Failed to get snapshot images for group. Group [%s]. Id [%s]. Error [%s]" %
|
||||
(name, ssid, str(err)))
|
||||
(name, ssid, to_native(err)))
|
||||
if not images:
|
||||
module.exit_json(msg="There are no snapshot images to remove. Group [%s]. Id [%s]." % (name, ssid))
|
||||
|
||||
|
@ -188,8 +186,7 @@ def delete_image(module, ssid, api_url, pwd, user, snapshot_group):
|
|||
try:
|
||||
(ret, image_data) = request(url, method='DELETE', url_username=user, url_password=pwd, headers=HEADERS,
|
||||
validate_certs=module.params['validate_certs'])
|
||||
except Exception:
|
||||
e = get_exception()
|
||||
except Exception as e:
|
||||
image_data = (e[0], e[1])
|
||||
|
||||
if ret == 204:
|
||||
|
|
|
@ -111,7 +111,6 @@ 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
|
||||
|
||||
|
@ -124,8 +123,7 @@ 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()
|
||||
except HTTPError as err:
|
||||
r = err.fp
|
||||
|
||||
try:
|
||||
|
|
|
@ -101,7 +101,7 @@ from time import sleep
|
|||
|
||||
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._text import to_native
|
||||
from ansible.module_utils.urls import open_url
|
||||
from ansible.module_utils.six.moves.urllib.error import HTTPError
|
||||
|
||||
|
@ -114,8 +114,7 @@ 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()
|
||||
except HTTPError as err:
|
||||
r = err.fp
|
||||
|
||||
try:
|
||||
|
@ -208,9 +207,8 @@ def main():
|
|||
(rc, resp) = request(api_url + "/storage-systems/%s" % ssid, headers=dict(Accept="application/json"),
|
||||
url_username=api_usr, url_password=api_pwd, validate_certs=validate_certs,
|
||||
ignore_errors=True)
|
||||
except:
|
||||
err = get_exception()
|
||||
module.fail_json(msg="Error accessing storage-system with id [%s]. Error [%s]" % (ssid, str(err)))
|
||||
except Exception as err:
|
||||
module.fail_json(msg="Error accessing storage-system with id [%s]. Error [%s]" % (ssid, to_native(err)))
|
||||
|
||||
array_exists = True
|
||||
array_detail = resp
|
||||
|
@ -260,10 +258,9 @@ def main():
|
|||
try:
|
||||
(rc, resp) = do_post(ssid, api_url, post_headers, api_usr, api_pwd, validate_certs, request_data,
|
||||
array_status_timeout_sec)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
module.fail_json(msg="Failed to add storage system. Id[%s]. Request body [%s]. Error[%s]." %
|
||||
(ssid, request_data, str(err)))
|
||||
(ssid, request_data, to_native(err)))
|
||||
|
||||
else: # array exists, modify...
|
||||
post_headers = dict(Accept="application/json")
|
||||
|
@ -278,10 +275,9 @@ def main():
|
|||
try:
|
||||
(rc, resp) = do_post(ssid, api_url, post_headers, api_usr, api_pwd, validate_certs, post_body,
|
||||
array_status_timeout_sec)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
module.fail_json(msg="Failed to update storage system. Id[%s]. Request body [%s]. Error[%s]." %
|
||||
(ssid, post_body, str(err)))
|
||||
(ssid, post_body, to_native(err)))
|
||||
|
||||
elif state == 'absent':
|
||||
# delete the array
|
||||
|
@ -289,9 +285,8 @@ def main():
|
|||
(rc, resp) = request(api_url + "/storage-systems/%s" % ssid, method='DELETE',
|
||||
url_username=api_usr,
|
||||
url_password=api_pwd, validate_certs=validate_certs)
|
||||
except:
|
||||
err = get_exception()
|
||||
module.fail_json(msg="Failed to remove storage array. Id[%s]. Error[%s]." % (ssid, str(err)))
|
||||
except Exception as err:
|
||||
module.fail_json(msg="Failed to remove storage array. Id[%s]. Error[%s]." % (ssid, to_native(err)))
|
||||
|
||||
if rc == 422:
|
||||
module.exit_json(changed=changed, msg="Storage system was not presnt.")
|
||||
|
|
|
@ -109,7 +109,7 @@ from traceback import format_exc
|
|||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.netapp import request, eseries_host_argument_spec
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils._text import to_native
|
||||
|
||||
|
||||
def select(predicate, iterable):
|
||||
|
@ -380,17 +380,15 @@ class NetAppESeriesStoragePool(object):
|
|||
(rc, resp) = request(self.api_url + "/storage-systems/%s/storage-pools" % (self.ssid),
|
||||
headers=dict(Accept="application/json"), url_username=self.api_usr,
|
||||
url_password=self.api_pwd, validate_certs=self.validate_certs)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
rc = err.args[0]
|
||||
if rc == 404 and self.state == 'absent':
|
||||
self.module.exit_json(
|
||||
msg="Storage pool [%s] did not exist." % (self.name))
|
||||
else:
|
||||
err = get_exception()
|
||||
self.module.exit_json(
|
||||
msg="Failed to get storage pools. Array id [%s]. Error[%s]. State[%s]. RC[%s]." %
|
||||
(self.ssid, str(err), self.state, rc))
|
||||
(self.ssid, to_native(err), self.state, rc))
|
||||
|
||||
self.debug("searching for storage pool '%s'", storage_pool_name)
|
||||
|
||||
|
@ -435,10 +433,9 @@ class NetAppESeriesStoragePool(object):
|
|||
(rc, drives_resp) = request(self.api_url + "/storage-systems/%s/drives" % (self.ssid), method='GET',
|
||||
url_username=self.api_usr, url_password=self.api_pwd,
|
||||
validate_certs=self.validate_certs)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.exit_json(
|
||||
msg="Failed to fetch disk drives. Array id [%s]. Error[%s]." % (self.ssid, str(err)))
|
||||
msg="Failed to fetch disk drives. Array id [%s]. Error[%s]." % (self.ssid, to_native(err)))
|
||||
|
||||
try:
|
||||
candidate_set = self.filter_drives(drives_resp,
|
||||
|
@ -451,10 +448,9 @@ class NetAppESeriesStoragePool(object):
|
|||
interface_type=self.criteria_drive_interface_type,
|
||||
fde_required=self.criteria_drive_require_fde
|
||||
)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(
|
||||
msg="Failed to allocate adequate drive count. Id [%s]. Error [%s]." % (self.ssid, str(err)))
|
||||
msg="Failed to allocate adequate drive count. Id [%s]. Error [%s]." % (self.ssid, to_native(err)))
|
||||
|
||||
disk_ids = [d['id'] for d in candidate_set]
|
||||
|
||||
|
@ -478,13 +474,12 @@ class NetAppESeriesStoragePool(object):
|
|||
url_username=self.api_usr, url_password=self.api_pwd,
|
||||
validate_certs=self.validate_certs,
|
||||
timeout=120)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
pool_id = self.pool_detail['id']
|
||||
self.module.exit_json(
|
||||
msg="Failed to create storage pool. Pool id [%s]. Array id [%s]. Error[%s]." % (pool_id,
|
||||
self.ssid,
|
||||
str(err)))
|
||||
to_native(err)))
|
||||
|
||||
self.pool_detail = self.get_storage_pool(self.name)
|
||||
|
||||
|
@ -496,13 +491,12 @@ class NetAppESeriesStoragePool(object):
|
|||
data=json.dumps(secure_pool_data), headers=self.post_headers, method='POST',
|
||||
url_username=self.api_usr,
|
||||
url_password=self.api_pwd, validate_certs=self.validate_certs, timeout=120, ignore_errors=True)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
pool_id = self.pool_detail['id']
|
||||
self.module.exit_json(
|
||||
msg="Failed to update storage pool. Pool id [%s]. Array id [%s]. Error[%s]." % (pool_id,
|
||||
self.ssid,
|
||||
str(err)))
|
||||
to_native(err)))
|
||||
|
||||
@property
|
||||
def needs_raid_level_migration(self):
|
||||
|
@ -527,12 +521,11 @@ class NetAppESeriesStoragePool(object):
|
|||
data=json.dumps(sp_raid_migrate_req), headers=self.post_headers, method='POST',
|
||||
url_username=self.api_usr,
|
||||
url_password=self.api_pwd, validate_certs=self.validate_certs, timeout=120)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
pool_id = self.pool_detail['id']
|
||||
self.module.exit_json(
|
||||
msg="Failed to change the raid level of storage pool. Pool id [%s]. Array id [%s]. Error[%s]." % (
|
||||
pool_id, self.ssid, str(err)))
|
||||
pool_id, self.ssid, to_native(err)))
|
||||
|
||||
@property
|
||||
def sp_drives(self, exclude_hotspares=True):
|
||||
|
@ -543,11 +536,10 @@ class NetAppESeriesStoragePool(object):
|
|||
(rc, resp) = request(self.api_url + "/storage-systems/%s/drives" % (self.ssid), method='GET',
|
||||
url_username=self.api_usr, url_password=self.api_pwd,
|
||||
validate_certs=self.validate_certs)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
pool_id = self.pool_detail['id']
|
||||
self.module.exit_json(
|
||||
msg="Failed to fetch disk drives. Pool id [%s]. Array id [%s]. Error[%s]." % (pool_id, self.ssid, str(err)))
|
||||
msg="Failed to fetch disk drives. Pool id [%s]. Array id [%s]. Error[%s]." % (pool_id, self.ssid, to_native(err)))
|
||||
|
||||
sp_id = self.pool_detail['id']
|
||||
if exclude_hotspares:
|
||||
|
@ -586,12 +578,11 @@ class NetAppESeriesStoragePool(object):
|
|||
self.pool_detail['id']),
|
||||
method='GET', url_username=self.api_usr, url_password=self.api_pwd, validate_certs=self.validate_certs,
|
||||
timeout=120)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
pool_id = self.pool_detail['id']
|
||||
self.module.exit_json(
|
||||
msg="Failed to fetch candidate drives for storage pool. Pool id [%s]. Array id [%s]. Error[%s]." % (
|
||||
pool_id, self.ssid, str(err)))
|
||||
pool_id, self.ssid, to_native(err)))
|
||||
|
||||
current_drive_count = len(self.sp_drives)
|
||||
current_capacity_bytes = int(self.pool_detail['totalRaidedSpace']) # TODO: is this the right attribute to use?
|
||||
|
@ -649,14 +640,12 @@ class NetAppESeriesStoragePool(object):
|
|||
self.pool_detail['id']),
|
||||
data=json.dumps(sp_expand_req), headers=self.post_headers, method='POST', url_username=self.api_usr,
|
||||
url_password=self.api_pwd, validate_certs=self.validate_certs, timeout=120)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
pool_id = self.pool_detail['id']
|
||||
self.module.exit_json(
|
||||
msg="Failed to add drives to storage pool. Pool id [%s]. Array id [%s]. Error[%s]." % (pool_id,
|
||||
self.ssid,
|
||||
str(
|
||||
err)))
|
||||
to_native(err)))
|
||||
|
||||
# TODO: check response
|
||||
# TODO: support blocking wait?
|
||||
|
@ -675,12 +664,11 @@ class NetAppESeriesStoragePool(object):
|
|||
self.pool_detail['id']),
|
||||
data=json.dumps(drive_list), headers=self.post_headers, method='POST', url_username=self.api_usr,
|
||||
url_password=self.api_pwd, validate_certs=self.validate_certs, timeout=120)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
pool_id = self.pool_detail['id']
|
||||
self.module.exit_json(
|
||||
msg="Failed to remove drives from storage pool. Pool id [%s]. Array id [%s]. Error[%s]." % (
|
||||
pool_id, self.ssid, str(err)))
|
||||
pool_id, self.ssid, to_native(err)))
|
||||
|
||||
def update_reserve_drive_count(self, qty):
|
||||
data = dict(reservedDriveCount=qty)
|
||||
|
@ -689,14 +677,12 @@ class NetAppESeriesStoragePool(object):
|
|||
self.api_url + "/storage-systems/%s/storage-pools/%s" % (self.ssid, self.pool_detail['id']),
|
||||
data=json.dumps(data), headers=self.post_headers, method='POST', url_username=self.api_usr,
|
||||
url_password=self.api_pwd, validate_certs=self.validate_certs, timeout=120)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
pool_id = self.pool_detail['id']
|
||||
self.module.exit_json(
|
||||
msg="Failed to update reserve drive count. Pool id [%s]. Array id [%s]. Error[%s]." % (pool_id,
|
||||
self.ssid,
|
||||
str(
|
||||
err)))
|
||||
to_native(err)))
|
||||
|
||||
def apply(self):
|
||||
changed = False
|
||||
|
@ -777,11 +763,10 @@ class NetAppESeriesStoragePool(object):
|
|||
data=json.dumps(secure_pool_data), headers=self.post_headers, method='POST',
|
||||
url_username=self.api_usr, url_password=self.api_pwd,
|
||||
validate_certs=self.validate_certs, timeout=120, ignore_errors=True)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.exit_json(
|
||||
msg="Failed to delete storage pool. Pool id [%s]. Array id [%s]. Error[%s]." % (
|
||||
pool_id, self.ssid, str(err)))
|
||||
pool_id, self.ssid, to_native(err)))
|
||||
|
||||
if int(retc) == 422:
|
||||
self.module.fail_json(
|
||||
|
@ -799,12 +784,11 @@ class NetAppESeriesStoragePool(object):
|
|||
method='DELETE',
|
||||
url_username=self.api_usr, url_password=self.api_pwd, validate_certs=self.validate_certs,
|
||||
timeout=120)
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.exit_json(
|
||||
msg="Failed to delete storage pool. Pool id [%s]. Array id [%s]. Error[%s]." % (pool_id,
|
||||
self.ssid,
|
||||
str(err)))
|
||||
to_native(err)))
|
||||
|
||||
self.module.exit_json(changed=changed, **self.pool_detail)
|
||||
|
||||
|
@ -813,9 +797,8 @@ def main():
|
|||
sp = NetAppESeriesStoragePool()
|
||||
try:
|
||||
sp.apply()
|
||||
except Exception:
|
||||
e = get_exception()
|
||||
sp.debug("Exception in apply(): \n%s", format_exc(e))
|
||||
except Exception as e:
|
||||
sp.debug("Exception in apply(): \n%s", format_exc())
|
||||
raise
|
||||
|
||||
|
||||
|
|
|
@ -117,7 +117,7 @@ from traceback import format_exc
|
|||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.netapp import request, eseries_host_argument_spec
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils._text import to_native
|
||||
|
||||
HEADERS = {
|
||||
"Content-Type": "application/json",
|
||||
|
@ -217,21 +217,19 @@ class NetAppESeriesVolume(object):
|
|||
(rc, volumes) = request(self.api_url + "/storage-systems/%s/volumes" % (self.ssid),
|
||||
headers=dict(Accept="application/json"), url_username=self.api_usr,
|
||||
url_password=self.api_pwd, validate_certs=self.validate_certs)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(
|
||||
msg="Failed to obtain list of standard/thick volumes. Array Id [%s]. Error[%s]." % (self.ssid,
|
||||
str(err)))
|
||||
to_native(err)))
|
||||
|
||||
try:
|
||||
self.debug('fetching thin-volumes')
|
||||
(rc, thinvols) = request(self.api_url + "/storage-systems/%s/thin-volumes" % (self.ssid),
|
||||
headers=dict(Accept="application/json"), url_username=self.api_usr,
|
||||
url_password=self.api_pwd, validate_certs=self.validate_certs)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(
|
||||
msg="Failed to obtain list of thin volumes. Array Id [%s]. Error[%s]." % (self.ssid, str(err)))
|
||||
msg="Failed to obtain list of thin volumes. Array Id [%s]. Error[%s]." % (self.ssid, to_native(err)))
|
||||
|
||||
volumes.extend(thinvols)
|
||||
|
||||
|
@ -252,10 +250,9 @@ class NetAppESeriesVolume(object):
|
|||
(rc, resp) = request(self.api_url + "/storage-systems/%s/storage-pools" % (self.ssid),
|
||||
headers=dict(Accept="application/json"), url_username=self.api_usr,
|
||||
url_password=self.api_pwd, validate_certs=self.validate_certs)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(
|
||||
msg="Failed to obtain list of storage pools. Array Id [%s]. Error[%s]." % (self.ssid, str(err)))
|
||||
msg="Failed to obtain list of storage pools. Array Id [%s]. Error[%s]." % (self.ssid, to_native(err)))
|
||||
|
||||
self.debug("searching for storage pool '%s'", storage_pool_name)
|
||||
pool_detail = next(ifilter(lambda a: a['name'] == storage_pool_name, resp), None)
|
||||
|
@ -284,11 +281,10 @@ class NetAppESeriesVolume(object):
|
|||
url_username=self.api_usr, url_password=self.api_pwd,
|
||||
validate_certs=self.validate_certs,
|
||||
timeout=120)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(
|
||||
msg="Failed to create volume. Volume [%s]. Array Id [%s]. Error[%s]." % (self.name, self.ssid,
|
||||
str(err)))
|
||||
to_native(err)))
|
||||
|
||||
def create_thin_volume(self, pool_id, name, size_unit, size, thin_volume_repo_size,
|
||||
thin_volume_max_repo_size, data_assurance_enabled):
|
||||
|
@ -309,12 +305,11 @@ class NetAppESeriesVolume(object):
|
|||
url_username=self.api_usr, url_password=self.api_pwd,
|
||||
validate_certs=self.validate_certs,
|
||||
timeout=120)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(
|
||||
msg="Failed to create thin volume. Volume [%s]. Array Id [%s]. Error[%s]." % (self.name,
|
||||
self.ssid,
|
||||
str(err)))
|
||||
to_native(err)))
|
||||
|
||||
def delete_volume(self):
|
||||
# delete the volume
|
||||
|
@ -325,11 +320,10 @@ class NetAppESeriesVolume(object):
|
|||
self.volume_detail['id']),
|
||||
method='DELETE', url_username=self.api_usr, url_password=self.api_pwd,
|
||||
validate_certs=self.validate_certs, timeout=120)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(
|
||||
msg="Failed to delete volume. Volume [%s]. Array Id [%s]. Error[%s]." % (self.name, self.ssid,
|
||||
str(err)))
|
||||
to_native(err)))
|
||||
|
||||
@property
|
||||
def volume_resource_name(self):
|
||||
|
@ -366,12 +360,11 @@ class NetAppESeriesVolume(object):
|
|||
data=json.dumps(update_volume_req), headers=HEADERS, method='POST',
|
||||
url_username=self.api_usr, url_password=self.api_pwd, validate_certs=self.validate_certs,
|
||||
timeout=120)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(
|
||||
msg="Failed to update volume properties. Volume [%s]. Array Id [%s]. Error[%s]." % (self.name,
|
||||
self.ssid,
|
||||
str(err)))
|
||||
to_native(err)))
|
||||
|
||||
@property
|
||||
def volume_needs_expansion(self):
|
||||
|
@ -399,12 +392,11 @@ class NetAppESeriesVolume(object):
|
|||
data=json.dumps(thin_volume_expand_req), headers=HEADERS, method='POST',
|
||||
url_username=self.api_usr, url_password=self.api_pwd,
|
||||
validate_certs=self.validate_certs, timeout=120)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(
|
||||
msg="Failed to expand thin volume. Volume [%s]. Array Id [%s]. Error[%s]." % (self.name,
|
||||
self.ssid,
|
||||
str(err)))
|
||||
to_native(err)))
|
||||
|
||||
# TODO: check return code
|
||||
else:
|
||||
|
@ -420,12 +412,11 @@ class NetAppESeriesVolume(object):
|
|||
data=json.dumps(volume_expand_req), headers=HEADERS, method='POST',
|
||||
url_username=self.api_usr, url_password=self.api_pwd, validate_certs=self.validate_certs,
|
||||
timeout=120)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(
|
||||
msg="Failed to expand volume. Volume [%s]. Array Id [%s]. Error[%s]." % (self.name,
|
||||
self.ssid,
|
||||
str(err)))
|
||||
to_native(err)))
|
||||
|
||||
self.debug('polling for completion...')
|
||||
|
||||
|
@ -436,11 +427,10 @@ class NetAppESeriesVolume(object):
|
|||
'id']),
|
||||
method='GET', url_username=self.api_usr, url_password=self.api_pwd,
|
||||
validate_certs=self.validate_certs)
|
||||
except Exception:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(
|
||||
msg="Failed to get volume expansion progress. Volume [%s]. Array Id [%s]. Error[%s]." % (
|
||||
self.name, self.ssid, str(err)))
|
||||
self.name, self.ssid, to_native(err)))
|
||||
|
||||
action = resp['action']
|
||||
percent_complete = resp['percentComplete']
|
||||
|
@ -538,10 +528,9 @@ def main():
|
|||
|
||||
try:
|
||||
v.apply()
|
||||
except Exception:
|
||||
e = get_exception()
|
||||
v.debug("Exception in apply(): \n%s", format_exc(e))
|
||||
v.module.fail_json(msg="Module failed. Error [%s]." % (str(e)))
|
||||
except Exception as e:
|
||||
v.debug("Exception in apply(): \n%s", format_exc())
|
||||
v.module.fail_json(msg="Module failed. Error [%s]." % to_native(e))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
@ -98,7 +98,7 @@ msg:
|
|||
import json
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils._text import to_native
|
||||
from ansible.module_utils.netapp import request
|
||||
|
||||
HEADERS = {
|
||||
|
@ -284,9 +284,8 @@ def main():
|
|||
if params['search_volume_id'] is not None:
|
||||
try:
|
||||
potential_targets, potential_sources = find_valid_copy_pair_targets_and_sources(params)
|
||||
except:
|
||||
e = get_exception()
|
||||
module.fail_json(msg="Failed to find valid copy pair candidates. Error [%s]" % str(e))
|
||||
except Exception as e:
|
||||
module.fail_json(msg="Failed to find valid copy pair candidates. Error [%s]" % to_native(e))
|
||||
|
||||
module.exit_json(changed=False,
|
||||
msg=' Valid source devices found: %s Valid target devices found: %s' % (len(potential_sources), len(potential_targets)),
|
||||
|
|
|
@ -138,7 +138,7 @@ msg:
|
|||
"""
|
||||
|
||||
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()
|
||||
|
@ -230,19 +230,17 @@ class SolidFireVolume(object):
|
|||
qos=self.qos,
|
||||
attributes=self.attributes)
|
||||
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(msg="Error provisioning volume %s of size %s" % (self.name, self.size),
|
||||
exception=str(err))
|
||||
exception=to_native(err))
|
||||
|
||||
def delete_volume(self):
|
||||
try:
|
||||
self.sfe.delete_volume(volume_id=self.volume_id)
|
||||
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(msg="Error deleting volume %s" % self.volume_id,
|
||||
exception=str(err))
|
||||
exception=to_native(err))
|
||||
|
||||
def update_volume(self):
|
||||
try:
|
||||
|
@ -253,10 +251,9 @@ class SolidFireVolume(object):
|
|||
total_size=self.size,
|
||||
attributes=self.attributes)
|
||||
|
||||
except:
|
||||
err = get_exception()
|
||||
except Exception as err:
|
||||
self.module.fail_json(msg="Error updating volume %s" % self.name,
|
||||
exception=str(err))
|
||||
exception=to_native(err))
|
||||
|
||||
def apply(self):
|
||||
changed = False
|
||||
|
@ -326,5 +323,6 @@ def main():
|
|||
v = SolidFireVolume()
|
||||
v.apply()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue