MuranoCLI 3.2.0.beta.9 → 3.2.1.pre.beta.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/Rakefile +5 -0
- data/dockers/README.rst +7 -0
- data/dockers/RELEASE.rst +6 -3
- data/dockers/docker-test.sh +45 -17
- data/docs/completions/murano_completion-bash +211 -86
- data/lib/MrMurano/Account.rb +72 -4
- data/lib/MrMurano/Business.rb +163 -2
- data/lib/MrMurano/Commander-Entry.rb +1 -2
- data/lib/MrMurano/Config.rb +19 -18
- data/lib/MrMurano/Content.rb +26 -19
- data/lib/MrMurano/Gateway.rb +51 -10
- data/lib/MrMurano/ReCommander.rb +1 -1
- data/lib/MrMurano/Solution-Services.rb +80 -35
- data/lib/MrMurano/Solution-Users.rb +1 -0
- data/lib/MrMurano/SyncRoot.rb +10 -3
- data/lib/MrMurano/SyncUpDown-Core.rb +47 -36
- data/lib/MrMurano/SyncUpDown-Item.rb +46 -14
- data/lib/MrMurano/SyncUpDown.rb +22 -20
- data/lib/MrMurano/Webservice-Endpoint.rb +20 -18
- data/lib/MrMurano/Webservice-File.rb +63 -20
- data/lib/MrMurano/commands/business.rb +14 -1
- data/lib/MrMurano/commands/child.rb +148 -0
- data/lib/MrMurano/commands/devices.rb +298 -149
- data/lib/MrMurano/commands/element.rb +2 -1
- data/lib/MrMurano/commands/globals.rb +3 -0
- data/lib/MrMurano/commands/network.rb +152 -33
- data/lib/MrMurano/commands/sync.rb +2 -2
- data/lib/MrMurano/commands.rb +1 -0
- data/lib/MrMurano/verbosing.rb +13 -2
- data/lib/MrMurano/version.rb +1 -1
- data/spec/Account_spec.rb +43 -11
- data/spec/Content_spec.rb +5 -3
- data/spec/GatewayBase_spec.rb +1 -1
- data/spec/GatewayDevice_spec.rb +47 -8
- data/spec/GatewayResource_spec.rb +1 -1
- data/spec/GatewaySettings_spec.rb +1 -1
- data/spec/HttpAuthed_spec.rb +17 -3
- data/spec/ProjectFile_spec.rb +59 -23
- data/spec/Setting_spec.rb +2 -1
- data/spec/Solution-ServiceConfig_spec.rb +1 -1
- data/spec/Solution-ServiceEventHandler_spec.rb +27 -20
- data/spec/Solution-ServiceModules_spec.rb +7 -5
- data/spec/Solution-UsersRoles_spec.rb +7 -1
- data/spec/Solution_spec.rb +9 -1
- data/spec/SyncRoot_spec.rb +5 -5
- data/spec/SyncUpDown_spec.rb +262 -211
- data/spec/Verbosing_spec.rb +49 -8
- data/spec/Webservice-Cors_spec.rb +10 -1
- data/spec/Webservice-Endpoint_spec.rb +84 -65
- data/spec/Webservice-File_spec.rb +16 -11
- data/spec/Webservice-Setting_spec.rb +7 -1
- data/spec/_workspace.rb +9 -0
- data/spec/cmd_business_spec.rb +5 -10
- data/spec/cmd_common.rb +67 -32
- data/spec/cmd_config_spec.rb +9 -14
- data/spec/cmd_content_spec.rb +15 -26
- data/spec/cmd_cors_spec.rb +9 -12
- data/spec/cmd_device_spec.rb +31 -45
- data/spec/cmd_domain_spec.rb +12 -10
- data/spec/cmd_element_spec.rb +18 -17
- data/spec/cmd_exchange_spec.rb +1 -4
- data/spec/cmd_init_spec.rb +56 -72
- data/spec/cmd_keystore_spec.rb +17 -26
- data/spec/cmd_link_spec.rb +13 -17
- data/spec/cmd_password_spec.rb +9 -10
- data/spec/cmd_setting_application_spec.rb +95 -68
- data/spec/cmd_setting_product_spec.rb +59 -37
- data/spec/cmd_status_spec.rb +46 -84
- data/spec/cmd_syncdown_application_spec.rb +28 -50
- data/spec/cmd_syncdown_both_spec.rb +44 -93
- data/spec/cmd_syncdown_unit_spec.rb +858 -0
- data/spec/cmd_syncup_spec.rb +21 -56
- data/spec/cmd_token_spec.rb +0 -3
- data/spec/cmd_usage_spec.rb +15 -10
- data/spec/dry_run_formatter.rb +1 -0
- data/spec/fixtures/dumped_config +4 -4
- data/spec/spec_helper.rb +3 -0
- metadata +4 -2
data/spec/cmd_syncup_spec.rb
CHANGED
@@ -16,46 +16,41 @@ RSpec.describe 'murano syncup', :cmd, :needs_password do
|
|
16
16
|
murano_solutions_expunge_yes
|
17
17
|
|
18
18
|
@product_name = rname('syncupTestPrd')
|
19
|
-
out, err
|
20
|
-
|
19
|
+
out, err = murano_command_run(
|
20
|
+
'solution create', '--type', 'product', @product_name, '--save',
|
21
21
|
)
|
22
22
|
expect(err).to eq('')
|
23
23
|
expect(out.chomp).to match(/^[a-zA-Z0-9]+$/)
|
24
|
-
expect(status.exitstatus).to eq(0)
|
25
24
|
|
26
25
|
@applctn_name = rname('syncupTestApp')
|
27
|
-
out, err
|
28
|
-
|
26
|
+
out, err = murano_command_run(
|
27
|
+
'solution create', '--type', 'application', @applctn_name, '--save',
|
29
28
|
)
|
30
29
|
expect(err).to eq('')
|
31
30
|
soln_id = out
|
32
31
|
expect(soln_id.chomp).to match(/^[a-zA-Z0-9]+$/)
|
33
|
-
expect(status.exitstatus).to eq(0)
|
34
32
|
|
35
|
-
out, err
|
33
|
+
out, err = murano_command_run('assign set')
|
36
34
|
#expect(out).to a_string_starting_with("Linked product #{@product_name}")
|
37
35
|
olines = out.lines
|
38
36
|
expect(strip_fancy(olines[0]))
|
39
37
|
.to eq("Linked '#{@product_name}' to '#{@applctn_name}'\n")
|
40
38
|
expect(olines[1]).to eq("Created default event handler\n")
|
41
39
|
expect(err).to eq('')
|
42
|
-
expect(status.exitstatus).to eq(0)
|
43
40
|
end
|
44
41
|
|
45
42
|
after(:example) do
|
46
|
-
out, err, status =
|
47
|
-
|
43
|
+
out, err, status = murano_command_run(
|
44
|
+
'solution delete', @applctn_name, '-y',
|
48
45
|
)
|
49
46
|
expect(out).to eq('')
|
50
47
|
expect(err).to eq('')
|
51
|
-
expect(status.exitstatus).to eq(0)
|
52
48
|
|
53
|
-
out, err, status =
|
54
|
-
|
49
|
+
out, err, status = murano_command_run(
|
50
|
+
'solution delete', @product_name, '-y',
|
55
51
|
)
|
56
52
|
expect(out).to eq('')
|
57
53
|
expect(err).to eq('')
|
58
|
-
expect(status.exitstatus).to eq(0)
|
59
54
|
end
|
60
55
|
|
61
56
|
context 'without ProjectFile' do
|
@@ -78,12 +73,12 @@ RSpec.describe 'murano syncup', :cmd, :needs_password do
|
|
78
73
|
# ‘/tmp/d20170809-7670-z315jn/project/services’ (Interfaces)
|
79
74
|
expect(elines).to(satisfy { |_v| elines.length == 2 })
|
80
75
|
elines.each do |line|
|
81
|
-
expect(strip_fancy(line)).to start_with("
|
76
|
+
expect(strip_fancy(line)).to start_with("Skipping missing location '")
|
82
77
|
end
|
83
78
|
end
|
84
79
|
|
85
80
|
it 'syncup', :club_40s, :club_30s, :club_20s, :club_10s do
|
86
|
-
out, err
|
81
|
+
out, err = murano_command_run('syncup')
|
87
82
|
outl = out.lines
|
88
83
|
# The spec tests set --no-progress, so each sync action gets reported.
|
89
84
|
# You'll see:
|
@@ -101,13 +96,9 @@ RSpec.describe 'murano syncup', :cmd, :needs_password do
|
|
101
96
|
# expect(outl[5]).to eq("Adding item table_util\n")
|
102
97
|
expect(outl[5]).to start_with('Adding item ')
|
103
98
|
expect(outl[5]).to end_with("table_util\n")
|
104
|
-
|
105
|
-
# => "
|
106
|
-
|
107
|
-
# => "Removing item k58sn37r6qz800000_event\n",
|
108
|
-
# => "Removing item config_service\n",
|
109
|
-
# => "Removing item config_status\n",
|
110
|
-
(6..11).each { |ln| expect(outl[ln]).to start_with('Removing item ') }
|
99
|
+
expect(outl[6]).to eq("Clearing item user_account\n")
|
100
|
+
# => "Clearing item k58sn37r6qz800000_event\n",
|
101
|
+
expect(outl[7]).to start_with('Clearing item ')
|
111
102
|
# => "Adding item POST_/api/fire\n",
|
112
103
|
# => "Adding item PUT_/api/fire/{code}\n",
|
113
104
|
# => "Adding item DELETE_/api/fire/{code}\n",
|
@@ -115,11 +106,10 @@ RSpec.describe 'murano syncup', :cmd, :needs_password do
|
|
115
106
|
# => "Adding item /icon.png\n",
|
116
107
|
# => "Adding item /\n",
|
117
108
|
# => "Adding item /js/script.js\n",
|
118
|
-
(
|
109
|
+
(8..14).each { |ln| expect(outl[ln]).to start_with('Adding item ') }
|
119
110
|
verify_err_missing_location(err)
|
120
|
-
expect(status.exitstatus).to eq(0)
|
121
111
|
|
122
|
-
out, err
|
112
|
+
out, err = murano_command_run('status')
|
123
113
|
# MUR-6477/MUR-6479: Uploading empty files broken. There's a fix in
|
124
114
|
# the pipeline, but until then, disable the original expect.
|
125
115
|
# FIXME: Why is files/icon.png showing up as different?
|
@@ -134,41 +124,16 @@ RSpec.describe 'murano syncup', :cmd, :needs_password do
|
|
134
124
|
expect(out.lines).to match(
|
135
125
|
[
|
136
126
|
"Nothing new locally\n",
|
137
|
-
"
|
138
|
-
"
|
139
|
-
" - S config_status\n",
|
140
|
-
" - I config_service\n",
|
141
|
-
" - I config_status\n",
|
142
|
-
"Items that differ:\n",
|
143
|
-
# FIXME/MUR-6477/MUR-6479: Remove these two lines after fix released.
|
144
|
-
" M A files/index.html\n",
|
145
|
-
" M A files/js/script.js\n",
|
127
|
+
"Nothing new remotely\n",
|
128
|
+
"Nothing that differs\n",
|
146
129
|
]
|
147
130
|
)
|
148
131
|
end
|
149
132
|
verify_err_missing_location(err)
|
150
|
-
|
151
|
-
|
152
|
-
out
|
153
|
-
expect(out.lines).to match(
|
154
|
-
[
|
155
|
-
" - S config_service\n",
|
156
|
-
" - S config_status\n",
|
157
|
-
" - I config_service\n",
|
158
|
-
" - I config_status\n",
|
159
|
-
# FIXME/MUR-6477/MUR-6479: Uploading empty files is currently broken.
|
160
|
-
# So these two diffs show the newline kludge. Change this when fixed.
|
161
|
-
# 2018-04-23 16:30: ???: Happening on Jenkins server:
|
162
|
-
#" M A files/index.html\n",
|
163
|
-
#"@@ -1 +0,0 @@\n",
|
164
|
-
#"-\n",
|
165
|
-
#" M A files/js/script.js\n",
|
166
|
-
#"@@ -1 +0,0 @@\n",
|
167
|
-
#"-\n",
|
168
|
-
]
|
169
|
-
)
|
133
|
+
|
134
|
+
out, err = murano_command_run('status', '--diff', '--no-grouped')
|
135
|
+
expect(out).to eq('')
|
170
136
|
verify_err_missing_location(err)
|
171
|
-
expect(status.exitstatus).to eq(0)
|
172
137
|
end
|
173
138
|
end
|
174
139
|
|
data/spec/cmd_token_spec.rb
CHANGED
@@ -22,9 +22,6 @@ RSpec.describe 'murano token', :cmd, :needs_password, :nondeterministic do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
context 'with project' do
|
25
|
-
#before(:example) { project_up }
|
26
|
-
#after(:example) { project_down }
|
27
|
-
|
28
25
|
def expect_token_host_user_table(stdout, stderr, num_cols: nil)
|
29
26
|
expect(stderr).to eq('')
|
30
27
|
lines = stdout.lines
|
data/spec/cmd_usage_spec.rb
CHANGED
@@ -16,27 +16,33 @@ RSpec.describe 'murano usage', :cmd, :needs_password do
|
|
16
16
|
# NOTE: The usage command works on one or more solutions of any type.
|
17
17
|
@product_name = rname('usageTest')
|
18
18
|
|
19
|
-
out, err
|
19
|
+
out, err = murano_command_run(
|
20
|
+
'solution create', '--type', 'product', @product_name, '--save',
|
21
|
+
)
|
20
22
|
expect(err).to eq('')
|
21
23
|
expect(out.chomp).to match(/^[a-zA-Z0-9]+$/)
|
22
|
-
expect(status.exitstatus).to eq(0)
|
23
24
|
|
24
|
-
out, err
|
25
|
+
out, err = murano_command_run(
|
26
|
+
'solution create', '--type', 'application', @product_name, '--save',
|
27
|
+
)
|
25
28
|
expect(err).to eq('')
|
26
29
|
expect(out.chomp).to match(/^[a-zA-Z0-9]+$/)
|
27
|
-
expect(status.exitstatus).to eq(0)
|
28
30
|
end
|
31
|
+
|
29
32
|
after(:example) do
|
30
|
-
out, err
|
33
|
+
out, err = murano_command_run('solutions expunge', '--yes')
|
31
34
|
expect(out).to eq("Deleted 2 solutions\n")
|
32
35
|
expect(err).to eq('')
|
33
|
-
expect(status.exitstatus).to eq(0)
|
34
36
|
end
|
35
37
|
|
36
38
|
def confirm_usage_table(olines, ix)
|
37
|
-
expect(olines[ix + 0]).to match(
|
39
|
+
expect(olines[ix + 0]).to match(
|
40
|
+
%r{^(Product|Application): usage[tT]est[a-z0-9]+ <[a-z0-9]+> https://[.\-a-z0-9]+$}
|
41
|
+
)
|
38
42
|
expect(olines[ix + 1]).to match(/^(\+-+){5}\+$/)
|
39
|
-
expect(olines[ix + 2]).to match(
|
43
|
+
expect(olines[ix + 2]).to match(
|
44
|
+
/^\|\s+\| Quota\s+\| Daily\s+\| Monthly\s+\| Total\s+\|$/
|
45
|
+
)
|
40
46
|
# Beneath the header row is a splitter line.
|
41
47
|
expect(olines[ix + 3]).to match(/^(\+-+){5}\+$/)
|
42
48
|
ix += 4
|
@@ -54,13 +60,12 @@ RSpec.describe 'murano usage', :cmd, :needs_password do
|
|
54
60
|
end
|
55
61
|
|
56
62
|
it 'show usage', :club_10s do
|
57
|
-
out, err
|
63
|
+
out, err = murano_command_run('usage')
|
58
64
|
expect(err).to eq('')
|
59
65
|
olines = out.lines
|
60
66
|
ix = 0
|
61
67
|
ix = confirm_usage_table(olines, ix)
|
62
68
|
_ix = confirm_usage_table(olines, ix)
|
63
|
-
expect(status.exitstatus).to eq(0)
|
64
69
|
end
|
65
70
|
end
|
66
71
|
|
data/spec/dry_run_formatter.rb
CHANGED
@@ -20,6 +20,7 @@ class DryRunFormatter < RSpec::Core::Formatters::BaseFormatter
|
|
20
20
|
RSpec::Core::Formatters.register self, :example_started
|
21
21
|
|
22
22
|
def start(example_count)
|
23
|
+
# 2018-07-26: (lb): "Running 538 specs."
|
23
24
|
output << "Running #{example_count.count} specs\n"
|
24
25
|
exit(0)
|
25
26
|
end
|
data/spec/fixtures/dumped_config
CHANGED
@@ -20,8 +20,8 @@ protocol = https
|
|
20
20
|
|
21
21
|
[location]
|
22
22
|
base = <%= File.realpath(@project_dir) %>
|
23
|
-
files =
|
24
|
-
endpoints =
|
23
|
+
files = assets
|
24
|
+
endpoints = endpoints
|
25
25
|
modules = modules
|
26
26
|
eventhandlers = services
|
27
27
|
resources = specs/resources.yaml
|
@@ -36,14 +36,14 @@ searchFor = **/*
|
|
36
36
|
ignoring =
|
37
37
|
|
38
38
|
[endpoints]
|
39
|
-
searchFor = {,../endpoints}/*.lua {,../endpoints}
|
39
|
+
searchFor = {,../endpoints}/*.lua {,../endpoints}/*/*.lua
|
40
40
|
ignoring = *_test.lua *_spec.lua .*
|
41
41
|
|
42
42
|
[eventhandler]
|
43
43
|
searchFor = *.lua */*.lua {../eventhandlers,../event_handler}/*.lua {../eventhandlers,../event_handler}/*/*.lua
|
44
44
|
ignoring = *_test.lua *_spec.lua .*
|
45
45
|
skiplist = device.service_call device2.event interface webservice websocket
|
46
|
-
undeletable = *.event timer.timer tsdb.exportJob user.account
|
46
|
+
undeletable = *.event timer.timer tsdb.exportJob user.account config.service config.status
|
47
47
|
|
48
48
|
[modules]
|
49
49
|
searchFor = *.lua **/*.lua
|
data/spec/spec_helper.rb
CHANGED
@@ -36,6 +36,9 @@ RSpec.configure do |config|
|
|
36
36
|
config.filter_run_excluding :needs_password if ENV['MURANO_PASSWORD'].nil?
|
37
37
|
config.filter_run_excluding :broken_on_windows if Gem.win_platform?
|
38
38
|
|
39
|
+
# FIXME/2018-07-12: (lb): Make test acct. with element. 'til then: disabled.
|
40
|
+
config.filter_run_excluding :needs_exchange_element
|
41
|
+
|
39
42
|
# rspec-expectations config goes here. You can use an alternate
|
40
43
|
# assertion/expectation library such as wrong or the stdlib/minitest
|
41
44
|
# assertions if you prefer.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: MuranoCLI
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
4
|
+
version: 3.2.1.pre.beta.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Conrad Tadpol Tilstra
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-07-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: certified
|
@@ -528,6 +528,7 @@ files:
|
|
528
528
|
- lib/MrMurano/Webservice.rb
|
529
529
|
- lib/MrMurano/commands.rb
|
530
530
|
- lib/MrMurano/commands/business.rb
|
531
|
+
- lib/MrMurano/commands/child.rb
|
531
532
|
- lib/MrMurano/commands/completion-bash.erb
|
532
533
|
- lib/MrMurano/commands/completion-zsh.erb
|
533
534
|
- lib/MrMurano/commands/completion.rb
|
@@ -626,6 +627,7 @@ files:
|
|
626
627
|
- spec/cmd_status_spec.rb
|
627
628
|
- spec/cmd_syncdown_application_spec.rb
|
628
629
|
- spec/cmd_syncdown_both_spec.rb
|
630
|
+
- spec/cmd_syncdown_unit_spec.rb
|
629
631
|
- spec/cmd_syncup_spec.rb
|
630
632
|
- spec/cmd_token_spec.rb
|
631
633
|
- spec/cmd_usage_spec.rb
|