Skip to content

Commit 39fab66

Browse files
committed
Change path for DRA callback and cluster comparison
1 parent 3d31af5 commit 39fab66

File tree

3 files changed

+31
-6
lines changed

3 files changed

+31
-6
lines changed

hpc_provisioner/src/hpc_provisioner/cluster.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,11 @@ def as_dict(self) -> dict:
6767
d = copy.deepcopy(self.__dict__)
6868
d["name"] = self.name
6969
return d
70+
71+
def __eq__(self, other) -> bool:
72+
compare_props = ["benchmark", "dev", "include_lustre", "project_id", "tier", "vlab_id"]
73+
for prop in compare_props:
74+
if getattr(self, prop) != getattr(other, prop):
75+
print(f"{prop}: {getattr(self, prop)} != {getattr(other, prop)}")
76+
return False
77+
return True

hpc_provisioner/src/hpc_provisioner/dynamodb_actions.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,13 @@ def get_cluster_by_name(dynamodb_resource, cluster_name: str) -> Optional[dict]:
103103

104104

105105
def register_cluster(dynamodb_resource, cluster: Cluster) -> None:
106-
if get_cluster_by_name(dynamodb_resource, cluster.name):
107-
raise ClusterAlreadyRegistered(f"Cluster {cluster} already registered")
106+
if registered_cluster := get_cluster_by_name(dynamodb_resource, cluster.name):
107+
if cluster != register_cluster:
108+
raise ClusterAlreadyRegistered(
109+
f"Cluster {cluster} already registered with different parameters"
110+
)
111+
else:
112+
return
108113

109114
table = dynamodb_resource.Table(CLUSTER_TABLE_NAME)
110115
table.put_item(Item=cluster.as_dict())

hpc_provisioner/src/hpc_provisioner/handlers.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,12 @@
1616
PROJECT_TAG_KEY,
1717
VLAB_TAG_KEY,
1818
)
19-
from hpc_provisioner.dynamodb_actions import delete_cluster, dynamodb_resource, register_cluster
19+
from hpc_provisioner.dynamodb_actions import (
20+
ClusterAlreadyRegistered,
21+
delete_cluster,
22+
dynamodb_resource,
23+
register_cluster,
24+
)
2025
from hpc_provisioner.utils import (
2126
generate_public_key,
2227
get_sbonexusdata_bucket,
@@ -102,8 +107,8 @@ def pcluster_handler(event, _context=None):
102107
if event["path"] == "/hpc-provisioner/pcluster":
103108
logger.debug("POST pcluster")
104109
return pcluster_create_request_handler(event, _context)
105-
if event["path"] == "/hpc-provisioner/efs":
106-
logger.debug("POST EFS")
110+
if event["path"] == "/hpc-provisioner/dra":
111+
logger.debug("POST DRA")
107112
return dra_ready_handler(event, _context)
108113
elif event["httpMethod"] == "DELETE":
109114
logger.debug("DELETE pcluster")
@@ -121,7 +126,14 @@ def pcluster_create_request_handler(event, _context=None):
121126

122127
cluster = _get_vlab_query_params(event)
123128
dynamo = dynamodb_resource()
124-
register_cluster(dynamo, cluster)
129+
try:
130+
register_cluster(dynamo, cluster)
131+
except ClusterAlreadyRegistered as e:
132+
return response_text(text=e.__str__(), code=500)
133+
else:
134+
logger.debug(
135+
f"Cluster {cluster.name} already registered with identical parameters; proceeding"
136+
)
125137

126138
ec2_client = boto3.client("ec2")
127139
sm_client = boto3.client("secretsmanager")

0 commit comments

Comments
 (0)