浏览代码

add check parameter in ansible neuron. constructor only use **kwargs now

nico 8 年之前
父节点
当前提交
bc4199b6a7
共有 1 个文件被更改,包括 35 次插入25 次删除
  1. 35 25
      neurons/ansible_playbook/ansible_playbook.py

+ 35 - 25
neurons/ansible_playbook/ansible_playbook.py

@@ -4,32 +4,42 @@ from ansible.vars import VariableManager
 from ansible.inventory import Inventory
 from ansible.executor.playbook_executor import PlaybookExecutor
 
-from core.NeuronModule import NeuronModule
+from core.NeuronModule import NeuronModule, MissingParameterException
 
 
 class Ansible_playbook(NeuronModule):
-    def __init__(self, task_file, **kwargs):
+    def __init__(self, **kwargs):
         super(Ansible_playbook, self).__init__(**kwargs)
-        Options = namedtuple('Options',
-                             ['connection', 'forks', 'become', 'become_method', 'become_user', 'check', 'listhosts',
-                              'listtasks', 'listtags', 'syntax', 'module_path'])
-
-        variable_manager = VariableManager()
-        loader = DataLoader()
-        options = Options(connection='local', forks=100, become=None, become_method=None, become_user=None, check=False,
-                          listhosts=False, listtasks=False, listtags=False, syntax=False, module_path="")
-        passwords = dict(vault_pass='secret')
-
-        inventory = Inventory(loader=loader, variable_manager=variable_manager, host_list='localhost')
-        variable_manager.set_inventory(inventory)
-        playbooks = [task_file]
-
-        executor = PlaybookExecutor(
-            playbooks=playbooks,
-            inventory=inventory,
-            variable_manager=variable_manager,
-            loader=loader,
-            options=options,
-            passwords=passwords)
-
-        executor.run()
+
+        self.task_file = kwargs.get('task_file', None)
+
+        # check if parameters have been provided
+        if self._is_parameters_ok():
+
+            Options = namedtuple('Options',
+                                 ['connection', 'forks', 'become', 'become_method', 'become_user', 'check', 'listhosts',
+                                  'listtasks', 'listtags', 'syntax', 'module_path'])
+
+            variable_manager = VariableManager()
+            loader = DataLoader()
+            options = Options(connection='local', forks=100, become=None, become_method=None, become_user=None, check=False,
+                              listhosts=False, listtasks=False, listtags=False, syntax=False, module_path="")
+            passwords = dict(vault_pass='secret')
+
+            inventory = Inventory(loader=loader, variable_manager=variable_manager, host_list='localhost')
+            variable_manager.set_inventory(inventory)
+            playbooks = [self.task_file]
+
+            executor = PlaybookExecutor(
+                playbooks=playbooks,
+                inventory=inventory,
+                variable_manager=variable_manager,
+                loader=loader,
+                options=options,
+                passwords=passwords)
+
+            executor.run()
+
+    def _is_parameters_ok(self):
+        if self.task_file is None:
+            raise MissingParameterException("task_file parameter required")