Skip to content

Commit

Permalink
Add domain to node pilot
Browse files Browse the repository at this point in the history
  • Loading branch information
zaelgohary committed Jun 23, 2024
1 parent ef16fe4 commit 1f916fe
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 9 deletions.
5 changes: 5 additions & 0 deletions packages/playground/src/constants/deployment_list.ts
Original file line number Diff line number Diff line change
Expand Up @@ -169,4 +169,9 @@ export const deploymentListEnvironments = {
nostr: {
SSH_KEY: _ssh,
},

nodepilot: {
SSH_KEY: _ssh,
NODE_PILOT_HOSTNAME: "Node Pilot Hostname",
},
};
2 changes: 1 addition & 1 deletion packages/playground/src/weblets/tf_deployment_list.vue
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@
tooltip="Visit"
icon="mdi-web"
color="anchor"
:href="'http://' + (item.publicIP?.ip ? item.publicIP.ip.slice(0, -3) : '[' + item.planetary + ']')"
:href="'https://' + item.env.NODE_PILOT_HOSTNAME"
/>
</template>

Expand Down
63 changes: 55 additions & 8 deletions packages/playground/src/weblets/tf_node_pilot.vue
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
rootFilesystemSize,
}"
v-model="selectionDetails"
require-domain
/>

<manage-ssh-deployemnt @selected-keys="updateSSHkeyEnv($event)" />
Expand All @@ -80,7 +81,7 @@ import { manual } from "@/utils/manual";
import Network from "../components/networks.vue";
import { useLayout } from "../components/weblet_layout.vue";
import { useGrid } from "../stores";
import { useGrid, useProfileManager } from "../stores";
import { type Flist, ProjectName } from "../types";
import { deployVM } from "../utils/deploy_vm";
import { generateName } from "../utils/strings";
Expand All @@ -102,20 +103,41 @@ const selectionDetails = ref<SelectionDetails>();
const selectedSSHKeys = ref("");
const gridStore = useGrid();
const grid = gridStore.client as GridClient;
const profileManager = useProfileManager();
function finalize(deployment: any) {
layout.value.reloadDeploymentsList();
layout.value.setStatus("success", "Successfully deployed a Node Pilot instance.");
layout.value.openDialog(deployment, deploymentListEnvironments.nodepilot);
}
async function deploy() {
layout.value.setStatus("deploy");
const projectName = ProjectName.NodePilot.toLowerCase() + "/" + name.value;
const subdomain = getSubdomain({
deploymentName: name.value,
projectName,
twinId: profileManager.profile!.twinId,
});
const domain = selectionDetails.value?.domain?.enabledCustomDomain
? selectionDetails.value.domain.customDomain
: subdomain + "." + selectionDetails.value?.domain?.selectedDomain?.publicConfig.domain;
let vm: any;
try {
layout.value?.validateSSH();
updateGrid(grid, { projectName });
await layout.value.validateBalance(grid!);
const vm = await deployVM(grid!, {
vm = await deployVM(grid!, {
name: name.value,
network: {
addAccess: selectionDetails.value!.domain!.enableSelectedDomain,
accessNodeId: selectionDetails.value!.domain?.selectedDomain?.nodeId,
},
machines: [
{
name: name.value,
Expand All @@ -127,7 +149,10 @@ async function deploy() {
publicIpv6: ipv6.value,
planetary: planetary.value,
mycelium: mycelium.value,
envs: [{ key: "SSH_KEY", value: selectedSSHKeys.value }],
envs: [
{ key: "SSH_KEY", value: selectedSSHKeys.value },
{ key: "NODE_PILOT_HOSTNAME", value: domain },
],
rootFilesystemSize,
disks: [
{
Expand All @@ -141,13 +166,34 @@ async function deploy() {
},
],
});
layout.value.reloadDeploymentsList();
layout.value.setStatus("success", "Successfully deployed a node pilot instance.");
layout.value.openDialog(vm, deploymentListEnvironments.vm);
} catch (e) {
layout.value.setStatus("failed", normalizeError(e, "Failed to deploy a Node Pilot instance."));
}
if (!selectionDetails.value?.domain?.enableSelectedDomain) {
vm[0].customDomain = selectionDetails.value?.domain?.customDomain;
finalize(vm);
return;
}
try {
layout.value.setStatus("deploy", "Preparing to deploy gateway...");
console.log("vm[0]", vm[0]);
await deployGatewayName(grid, selectionDetails.value.domain, {
subdomain,
ip: vm[0].interfaces[0].ip,
port: 34416,
network: vm[0].interfaces[0].network,
});
finalize(vm);
} catch (e) {
layout.value.setStatus("deploy", "Rollbacking back due to fail to deploy gateway...");
await rollbackDeployment(grid!, name.value);
layout.value.setStatus("failed", normalizeError(e, "Failed to deploy a Casperlabs instance."));
}
}
function updateSSHkeyEnv(selectedKeys: string) {
Expand All @@ -163,6 +209,7 @@ import ManageSshDeployemnt from "../components/ssh_keys/ManageSshDeployemnt.vue"
import { deploymentListEnvironments } from "../constants";
import type { solutionFlavor as SolutionFlavor } from "../types";
import type { SelectionDetails } from "../types/nodeSelector";
import { deployGatewayName, getSubdomain, rollbackDeployment } from "../utils/gateway";
import { updateGrid } from "../utils/grid";
import { normalizeError } from "../utils/helpers";
Expand Down

0 comments on commit 1f916fe

Please sign in to comment.