1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
#!/usr/bin/ruby
require_relative 'http_client'
require 'digest'
require "json"
require 'socket'
require "yaml"
def sha()
seed = ""
File.open("/dev/urandom", "r") do |f|
seed = "#{f.sysread(1024)}"
end
Digest::SHA256.hexdigest(seed)
end
def get_ip_address()
ip_arr = Socket.ip_address_list.map { |addr|
addr.ip_address
}.reject { |addr|
addr == "172.17.0.1" or addr.start_with?("127") or addr.include?("::")
}
if ip_arr.length == nil
"127.0.0.1"
else
ip_arr[0]
end
end
def get_jar_versions(yml)
ret = Hash.new
begin
http_client = HttpClient.new(url: yml["jars"]["url"],
username: yml["jars"]["username"],
password: yml["jars"]["password"])
http_client.do_http(method: :propfind)
http_client.response.each_line do |line|
if line =~ /D:href.*\.jar/
jar_name = line.chomp.split(/[<>]/)[2]
jarparts = jar_name.split(/\//)
name, *version_parts, junk1 = jarparts[jarparts.length - 1].split(".")
ret["#{name.gsub("-", "_")}"] = {
"jar_name" => jarparts[jarparts.length - 1],
"jar_version" => version_parts.join("."),
"image_name" => "openbook_#{name.gsub("-", "_")}",
"container_name" => "#{name.gsub("-", "_")}",
"build_dir" => "/root/openbook_build/#{name.gsub("-", "_")}"
}
end
end
rescue Exception => e
STDERR.puts "Error while contacting webdav endpoint: #{e.message}"
exit(1)
end
ret
end
def process_yaml()
env_yaml_path = "#{File.dirname($0)}/config.yaml"
if ! File.file?(env_yaml_path)
STDERR.puts "Unable to find config.yaml. Exiting."
exit(1)
end
yml = YAML.load_file(env_yaml_path)
yml["baseimage"] = {}
yml["database"] = {}
yml["baseimage"]["image_name"] = "openbook_baseimage"
yml["baseimage"]["container_name"] = "baseimage"
yml["baseimage"]["build_dir"] = "/root/openbook_build/baseimage"
yml["database"]["image_name"] = "openbook_database"
yml["database"]["container_name"] = "database"
yml["database"]["build_dir"] = "/root/openbook_build/database"
yml["ansible"] = Hash.new
yml["ansible"]["build_dir"] = "/root/openbook_build/ansible"
yml
end
def main()
yml = process_yaml()
puts yml.merge(get_jar_versions(yml)).to_json
end
main()
exit(0)
|