harbr 0.0.29 → 0.0.31

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: 05f9f6f2cfa6a6e47b98bf065594b68346c8348b8ec770265cd0f4e4c0f143c4
4
- data.tar.gz: 9c0196f50e7c60f93dc0666511dc80243949408a5f8247f09daf162f9941edd2
3
+ metadata.gz: 07a8b5b67f72d791625b4757d8416def9b0c43be84cfd325fed764814ea2104c
4
+ data.tar.gz: bc2112362060abc23e9a6bdd80771cd01330cae76c31ea0c968e4c7c4a2a6167
5
5
  SHA512:
6
- metadata.gz: b0f056c312eee44919da4409680f25c28933892d09a44f83c563c7566480a54917d43f330246196112f9c50f884d823a7bcf80281c3e1b87c00b32e6a1604b5a
7
- data.tar.gz: 7f50616e3a8134dbacef6ecbdbc8d5376961bf088a18fc00cd7497d7f6ffe6ed9bfcb294e7b26966e71cf03b237170fc293f606fe31e959c40204b891870c7f0
6
+ metadata.gz: dd6cc0baac7e7776efaf7ce2dc542afdc7cd44d137f7a728b74eb827f44a5bee8edf7c29350b56552a5dacde02b2d000f355e2008320a4d348046d2fc2b8e7cb
7
+ data.tar.gz: fd285445948d87cec1ed84ccc308c2c79f098af9d6e7d1ea528e3fe4bfc5a92cd4ab60c661171ee7d7d0a240d29f06edb1a5aacf0a8517ebed1ecdea698c75d2
data/exe/harbr CHANGED
@@ -1,13 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- require "thor"
3
- require "dddr"
4
- require "harbr"
5
- require "sucker_punch"
6
- require "terminal-table"
7
- require "yaml"
8
- require "toml-rb"
9
- require "fileutils"
10
- require "ostruct"
2
+ require_relative "../lib/harbr"
11
3
 
12
4
  class HarbrCLI < Thor
13
5
  DEFAULT_DIRECTORY = "/var/harbr"
data/lib/harbr/job.rb CHANGED
@@ -1,123 +1,121 @@
1
1
  module Harbr
2
- module Harbr
3
- class Container
4
- class Job
5
- include SuckerPunch::Job
6
- def create_traefik_config(containers)
7
- config = {
8
- "http" => {
9
- "routers" => {
10
- "traefik-dashboard" => {
11
- "rule" => "Host(`traefik.harbr.zero2one.ee`)",
12
- "service" => "api@internal"
13
- }
14
- },
15
- "services" => {}
16
- }
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" => {}
17
15
  }
16
+ }
18
17
 
19
- containers.each do |container|
20
- container.ip = "127.0.0.1"
18
+ containers.each do |container|
19
+ container.ip = "127.0.0.1"
21
20
 
22
- config["http"]["routers"]["#{container.name}-router"] = {
23
- "rule" => "Host(`#{container.host_header}`)",
24
- "service" => "#{container.name}-service"
25
- }
26
- config["http"]["services"]["#{container.name}-service"] = {
27
- "loadBalancer" => {
28
- "servers" => [{"url" => "http://#{container.ip}:#{container.port}"}]
29
- }
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}"}]
30
28
  }
31
- end
32
-
33
- File.write("/etc/traefik/harbr.toml", TomlRB.dump(config))
34
- puts "Traefik configuration written to /etc/traefik/harbr.toml"
29
+ }
35
30
  end
36
31
 
37
- def create_run_script(container_name, port)
38
- service_dir = "/etc/sv/harbr/#{container_name}"
39
- if File.directory?(service_dir)
40
- puts "Directory already exists: #{service_dir}"
41
- return
42
- end
43
-
44
- script_template = <<~SCRIPT
45
- #!/bin/sh
46
- exec 2>&1
47
- cd /var/harbr/#{container_name}/current
48
- exec bundle install && bundle exec puma -p #{port}
49
- SCRIPT
50
-
51
- service_dir = "/etc/sv/harbr/#{container_name}"
52
- FileUtils.mkdir_p(service_dir)
53
-
54
- File.write("#{service_dir}/run", script_template)
55
- FileUtils.chmod("+x", "#{service_dir}/run")
56
- puts "Run script created and made executable for container: #{container_name}"
57
- end
32
+ File.write("/etc/traefik/harbr.toml", TomlRB.dump(config))
33
+ puts "Traefik configuration written to /etc/traefik/harbr.toml"
34
+ end
58
35
 
59
- def create_log_script(container_name)
60
- log_dir = "/var/log/harbr/#{container_name}"
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
61
42
 
62
- if File.directory?(log_dir)
63
- puts "Directory already exists: #{log_dir}"
64
- return
65
- end
43
+ script_template = <<~SCRIPT
44
+ #!/bin/sh
45
+ exec 2>&1
46
+ cd /var/harbr/#{container_name}/current
47
+ exec bundle install && bundle exec puma -p #{port}
48
+ SCRIPT
66
49
 
67
- FileUtils.mkdir_p(log_dir)
50
+ service_dir = "/etc/sv/harbr/#{container_name}"
51
+ FileUtils.mkdir_p(service_dir)
68
52
 
69
- script_template = <<~SCRIPT
70
- #!/bin/sh
71
- exec svlogd -tt #{log_dir}/
72
- SCRIPT
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
73
57
 
74
- dir_path = "/etc/sv/harbr/#{container_name}/log"
75
- FileUtils.mkdir_p(dir_path)
58
+ def create_log_script(container_name)
59
+ log_dir = "/var/log/harbr/#{container_name}"
76
60
 
77
- File.write("#{dir_path}/run", script_template)
78
- FileUtils.chmod("+x", "#{dir_path}/run")
79
- puts "Log script created and made executable for container: #{container_name}"
61
+ if File.directory?(log_dir)
62
+ puts "Directory already exists: #{log_dir}"
63
+ return
80
64
  end
81
65
 
82
- def create_a_service(container_name, port)
83
- create_run_script(container_name, port)
84
- create_log_script(container_name)
85
- system("ln -s /etc/sv/harbr/#{container_name} /etc/service/#{container_name}") unless File.exist?("/etc/service/#{container_name}")
86
- end
66
+ FileUtils.mkdir_p(log_dir)
87
67
 
88
- def run_container(manifest)
89
- puts "Starting container: #{manifest.name}"
68
+ script_template = <<~SCRIPT
69
+ #!/bin/sh
70
+ exec svlogd -tt #{log_dir}/
71
+ SCRIPT
90
72
 
91
- Dddr.configure do |config|
92
- config.data_dir = Harbr::DEFAULT_DIRECTORY_DATA_DIR
93
- end
73
+ dir_path = "/etc/sv/harbr/#{container_name}/log"
74
+ FileUtils.mkdir_p(dir_path)
94
75
 
95
- pool = Harbr::Port::Pool.new
96
- port = pool.get_port(manifest.host)
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}"
79
+ end
97
80
 
98
- create_a_service(manifest.name, port.number)
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
99
86
 
100
- sleep 5
101
- system("sv restart #{manifest.name}")
102
- sleep 5
103
- system("sv status #{manifest.name}")
104
- puts "Started container: #{manifest.name}"
87
+ def run_container(manifest)
88
+ puts "Starting container: #{manifest.name}"
105
89
 
106
- container = Container.new
107
- containers = Container::Repository.new
90
+ Dddr.configure do |config|
91
+ config.data_dir = Harbr::DEFAULT_DIRECTORY_DATA_DIR
92
+ end
108
93
 
109
- container.name = manifest.name
110
- container.host_header = manifest.host
111
- container.ip = manifest.ip.nil?
112
- container.port = port.number
113
- containers.add(container) unless containers.find_by_header(manifest.host)
94
+ pool = Harbr::Port::Pool.new
95
+ port = pool.get_port(manifest.host)
114
96
 
115
- create_traefik_config(containers.all)
116
- end
97
+ create_a_service(manifest.name, port.number)
117
98
 
118
- def perform(manifest)
119
- run_container(manifest)
120
- end
99
+ sleep 5
100
+ system("sv restart #{manifest.name}")
101
+ sleep 5
102
+ system("sv status #{manifest.name}")
103
+ puts "Started container: #{manifest.name}"
104
+
105
+ container = Container.new
106
+ containers = Container::Repository.new
107
+
108
+ container.name = manifest.name
109
+ container.host_header = manifest.host
110
+ container.ip = manifest.ip.nil?
111
+ container.port = port.number
112
+ containers.add(container) unless containers.find_by_header(manifest.host)
113
+
114
+ create_traefik_config(containers.all)
115
+ end
116
+
117
+ def perform(manifest)
118
+ run_container(manifest)
121
119
  end
122
120
  end
123
121
  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.29"
4
+ VERSION = "0.0.31"
5
5
  end
data/lib/harbr.rb CHANGED
@@ -1,5 +1,12 @@
1
- require "sucker_punch"
1
+ require "thor"
2
+ require "dddr"
3
+ require "harbr"
4
+ require "terminal-table"
5
+ require "yaml"
2
6
  require "toml-rb"
7
+ require "fileutils"
8
+ require "ostruct"
9
+ require "sucker_punch"
3
10
 
4
11
  require_relative "harbr/version"
5
12
  require_relative "harbr/container"
@@ -17,4 +24,4 @@ module Harbr
17
24
  end
18
25
 
19
26
  class Error < StandardError; end
20
- end
27
+ end
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.29
4
+ version: 0.0.31
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delaney Kuldvee Burke