UNPKG

sesterce-cli

Version:

A powerful command-line interface tool for managing Sesterce Cloud services. Sesterce CLI provides easy access to GPU cloud instances, AI inference services, container registries, and SSH key management directly from your terminal.

77 lines 3.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createGpuCloudVolumeCreateCommand = createGpuCloudVolumeCreateCommand; const create_volume_1 = require("@/modules/gpu-cloud/use-cases/create-volume"); const list_volume_offers_1 = require("@/modules/gpu-cloud/use-cases/list-volume-offers"); const prompts_1 = require("@inquirer/prompts"); const printVolumeOffer = (offer, region) => { return `${offer.provider} - ${region.name} - Min size ${region.minSizeInGb}GB - $${region.pricePerGbPerHour.toFixed(6)}/GB/hour`; }; function createGpuCloudVolumeCreateCommand(gpuCloudVolumeCommand) { gpuCloudVolumeCommand .command("create") .description("Create a new GPU Cloud volume") .action(async () => { console.log("Listing GPU Cloud volume offers..."); const offersResult = await list_volume_offers_1.listGpuCloudVolumeOffers.execute(); if (offersResult.isLeft()) { console.error(offersResult.value.message); return; } const offers = offersResult.value; offers.sort((a, b) => a.provider.localeCompare(b.provider)); const selectedOffer = await (0, prompts_1.search)({ message: "Select a GPU Cloud volume offer", source: (input, { signal }) => { if (!input) { return offers.flatMap((offer) => offer.regions.map((region) => ({ name: printVolumeOffer(offer, region), value: { offer, region, }, }))); } return offers.flatMap((offer) => offer.regions .filter((region) => { var _a; return region.name.toLowerCase().includes(input.toLowerCase()) || ((_a = region.region) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(input.toLowerCase())) || region.minSizeInGb.toString().includes(input) || region.pricePerGbPerHour.toString().includes(input); }) .map((region) => ({ name: printVolumeOffer(offer, region), value: { offer, region, }, }))); }, }); const name = await (0, prompts_1.input)({ message: "Enter the name of the volume", default: "my-volume", }); const size = await (0, prompts_1.number)({ message: `Enter the size of the volume in GB (min: ${selectedOffer.region.minSizeInGb} GB)`, default: selectedOffer.region.minSizeInGb, }); if (size && size < selectedOffer.region.minSizeInGb) { console.error(`Size must be at least ${selectedOffer.region.minSizeInGb} GB`); return; } const result = await create_volume_1.createGpuCloudVolume.execute({ name, sizeInGb: size !== null && size !== void 0 ? size : selectedOffer.region.minSizeInGb, cloudProvider: selectedOffer.offer.availabilityZone._id, region: selectedOffer.region.region, }); if (result.isLeft()) { console.error(result.value.message); return; } console.log(`Volume created successfully! Volume ID: ${result.value._id}`); }); } //# sourceMappingURL=create.js.map