File: //proc/self/root/usr/lib/python2.7/site-packages/salt/modules/wordpress.py
# -*- coding: utf-8 -*-
'''
This module is used to manage Wordpress installations
:depends: wp binary from http://wp-cli.org/
'''
# Import Python Modules
from __future__ import absolute_import, print_function, unicode_literals
import collections
# Import Salt Modules
import salt.utils.path
from salt.ext.six.moves import map
Plugin = collections.namedtuple('Plugin', 'name status update versino')
def __virtual__():
if salt.utils.path.which('wp'):
return True
return False
def _get_plugins(stuff):
return Plugin(stuff)
def list_plugins(path, user):
'''
List plugins in an installed wordpress path
path
path to wordpress install location
user
user to run the command as
CLI Example:
.. code-block:: bash
salt '*' wordpress.list_plugins /var/www/html apache
'''
ret = []
resp = __salt__['cmd.shell']((
'wp --path={0} plugin list'
).format(path), runas=user)
for line in resp.split('\n')[1:]:
ret.append(line.split('\t'))
return [plugin.__dict__ for plugin in map(_get_plugins, ret)]
def show_plugin(name, path, user):
'''
Show a plugin in a wordpress install and check if it is installed
name
Wordpress plugin name
path
path to wordpress install location
user
user to run the command as
CLI Example:
.. code-block:: bash
salt '*' wordpress.show_plugin HyperDB /var/www/html apache
'''
ret = {'name': name}
resp = __salt__['cmd.shell']((
'wp --path={0} plugin status {1}'
).format(path, name), runas=user).split('\n')
for line in resp:
if 'Status' in line:
ret['status'] = line.split(' ')[-1].lower()
elif 'Version' in line:
ret['version'] = line.split(' ')[-1].lower()
return ret
def activate(name, path, user):
'''
Activate a wordpress plugin
name
Wordpress plugin name
path
path to wordpress install location
user
user to run the command as
CLI Example:
.. code-block:: bash
salt '*' wordpress.activate HyperDB /var/www/html apache
'''
check = show_plugin(name, path, user)
if check['status'] == 'active':
# already active
return None
resp = __salt__['cmd.shell']((
'wp --path={0} plugin activate {1}'
).format(path, name), runas=user)
if 'Success' in resp:
return True
elif show_plugin(name, path, user)['status'] == 'active':
return True
return False
def deactivate(name, path, user):
'''
Deactivate a wordpress plugin
name
Wordpress plugin name
path
path to wordpress install location
user
user to run the command as
CLI Example:
.. code-block:: bash
salt '*' wordpress.deactivate HyperDB /var/www/html apache
'''
check = show_plugin(name, path, user)
if check['status'] == 'inactive':
# already inactive
return None
resp = __salt__['cmd.shell']((
'wp --path={0} plugin deactivate {1}'
).format(path, name), runas=user)
if 'Success' in resp:
return True
elif show_plugin(name, path, user)['status'] == 'inactive':
return True
return False
def is_installed(path, user=None):
'''
Check if wordpress is installed and setup
path
path to wordpress install location
user
user to run the command as
CLI Example:
.. code-block:: bash
salt '*' wordpress.is_installed /var/www/html apache
'''
retcode = __salt__['cmd.retcode']((
'wp --path={0} core is-installed'
).format(path), runas=user)
if retcode == 0:
return True
return False
def install(path, user, admin_user, admin_password, admin_email, title, url):
'''
Run the initial setup functions for a wordpress install
path
path to wordpress install location
user
user to run the command as
admin_user
Username for the Administrative user for the wordpress install
admin_password
Initial Password for the Administrative user for the wordpress install
admin_email
Email for the Administrative user for the wordpress install
title
Title of the wordpress website for the wordpress install
url
Url for the wordpress install
CLI Example:
.. code-block:: bash
salt '*' wordpress.install /var/www/html apache dwallace password123 \
dwallace@example.com "Daniel's Awesome Blog" https://blog.dwallace.com
'''
retcode = __salt__['cmd.retcode']((
'wp --path={0} core install '
'--title="{1}" '
'--admin_user={2} '
"--admin_password='{3}' "
'--admin_email={4} '
'--url={5}'
).format(
path,
title,
admin_user,
admin_password,
admin_email,
url
), runas=user)
if retcode == 0:
return True
return False