Look for plugins in the playbook's basedir

This commit is contained in:
Daniel Hokka Zakrisson 2012-09-15 02:02:38 +02:00
commit 1aaf86069a
4 changed files with 17 additions and 1 deletions

View file

@ -46,6 +46,9 @@ def call_callback_module(method_name, *args, **kwargs):
if method is not None: if method is not None:
method(*args, **kwargs) method(*args, **kwargs)
def load_more_callbacks(dirname):
callbacks.extend([c.CallbackModule() for c in utils.import_plugins(dirname).values()])
def vv(msg, host=None): def vv(msg, host=None):
return verbose(msg, host=host, caplevel=1) return verbose(msg, host=host, caplevel=1)

View file

@ -20,6 +20,7 @@ import ansible.runner
import ansible.constants as C import ansible.constants as C
from ansible import utils from ansible import utils
from ansible import errors from ansible import errors
import ansible.callbacks
import os import os
import collections import collections
from play import Play from play import Play
@ -120,6 +121,9 @@ class PlayBook(object):
self.basedir = os.path.dirname(playbook) self.basedir = os.path.dirname(playbook)
(self.playbook, self.play_basedirs) = self._load_playbook_from_file(playbook) (self.playbook, self.play_basedirs) = self._load_playbook_from_file(playbook)
self.module_path = self.module_path + os.pathsep + os.path.join(self.basedir, "library") self.module_path = self.module_path + os.pathsep + os.path.join(self.basedir, "library")
ansible.callbacks.load_more_callbacks(os.path.join(self.basedir, "callback_plugins"))
self.lookup_plugins_list.update(utils.import_plugins(os.path.join(self.basedir, 'lookup_plugins')))
# ***************************************************** # *****************************************************

View file

@ -167,6 +167,11 @@ class Runner(object):
for (k,v) in lookup_plugin_list.iteritems(): for (k,v) in lookup_plugin_list.iteritems():
self.lookup_plugins[k] = v.LookupModule(self) self.lookup_plugins[k] = v.LookupModule(self)
for (k,v) in utils.import_plugins(os.path.join(self.basedir, 'action_plugins')).iteritems():
self.action_plugins[k] = v.ActionModule(self)
for (k,v) in utils.import_plugins(os.path.join(self.basedir, 'lookup_plugins')).iteritems():
self.lookup_plugins[k] = v.LookupModule(self)
# ***************************************************** # *****************************************************
def _delete_remote_files(self, conn, files): def _delete_remote_files(self, conn, files):

View file

@ -34,11 +34,15 @@ class Connection(object):
def __init__(self, runner): def __init__(self, runner):
self.runner = runner self.runner = runner
self.modules = None
def connect(self, host, port): def connect(self, host, port):
if self.modules is None:
self.modules = modules.copy()
self.modules.update(utils.import_plugins(os.path.join(self.runner.basedir, 'connection_plugins')))
conn = None conn = None
transport = self.runner.transport transport = self.runner.transport
module = modules.get(transport, None) module = self.modules.get(transport, None)
if module is None: if module is None:
raise AnsibleError("unsupported connection type: %s" % transport) raise AnsibleError("unsupported connection type: %s" % transport)
conn = module.Connection(self.runner, host, port) conn = module.Connection(self.runner, host, port)