Source code for nuka.tasks.apache
# -*- coding: utf-8 -*-
"""
apache related tasks
"""
import os
from nuka.task import Task
[docs]class a2ensite(Task):
"""a2ensite"""
def __init__(self, names=None, **kwargs):
super(a2ensite, self).__init__(names=names, **kwargs)
def pre_process(self):
args = self.args
class_name = self.__class__.__name__
if class_name.startswith('a2en'):
enable = True
type = class_name[4:]
else:
enable = False
type = class_name[5:]
type = type if type == 'conf' else type + 's'
args.update(
binary=class_name,
enable=enable,
type=type,
)
elements = []
names = args['names']
if isinstance(names, str):
names = [names]
for name in names:
args['name'] = name
filename = (
'/etc/apache2/{type}-enabled/{name}'.format(**args))
if type == 'mods':
filename += '.load'
elif type == 'conf':
filename += '.conf'
elements.append((name, filename))
args.update(name=', '.join(names), elements=elements)
def do(self):
diffs = self.get_diffs()
if diffs:
return self.sh([self.args['binary']] + diffs)
else:
return dict(rc=0, changed=False)
def get_diffs(self):
diffs = []
for name, filename in self.args['elements']:
if self.args['enable']:
if not os.path.isfile(filename):
diffs.append(name)
elif os.path.isfile(filename):
diffs.append(name)
return diffs
def diff(self):
diffs = self.get_diffs()
diffs = [n + '\n' for n in diffs]
if self.args['enable']:
diff = self.lists_diff([], diffs)
else:
diff = self.lists_diff(diffs, [])
return dict(rc=0, diff=diff)
[docs]class a2dissite(a2ensite):
"""a2dissite"""
[docs]class a2enmod(a2ensite):
"""a2enmod"""
[docs]class a2dismod(a2ensite):
"""a2dismod"""
[docs]class a2enconf(a2ensite):
"""a2enconf"""
[docs]class a2disconf(a2ensite):
"""a2disconf"""