rsmp 0.1.21 → 0.1.27

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0aea7740c0640bc069efa1ec9426deb23b3bf4e3f7dce4656e3df814500615d3
4
- data.tar.gz: 30d954a75a62d71d46b76b30e448dbc2e30281784f18b82488780e9837b1223b
3
+ metadata.gz: bae0b092e316d3d2fd5297d6c7a36bbe84f80150dd093d101c0c49916f4b93ba
4
+ data.tar.gz: 3fb3f09d863c7309e0eae3c61f0a31e3068d5d80ad520f706c4ed437f2414e90
5
5
  SHA512:
6
- metadata.gz: 7a42695cbf11f334d1873843a2550e7734d7719e8fca7ef245d32946d71aa884b6305ff329afbd1713caec41bf213bd0aab62d4f91f5d685c05ed5ce929c68f6
7
- data.tar.gz: 3e6c90b6aa6d505285fc27613ce06716f5a00a21893d266cb2e31e0c0f99ea2784610f30f9c4a583c129e95c94770c84a08aabcc6e0e35accfc70b94f3aa2e60
6
+ metadata.gz: 0ca10d29c54b8bcf3c7b359c78838b03f64c50b90c988d1cf2390bf392bad26570b7618045409a8b182df1cbcecd4c820be3ab535a47211c3149bdbcc9ccaab7
7
+ data.tar.gz: de933522e4f50fbd861bac067e803e56cad258903ab4a654ee7f994fc0d7c34150c6d70c55f8350e0e73a38e70673db9111bff4a2086b42628a85a71edf50b9b
data/.gitmodules CHANGED
@@ -1,4 +0,0 @@
1
- [submodule "rsmp_schema"]
2
- path = lib/rsmp_schema
3
- url = git@github.com:rsmp-nordic/rsmp_schema.git
4
-
data/Gemfile.lock CHANGED
@@ -1,11 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rsmp (0.1.21)
5
- async (~> 1.28.3)
6
- async-io (~> 1.30.1)
4
+ rsmp (0.1.27)
5
+ async (~> 1.28.7)
6
+ async-io (~> 1.30.2)
7
7
  colorize (~> 0.8.1)
8
- json_schemer (~> 0.2.17)
8
+ rsmp_schemer (~> 0.2.0)
9
9
  thor (~> 1.0.1)
10
10
 
11
11
  GEM
@@ -18,17 +18,17 @@ GEM
18
18
  ffi (~> 1.9)
19
19
  rspec-expectations (~> 3.4)
20
20
  thor (~> 1.0)
21
- async (1.28.3)
21
+ async (1.28.9)
22
22
  console (~> 1.10)
23
23
  nio4r (~> 2.3)
24
24
  timers (~> 4.1)
25
- async-io (1.30.1)
25
+ async-io (1.30.2)
26
26
  async (~> 1.14)
27
27
  backports (3.17.0)
28
28
  builder (3.2.4)
29
29
  childprocess (3.0.0)
30
30
  colorize (0.8.1)
31
- console (1.10.1)
31
+ console (1.12.0)
32
32
  fiber-local
33
33
  contracts (0.16.0)
34
34
  cucumber (3.1.2)
@@ -54,16 +54,18 @@ GEM
54
54
  fiber-local (1.0.0)
55
55
  gherkin (5.1.0)
56
56
  hana (1.3.7)
57
- json_schemer (0.2.17)
57
+ json_schemer (0.2.18)
58
58
  ecma-re-validator (~> 0.3)
59
59
  hana (~> 1.3)
60
60
  regexp_parser (~> 2.0)
61
61
  uri_template (~> 0.7)
62
62
  multi_json (1.14.1)
63
63
  multi_test (0.1.2)
64
- nio4r (2.5.4)
64
+ nio4r (2.5.7)
65
65
  rake (13.0.1)
66
- regexp_parser (2.0.3)
66
+ regexp_parser (2.1.1)
67
+ rsmp_schemer (0.2.0)
68
+ json_schemer (~> 0.2.18)
67
69
  rspec (3.9.0)
68
70
  rspec-core (~> 3.9.0)
69
71
  rspec-expectations (~> 3.9.0)
@@ -79,7 +81,7 @@ GEM
79
81
  rspec-support (3.9.2)
80
82
  thor (1.0.1)
81
83
  timecop (0.9.1)
82
- timers (4.3.2)
84
+ timers (4.3.3)
83
85
  uri_template (0.7.0)
84
86
 
85
87
  PLATFORMS
@@ -4,14 +4,19 @@ rsmp_versions:
4
4
  - 3.1.2
5
5
  - 3.1.3
6
6
  - 3.1.4
7
+ - 3.1.5
7
8
 
8
- watchdog_interval: 1
9
- watchdog_timeout: 2
10
- acknowledgement_timeout: 2
9
+ sites:
10
+ :any:
11
+ sxl: tlc
12
+
13
+ watchdog_interval: 0.1
14
+ watchdog_timeout: 0.2
15
+ acknowledgement_timeout: 0.2
11
16
  store_messages: false
12
- command_response_timeout: 1
13
- status_response_timeout: 1
14
- status_update_timeout: 1
17
+ command_response_timeout: 0.1
18
+ status_response_timeout: 0.1
19
+ status_update_timeout: 0.1
15
20
 
16
21
  log:
17
22
  active: true
@@ -20,6 +25,7 @@ log:
20
25
  id: true
21
26
  component: true
22
27
  ip: false
28
+ port: true
23
29
  site_id: true
24
30
  text: true
25
31
  direction: true
data/config/tlc.yaml CHANGED
@@ -3,6 +3,14 @@ supervisors:
3
3
  - ip: 127.0.0.1
4
4
  port: 12111
5
5
 
6
+ # if you leave it out, all know version will be allowed
7
+ #rsmp_versions:
8
+ # - 3.1.4
9
+ # - 3.1.5
10
+
11
+ sxl: tlc
12
+ sxl_version: 1.0.15
13
+
6
14
  components:
7
15
  main:
8
16
  TC:
@@ -1,23 +1,23 @@
1
1
  # Message distribution
2
2
 
3
- Proxy - - Distributor --> Receivers
3
+ Proxy - - Notifier --> Listeners
4
4
 
5
- A proxy distributes message to receivers, when they are installed.
5
+ A proxy distributes messages to listeners, when they are installed.
6
6
 
7
- Probes are special receivers that waits for specific message, and are used to implement methods for waiting for RMSP responses, statuses, alarms, etc.
7
+ Collectors are special listenerws that waits for specific message, and are used to implement methods for waiting for RMSP responses, statuses, alarms, etc.
8
8
 
9
- Note that Archive is not a receiver, and does not receive messages via the Distributor. Instead the Archive gets and stores messages via the log() interface in the Logging module. The reason is that the items that the Archive and the Logger contain other data as well as the message, like error messages, warnings, text descriptions, colors codes, etc. The Distributor and Receiver handles only Message objects.
9
+ Note that Archive is not a listener, and does not receive messages via the Notifier. Instead the Archive gets and stores messages via the log() interface in the Logging module. The reason is that the items that the Archive and the Logger contain other data as well as the message, like error messages, warnings, text descriptions, colors codes, etc. The Distributor and Receiver handles only Message objects.
10
10
 
11
- ## Distributor
11
+ ## Notifier
12
12
  A module that handles distributing messages to receivers.
13
13
 
14
- ## Receiver
14
+ ## Listener
15
15
  Receives messages as long as it's installed into a distributor.
16
16
 
17
- ## Probe
17
+ ## Collector
18
18
  A subclass of Receiver that wait for specific messages. Once received
19
19
  the client receives the collection.
20
20
 
21
21
  ## Proxy
22
- A proxy includes the Distributor module and distributes each message to listerens after processing it.
22
+ A proxy includes the Notifier module and distributes each message to listerens after processing it.
23
23
 
data/lib/rsmp.rb CHANGED
@@ -10,6 +10,7 @@ require 'json_schemer'
10
10
  require 'async/queue'
11
11
 
12
12
  require 'rsmp/rsmp'
13
+ require 'rsmp/inspect'
13
14
  require 'rsmp/logging'
14
15
  require 'rsmp/wait'
15
16
  require 'rsmp/node'
@@ -31,4 +32,7 @@ require 'rsmp/logger'
31
32
  require 'rsmp/archive'
32
33
  require 'rsmp/tlc'
33
34
 
35
+ require 'rsmp/convert/import/yaml'
36
+ require 'rsmp/convert/export/json_schema'
37
+
34
38
  require 'rsmp/version'
data/lib/rsmp/archive.rb CHANGED
@@ -3,6 +3,8 @@
3
3
 
4
4
  module RSMP
5
5
  class Archive
6
+ include Inspect
7
+
6
8
  attr_reader :items
7
9
 
8
10
  @@index = 0
@@ -12,14 +14,15 @@ module RSMP
12
14
  @max = max
13
15
  end
14
16
 
17
+ def inspect
18
+ "#<#{self.class.name}:#{self.object_id}, #{inspector(:@items)}>"
19
+ end
20
+
15
21
  def self.prepare_item item
16
22
  raise ArgumentError unless item.is_a? Hash
17
23
 
18
- now_obj = RSMP.now_object
19
- now_str = RSMP.now_string(now_obj)
20
-
21
24
  cleaned = item.select { |k,v| [:author,:level,:ip,:port,:site_id,:component_id,:str,:message,:exception].include? k }
22
- cleaned[:timestamp] = now_obj
25
+ cleaned[:timestamp] = Clock.now
23
26
  if item[:message]
24
27
  cleaned[:direction] = item[:message].direction
25
28
  cleaned[:component_id] = item[:message].attributes['cId']
data/lib/rsmp/cli.rb CHANGED
@@ -2,106 +2,135 @@ require 'thor'
2
2
  require 'rsmp'
3
3
 
4
4
  module RSMP
5
- class CLI < Thor
6
-
7
- desc "site", "Run RSMP site"
8
- method_option :config, :type => :string, :aliases => "-c", banner: 'Path to .yaml config file'
9
- method_option :id, :type => :string, :aliases => "-i", banner: 'RSMP site id'
10
- method_option :supervisors, :type => :string, :aliases => "-s", banner: 'ip:port,... list of supervisor to connect to'
11
- method_option :log, :type => :string, :aliases => "-l", banner: 'Path to log file'
12
- method_option :json, :type => :boolean, :aliases => "-j", banner: 'Show JSON messages in log'
13
- method_option :type, :type => :string, :aliases => "-t", banner: 'Type of site: [tlc]'
14
- def site
15
- settings = {}
16
- log_settings = { 'active' => true }
17
-
18
- if options[:config]
19
- if File.exist? options[:config]
20
- settings = YAML.load_file options[:config]
21
- log_settings = settings.delete('log') || {}
22
- else
23
- puts "Error: Config #{options[:config]} not found"
24
- exit
25
- end
26
- end
27
-
28
- if options[:id]
29
- settings['site_id'] = options[:id]
30
- end
31
-
32
- if options[:supervisors]
33
- options[:supervisors].split(',').each do |supervisor|
34
- settings[:supervisors] ||= []
35
- ip, port = supervisor.split ':'
36
- ip = '127.0.0.1' if ip.empty?
37
- port = '12111' if port.empty?
38
- settings[:supervisors] << {"ip"=>ip, "port"=>port}
39
- end
40
- end
41
-
42
- if options[:log]
43
- log_settings['path'] = options[:log]
44
- end
45
-
46
- if options[:json]
47
- log_settings['json'] = options[:json]
48
- end
49
-
50
- site_class = RSMP::Site
51
- if options[:type]
52
- case options[:type]
53
- when 'tlc'
54
- site_class = RSMP::Tlc
55
- else
56
- site_class = RSMP::Site
57
- end
58
- end
59
- site_class.new(site_settings:settings, log_settings: log_settings).start
60
- end
61
-
62
- desc "supervisor", "Run RSMP supervisor"
63
- method_option :config, :type => :string, :aliases => "-c", banner: 'Path to .yaml config file'
64
- method_option :id, :type => :string, :aliases => "-i", banner: 'RSMP site id'
65
- method_option :ip, :type => :numeric, banner: 'IP address to listen on'
66
- method_option :port, :type => :string, :aliases => "-p", banner: 'Port to listen on'
67
- method_option :log, :type => :string, :aliases => "-l", banner: 'Path to log file'
68
- method_option :json, :type => :boolean, :aliases => "-j", banner: 'Show JSON messages in log'
69
- def supervisor
70
- settings = {}
71
- log_settings = { 'active' => true }
72
-
73
- if options[:config]
74
- if File.exist? options[:config]
75
- settings = YAML.load_file options[:config]
76
- log_settings = settings.delete 'log'
77
- else
78
- puts "Error: Config #{options[:config]} not found"
79
- exit
80
- end
81
- end
82
-
83
- if options[:id]
84
- settings['site_id'] = options[:id]
85
- end
86
-
87
- if options[:ip]
88
- settings['ip'] = options[:ip]
89
- end
90
-
91
- if options[:port]
92
- settings['port'] = options[:port]
93
- end
94
-
95
- if options[:log]
96
- log_settings['path'] = options[:log]
97
- end
98
-
99
- if options[:json]
100
- log_settings['json'] = options[:json]
101
- end
102
-
103
- RSMP::Supervisor.new(supervisor_settings:settings,log_settings:log_settings).start
104
- end
105
-
106
- end
5
+ class CLI < Thor
6
+
7
+ desc "site", "Run RSMP site"
8
+ method_option :config, :type => :string, :aliases => "-c", banner: 'Path to .yaml config file'
9
+ method_option :id, :type => :string, :aliases => "-i", banner: 'RSMP site id'
10
+ method_option :supervisors, :type => :string, :aliases => "-s", banner: 'ip:port,... list of supervisor to connect to'
11
+ method_option :log, :type => :string, :aliases => "-l", banner: 'Path to log file'
12
+ method_option :json, :type => :boolean, :aliases => "-j", banner: 'Show JSON messages in log'
13
+ method_option :type, :type => :string, :aliases => "-t", banner: 'Type of site: [tlc]'
14
+ def site
15
+ settings = {}
16
+ log_settings = { 'active' => true }
17
+
18
+ if options[:config]
19
+ if File.exist? options[:config]
20
+ settings = YAML.load_file options[:config]
21
+ log_settings = settings.delete('log') || {}
22
+ else
23
+ puts "Error: Config #{options[:config]} not found"
24
+ exit
25
+ end
26
+ end
27
+
28
+ if options[:id]
29
+ settings['site_id'] = options[:id]
30
+ end
31
+
32
+ if options[:supervisors]
33
+ options[:supervisors].split(',').each do |supervisor|
34
+ settings[:supervisors] ||= []
35
+ ip, port = supervisor.split ':'
36
+ ip = '127.0.0.1' if ip.empty?
37
+ port = '12111' if port.empty?
38
+ settings[:supervisors] << {"ip"=>ip, "port"=>port}
39
+ end
40
+ end
41
+
42
+ if options[:log]
43
+ log_settings['path'] = options[:log]
44
+ end
45
+
46
+ if options[:json]
47
+ log_settings['json'] = options[:json]
48
+ end
49
+
50
+ site_class = RSMP::Site
51
+ if options[:type]
52
+ case options[:type]
53
+ when 'tlc'
54
+ site_class = RSMP::Tlc
55
+ else
56
+ site_class = RSMP::Site
57
+ end
58
+ end
59
+ site_class.new(site_settings:settings, log_settings: log_settings).start
60
+ rescue RSMP::Schemer::UnknownSchemaTypeError => e
61
+ puts "Cannot start site: #{e}"
62
+ rescue RSMP::Schemer::UnknownSchemaVersionError => e
63
+ puts "Cannot start site: #{e}"
64
+ end
65
+
66
+ desc "supervisor", "Run RSMP supervisor"
67
+ method_option :config, :type => :string, :aliases => "-c", banner: 'Path to .yaml config file'
68
+ method_option :id, :type => :string, :aliases => "-i", banner: 'RSMP site id'
69
+ method_option :ip, :type => :numeric, banner: 'IP address to listen on'
70
+ method_option :port, :type => :string, :aliases => "-p", banner: 'Port to listen on'
71
+ method_option :log, :type => :string, :aliases => "-l", banner: 'Path to log file'
72
+ method_option :json, :type => :boolean, :aliases => "-j", banner: 'Show JSON messages in log'
73
+ def supervisor
74
+ settings = {}
75
+ log_settings = { 'active' => true }
76
+
77
+ if options[:config]
78
+ if File.exist? options[:config]
79
+ settings = YAML.load_file options[:config]
80
+ log_settings = settings.delete 'log'
81
+ else
82
+ puts "Error: Config #{options[:config]} not found"
83
+ exit
84
+ end
85
+ end
86
+
87
+ if options[:id]
88
+ settings['site_id'] = options[:id]
89
+ end
90
+
91
+ if options[:ip]
92
+ settings['ip'] = options[:ip]
93
+ end
94
+
95
+ if options[:port]
96
+ settings['port'] = options[:port]
97
+ end
98
+
99
+ if options[:log]
100
+ log_settings['path'] = options[:log]
101
+ end
102
+
103
+ if options[:json]
104
+ log_settings['json'] = options[:json]
105
+ end
106
+
107
+ RSMP::Supervisor.new(supervisor_settings:settings,log_settings:log_settings).start
108
+ rescue RSMP::ConfigurationError => e
109
+ puts "Cannot start supervisor: #{e}"
110
+ end
111
+
112
+ desc "convert", "Convert SXL from YAML to JSON Schema"
113
+ method_option :in, :type => :string, :aliases => "-i", banner: 'Path to YAML input file'
114
+ method_option :out, :type => :string, :aliases => "-o", banner: 'Path to JSON Schema output file'
115
+ def convert
116
+ unless options[:in]
117
+ puts "Error: Input option missing"
118
+ exit
119
+ end
120
+
121
+ unless options[:out]
122
+ puts "Error: Output option missing"
123
+ exit
124
+ end
125
+
126
+ unless File.exist? options[:in]
127
+ puts "Error: Input path file #{options[:in]} not found"
128
+ exit
129
+ end
130
+
131
+ sxl = RSMP::Convert::Import::YAML.read options[:in]
132
+ RSMP::Convert::Export::JSONSchema.write sxl, options[:out]
133
+ end
134
+
135
+ end
107
136
  end