Webfaction will create a default database user when db is created. For symmetry and repeatability, delete it when db is deleted. Add missing param to documentation.

This commit is contained in:
Quentin Stafford-Fraser 2015-06-04 22:17:16 +01:00 committed by Matt Clay
parent 03999b457a
commit 784b265e72

View file

@ -4,7 +4,7 @@
#
# ------------------------------------------
#
# (c) Quentin Stafford-Fraser 2015
# (c) Quentin Stafford-Fraser and Andy Baker 2015
#
# This file is part of Ansible
#
@ -53,6 +53,12 @@ options:
required: true
choices: ['mysql', 'postgresql']
password:
description:
- The password for the new database user.
required: false
default: None
login_name:
description:
- The webfaction account to use
@ -75,6 +81,10 @@ EXAMPLES = '''
type: mysql
login_name: "{{webfaction_user}}"
login_password: "{{webfaction_passwd}}"
# Note that, for symmetry's sake, deleting a database using
# 'state: absent' will also delete the matching user.
'''
import socket
@ -110,13 +120,17 @@ def main():
db_map = dict([(i['name'], i) for i in db_list])
existing_db = db_map.get(db_name)
user_list = webfaction.list_db_users(session_id)
user_map = dict([(i['username'], i) for i in user_list])
existing_user = user_map.get(db_name)
result = {}
# Here's where the real stuff happens
if db_state == 'present':
# Does an app with this name already exist?
# Does an database with this name already exist?
if existing_db:
# Yes, but of a different type - fail
if existing_db['db_type'] != db_type:
@ -129,8 +143,8 @@ def main():
if not module.check_mode:
# If this isn't a dry run, create the app
# print positional_args
# If this isn't a dry run, create the db
# and default user.
result.update(
webfaction.create_db(
session_id, db_name, db_type, db_passwd
@ -139,18 +153,24 @@ def main():
elif db_state == 'absent':
# If the app's already not there, nothing changed.
if not existing_db:
module.exit_json(
changed = False,
)
# If this isn't a dry run...
if not module.check_mode:
# If this isn't a dry run, delete the app
if not (existing_db or existing_user):
module.exit_json(changed = False,)
if existing_db:
# Delete the db if it exists
result.update(
webfaction.delete_db(session_id, db_name, db_type)
)
if existing_user:
# Delete the default db user if it exists
result.update(
webfaction.delete_db_user(session_id, db_name, db_type)
)
else:
module.fail_json(msg="Unknown state specified: {}".format(db_state))