Skip to content
Snippets Groups Projects
leave.js 1.42 KiB
// @flow
const path = require("path");
const chalk = require("chalk");

const handleErrors = require("../utils/handleErrors");

module.exports.command = "leave [number]";
module.exports.describe = "Voluntarily removal of the specified VM from group";

module.exports.builder = (yargs: any) => yargs;

const PORT = 20000;
const MULTICAST_ADDR = "233.255.255.255";
const HOST = "172.22.156.15";

const dgram = require("dgram");
const process = require("process");

const socket = dgram.createSocket({ type: "udp4", reuseAddr: true });

const machineToIps = {
  "0": "172.16.138.158",
  "1": "172.22.156.15",
  "2": "172.22.158.15",
  "3": "172.22.154.16",
  "4": "172.22.156.16",
  "5": "172.22.158.16",
  "6": "172.22.154.17",
  "8": "172.22.158.17",
  "9": "172.22.154.18",
  "10": "172.22.156.18"
};

socket.bind(PORT);

function sendMessage(number) {
  const message = Buffer.from(`leave ${number}`);
  socket.send(message, 0, message.length, PORT, HOST, function() {});
}


function sendMessageToNode(number) {
    const message = Buffer.from(`leave ${number}`);
    console.log(machineToIps[number])
    console.log(message.toString())
    socket.send(message, 0, message.length, PORT, machineToIps[number], function() {});
}

module.exports.handler = handleErrors(async (argv: {}) => {
  console.log("Sending message to introducer");
  let number = argv.number;
  await sendMessage(number);
  await sendMessageToNode(number);
  process.exit(0);
});