@ -154,16 +154,15 @@ from ansible.module_utils.openstack import openstack_full_argument_spec, opensta
from ansible . module_utils . _text import to_native
from ansible . module_utils . _text import to_native
def _create_stack ( module , stack , cloud , sdk ):
def _create_stack ( module , stack , cloud , sdk , parameters ):
try :
try :
stack = cloud . create_stack ( module . params [ ' name ' ] ,
stack = cloud . create_stack ( module . params [ ' name ' ] ,
tags = module . params [ ' tag ' ] ,
template_file = module . params [ ' template ' ] ,
template_file = module . params [ ' template ' ] ,
environment_files = module . params [ ' environment ' ] ,
environment_files = module . params [ ' environment ' ] ,
timeout = module . params [ ' timeout ' ] ,
timeout = module . params [ ' timeout ' ] ,
wait = True ,
wait = True ,
rollback = module . params [ ' rollback ' ] ,
rollback = module . params [ ' rollback ' ] ,
* * module. params [ ' parameters' ] )
* * parameters)
stack = cloud . get_stack ( stack . id , None )
stack = cloud . get_stack ( stack . id , None )
if stack . stack_status == ' CREATE_COMPLETE ' :
if stack . stack_status == ' CREATE_COMPLETE ' :
@ -177,17 +176,16 @@ def _create_stack(module, stack, cloud, sdk):
module . fail_json ( msg = to_native ( e ) )
module . fail_json ( msg = to_native ( e ) )
def _update_stack ( module , stack , cloud , sdk ):
def _update_stack ( module , stack , cloud , sdk , parameters ):
try :
try :
stack = cloud . update_stack (
stack = cloud . update_stack (
module . params [ ' name ' ] ,
module . params [ ' name ' ] ,
tags = module . params [ ' tag ' ] ,
template_file = module . params [ ' template ' ] ,
template_file = module . params [ ' template ' ] ,
environment_files = module . params [ ' environment ' ] ,
environment_files = module . params [ ' environment ' ] ,
timeout = module . params [ ' timeout ' ] ,
timeout = module . params [ ' timeout ' ] ,
rollback = module . params [ ' rollback ' ] ,
rollback = module . params [ ' rollback ' ] ,
wait = module . params [ ' wait ' ] ,
wait = module . params [ ' wait ' ] ,
* * module. params [ ' parameters' ] )
* * parameters)
if stack [ ' stack_status ' ] == ' UPDATE_COMPLETE ' :
if stack [ ' stack_status ' ] == ' UPDATE_COMPLETE ' :
return stack
return stack
@ -242,24 +240,24 @@ def main():
stack = cloud . get_stack ( name )
stack = cloud . get_stack ( name )
if module . check_mode :
if module . check_mode :
module . exit_json ( changed = _system_state_change ( module , stack ,
module . exit_json ( changed = _system_state_change ( module , stack , cloud ) )
cloud ) )
if state == ' present ' :
if state == ' present ' :
parameters = module . params [ ' parameters ' ]
if module . params [ ' tag ' ] :
parameters [ ' tags ' ] = module . params [ ' tag ' ]
from distutils . version import StrictVersion
min_version = ' 0.28.0 '
if StrictVersion ( sdk . version . __version__ ) < StrictVersion ( min_version ) and stack :
module . warn ( " To update tags using os_stack module, the "
" installed version of the openstacksdk "
" library MUST be >= {min_version} "
" " . format ( min_version = min_version ) )
if not stack :
if not stack :
stack = _create_stack ( module , stack , cloud , sdk )
stack = _create_stack ( module , stack , cloud , sdk , parameters )
else :
else :
if module . params [ ' tags ' ] :
stack = _update_stack ( module , stack , cloud , sdk , parameters )
from distutils . version import StrictVersion
module . exit_json ( changed = True ,
min_version = ' 0.28.0 '
if StrictVersion ( sdk . version . __version__ ) < StrictVersion ( min_version ) :
module . warn ( " To update tags using os_stack module, the "
" installed version of the openstacksdk "
" library MUST be >= {min_version} "
" " . format ( min_version = min_version ) )
stack = _update_stack ( module , stack , cloud , sdk )
changed = True
module . exit_json ( changed = changed ,
stack = stack ,
stack = stack ,
id = stack . id )
id = stack . id )
elif state == ' absent ' :
elif state == ' absent ' :