def test_unknown_action(self): action_name = 'foo_test_unknown_action' ds = [{'action': action_name}] res = helpers.load_list_of_tasks(ds, play=self.mock_play, variable_manager=self.mock_variable_manager, loader=self.fake_loader) self._assert_is_task_list_or_blocks(res) self.assertEquals(res[0].action, action_name)
def test_one_include_use_handlers(self): ds = [{'include': '/dev/null/includes/other_test_include.yml'}] res = helpers.load_list_of_tasks(ds, play=self.mock_play, use_handlers=True, variable_manager=self.mock_variable_manager, loader=self.fake_include_loader) self._assert_is_task_list_or_blocks(res) self.assertIsInstance(res[0], Handler)
def test_one_parent_include(self): ds = [{'include': '/dev/null/includes/test_include.yml'}] res = helpers.load_list_of_tasks(ds, play=self.mock_play, variable_manager=self.mock_variable_manager, loader=self.fake_include_loader) self._assert_is_task_list_or_blocks(res) self.assertIsInstance(res[0], Block) self.assertIsInstance(res[0]._parent, TaskInclude)
def test_one_bogus_include_static(self): ds = [{'include': 'somefile.yml', 'static': 'true'}] res = helpers.load_list_of_tasks(ds, play=self.mock_play, variable_manager=self.mock_variable_manager, loader=self.fake_loader) self.assertIsInstance(res, list) self.assertEquals(len(res), 0)
def test_one_bogus_include_role(self): ds = [{'include_role': {'name': 'bogus_role'}}] res = helpers.load_list_of_tasks(ds, play=self.mock_play, block=self.mock_block, variable_manager=self.mock_variable_manager, loader=self.fake_role_loader) self.assertEquals(len(res), 1) self._assert_is_task_list_or_blocks(res)
def _load_rescue(self, attr, ds): return load_list_of_tasks(ds, block=self, role=self._role, variable_manager=self._variable_manager, loader=self._loader, use_handlers=self._use_handlers)
def test_block_unknown_action_use_handlers(self): ds = [{ 'block': [{'action': 'foo_test_block_unknown_action'}] }] res = helpers.load_list_of_tasks(ds, play=self.mock_play, use_handlers=True, variable_manager=self.mock_variable_manager, loader=self.fake_loader) self._assert_is_task_list_or_blocks(res) self.assertIsInstance(res[0], Block) self._assert_default_block(res[0])
def test_one_include(self): ds = [{'include': '/dev/null/includes/other_test_include.yml'}] res = helpers.load_list_of_tasks( ds, play=self.mock_play, variable_manager=self.mock_variable_manager, loader=self.fake_include_loader) self.assertEquals(len(res), 1) self._assert_is_task_list_or_blocks(res)
def _load_rescue(self, attr, ds): return load_list_of_tasks( ds, block=self, role=self._role, task_include=self._task_include, variable_manager=self._variable_manager, loader=self._loader, use_handlers=self._use_handlers, )
def test_one_include_tags_deprecated_include(self): ds = [{'include': '/dev/null/includes/other_test_include.yml', 'vars': {'tags': ['include_tag1_deprecated', 'and_another_tagB_deprecated']} }] res = helpers.load_list_of_tasks(ds, play=self.mock_play, variable_manager=self.mock_variable_manager, loader=self.fake_include_loader) self._assert_is_task_list_or_blocks(res) self.assertIsInstance(res[0], Block) self.assertIn('include_tag1_deprecated', res[0].tags) self.assertIn('and_another_tagB_deprecated', res[0].tags)
def _load_always(self, attr, ds): return load_list_of_tasks( ds, block=self, role=self._role, task_include=self._task_include, variable_manager=self._variable_manager, loader=self._loader, use_handlers=self._use_handlers, )
def test_one_bogus_include_use_handlers(self): ds = [{'include': 'somefile.yml'}] res = helpers.load_list_of_tasks( ds, play=self.mock_play, use_handlers=True, variable_manager=self.mock_variable_manager, loader=self.fake_loader) self.assertIsInstance(res, list) self.assertEqual(len(res), 0)
def test_one_bogus_include_role_use_handlers(self): ds = [{'include_role': {'name': 'bogus_role'}, 'collections': []}] res = helpers.load_list_of_tasks( ds, play=self.mock_play, use_handlers=True, block=self.mock_block, variable_manager=self.mock_variable_manager, loader=self.fake_role_loader) self.assertEqual(len(res), 1) self._assert_is_task_list_or_blocks(res)
def _load_always(self, attr, ds): try: return load_list_of_tasks( ds, play=self._play, block=self, role=self._role, task_include=None, variable_manager=self._variable_manager, loader=self._loader, use_handlers=self._use_handlers, ) except AssertionError: raise AnsibleParserError("A malformed block was encountered.", obj=self._ds)
def test_one_include_not_static(self): ds = [{ 'include_tasks': '/dev/null/includes/static_test_include.yml', }] # a_block = Block() ti_ds = {'include_tasks': '/dev/null/includes/ssdftatic_test_include.yml'} a_task_include = TaskInclude() ti = a_task_include.load(ti_ds) res = helpers.load_list_of_tasks(ds, play=self.mock_play, block=ti, variable_manager=self.mock_variable_manager, loader=self.fake_include_loader) self._assert_is_task_list_or_blocks(res) self.assertIsInstance(res[0], Task) self.assertEqual(res[0].args['_raw_params'], '/dev/null/includes/static_test_include.yml')
def test_one_include_not_static(self): ds = [{ 'include': '/dev/null/includes/static_test_include.yml', 'static': False }] # a_block = Block() ti_ds = {'include': '/dev/null/includes/ssdftatic_test_include.yml'} a_task_include = TaskInclude() ti = a_task_include.load(ti_ds) res = helpers.load_list_of_tasks(ds, play=self.mock_play, block=ti, variable_manager=self.mock_variable_manager, loader=self.fake_include_loader) self._assert_is_task_list_or_blocks(res) self.assertIsInstance(res[0], Task) self.assertEquals(res[0].args['_raw_params'], '/dev/null/includes/static_test_include.yml')
def load(data, block=None, role=None, task_include=None, variable_manager=None, loader=None, play=None): h = Handler(block=block, role=role, task_include=task_include) h.load_data(data, variable_manager=variable_manager, loader=loader) if h.action == 'include': filenames = h.args['_raw_params'].strip().split() retval = [] for filename in filenames: display.debug('loading handlers from %s' % filename) ds = loader.load_from_file(filename) if ds is None: continue elif not isinstance(ds, list): raise AnsibleError("included task files must contain a list of tasks") handlers = load_list_of_tasks(ds, play=play, use_handlers=True, loader=loader) retval.extend(handlers) return retval return h
def _load_rescue(self, attr, ds): return load_list_of_tasks(ds, block=self, loader=self._loader)
def _load_always(self, attr, ds): return load_list_of_tasks(ds, block=self, loader=self._loader)
def test_one_include(self): ds = [{'include': '/dev/null/includes/other_test_include.yml'}] res = helpers.load_list_of_tasks(ds, play=self.mock_play, variable_manager=self.mock_variable_manager, loader=self.fake_include_loader) self.assertEquals(len(res), 1) self._assert_is_task_list_or_blocks(res)