MuranoCLI 3.2.0.beta.1 → 3.2.0.beta.5

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.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -1
  3. data/.trustme.plugin +137 -0
  4. data/.trustme.sh +217 -117
  5. data/.trustme.vim +9 -3
  6. data/Gemfile +9 -3
  7. data/MuranoCLI.gemspec +8 -5
  8. data/Rakefile +1 -0
  9. data/dockers/Dockerfile.2.2.9 +6 -3
  10. data/dockers/Dockerfile.2.3.6 +6 -3
  11. data/dockers/Dockerfile.2.4.3 +6 -3
  12. data/dockers/Dockerfile.2.5.0 +6 -3
  13. data/dockers/Dockerfile.GemRelease +10 -8
  14. data/dockers/Dockerfile.m4 +23 -5
  15. data/dockers/docker-test.sh +65 -28
  16. data/docs/completions/murano_completion-bash +751 -57
  17. data/docs/develop.rst +10 -9
  18. data/lib/MrMurano/AccountBase.rb +95 -6
  19. data/lib/MrMurano/Commander-Entry.rb +9 -4
  20. data/lib/MrMurano/Config-Migrate.rb +2 -0
  21. data/lib/MrMurano/Config.rb +94 -26
  22. data/lib/MrMurano/Content.rb +1 -1
  23. data/lib/MrMurano/Exchange.rb +77 -42
  24. data/lib/MrMurano/Gateway.rb +1 -1
  25. data/lib/MrMurano/HttpAuthed.rb +20 -7
  26. data/lib/MrMurano/Logs.rb +10 -1
  27. data/lib/MrMurano/ProjectFile.rb +1 -1
  28. data/lib/MrMurano/ReCommander.rb +129 -73
  29. data/lib/MrMurano/Solution-ServiceConfig.rb +18 -11
  30. data/lib/MrMurano/Solution-Services.rb +78 -50
  31. data/lib/MrMurano/Solution-Users.rb +1 -1
  32. data/lib/MrMurano/Solution.rb +13 -63
  33. data/lib/MrMurano/SyncUpDown-Core.rb +185 -77
  34. data/lib/MrMurano/SyncUpDown-Item.rb +29 -4
  35. data/lib/MrMurano/SyncUpDown.rb +11 -11
  36. data/lib/MrMurano/Webservice-Cors.rb +1 -1
  37. data/lib/MrMurano/Webservice-Endpoint.rb +28 -17
  38. data/lib/MrMurano/Webservice-File.rb +103 -43
  39. data/lib/MrMurano/commands/domain.rb +1 -0
  40. data/lib/MrMurano/commands/element.rb +585 -0
  41. data/lib/MrMurano/commands/exchange.rb +211 -204
  42. data/lib/MrMurano/commands/gb.rb +1 -0
  43. data/lib/MrMurano/commands/globals.rb +17 -7
  44. data/lib/MrMurano/commands/init.rb +115 -101
  45. data/lib/MrMurano/commands/keystore.rb +1 -1
  46. data/lib/MrMurano/commands/logs.rb +2 -1
  47. data/lib/MrMurano/commands/postgresql.rb +17 -7
  48. data/lib/MrMurano/commands/service.rb +572 -0
  49. data/lib/MrMurano/commands/show.rb +7 -3
  50. data/lib/MrMurano/commands/solution.rb +2 -1
  51. data/lib/MrMurano/commands/solution_picker.rb +31 -15
  52. data/lib/MrMurano/commands/status.rb +205 -169
  53. data/lib/MrMurano/commands/sync.rb +70 -38
  54. data/lib/MrMurano/commands/token.rb +59 -14
  55. data/lib/MrMurano/commands/usage.rb +1 -0
  56. data/lib/MrMurano/commands.rb +2 -0
  57. data/lib/MrMurano/hash.rb +91 -0
  58. data/lib/MrMurano/http.rb +55 -6
  59. data/lib/MrMurano/makePretty.rb +47 -0
  60. data/lib/MrMurano/optparse.rb +60 -45
  61. data/lib/MrMurano/variegated/TruthyFalsey.rb +48 -0
  62. data/lib/MrMurano/variegated/ruby_dig.rb +64 -0
  63. data/lib/MrMurano/verbosing.rb +113 -3
  64. data/lib/MrMurano/version.rb +1 -1
  65. data/spec/Account_spec.rb +34 -20
  66. data/spec/Business_spec.rb +12 -9
  67. data/spec/Config_spec.rb +7 -1
  68. data/spec/Content_spec.rb +17 -1
  69. data/spec/GatewayBase_spec.rb +5 -2
  70. data/spec/GatewayDevice_spec.rb +4 -2
  71. data/spec/GatewayResource_spec.rb +4 -1
  72. data/spec/GatewaySettings_spec.rb +4 -1
  73. data/spec/HttpAuthed_spec.rb +73 -0
  74. data/spec/Http_spec.rb +32 -35
  75. data/spec/ProjectFile_spec.rb +1 -1
  76. data/spec/Solution-ServiceConfig_spec.rb +4 -1
  77. data/spec/Solution-ServiceEventHandler_spec.rb +6 -3
  78. data/spec/Solution-ServiceModules_spec.rb +4 -1
  79. data/spec/Solution-UsersRoles_spec.rb +4 -1
  80. data/spec/Solution_spec.rb +4 -1
  81. data/spec/SyncUpDown_spec.rb +1 -1
  82. data/spec/Webservice-Cors_spec.rb +4 -1
  83. data/spec/Webservice-Endpoint_spec.rb +9 -6
  84. data/spec/Webservice-File_spec.rb +17 -4
  85. data/spec/Webservice-Setting_spec.rb +6 -2
  86. data/spec/_workspace.rb +2 -0
  87. data/spec/cmd_common.rb +42 -13
  88. data/spec/cmd_content_spec.rb +17 -7
  89. data/spec/cmd_device_spec.rb +1 -1
  90. data/spec/cmd_domain_spec.rb +2 -2
  91. data/spec/cmd_element_spec.rb +400 -0
  92. data/spec/cmd_exchange_spec.rb +2 -2
  93. data/spec/cmd_init_spec.rb +59 -25
  94. data/spec/cmd_keystore_spec.rb +6 -3
  95. data/spec/cmd_link_spec.rb +10 -5
  96. data/spec/cmd_logs_spec.rb +1 -1
  97. data/spec/cmd_setting_application_spec.rb +18 -15
  98. data/spec/cmd_setting_product_spec.rb +7 -7
  99. data/spec/cmd_status_spec.rb +27 -17
  100. data/spec/cmd_syncdown_application_spec.rb +30 -3
  101. data/spec/cmd_syncdown_both_spec.rb +72 -18
  102. data/spec/cmd_syncup_spec.rb +71 -5
  103. data/spec/cmd_token_spec.rb +2 -2
  104. data/spec/cmd_usage_spec.rb +2 -2
  105. data/spec/dry_run_formatter.rb +27 -0
  106. data/spec/fixtures/dumped_config +8 -0
  107. data/spec/fixtures/exchange_element/element-show.json +1 -0
  108. data/spec/fixtures/exchange_element/swagger-mur-6407__10k.yaml +282 -0
  109. data/spec/fixtures/exchange_element/swagger-mur-6407__20k.yaml +588 -0
  110. data/spec/variegated_TruthyFalsey_spec.rb +29 -0
  111. metadata +51 -25
@@ -0,0 +1,282 @@
1
+ swagger: "2.0"
2
+
3
+ ################################################################################
4
+ # Service Metadata #
5
+ ################################################################################
6
+ info:
7
+ version: "1.0"
8
+ title: Transformer
9
+ description: |
10
+ This service is for Transforming SignalData.
11
+ contact:
12
+ name: Exosite Exosite Exosite Exosite
13
+ email: exosite@exosite.com
14
+
15
+ ################################################################################
16
+ # API Information #
17
+ ################################################################################
18
+
19
+ # A hostname with a valid, signed, and active TSL certificate is required.
20
+ host: transformer-dev.hosted.exosite.io
21
+ basePath: /api/v1
22
+ schemes:
23
+ - https
24
+ consumes:
25
+ - application/json
26
+ produces:
27
+ - application/json
28
+
29
+ ################################################################################
30
+ # Solution lifecycle Events #
31
+ ################################################################################
32
+ # Following Operation should generally be restricted with "x-exosite-restricted: true"
33
+ x-exosite-init: createSolution # Triggered by Murano when this service is enabled in a solution
34
+ x-exosite-info: getSolution # Triggered by Murano to retrieve custom information about the service solution namespace
35
+ x-exosite-update: updateSolution # Triggered by Murano when the solution service configuration is updated
36
+ x-exosite-gc: delSolution # Triggered by Murano when the service is removed from a solution or if the solution is deleted
37
+
38
+ ################################################################################
39
+ # Service Configuration Parameters #
40
+ ################################################################################
41
+ x-exosite-config-parameters:
42
+ - name: maximumTTL
43
+ type: number
44
+ description: Maximum number of times a message can propagate through
45
+ required: true # Indicates this parameter is required during configuration
46
+ - name: authToken
47
+ type: string
48
+ description: This is a placeholder for a potential future feature.
49
+ required: true # the only option that works is true…
50
+ - name: eventURI
51
+ type: string
52
+ description: This is a placeholder for a potential future feature.
53
+ required: true # the only option that works is true…
54
+
55
+ ################################################################################
56
+ # Operations #
57
+ ################################################################################
58
+ paths:
59
+ /:
60
+ get:
61
+ description: Alive check
62
+ operationId: alive
63
+ x-exosite-restricted: true # Indicate that this operation cannot be called from user scripts
64
+ responses:
65
+ "200":
66
+ description: Solution successfully created
67
+ default:
68
+ description: Error
69
+ schema:
70
+ $ref: '#/definitions/ErrorResponse'
71
+
72
+ # Administration endpoint used by Murano solution lifecycle events
73
+ # Those operation uses the "x-exosite-restricted" to prevent the user to access them directly
74
+ /{solution_id}:
75
+ parameters:
76
+ - name: solution_id
77
+ x-exosite-from: solution_id # Indicate this value is injected from the user solution_id
78
+ x-exosite-restricted: true # Indicate the user cannot provide this parameter
79
+ type: string
80
+ in: path
81
+ description: The solution identifier. Set automatically.
82
+ required: true
83
+ post:
84
+ description: Used by Murano to create a solution namespace.
85
+ operationId: createSolution
86
+ x-exosite-restricted: true # Indicate that this operation cannot be called from user scripts
87
+ parameters:
88
+ - name: settings
89
+ in: body
90
+ description: The service settings for a solution.
91
+ required: true
92
+ schema:
93
+ $ref: "#/definitions/SolutionSettings"
94
+ responses:
95
+ "200":
96
+ description: Solution successfully created
97
+ default:
98
+ description: Error
99
+ schema:
100
+ $ref: '#/definitions/ErrorResponse'
101
+ get:
102
+ description: Used by Murano to get the solution settings.
103
+ operationId: getSolution
104
+ responses:
105
+ "200":
106
+ description: Solution settings
107
+ schema:
108
+ $ref: "#/definitions/SolutionInfo"
109
+ default:
110
+ description: Error
111
+ schema:
112
+ $ref: '#/definitions/ErrorResponse'
113
+ put:
114
+ description: Used by Murano to update the solution settings.
115
+ operationId: updateSolution
116
+ x-exosite-restricted: true
117
+ parameters:
118
+ - name: settings
119
+ in: body
120
+ description: The service settings for a solution.
121
+ required: true
122
+ schema:
123
+ $ref: "#/definitions/SolutionSettings"
124
+ responses:
125
+ "205":
126
+ description: Settings updated
127
+ default:
128
+ description: Error
129
+ schema:
130
+ $ref: '#/definitions/ErrorResponse'
131
+ delete:
132
+ description: Used by Murano to remove a solution and clean its namespace.
133
+ operationId: delSolution
134
+ x-exosite-restricted: true
135
+ responses:
136
+ "205":
137
+ description: Solution successfully removed.
138
+ default:
139
+ description: Error
140
+ schema:
141
+ $ref: '#/definitions/ErrorResponse'
142
+
143
+ # Service operations available from scripting
144
+ /{solution_id}/transform:
145
+ parameters:
146
+ - name: solution_id
147
+ type: string
148
+ in: path
149
+ description: The solution identifier. Set automatically by Murano at service call.
150
+ x-exosite-from: solution_id # Indicate this value is injected from the user solution_id
151
+ x-exosite-restricted: true # Indicate the user cannot provide this parameter
152
+ required: true
153
+ post:
154
+ description: Create Transform
155
+ operationId: create
156
+ x-exosite-example: |
157
+ local res = Transformer.create{
158
+ subscribe = {"topic.name"},
159
+ tags = {"asset-42"},
160
+ select = "value * 24"
161
+ }
162
+ -- res.id is the UUID assigned to the new transform.
163
+
164
+ parameters:
165
+ - name: body
166
+ in: body
167
+ description: The Transform to create.
168
+ required: true
169
+ schema:
170
+ $ref: "#/definitions/Transformation"
171
+ responses:
172
+ "200":
173
+ description: Transform successfully saved
174
+ schema:
175
+ type: object
176
+ description: Transformation Id Object
177
+ properties:
178
+ id:
179
+ description: Transform ID
180
+ type: string
181
+ default:
182
+ description: Error
183
+ schema:
184
+ $ref: '#/definitions/ErrorResponse'
185
+ get:
186
+ description: Retrieve Transform from the solution namespace.
187
+ operationId: list
188
+ x-exosite-example: |
189
+
190
+ -- list Transforms with all of a specified tag
191
+ tag1 = "lkj32lk3lkj3"
192
+ tag2 = "lkj32lk3xyds"
193
+ rule = Transformer.list({all={tag1, tag2}})
194
+
195
+ --------------------------------------------------
196
+
197
+ -- list Transforms with any of a specified tag
198
+ tag1 = "lkj32lk3lkj3"
199
+ tag2 = "lkj32lk3xyds"
200
+ rule = Transformer.list({any={tag1, tag2}})
201
+
202
+ --------------------------------------------------
203
+
204
+ -- list Transforms with any of a specified tag and all of another tag
205
+ tag1 = "lkj32lk3lkj3"
206
+ tag2 = "lkj32lk3xyds"
207
+ rule = Transformer.list({any={tag2, tag3}, all={tag1, tag4}})
208
+ -- That is, (tag1 && tag4 && (tag2 || tag3))
209
+
210
+ parameters:
211
+ - name: tags_all
212
+ in: query
213
+ description: If present, only return Transforms with all of the listed tags
214
+ type: array
215
+ items:
216
+ type: string
217
+ - name: tags_any
218
+ in: query
219
+ description: If present, only return Transforms with any of the listed tags
220
+ type: array
221
+ items:
222
+ type: string
223
+ - name: limit
224
+ in: query
225
+ description: Maximum results to return
226
+ type: integer
227
+ - name: offset
228
+ in: query
229
+ description: Offset into results
230
+ type: integer
231
+ responses:
232
+ "200":
233
+ description: Successfully returned the Transforms for this solution
234
+ schema:
235
+ $ref: "#/definitions/TransformationArray"
236
+ default:
237
+ description: Error
238
+ schema:
239
+ $ref: '#/definitions/ErrorResponse'
240
+
241
+ delete:
242
+ description: Delete multiple Transforms by matching tags
243
+ operationId: deleteByTags
244
+ x-exosite-example: |
245
+
246
+ -- delete Transform with all of a specified tag
247
+ tag1 = "lkj32lk3lkj3"
248
+ tag2 = "lkj32lk3xyds"
249
+ rule = Transformer.deleteByTags({all={tag1, tag2}})
250
+
251
+ --------------------------------------------------
252
+
253
+ -- delete Transform with any of a specified tag
254
+ tag1 = "lkj32lk3lkj3"
255
+ tag2 = "lkj32lk3xyds"
256
+ rule = Transformer.deleteByTags({any={tag1, tag2}})
257
+
258
+ --------------------------------------------------
259
+
260
+ -- delete Transform with any of a specified tag and all of another tag
261
+ tag1 = "lkj32lk3lkj3"
262
+ tag2 = "lkj32lk3xyds"
263
+ rule = Transformer.deleteByTags({any={tag2, tag3}, all={tag1, tag4}})
264
+ -- That is, (tag1 && tag4 && (tag2 || tag3))
265
+ parameters:
266
+ - name: all
267
+ in: query
268
+ description: If present, only delete Transforms with all listed tags
269
+ required: false
270
+ type: array
271
+ items:
272
+ type: string
273
+ - name: any
274
+ in: query
275
+ description: Delete Transforms with any listed tags
276
+ required: true
277
+ type: array
278
+ items:
279
+ type: string
280
+ responses:
281
+ "205":
282
+ description