omf_rc_shm 0.1.15 → 0.1.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/config/config.yml +17 -4
- data/lib/omf_rc/resource_proxy/shm_node.rb +36 -1
- data/lib/omf_rc_shm/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MGFmMDYyMWEyZGU3ZmQ4NzRiYjFjYzBhOTdkNTRmMjQ3YWEwYjZjOQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
M2Y1ZTBmMzNkMmE5NmRiMzY4Y2VmNTZkYzNkMGEzNzBlNWFlMjBiOQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MWZmYTAwMjE4M2U3NjEzM2EwN2YyYTQ3ZDEyNGUwZDY2MTJhNmZmNzVkYTNj
|
10
|
+
NGJhYWE2MGVlOTljZTY4YzFlNzBmNmE3ZDBjY2NkYWZmNDdjYWUyY2NjM2Rh
|
11
|
+
MTY0ZDkzNjY1NjUzMGM5NmNiNTc3NGQ4NjBiOWM5NTA5M2VmNDE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NmU1NDdhOGU2MTAyM2YwODkxMTEzYmE4MjYyYzQ4ZjAyNDY5MDFjMTYwZjY0
|
14
|
+
ODZkZWUxMjJjYjBhNzRlNTgwOGQ4ZTk1OWUyNDNiOTI5MzdiNDU5MTJmNGI0
|
15
|
+
MzgxNDA1ZTRiMDI1Yzc2ODJjNDI2ZDIyMDg3YTczZGQxYzUyYmE=
|
data/config/config.yml
CHANGED
@@ -2,8 +2,9 @@
|
|
2
2
|
---
|
3
3
|
# URI to the communication system
|
4
4
|
# - local://local for no oustide communication
|
5
|
+
# - amqp://my.amqp.server.com to use AMQP communication
|
5
6
|
# - xmpp://user:password@some.xmpp.server to use XMPP communication via
|
6
|
-
# some.xmpp.server, using the specified user and password
|
7
|
+
# some.xmpp.server, using the specified user and password
|
7
8
|
:uri: local://local
|
8
9
|
:environment: production
|
9
10
|
:debug: false
|
@@ -13,7 +14,8 @@
|
|
13
14
|
# ID to give to this SHM node
|
14
15
|
# by default construct 'node1234' ID based on IP address of the br0 interface
|
15
16
|
# as requested by the SHM team
|
16
|
-
|
17
|
+
#:uid: '<%= ip = `ifconfig br0`.match(/inet addr:(\d*\.\d*\.\d*\.\d*)/)[1].split('.') ; (ip[2].to_i*256+ip[3].to_i).to_s.rjust(5,'0') %>'
|
18
|
+
:uid: '<%= mac = `/sbin/ifconfig br0`.match(/HWaddr (\h*\:\h*\:\h*\:\h*:\h*:\h*)/)[1].split(':') ; (mac[4]+mac[5]).hex.to_s.rjust(5,'0') %>'
|
17
19
|
# Path to the file with the default application schedule
|
18
20
|
:app_definition_file: /etc/omf_rc/scheduled_app.rb
|
19
21
|
# Path to find the Ruby binary
|
@@ -21,9 +23,20 @@
|
|
21
23
|
# The top-up value in second for the watchdog timer (must be lower than timeout value)
|
22
24
|
# Comment that line to disable the watchdog timer
|
23
25
|
:watchdog_timer: 15
|
26
|
+
# Ensure local time is synced with NTP time before doing anything else.
|
27
|
+
# Local time is considered synced if it is within 'time_sync_maxdrift' second drift of NTP time.
|
28
|
+
# It will try 'time_sync_tries' times to do time sync using the command 'time_sync_cmd'.
|
29
|
+
# Each failed sync attempt will trigger a random sleep up to 'time_sync_interval' second before the next attempt.
|
30
|
+
:time_sync_tries: 20
|
31
|
+
:time_sync_maxdrift: 600
|
32
|
+
:time_sync_interval: 20
|
33
|
+
:time_sync_cmd: "/usr/bin/ntpdate -b -t 10 -u au.pool.ntp.org"
|
24
34
|
|
25
35
|
:add_default_factories: false # Not loading default type factories
|
26
36
|
|
27
37
|
:factories: # Additional resources which can be created by this RC
|
28
|
-
|
29
|
-
|
38
|
+
load: [
|
39
|
+
'omf_rc_shm',
|
40
|
+
'omf_rc/resource_proxy/scheduled_application',
|
41
|
+
'omf_rc/resource_proxy/application'
|
42
|
+
]
|
@@ -7,6 +7,10 @@ module OmfRc::ResourceProxy::ShmNode
|
|
7
7
|
property :oml_uri
|
8
8
|
property :ruby_path
|
9
9
|
property :watchdog_timer, :default => nil
|
10
|
+
property :time_sync_tries, :default => nil
|
11
|
+
property :time_sync_maxdrift, :default => 600
|
12
|
+
property :time_sync_interval, :default => 20
|
13
|
+
property :time_sync_cmd, :default => "/usr/bin/ntpdate -b -t 10 -u au.pool.ntp.org"
|
10
14
|
|
11
15
|
request :cron_jobs do |node|
|
12
16
|
node.children.find_all { |v| v.type =~ /scheduled_application/ }.map do |v|
|
@@ -15,6 +19,35 @@ module OmfRc::ResourceProxy::ShmNode
|
|
15
19
|
end
|
16
20
|
|
17
21
|
hook :after_initial_configured do |node|
|
22
|
+
# 1) Do not continue unless we have some 'ok' time sync!
|
23
|
+
unless node.property.time_sync_tries.nil?
|
24
|
+
require 'net/ntp'
|
25
|
+
info "Option 'time_sync_tries' is set. Continue only if local time is accurate, will try to sync #{node.property.time_sync_tries} times with random wait of up to #{node.property.time_sync_interval}s."
|
26
|
+
(1..node.property.time_sync_tries.to_i).each do |i|
|
27
|
+
dt = node.property.time_sync_maxdrift.to_i
|
28
|
+
lt = 0
|
29
|
+
rt = 0
|
30
|
+
begin
|
31
|
+
lt = Time.now ; rt = Net::NTP.get.time ; dt = (lt-rt).abs
|
32
|
+
rescue Exception => e
|
33
|
+
info "Time sync try #{i} - Cannot contact NTP server (#{e})"
|
34
|
+
end
|
35
|
+
if dt > node.property.time_sync_maxdrift.to_i
|
36
|
+
info "Time sync try #{i} - Local: #{lt.to_i} - NTP: #{rt.to_i} - Diff: #{dt} - (sync: #{node.property.time_sync_cmd.to_s})"
|
37
|
+
res = `#{node.property.time_sync_cmd.to_s}`
|
38
|
+
else
|
39
|
+
break
|
40
|
+
end
|
41
|
+
sleep(rand(node.property.time_sync_interval.to_i))
|
42
|
+
end
|
43
|
+
lt = Time.now ; rt = Net::NTP.get.time ; dt = (lt-rt).abs
|
44
|
+
if dt > node.property.time_sync_maxdrift.to_i
|
45
|
+
info "Time sync FAILED! EXITING NOW!"
|
46
|
+
exit
|
47
|
+
end
|
48
|
+
info "Time sync OK - Local: #{lt.to_i} - NTP: #{rt.to_i} - Diff: #{dt}"
|
49
|
+
end
|
50
|
+
# 2) if present, load and set default app schedule
|
18
51
|
unless node.request_app_definition_file.nil?
|
19
52
|
OmfRcShm.app.load_definition(node.request_app_definition_file)
|
20
53
|
info "Loaded scheduled app definition from '#{node.request_app_definition_file}'"
|
@@ -27,7 +60,7 @@ module OmfRc::ResourceProxy::ShmNode
|
|
27
60
|
OmfCommon.el.after(5) { s_app.configure_state(:scheduled) }
|
28
61
|
end
|
29
62
|
end
|
30
|
-
# if required, start the watchdog timer and periodically top it
|
63
|
+
# 3) if required, start the watchdog timer and periodically top it
|
31
64
|
unless node.property.watchdog_timer.nil?
|
32
65
|
info "Watchdog Timer started with interval: #{node.property.watchdog_timer}"
|
33
66
|
OmfRcShm.app.watchdog = File.open('/dev/watchdog', 'w')
|
@@ -36,6 +69,8 @@ module OmfRc::ResourceProxy::ShmNode
|
|
36
69
|
OmfRcShm.app.watchdog.flush
|
37
70
|
end
|
38
71
|
end
|
72
|
+
# 4) Finally display our SHM Node ID:
|
73
|
+
info "SHM Node ID: #{node.uid}"
|
39
74
|
end
|
40
75
|
|
41
76
|
hook :before_ready do
|
data/lib/omf_rc_shm/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omf_rc_shm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- NICTA
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|