mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-24 03:11:24 -07:00
cloudscale_server: refactor to implement update (#52683)
This commit is contained in:
parent
d1c0df9e92
commit
aafc5538bc
4 changed files with 445 additions and 137 deletions
|
@ -6,6 +6,7 @@
|
|||
from __future__ import absolute_import, division, print_function
|
||||
__metaclass__ = type
|
||||
|
||||
from copy import deepcopy
|
||||
from ansible.module_utils.basic import env_fallback
|
||||
from ansible.module_utils.urls import fetch_url
|
||||
from ansible.module_utils._text import to_text
|
||||
|
@ -27,6 +28,10 @@ class AnsibleCloudscaleBase(object):
|
|||
def __init__(self, module):
|
||||
self._module = module
|
||||
self._auth_header = {'Authorization': 'Bearer %s' % module.params['api_token']}
|
||||
self._result = {
|
||||
'changed': False,
|
||||
'diff': dict(before=dict(), after=dict()),
|
||||
}
|
||||
|
||||
def _get(self, api_call):
|
||||
resp, info = fetch_url(self._module, API_URL + api_call,
|
||||
|
@ -44,6 +49,13 @@ class AnsibleCloudscaleBase(object):
|
|||
def _post_or_patch(self, api_call, method, data):
|
||||
headers = self._auth_header.copy()
|
||||
if data is not None:
|
||||
# Sanitize data dictionary
|
||||
# Deepcopy: Duplicate the data object for iteration, because
|
||||
# iterating an object and changing it at the same time is insecure
|
||||
for k, v in deepcopy(data).items():
|
||||
if v is None:
|
||||
del data[k]
|
||||
|
||||
data = self._module.jsonify(data)
|
||||
headers['Content-type'] = 'application/json'
|
||||
|
||||
|
@ -80,3 +92,9 @@ class AnsibleCloudscaleBase(object):
|
|||
else:
|
||||
self._module.fail_json(msg='Failure while calling the cloudscale.ch API with DELETE for '
|
||||
'"%s".' % api_call, fetch_url_info=info)
|
||||
|
||||
def get_result(self, resource):
|
||||
if resource:
|
||||
for k, v in resource.items():
|
||||
self._result[k] = v
|
||||
return self._result
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue