Skip to content

Commit d8621e2

Browse files
Providing option to user to chose to ignore non-updatable args
Signed-off-by: Shiva Shankar Vaddepally <shivashankar.vaddepally@cloud.com>
1 parent 8ca74ce commit d8621e2

File tree

1 file changed

+37
-21
lines changed

1 file changed

+37
-21
lines changed

plugins/module_utils/module_executor.py

Lines changed: 37 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@ def __init__(self, resource_name, supports_check_mode=True):
7979
)
8080
argument_spec.update(module_state_argument)
8181

82+
consider_non_updatable_arguments = dict(type="bool", default=True)
83+
argument_spec.update(consider_non_updatable_arguments)
84+
8285
self.module = AnsibleModule(
8386
argument_spec=argument_spec,
8487
supports_check_mode=supports_check_mode,
@@ -465,33 +468,46 @@ def create_or_update(self):
465468
if not ok:
466469
self.return_failure(err)
467470
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)
487476
)
488-
self.module.warn(msg)
489-
log(msg)
490477
ok, err = update_resource(
491478
self.client, self.resource_name, self.resource_module_params
492479
)
493480
if not ok:
494481
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)
495511

496512
@trace
497513
def enable_or_disable(self, desired_state):

0 commit comments

Comments
 (0)