Deploying multiple VMs

Table of Contents

- [Introduction](#introduction) - [Example code](#example-code) *** ## Introduction It is possible to deploy multiple VMs with the Javascript client. ## Example code ```ts import { DiskModel, FilterOptions, MachineModel, MachinesModel, NetworkModel } from "../src"; import { config, getClient } from "./client_loader"; import { log } from "./utils"; async function main() { const grid3 = await getClient(); // create network Object const n = new NetworkModel(); n.name = "monNetwork"; n.ip_range = "10.238.0.0/16"; // create disk Object const disk1 = new DiskModel(); disk1.name = "newDisk1"; disk1.size = 1; disk1.mountpoint = "/newDisk1"; const vmQueryOptions: FilterOptions = { cru: 1, mru: 1, // GB sru: 1, availableFor: grid3.twinId, farmId: 1, }; // create vm node Object const vm1 = new MachineModel(); vm1.name = "testvm1"; vm1.node_id = +(await grid3.capacity.filterNodes(vmQueryOptions))[0].nodeId; vm1.disks = [disk1]; vm1.public_ip = false; vm1.planetary = true; vm1.cpu = 1; vm1.memory = 1024; vm1.rootfs_size = 0; vm1.flist = "https://hub.grid.tf/tf-official-apps/base:latest.flist"; vm1.entrypoint = "/sbin/zinit init"; vm1.env = { SSH_KEY: config.ssh_key, }; // create disk Object const disk2 = new DiskModel(); disk2.name = "newDisk2"; disk2.size = 1; disk2.mountpoint = "/newDisk2"; // create another vm node Object const vm2 = new MachineModel(); vm2.name = "testvm2"; vm2.node_id = +(await grid3.capacity.filterNodes(vmQueryOptions))[1].nodeId; vm2.disks = [disk2]; vm2.public_ip = false; vm2.planetary = true; vm2.cpu = 1; vm2.memory = 1024; vm2.rootfs_size = 0; vm2.flist = "https://hub.grid.tf/tf-official-apps/base:latest.flist"; vm2.entrypoint = "/sbin/zinit init"; vm2.env = { SSH_KEY: config.ssh_key, }; // create VMs Object const vms = new MachinesModel(); vms.name = "monVMS"; vms.network = n; vms.machines = [vm1, vm2]; vms.metadata = "{'testVMs': true}"; vms.description = "test deploying VMs via ts grid3 client"; // deploy vms const res = await grid3.machines.deploy(vms); log(res); // get the deployment const l = await grid3.machines.getObj(vms.name); log(l); // // delete // const d = await grid3.machines.delete({ name: vms.name }); // log(d); await grid3.disconnect(); } main(); ``` It's similiar to the previous section of [deploying a single VM](../javascript/grid3_javascript_vm.md), but just adds more vm objects to vms collection.