1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Rename munge methods to preprocess_data.

Remove the call to preprocess_loop data from playbook_include as
includes can't be used with loops.
This commit is contained in:
Toshio Kuratomi 2015-03-23 18:42:28 -07:00
parent 6ba24e9fa1
commit bc69ad8147
8 changed files with 33 additions and 28 deletions

View file

@ -94,11 +94,11 @@ class Base:
setattr(Base, name, property(getter, setter, deleter)) setattr(Base, name, property(getter, setter, deleter))
setattr(self, name, value.default) setattr(self, name, value.default)
def munge(self, ds): def preprocess_data(self, ds):
''' infrequently used method to do some pre-processing of legacy terms ''' ''' infrequently used method to do some pre-processing of legacy terms '''
for base_class in self.__class__.mro(): for base_class in self.__class__.mro():
method = getattr(self, "_munge_%s" % base_class.__name__.lower(), None) method = getattr(self, "_preprocess_data_%s" % base_class.__name__.lower(), None)
if method: if method:
return method(ds) return method(ds)
return ds return ds
@ -121,10 +121,10 @@ class Base:
if isinstance(ds, string_types) or isinstance(ds, FileIO): if isinstance(ds, string_types) or isinstance(ds, FileIO):
ds = self._loader.load(ds) ds = self._loader.load(ds)
# call the munge() function to massage the data into something # call the preprocess_data() function to massage the data into
# we can more easily parse, and then call the validation function # something we can more easily parse, and then call the validation
# on it to ensure there are no incorrect key values # function on it to ensure there are no incorrect key values
ds = self.munge(ds) ds = self.preprocess_data(ds)
self._validate_attributes(ds) self._validate_attributes(ds)
# Walk all attributes in the class. # Walk all attributes in the class.

View file

@ -51,7 +51,13 @@ class Become:
elif has_sudo and has_su: elif has_sudo and has_su:
raise errors.AnsibleParserError('sudo params ("sudo", "sudo_user") and su params ("su", "su_user") cannot be used together') raise errors.AnsibleParserError('sudo params ("sudo", "sudo_user") and su params ("su", "su_user") cannot be used together')
def _munge_become(self, ds): def _preprocess_data_become(self, ds):
"""Preprocess the playbook data for become attributes
This is called from the Base object's preprocess_data() method which
in turn is called pretty much anytime any sort of playbook object
(plays, tasks, blocks, etc) are created.
"""
self._detect_privilege_escalation_conflict(ds) self._detect_privilege_escalation_conflict(ds)

View file

@ -66,7 +66,7 @@ class Block(Base, Become, Conditional, Taggable):
b = Block(parent_block=parent_block, role=role, task_include=task_include, use_handlers=use_handlers) b = Block(parent_block=parent_block, role=role, task_include=task_include, use_handlers=use_handlers)
return b.load_data(data, variable_manager=variable_manager, loader=loader) return b.load_data(data, variable_manager=variable_manager, loader=loader)
def munge(self, ds): def preprocess_data(self, ds):
''' '''
If a simple task is given, an implicit block for that single task If a simple task is given, an implicit block for that single task
is created, which goes in the main portion of the block is created, which goes in the main portion of the block
@ -80,11 +80,11 @@ class Block(Base, Become, Conditional, Taggable):
if not is_block: if not is_block:
if isinstance(ds, list): if isinstance(ds, list):
return super(Block, self).munge(dict(block=ds)) return super(Block, self).preprocess_data(dict(block=ds))
else: else:
return super(Block, self).munge(dict(block=[ds])) return super(Block, self).preprocess_data(dict(block=[ds]))
return super(Block, self).munge(ds) return super(Block, self).preprocess_data(ds)
def _load_block(self, attr, ds): def _load_block(self, attr, ds):
return load_list_of_tasks( return load_list_of_tasks(

View file

@ -102,7 +102,7 @@ class Play(Base, Taggable, Become):
p = Play() p = Play()
return p.load_data(data, variable_manager=variable_manager, loader=loader) return p.load_data(data, variable_manager=variable_manager, loader=loader)
def munge(self, ds): def preprocess_data(self, ds):
''' '''
Adjusts play datastructure to cleanup old/legacy items Adjusts play datastructure to cleanup old/legacy items
''' '''
@ -121,7 +121,7 @@ class Play(Base, Taggable, Become):
ds['remote_user'] = ds['user'] ds['remote_user'] = ds['user']
del ds['user'] del ds['user']
return super(Play, self).munge(ds) return super(Play, self).preprocess_data(ds)
def _load_vars(self, attr, ds): def _load_vars(self, attr, ds):
''' '''

View file

@ -48,7 +48,8 @@ class PlaybookInclude(Base):
from ansible.playbook import Playbook from ansible.playbook import Playbook
# first, we use the original parent method to correctly load the object # first, we use the original parent method to correctly load the object
# via the munge/load_data system we normally use for other playbook objects # via the load_data/preprocess_data system we normally use for other
# playbook objects
new_obj = super(PlaybookInclude, self).load_data(ds, variable_manager, loader) new_obj = super(PlaybookInclude, self).load_data(ds, variable_manager, loader)
# then we use the object to load a Playbook # then we use the object to load a Playbook
@ -67,7 +68,7 @@ class PlaybookInclude(Base):
return pb return pb
def munge(self, ds): def preprocess_data(self, ds):
''' '''
Regorganizes the data for a PlaybookInclude datastructure to line Regorganizes the data for a PlaybookInclude datastructure to line
up with what we expect the proper attributes to be up with what we expect the proper attributes to be
@ -83,9 +84,7 @@ class PlaybookInclude(Base):
for (k,v) in ds.iteritems(): for (k,v) in ds.iteritems():
if k == 'include': if k == 'include':
self._munge_include(ds, new_ds, k, v) self._preprocess_include(ds, new_ds, k, v)
elif k.replace("with_", "") in lookup_loader:
self._munge_loop(ds, new_ds, k, v)
else: else:
# some basic error checking, to make sure vars are properly # some basic error checking, to make sure vars are properly
# formatted and do not conflict with k=v parameters # formatted and do not conflict with k=v parameters
@ -98,9 +97,9 @@ class PlaybookInclude(Base):
raise AnsibleParserError("vars for include statements must be specified as a dictionary", obj=ds) raise AnsibleParserError("vars for include statements must be specified as a dictionary", obj=ds)
new_ds[k] = v new_ds[k] = v
return super(PlaybookInclude, self).munge(new_ds) return super(PlaybookInclude, self).preprocess_data(new_ds)
def _munge_include(self, ds, new_ds, k, v): def _preprocess_include(self, ds, new_ds, k, v):
''' '''
Splits the include line up into filename and parameters Splits the include line up into filename and parameters
''' '''

View file

@ -54,12 +54,12 @@ class RoleDefinition(Base, Become, Conditional, Taggable):
def load(data, variable_manager=None, loader=None): def load(data, variable_manager=None, loader=None):
raise AnsibleError("not implemented") raise AnsibleError("not implemented")
def munge(self, ds): def preprocess_data(self, ds):
assert isinstance(ds, dict) or isinstance(ds, string_types) assert isinstance(ds, dict) or isinstance(ds, string_types)
if isinstance(ds, dict): if isinstance(ds, dict):
ds = super(RoleDefinition, self).munge(ds) ds = super(RoleDefinition, self).preprocess_data(ds)
# we create a new data structure here, using the same # we create a new data structure here, using the same
# object used internally by the YAML parsing code so we # object used internally by the YAML parsing code so we

View file

@ -61,7 +61,7 @@ class RoleRequirement(RoleDefinition):
if isinstance(ds, string_types): if isinstance(ds, string_types):
role_name = ds role_name = ds
else: else:
ds = self._munge_role_spec(ds) ds = self._preprocess_role_spec(ds)
(new_ds, role_params) = self._split_role_params(ds) (new_ds, role_params) = self._split_role_params(ds)
# pull the role name out of the ds # pull the role name out of the ds
@ -70,7 +70,7 @@ class RoleRequirement(RoleDefinition):
return (new_ds, role_name, role_params) return (new_ds, role_name, role_params)
def _munge_role_spec(self, ds): def _preprocess_role_spec(self, ds):
if 'role' in ds: if 'role' in ds:
# Old style: {role: "galaxy.role,version,name", other_vars: "here" } # Old style: {role: "galaxy.role,version,name", other_vars: "here" }
role_info = self._role_spec_parse(ds['role']) role_info = self._role_spec_parse(ds['role'])

View file

@ -137,7 +137,7 @@ class Task(Base, Conditional, Taggable, Become):
''' returns a human readable representation of the task ''' ''' returns a human readable representation of the task '''
return "TASK: %s" % self.get_name() return "TASK: %s" % self.get_name()
def _munge_loop(self, ds, new_ds, k, v): def _preprocess_loop(self, ds, new_ds, k, v):
''' take a lookup plugin name and store it correctly ''' ''' take a lookup plugin name and store it correctly '''
loop_name = k.replace("with_", "") loop_name = k.replace("with_", "")
@ -146,7 +146,7 @@ class Task(Base, Conditional, Taggable, Become):
new_ds['loop'] = loop_name new_ds['loop'] = loop_name
new_ds['loop_args'] = v new_ds['loop_args'] = v
def munge(self, ds): def preprocess_data(self, ds):
''' '''
tasks are especially complex arguments so need pre-processing. tasks are especially complex arguments so need pre-processing.
keep it short. keep it short.
@ -178,11 +178,11 @@ class Task(Base, Conditional, Taggable, Become):
# determined by the ModuleArgsParser() above # determined by the ModuleArgsParser() above
continue continue
elif k.replace("with_", "") in lookup_loader: elif k.replace("with_", "") in lookup_loader:
self._munge_loop(ds, new_ds, k, v) self._preprocess_loop(ds, new_ds, k, v)
else: else:
new_ds[k] = v new_ds[k] = v
return super(Task, self).munge(new_ds) return super(Task, self).preprocess_data(new_ds)
def post_validate(self, all_vars=dict(), fail_on_undefined=True): def post_validate(self, all_vars=dict(), fail_on_undefined=True):
''' '''