harbr 0.1.97 → 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 -119
  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: 6523337d1554b46139ffb2f876b7b6a2370ae7ee20446cd2e97f9c3f92ead769
4
- data.tar.gz: 64ed1fdda1a29df228e1ce3131966a14dd2d588e52d8b1728a37f0d91766c272
3
+ metadata.gz: fe153e32f06547c4c498a5d08f8a7aef1fc27e44ed3857d73696e59062b8f80e
4
+ data.tar.gz: d5a7ad6a5f5564625a44500c396482c187fed60d9db85406e74a372d9a5fd0d5
5
5
  SHA512:
6
- metadata.gz: fd8a9c7b340d50d75ad4504c391a9c94ddba5e2b442ecfb0042c8b88fe153b90d412a853ac8b7e3e236c5593aba5c597295e36c08f2feec24c63f4f86287c4e5
7
- data.tar.gz: e14a7cdadc6f73879df16e52012e9104e8f6f0d208f4a597bb596bb1b7cd2cec256167e15dca6d98ef5b400961f02f2b3debd3542380c3b67d7ecfe7d5bf9f6f
6
+ metadata.gz: 0d0c6ffe147df8016539d6e126f201ba8607d6fc554fe55827cd47bb36c0aa7c7a1ca86e871d714f44280e04b09c817d8db6e9f2407488402b9e2e848d1693d0
7
+ data.tar.gz: 20271d95fb0ea8aee04d1cae9dd28949389d70ea333106060de8e1cd9a897bf20b7aca94a382bf3b98e738a36d9ddd863ece93d20a97234108b308b5fddf59e3
data/exe/harbr CHANGED
@@ -48,82 +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
- def run_jobs(container, version)
90
- check_file_exists("/var/harbr/containers/#{container}/versions/#{version}/config/manifest.yml") do
91
- `harbr deploy #{container} #{version} --next`
92
- end
93
- end
94
-
95
- def create_traefik_config(containers)
96
- `rm -rf "/etc/traefik/harbr.toml"`
97
-
98
- config = {
99
- "http" => {
100
- "routers" => {
101
- "traefik-dashboard" => {
102
- "rule" => "Host(`traefik.harbr.zero2one.ee`)",
103
- "service" => "api@internal"
104
- }
105
- },
106
- "services" => {}
107
- }
108
- }
109
-
110
- containers.each do |container|
111
- container.ip = "127.0.0.1"
112
-
113
- config["http"]["routers"]["#{container.name}-router"] = {
114
- "rule" => "Host(`#{container.host_header}`)",
115
- "service" => "#{container.name}-service"
116
- }
117
- config["http"]["services"]["#{container.name}-service"] = {
118
- "loadBalancer" => {
119
- "servers" => [{"url" => "http://#{container.ip}:#{container.port}"}]
120
- }
121
- }
122
- end
123
-
124
- File.write("/etc/traefik/harbr.toml", TomlRB.dump(config))
125
- puts "Traefik configuration written to /etc/traefik/harbr.toml"
126
- end
127
51
  end
128
52
 
129
53
  desc "destroy", "Destroy a container and remove all traces"
@@ -174,33 +98,11 @@ class HarbrCLI < Thor
174
98
  def setup
175
99
  # Check and create /var/harbr directory
176
100
  check_and_create_directory("/var/harbr/containers")
177
-
101
+ check_and_create_directory("/var/dddr")
178
102
  # Check for Ruby, Traefik, and runit, and install if necessary
179
103
  install_with_snap("ruby") unless command_exists?("ruby")
180
104
  install_with_snap("traefik") unless command_exists?("traefik")
181
105
  install_with_apt("runit") unless command_exists?("runit")
182
-
183
- run_script = <<~SCRIPT
184
- #!/bin/sh
185
- exec 2>&1
186
- harbr monitor
187
- SCRIPT
188
-
189
- log_script = <<~SCRIPT
190
- #!/bin/sh
191
- exec svlogd -tt /var/log/harbr/
192
- SCRIPT
193
-
194
- write_to_file("/etc/sv/harbr/run", run_script)
195
- write_to_file("/etc/sv/harbr/log/run", log_script)
196
-
197
- `chmod +x /etc/sv/harbr/run`
198
- `chmod +x /etc/sv/harbr/log/run`
199
- `mkdir -p /var/log/harbr`
200
- `ln -sf /etc/sv/harbr /etc/service/harbr`
201
- `sv start harbr`
202
- puts "Harbr service started successfully."
203
-
204
106
  puts "Setup completed successfully."
205
107
  end
206
108
 
@@ -256,25 +158,6 @@ class HarbrCLI < Thor
256
158
  system "gem update harbr && sv stop harbr && sv start harbr"
257
159
  end
258
160
 
259
- desc "monitor", "Monitor /var/harbr/comtainers for new container versions"
260
- def monitor
261
- puts "version: (#{Harbr::VERSION})"
262
- puts "Monitoring /var/harbr/containers for new container versions..."
263
-
264
- last_known_state = {}
265
-
266
- loop do
267
- current_state = scan_for_containers
268
- new_versions = current_state.keys - last_known_state.keys
269
-
270
- new_versions.each do |container_version|
271
- container, version = container_version.split("/versions/")
272
- place(container, version)
273
- end
274
-
275
- last_known_state = current_state
276
- sleep 3 # Poll every 10 seconds
277
- end
278
- end
279
161
  end
162
+
280
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.97"
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.97
4
+ version: 0.1.98
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delaney Kuldvee Burke