harbr 0.0.36 → 0.0.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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