Bug fixes for GCP modules (as of 2019-01-22T12:43:52-08:00) (#51244)

This commit is contained in:
Alex Stephen 2019-01-23 13:45:52 -08:00
commit 7dcce92f1c
24 changed files with 776 additions and 813 deletions

View file

@ -18,15 +18,14 @@
# ----------------------------------------------------------------------------
from __future__ import absolute_import, division, print_function
__metaclass__ = type
################################################################################
# Documentation
################################################################################
ANSIBLE_METADATA = {'metadata_version': '1.1',
'status': ["preview"],
'supported_by': 'community'}
ANSIBLE_METADATA = {'metadata_version': '1.1', 'status': ["preview"], 'supported_by': 'community'}
DOCUMENTATION = '''
---
@ -537,38 +536,50 @@ def main():
timeout_sec=dict(default=5, type='int', aliases=['timeout_seconds']),
unhealthy_threshold=dict(default=2, type='int'),
type=dict(type='str', choices=['TCP', 'SSL', 'HTTP', 'HTTPS']),
http_health_check=dict(type='dict', options=dict(
host=dict(type='str'),
request_path=dict(default='/', type='str'),
response=dict(type='str'),
port=dict(type='int'),
port_name=dict(type='str'),
proxy_header=dict(default='NONE', type='str', choices=['NONE', 'PROXY_V1'])
)),
https_health_check=dict(type='dict', options=dict(
host=dict(type='str'),
request_path=dict(default='/', type='str'),
response=dict(type='str'),
port=dict(type='int'),
port_name=dict(type='str'),
proxy_header=dict(default='NONE', type='str', choices=['NONE', 'PROXY_V1'])
)),
tcp_health_check=dict(type='dict', options=dict(
request=dict(type='str'),
response=dict(type='str'),
port=dict(type='int'),
port_name=dict(type='str'),
proxy_header=dict(default='NONE', type='str', choices=['NONE', 'PROXY_V1'])
)),
ssl_health_check=dict(type='dict', options=dict(
request=dict(type='str'),
response=dict(type='str'),
port=dict(type='int'),
port_name=dict(type='str'),
proxy_header=dict(default='NONE', type='str', choices=['NONE', 'PROXY_V1'])
))
http_health_check=dict(
type='dict',
options=dict(
host=dict(type='str'),
request_path=dict(default='/', type='str'),
response=dict(type='str'),
port=dict(type='int'),
port_name=dict(type='str'),
proxy_header=dict(default='NONE', type='str', choices=['NONE', 'PROXY_V1']),
),
),
https_health_check=dict(
type='dict',
options=dict(
host=dict(type='str'),
request_path=dict(default='/', type='str'),
response=dict(type='str'),
port=dict(type='int'),
port_name=dict(type='str'),
proxy_header=dict(default='NONE', type='str', choices=['NONE', 'PROXY_V1']),
),
),
tcp_health_check=dict(
type='dict',
options=dict(
request=dict(type='str'),
response=dict(type='str'),
port=dict(type='int'),
port_name=dict(type='str'),
proxy_header=dict(default='NONE', type='str', choices=['NONE', 'PROXY_V1']),
),
),
ssl_health_check=dict(
type='dict',
options=dict(
request=dict(type='str'),
response=dict(type='str'),
port=dict(type='int'),
port_name=dict(type='str'),
proxy_header=dict(default='NONE', type='str', choices=['NONE', 'PROXY_V1']),
),
),
),
mutually_exclusive=[['http_health_check', 'https_health_check', 'ssl_health_check', 'tcp_health_check']]
mutually_exclusive=[['http_health_check', 'https_health_check', 'ssl_health_check', 'tcp_health_check']],
)
if not module.params['scopes']:
@ -630,7 +641,7 @@ def resource_to_request(module):
u'httpHealthCheck': HealthCheckHttphealthcheck(module.params.get('http_health_check', {}), module).to_request(),
u'httpsHealthCheck': HealthCheckHttpshealthcheck(module.params.get('https_health_check', {}), module).to_request(),
u'tcpHealthCheck': HealthCheckTcphealthcheck(module.params.get('tcp_health_check', {}), module).to_request(),
u'sslHealthCheck': HealthCheckSslhealthcheck(module.params.get('ssl_health_check', {}), module).to_request()
u'sslHealthCheck': HealthCheckSslhealthcheck(module.params.get('ssl_health_check', {}), module).to_request(),
}
return_vals = {}
for k, v in request.items():
@ -665,8 +676,8 @@ def return_if_object(module, response, kind, allow_not_found=False):
try:
module.raise_for_status(response)
result = response.json()
except getattr(json.decoder, 'JSONDecodeError', ValueError) as inst:
module.fail_json(msg="Invalid JSON response with error: %s" % inst)
except getattr(json.decoder, 'JSONDecodeError', ValueError):
module.fail_json(msg="Invalid JSON response with error: %s" % response.text)
if navigate_hash(result, ['error', 'errors']):
module.fail_json(msg=navigate_hash(result, ['error', 'errors']))
@ -708,7 +719,7 @@ def response_to_hash(module, response):
u'httpHealthCheck': HealthCheckHttphealthcheck(response.get(u'httpHealthCheck', {}), module).from_response(),
u'httpsHealthCheck': HealthCheckHttpshealthcheck(response.get(u'httpsHealthCheck', {}), module).from_response(),
u'tcpHealthCheck': HealthCheckTcphealthcheck(response.get(u'tcpHealthCheck', {}), module).from_response(),
u'sslHealthCheck': HealthCheckSslhealthcheck(response.get(u'sslHealthCheck', {}), module).from_response()
u'sslHealthCheck': HealthCheckSslhealthcheck(response.get(u'sslHealthCheck', {}), module).from_response(),
}
@ -734,7 +745,7 @@ def wait_for_completion(status, op_result, module):
op_id = navigate_hash(op_result, ['name'])
op_uri = async_op_url(module, {'op_id': op_id})
while status != 'DONE':
raise_if_errors(op_result, ['error', 'errors'], 'message')
raise_if_errors(op_result, ['error', 'errors'], module)
time.sleep(1.0)
op_result = fetch_resource(module, op_uri, 'compute#operation')
status = navigate_hash(op_result, ['status'])
@ -756,24 +767,28 @@ class HealthCheckHttphealthcheck(object):
self.request = {}
def to_request(self):
return remove_nones_from_dict({
u'host': self.request.get('host'),
u'requestPath': self.request.get('request_path'),
u'response': self.request.get('response'),
u'port': self.request.get('port'),
u'portName': self.request.get('port_name'),
u'proxyHeader': self.request.get('proxy_header')
})
return remove_nones_from_dict(
{
u'host': self.request.get('host'),
u'requestPath': self.request.get('request_path'),
u'response': self.request.get('response'),
u'port': self.request.get('port'),
u'portName': self.request.get('port_name'),
u'proxyHeader': self.request.get('proxy_header'),
}
)
def from_response(self):
return remove_nones_from_dict({
u'host': self.request.get(u'host'),
u'requestPath': self.request.get(u'requestPath'),
u'response': self.request.get(u'response'),
u'port': self.request.get(u'port'),
u'portName': self.request.get(u'portName'),
u'proxyHeader': self.request.get(u'proxyHeader')
})
return remove_nones_from_dict(
{
u'host': self.request.get(u'host'),
u'requestPath': self.request.get(u'requestPath'),
u'response': self.request.get(u'response'),
u'port': self.request.get(u'port'),
u'portName': self.request.get(u'portName'),
u'proxyHeader': self.request.get(u'proxyHeader'),
}
)
class HealthCheckHttpshealthcheck(object):
@ -785,24 +800,28 @@ class HealthCheckHttpshealthcheck(object):
self.request = {}
def to_request(self):
return remove_nones_from_dict({
u'host': self.request.get('host'),
u'requestPath': self.request.get('request_path'),
u'response': self.request.get('response'),
u'port': self.request.get('port'),
u'portName': self.request.get('port_name'),
u'proxyHeader': self.request.get('proxy_header')
})
return remove_nones_from_dict(
{
u'host': self.request.get('host'),
u'requestPath': self.request.get('request_path'),
u'response': self.request.get('response'),
u'port': self.request.get('port'),
u'portName': self.request.get('port_name'),
u'proxyHeader': self.request.get('proxy_header'),
}
)
def from_response(self):
return remove_nones_from_dict({
u'host': self.request.get(u'host'),
u'requestPath': self.request.get(u'requestPath'),
u'response': self.request.get(u'response'),
u'port': self.request.get(u'port'),
u'portName': self.request.get(u'portName'),
u'proxyHeader': self.request.get(u'proxyHeader')
})
return remove_nones_from_dict(
{
u'host': self.request.get(u'host'),
u'requestPath': self.request.get(u'requestPath'),
u'response': self.request.get(u'response'),
u'port': self.request.get(u'port'),
u'portName': self.request.get(u'portName'),
u'proxyHeader': self.request.get(u'proxyHeader'),
}
)
class HealthCheckTcphealthcheck(object):
@ -814,22 +833,26 @@ class HealthCheckTcphealthcheck(object):
self.request = {}
def to_request(self):
return remove_nones_from_dict({
u'request': self.request.get('request'),
u'response': self.request.get('response'),
u'port': self.request.get('port'),
u'portName': self.request.get('port_name'),
u'proxyHeader': self.request.get('proxy_header')
})
return remove_nones_from_dict(
{
u'request': self.request.get('request'),
u'response': self.request.get('response'),
u'port': self.request.get('port'),
u'portName': self.request.get('port_name'),
u'proxyHeader': self.request.get('proxy_header'),
}
)
def from_response(self):
return remove_nones_from_dict({
u'request': self.request.get(u'request'),
u'response': self.request.get(u'response'),
u'port': self.request.get(u'port'),
u'portName': self.request.get(u'portName'),
u'proxyHeader': self.request.get(u'proxyHeader')
})
return remove_nones_from_dict(
{
u'request': self.request.get(u'request'),
u'response': self.request.get(u'response'),
u'port': self.request.get(u'port'),
u'portName': self.request.get(u'portName'),
u'proxyHeader': self.request.get(u'proxyHeader'),
}
)
class HealthCheckSslhealthcheck(object):
@ -841,22 +864,26 @@ class HealthCheckSslhealthcheck(object):
self.request = {}
def to_request(self):
return remove_nones_from_dict({
u'request': self.request.get('request'),
u'response': self.request.get('response'),
u'port': self.request.get('port'),
u'portName': self.request.get('port_name'),
u'proxyHeader': self.request.get('proxy_header')
})
return remove_nones_from_dict(
{
u'request': self.request.get('request'),
u'response': self.request.get('response'),
u'port': self.request.get('port'),
u'portName': self.request.get('port_name'),
u'proxyHeader': self.request.get('proxy_header'),
}
)
def from_response(self):
return remove_nones_from_dict({
u'request': self.request.get(u'request'),
u'response': self.request.get(u'response'),
u'port': self.request.get(u'port'),
u'portName': self.request.get(u'portName'),
u'proxyHeader': self.request.get(u'proxyHeader')
})
return remove_nones_from_dict(
{
u'request': self.request.get(u'request'),
u'response': self.request.get(u'response'),
u'port': self.request.get(u'port'),
u'portName': self.request.get(u'portName'),
u'proxyHeader': self.request.get(u'proxyHeader'),
}
)
if __name__ == '__main__':