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

This commit is contained in:
Alex Stephen 2019-01-23 13:45:30 -08:00
commit a81d110422
24 changed files with 419 additions and 622 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 = '''
---
@ -443,34 +442,33 @@ def main():
argument_spec=dict(
state=dict(default='present', choices=['present', 'absent'], type='str'),
name=dict(type='str'),
config=dict(type='dict', options=dict(
machine_type=dict(type='str'),
disk_size_gb=dict(type='int'),
oauth_scopes=dict(type='list', elements='str'),
service_account=dict(type='str'),
metadata=dict(type='dict'),
image_type=dict(type='str'),
labels=dict(type='dict'),
local_ssd_count=dict(type='int'),
tags=dict(type='list', elements='str'),
preemptible=dict(type='bool')
)),
config=dict(
type='dict',
options=dict(
machine_type=dict(type='str'),
disk_size_gb=dict(type='int'),
oauth_scopes=dict(type='list', elements='str'),
service_account=dict(type='str'),
metadata=dict(type='dict'),
image_type=dict(type='str'),
labels=dict(type='dict'),
local_ssd_count=dict(type='int'),
tags=dict(type='list', elements='str'),
preemptible=dict(type='bool'),
),
),
initial_node_count=dict(required=True, type='int'),
autoscaling=dict(type='dict', options=dict(
enabled=dict(type='bool'),
min_node_count=dict(type='int'),
max_node_count=dict(type='int')
)),
management=dict(type='dict', options=dict(
auto_upgrade=dict(type='bool'),
auto_repair=dict(type='bool'),
upgrade_options=dict(type='dict', options=dict(
auto_upgrade_start_time=dict(type='str'),
description=dict(type='str')
))
)),
autoscaling=dict(type='dict', options=dict(enabled=dict(type='bool'), min_node_count=dict(type='int'), max_node_count=dict(type='int'))),
management=dict(
type='dict',
options=dict(
auto_upgrade=dict(type='bool'),
auto_repair=dict(type='bool'),
upgrade_options=dict(type='dict', options=dict(auto_upgrade_start_time=dict(type='str'), description=dict(type='str'))),
),
),
cluster=dict(required=True),
zone=dict(required=True, type='str')
zone=dict(required=True, type='str'),
)
)
@ -525,7 +523,7 @@ def resource_to_request(module):
u'config': NodePoolConfig(module.params.get('config', {}), module).to_request(),
u'initialNodeCount': module.params.get('initial_node_count'),
u'autoscaling': NodePoolAutoscaling(module.params.get('autoscaling', {}), module).to_request(),
u'management': NodePoolManagement(module.params.get('management', {}), module).to_request()
u'management': NodePoolManagement(module.params.get('management', {}), module).to_request(),
}
request = encode_request(request, module)
return_vals = {}
@ -546,17 +544,13 @@ def self_link(module):
'project': module.params['project'],
'zone': module.params['zone'],
'cluster': replace_resource_dict(module.params['cluster'], 'name'),
'name': module.params['name']
'name': module.params['name'],
}
return "https://container.googleapis.com/v1/projects/{project}/zones/{zone}/clusters/{cluster}/nodePools/{name}".format(**res)
def collection(module):
res = {
'project': module.params['project'],
'zone': module.params['zone'],
'cluster': replace_resource_dict(module.params['cluster'], 'name')
}
res = {'project': module.params['project'], 'zone': module.params['zone'], 'cluster': replace_resource_dict(module.params['cluster'], 'name')}
return "https://container.googleapis.com/v1/projects/{project}/zones/{zone}/clusters/{cluster}/nodePools".format(**res)
@ -572,8 +566,8 @@ def return_if_object(module, response, 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']))
@ -608,7 +602,7 @@ def response_to_hash(module, response):
u'initialNodeCount': module.params.get('initial_node_count'),
u'version': response.get(u'version'),
u'autoscaling': NodePoolAutoscaling(response.get(u'autoscaling', {}), module).from_response(),
u'management': NodePoolManagement(response.get(u'management', {}), module).from_response()
u'management': NodePoolManagement(response.get(u'management', {}), module).from_response(),
}
@ -634,7 +628,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)
status = navigate_hash(op_result, ['status'])
@ -658,9 +652,7 @@ def raise_if_errors(response, err_path, module):
#
# Format the request to match the expected input by the API
def encode_request(resource_request, module):
return {
'nodePool': resource_request
}
return {'nodePool': resource_request}
class NodePoolConfig(object):
@ -672,32 +664,36 @@ class NodePoolConfig(object):
self.request = {}
def to_request(self):
return remove_nones_from_dict({
u'machineType': self.request.get('machine_type'),
u'diskSizeGb': self.request.get('disk_size_gb'),
u'oauthScopes': self.request.get('oauth_scopes'),
u'serviceAccount': self.request.get('service_account'),
u'metadata': self.request.get('metadata'),
u'imageType': self.request.get('image_type'),
u'labels': self.request.get('labels'),
u'localSsdCount': self.request.get('local_ssd_count'),
u'tags': self.request.get('tags'),
u'preemptible': self.request.get('preemptible')
})
return remove_nones_from_dict(
{
u'machineType': self.request.get('machine_type'),
u'diskSizeGb': self.request.get('disk_size_gb'),
u'oauthScopes': self.request.get('oauth_scopes'),
u'serviceAccount': self.request.get('service_account'),
u'metadata': self.request.get('metadata'),
u'imageType': self.request.get('image_type'),
u'labels': self.request.get('labels'),
u'localSsdCount': self.request.get('local_ssd_count'),
u'tags': self.request.get('tags'),
u'preemptible': self.request.get('preemptible'),
}
)
def from_response(self):
return remove_nones_from_dict({
u'machineType': self.request.get(u'machineType'),
u'diskSizeGb': self.request.get(u'diskSizeGb'),
u'oauthScopes': self.request.get(u'oauthScopes'),
u'serviceAccount': self.request.get(u'serviceAccount'),
u'metadata': self.request.get(u'metadata'),
u'imageType': self.request.get(u'imageType'),
u'labels': self.request.get(u'labels'),
u'localSsdCount': self.request.get(u'localSsdCount'),
u'tags': self.request.get(u'tags'),
u'preemptible': self.request.get(u'preemptible')
})
return remove_nones_from_dict(
{
u'machineType': self.request.get(u'machineType'),
u'diskSizeGb': self.request.get(u'diskSizeGb'),
u'oauthScopes': self.request.get(u'oauthScopes'),
u'serviceAccount': self.request.get(u'serviceAccount'),
u'metadata': self.request.get(u'metadata'),
u'imageType': self.request.get(u'imageType'),
u'labels': self.request.get(u'labels'),
u'localSsdCount': self.request.get(u'localSsdCount'),
u'tags': self.request.get(u'tags'),
u'preemptible': self.request.get(u'preemptible'),
}
)
class NodePoolAutoscaling(object):
@ -709,18 +705,14 @@ class NodePoolAutoscaling(object):
self.request = {}
def to_request(self):
return remove_nones_from_dict({
u'enabled': self.request.get('enabled'),
u'minNodeCount': self.request.get('min_node_count'),
u'maxNodeCount': self.request.get('max_node_count')
})
return remove_nones_from_dict(
{u'enabled': self.request.get('enabled'), u'minNodeCount': self.request.get('min_node_count'), u'maxNodeCount': self.request.get('max_node_count')}
)
def from_response(self):
return remove_nones_from_dict({
u'enabled': self.request.get(u'enabled'),
u'minNodeCount': self.request.get(u'minNodeCount'),
u'maxNodeCount': self.request.get(u'maxNodeCount')
})
return remove_nones_from_dict(
{u'enabled': self.request.get(u'enabled'), u'minNodeCount': self.request.get(u'minNodeCount'), u'maxNodeCount': self.request.get(u'maxNodeCount')}
)
class NodePoolManagement(object):
@ -732,18 +724,22 @@ class NodePoolManagement(object):
self.request = {}
def to_request(self):
return remove_nones_from_dict({
u'autoUpgrade': self.request.get('auto_upgrade'),
u'autoRepair': self.request.get('auto_repair'),
u'upgradeOptions': NodePoolUpgradeoptions(self.request.get('upgrade_options', {}), self.module).to_request()
})
return remove_nones_from_dict(
{
u'autoUpgrade': self.request.get('auto_upgrade'),
u'autoRepair': self.request.get('auto_repair'),
u'upgradeOptions': NodePoolUpgradeoptions(self.request.get('upgrade_options', {}), self.module).to_request(),
}
)
def from_response(self):
return remove_nones_from_dict({
u'autoUpgrade': self.request.get(u'autoUpgrade'),
u'autoRepair': self.request.get(u'autoRepair'),
u'upgradeOptions': NodePoolUpgradeoptions(self.request.get(u'upgradeOptions', {}), self.module).from_response()
})
return remove_nones_from_dict(
{
u'autoUpgrade': self.request.get(u'autoUpgrade'),
u'autoRepair': self.request.get(u'autoRepair'),
u'upgradeOptions': NodePoolUpgradeoptions(self.request.get(u'upgradeOptions', {}), self.module).from_response(),
}
)
class NodePoolUpgradeoptions(object):
@ -755,16 +751,10 @@ class NodePoolUpgradeoptions(object):
self.request = {}
def to_request(self):
return remove_nones_from_dict({
u'autoUpgradeStartTime': self.request.get('auto_upgrade_start_time'),
u'description': self.request.get('description')
})
return remove_nones_from_dict({u'autoUpgradeStartTime': self.request.get('auto_upgrade_start_time'), u'description': self.request.get('description')})
def from_response(self):
return remove_nones_from_dict({
u'autoUpgradeStartTime': self.request.get(u'autoUpgradeStartTime'),
u'description': self.request.get(u'description')
})
return remove_nones_from_dict({u'autoUpgradeStartTime': self.request.get(u'autoUpgradeStartTime'), u'description': self.request.get(u'description')})
if __name__ == '__main__':