diff --git a/src/pages/cluster/components/assign-node-dialog.tsx b/src/pages/cluster/components/assign-node-dialog.tsx index c08fc37..b74f70b 100644 --- a/src/pages/cluster/components/assign-node-dialog.tsx +++ b/src/pages/cluster/components/assign-node-dialog.tsx @@ -23,6 +23,8 @@ const defaultValues: AssignNodeSchema = { capacityUnit: "GB", isGateway: false, tags: [], + zoneRedundancyType: "atLeast", + zoneRedundancyAtLeast: 1, }; const AssignNodeDialog = () => { @@ -36,6 +38,10 @@ const AssignNodeDialog = () => { defaultValues, }); const isGateway = useWatch({ control: form.control, name: "isGateway" }); + const zoneRedundancyType = useWatch({ + control: form.control, + name: "zoneRedundancyType", + }); const assignNode = useAssignNode({ onSuccess() { @@ -106,10 +112,20 @@ const AssignNodeDialog = () => { ? calculateCapacity(values.capacity, values.capacityUnit) : null; const data = { - id: values.nodeId, - zone: values.zone, - capacity, - tags: values.tags, + parameters: { + zoneRedundancy: + values.zoneRedundancyType === "maximum" + ? ("maximum" as const) + : { atLeast: Number(values.zoneRedundancyAtLeast) }, + }, + roles: [ + { + id: values.nodeId, + zone: values.zone, + capacity, + tags: values.tags, + }, + ], }; assignNode.mutate(data); }); @@ -214,9 +230,9 @@ const AssignNodeDialog = () => { value={ field.value ? (field.value as string[]).map((value) => ({ - label: value, - value, - })) + label: value, + value, + })) : null } options={tagsList} @@ -228,6 +244,39 @@ const AssignNodeDialog = () => { /> )} /> + + ( + + )} + /> + + {zoneRedundancyType === "atLeast" && ( + ( + + )} + /> + )}