@ -138,6 +138,7 @@ def validate_size(value, module):
def map_obj_to_commands ( updates , module , os_version ) :
dest_group = ( ' console ' , ' monitor ' , ' buffered ' , ' on ' )
commands = list ( )
want , have = updates
for w in want :
@ -149,14 +150,20 @@ def map_obj_to_commands(updates, module, os_version):
state = w [ ' state ' ]
del w [ ' state ' ]
if facility :
w [ ' dest ' ] = ' facility '
if state == ' absent ' and w in have :
if dest :
if dest == ' host ' :
if ' 12. ' in os_version :
commands . append ( ' no logging {0} ' . format ( name ) )
else :
commands . append ( ' no logging host {0} ' . format ( name ) )
elif dest :
elif dest in dest_group :
commands . append ( ' no logging {0} ' . format ( dest ) )
else :
module . fail_json ( msg = ' dest must be among console, monitor, buffered, host, on ' )
@ -165,6 +172,13 @@ def map_obj_to_commands(updates, module, os_version):
if state == ' present ' and w not in have :
if facility :
present = False
for entry in have :
if entry [ ' dest ' ] == ' facility ' and entry [ ' facility ' ] == facility :
present = True
if not present :
commands . append ( ' logging facility {0} ' . format ( facility ) )
if dest == ' host ' :
@ -177,6 +191,13 @@ def map_obj_to_commands(updates, module, os_version):
commands . append ( ' logging on ' )
elif dest == ' buffered ' and size :
present = False
for entry in have :
if entry [ ' dest ' ] == ' buffered ' and entry [ ' size ' ] == size and entry [ ' level ' ] == level :
present = True
if not present :
if level and level != ' debugging ' :
commands . append ( ' logging buffered {0} {1} ' . format ( size , level ) )
else :
@ -205,18 +226,12 @@ def parse_size(line, dest):
size = None
if dest == ' buffered ' :
match = re . search ( r ' logging buffered (\ S+) ' , line , re . M )
match = re . search ( r ' logging buffered (?: (\ d+))?(?: [a-z]+)? ' , line , re . M )
if match :
try :
int_size = int ( match . group ( 1 ) )
except ValueError :
int_size = None
if int_size :
if isinstance ( int_size , int ) :
size = str ( match . group ( 1 ) )
if match . group ( 1 ) is not None :
size = match . group ( 1 )
else :
size = str ( 4096 )
size = " 4096 "
return size
@ -241,17 +256,14 @@ def parse_level(line, dest):
else :
if dest == ' buffered ' :
match = re . search ( r ' logging buffered (?:\ d+ )([a-z]+)' , line , re . M )
match = re . search ( r ' logging buffered (?: \ d+ )?(?: ([a-z]+))? ' , line , re . M )
else :
match = re . search ( r ' logging {0} ( \ S+) ' . format ( dest ) , line , re . M )
if match :
if match . group ( 1 ) in level_group :
if match and match . group ( 1 ) in level_group :
level = match . group ( 1 )
else :
level = ' debugging '
else :
level = ' debugging '
return level
@ -412,5 +424,6 @@ def main():
module . exit_json ( * * result )
if __name__ == ' __main__ ' :
main ( )