upman-daemon 0.0.8.1 → 0.0.8.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cd6ceff6de286cae8dc5357c7f3e286be60c9b111174ba8112cd0d7aa26089e0
4
- data.tar.gz: 3c516d9d24ddd3e3e703ba2a12dccca39b7084d49b011e9c6547305a2b767840
3
+ metadata.gz: 70896bf0b492b51778903072b680b0859866a07ecb11f3c5f08e95f56b36a938
4
+ data.tar.gz: 2b7d02093f844606b0010fcb49b3fda99ff13e05c1feb4f35e7f1bcda49b2f57
5
5
  SHA512:
6
- metadata.gz: 78624642f5bc688c810bd77ce710f72a15016ee5bd438191816e48db143388505562383e68761b153042ea0bf8787801e9c42579a42ebc15a7074a7fabe553d2
7
- data.tar.gz: a9da3ee97bc57c7576f780951a6ad81d7b232813328ee8508df3782b3c085595e74d4ba270774b34f5696413d5261397835222f365f5ed38b130adf002440ac9
6
+ metadata.gz: cf227befbd1ca524c9698f574cf9ae4fc0f83b172e7905ace320cb61f9a9a05fac32f87cadcdf397e71bd7129f6080f0fb4057fed520d637c698eb606a7e622c
7
+ data.tar.gz: b87d75fef10d68e7f8865494177acb934a13c62022f3beb76828769a84a5f2a8b3ca1ebccc2fa350952b7bc568c59868be7effa0c870bedb8db3b82f7c0fe70a
@@ -58,6 +58,9 @@ module Upman
58
58
  return nil
59
59
  end
60
60
 
61
+ register = Upman::Core::Register.new
62
+ register.perform
63
+
61
64
  threads = []
62
65
 
63
66
  Thread.abort_on_exception = true
@@ -0,0 +1,50 @@
1
+ module Upman
2
+ module Core
3
+ class Register
4
+ include ::Upman::Utils::Helper
5
+ using SymbolizeHelper
6
+ require 'securerandom'
7
+
8
+ require 'facter'
9
+ attr_accessor :hostdata_file
10
+
11
+ def initialize
12
+ @hostdata_file = 'hostdata.yml'
13
+ end
14
+
15
+ def perform
16
+ data = generate_host_data
17
+ info "Register Daemon running on #{data[:hostname]} with foreman_upman"
18
+
19
+ api = ::Upman::Utils::Api.new
20
+ api.post("upman/node/register", data.to_json)
21
+ end
22
+
23
+ def generate_host_data
24
+ unless File.exist? @hostdata_file
25
+ data = {
26
+ :hostname => Socket.gethostbyname(Socket.gethostname).first,
27
+ :uuid => SecureRandom.uuid,
28
+ }
29
+ File.write(@hostdata_file, data.to_yaml)
30
+ end
31
+ update_node_data
32
+ end
33
+
34
+ def update_node_data
35
+ if File.exist? @hostdata_file
36
+ data = YAML::load_file(@hostdata_file).deep_symbolize_keys
37
+ data.merge!({
38
+ :operatingsystem => Facter['operatingsystem'].value,
39
+ :rubyversion => Facter['rubyversion'].value,
40
+ :operatingsystemrelease => Facter['operatingsystemrelease'].value,
41
+ :last_sync => DateTime.now
42
+ })
43
+ File.write(@hostdata_file, data.to_yaml)
44
+ end
45
+ data
46
+ end
47
+
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,36 @@
1
+ module Upman
2
+ module Extensions
3
+ class Index < ::Upman::Core::ExtensionBase
4
+ REQUEST_PATH = "index"
5
+
6
+ def register
7
+ return Servlet
8
+ end
9
+
10
+ class Servlet < ::Upman::Server::BaseServlet
11
+
12
+ include ::Upman::Utils::Dynload
13
+
14
+ # rubocop:disable Naming/MethodName
15
+ def do_GET(request, response)
16
+ # rubocop:enable Naming/MethodName
17
+
18
+ super(request, response)
19
+ response = ok(response, perform_action(request))
20
+ end
21
+
22
+ def perform_action(request)
23
+ endpoints = []
24
+ hostname = request.request_uri.to_s.sub(request.script_name, '')
25
+ ::Upman::Core::Config.daemon[:extensions].each do |extension|
26
+ ext_obj = dynload("Upman::Extensions::#{extension.split('_').map(&:capitalize).join('')}")
27
+ endpoints.append "#{hostname}/#{ext_obj ::REQUEST_PATH}.do"
28
+ end
29
+ "{\"message\": \"upman-#{::Upman::Version::VERSION} - Daemon is running\", \"endpoints\": #{endpoints.to_json}}"
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+ end
36
+ end
@@ -7,6 +7,7 @@ module Upman
7
7
  class Socket
8
8
 
9
9
  include ::Upman::Utils::Helper
10
+ include ::Upman::Utils::Dynload
10
11
 
11
12
  include WEBrick
12
13
 
@@ -33,29 +34,23 @@ module Upman
33
34
  Logger: WEBrick::Log.new("/dev/null"),
34
35
  AccessLog: [],
35
36
  )
37
+
36
38
  _register_extensions(server)
37
39
 
38
40
  protocol = @config[:ssl] ? 'https://' : 'http://'
39
41
  info "Starting listener on #{protocol}#{@config[:listen]}:#{@config[:port]}"
40
-
41
42
  server.start
42
43
 
43
44
  end
44
45
 
45
46
  private
46
47
 
47
- def _dynload(str)
48
- str.split('::').inject(Object) do |mod, class_name|
49
- mod.const_get(class_name)
50
- end
51
- end
52
-
53
48
 
54
49
  def _register_extensions(server)
55
50
 
56
51
  @config[:extensions].each do |extension|
57
52
  require_relative "../../upman/extensions/#{extension}"
58
- ext_obj = _dynload("Upman::Extensions::#{extension.split('_').map(&:capitalize).join('')}")
53
+ ext_obj = dynload("Upman::Extensions::#{extension.split('_').map(&:capitalize).join('')}")
59
54
  info "Register /#{ext_obj ::REQUEST_PATH}.do for Upman::Extensions::#{extension.split('_').map(&:capitalize).join('')}"
60
55
  ext_class = ext_obj .new
61
56
  server.mount "/#{ext_obj ::REQUEST_PATH}.do", ext_class.register
@@ -10,7 +10,7 @@ module Upman
10
10
  def check_connection
11
11
  response = self.get "status"
12
12
  if response.nil?
13
- false
13
+ false
14
14
  end
15
15
 
16
16
  unless response.code == 200
@@ -24,7 +24,12 @@ module Upman
24
24
 
25
25
  def post(api_endoint, data)
26
26
  begin
27
- RestClient::Request.execute method: :post, url: _url + api_endoint, data: data, content_type: :json, accept: :json, user: Upman::Core::Config.foreman_api[:username], password: Upman::Core::Config.foreman_api[:password]
27
+ RestClient::Request.execute method: :post,
28
+ url: _url + api_endoint,
29
+ payload: data,
30
+ headers: {:accept => :json, content_type: :json},
31
+ user: Upman::Core::Config.foreman_api[:username],
32
+ password: Upman::Core::Config.foreman_api[:password]
28
33
  rescue RestClient::Unauthorized
29
34
  fail "API Endpoint could not validate your credentials. Please check username or password"
30
35
  rescue OpenSSL::SSL::SSLError
@@ -0,0 +1,11 @@
1
+ module Upman
2
+ module Utils
3
+ module Dynload
4
+ def dynload(str)
5
+ str.split('::').inject(Object) do |mod, class_name|
6
+ mod.const_get(class_name)
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
data/lib/upman.rb CHANGED
@@ -6,28 +6,31 @@ require_relative 'upman/utils/symbolize_helper'
6
6
  require_relative 'upman/utils/helper'
7
7
  require_relative 'upman/utils/api'
8
8
  require_relative 'upman/utils/files'
9
+ require_relative 'upman/utils/dynload'
9
10
  require_relative 'upman/utils/parser'
10
11
 
12
+ require_relative 'upman/core/register'
11
13
  require_relative 'upman/core/daemon'
12
14
  require_relative 'upman/core/config'
13
15
  require_relative 'upman/core/extension_base'
14
16
  require_relative 'upman/core/worker'
15
17
 
18
+
16
19
  require_relative 'upman/server/socket'
17
20
  require_relative 'upman/server/base_servlet'
18
21
 
19
22
  module Upman
20
23
  def self.run!(options)
21
- config = nil
22
- config = "config.yml" if File.exist? "config.yml"
23
- config = "/etc/upman/config.yml" if File.exist? "/etc/upman/config.yml"
24
+ config_file = nil
25
+ config_file = "config.yml" if File.exist? "config.yml"
26
+ config_file = "/etc/upman/config.yml" if File.exist? "/etc/upman/config.yml"
24
27
 
25
- if config.nil?
28
+ if config_file.nil?
26
29
  p "Can not find configuration file in /etc/upman/config.yml"
27
30
  return nil
28
31
  end
29
32
 
30
- Core::Config.load!(config)
33
+ Core::Config.load!(config_file)
31
34
  Core::Daemon.new(options).run!
32
35
  end
33
36
  end
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Upman
2
2
  class Version
3
- VERSION = '0.0.8.1'
3
+ VERSION = '0.0.8.2'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: upman-daemon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8.1
4
+ version: 0.0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Ehrig
@@ -88,14 +88,17 @@ files:
88
88
  - lib/upman/core/config.rb
89
89
  - lib/upman/core/daemon.rb
90
90
  - lib/upman/core/extension_base.rb
91
+ - lib/upman/core/register.rb
91
92
  - lib/upman/core/worker.rb
92
93
  - lib/upman/extensions/get_install_history.rb
93
94
  - lib/upman/extensions/get_installed_packages.rb
95
+ - lib/upman/extensions/index.rb
94
96
  - lib/upman/extensions/install_package.rb
95
97
  - lib/upman/extensions/ping.rb
96
98
  - lib/upman/server/base_servlet.rb
97
99
  - lib/upman/server/socket.rb
98
100
  - lib/upman/utils/api.rb
101
+ - lib/upman/utils/dynload.rb
99
102
  - lib/upman/utils/files.rb
100
103
  - lib/upman/utils/helper.rb
101
104
  - lib/upman/utils/parser.rb