Bug fixes for GCP modules (#55977)

This commit is contained in:
The Magician 2019-05-20 11:43:38 -07:00 committed by ansibot
parent b37ae35ba0
commit e598eeeebe
8 changed files with 32 additions and 44 deletions

View file

@ -53,8 +53,8 @@ EXAMPLES = '''
''' '''
RETURN = ''' RETURN = '''
items: resources:
description: List of items description: List of resources
returned: always returned: always
type: complex type: complex
contains: contains:
@ -99,7 +99,7 @@ def main():
items = items.get('repos') items = items.get('repos')
else: else:
items = [] items = []
return_value = {'items': items} return_value = {'resources': items}
module.exit_json(**return_value) module.exit_json(**return_value)

View file

@ -63,8 +63,8 @@ EXAMPLES = '''
''' '''
RETURN = ''' RETURN = '''
items: resources:
description: List of items description: List of resources
returned: always returned: always
type: complex type: complex
contains: contains:
@ -111,7 +111,7 @@ def main():
items = items.get('databases') items = items.get('databases')
else: else:
items = [] items = []
return_value = {'items': items} return_value = {'resources': items}
module.exit_json(**return_value) module.exit_json(**return_value)

View file

@ -53,8 +53,8 @@ EXAMPLES = '''
''' '''
RETURN = ''' RETURN = '''
items: resources:
description: List of items description: List of resources
returned: always returned: always
type: complex type: complex
contains: contains:
@ -115,7 +115,7 @@ def main():
items = items.get('instances') items = items.get('instances')
else: else:
items = [] items = []
return_value = {'items': items} return_value = {'resources': items}
module.exit_json(**return_value) module.exit_json(**return_value)

View file

@ -59,15 +59,10 @@ options:
description: description:
- The name of the database in the Cloud SQL instance. - The name of the database in the Cloud SQL instance.
- This does not include the project ID or instance name. - This does not include the project ID or instance name.
required: false required: true
instance: instance:
description: description:
- The name of the Cloud SQL instance. This does not include the project ID. - The name of the Cloud SQL instance. This does not include the project ID.
- 'This field represents a link to a Instance resource in GCP. It can be specified
in two ways. First, you can place a dictionary with key ''name'' and value of
your resource''s name Alternatively, you can add `register: name-of-resource`
to a gcp_sql_instance task and then set this instance field to "{{ name-of-resource
}}"'
required: true required: true
extends_documentation_fragment: gcp extends_documentation_fragment: gcp
''' '''
@ -121,7 +116,7 @@ instance:
description: description:
- The name of the Cloud SQL instance. This does not include the project ID. - The name of the Cloud SQL instance. This does not include the project ID.
returned: success returned: success
type: dict type: str
''' '''
################################################################################ ################################################################################
@ -145,8 +140,8 @@ def main():
state=dict(default='present', choices=['present', 'absent'], type='str'), state=dict(default='present', choices=['present', 'absent'], type='str'),
charset=dict(type='str'), charset=dict(type='str'),
collation=dict(type='str'), collation=dict(type='str'),
name=dict(type='str'), name=dict(required=True, type='str'),
instance=dict(required=True, type='dict'), instance=dict(required=True, type='str'),
) )
) )
@ -199,6 +194,7 @@ def delete(module, link, kind):
def resource_to_request(module): def resource_to_request(module):
request = { request = {
u'kind': 'sql#database', u'kind': 'sql#database',
u'instance': module.params.get('instance'),
u'charset': module.params.get('charset'), u'charset': module.params.get('charset'),
u'collation': module.params.get('collation'), u'collation': module.params.get('collation'),
u'name': module.params.get('name'), u'name': module.params.get('name'),
@ -217,13 +213,11 @@ def fetch_resource(module, link, kind, allow_not_found=True):
def self_link(module): def self_link(module):
res = {'project': module.params['project'], 'instance': replace_resource_dict(module.params['instance'], 'name'), 'name': module.params['name']} return "https://www.googleapis.com/sql/v1beta4/projects/{project}/instances/{instance}/databases/{name}".format(**module.params)
return "https://www.googleapis.com/sql/v1beta4/projects/{project}/instances/{instance}/databases/{name}".format(**res)
def collection(module): def collection(module):
res = {'project': module.params['project'], 'instance': replace_resource_dict(module.params['instance'], 'name')} return "https://www.googleapis.com/sql/v1beta4/projects/{project}/instances/{instance}/databases".format(**module.params)
return "https://www.googleapis.com/sql/v1beta4/projects/{project}/instances/{instance}/databases".format(**res)
def return_if_object(module, response, kind, allow_not_found=False): def return_if_object(module, response, kind, allow_not_found=False):
@ -271,7 +265,7 @@ def is_different(module, response):
# Remove unnecessary properties from the response. # Remove unnecessary properties from the response.
# This is for doing comparisons with Ansible's current parameters. # This is for doing comparisons with Ansible's current parameters.
def response_to_hash(module, response): def response_to_hash(module, response):
return {u'charset': response.get(u'charset'), u'collation': response.get(u'collation'), u'name': response.get(u'name')} return {u'charset': response.get(u'charset'), u'collation': response.get(u'collation'), u'name': module.params.get('name')}
def async_op_url(module, extra_data=None): def async_op_url(module, extra_data=None):

View file

@ -43,11 +43,6 @@ options:
instance: instance:
description: description:
- The name of the Cloud SQL instance. This does not include the project ID. - The name of the Cloud SQL instance. This does not include the project ID.
- 'This field represents a link to a Instance resource in GCP. It can be specified
in two ways. First, you can place a dictionary with key ''name'' and value of
your resource''s name Alternatively, you can add `register: name-of-resource`
to a gcp_sql_instance task and then set this instance field to "{{ name-of-resource
}}"'
required: true required: true
extends_documentation_fragment: gcp extends_documentation_fragment: gcp
''' '''
@ -63,8 +58,8 @@ EXAMPLES = '''
''' '''
RETURN = ''' RETURN = '''
items: resources:
description: List of items description: List of resources
returned: always returned: always
type: complex type: complex
contains: contains:
@ -88,13 +83,13 @@ items:
description: description:
- The name of the Cloud SQL instance. This does not include the project ID. - The name of the Cloud SQL instance. This does not include the project ID.
returned: success returned: success
type: dict type: str
''' '''
################################################################################ ################################################################################
# Imports # Imports
################################################################################ ################################################################################
from ansible.module_utils.gcp_utils import navigate_hash, GcpSession, GcpModule, GcpRequest, replace_resource_dict from ansible.module_utils.gcp_utils import navigate_hash, GcpSession, GcpModule, GcpRequest
import json import json
################################################################################ ################################################################################
@ -103,7 +98,7 @@ import json
def main(): def main():
module = GcpModule(argument_spec=dict(instance=dict(required=True, type='dict'))) module = GcpModule(argument_spec=dict(instance=dict(required=True, type='str')))
if not module.params['scopes']: if not module.params['scopes']:
module.params['scopes'] = ['https://www.googleapis.com/auth/sqlservice.admin'] module.params['scopes'] = ['https://www.googleapis.com/auth/sqlservice.admin']
@ -113,13 +108,12 @@ def main():
items = items.get('items') items = items.get('items')
else: else:
items = [] items = []
return_value = {'items': items} return_value = {'resources': items}
module.exit_json(**return_value) module.exit_json(**return_value)
def collection(module): def collection(module):
res = {'project': module.params['project'], 'instance': replace_resource_dict(module.params['instance'], 'name')} return "https://www.googleapis.com/sql/v1beta4/projects/{project}/instances/{instance}/databases".format(**module.params)
return "https://www.googleapis.com/sql/v1beta4/projects/{project}/instances/{instance}/databases".format(**res)
def fetch_list(module, link): def fetch_list(module, link):

View file

@ -53,8 +53,8 @@ EXAMPLES = '''
''' '''
RETURN = ''' RETURN = '''
items: resources:
description: List of items description: List of resources
returned: always returned: always
type: complex type: complex
contains: contains:
@ -373,7 +373,7 @@ def main():
items = items.get('items') items = items.get('items')
else: else:
items = [] items = []
return_value = {'items': items} return_value = {'resources': items}
module.exit_json(**return_value) module.exit_json(**return_value)

View file

@ -63,8 +63,8 @@ EXAMPLES = '''
''' '''
RETURN = ''' RETURN = '''
items: resources:
description: List of items description: List of resources
returned: always returned: always
type: complex type: complex
contains: contains:
@ -114,7 +114,7 @@ def main():
items = items.get('items') items = items.get('items')
else: else:
items = [] items = []
return_value = {'items': items} return_value = {'resources': items}
module.exit_json(**return_value) module.exit_json(**return_value)

View file

@ -59,7 +59,7 @@
- name: verify that command succeeded - name: verify that command succeeded
assert: assert:
that: that:
- results['items'] | length >= 1 - results['resources'] | length >= 1
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
- name: create a instance that already exists - name: create a instance that already exists
gcp_sql_instance: gcp_sql_instance:
@ -113,7 +113,7 @@
- name: verify that command succeeded - name: verify that command succeeded
assert: assert:
that: that:
- results['items'] | length == 0 - results['resources'] | length == 0
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
- name: delete a instance that does not exist - name: delete a instance that does not exist
gcp_sql_instance: gcp_sql_instance: