Skip to content

Commit 95a1c97

Browse files
Release 4.0.1
* Task: https://redmine.redborder.lan/issues/17621 * fix rbcli service command --------- Co-authored-by: nilsver <[email protected]> Co-authored-by: nilsver <[email protected]>
1 parent 8497e5d commit 95a1c97

File tree

5 files changed

+53
-12
lines changed

5 files changed

+53
-12
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
cookbook-rb-proxy CHANGELOG
22
===============
33

4+
## 4.0.1
5+
6+
- nilsver
7+
- [a4a0af5] fix rbcli service command
8+
49
## 4.0.0
510

611
- Miguel Negrón

resources/libraries/proxy_services.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,21 @@ def proxy_services
1919
end
2020
end
2121

22+
begin
23+
file_services = JSON.parse(File.read('/etc/redborder/services.json'))
24+
rescue Errno::ENOENT, JSON::ParserError => e
25+
Chef::Log.warn("Error loading services from file: #{e.message}")
26+
file_services = {}
27+
end
28+
29+
systemd_services = node.attributes['redborder']['systemdservices']
30+
systemd_services.each do |service_name, systemd_name|
31+
sys_name = systemd_name.join(',')
32+
if file_services.key?(sys_name)
33+
proxy_services[service_name] = file_services[sys_name]
34+
end
35+
end
36+
2237
proxy_services
2338
end
2439
end

resources/libraries/update_hosts_file.rb

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
module RbProxy
22
module Helpers
3+
require 'resolv'
4+
35
def read_hosts_file
46
hosts_hash = Hash.new { |hash, key| hash[key] = [] }
57
File.readlines('/etc/hosts').each do |line|
@@ -13,9 +15,15 @@ def read_hosts_file
1315
end
1416

1517
def update_hosts_file
16-
manager_registration_ip = node['redborder']['manager_registration_ip'] if node['redborder'] && node['redborder']['manager_registration_ip']
17-
18-
return unless manager_registration_ip
18+
unless node.dig('redborder', 'resolve_host')
19+
domain_name = node.dig('redborder', 'manager_registration_ip')
20+
return if domain_name.nil?
21+
resolved_ip = manager_to_ip(domain_name)
22+
return if resolved_ip.nil?
23+
node.normal['redborder']['resolve_host'] = resolved_ip
24+
end
25+
manager_registration_ip = node.dig('redborder', 'resolve_host')
26+
# Up until here, we resolved and stored the ip for /etc/hosts only if necessary
1927

2028
running_services = node['redborder']['systemdservices'].values.flatten if node['redborder']['systemdservices']
2129
databags = Chef::DataBag.load('rBglobal').keys.grep(/^ipvirtual-external-/).map { |bag| bag.sub('ipvirtual-external-', '') }
@@ -53,5 +61,16 @@ def update_hosts_file
5361
end
5462
hosts_entries
5563
end
64+
65+
def manager_to_ip(str)
66+
ipv4_regex = /\A(\d{1,3}\.){3}\d{1,3}\z/
67+
ipv6_regex = /\A(?:[A-Fa-f0-9]{1,4}:){7}[A-Fa-f0-9]{1,4}\z/
68+
dns_regex = /\A[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+\z/
69+
70+
return str if str.match?(ipv4_regex) || str.match?(ipv6_regex)
71+
return Resolv.getaddress(str).to_s if str.match?(dns_regex)
72+
73+
nil
74+
end
5675
end
5776
end

resources/metadata.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
maintainer_email '[email protected]'
44
license 'AGPL-3.0'
55
description 'Installs/Configures redborder proxy'
6-
version '4.0.0'
6+
version '4.0.1'
77

88
depends 'rb-common'
99
depends 'rb-selinux'

resources/recipes/prepare_system.rb

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,15 @@
9090
end
9191

9292
# Build service list for rbcli
93-
services = node['redborder']['services'] || []
94-
systemd_services = node['redborder']['systemdservices'] || []
95-
service_enablement = {}
93+
unless File.exist?('/etc/redborder/services.json')
94+
services = node['redborder']['services'] || []
95+
systemd_services = node['redborder']['systemdservices'] || []
96+
service_enablement = {}
9697

97-
systemd_services.each do |service_name, systemd_name|
98-
service_enablement[systemd_name.first] = services[service_name]
99-
end
98+
systemd_services.each do |service_name, systemd_name|
99+
service_enablement[systemd_name.first] = services[service_name]
100+
end
100101

101-
Chef::Log.info('Saving services enablement into /etc/redborder/services.json')
102-
File.write('/etc/redborder/services.json', JSON.pretty_generate(service_enablement))
102+
Chef::Log.info('Saving services enablement into /etc/redborder/services.json')
103+
File.write('/etc/redborder/services.json', JSON.pretty_generate(service_enablement))
104+
end

0 commit comments

Comments
 (0)