@@ -79,6 +79,9 @@ def __init__(self, resource_name, supports_check_mode=True):
79
79
)
80
80
argument_spec .update (module_state_argument )
81
81
82
+ consider_non_updatable_arguments = dict (type = "bool" , default = True )
83
+ argument_spec .update (consider_non_updatable_arguments )
84
+
82
85
self .module = AnsibleModule (
83
86
argument_spec = argument_spec ,
84
87
supports_check_mode = supports_check_mode ,
@@ -465,33 +468,46 @@ def create_or_update(self):
465
468
if not ok :
466
469
self .return_failure (err )
467
470
else :
468
- for key in immutable_keys_list :
469
- self .resource_module_params .pop (key )
470
-
471
- is_identical , temp_immutable_list = self .is_resource_identical ()
472
- # temp_immutable_list is a dummy as '_' is not allowed in lint.
473
- if is_identical :
474
- msg = (
475
- f"Resource { self .resource_name } /{ self .resource_id } not updated because user is trying to "
476
- f"update following non-updatable keys: { immutable_keys_list } "
477
- )
478
- self .module .warn (msg )
479
- log (msg )
480
- self .module_result ["changed" ] = False
481
- self .module .exit_json (** self .module_result )
482
- else :
483
- self .module_result ["changed" ] = True
484
- msg = (
485
- f"Resource { self .resource_name } /{ self .resource_id } is updated after ignoring following "
486
- f"non-updatable keys: { immutable_keys_list } "
471
+ consider_non_updatable_args = self .module .params .get ('consider_non_updatable_arguments' , False )
472
+ if consider_non_updatable_args :
473
+ log (
474
+ "INFO: Resource %s:%s exists and is different. %s"
475
+ % (self .resource_name , self .resource_id )
487
476
)
488
- self .module .warn (msg )
489
- log (msg )
490
477
ok , err = update_resource (
491
478
self .client , self .resource_name , self .resource_module_params
492
479
)
493
480
if not ok :
494
481
self .return_failure (err )
482
+ else :
483
+ for key in immutable_keys_list :
484
+ self .resource_module_params .pop (key )
485
+
486
+ is_identical , temp_immutable_list = self .is_resource_identical ()
487
+ # temp_immutable_list is a dummy as '_' is not allowed in lint.
488
+
489
+ if is_identical :
490
+ msg = (
491
+ f"Resource { self .resource_name } /{ self .resource_id } not updated because user is trying to "
492
+ f"update following non-updatable keys: { immutable_keys_list } "
493
+ )
494
+ self .module .warn (msg )
495
+ log (msg )
496
+ self .module_result ["changed" ] = False
497
+ self .module .exit_json (** self .module_result )
498
+ else :
499
+ self .module_result ["changed" ] = True
500
+ msg = (
501
+ f"Resource { self .resource_name } /{ self .resource_id } is updated after ignoring following "
502
+ f"non-updatable keys: { immutable_keys_list } "
503
+ )
504
+ self .module .warn (msg )
505
+ log (msg )
506
+ ok , err = update_resource (
507
+ self .client , self .resource_name , self .resource_module_params
508
+ )
509
+ if not ok :
510
+ self .return_failure (err )
495
511
496
512
@trace
497
513
def enable_or_disable (self , desired_state ):
0 commit comments