harbr 0.0.14 → 0.0.16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.data/development/Harbr::Port.dir +0 -0
- data/.data/development/Harbr::Port.pag +0 -0
- data/exe/harbr +5 -7
- data/lib/harbr/version.rb +1 -1
- data/lib/harbr.rb +64 -3
- metadata +4 -6
- data/.data/development/Harbr::Container.dir +0 -0
- data/.data/development/Harbr::Container.pag +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 88c0dd3adce1ad345040506cca126a2e14e2d65a9453f82f15fe2e9d79ca2384
|
4
|
+
data.tar.gz: 181a68eb372c41f6d8f307534c2f69697e6d5be169833a3c81470b6fc40938e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca6f1cb377f3d1169de9cb007b053e90e54f9278ee2e7bc71d7b106864081af78963cf57178b3d8401eadbe448368c9b6e19e2af5b83288ebfe0712a6610f62a
|
7
|
+
data.tar.gz: d68708150403d9eefb2f3178dbad09b2f66b6ff6d197826486f1def1853baf4162bc842b44a6947dcc51ab1d0417c755fd59309fff8ee70b4338907cd8d737bf
|
Binary file
|
Binary file
|
data/exe/harbr
CHANGED
@@ -4,8 +4,8 @@ require "dddr"
|
|
4
4
|
require "harbr"
|
5
5
|
require "sucker_punch"
|
6
6
|
require "terminal-table"
|
7
|
-
require
|
8
|
-
require
|
7
|
+
require "yaml"
|
8
|
+
require "ostruct"
|
9
9
|
|
10
10
|
class HarbrCLI < Thor
|
11
11
|
DEFAULT_DIRECTORY = "/var/harbr"
|
@@ -75,7 +75,7 @@ class HarbrCLI < Thor
|
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
|
-
PLACED_FILE =
|
78
|
+
PLACED_FILE = "/var/harbr/.placed"
|
79
79
|
|
80
80
|
def place(container, version)
|
81
81
|
placed_containers = File.exist?(PLACED_FILE) ? File.read(PLACED_FILE).split("\n") : []
|
@@ -85,16 +85,15 @@ class HarbrCLI < Thor
|
|
85
85
|
else
|
86
86
|
puts "Placing container: '#{container}', Version: '#{version}'"
|
87
87
|
run_tasks(container, version)
|
88
|
-
File.open(PLACED_FILE,
|
88
|
+
File.open(PLACED_FILE, "a") { |file| file.puts("#{container}/#{version}") }
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
92
92
|
def run_tasks(container, version)
|
93
|
-
manifest = load_manifest(container,version)
|
93
|
+
manifest = load_manifest(container, version)
|
94
94
|
Harbr::Container::Job.perform_async(manifest)
|
95
95
|
puts "Running tasks for container: '#{container}', Version: '#{version}'"
|
96
96
|
end
|
97
|
-
|
98
97
|
end
|
99
98
|
|
100
99
|
desc "setup", "Set up Harbr environment"
|
@@ -134,7 +133,6 @@ class HarbrCLI < Thor
|
|
134
133
|
sleep 10 # Poll every 10 seconds
|
135
134
|
end
|
136
135
|
end
|
137
|
-
|
138
136
|
end
|
139
137
|
|
140
138
|
HarbrCLI.start(ARGV)
|
data/lib/harbr/version.rb
CHANGED
data/lib/harbr.rb
CHANGED
@@ -5,6 +5,16 @@ require "dddr"
|
|
5
5
|
require "sucker_punch"
|
6
6
|
|
7
7
|
module Harbr
|
8
|
+
|
9
|
+
DEFAULT_DIRECTORY = "/var/harbr"
|
10
|
+
DEFAULT_DIRECTORY_DATA_DIR = "#{DEFAULT_DIRECTORY}/.data"
|
11
|
+
|
12
|
+
Dddr.configure do |config|
|
13
|
+
config.data_dir = DEFAULT_DIRECTORY_DATA_DIR
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
|
8
18
|
class Error < StandardError; end
|
9
19
|
|
10
20
|
class Container
|
@@ -12,15 +22,66 @@ module Harbr
|
|
12
22
|
include SuckerPunch::Job
|
13
23
|
|
14
24
|
def perform(manifest)
|
15
|
-
|
25
|
+
|
26
|
+
puts "Starting container: #{manifest.name}"
|
27
|
+
|
28
|
+
Dddr.configure do |config|
|
29
|
+
config.data_dir = Harbr::DEFAULT_DIRECTORY_DATA_DIR
|
30
|
+
end
|
16
31
|
|
17
32
|
pool = Harbr::Port::Pool.new
|
18
33
|
port = pool.get_port(manifest.host)
|
19
|
-
|
34
|
+
|
35
|
+
create_run_script(manifest.name, port.number)
|
36
|
+
create_log_script(manifest.name)
|
20
37
|
|
38
|
+
system("sv restart #{manifest.name}")
|
39
|
+
system("sv status #{manifest.name}")
|
40
|
+
|
41
|
+
end
|
21
42
|
|
22
|
-
|
43
|
+
def create_run_script(container_name, port)
|
44
|
+
service_dir = "/etc/sv/harbr/#{container_name}"
|
45
|
+
if File.directory?(log_dir)
|
46
|
+
puts "Directory already exists: #{log_dir}"
|
47
|
+
return
|
48
|
+
end
|
49
|
+
|
50
|
+
script_template = <<~SCRIPT
|
51
|
+
#!/bin/sh
|
52
|
+
exec 2>&1
|
53
|
+
cd /var/harbr/#{container_name}/current
|
54
|
+
exec bundle exec puma -p #{port}
|
55
|
+
SCRIPT
|
56
|
+
|
57
|
+
service_dir = "/etc/sv/harbr/#{container_name}"
|
58
|
+
FileUtils.mkdir_p(service_dir)
|
59
|
+
|
60
|
+
File.write("#{service_dir}/run", script_template)
|
61
|
+
FileUtils.chmod("+x", "#{service_dir}/run")
|
62
|
+
puts "Run script created and made executable for container: #{container_name}"
|
23
63
|
end
|
64
|
+
|
65
|
+
def create_log_script(container_name)
|
66
|
+
log_dir = "/var/log/harbr/#{container_name}"
|
67
|
+
if File.directory?(log_dir)
|
68
|
+
puts "Directory already exists: #{log_dir}"
|
69
|
+
return
|
70
|
+
end
|
71
|
+
|
72
|
+
script_template = <<~SCRIPT
|
73
|
+
#!/bin/sh
|
74
|
+
exec svlogd -tt #{log_dir}/
|
75
|
+
SCRIPT
|
76
|
+
|
77
|
+
dir_path = "/etc/sv/harbr/#{container_name}"
|
78
|
+
FileUtils.mkdir_p(dir_path)
|
79
|
+
|
80
|
+
File.write("#{dir_path}/run", script_template)
|
81
|
+
FileUtils.chmod("+x", "#{dir_path}/run")
|
82
|
+
puts "Log script created and made executable for container: #{container_name}"
|
83
|
+
end
|
84
|
+
|
24
85
|
end
|
25
86
|
|
26
87
|
include Dddr::Entity
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: harbr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Delaney Kuldvee Burke
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-12-
|
11
|
+
date: 2023-12-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: listen
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.0.
|
47
|
+
version: 1.0.4
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.0.
|
54
|
+
version: 1.0.4
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: sucker_punch
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -90,8 +90,6 @@ executables:
|
|
90
90
|
extensions: []
|
91
91
|
extra_rdoc_files: []
|
92
92
|
files:
|
93
|
-
- ".data/development/Harbr::Container.dir"
|
94
|
-
- ".data/development/Harbr::Container.pag"
|
95
93
|
- ".data/development/Harbr::Port.dir"
|
96
94
|
- ".data/development/Harbr::Port.pag"
|
97
95
|
- ".rspec"
|
File without changes
|
File without changes
|