openc3 5.2.0 → 5.4.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of openc3 might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bin/openc3cli +108 -105
- data/data/config/interface_modifiers.yaml +22 -4
- data/data/config/item_modifiers.yaml +4 -2
- data/data/config/microservice.yaml +18 -0
- data/data/config/table_manager.yaml +2 -2
- data/data/config/tool.yaml +1 -1
- data/ext/openc3/ext/config_parser/config_parser.c +17 -2
- data/lib/openc3/api/api.rb +1 -0
- data/lib/openc3/api/interface_api.rb +12 -0
- data/lib/openc3/api/metrics_api.rb +97 -0
- data/lib/openc3/api/router_api.rb +14 -2
- data/lib/openc3/api/target_api.rb +24 -3
- data/lib/openc3/api/tlm_api.rb +5 -4
- data/lib/openc3/config/config_parser.rb +29 -4
- data/lib/openc3/core_ext/time.rb +6 -1
- data/lib/openc3/interfaces/interface.rb +27 -26
- data/lib/openc3/interfaces/mqtt_interface.rb +240 -0
- data/lib/openc3/interfaces/protocols/override_protocol.rb +2 -61
- data/lib/openc3/interfaces/protocols/protocol.rb +6 -1
- data/lib/openc3/interfaces/simulated_target_interface.rb +1 -3
- data/lib/openc3/interfaces/tcpip_server_interface.rb +0 -11
- data/lib/openc3/interfaces.rb +2 -3
- data/lib/openc3/logs/buffered_packet_log_reader.rb +2 -2
- data/lib/openc3/microservices/cleanup_microservice.rb +17 -1
- data/lib/openc3/microservices/decom_microservice.rb +12 -9
- data/lib/openc3/microservices/interface_microservice.rb +93 -9
- data/lib/openc3/microservices/log_microservice.rb +11 -5
- data/lib/openc3/microservices/microservice.rb +10 -9
- data/lib/openc3/microservices/periodic_microservice.rb +7 -0
- data/lib/openc3/microservices/reaction_microservice.rb +0 -33
- data/lib/openc3/microservices/reducer_microservice.rb +14 -10
- data/lib/openc3/microservices/text_log_microservice.rb +12 -3
- data/lib/openc3/microservices/timeline_microservice.rb +0 -6
- data/lib/openc3/microservices/trigger_group_microservice.rb +0 -20
- data/lib/openc3/models/cvt_model.rb +103 -47
- data/lib/openc3/models/interface_model.rb +23 -0
- data/lib/openc3/models/metric_model.rb +53 -6
- data/lib/openc3/models/microservice_model.rb +15 -1
- data/lib/openc3/models/model.rb +1 -1
- data/lib/openc3/models/plugin_model.rb +6 -1
- data/lib/openc3/models/secret_model.rb +53 -0
- data/lib/openc3/models/target_model.rb +2 -2
- data/lib/openc3/models/tool_model.rb +17 -8
- data/lib/openc3/operators/microservice_operator.rb +25 -0
- data/lib/openc3/operators/operator.rb +5 -1
- data/lib/openc3/packets/packet.rb +21 -7
- data/lib/openc3/packets/packet_item.rb +3 -2
- data/lib/openc3/script/api_shared.rb +18 -2
- data/lib/openc3/script/script.rb +8 -0
- data/lib/openc3/script/script_runner.rb +1 -2
- data/lib/openc3/script/storage.rb +2 -1
- data/lib/openc3/script/suite.rb +15 -11
- data/lib/openc3/system/system.rb +6 -3
- data/lib/openc3/topics/interface_topic.rb +17 -1
- data/lib/openc3/topics/router_topic.rb +17 -1
- data/lib/openc3/utilities/aws_bucket.rb +20 -3
- data/lib/openc3/utilities/bucket.rb +1 -1
- data/lib/openc3/utilities/bucket_file_cache.rb +1 -1
- data/lib/openc3/utilities/bucket_utilities.rb +1 -1
- data/lib/openc3/utilities/local_mode.rb +1 -0
- data/lib/openc3/utilities/metric.rb +77 -101
- data/lib/openc3/utilities/redis_secrets.rb +46 -0
- data/lib/openc3/utilities/s3_autoload.rb +19 -9
- data/lib/openc3/utilities/secrets.rb +63 -0
- data/lib/openc3/utilities/target_file.rb +3 -1
- data/lib/openc3/version.rb +5 -5
- data/templates/plugin-template/LICENSE.txt +7 -0
- data/templates/plugin-template/README.md +4 -3
- data/templates/plugin-template/plugin.gemspec +4 -4
- metadata +22 -3
- data/data/config/_interfaces.yaml.err +0 -1017
@@ -1,6 +1,6 @@
|
|
1
1
|
# encoding: ascii-8bit
|
2
2
|
|
3
|
-
# Copyright 2022
|
3
|
+
# Copyright 2022 OpenC3, Inc.
|
4
4
|
# All Rights Reserved.
|
5
5
|
#
|
6
6
|
# This program is free software; you can modify and/or redistribute it
|
@@ -12,133 +12,109 @@
|
|
12
12
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
13
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
14
|
# GNU Affero General Public License for more details.
|
15
|
-
|
16
|
-
# Modified by OpenC3, Inc.
|
17
|
-
# All changes Copyright 2022, OpenC3, Inc.
|
18
|
-
# All Rights Reserved
|
19
15
|
#
|
20
|
-
# This file may also be used under the terms of a commercial license
|
16
|
+
# This file may also be used under the terms of a commercial license
|
21
17
|
# if purchased from OpenC3, Inc.
|
18
|
+
#
|
19
|
+
# Note: This file has been completely reimplemented post version 5.3.0
|
22
20
|
|
23
21
|
require 'openc3/models/metric_model'
|
24
22
|
require 'thread'
|
25
23
|
|
26
24
|
module OpenC3
|
27
25
|
class Metric
|
28
|
-
#
|
29
|
-
|
30
|
-
|
31
|
-
#
|
32
|
-
|
33
|
-
|
34
|
-
#
|
35
|
-
|
36
|
-
|
37
|
-
#
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
attr_reader :scope
|
26
|
+
# The update interval. How often in seconds metrics are updated by this process
|
27
|
+
UPDATE_INTERVAL = 5
|
28
|
+
|
29
|
+
# Mutex protecting class variables
|
30
|
+
@@mutex = Mutex.new
|
31
|
+
|
32
|
+
# Array of instances used to keep track of metrics
|
33
|
+
@@instances = []
|
34
|
+
|
35
|
+
# Thread used to post metrics across all classes
|
36
|
+
@@update_thread = nil
|
37
|
+
|
38
|
+
# Sleeper used to delay update thread
|
39
|
+
@@update_sleeper = nil
|
40
|
+
|
44
41
|
attr_reader :microservice
|
42
|
+
attr_reader :scope
|
43
|
+
attr_reader :data
|
44
|
+
attr_reader :mutex
|
45
45
|
|
46
46
|
def initialize(microservice:, scope:)
|
47
|
-
if microservice.include? '|' or scope.include? '|'
|
48
|
-
raise ArgumentError.new('invalid input must not contain: |')
|
49
|
-
end
|
50
|
-
|
51
|
-
@items = {}
|
52
47
|
@scope = scope
|
53
48
|
@microservice = microservice
|
54
|
-
@
|
49
|
+
@data = {}
|
55
50
|
@mutex = Mutex.new
|
56
|
-
end
|
57
51
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
# internal:
|
67
|
-
# the internal items hash is used as a lookup table to store unique
|
68
|
-
# varients of a similar metric. these varients are values that could
|
69
|
-
# cause a difference in run time to add context to the metric. the
|
70
|
-
# microservice and scope are added to the labels the labels are
|
71
|
-
# converted to a string and joined with the name to create a unique
|
72
|
-
# metric item. this is looked up in the items hash and if not found
|
73
|
-
# the key is created and an array of size @size is allocated. then
|
74
|
-
# the value is added to @items and the count of the value is increased
|
75
|
-
# if the count of the values exceed the size of the array it sets the
|
76
|
-
# count back to zero and the array will over write older data.
|
77
|
-
@mutex.synchronize do
|
78
|
-
key = "#{name}|" + labels.map { |k, v| "#{k}=#{v}" }.join(',')
|
79
|
-
if not @items.has_key?(key)
|
80
|
-
Logger.debug("new data for #{@scope}, #{key}")
|
81
|
-
@items[key] = { 'values' => Array.new(@size), 'count' => 0 }
|
52
|
+
# Always make sure there is a update thread
|
53
|
+
@@mutex.synchronize do
|
54
|
+
@@instances << self
|
55
|
+
|
56
|
+
unless @@update_thread
|
57
|
+
@@update_thread = OpenC3.safe_thread("Metrics") do
|
58
|
+
update_thread_body()
|
59
|
+
end
|
82
60
|
end
|
83
|
-
count = @items[key]['count']
|
84
|
-
# Logger.info("adding data for #{@scope}, #{count} #{key}, #{value}")
|
85
|
-
@items[key]['values'][count] = value
|
86
|
-
@items[key]['count'] = count + 1 >= @size ? 0 : count + 1
|
87
61
|
end
|
88
62
|
end
|
89
63
|
|
90
|
-
def
|
91
|
-
|
92
|
-
|
93
|
-
|
64
|
+
def set(name:, value:, type: nil, unit: nil, help: nil, labels: nil, time_ms: nil)
|
65
|
+
@mutex.synchronize do
|
66
|
+
@data[name] ||= {}
|
67
|
+
@data[name]['value'] = value
|
68
|
+
@data[name]['type'] = type if type
|
69
|
+
@data[name]['unit'] = unit if unit
|
70
|
+
@data[name]['help'] = help if help
|
71
|
+
@data[name]['labels'] = labels if labels
|
72
|
+
@data[name]['time_ms'] = time_ms if time_ms
|
73
|
+
end
|
74
|
+
end
|
94
75
|
|
95
|
-
|
96
|
-
|
97
|
-
|
76
|
+
def set_multiple(data)
|
77
|
+
@mutex.synchonize do
|
78
|
+
@data.merge!(data)
|
79
|
+
end
|
98
80
|
end
|
99
81
|
|
100
|
-
def
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
# array. to store the array as the value with the metric name again joined
|
114
|
-
# with the @microservice and @scope.
|
115
|
-
Logger.debug("#{@microservice} #{@scope} sending metrics to redis, #{@items.length}") if @items.length > 0
|
116
|
-
@mutex.synchronize do
|
117
|
-
@items.each do |key, values|
|
118
|
-
label_list = []
|
119
|
-
name, labels = key.split('|')
|
120
|
-
metric_labels = labels.nil? ? {} : labels.split(',').map { |x| x.split('=') }.map { |k, v| { k => v } }.reduce({}, :merge)
|
121
|
-
sorted_values = values['values'].compact.sort
|
122
|
-
for percentile_value in [10, 50, 90, 95, 99]
|
123
|
-
percentile_result = percentile(sorted_values, percentile_value)
|
124
|
-
labels = metric_labels.clone.merge({ 'scope' => @scope, 'microservice' => @microservice })
|
125
|
-
labels['percentile'] = percentile_value
|
126
|
-
labels['metric__value'] = percentile_result
|
127
|
-
label_list.append(labels)
|
128
|
-
end
|
129
|
-
begin
|
130
|
-
Logger.debug("sending metrics summary to redis key: #{@microservice}")
|
131
|
-
metric = MetricModel.new(name: @microservice, scope: @scope, metric_name: name, label_list: label_list)
|
132
|
-
metric.create(force: true)
|
133
|
-
rescue RuntimeError
|
134
|
-
Logger.error("failed attempt to update metric, #{key}, #{name} #{@scope}")
|
82
|
+
def update_thread_body
|
83
|
+
@@update_sleeper = Sleeper.new
|
84
|
+
while true
|
85
|
+
start_time = Time.now
|
86
|
+
@@mutex.synchronize do
|
87
|
+
@@instances.each do |instance|
|
88
|
+
instance.mutex.synchronize do
|
89
|
+
json = {}
|
90
|
+
json['name'] = instance.microservice
|
91
|
+
values = instance.data
|
92
|
+
json['values'] = values
|
93
|
+
MetricModel.set(json, scope: instance.scope) if values.length > 0
|
94
|
+
end
|
135
95
|
end
|
136
96
|
end
|
97
|
+
|
98
|
+
# Only check whether to update at a set interval
|
99
|
+
run_time = Time.now - start_time
|
100
|
+
sleep_time = UPDATE_INTERVAL - run_time
|
101
|
+
sleep_time = 0 if sleep_time < 0
|
102
|
+
break if @@update_sleeper.sleep(sleep_time)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def shutdown
|
107
|
+
@@mutex.synchronize do
|
108
|
+
@@instances.delete(self)
|
109
|
+
if @@instances.length <= 0
|
110
|
+
@@update_sleeper.cancel if @@update_sleeper
|
111
|
+
OpenC3.kill_thread(self, @@update_thread) if @@update_thread
|
112
|
+
@@update_thread = nil
|
113
|
+
end
|
137
114
|
end
|
138
115
|
end
|
139
116
|
|
140
|
-
def
|
141
|
-
MetricModel.destroy(scope: @scope, name: @microservice)
|
117
|
+
def graceful_kill
|
142
118
|
end
|
143
119
|
end
|
144
120
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# encoding: ascii-8bit
|
2
|
+
|
3
|
+
# Copyright 2022 OpenC3, Inc.
|
4
|
+
# All Rights Reserved.
|
5
|
+
#
|
6
|
+
# This program is free software; you can modify and/or redistribute it
|
7
|
+
# under the terms of the GNU Affero General Public License
|
8
|
+
# as published by the Free Software Foundation; version 3 with
|
9
|
+
# attribution addendums as found in the LICENSE.txt
|
10
|
+
#
|
11
|
+
# This program is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
# GNU Affero General Public License for more details.
|
15
|
+
#
|
16
|
+
# This file may also be used under the terms of a commercial license
|
17
|
+
# if purchased from OpenC3, Inc.
|
18
|
+
|
19
|
+
require 'openc3/models/secret_model'
|
20
|
+
require 'openc3/utilities/secrets'
|
21
|
+
|
22
|
+
module OpenC3
|
23
|
+
class RedisSecrets < Secrets
|
24
|
+
def keys(scope:)
|
25
|
+
SecretModel.names(scope: scope)
|
26
|
+
end
|
27
|
+
|
28
|
+
def get(key, scope:)
|
29
|
+
data = SecretModel.get(name: key, scope: scope)
|
30
|
+
if data
|
31
|
+
return data['value']
|
32
|
+
else
|
33
|
+
return nil
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def set(key, value, scope:)
|
38
|
+
SecretModel.set( {name: key, value: value.to_s }, scope: scope)
|
39
|
+
end
|
40
|
+
|
41
|
+
def delete(key, scope:)
|
42
|
+
model = SecretModel.get_model(name: key, scope: scope)
|
43
|
+
model.destroy if model
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -1,11 +1,21 @@
|
|
1
1
|
require 'aws-sdk-s3'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
3
|
+
if ENV['OPENC3_CLOUD'] == 'local'
|
4
|
+
Aws.config.update(
|
5
|
+
s3: {
|
6
|
+
endpoint: ENV['OPENC3_BUCKET_URL'] || (ENV['OPENC3_DEVEL'] ? 'http://127.0.0.1:9000' : 'http://openc3-minio:9000'),
|
7
|
+
access_key_id: ENV['OPENC3_BUCKET_USERNAME'],
|
8
|
+
secret_access_key: ENV['OPENC3_BUCKET_PASSWORD'],
|
9
|
+
force_path_style: true,
|
10
|
+
region: 'us-east-1'
|
11
|
+
}
|
12
|
+
)
|
13
|
+
else # AWS
|
14
|
+
Aws.config.update(
|
15
|
+
s3: {
|
16
|
+
endpoint: "https://s3.#{ENV['AWS_REGION']}.amazonaws.com",
|
17
|
+
force_path_style: true,
|
18
|
+
region: ENV['AWS_REGION']
|
19
|
+
}
|
20
|
+
)
|
21
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# encoding: ascii-8bit
|
2
|
+
|
3
|
+
# Copyright 2022 OpenC3, Inc.
|
4
|
+
# All Rights Reserved.
|
5
|
+
#
|
6
|
+
# This program is free software; you can modify and/or redistribute it
|
7
|
+
# under the terms of the GNU Affero General Public License
|
8
|
+
# as published by the Free Software Foundation; version 3 with
|
9
|
+
# attribution addendums as found in the LICENSE.txt
|
10
|
+
#
|
11
|
+
# This program is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
# GNU Affero General Public License for more details.
|
15
|
+
#
|
16
|
+
# This file may also be used under the terms of a commercial license
|
17
|
+
# if purchased from OpenC3, Inc.
|
18
|
+
|
19
|
+
ENV['OPENC3_SECRET_BACKEND'] ||= 'redis'
|
20
|
+
|
21
|
+
module OpenC3
|
22
|
+
class Secrets
|
23
|
+
def initialize
|
24
|
+
@local_secrets = {}
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.getClient
|
28
|
+
raise 'OPENC3_SECRET_BACKEND environment variable is required' unless ENV['OPENC3_SECRET_BACKEND']
|
29
|
+
secrets_class = ENV['OPENC3_SECRET_BACKEND'].capitalize + 'Secrets'
|
30
|
+
klass = OpenC3.require_class('openc3/utilities/' + secrets_class.class_name_to_filename)
|
31
|
+
klass.new
|
32
|
+
end
|
33
|
+
|
34
|
+
def keys(scope:)
|
35
|
+
raise NotImplementedError, "#{self.class} has not implemented method '#{__method__}'"
|
36
|
+
end
|
37
|
+
|
38
|
+
def get(key, scope:)
|
39
|
+
return @local_secrets[key]
|
40
|
+
end
|
41
|
+
|
42
|
+
def set(key, value, scope:)
|
43
|
+
raise NotImplementedError, "#{self.class} has not implemented method '#{__method__}'"
|
44
|
+
end
|
45
|
+
|
46
|
+
def delete(key, scope:)
|
47
|
+
raise NotImplementedError, "#{self.class} has not implemented method '#{__method__}'"
|
48
|
+
end
|
49
|
+
|
50
|
+
def setup(secrets)
|
51
|
+
secrets.each do |type, key, data|
|
52
|
+
case type
|
53
|
+
when 'ENV'
|
54
|
+
@local_secrets[key] = ENV[data]
|
55
|
+
when 'FILE'
|
56
|
+
@local_secrets[key] = File.read(data)
|
57
|
+
else
|
58
|
+
raise "Unknown secret type: #{type}"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -97,7 +97,9 @@ module OpenC3
|
|
97
97
|
bucket: ENV['OPENC3_CONFIG_BUCKET'],
|
98
98
|
prefix: "#{scope}/targets_modified/#{TEMP_FOLDER}",
|
99
99
|
)
|
100
|
+
files = []
|
100
101
|
resp.each do |object|
|
102
|
+
files << object.key
|
101
103
|
bucket.delete_object(
|
102
104
|
bucket: ENV['OPENC3_CONFIG_BUCKET'],
|
103
105
|
key: object.key,
|
@@ -106,7 +108,7 @@ module OpenC3
|
|
106
108
|
OpenC3::LocalMode.delete_local(object.key)
|
107
109
|
end
|
108
110
|
end
|
109
|
-
|
111
|
+
files
|
110
112
|
end
|
111
113
|
|
112
114
|
def self.body(scope, name)
|
data/lib/openc3/version.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# encoding: ascii-8bit
|
2
2
|
|
3
|
-
OPENC3_VERSION = '5.
|
3
|
+
OPENC3_VERSION = '5.4.0'
|
4
4
|
module OpenC3
|
5
5
|
module Version
|
6
6
|
MAJOR = '5'
|
7
|
-
MINOR = '
|
7
|
+
MINOR = '4'
|
8
8
|
PATCH = '0'
|
9
9
|
OTHER = ''
|
10
|
-
BUILD = '
|
10
|
+
BUILD = 'f10d7e7ecbe3c6917e4f87eeac1f5eb0ddcf3d67'
|
11
11
|
end
|
12
|
-
VERSION = '5.
|
13
|
-
GEM_VERSION = '5.
|
12
|
+
VERSION = '5.4.0'
|
13
|
+
GEM_VERSION = '5.4.0'
|
14
14
|
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
Copyright 2023 <COPYRIGHT HOLDER>
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
4
|
+
|
5
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
6
|
+
|
7
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -1,10 +1,10 @@
|
|
1
|
-
# OpenC3
|
1
|
+
# OpenC3 COSMOS Plugin
|
2
2
|
|
3
3
|
See the [OpenC3](https://openc3.com) documentation for all things OpenC3.
|
4
4
|
|
5
5
|
## Building the plugin
|
6
6
|
|
7
|
-
1. <Path to
|
7
|
+
1. <Path to COSMOS installation>\openc3.bat cli rake build VERSION=X.Y.Z
|
8
8
|
- VERSION is required
|
9
9
|
- gem file will be built locally
|
10
10
|
|
@@ -12,4 +12,5 @@ See the [OpenC3](https://openc3.com) documentation for all things OpenC3.
|
|
12
12
|
|
13
13
|
1. Go to localhost:2900/tools/admin
|
14
14
|
1. Click the paperclip icon and choose your plugin.gem file
|
15
|
-
1.
|
15
|
+
1. Fill out plugin parameters
|
16
|
+
1. Click Install
|
@@ -7,17 +7,17 @@ spec = Gem::Specification.new do |s|
|
|
7
7
|
s.description = <<-EOF
|
8
8
|
<%= plugin_name %> plugin for deployment to OpenC3
|
9
9
|
EOF
|
10
|
-
s.license = '
|
10
|
+
s.license = 'MIT'
|
11
11
|
s.authors = ['Anonymous']
|
12
12
|
s.email = ['name@domain.com']
|
13
13
|
s.homepage = 'https://github.com/OpenC3/openc3'
|
14
14
|
s.platform = Gem::Platform::RUBY
|
15
15
|
|
16
|
-
time = Time.now.strftime("%Y%m%d%H%M%S")
|
17
16
|
if ENV['VERSION']
|
18
|
-
s.version = ENV['VERSION'].dup
|
17
|
+
s.version = ENV['VERSION'].dup
|
19
18
|
else
|
19
|
+
time = Time.now.strftime("%Y%m%d%H%M%S")
|
20
20
|
s.version = '0.0.0' + ".#{time}"
|
21
21
|
end
|
22
|
-
s.files = Dir.glob("{targets,lib,tools,microservices}/**/*") + %w(Rakefile README.md plugin.txt)
|
22
|
+
s.files = Dir.glob("{targets,lib,tools,microservices}/**/*") + %w(Rakefile README.md LICENSE.txt plugin.txt)
|
23
23
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openc3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Melton
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2023-02-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -333,6 +333,20 @@ dependencies:
|
|
333
333
|
- - "~>"
|
334
334
|
- !ruby/object:Gem::Version
|
335
335
|
version: '1.1'
|
336
|
+
- !ruby/object:Gem::Dependency
|
337
|
+
name: mqtt
|
338
|
+
requirement: !ruby/object:Gem::Requirement
|
339
|
+
requirements:
|
340
|
+
- - "~>"
|
341
|
+
- !ruby/object:Gem::Version
|
342
|
+
version: '0.5'
|
343
|
+
type: :runtime
|
344
|
+
prerelease: false
|
345
|
+
version_requirements: !ruby/object:Gem::Requirement
|
346
|
+
requirements:
|
347
|
+
- - "~>"
|
348
|
+
- !ruby/object:Gem::Version
|
349
|
+
version: '0.5'
|
336
350
|
- !ruby/object:Gem::Dependency
|
337
351
|
name: opentelemetry-sdk
|
338
352
|
requirement: !ruby/object:Gem::Requirement
|
@@ -653,7 +667,6 @@ files:
|
|
653
667
|
- data/config/_id_items.yaml
|
654
668
|
- data/config/_id_params.yaml
|
655
669
|
- data/config/_interfaces.yaml
|
656
|
-
- data/config/_interfaces.yaml.err
|
657
670
|
- data/config/_items.yaml
|
658
671
|
- data/config/_params.yaml
|
659
672
|
- data/config/cmd_tlm_server.yaml
|
@@ -718,6 +731,7 @@ files:
|
|
718
731
|
- lib/openc3/api/config_api.rb
|
719
732
|
- lib/openc3/api/interface_api.rb
|
720
733
|
- lib/openc3/api/limits_api.rb
|
734
|
+
- lib/openc3/api/metrics_api.rb
|
721
735
|
- lib/openc3/api/offline_access_api.rb
|
722
736
|
- lib/openc3/api/router_api.rb
|
723
737
|
- lib/openc3/api/settings_api.rb
|
@@ -768,6 +782,7 @@ files:
|
|
768
782
|
- lib/openc3/interfaces.rb
|
769
783
|
- lib/openc3/interfaces/interface.rb
|
770
784
|
- lib/openc3/interfaces/linc_interface.rb
|
785
|
+
- lib/openc3/interfaces/mqtt_interface.rb
|
771
786
|
- lib/openc3/interfaces/protocols/burst_protocol.rb
|
772
787
|
- lib/openc3/interfaces/protocols/crc_protocol.rb
|
773
788
|
- lib/openc3/interfaces/protocols/fixed_protocol.rb
|
@@ -849,6 +864,7 @@ files:
|
|
849
864
|
- lib/openc3/models/router_model.rb
|
850
865
|
- lib/openc3/models/router_status_model.rb
|
851
866
|
- lib/openc3/models/scope_model.rb
|
867
|
+
- lib/openc3/models/secret_model.rb
|
852
868
|
- lib/openc3/models/settings_model.rb
|
853
869
|
- lib/openc3/models/sorted_model.rb
|
854
870
|
- lib/openc3/models/stash_model.rb
|
@@ -951,8 +967,10 @@ files:
|
|
951
967
|
- lib/openc3/utilities/open_telemetry.rb
|
952
968
|
- lib/openc3/utilities/process_manager.rb
|
953
969
|
- lib/openc3/utilities/quaternion.rb
|
970
|
+
- lib/openc3/utilities/redis_secrets.rb
|
954
971
|
- lib/openc3/utilities/ruby_lex_utils.rb
|
955
972
|
- lib/openc3/utilities/s3_autoload.rb
|
973
|
+
- lib/openc3/utilities/secrets.rb
|
956
974
|
- lib/openc3/utilities/simulated_target.rb
|
957
975
|
- lib/openc3/utilities/sleeper.rb
|
958
976
|
- lib/openc3/utilities/store.rb
|
@@ -965,6 +983,7 @@ files:
|
|
965
983
|
- lib/openc3/win32/win32_main.rb
|
966
984
|
- tasks/gemfile_stats.rake
|
967
985
|
- tasks/spec.rake
|
986
|
+
- templates/plugin-template/LICENSE.txt
|
968
987
|
- templates/plugin-template/README.md
|
969
988
|
- templates/plugin-template/Rakefile
|
970
989
|
- templates/plugin-template/plugin.gemspec
|