Fix: ClusterType, NumberOfNodes not validated when modifying Redshift cluster (#3513)
By definition, `single-node` clusters can only consist of 1 node. Likewise, `multi-node` clusters must have 2 or more nodes. * Ensure `ClusterType` parameter is either `multi-node` or `single-node`. * Ensure proper validation of `NumberOfNodes` parameter based on `ClusterType` parameter. * Fix existing test case that incorrectly allowed a `multi-node` cluster to consist of 1 node. * Add dedicated test for resizing a cluster from `single-node` to `multi-node` and back again. Behavior and error messages have been verified against a real AWS backend.
This commit is contained in:
parent
5e21e50424
commit
dcd034045b
2 changed files with 60 additions and 2 deletions
|
|
@ -632,6 +632,20 @@ class RedshiftBackend(BaseBackend):
|
|||
cluster_identifier = cluster_kwargs.pop("cluster_identifier")
|
||||
new_cluster_identifier = cluster_kwargs.pop("new_cluster_identifier", None)
|
||||
|
||||
cluster_type = cluster_kwargs.get("cluster_type")
|
||||
if cluster_type and cluster_type not in ["multi-node", "single-node"]:
|
||||
raise InvalidParameterValueError(
|
||||
"Invalid cluster type. Cluster type can be one of multi-node or single-node"
|
||||
)
|
||||
if cluster_type == "single-node":
|
||||
# AWS will always silently override this value for single-node clusters.
|
||||
cluster_kwargs["number_of_nodes"] = 1
|
||||
elif cluster_type == "multi-node":
|
||||
if cluster_kwargs.get("number_of_nodes", 0) < 2:
|
||||
raise InvalidParameterCombinationError(
|
||||
"Number of nodes for cluster type multi-node must be greater than or equal to 2"
|
||||
)
|
||||
|
||||
cluster = self.describe_clusters(cluster_identifier)[0]
|
||||
|
||||
for key, value in cluster_kwargs.items():
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue