From 4348d279646350cce5cb4da52e41b207e7fdf8b3 Mon Sep 17 00:00:00 2001 From: Pradeepsingh Bhati Date: Wed, 18 Oct 2023 12:19:02 +0530 Subject: [PATCH] Add attribute in clone modules in ndb for creation or refresh using latestSnapshot --- plugins/module_utils/ndb/database_clones.py | 8 ++++++-- plugins/modules/ntnx_ndb_database_clone_refresh.py | 5 +++-- plugins/modules/ntnx_ndb_database_clones.py | 3 ++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/plugins/module_utils/ndb/database_clones.py b/plugins/module_utils/ndb/database_clones.py index 721bfddd0..8493faa80 100644 --- a/plugins/module_utils/ndb/database_clones.py +++ b/plugins/module_utils/ndb/database_clones.py @@ -200,10 +200,12 @@ def get_clone_refresh_spec(self): payload["snapshotId"] = self.module.params.get("snapshot_uuid") elif self.module.params.get("pitr_timestamp"): payload["userPitrTimestamp"] = self.module.params.get("pitr_timestamp") + elif self.module.params.get("latest_snapshot", False): + payload["latestSnapshot"] = True else: return ( None, - "snapshot_uuid or pitr_timestamp is required for database clone refresh", + "One of snapshot_uuid, pitr_timestamp or latest_snapshot is required for database clone refresh", ) payload["timeZone"] = self.module.params.get("timezone") @@ -237,10 +239,12 @@ def _build_spec_time_machine(self, payload, time_machine): payload["snapshotId"] = time_machine.get("snapshot_uuid") elif time_machine.get("pitr_timestamp"): payload["userPitrTimestamp"] = time_machine.get("pitr_timestamp") + elif time_machine.get("latest_snapshot", False): + payload["latestSnapshot"] = True else: return ( None, - "Required snapshot_uuid or pitr_timestamp for source of db clone", + "Required one of snapshot_uuid, pitr_timestamp or latest_snapshot for source of db clone", ) payload["timeZone"] = time_machine.get("timezone") diff --git a/plugins/modules/ntnx_ndb_database_clone_refresh.py b/plugins/modules/ntnx_ndb_database_clone_refresh.py index 687145e37..7af780220 100644 --- a/plugins/modules/ntnx_ndb_database_clone_refresh.py +++ b/plugins/modules/ntnx_ndb_database_clone_refresh.py @@ -301,6 +301,7 @@ def get_module_spec(): snapshot_uuid=dict(type="str", required=False), timezone=dict(type="str", default="Asia/Calcutta", required=False), pitr_timestamp=dict(type="str", required=False), + latest_snapshot=dict(tyoe="bool", required=False) ) return module_args @@ -340,12 +341,12 @@ def refresh_clone(module, result): def run_module(): mutually_exclusive_list = [ - ("snapshot_uuid", "pitr_timestamp"), + ("snapshot_uuid", "pitr_timestamp", "latest_snapshot"), ] module = NdbBaseModule( argument_spec=get_module_spec(), supports_check_mode=True, - required_if=[("state", "present", ("snapshot_uuid", "pitr_timestamp"), True)], + required_if=[("state", "present", ("snapshot_uuid", "pitr_timestamp", "latest_snapshot"), True)], mutually_exclusive=mutually_exclusive_list, ) remove_param_with_none_value(module.params) diff --git a/plugins/modules/ntnx_ndb_database_clones.py b/plugins/modules/ntnx_ndb_database_clones.py index a6485ee76..cfaa38451 100644 --- a/plugins/modules/ntnx_ndb_database_clones.py +++ b/plugins/modules/ntnx_ndb_database_clones.py @@ -652,6 +652,7 @@ def get_module_spec(): uuid=dict(type="str", required=False), snapshot_uuid=dict(type="str", required=False), pitr_timestamp=dict(type="str", required=False), + latest_snapshot=dict(type="bool", required=False), timezone=dict(type="str", default="Asia/Calcutta", required=False), ) @@ -700,7 +701,7 @@ def get_module_spec(): time_machine=dict( type="dict", options=time_machine, - mutually_exclusive=[("snapshot_uuid", "pitr_timestamp")], + mutually_exclusive=[("snapshot_uuid", "pitr_timestamp", "latest_snapshot")], required=False, ), postgres=dict(type="dict", options=postgres, required=False),