openc3 5.11.3 → 5.12.0
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/Gemfile +2 -2
- data/bin/openc3cli +26 -12
- data/data/config/_id_items.yaml +6 -4
- data/data/config/_id_params.yaml +9 -6
- data/data/config/_items.yaml +6 -4
- data/data/config/_params.yaml +3 -2
- data/data/config/interface_modifiers.yaml +1 -1
- data/data/config/microservice.yaml +10 -1
- data/data/config/plugins.yaml +13 -3
- data/data/config/target.yaml +9 -0
- data/data/config/target_config.yaml +12 -0
- data/data/config/tool.yaml +12 -3
- data/lib/openc3/api/api.rb +1 -1
- data/lib/openc3/api/cmd_api.rb +24 -24
- data/lib/openc3/api/config_api.rb +12 -12
- data/lib/openc3/api/limits_api.rb +4 -3
- data/lib/openc3/api/settings_api.rb +5 -2
- data/lib/openc3/api/tlm_api.rb +7 -10
- data/lib/openc3/conversions/unix_time_conversion.rb +8 -6
- data/lib/openc3/interfaces/tcpip_server_interface.rb +0 -7
- data/lib/openc3/io/json_drb.rb +3 -2
- data/lib/openc3/io/json_rpc.rb +6 -6
- data/lib/openc3/logs/buffered_packet_log_writer.rb +4 -2
- data/lib/openc3/logs/packet_log_writer.rb +22 -7
- data/lib/openc3/microservices/cleanup_microservice.rb +8 -1
- data/lib/openc3/microservices/decom_microservice.rb +1 -1
- data/lib/openc3/microservices/interface_microservice.rb +2 -2
- data/lib/openc3/microservices/microservice.rb +5 -2
- data/lib/openc3/microservices/reaction_microservice.rb +1 -0
- data/lib/openc3/microservices/timeline_microservice.rb +7 -5
- data/lib/openc3/migrations/20231022000000_tlm_viewer_config.rb +22 -0
- data/lib/openc3/models/activity_model.rb +21 -3
- data/lib/openc3/models/cvt_model.rb +2 -1
- data/lib/openc3/models/gem_model.rb +4 -1
- data/lib/openc3/models/interface_model.rb +11 -5
- data/lib/openc3/models/metadata_model.rb +11 -0
- data/lib/openc3/models/microservice_model.rb +16 -3
- data/lib/openc3/models/model.rb +18 -0
- data/lib/openc3/models/note_model.rb +11 -0
- data/lib/openc3/models/plugin_model.rb +18 -0
- data/lib/openc3/models/python_package_model.rb +104 -0
- data/lib/openc3/models/scope_model.rb +2 -0
- data/lib/openc3/models/sorted_model.rb +17 -8
- data/lib/openc3/models/target_model.rb +53 -18
- data/lib/openc3/models/tool_config_model.rb +9 -3
- data/lib/openc3/models/tool_model.rb +22 -7
- data/lib/openc3/models/widget_model.rb +19 -3
- data/lib/openc3/operators/microservice_operator.rb +2 -0
- data/lib/openc3/packets/limits.rb +6 -18
- data/lib/openc3/packets/packet.rb +1 -0
- data/lib/openc3/packets/parsers/format_string_parser.rb +4 -4
- data/lib/openc3/packets/parsers/limits_parser.rb +4 -4
- data/lib/openc3/packets/parsers/limits_response_parser.rb +5 -5
- data/lib/openc3/packets/parsers/processor_parser.rb +4 -4
- data/lib/openc3/packets/parsers/state_parser.rb +3 -3
- data/lib/openc3/script/api_shared.rb +50 -32
- data/lib/openc3/script/calendar.rb +109 -0
- data/lib/openc3/script/commands.rb +1 -8
- data/lib/openc3/script/{gems.rb → packages.rb} +20 -16
- data/lib/openc3/script/script.rb +49 -38
- data/lib/openc3/system/system.rb +2 -0
- data/lib/openc3/system/target.rb +10 -1
- data/lib/openc3/top_level.rb +2 -2
- data/lib/openc3/utilities/aws_bucket.rb +3 -2
- data/lib/openc3/utilities/bucket_file_cache.rb +1 -1
- data/lib/openc3/utilities/local_mode.rb +3 -1
- data/lib/openc3/utilities/logger.rb +1 -1
- data/lib/openc3/utilities/ruby_lex_utils.rb +0 -8
- data/lib/openc3/version.rb +6 -6
- data/templates/tool_angular/package.json +14 -14
- data/templates/tool_angular/yarn.lock +282 -129
- data/templates/tool_react/package.json +11 -11
- data/templates/tool_react/yarn.lock +353 -300
- data/templates/tool_svelte/package.json +12 -12
- data/templates/tool_svelte/src/services/openc3-api.js +16 -60
- data/templates/tool_svelte/yarn.lock +338 -212
- data/templates/tool_vue/package.json +9 -9
- data/templates/tool_vue/yarn.lock +55 -41
- data/templates/widget/package.json +10 -10
- data/templates/widget/yarn.lock +59 -45
- metadata +36 -5
data/lib/openc3/script/script.rb
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
# GNU Affero General Public License for more details.
|
15
15
|
|
16
16
|
# Modified by OpenC3, Inc.
|
17
|
-
# All changes Copyright
|
17
|
+
# All changes Copyright 2023, OpenC3, Inc.
|
18
18
|
# All Rights Reserved
|
19
19
|
#
|
20
20
|
# This file may also be used under the terms of a commercial license
|
@@ -24,6 +24,7 @@ require 'openc3'
|
|
24
24
|
require 'openc3/api/api'
|
25
25
|
require 'openc3/io/json_drb_object'
|
26
26
|
require 'openc3/script/api_shared'
|
27
|
+
require 'openc3/script/calendar'
|
27
28
|
require 'openc3/script/metadata'
|
28
29
|
require 'openc3/script/commands'
|
29
30
|
require 'openc3/script/telemetry'
|
@@ -33,7 +34,7 @@ require 'openc3/script/screen'
|
|
33
34
|
require 'openc3/script/script_runner'
|
34
35
|
require 'openc3/script/storage'
|
35
36
|
require 'openc3/script/web_socket_api'
|
36
|
-
require 'openc3/script/
|
37
|
+
require 'openc3/script/packages'
|
37
38
|
require 'openc3/script/plugins'
|
38
39
|
require 'openc3/utilities/authentication'
|
39
40
|
|
@@ -92,27 +93,48 @@ module OpenC3
|
|
92
93
|
$script_runner_api_server = nil
|
93
94
|
end
|
94
95
|
|
96
|
+
# This isn't part of the public API because users should use wait()
|
97
|
+
def openc3_script_sleep(sleep_time = nil)
|
98
|
+
if sleep_time
|
99
|
+
sleep(sleep_time)
|
100
|
+
else
|
101
|
+
prompt("Press any key to continue...")
|
102
|
+
end
|
103
|
+
return false
|
104
|
+
end
|
105
|
+
|
106
|
+
# Internal method used in scripts when encountering a hazardous command
|
107
|
+
def prompt_for_hazardous(target_name, cmd_name, hazardous_description)
|
108
|
+
loop do
|
109
|
+
message = "Warning: Command #{target_name} #{cmd_name} is Hazardous. "
|
110
|
+
message << "\n#{hazardous_description}\n" if hazardous_description
|
111
|
+
message << "Send? (y): "
|
112
|
+
print message
|
113
|
+
answer = gets.chomp
|
114
|
+
if answer.downcase == 'y'
|
115
|
+
return true
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
###########################################################################
|
121
|
+
# START PUBLIC API
|
122
|
+
###########################################################################
|
123
|
+
|
95
124
|
def disconnect_script
|
96
125
|
$disconnect = true
|
97
126
|
end
|
98
127
|
|
128
|
+
# DEPRECATED
|
99
129
|
def play_wav_file(wav_filename)
|
100
130
|
# NOOP
|
101
131
|
end
|
102
132
|
|
133
|
+
# DEPRECATED
|
103
134
|
def status_bar(message)
|
104
135
|
# NOOP
|
105
136
|
end
|
106
137
|
|
107
|
-
def openc3_script_sleep(sleep_time = nil)
|
108
|
-
if sleep_time
|
109
|
-
sleep(sleep_time)
|
110
|
-
else
|
111
|
-
prompt("Press any key to continue...")
|
112
|
-
end
|
113
|
-
return false
|
114
|
-
end
|
115
|
-
|
116
138
|
def ask_string(question, blank_or_default = false, password = false)
|
117
139
|
answer = ''
|
118
140
|
default = ''
|
@@ -174,19 +196,6 @@ module OpenC3
|
|
174
196
|
_file_dialog(title, message, filter)
|
175
197
|
end
|
176
198
|
|
177
|
-
def prompt_for_hazardous(target_name, cmd_name, hazardous_description)
|
178
|
-
loop do
|
179
|
-
message = "Warning: Command #{target_name} #{cmd_name} is Hazardous. "
|
180
|
-
message << "\n#{hazardous_description}\n" if hazardous_description
|
181
|
-
message << "Send? (y): "
|
182
|
-
print message
|
183
|
-
answer = gets.chomp
|
184
|
-
if answer.downcase == 'y'
|
185
|
-
return true
|
186
|
-
end
|
187
|
-
end
|
188
|
-
end
|
189
|
-
|
190
199
|
def prompt(string, text_color: nil, background_color: nil, font_size: nil, font_family: nil, details: nil)
|
191
200
|
print "#{string}: "
|
192
201
|
print "Details: #{details}\n" if details
|
@@ -200,6 +209,10 @@ module OpenC3
|
|
200
209
|
def run_mode
|
201
210
|
# NOOP
|
202
211
|
end
|
212
|
+
|
213
|
+
###########################################################################
|
214
|
+
# END PUBLIC API
|
215
|
+
###########################################################################
|
203
216
|
end
|
204
217
|
|
205
218
|
# Provides a proxy to the JsonDRbObject which communicates with the API server
|
@@ -253,18 +266,18 @@ module OpenC3
|
|
253
266
|
when :request
|
254
267
|
@json_drb.request(*method_params, **kw_params)
|
255
268
|
else
|
269
|
+
# If :disconnect is there delete it and return the value
|
270
|
+
# If it is not there, delete returns nil
|
271
|
+
disconnect = kw_params.delete(:disconnect)
|
256
272
|
if $disconnect
|
257
|
-
|
258
|
-
# If :disconnect is there delete it and return the value
|
259
|
-
# If it is not there, delete returns nil
|
260
|
-
disconnect = kw_params.delete(:disconnect)
|
273
|
+
return disconnect if disconnect
|
261
274
|
# The only commands allowed through in disconnect mode are read-only
|
262
275
|
# Thus we allow the get, list, tlm and limits_enabled and subscribe methods
|
263
276
|
if method_name =~ /\w*_get$|^get_\w*|\w*_list$|^list_\w*|^tlm|^limits_enabled$|^subscribe$/
|
264
|
-
|
277
|
+
return @json_drb.method_missing(method_name, *method_params, **kw_params)
|
278
|
+
else
|
279
|
+
return nil
|
265
280
|
end
|
266
|
-
# If they overrode the return value using the disconnect keyword then return that
|
267
|
-
return disconnect ? disconnect : result
|
268
281
|
else
|
269
282
|
@json_drb.method_missing(method_name, *method_params, **kw_params)
|
270
283
|
end
|
@@ -317,14 +330,12 @@ module OpenC3
|
|
317
330
|
|
318
331
|
def request(*method_params, **kw_params)
|
319
332
|
kw_params[:scope] = $openc3_scope unless kw_params[:scope]
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
disconnect = kw_params.delete(:disconnect)
|
325
|
-
|
333
|
+
# If :disconnect is there delete it and return the value
|
334
|
+
# If it is not there, delete returns nil
|
335
|
+
disconnect = kw_params.delete(:disconnect)
|
336
|
+
if $disconnect and disconnect
|
326
337
|
# If they overrode the return value using the disconnect keyword then return that
|
327
|
-
return disconnect
|
338
|
+
return disconnect
|
328
339
|
else
|
329
340
|
@json_api.request(*method_params, **kw_params)
|
330
341
|
end
|
data/lib/openc3/system/system.rb
CHANGED
@@ -73,6 +73,8 @@ module OpenC3
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def self.setup_targets(target_names, base_dir, scope:)
|
76
|
+
# Nothing to do if there are no targets
|
77
|
+
return if target_names.nil? or target_names.length == 0
|
76
78
|
if @@instance.nil?
|
77
79
|
FileUtils.mkdir_p("#{base_dir}/targets")
|
78
80
|
bucket = Bucket.getClient()
|
data/lib/openc3/system/target.rb
CHANGED
@@ -32,6 +32,9 @@ module OpenC3
|
|
32
32
|
# the system processes the target.
|
33
33
|
attr_reader :name
|
34
34
|
|
35
|
+
# @return [String] Programming language. Must be 'ruby' or 'python'.
|
36
|
+
attr_reader :language
|
37
|
+
|
35
38
|
# @return [Array<String>] List of filenames that must be required by Ruby
|
36
39
|
# before parsing the command and telemetry definitions for this target
|
37
40
|
attr_reader :requires
|
@@ -83,6 +86,7 @@ module OpenC3
|
|
83
86
|
# @param path [String] Path to the target directory
|
84
87
|
# @param gem_path [String] Path to the gem file or nil if there is no gem
|
85
88
|
def initialize(target_name, path, gem_path = nil)
|
89
|
+
@language = 'ruby'
|
86
90
|
@requires = []
|
87
91
|
@ignored_parameters = []
|
88
92
|
@ignored_items = []
|
@@ -110,10 +114,15 @@ module OpenC3
|
|
110
114
|
#
|
111
115
|
# @param filename [String] The target configuration file to parse
|
112
116
|
def process_file(filename)
|
113
|
-
Logger.instance.info "Processing target definition in file '#{filename}'"
|
117
|
+
Logger.instance.info "Processing ruby target definition in file '#{filename}'"
|
114
118
|
parser = ConfigParser.new("https://openc3.com/docs/v5/target")
|
115
119
|
parser.parse_file(filename) do |keyword, parameters|
|
116
120
|
case keyword
|
121
|
+
when 'LANGUAGE'
|
122
|
+
usage = "#{keyword} <ruby | python>"
|
123
|
+
parser.verify_num_parameters(1, 1, usage)
|
124
|
+
@language = parameters[0].downcase
|
125
|
+
|
117
126
|
when 'REQUIRE'
|
118
127
|
usage = "#{keyword} <FILENAME>"
|
119
128
|
parser.verify_num_parameters(1, 1, usage)
|
data/lib/openc3/top_level.rb
CHANGED
@@ -232,8 +232,7 @@ module OpenC3
|
|
232
232
|
def self.create_log_file(filename, log_dir = nil)
|
233
233
|
log_file = nil
|
234
234
|
begin
|
235
|
-
#
|
236
|
-
# system.txt configuration file. If this has an error we won't be able
|
235
|
+
# If this has an error we won't be able
|
237
236
|
# to determine the log path but we still want to write the log.
|
238
237
|
log_dir = System.instance.paths['LOGS'] unless log_dir
|
239
238
|
# Make sure the log directory exists
|
@@ -310,6 +309,7 @@ module OpenC3
|
|
310
309
|
file.puts "GEMRC: #{ENV['GEMRC']}"
|
311
310
|
file.puts "RI_DEVKIT: #{ENV['RI_DEVKIT']}"
|
312
311
|
file.puts "GEM_HOME: #{ENV['GEM_HOME']}"
|
312
|
+
file.puts "PYTHONUSERBASE: #{ENV['PYTHONUSERBASE']}"
|
313
313
|
file.puts "PATH: #{ENV['PATH']}"
|
314
314
|
file.puts ""
|
315
315
|
file.puts "Ruby Path:\n #{$:.join("\n ")}\n\n"
|
@@ -81,7 +81,7 @@ module OpenC3
|
|
81
81
|
]
|
82
82
|
}
|
83
83
|
EOL
|
84
|
-
@client.put_bucket_policy({ bucket: bucket, policy: policy })
|
84
|
+
@client.put_bucket_policy({ bucket: bucket, policy: policy, checksum_algorithm: "SHA256" })
|
85
85
|
end
|
86
86
|
end
|
87
87
|
|
@@ -193,7 +193,8 @@ module OpenC3
|
|
193
193
|
# put_object fires off the request to store but does not confirm
|
194
194
|
def put_object(bucket:, key:, body:, content_type: nil, cache_control: nil, metadata: nil)
|
195
195
|
@client.put_object(bucket: bucket, key: key, body: body,
|
196
|
-
content_type: content_type, cache_control: cache_control, metadata: metadata
|
196
|
+
content_type: content_type, cache_control: cache_control, metadata: metadata,
|
197
|
+
checksum_algorithm: "SHA256")
|
197
198
|
end
|
198
199
|
|
199
200
|
# @returns [Boolean] Whether the file exists
|
@@ -87,7 +87,7 @@ class BucketFile
|
|
87
87
|
# Try to retrieve the file three times
|
88
88
|
retry_count += 1
|
89
89
|
raise err if retry_count >= 3
|
90
|
-
Logger.warn("Error retrieving log file from bucket - retry #{retry_count}: #{@bucket_path}\n#{err.formatted}")
|
90
|
+
OpenC3::Logger.warn("Error retrieving log file from bucket - retry #{retry_count}: #{@bucket_path}\n#{err.formatted}")
|
91
91
|
sleep(1)
|
92
92
|
retry
|
93
93
|
end
|
@@ -26,7 +26,7 @@ require 'openc3/utilities/bucket'
|
|
26
26
|
module OpenC3
|
27
27
|
module LocalMode
|
28
28
|
OPENC3_LOCAL_MODE_PATH = ENV['OPENC3_LOCAL_MODE_PATH'] || "/plugins"
|
29
|
-
|
29
|
+
# When updating update local_mode.py, PluginsTab.vue, plugins.spec.ts
|
30
30
|
DEFAULT_PLUGINS = [
|
31
31
|
'openc3-cosmos-tool-admin',
|
32
32
|
'openc3-cosmos-tool-autonomic',
|
@@ -36,7 +36,9 @@ module OpenC3
|
|
36
36
|
'openc3-cosmos-tool-cmdtlmserver',
|
37
37
|
'openc3-cosmos-tool-dataextractor',
|
38
38
|
'openc3-cosmos-tool-dataviewer',
|
39
|
+
'openc3-cosmos-tool-docs',
|
39
40
|
'openc3-cosmos-tool-handbooks',
|
41
|
+
'openc3-cosmos-tool-iframe',
|
40
42
|
'openc3-cosmos-tool-limitsmonitor',
|
41
43
|
'openc3-cosmos-tool-packetviewer',
|
42
44
|
'openc3-cosmos-tool-scriptrunner',
|
@@ -180,7 +180,7 @@ module OpenC3
|
|
180
180
|
data = { time: time.to_nsec_from_epoch, '@timestamp' => time.xmlschema(3), severity: severity_string }
|
181
181
|
data[:microservice_name] = @microservice_name if @microservice_name
|
182
182
|
data[:detail] = @detail_string if @detail_string
|
183
|
-
data[:user] = user
|
183
|
+
data[:user] = user if user # EE: If a user is passed, put its name. Don't include user data if no user was passed.
|
184
184
|
if block_given?
|
185
185
|
message = yield
|
186
186
|
end
|
@@ -41,14 +41,6 @@ class RubyLex
|
|
41
41
|
@prompt = nil
|
42
42
|
initialize_input()
|
43
43
|
end
|
44
|
-
|
45
|
-
major, minor, _ = RUBY_VERSION.split('.')
|
46
|
-
if major == '3' and minor.to_i < 2
|
47
|
-
alias orig_lex lex
|
48
|
-
def lex(context)
|
49
|
-
orig_lex()
|
50
|
-
end
|
51
|
-
end
|
52
44
|
end
|
53
45
|
$VERBOSE = old_verbose
|
54
46
|
|
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.12.0'
|
4
4
|
module OpenC3
|
5
5
|
module Version
|
6
6
|
MAJOR = '5'
|
7
|
-
MINOR = '
|
8
|
-
PATCH = '
|
7
|
+
MINOR = '12'
|
8
|
+
PATCH = '0'
|
9
9
|
OTHER = ''
|
10
|
-
BUILD = '
|
10
|
+
BUILD = '8f36977eacfebdcdae21f02223be66e69feaa2bf'
|
11
11
|
end
|
12
|
-
VERSION = '5.
|
13
|
-
GEM_VERSION = '5.
|
12
|
+
VERSION = '5.12.0'
|
13
|
+
GEM_VERSION = '5.12.0'
|
14
14
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "<%= tool_name %>",
|
3
|
-
"version": "5.
|
3
|
+
"version": "5.12.0",
|
4
4
|
"scripts": {
|
5
5
|
"ng": "ng",
|
6
6
|
"start": "ng serve",
|
@@ -12,22 +12,22 @@
|
|
12
12
|
},
|
13
13
|
"private": true,
|
14
14
|
"dependencies": {
|
15
|
-
"@openc3/tool-common": "5.
|
16
|
-
"@angular/animations": "^16.2.
|
17
|
-
"@angular/cdk": "^16.2.
|
18
|
-
"@angular/common": "^16.2.
|
19
|
-
"@angular/compiler": "^16.2.
|
20
|
-
"@angular/core": "^16.2.
|
21
|
-
"@angular/forms": "^16.2.
|
22
|
-
"@angular/material": "16.2.
|
23
|
-
"@angular/platform-browser": "^16.2.
|
24
|
-
"@angular/platform-browser-dynamic": "^16.2.
|
25
|
-
"@angular/router": "^16.2.
|
15
|
+
"@openc3/tool-common": "5.12.0",
|
16
|
+
"@angular/animations": "^16.2.12",
|
17
|
+
"@angular/cdk": "^16.2.11",
|
18
|
+
"@angular/common": "^16.2.12",
|
19
|
+
"@angular/compiler": "^16.2.12",
|
20
|
+
"@angular/core": "^16.2.12",
|
21
|
+
"@angular/forms": "^16.2.12",
|
22
|
+
"@angular/material": "16.2.11",
|
23
|
+
"@angular/platform-browser": "^16.2.12",
|
24
|
+
"@angular/platform-browser-dynamic": "^16.2.12",
|
25
|
+
"@angular/router": "^16.2.12",
|
26
26
|
"rxjs": "~7.8.0",
|
27
27
|
"single-spa": ">=5.9.5",
|
28
|
-
"single-spa-angular": "^
|
28
|
+
"single-spa-angular": "^9.0.1",
|
29
29
|
"tslib": "^2.6.2",
|
30
|
-
"zone.js": "~0.
|
30
|
+
"zone.js": "~0.14.2"
|
31
31
|
},
|
32
32
|
"devDependencies": {
|
33
33
|
"@angular-builders/custom-webpack": "16.0.1",
|