harbr 0.1.96 → 0.1.98

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/exe/harbr +2 -118
  3. data/lib/harbr/version.rb +1 -1
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3c08916d7fe5471c23cdfa15e0cdd3cd5837e9ea2707a9d2cd7f208d660b9bf0
4
- data.tar.gz: b81709797c73e85cc6b81d8107a88897fc05cc958506e65363770ff775ef84b7
3
+ metadata.gz: fe153e32f06547c4c498a5d08f8a7aef1fc27e44ed3857d73696e59062b8f80e
4
+ data.tar.gz: d5a7ad6a5f5564625a44500c396482c187fed60d9db85406e74a372d9a5fd0d5
5
5
  SHA512:
6
- metadata.gz: 8e623c9751a79d4c706ffa0e467e4c4aab4e3178a739e1aae869a16fa9f375480907de3fd98c5f5d82db4c63f374ff2e7ee800f994d2b92dfbeb83431974d1e4
7
- data.tar.gz: 30413ebd34547749790e3bb0158bbddb5093594b4b60d6dec791ad18ae9b645375ffc9735c8341dfc561f4bbce5606323f04071e58f4b4859975f694a75bf865
6
+ metadata.gz: 0d0c6ffe147df8016539d6e126f201ba8607d6fc554fe55827cd47bb36c0aa7c7a1ca86e871d714f44280e04b09c817d8db6e9f2407488402b9e2e848d1693d0
7
+ data.tar.gz: 20271d95fb0ea8aee04d1cae9dd28949389d70ea333106060de8e1cd9a897bf20b7aca94a382bf3b98e738a36d9ddd863ece93d20a97234108b308b5fddf59e3
data/exe/harbr CHANGED
@@ -48,81 +48,6 @@ class HarbrCLI < Thor
48
48
  system("sudo apt install #{package}") or raise "Failed to install #{package}"
49
49
  end
50
50
 
51
- def scan_for_containers
52
- Dir.glob("/var/harbr/containers/*").each_with_object({}) do |container_path, hash|
53
- next unless File.directory?(container_path)
54
- container_name = File.basename(container_path)
55
- versions = Dir.glob("#{container_path}/versions/*").select { |path| File.directory?(path) }
56
- versions.each { |version_path| hash["#{container_name}/versions/#{File.basename(version_path)}"] = true }
57
- end
58
- end
59
-
60
- PLACED_FILE = "/var/harbr/.placed"
61
-
62
- def place(container, version)
63
- placed_containers = File.exist?(PLACED_FILE) ? File.read(PLACED_FILE).split("\n") : []
64
-
65
- if placed_containers.include?("#{container}/#{version}")
66
- puts "Container '#{container}', Version '#{version}' is already placed."
67
- else
68
- puts "Placing container: '#{container}', Version: '#{version}'"
69
- run_jobs(container, version)
70
- File.open(PLACED_FILE, "a") { |file| file.puts("#{container}/#{version}") }
71
- end
72
- end
73
-
74
- def check
75
- sleep_times = [1, 3, 5, 8, 23]
76
- begin
77
- result = yield if block_given?
78
- unless result
79
- sleep_times.each do |time|
80
- result = yield if block_given?
81
- break if result
82
- sleep(time)
83
- end
84
- end
85
- rescue => e
86
- puts "Error: #{e.message}"
87
- end
88
- end
89
-
90
- def run_jobs(container, version)
91
- `harbr deploy #{container} #{version} --next`
92
- end
93
-
94
- def create_traefik_config(containers)
95
- `rm -rf "/etc/traefik/harbr.toml"`
96
-
97
- config = {
98
- "http" => {
99
- "routers" => {
100
- "traefik-dashboard" => {
101
- "rule" => "Host(`traefik.harbr.zero2one.ee`)",
102
- "service" => "api@internal"
103
- }
104
- },
105
- "services" => {}
106
- }
107
- }
108
-
109
- containers.each do |container|
110
- container.ip = "127.0.0.1"
111
-
112
- config["http"]["routers"]["#{container.name}-router"] = {
113
- "rule" => "Host(`#{container.host_header}`)",
114
- "service" => "#{container.name}-service"
115
- }
116
- config["http"]["services"]["#{container.name}-service"] = {
117
- "loadBalancer" => {
118
- "servers" => [{"url" => "http://#{container.ip}:#{container.port}"}]
119
- }
120
- }
121
- end
122
-
123
- File.write("/etc/traefik/harbr.toml", TomlRB.dump(config))
124
- puts "Traefik configuration written to /etc/traefik/harbr.toml"
125
- end
126
51
  end
127
52
 
128
53
  desc "destroy", "Destroy a container and remove all traces"
@@ -173,33 +98,11 @@ class HarbrCLI < Thor
173
98
  def setup
174
99
  # Check and create /var/harbr directory
175
100
  check_and_create_directory("/var/harbr/containers")
176
-
101
+ check_and_create_directory("/var/dddr")
177
102
  # Check for Ruby, Traefik, and runit, and install if necessary
178
103
  install_with_snap("ruby") unless command_exists?("ruby")
179
104
  install_with_snap("traefik") unless command_exists?("traefik")
180
105
  install_with_apt("runit") unless command_exists?("runit")
181
-
182
- run_script = <<~SCRIPT
183
- #!/bin/sh
184
- exec 2>&1
185
- harbr monitor
186
- SCRIPT
187
-
188
- log_script = <<~SCRIPT
189
- #!/bin/sh
190
- exec svlogd -tt /var/log/harbr/
191
- SCRIPT
192
-
193
- write_to_file("/etc/sv/harbr/run", run_script)
194
- write_to_file("/etc/sv/harbr/log/run", log_script)
195
-
196
- `chmod +x /etc/sv/harbr/run`
197
- `chmod +x /etc/sv/harbr/log/run`
198
- `mkdir -p /var/log/harbr`
199
- `ln -sf /etc/sv/harbr /etc/service/harbr`
200
- `sv start harbr`
201
- puts "Harbr service started successfully."
202
-
203
106
  puts "Setup completed successfully."
204
107
  end
205
108
 
@@ -255,25 +158,6 @@ class HarbrCLI < Thor
255
158
  system "gem update harbr && sv stop harbr && sv start harbr"
256
159
  end
257
160
 
258
- desc "monitor", "Monitor /var/harbr/comtainers for new container versions"
259
- def monitor
260
- puts "version: (#{Harbr::VERSION})"
261
- puts "Monitoring /var/harbr/containers for new container versions..."
262
-
263
- last_known_state = {}
264
-
265
- loop do
266
- current_state = scan_for_containers
267
- new_versions = current_state.keys - last_known_state.keys
268
-
269
- new_versions.each do |container_version|
270
- container, version = container_version.split("/versions/")
271
- place(container, version)
272
- end
273
-
274
- last_known_state = current_state
275
- sleep 3 # Poll every 10 seconds
276
- end
277
- end
278
161
  end
162
+
279
163
  HarbrCLI.start(ARGV)
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.1.96"
4
+ VERSION = "0.1.98"
5
5
  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.1.96
4
+ version: 0.1.98
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delaney Kuldvee Burke