harbr 0.0.36 → 0.0.37

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3cf8764c72f8d4226b5375bd51758bbb88a14efe6a8b0588c2fc49a515a9904b
4
- data.tar.gz: ae5910f1ad66fa0bc5587b53b990303ddf3a9d62c969dea87dfe7b2c0420ba5a
3
+ metadata.gz: 0deb1db9d12d5db8012da650e94a8e00e42e22d2a737e7c72d8643f3639eb90e
4
+ data.tar.gz: 2244f98cb5d649fb3a3d69aebfb8f149afed4a0721bbe4ed6fb868086f46880b
5
5
  SHA512:
6
- metadata.gz: f2ad2de2a4e45ff68c14697c60206f4fd11507193afd6951b596a633f28f911742c221fa2063098d4183c70fa6e53eb07f5c1cf4514cf0fb34f8ae71d22ecba0
7
- data.tar.gz: c7bad4c0b6960034496f3613ba9540f8c1beb8deca0c87496f968034fb0d434aa4f06c4d75966c07401572de5e50da61dcd89f4c07bd95942b95ac20f61ba0d4
6
+ metadata.gz: 00d9d014e5ea856653de68efbe0b3f1d71660d809142f29acb52a1faa7a63edf681ca8550b7f86da5dfb14d845fd202b370da1b939380c39b8bca9bade0b4f8e
7
+ data.tar.gz: dc33ac266549d27ae583bf3b1338599f1ef22132fb87f7f06776dbe46324e8b5c6cf6de8a430d8fedacc4aa6bd66ccc8d5e27a1830ae93462d65d1ad00396cdd
data/exe/harbr CHANGED
@@ -2,12 +2,7 @@
2
2
  require_relative "../lib/harbr"
3
3
 
4
4
  class HarbrCLI < Thor
5
- DEFAULT_DIRECTORY = "/var/harbr"
6
- DEFAULT_DIRECTORY_DATA_DIR = "#{DEFAULT_DIRECTORY}/.data"
7
- Dddr.configure do |config|
8
- config.data_dir = DEFAULT_DIRECTORY_DATA_DIR
9
- end
10
-
5
+
11
6
  no_commands do
12
7
  def load_manifest(container, version)
13
8
  manifest_path = "/var/harbr/#{container}/versions/#{version}/config/manifest.yml"
@@ -2,15 +2,13 @@ module Harbr
2
2
  class Container
3
3
  include Dddr::Entity
4
4
  attr_accessor :name, :host_header, :ip, :port
5
+
5
6
  queries do
6
7
  def find_by_header(host_header)
7
8
  all.find { |container| container.host_header.downcase == host_header.downcase }
8
9
  end
9
10
  end
10
-
11
- def number
12
- port
13
- end
11
+
14
12
 
15
13
  end
16
14
  end
data/lib/harbr/job.rb CHANGED
@@ -1,118 +1,116 @@
1
1
  module Harbr
2
- class Container
3
- class Job
4
- include SuckerPunch::Job
5
- def create_traefik_config(containers)
6
- config = {
7
- "http" => {
8
- "routers" => {
9
- "traefik-dashboard" => {
10
- "rule" => "Host(`traefik.harbr.zero2one.ee`)",
11
- "service" => "api@internal"
12
- }
13
- },
14
- "services" => {}
15
- }
2
+ class Job
3
+ include SuckerPunch::Job
4
+ def create_traefik_config(containers)
5
+ config = {
6
+ "http" => {
7
+ "routers" => {
8
+ "traefik-dashboard" => {
9
+ "rule" => "Host(`traefik.harbr.zero2one.ee`)",
10
+ "service" => "api@internal"
11
+ }
12
+ },
13
+ "services" => {}
16
14
  }
15
+ }
17
16
 
18
- containers.each do |container|
19
- container.ip = "127.0.0.1"
17
+ containers.each do |container|
18
+ container.ip = "127.0.0.1"
20
19
 
21
- config["http"]["routers"]["#{container.name}-router"] = {
22
- "rule" => "Host(`#{container.host_header}`)",
23
- "service" => "#{container.name}-service"
24
- }
25
- config["http"]["services"]["#{container.name}-service"] = {
26
- "loadBalancer" => {
27
- "servers" => [{"url" => "http://#{container.ip}:#{container.port}"}]
28
- }
20
+ config["http"]["routers"]["#{container.name}-router"] = {
21
+ "rule" => "Host(`#{container.host_header}`)",
22
+ "service" => "#{container.name}-service"
23
+ }
24
+ config["http"]["services"]["#{container.name}-service"] = {
25
+ "loadBalancer" => {
26
+ "servers" => [{"url" => "http://#{container.ip}:#{container.port}"}]
29
27
  }
30
- end
31
-
32
- File.write("/etc/traefik/harbr.toml", TomlRB.dump(config))
33
- puts "Traefik configuration written to /etc/traefik/harbr.toml"
28
+ }
34
29
  end
35
30
 
36
- def create_run_script(container_name, port)
37
- service_dir = "/etc/sv/harbr/#{container_name}"
38
- if File.directory?(service_dir)
39
- puts "Directory already exists: #{service_dir}"
40
- return
41
- end
42
-
43
- script_template = <<~SCRIPT
44
- #!/bin/sh
45
- exec 2>&1
46
- cd /var/harbr/#{container_name}/current
47
- exec bundle exec puma -p #{port}
48
- SCRIPT
49
-
50
- service_dir = "/etc/sv/harbr/#{container_name}"
51
- FileUtils.mkdir_p(service_dir)
52
-
53
- File.write("#{service_dir}/run", script_template)
54
- FileUtils.chmod("+x", "#{service_dir}/run")
55
- puts "Run script created and made executable for container: #{container_name}"
56
- end
31
+ File.write("/etc/traefik/harbr.toml", TomlRB.dump(config))
32
+ puts "Traefik configuration written to /etc/traefik/harbr.toml"
33
+ end
57
34
 
58
- def create_log_script(container_name)
59
- log_dir = "/var/log/harbr/#{container_name}"
35
+ def create_run_script(container_name, port)
36
+ service_dir = "/etc/sv/harbr/#{container_name}"
37
+ if File.directory?(service_dir)
38
+ puts "Directory already exists: #{service_dir}"
39
+ return
40
+ end
60
41
 
61
- if File.directory?(log_dir)
62
- puts "Directory already exists: #{log_dir}"
63
- return
64
- end
42
+ script_template = <<~SCRIPT
43
+ #!/bin/sh
44
+ exec 2>&1
45
+ cd /var/harbr/#{container_name}/current
46
+ exec bundle exec puma -p #{port}
47
+ SCRIPT
65
48
 
66
- FileUtils.mkdir_p(log_dir)
49
+ service_dir = "/etc/sv/harbr/#{container_name}"
50
+ FileUtils.mkdir_p(service_dir)
67
51
 
68
- script_template = <<~SCRIPT
69
- #!/bin/sh
70
- exec svlogd -tt #{log_dir}/
71
- SCRIPT
52
+ File.write("#{service_dir}/run", script_template)
53
+ FileUtils.chmod("+x", "#{service_dir}/run")
54
+ puts "Run script created and made executable for container: #{container_name}"
55
+ end
72
56
 
73
- dir_path = "/etc/sv/harbr/#{container_name}/log"
74
- FileUtils.mkdir_p(dir_path)
57
+ def create_log_script(container_name)
58
+ log_dir = "/var/log/harbr/#{container_name}"
75
59
 
76
- File.write("#{dir_path}/run", script_template)
77
- FileUtils.chmod("+x", "#{dir_path}/run")
78
- puts "Log script created and made executable for container: #{container_name}"
60
+ if File.directory?(log_dir)
61
+ puts "Directory already exists: #{log_dir}"
62
+ return
79
63
  end
80
64
 
81
- def create_a_service(container_name, port)
82
- create_run_script(container_name, port)
83
- create_log_script(container_name)
84
- system("ln -s /etc/sv/harbr/#{container_name} /etc/service/#{container_name}") unless File.exist?("/etc/service/#{container_name}")
85
- end
65
+ FileUtils.mkdir_p(log_dir)
86
66
 
87
- def run_container(manifest)
88
- puts "Starting container: #{manifest.name}"
67
+ script_template = <<~SCRIPT
68
+ #!/bin/sh
69
+ exec svlogd -tt #{log_dir}/
70
+ SCRIPT
89
71
 
90
- Dddr.configure do |config|
91
- config.data_dir = Harbr::DEFAULT_DIRECTORY_DATA_DIR
92
- end
72
+ dir_path = "/etc/sv/harbr/#{container_name}/log"
73
+ FileUtils.mkdir_p(dir_path)
93
74
 
94
- pool = Harbr::Port::Pool.new
95
- port = pool.get_port(manifest.host)
75
+ File.write("#{dir_path}/run", script_template)
76
+ FileUtils.chmod("+x", "#{dir_path}/run")
77
+ puts "Log script created and made executable for container: #{container_name}"
78
+ end
96
79
 
97
- create_a_service(manifest.name, port.number)
80
+ def create_a_service(container_name, port)
81
+ create_run_script(container_name, port)
82
+ create_log_script(container_name)
83
+ system("ln -s /etc/sv/harbr/#{container_name} /etc/service/#{container_name}") unless File.exist?("/etc/service/#{container_name}")
84
+ end
98
85
 
99
- container = Container.new
100
- containers = Container::Repository.new
86
+ def run_container(manifest)
87
+ puts "Starting container: #{manifest.name}"
101
88
 
102
- container.name = manifest.name
103
- container.host_header = manifest.host
104
- container.ip = manifest.ip.nil?
105
- container.port = port.number
106
- containers.add(container) unless containers.find_by_header(manifest.host)
107
- system("cd /var/harbr/#{manifest.name}/current && bundle install")
108
- system("sv restart #{manifest.name}")
109
- puts "Started container: #{manifest.name}"
110
- create_traefik_config(containers.all)
89
+ Dddr.configure do |config|
90
+ config.data_dir = Harbr::DEFAULT_DIRECTORY_DATA_DIR
111
91
  end
112
92
 
113
- def perform(manifest)
114
- run_container(manifest)
115
- end
93
+ pool = Harbr::Pool.new
94
+ port = pool.get_port(manifest.host)
95
+
96
+ create_a_service(manifest.name, port.number)
97
+
98
+ container = Container.new
99
+ containers = Container::Repository.new
100
+
101
+ container.name = manifest.name
102
+ container.host_header = manifest.host
103
+ container.ip = manifest.ip.nil?
104
+ container.port = port.number
105
+ containers.add(container) unless containers.find_by_header(manifest.host)
106
+ system("cd /var/harbr/#{manifest.name}/current && bundle install")
107
+ system("sv restart #{manifest.name}")
108
+ puts "Started container: #{manifest.name}"
109
+ create_traefik_config(containers.all)
110
+ end
111
+
112
+ def perform(manifest)
113
+ run_container(manifest)
116
114
  end
117
115
  end
118
116
  end
data/lib/harbr/pool.rb CHANGED
@@ -1,39 +1,37 @@
1
1
  module Harbr
2
- class Port
3
- class Pool # rubocop:disable Style/Documentation
4
- def initialize(port_range = 50000..51000)
5
- @repository = Port::Repository.new
2
+ class Pool # rubocop:disable Style/Documentation
3
+ def initialize(port_range = 50000..51000)
4
+ @repository = Port::Repository.new
6
5
 
7
- port_range.each do |number|
8
- port = Port.new
9
- port.number = number
6
+ port_range.each do |number|
7
+ port = Port.new
8
+ port.number = number
10
9
 
11
- unless @repository.has_port_number? number
12
- @repository.add(port)
13
- puts port.number.to_s + " added!"
14
- end
10
+ unless @repository.has_port_number? number
11
+ @repository.add(port)
12
+ puts port.number.to_s + " added!"
15
13
  end
16
14
  end
15
+ end
17
16
 
18
- def get_port(host_header)
19
- port = @repository.assigned_a_port?(host_header)
20
- return port unless port.nil?
17
+ def get_port(host_header)
18
+ port = @repository.assigned_a_port?(host_header)
19
+ return port unless port.nil?
21
20
 
22
- port = ports.shuffle.sample
23
- port.host_header = host_header
24
- @repository.update(port)
25
- port
26
- end
21
+ port = ports.shuffle.sample
22
+ port.host_header = host_header
23
+ @repository.update(port)
24
+ port
25
+ end
27
26
 
28
- def return_port(port)
29
- port.host_header = nil
30
- @repository.update(port)
31
- port.host_header.nil?
32
- end
27
+ def return_port(port)
28
+ port.host_header = nil
29
+ @repository.update(port)
30
+ port.host_header.nil?
31
+ end
33
32
 
34
- def ports
35
- @repository.all
36
- end
33
+ def ports
34
+ @repository.all
37
35
  end
38
36
  end
39
37
  end
data/lib/harbr/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Harbr
4
- VERSION = "0.0.36"
4
+ VERSION = "0.0.37"
5
5
  end
data/lib/harbr.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  require "thor"
2
2
  require "dddr"
3
- require "harbr"
4
3
  require "terminal-table"
5
4
  require "yaml"
6
5
  require "toml-rb"
@@ -18,10 +17,10 @@ require_relative "harbr/pool"
18
17
  module Harbr
19
18
  DEFAULT_DIRECTORY = "/var/harbr"
20
19
  DEFAULT_DIRECTORY_DATA_DIR = "#{DEFAULT_DIRECTORY}/.data"
21
-
22
- Dddr.configure do |config|
23
- config.data_dir = DEFAULT_DIRECTORY_DATA_DIR
24
- end
25
-
26
20
  class Error < StandardError; end
27
21
  end
22
+
23
+ Dddr.configure do |config|
24
+ config.data_dir = Harbr::DEFAULT_DIRECTORY_DATA_DIR
25
+ end
26
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: harbr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.36
4
+ version: 0.0.37
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delaney Kuldvee Burke