diff --git a/README.md b/README.md
index b92a8f0..d42d469 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,11 @@
-# Hypershift ton OpenStack CLI Assistant
+# Hypershift CLI Assistant
Click [here](https://shiftstack.github.io/hcp-cli-assistant/) to open the assistant.
-An interactive web UI wizard that helps users generate the correct `hcp create cluster openstack` command for deploying **HyperShift on OpenStack**.
+An interactive web UI wizard that helps users generate the correct `hcp create cluster` commands.
The assistant guides users step-by-step through required and optional configurations, ensuring a smooth setup experience.
-
+
## Features
- Step-by-step wizard for easy input
@@ -46,4 +46,4 @@ This project is open-source and available under the **Apache 2.0 License**.
---
-Developed for HyperShift on OpenStack users.
+Developed for HyperShift users.
diff --git a/demo.gif b/demo.gif
new file mode 100644
index 0000000..e0a9a1a
Binary files /dev/null and b/demo.gif differ
diff --git a/index.html b/index.html
index 92345d5..466cde5 100644
--- a/index.html
+++ b/index.html
@@ -5,7 +5,7 @@
-
HyperShift on OpenStack - CLI assistant
+ HyperShift CLI assistant
diff --git a/screenshot.png b/screenshot.png
deleted file mode 100644
index 0973bd8..0000000
Binary files a/screenshot.png and /dev/null differ
diff --git a/src/App.jsx b/src/App.jsx
index ffcea5d..4ac47a4 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -165,8 +165,8 @@ export default function HcpCliAssistant() {
// Platform config
const platforms = useMemo(() => [
{ value: "openstack", label: "OpenStack" },
+ { value: "aws", label: "AWS" },
// Future platforms can be added here
- // { value: "aws", label: "AWS" },
// { value: "azure", label: "Azure" },
], []);
@@ -178,6 +178,12 @@ export default function HcpCliAssistant() {
"OpenStack Node Configuration",
"Review & Generate Command"
],
+ aws: [
+ "AWS Node Configuration",
+ "AWS Storage Configuration",
+ "AWS Network Configuration",
+ "Review & Generate Command"
+ ],
// Add more platform steps as they become available
}), []);
@@ -205,6 +211,16 @@ export default function HcpCliAssistant() {
nodeImageName: "",
dnsNameservers: "",
additionalPorts: "[]", // Initialize as string to avoid JSON parsing issues
+
+ // AWS specific fields
+ awsInstanceType: "",
+ awsInstanceProfile: "",
+ awsSubnetId: "",
+ awsSecurityGroupId: "",
+ awsRootVolumeSize: "120",
+ awsRootVolumeType: "gp3",
+ awsRootVolumeIops: "",
+ awsRootVolumeKmsKey: "",
});
// Get steps based on selected platform - memoize to prevent recalculation
@@ -333,6 +349,17 @@ export default function HcpCliAssistant() {
}
}
+ if (form.platform === "aws") {
+ const platformStep = step - 2; // Adjust for common steps
+
+ switch (platformStep) {
+ case 0: // AWS Node Configuration
+ return form.awsInstanceType.trim() !== "" && form.awsInstanceProfile.trim() !== "";
+ default:
+ return true;
+ }
+ }
+
return false;
}, [step, form, platformSteps, parsePorts]);
@@ -414,6 +441,55 @@ export default function HcpCliAssistant() {
return cmd;
}
+ if (form.platform === "aws") {
+ let cmd = `hcp create cluster aws \
+ --name ${form.name} \
+ --base-domain ${form.baseDomain} \
+ --node-pool-replicas ${form.nodePoolReplicas} \
+ --pull-secret ${form.pullSecret} \
+ --ssh-key ${form.sshKey} \
+ --instance-type ${form.awsInstanceType}`;
+
+ // Add optional AWS parameters
+ if (form.awsInstanceType) {
+ cmd += ` \
+ --instance-type ${form.awsInstanceType}`;
+ }
+
+ if (form.awsInstanceProfile) {
+ cmd += ` \
+ --instance-profile ${form.awsInstanceProfile}`;
+ }
+
+ if (form.awsSubnetId) {
+ cmd += ` \
+ --subnet-id ${form.awsSubnetId}`;
+ }
+
+ if (form.awsRootVolumeSize && form.awsRootVolumeSize !== "120") {
+ cmd += ` \
+ --root-volume-size ${form.awsRootVolumeSize}`;
+ }
+
+ if (form.awsRootVolumeType && form.awsRootVolumeType !== "gp3") {
+ cmd += ` \
+ --root-volume-type ${form.awsRootVolumeType}`;
+ }
+
+ if (form.awsRootVolumeIops) {
+ cmd += ` \
+ --root-volume-iops ${form.awsRootVolumeIops}`;
+ }
+
+ if (form.awsRootVolumeKmsKey) {
+ cmd += ` \
+ --root-volume-kms-key ${form.awsRootVolumeKmsKey}`;
+ }
+
+ cmd = cmd.replace(/\s+/g, ' ').trim();
+ return cmd;
+ }
+
return "Platform command generation not implemented";
}, [form, parsePorts]);
@@ -657,6 +733,86 @@ export default function HcpCliAssistant() {
);
+ const renderAwsNodeConfigStep = () => (
+ <>
+
+
+
+ >
+ );
+
+ const renderAwsStorageConfigStep = () => (
+ <>
+
+
+
+
+
+
+
+ >
+ );
+
+ const renderAwsNetworkConfigStep = () => (
+ <>
+
+
+
+ >
+ );
+
// Render current step content
const renderStepContent = () => {
if (step === 0) {
@@ -678,6 +834,21 @@ export default function HcpCliAssistant() {
);
}
+ } else if (form.platform === "aws") {
+ const platformStep = step - 2; // Adjust for common steps
+
+ switch (platformStep) {
+ case 0: return renderAwsNodeConfigStep();
+ case 1: return renderAwsStorageConfigStep();
+ case 2: return renderAwsNetworkConfigStep();
+ case 3: return renderCommandReviewStep();
+ default:
+ return (
+
+
Unknown step for the AWS platform. Please go back and try again.
+
+ );
+ }
} else if (form.platform) {
// For any platform that is selected but not implemented
return (