Create a plugin loader system

This commit is contained in:
Daniel Hokka Zakrisson
2012-11-02 00:41:50 +01:00
parent 000d3832cc
commit e05e514861
9 changed files with 118 additions and 85 deletions

View File

@@ -24,32 +24,19 @@ import ansible.constants as C
import os
import os.path
dirname = os.path.dirname(__file__)
modules = utils.import_plugins(os.path.join(dirname, 'connection_plugins'))
for i in reversed(C.DEFAULT_CONNECTION_PLUGIN_PATH.split(os.pathsep)):
modules.update(utils.import_plugins(i))
# rename this module
modules['paramiko'] = modules['paramiko_ssh']
del modules['paramiko_ssh']
class Connection(object):
''' Handles abstract connections to remote hosts '''
def __init__(self, runner):
self.runner = runner
self.modules = None
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
transport = self.runner.transport
module = self.modules.get(transport, None)
if module is None:
conn = utils.plugins.connection_loader.get(transport, self.runner, host, port)
if conn is None:
raise AnsibleError("unsupported connection type: %s" % transport)
conn = module.Connection(self.runner, host, port)
self.active = conn.connect()
return self.active