openc3 5.5.0 → 5.5.1
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.
Potentially problematic release.
This version of openc3 might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/data/config/_canvas_values.yaml +41 -0
- data/data/config/_graph_params.yaml +25 -0
- data/data/config/graph_settings.yaml +52 -0
- data/data/config/interface_modifiers.yaml +4 -0
- data/data/config/microservice.yaml +5 -1
- data/data/config/screen.yaml +44 -50
- data/data/config/settings.yaml +144 -0
- data/data/config/widgets.yaml +1744 -1493
- data/lib/openc3/models/interface_model.rb +5 -2
- data/lib/openc3/models/microservice_model.rb +6 -5
- data/lib/openc3/models/plugin_model.rb +3 -1
- data/lib/openc3/operators/microservice_operator.rb +2 -2
- data/lib/openc3/utilities/redis_secrets.rb +4 -4
- data/lib/openc3/utilities/secrets.rb +5 -5
- data/lib/openc3/version.rb +5 -5
- data/templates/target/targets/TARGET/screens/status.txt +1 -2
- metadata +6 -3
- data/lib/openc3/models/traefik_model.rb +0 -47
@@ -257,12 +257,15 @@ module OpenC3
|
|
257
257
|
@log_raw = true
|
258
258
|
|
259
259
|
when 'SECRET'
|
260
|
-
parser.verify_num_parameters(3,
|
260
|
+
parser.verify_num_parameters(3, 5, "#{keyword} <Secret Type: ENV or FILE> <Secret Name> <Environment Variable Name or File Path> <Option Name (Optional)> <Secret Store Name (Optional)>")
|
261
261
|
@secrets << parameters[0..2]
|
262
|
-
if parameters[3]
|
262
|
+
if ConfigParser.handle_nil(parameters[3])
|
263
263
|
# Option Name, Secret Name
|
264
264
|
@secret_options << [parameters[3], parameters[1]]
|
265
265
|
end
|
266
|
+
if ConfigParser.handle_nil(parameters[4])
|
267
|
+
@secrets[-1] << parameters[4]
|
268
|
+
end
|
266
269
|
|
267
270
|
else
|
268
271
|
raise ConfigParser::Error.new(parser, "Unknown keyword and parameters for Interface/Router: #{keyword} #{parameters.join(" ")}")
|
@@ -23,7 +23,6 @@
|
|
23
23
|
require 'openc3/top_level'
|
24
24
|
require 'openc3/models/model'
|
25
25
|
require 'openc3/models/metric_model'
|
26
|
-
require 'openc3/models/traefik_model'
|
27
26
|
require 'openc3/utilities/bucket'
|
28
27
|
|
29
28
|
module OpenC3
|
@@ -193,8 +192,12 @@ module OpenC3
|
|
193
192
|
parser.verify_num_parameters(1, 1, "#{keyword} <Container Image Name>")
|
194
193
|
@container = parameters[0]
|
195
194
|
when 'SECRET'
|
196
|
-
parser.verify_num_parameters(3,
|
197
|
-
|
195
|
+
parser.verify_num_parameters(3, 4, "#{keyword} <Secret Type: ENV or FILE> <Secret Name> <Environment Variable Name or File Path> <Secret Store Name (Optional)>")
|
196
|
+
if ConfigParser.handle_nil(parameters[3])
|
197
|
+
@secrets << parameters.dup
|
198
|
+
else
|
199
|
+
@secrets << parameters[0..2]
|
200
|
+
end
|
198
201
|
when 'ROUTE_PREFIX'
|
199
202
|
parser.verify_num_parameters(1, 1, "#{keyword} <Route Prefix>")
|
200
203
|
@prefix = parameters[0]
|
@@ -225,7 +228,6 @@ module OpenC3
|
|
225
228
|
end
|
226
229
|
end
|
227
230
|
unless validate_only
|
228
|
-
TraefikModel.register_route(microservice_name: @name, port: @ports[0][0], prefix: @prefix) if @ports[0] and ports[0][0] and @prefix
|
229
231
|
ConfigTopic.write({ kind: 'created', type: 'microservice', name: @name, plugin: @plugin }, scope: @scope)
|
230
232
|
end
|
231
233
|
end
|
@@ -235,7 +237,6 @@ module OpenC3
|
|
235
237
|
@bucket.list_objects(bucket: ENV['OPENC3_CONFIG_BUCKET'], prefix: prefix).each do |object|
|
236
238
|
@bucket.delete_object(bucket: ENV['OPENC3_CONFIG_BUCKET'], key: object.key)
|
237
239
|
end
|
238
|
-
TraefikModel.unregister_route(microservice_name: @name, port: @ports[0][0], prefix: @prefix) if @ports[0] and ports[0][0] and @prefix
|
239
240
|
ConfigTopic.write({ kind: 'deleted', type: 'microservice', name: @name, plugin: @plugin }, scope: @scope)
|
240
241
|
rescue Exception => error
|
241
242
|
Logger.error("Error undeploying microservice model #{@name} in scope #{@scope} due to #{error}")
|
@@ -44,7 +44,7 @@ module OpenC3
|
|
44
44
|
class PluginModel < Model
|
45
45
|
PRIMARY_KEY = 'openc3_plugins'
|
46
46
|
# Reserved VARIABLE names. See local_mode.rb: update_local_plugin()
|
47
|
-
RESERVED_VARIABLE_NAMES = ['target_name', 'microservice_name']
|
47
|
+
RESERVED_VARIABLE_NAMES = ['target_name', 'microservice_name', 'scope']
|
48
48
|
|
49
49
|
attr_accessor :variables
|
50
50
|
attr_accessor :plugin_txt_lines
|
@@ -198,6 +198,8 @@ module OpenC3
|
|
198
198
|
tf.close
|
199
199
|
plugin_txt_path = tf.path
|
200
200
|
variables = plugin_hash['variables']
|
201
|
+
variables ||= {}
|
202
|
+
variables['scope'] = scope
|
201
203
|
if File.exist?(plugin_txt_path)
|
202
204
|
parser = OpenC3::ConfigParser.new("https://openc3.com")
|
203
205
|
|
@@ -60,8 +60,8 @@ module OpenC3
|
|
60
60
|
# Setup secrets for microservice
|
61
61
|
secrets = microservice_config["secrets"]
|
62
62
|
if secrets
|
63
|
-
secrets.each do |type, secret_name, env_name_or_path|
|
64
|
-
secret_value = @secrets.get(secret_name, scope: scope)
|
63
|
+
secrets.each do |type, secret_name, env_name_or_path, secret_store|
|
64
|
+
secret_value = @secrets.get(secret_name, secret_store: secret_store, scope: scope)
|
65
65
|
if secret_value
|
66
66
|
case type
|
67
67
|
when 'ENV'
|
@@ -21,11 +21,11 @@ require 'openc3/utilities/secrets'
|
|
21
21
|
|
22
22
|
module OpenC3
|
23
23
|
class RedisSecrets < Secrets
|
24
|
-
def keys(scope:)
|
24
|
+
def keys(secret_store: nil, scope:)
|
25
25
|
SecretModel.names(scope: scope)
|
26
26
|
end
|
27
27
|
|
28
|
-
def get(key, scope:)
|
28
|
+
def get(key, secret_store: nil, scope:)
|
29
29
|
data = SecretModel.get(name: key, scope: scope)
|
30
30
|
if data
|
31
31
|
return data['value']
|
@@ -34,11 +34,11 @@ module OpenC3
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
def set(key, value, scope:)
|
37
|
+
def set(key, value, secret_store: nil, scope:)
|
38
38
|
SecretModel.set( {name: key, value: value.to_s }, scope: scope)
|
39
39
|
end
|
40
40
|
|
41
|
-
def delete(key, scope:)
|
41
|
+
def delete(key, secret_store: nil, scope:)
|
42
42
|
model = SecretModel.get_model(name: key, scope: scope)
|
43
43
|
model.destroy if model
|
44
44
|
end
|
@@ -31,24 +31,24 @@ module OpenC3
|
|
31
31
|
klass.new
|
32
32
|
end
|
33
33
|
|
34
|
-
def keys(scope:)
|
34
|
+
def keys(secret_store: nil, scope:)
|
35
35
|
raise NotImplementedError, "#{self.class} has not implemented method '#{__method__}'"
|
36
36
|
end
|
37
37
|
|
38
|
-
def get(key, scope:)
|
38
|
+
def get(key, secret_store: nil, scope:)
|
39
39
|
return @local_secrets[key]
|
40
40
|
end
|
41
41
|
|
42
|
-
def set(key, value, scope:)
|
42
|
+
def set(key, value, secret_store: nil, scope:)
|
43
43
|
raise NotImplementedError, "#{self.class} has not implemented method '#{__method__}'"
|
44
44
|
end
|
45
45
|
|
46
|
-
def delete(key, scope:)
|
46
|
+
def delete(key, secret_store: nil, scope:)
|
47
47
|
raise NotImplementedError, "#{self.class} has not implemented method '#{__method__}'"
|
48
48
|
end
|
49
49
|
|
50
50
|
def setup(secrets)
|
51
|
-
secrets.each do |type, key, data|
|
51
|
+
secrets.each do |type, key, data, secret_store|
|
52
52
|
case type
|
53
53
|
when 'ENV'
|
54
54
|
@local_secrets[key] = ENV[data]
|
data/lib/openc3/version.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# encoding: ascii-8bit
|
2
2
|
|
3
|
-
OPENC3_VERSION = '5.5.
|
3
|
+
OPENC3_VERSION = '5.5.1'
|
4
4
|
module OpenC3
|
5
5
|
module Version
|
6
6
|
MAJOR = '5'
|
7
7
|
MINOR = '5'
|
8
|
-
PATCH = '
|
8
|
+
PATCH = '1'
|
9
9
|
OTHER = ''
|
10
|
-
BUILD = '
|
10
|
+
BUILD = 'a1e84e1850e06f2c01726e03372e2872137b3852'
|
11
11
|
end
|
12
|
-
VERSION = '5.5.
|
13
|
-
GEM_VERSION = '5.5.
|
12
|
+
VERSION = '5.5.1'
|
13
|
+
GEM_VERSION = '5.5.1'
|
14
14
|
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.5.
|
4
|
+
version: 5.5.1
|
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: 2023-02-
|
12
|
+
date: 2023-02-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -692,6 +692,8 @@ files:
|
|
692
692
|
- bin/openc3cli
|
693
693
|
- bin/rubysloc
|
694
694
|
- data/config/_array_params.yaml
|
695
|
+
- data/config/_canvas_values.yaml
|
696
|
+
- data/config/_graph_params.yaml
|
695
697
|
- data/config/_id_items.yaml
|
696
698
|
- data/config/_id_params.yaml
|
697
699
|
- data/config/_interfaces.yaml
|
@@ -700,6 +702,7 @@ files:
|
|
700
702
|
- data/config/command.yaml
|
701
703
|
- data/config/command_modifiers.yaml
|
702
704
|
- data/config/command_telemetry.yaml
|
705
|
+
- data/config/graph_settings.yaml
|
703
706
|
- data/config/interface_modifiers.yaml
|
704
707
|
- data/config/item_modifiers.yaml
|
705
708
|
- data/config/microservice.yaml
|
@@ -708,6 +711,7 @@ files:
|
|
708
711
|
- data/config/plugins.yaml
|
709
712
|
- data/config/protocols.yaml
|
710
713
|
- data/config/screen.yaml
|
714
|
+
- data/config/settings.yaml
|
711
715
|
- data/config/table_manager.yaml
|
712
716
|
- data/config/table_parameter_modifiers.yaml
|
713
717
|
- data/config/target.yaml
|
@@ -899,7 +903,6 @@ files:
|
|
899
903
|
- lib/openc3/models/timeline_model.rb
|
900
904
|
- lib/openc3/models/tool_config_model.rb
|
901
905
|
- lib/openc3/models/tool_model.rb
|
902
|
-
- lib/openc3/models/traefik_model.rb
|
903
906
|
- lib/openc3/models/trigger_group_model.rb
|
904
907
|
- lib/openc3/models/trigger_model.rb
|
905
908
|
- lib/openc3/models/widget_model.rb
|
@@ -1,47 +0,0 @@
|
|
1
|
-
# encoding: ascii-8bit
|
2
|
-
|
3
|
-
# Copyright 2023 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/utilities/store'
|
20
|
-
|
21
|
-
module OpenC3
|
22
|
-
class TraefikModel
|
23
|
-
def self.register_route(microservice_name:, port:, prefix:, priority: 20)
|
24
|
-
prefix = '/' + prefix unless prefix[0] == '/'
|
25
|
-
if ENV['KUBERNETES_SERVICE_HOST']
|
26
|
-
url = "http://#{microservice_name.gsub('__', '-')}:#{port}"
|
27
|
-
else
|
28
|
-
url = "http://openc3-operator:#{port}"
|
29
|
-
end
|
30
|
-
service_name = microservice_name
|
31
|
-
router_name = microservice_name
|
32
|
-
Store.set("traefik/http/services/#{service_name}/loadbalancer/servers/0/url", url)
|
33
|
-
Store.set("traefik/http/routers/#{router_name}/service", service_name)
|
34
|
-
Store.set("traefik/http/routers/#{router_name}/priority", priority)
|
35
|
-
Store.set("traefik/http/routers/#{router_name}/rule", "PathPrefix(`#{prefix}`)")
|
36
|
-
end
|
37
|
-
|
38
|
-
def self.unregister_route(microservice_name:)
|
39
|
-
service_name = microservice_name
|
40
|
-
router_name = microservice_name
|
41
|
-
Store.del("traefik/http/routers/#{router_name}/rule")
|
42
|
-
Store.del("traefik/http/routers/#{router_name}/priority")
|
43
|
-
Store.del("traefik/http/routers/#{router_name}/service")
|
44
|
-
Store.del("traefik/http/services/#{service_name}/loadbalancer/servers/0/url")
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|