Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
H
Hetzner-Master
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Hetzner-Master
Commits
74755692
Commit
74755692
authored
Apr 08, 2020
by
Ahmad Nemati
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
init
parent
44fa5b78
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
85 additions
and
29 deletions
+85
-29
Hetzner.js
Hetzner.js
+43
-5
app.js
app.js
+31
-16
test.js
test.js
+11
-8
No files found.
Hetzner.js
View file @
74755692
...
@@ -63,6 +63,34 @@ class Hetzner {
...
@@ -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
()
{
getAllFloatingIps
()
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
...
@@ -193,12 +221,19 @@ class Hetzner {
...
@@ -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
)
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
let
command
=
newG
let
command
=
newG
...
@@ -208,8 +243,7 @@ class Hetzner {
...
@@ -208,8 +243,7 @@ class Hetzner {
client
.
servers
.
build
(
rand
)
client
.
servers
.
build
(
rand
)
.
serverType
(
'
cx51
'
)
.
serverType
(
'
cx51
'
)
.
location
(
region
)
.
location
(
region
)
.
userData
(
command
)
.
image
(
servername
)
.
image
(
'
ubuntu-18.04
'
)
.
create
()
.
create
()
.
then
(
function
(
response
)
{
.
then
(
function
(
response
)
{
resolve
(
response
)
resolve
(
response
)
...
@@ -258,7 +292,7 @@ class Hetzner {
...
@@ -258,7 +292,7 @@ class Hetzner {
return
new
Promise
(
function
(
resolve
,
reject
)
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
client
.
floatingIPs
.
actions
.
assign
(
id
,
serverId
)
client
.
floatingIPs
.
actions
.
assign
(
id
,
serverId
)
.
then
(
function
(
response
)
{
.
then
(
function
(
response
)
{
let
d
=
_
.
values
(
response
.
floatingIP
);
let
d
=
_
.
values
(
response
.
floatingIP
);
...
@@ -275,5 +309,9 @@ class Hetzner {
...
@@ -275,5 +309,9 @@ class Hetzner {
}
}
function
randomInt
(
low
,
high
)
{
return
Math
.
floor
(
Math
.
random
()
*
(
high
-
low
)
+
low
)
}
module
.
exports
=
Hetzner
;
module
.
exports
=
Hetzner
;
app.js
View file @
74755692
...
@@ -133,18 +133,19 @@ async function init() {
...
@@ -133,18 +133,19 @@ async function init() {
async
function
checkServers
()
{
async
function
checkServers
()
{
let
servers
=
await
het
.
getAllServers
(
'
fsn1
'
)
let
servers
=
await
het
.
getAllServers
(
'
fsn1
'
)
console
.
log
(
servers
)
console
.
log
(
servers
)
let
masterid
=
await
het
.
getMasterServerId
()
for
(
let
i
=
0
;
i
<
servers
.
length
;
i
++
)
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
min
=
getMinDiff
(
servers
[
i
].
created
)
let
status
=
await
getWork
Floating
(
servers
[
i
].
publicNet
.
server
.
publicNet
.
ipv4
.
ip
)
let
status
=
await
getWork
Master
(
servers
[
i
].
publicNet
.
server
.
publicNet
.
ipv4
.
ip
)
status
=
parseInt
(
status
)
status
=
parseInt
(
status
)
switch
(
status
)
{
switch
(
status
)
{
case
404
:
case
404
:
if
(
min
>
20
)
{
if
(
min
>
45
)
{
await
het
.
deleteServer
(
servers
[
i
].
id
)
await
het
.
deleteServer
(
servers
[
i
].
id
)
console
.
log
(
'
Need remove server
'
+
servers
[
i
].
name
+
'
Idle is
'
+
min
)
console
.
log
(
'
Need remove server
'
+
servers
[
i
].
name
+
'
Idle is
'
+
min
)
}
}
...
@@ -180,28 +181,29 @@ function getMinDiff(end) {
...
@@ -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
)
status
=
parseInt
(
status
)
switch
(
status
)
{
switch
(
status
)
{
case
404
:
case
404
:
await
postFloatingIps
([
ip
s
[
i
].
ip
])
await
postFloatingIps
([
ip
])
break
break
case
400
:
case
400
:
await
postFloatingIps
([
ip
s
[
i
].
ip
])
await
postFloatingIps
([
ip
])
break
break
case
0
:
case
0
:
await
het
.
delFloatingIp
(
ips
[
i
].
id
)
await
het
.
removeFloatingIpByIp
(
ip
)
break
break
case
1
:
case
1
:
break
break
}
}
}
}
}
async
function
initToken
()
{
async
function
initToken
()
{
...
@@ -254,14 +256,14 @@ async function attacher() {
...
@@ -254,14 +256,14 @@ async function attacher() {
attached
=
true
attached
=
true
await
postFloatingIps
([
ips
[
i
].
ip
])
await
postFloatingIps
([
ips
[
i
].
ip
])
addBaship
(
ips
[
i
].
ip
)
addBaship
(
ips
[
i
].
ip
)
break
return
checkIps
(
ips
[
i
].
ip
)
}
}
}
}
}
}
if
(
attached
)
return
for
(
let
i
=
0
;
i
<
ips
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
ips
.
length
;
i
++
)
{
if
(
typeof
ips
[
i
].
server
!==
"
number
"
)
if
(
typeof
ips
[
i
].
server
!==
"
number
"
)
...
@@ -275,8 +277,7 @@ async function attacher() {
...
@@ -275,8 +277,7 @@ async function attacher() {
}
}
return
true
}
}
...
@@ -340,6 +341,20 @@ function getWorkFloating(ip) {
...
@@ -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
()
{
function
addIp
()
{
const
request
=
require
(
'
request
'
);
const
request
=
require
(
'
request
'
);
...
...
test.js
View file @
74755692
...
@@ -19,15 +19,18 @@ tesT()
...
@@ -19,15 +19,18 @@ tesT()
async
function
tesT
()
{
async
function
tesT
()
{
await
init
()
await
init
()
// let ips = await het.getAllServers()
try
{
// console.log(ips)
let
images
=
await
het
.
createServerWithSnap
(
constant
.
nuremberg
)
console
.
log
(
JSON
.
stringify
(
images
))
}
catch
(
e
)
{
console
.
log
(
JSON
.
stringify
(
e
))
}
//console.log(ips)
//console.log(ips)
// for (let i = 0; i < ips.length; i++) {
// for (let i = 0; i < images.length; i++) {
// //console.log( typeof ips[i].server === "number")
// console.log(images[i].description)
// // if (typeof ips[i].server !== "number")
// // {
// // await het.removeFloatingIpByIp(ips[i].ip)
// // }
//
//
//
//
//
//
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment