Commit 74755692 authored by Ahmad Nemati's avatar Ahmad Nemati

init

parent 44fa5b78
......@@ -63,6 +63,34 @@ class Hetzner {
}
getAllSnapShots() {
return new Promise(function (resolve, reject) {
client.images.list().then(function (res) {
// console.log(res)
let images = _.values(res.images);
images.sort(function compare(a, b) {
var dateA = new Date(a.created);
var dateB = new Date(b.created);
return dateB - dateA;
});
for (let i = 0; i < images.length; i++) {
if (images[i].status === 'available' && images[i].type === 'snapshot')
resolve(images[i].id)
}
reject(false)
})
})
}
getAllFloatingIps() {
return new Promise(function (resolve, reject) {
......@@ -193,12 +221,19 @@ class Hetzner {
}
async createServerWithSnap(region) {
let servername = await this.getAllSnapShots()
console.log(servername)
return await this.createServer(region, servername)
createServer(region, newGeneration) {
}
createServer(region, servername) {
let rand = randomInt(0, words.length)
let rand = this.randomInt(0, words.length)
rand=words[rand]
console.log(rand)
return new Promise(function (resolve, reject) {
let command = newG
......@@ -208,8 +243,7 @@ class Hetzner {
client.servers.build(rand)
.serverType('cx51')
.location(region)
.userData(command)
.image('ubuntu-18.04')
.image(servername)
.create()
.then(function (response) {
resolve(response)
......@@ -258,7 +292,7 @@ class Hetzner {
return new Promise(function (resolve, reject) {
client.floatingIPs.actions.assign(id,serverId)
client.floatingIPs.actions.assign(id, serverId)
.then(function (response) {
let d = _.values(response.floatingIP);
......@@ -275,5 +309,9 @@ class Hetzner {
}
function randomInt(low, high) {
return Math.floor(Math.random() * (high - low) + low)
}
module.exports = Hetzner;
......@@ -133,18 +133,19 @@ async function init() {
async function checkServers() {
let servers = await het.getAllServers('fsn1')
console.log(servers)
let masterid=await het.getMasterServerId()
for (let i = 0; i < servers.length; i++)
if (servers[i].name !== 'master') {
if (servers[i].id !== masterid) {
let min = getMinDiff(servers[i].created)
let status = await getWorkFloating(servers[i].publicNet.server.publicNet.ipv4.ip)
let status = await getWorkMaster(servers[i].publicNet.server.publicNet.ipv4.ip)
status = parseInt(status)
switch (status) {
case 404:
if (min > 20) {
if (min > 45) {
await het.deleteServer(servers[i].id)
console.log('Need remove server ' + servers[i].name + ' Idle is ' + min)
}
......@@ -180,28 +181,29 @@ function getMinDiff(end) {
}
async function checkIps() {
let ips = await het.getAllFloatingIps()
for (let i = 0; i < ips.length; i++) {
let status = await getWorkFloating(ips[i].ip)
async function checkIps(ip) {
let status = await getWorkFloating(ip)
status = parseInt(status)
switch (status) {
case 404:
await postFloatingIps([ips[i].ip])
await postFloatingIps([ip])
break
case 400:
await postFloatingIps([ips[i].ip])
await postFloatingIps([ip])
break
case 0:
await het.delFloatingIp(ips[i].id)
await het.removeFloatingIpByIp(ip)
break
case 1:
break
}
}
}
async function initToken() {
......@@ -254,14 +256,14 @@ async function attacher() {
attached = true
await postFloatingIps([ips[i].ip])
addBaship(ips[i].ip)
break
return checkIps(ips[i].ip)
}
}
}
if (attached)
return
for (let i = 0; i < ips.length; i++) {
if (typeof ips[i].server !== "number")
......@@ -275,8 +277,7 @@ async function attacher() {
}
return true
}
......@@ -340,6 +341,20 @@ function getWorkFloating(ip) {
}
function getWorkMaster(ip) {
const request = require('request');
let url = 'http://admin.fcfglobal.co:3000/getMasterIpDetail/' + ip
return new Promise(function (resolve, reject) {
request(url, {timeout: 15000}, function (error, res, body) {
resolve(body)
});
});
}
function addIp() {
const request = require('request');
......
......@@ -19,15 +19,18 @@ tesT()
async function tesT() {
await init()
// let ips = await het.getAllServers()
// console.log(ips)
try {
let images = await het.createServerWithSnap(constant.nuremberg)
console.log(JSON.stringify(images))
}
catch (e) {
console.log(JSON.stringify(e))
}
//console.log(ips)
// for (let i = 0; i < ips.length; i++) {
// //console.log( typeof ips[i].server === "number")
// // if (typeof ips[i].server !== "number")
// // {
// // await het.removeFloatingIpByIp(ips[i].ip)
// // }
// for (let i = 0; i < images.length; i++) {
// console.log(images[i].description)
//
//
//
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment