MuranoCLI 2.2.4 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (159) hide show
  1. checksums.yaml +4 -4
  2. data/.agignore +3 -0
  3. data/.gitignore +18 -1
  4. data/.rubocop.yml +222 -0
  5. data/.trustme.sh +185 -0
  6. data/.trustme.vim +24 -0
  7. data/Gemfile +23 -4
  8. data/LICENSE.txt +1 -1
  9. data/MuranoCLI.gemspec +43 -8
  10. data/README.markdown +9 -11
  11. data/Rakefile +187 -143
  12. data/TODO.taskpaper +2 -2
  13. data/bin/murano +51 -52
  14. data/docs/basic_example.rst +436 -0
  15. data/docs/completions/murano_completion-bash +3484 -0
  16. data/docs/demo.md +32 -32
  17. data/docs/develop.rst +391 -0
  18. data/lib/MrMurano.rb +21 -7
  19. data/lib/MrMurano/Account.rb +159 -174
  20. data/lib/MrMurano/Business.rb +381 -0
  21. data/lib/MrMurano/Config-Migrate.rb +32 -26
  22. data/lib/MrMurano/Config.rb +407 -128
  23. data/lib/MrMurano/Content.rb +191 -0
  24. data/lib/MrMurano/Gateway.rb +489 -0
  25. data/lib/MrMurano/Keystore.rb +48 -0
  26. data/lib/MrMurano/Passwords.rb +103 -0
  27. data/lib/MrMurano/ProjectFile.rb +121 -79
  28. data/lib/MrMurano/ReCommander.rb +114 -10
  29. data/lib/MrMurano/Setting.rb +90 -0
  30. data/lib/MrMurano/Solution-ServiceConfig.rb +89 -45
  31. data/lib/MrMurano/Solution-Services.rb +461 -166
  32. data/lib/MrMurano/Solution-Users.rb +70 -31
  33. data/lib/MrMurano/Solution.rb +372 -13
  34. data/lib/MrMurano/SolutionId.rb +73 -0
  35. data/lib/MrMurano/SyncRoot.rb +137 -0
  36. data/lib/MrMurano/SyncUpDown.rb +594 -284
  37. data/lib/MrMurano/Webservice-Cors.rb +71 -0
  38. data/lib/MrMurano/Webservice-Endpoint.rb +234 -0
  39. data/lib/MrMurano/Webservice-File.rb +193 -0
  40. data/lib/MrMurano/Webservice.rb +51 -0
  41. data/lib/MrMurano/commands.rb +18 -15
  42. data/lib/MrMurano/commands/business.rb +300 -6
  43. data/lib/MrMurano/commands/completion-bash.erb +166 -0
  44. data/lib/MrMurano/commands/{zshcomplete.erb → completion-zsh.erb} +0 -0
  45. data/lib/MrMurano/commands/completion.rb +76 -39
  46. data/lib/MrMurano/commands/config.rb +108 -44
  47. data/lib/MrMurano/commands/content.rb +115 -72
  48. data/lib/MrMurano/commands/cors.rb +29 -14
  49. data/lib/MrMurano/commands/devices.rb +286 -0
  50. data/lib/MrMurano/commands/domain.rb +52 -12
  51. data/lib/MrMurano/commands/gb.rb +24 -9
  52. data/lib/MrMurano/commands/globals.rb +64 -0
  53. data/lib/MrMurano/commands/init.rb +377 -155
  54. data/lib/MrMurano/commands/keystore.rb +92 -82
  55. data/lib/MrMurano/commands/link.rb +300 -0
  56. data/lib/MrMurano/commands/login.rb +74 -11
  57. data/lib/MrMurano/commands/logs.rb +63 -32
  58. data/lib/MrMurano/commands/mock.rb +57 -29
  59. data/lib/MrMurano/commands/password.rb +57 -39
  60. data/lib/MrMurano/commands/postgresql.rb +127 -94
  61. data/lib/MrMurano/commands/settings.rb +203 -0
  62. data/lib/MrMurano/commands/show.rb +79 -38
  63. data/lib/MrMurano/commands/solution.rb +423 -5
  64. data/lib/MrMurano/commands/solution_picker.rb +547 -0
  65. data/lib/MrMurano/commands/status.rb +195 -61
  66. data/lib/MrMurano/commands/sync.rb +78 -39
  67. data/lib/MrMurano/commands/timeseries.rb +71 -55
  68. data/lib/MrMurano/commands/tsdb.rb +113 -87
  69. data/lib/MrMurano/commands/usage.rb +57 -15
  70. data/lib/MrMurano/hash.rb +100 -10
  71. data/lib/MrMurano/http.rb +187 -43
  72. data/lib/MrMurano/makePretty.rb +16 -14
  73. data/lib/MrMurano/optparse.rb +2178 -0
  74. data/lib/MrMurano/progress.rb +138 -0
  75. data/lib/MrMurano/schema/resource-v1.0.0.yaml +32 -0
  76. data/lib/MrMurano/template/projectFile.murano.erb +16 -13
  77. data/lib/MrMurano/verbosing.rb +166 -29
  78. data/lib/MrMurano/version.rb +30 -1
  79. data/spec/Account-Passwords_spec.rb +21 -4
  80. data/spec/Account_spec.rb +69 -146
  81. data/spec/Business_spec.rb +290 -0
  82. data/spec/ConfigFile_spec.rb +1 -0
  83. data/spec/ConfigMigrate_spec.rb +12 -8
  84. data/spec/Config_spec.rb +40 -34
  85. data/spec/Content_spec.rb +363 -0
  86. data/spec/GatewayBase_spec.rb +54 -0
  87. data/spec/GatewayDevice_spec.rb +321 -0
  88. data/spec/GatewayResource_spec.rb +266 -0
  89. data/spec/GatewaySettings_spec.rb +120 -0
  90. data/spec/Http_spec.rb +18 -8
  91. data/spec/Mock_spec.rb +2 -2
  92. data/spec/ProjectFile_spec.rb +25 -14
  93. data/spec/Setting_spec.rb +110 -0
  94. data/spec/Solution-ServiceConfig_spec.rb +44 -5
  95. data/spec/Solution-ServiceEventHandler_spec.rb +23 -14
  96. data/spec/Solution-ServiceModules_spec.rb +47 -37
  97. data/spec/Solution-UsersRoles_spec.rb +10 -8
  98. data/spec/Solution_spec.rb +17 -8
  99. data/spec/SyncRoot_spec.rb +46 -20
  100. data/spec/SyncUpDown_spec.rb +437 -201
  101. data/spec/Verbosing_spec.rb +12 -4
  102. data/spec/{Solution-Cors_spec.rb → Webservice-Cors_spec.rb} +23 -20
  103. data/spec/{Solution-Endpoint_spec.rb → Webservice-Endpoint_spec.rb} +43 -41
  104. data/spec/{Solution-File_spec.rb → Webservice-File_spec.rb} +44 -33
  105. data/spec/Webservice-Setting_spec.rb +89 -0
  106. data/spec/_workspace.rb +4 -4
  107. data/spec/cmd_business_spec.rb +9 -4
  108. data/spec/cmd_common.rb +44 -1
  109. data/spec/cmd_content_spec.rb +43 -17
  110. data/spec/cmd_cors_spec.rb +4 -4
  111. data/spec/cmd_device_spec.rb +61 -16
  112. data/spec/cmd_domain_spec.rb +29 -6
  113. data/spec/cmd_init_spec.rb +281 -126
  114. data/spec/cmd_keystore_spec.rb +3 -3
  115. data/spec/cmd_link_spec.rb +98 -0
  116. data/spec/cmd_password_spec.rb +1 -1
  117. data/spec/cmd_setting_application_spec.rb +260 -0
  118. data/spec/cmd_setting_product_spec.rb +220 -0
  119. data/spec/cmd_status_spec.rb +223 -114
  120. data/spec/cmd_syncdown_spec.rb +115 -35
  121. data/spec/cmd_syncup_spec.rb +68 -15
  122. data/spec/cmd_usage_spec.rb +35 -8
  123. data/spec/fixtures/dumped_config +6 -4
  124. data/spec/fixtures/gateway_resource_files/resources.notyaml +12 -0
  125. data/spec/fixtures/gateway_resource_files/resources.yaml +13 -0
  126. data/spec/fixtures/gateway_resource_files/resources_invalid.yaml +13 -0
  127. data/spec/fixtures/mrmuranorc_deleted_bob +0 -2
  128. data/spec/fixtures/product_spec_files/lightbulb.yaml +20 -13
  129. data/spec/fixtures/{syncable_content → syncable_conflict}/services/devdata.lua +1 -1
  130. data/spec/fixtures/{syncable_content → syncable_conflict}/services/timers.lua +0 -0
  131. data/spec/spec_helper.rb +5 -0
  132. metadata +262 -171
  133. data/bin/mr +0 -8
  134. data/lib/MrMurano/Product-1P-Device.rb +0 -145
  135. data/lib/MrMurano/Product-Resources.rb +0 -205
  136. data/lib/MrMurano/Product.rb +0 -358
  137. data/lib/MrMurano/Solution-Cors.rb +0 -47
  138. data/lib/MrMurano/Solution-Endpoint.rb +0 -191
  139. data/lib/MrMurano/Solution-File.rb +0 -166
  140. data/lib/MrMurano/commands/assign.rb +0 -57
  141. data/lib/MrMurano/commands/businessList.rb +0 -45
  142. data/lib/MrMurano/commands/product.rb +0 -14
  143. data/lib/MrMurano/commands/productCreate.rb +0 -39
  144. data/lib/MrMurano/commands/productDelete.rb +0 -33
  145. data/lib/MrMurano/commands/productDevice.rb +0 -87
  146. data/lib/MrMurano/commands/productDeviceIdCmds.rb +0 -89
  147. data/lib/MrMurano/commands/productList.rb +0 -45
  148. data/lib/MrMurano/commands/productWrite.rb +0 -27
  149. data/lib/MrMurano/commands/solutionCreate.rb +0 -41
  150. data/lib/MrMurano/commands/solutionDelete.rb +0 -34
  151. data/lib/MrMurano/commands/solutionList.rb +0 -45
  152. data/spec/ProductBase_spec.rb +0 -113
  153. data/spec/ProductContent_spec.rb +0 -162
  154. data/spec/ProductResources_spec.rb +0 -329
  155. data/spec/Product_1P_Device_spec.rb +0 -202
  156. data/spec/Product_1P_RPC_spec.rb +0 -175
  157. data/spec/Product_spec.rb +0 -153
  158. data/spec/Solution-ServiceDevice_spec.rb +0 -176
  159. data/spec/cmd_assign_spec.rb +0 -51
@@ -1,176 +0,0 @@
1
- require 'MrMurano/version'
2
- require 'MrMurano/Solution-ServiceConfig'
3
- require 'tempfile'
4
- require '_workspace'
5
-
6
- RSpec.describe MrMurano::SC_Device do
7
- include_context "WORKSPACE"
8
- before(:example) do
9
- $cfg = MrMurano::Config.new
10
- $cfg.load
11
- $project = MrMurano::ProjectFile.new
12
- $project.load
13
- $cfg['net.host'] = 'bizapi.hosted.exosite.io'
14
- $cfg['solution.id'] = 'XYZ'
15
-
16
- @srv = MrMurano::SC_Device.new
17
- allow(@srv).to receive(:token).and_return("TTTTTTTTTT")
18
- end
19
-
20
- it "initializes" do
21
- uri = @srv.endPoint('/')
22
- expect(uri.to_s).to eq("https://bizapi.hosted.exosite.io/api:1/solution/XYZ/serviceconfig/")
23
- end
24
-
25
- it "lists triggers; with scid lookup" do
26
- body = {:items=>[{
27
- :id => "624098f1",
28
- :name => "Device Gateway Service",
29
- :alias => "XYZ_device",
30
- :solution_id => "XYZ",
31
- :quota => {},
32
- :service => "device",
33
- :status => "ready",
34
- :created_at => "2016-07-13T19:24:14.206Z",
35
- :updated_at => "2016-08-01T15:44:11.433Z",
36
- :deleted_at => nil
37
- }], :total=>1}
38
- stub_request(:get, "https://bizapi.hosted.exosite.io/api:1/solution/XYZ/serviceconfig").
39
- with(:headers=>{'Authorization'=>'token TTTTTTTTTT',
40
- 'Content-Type'=>'application/json'}).
41
- to_return(body: body.to_json)
42
-
43
-
44
- body = {
45
- :id => "624098f1",
46
- :alias => "XYZ_device",
47
- :name => "Device Gateway Service",
48
- :status => "ready",
49
- :solution_id => "XYZ",
50
- :service => "device",
51
- :parameters => {
52
- :bizid => "ABCDEFG",
53
- },
54
- :triggers => {
55
- :pid => [
56
- "LMNOP"
57
- ]
58
- },
59
- :quota => {},
60
- :created_at => "2016-07-13T19:24:14.206Z",
61
- :updated_at => "2016-08-01T15:44:11.433Z",
62
- :deleted_at => nil
63
- }
64
- stub_request(:get, "https://bizapi.hosted.exosite.io/api:1/solution/XYZ/serviceconfig/624098f1").
65
- with(:headers => {'Authorization'=>'token TTTTTTTTTT',
66
- 'Content-Type'=>'application/json'}).
67
- to_return(:body => body.to_json)
68
-
69
- ret = @srv.showTriggers
70
- expect(ret).to eq(["LMNOP"])
71
- end
72
-
73
- it "lists triggers" do
74
- expect(@srv).to receive(:scid).once.and_return('624098f1')
75
- body = {
76
- :id => "624098f1",
77
- :alias => "XYZ_device",
78
- :name => "Device Gateway Service",
79
- :status => "ready",
80
- :solution_id => "XYZ",
81
- :service => "device",
82
- :parameters => {
83
- :bizid => "ABCDEFG",
84
- },
85
- :triggers => {
86
- :pid => [
87
- "LMNOP"
88
- ]
89
- },
90
- :quota => {},
91
- :created_at => "2016-07-13T19:24:14.206Z",
92
- :updated_at => "2016-08-01T15:44:11.433Z",
93
- :deleted_at => nil
94
- }
95
- stub_request(:get, "https://bizapi.hosted.exosite.io/api:1/solution/XYZ/serviceconfig/624098f1").
96
- with(:headers => {'Authorization'=>'token TTTTTTTTTT',
97
- 'Content-Type'=>'application/json'}).
98
- to_return(:body => body.to_json)
99
-
100
- ret = @srv.showTriggers
101
- expect(ret).to eq(["LMNOP"])
102
- end
103
-
104
- it "assigns trigger" do
105
- expect(@srv).to receive(:scid).twice.and_return('624098f1')
106
- body = {
107
- :id => "624098f1",
108
- :alias => "XYZ_device",
109
- :name => "Device Gateway Service",
110
- :status => "ready",
111
- :solution_id => "XYZ",
112
- :service => "device",
113
- :parameters => {
114
- :bizid => "ABCDEFG",
115
- },
116
- :triggers => {
117
- :pid => [
118
- "LMNOP"
119
- ]
120
- },
121
- :quota => {},
122
- :created_at => "2016-07-13T19:24:14.206Z",
123
- :updated_at => "2016-08-01T15:44:11.433Z",
124
- :deleted_at => nil
125
- }
126
- stub_request(:get, "https://bizapi.hosted.exosite.io/api:1/solution/XYZ/serviceconfig/624098f1").
127
- with(:headers => {'Authorization'=>'token TTTTTTTTTT',
128
- 'Content-Type'=>'application/json'}).
129
- to_return(:body => body.to_json)
130
-
131
- stub_request(:put, "https://bizapi.hosted.exosite.io/api:1/solution/XYZ/serviceconfig/624098f1").
132
- with(:headers => {'Authorization'=>'token TTTTTTTTTT',
133
- 'Content-Type'=>'application/json'}).
134
- to_return(:body => '')
135
-
136
- ret = @srv.assignTriggers('OTTF')
137
- expect(ret).to eq({})
138
- end
139
-
140
- it "assigns multiple triggers" do
141
- expect(@srv).to receive(:scid).twice.and_return('624098f1')
142
- body = {
143
- :id => "624098f1",
144
- :alias => "XYZ_device",
145
- :name => "Device Gateway Service",
146
- :status => "ready",
147
- :solution_id => "XYZ",
148
- :service => "device",
149
- :parameters => {
150
- :bizid => "ABCDEFG",
151
- },
152
- :triggers => {
153
- :pid => [
154
- "LMNOP"
155
- ]
156
- },
157
- :quota => {},
158
- :created_at => "2016-07-13T19:24:14.206Z",
159
- :updated_at => "2016-08-01T15:44:11.433Z",
160
- :deleted_at => nil
161
- }
162
- stub_request(:get, "https://bizapi.hosted.exosite.io/api:1/solution/XYZ/serviceconfig/624098f1").
163
- with(:headers => {'Authorization'=>'token TTTTTTTTTT',
164
- 'Content-Type'=>'application/json'}).
165
- to_return(:body => body.to_json)
166
-
167
- stub_request(:put, "https://bizapi.hosted.exosite.io/api:1/solution/XYZ/serviceconfig/624098f1").
168
- with(:headers => {'Authorization'=>'token TTTTTTTTTT',
169
- 'Content-Type'=>'application/json'}).
170
- to_return(:body => '')
171
-
172
- ret = @srv.assignTriggers(['OTTF', '1234'])
173
- expect(ret).to eq({})
174
- end
175
- end
176
- # vim: set ai et sw=2 ts=2 :
@@ -1,51 +0,0 @@
1
- require 'fileutils'
2
- require 'open3'
3
- require 'pathname'
4
- require 'cmd_common'
5
-
6
- RSpec.describe 'murano assign', :cmd, :needs_password do
7
- include_context "CI_CMD"
8
-
9
- before(:example) do
10
- @project_name = rname('assigntest')
11
- out, err, status = Open3.capture3(capcmd('murano', 'solution', 'create', @project_name, '--save'))
12
- expect(err).to eq('')
13
- expect(out.chomp).to match(/^[a-zA-Z0-9]+$/)
14
- expect(status.exitstatus).to eq(0)
15
-
16
- out, err, status = Open3.capture3(capcmd('murano', 'product', 'create', @project_name, '--save'))
17
- expect(err).to eq('')
18
- expect(out.chomp).to match(/^[a-zA-Z0-9]+$/)
19
- expect(status.exitstatus).to eq(0)
20
- end
21
- after(:example) do
22
- out, err, status = Open3.capture3(capcmd('murano', 'solution', 'delete', @project_name))
23
- expect(out).to eq('')
24
- expect(err).to eq('')
25
- expect(status.exitstatus).to eq(0)
26
-
27
- out, err, status = Open3.capture3(capcmd('murano', 'product', 'delete', @project_name))
28
- expect(out).to eq('')
29
- expect(err).to eq('')
30
- expect(status.exitstatus).to eq(0)
31
- end
32
-
33
- it "status" do
34
- out, err, status = Open3.capture3(capcmd('murano', 'assign', 'set'))
35
- expect(out).to eq('')
36
- expect(err).to eq('')
37
- expect(status.exitstatus).to eq(0)
38
-
39
- out, err, status = Open3.capture3(capcmd('murano', 'assign', 'list'))
40
- expect(err).to eq('')
41
- olines = out.lines
42
- expect(olines[0]).to match(/^(\+-+){2}\+$/)
43
- expect(olines[1]).to match(/^\| Label\s+\| ModelID\s+\|$/)
44
- expect(olines[2]).to match(/^(\+-+){2}\+$/)
45
- expect(olines[-1]).to match(/^(\+-+){2}\+$/)
46
- expect(status.exitstatus).to eq(0)
47
- end
48
-
49
- end
50
-
51
- # vim: set ai et sw=2 ts=2 :