exoscale: pep8 and python3 fixes (#21821)
* exoscale: pep8 fixes * exo_dns_record: remove from pep8 test legacy * exoscale: fix python3 support
This commit is contained in:
parent
2ca5719168
commit
d26c57f938
4 changed files with 59 additions and 41 deletions
|
@ -27,23 +27,17 @@
|
|||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
try:
|
||||
import json
|
||||
except ImportError:
|
||||
try:
|
||||
import simplejson as json
|
||||
except ImportError:
|
||||
# Let snippet from module_utils/basic.py return a proper error in this case
|
||||
pass
|
||||
|
||||
import os
|
||||
|
||||
# import module snippets
|
||||
from ansible.module_utils.pycompat24 import get_exception
|
||||
from ansible.module_utils.six.moves import configparser
|
||||
from ansible.module_utils.six import integer_types, string_types
|
||||
from ansible.module_utils._text import to_text
|
||||
from ansible.module_utils.urls import fetch_url
|
||||
|
||||
EXO_DNS_BASEURL="https://api.exoscale.ch/dns/v1"
|
||||
EXO_DNS_BASEURL = "https://api.exoscale.ch/dns/v1"
|
||||
|
||||
|
||||
def exo_dns_argument_spec():
|
||||
return dict(
|
||||
|
@ -54,6 +48,7 @@ def exo_dns_argument_spec():
|
|||
validate_certs=dict(default='yes', type='bool'),
|
||||
)
|
||||
|
||||
|
||||
def exo_dns_required_together():
|
||||
return [['api_key', 'api_secret']]
|
||||
|
||||
|
@ -73,7 +68,7 @@ class ExoDns(object):
|
|||
self.api_secret = config['secret']
|
||||
except Exception:
|
||||
e = get_exception()
|
||||
self.module.fail_json(msg=str(e))
|
||||
self.module.fail_json(msg="Error while processing config: %s" % e)
|
||||
|
||||
self.headers = {
|
||||
'X-DNS-Token': "%s:%s" % (self.api_key, self.api_secret),
|
||||
|
@ -95,10 +90,10 @@ class ExoDns(object):
|
|||
keys = ['key', 'secret']
|
||||
env_conf = {}
|
||||
for key in keys:
|
||||
if 'CLOUDSTACK_{0}'.format(key.upper()) not in os.environ:
|
||||
if 'CLOUDSTACK_%s' % key.upper() not in os.environ:
|
||||
break
|
||||
else:
|
||||
env_conf[key] = os.environ['CLOUDSTACK_{0}'.format(key.upper())]
|
||||
env_conf[key] = os.environ['CLOUDSTACK_%s' % key.upper()]
|
||||
else:
|
||||
return env_conf
|
||||
|
||||
|
@ -112,8 +107,7 @@ class ExoDns(object):
|
|||
if 'CLOUDSTACK_CONFIG' in os.environ:
|
||||
paths += (os.path.expanduser(os.environ['CLOUDSTACK_CONFIG']),)
|
||||
if not any([os.path.exists(c) for c in paths]):
|
||||
raise SystemExit("Config file not found. Tried {0}".format(
|
||||
", ".join(paths)))
|
||||
self.module.fail_json(msg="Config file not found. Tried : %s" % ", ".join(paths))
|
||||
|
||||
conf = configparser.ConfigParser()
|
||||
conf.read(paths)
|
||||
|
@ -122,24 +116,26 @@ class ExoDns(object):
|
|||
def api_query(self, resource="/domains", method="GET", data=None):
|
||||
url = EXO_DNS_BASEURL + resource
|
||||
if data:
|
||||
data = json.dumps(data)
|
||||
data = self.module.jsonify(data)
|
||||
|
||||
response, info = fetch_url(
|
||||
module = self.module,
|
||||
url = url,
|
||||
data = data,
|
||||
method = method,
|
||||
headers = self.headers,
|
||||
timeout = self.module.params.get('api_timeout'),
|
||||
module=self.module,
|
||||
url=url,
|
||||
data=data,
|
||||
method=method,
|
||||
headers=self.headers,
|
||||
timeout=self.module.params.get('api_timeout'),
|
||||
)
|
||||
|
||||
if info['status'] not in (200, 201, 204):
|
||||
self.module.fail_json(msg="%s returned %s, with body: %s" % (url, info['status'], info['msg']))
|
||||
|
||||
try:
|
||||
return json.load(response)
|
||||
return self.module.from_json(to_text(response.read()))
|
||||
|
||||
except Exception:
|
||||
return {}
|
||||
e = get_exception()
|
||||
self.module.fail_json(msg="Could not process response into json: %s" % e)
|
||||
|
||||
def has_changed(self, want_dict, current_dict, only_keys=None):
|
||||
changed = False
|
||||
|
@ -151,17 +147,19 @@ class ExoDns(object):
|
|||
if value is None:
|
||||
continue
|
||||
if key in current_dict:
|
||||
if isinstance(current_dict[key], (int, long, float, complex)):
|
||||
if isinstance(current_dict[key], integer_types):
|
||||
if value != current_dict[key]:
|
||||
self.result['diff']['before'][key] = current_dict[key]
|
||||
self.result['diff']['after'][key] = value
|
||||
changed = True
|
||||
elif value.lower() != current_dict[key].encode('utf-8').lower():
|
||||
self.result['diff']['before'][key] = current_dict[key]
|
||||
self.result['diff']['after'][key] = value
|
||||
changed = True
|
||||
elif isinstance(current_dict[key], string_types):
|
||||
if value.lower() != current_dict[key].lower():
|
||||
self.result['diff']['before'][key] = current_dict[key]
|
||||
self.result['diff']['after'][key] = value
|
||||
changed = True
|
||||
else:
|
||||
self.module.fail_json(msg="Unable to determine comparison for key %s" % key)
|
||||
else:
|
||||
self.result['diff']['after'][key] = value
|
||||
changed = True
|
||||
return changed
|
||||
|
||||
|
|
|
@ -184,8 +184,12 @@ exo_dns_domain:
|
|||
sample: false
|
||||
'''
|
||||
|
||||
# import exoscale common
|
||||
from ansible.module_utils.exoscale import *
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.exoscale import (
|
||||
ExoDns,
|
||||
exo_dns_argument_spec,
|
||||
exo_dns_required_together
|
||||
)
|
||||
|
||||
|
||||
class ExoDnsDomain(ExoDns):
|
||||
|
@ -252,8 +256,6 @@ def main():
|
|||
|
||||
module.exit_json(**result)
|
||||
|
||||
# import module snippets
|
||||
from ansible.module_utils.basic import *
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
|
|
@ -244,8 +244,30 @@ exo_dns_record:
|
|||
sample: "2016-08-12T15:24:23.989Z"
|
||||
'''
|
||||
|
||||
# import exoscale common
|
||||
from ansible.module_utils.exoscale import *
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.exoscale import (
|
||||
ExoDns,
|
||||
exo_dns_argument_spec,
|
||||
exo_dns_required_together
|
||||
)
|
||||
|
||||
EXO_RECORD_TYPES = [
|
||||
'A',
|
||||
'ALIAS',
|
||||
'CNAME',
|
||||
'MX',
|
||||
'SPF',
|
||||
'URL',
|
||||
'TXT',
|
||||
'NS',
|
||||
'SRV',
|
||||
'NAPTR',
|
||||
'PTR',
|
||||
'AAAA',
|
||||
'SSHFP',
|
||||
'HINFO',
|
||||
'POOL'
|
||||
]
|
||||
|
||||
|
||||
class ExoDnsRecord(ExoDns):
|
||||
|
@ -267,7 +289,6 @@ class ExoDnsRecord(ExoDns):
|
|||
if self.multiple and self.record_type != 'A':
|
||||
self.module.fail_json("Multiple is only usable with record_type A")
|
||||
|
||||
|
||||
def _create_record(self, record):
|
||||
self.result['changed'] = True
|
||||
data = {
|
||||
|
@ -357,7 +378,7 @@ def main():
|
|||
argument_spec = exo_dns_argument_spec()
|
||||
argument_spec.update(dict(
|
||||
name=dict(default=""),
|
||||
record_type=dict(choices=['A', 'ALIAS', 'CNAME', 'MX', 'SPF', 'URL', 'TXT', 'NS', 'SRV', 'NAPTR', 'PTR', 'AAAA', 'SSHFP', 'HINFO', 'POOL'], aliases=['rtype', 'type'], default='A'),
|
||||
record_type=dict(choices=EXO_RECORD_TYPES, aliases=['rtype', 'type'], default='A'),
|
||||
content=dict(aliases=['value', 'address']),
|
||||
multiple=(dict(type='bool', default=False)),
|
||||
ttl=dict(type='int', default=3600),
|
||||
|
@ -388,8 +409,6 @@ def main():
|
|||
result = exo_dns_record.get_result(resource)
|
||||
module.exit_json(**result)
|
||||
|
||||
# import module snippets
|
||||
from ansible.module_utils.basic import *
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
|
|
@ -137,7 +137,6 @@ lib/ansible/modules/network/basics/slurp.py
|
|||
lib/ansible/modules/network/cloudflare_dns.py
|
||||
lib/ansible/modules/network/dnsimple.py
|
||||
lib/ansible/modules/network/dnsmadeeasy.py
|
||||
lib/ansible/modules/network/exoscale/exo_dns_record.py
|
||||
lib/ansible/modules/network/f5/bigip_facts.py
|
||||
lib/ansible/modules/network/f5/bigip_monitor_tcp.py
|
||||
lib/ansible/modules/network/f5/bigip_node.py
|
||||
|
|
Loading…
Reference in a new issue