morpheus-cli 5.3.1.1 → 5.3.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a64f6250b5cad8827e2d0e11349e21fbb6fedc974503a79fa9a2b1defb7d381a
4
- data.tar.gz: 6ab1fb279210a5b7a5dce73e19061b82dec7872463e38b5848fb7fe49a6891d3
3
+ metadata.gz: e776b0e0602c4de27079e0796d270009b0d3a592d571a41721ac936c7537b94e
4
+ data.tar.gz: 10f231de3b75dc6a16d5433af35a1cbde2931d1871bf2106040ee49a0812091c
5
5
  SHA512:
6
- metadata.gz: 98e1a3b24ad173eb9d8077ae0e0a9a7602beecf42e370e1bc6be5e82a9a52385f2e749c035273c3057f3b3377dbbf4cd9eee1086131fdda55fe46e296d7d7c86
7
- data.tar.gz: 03c1b3f5059084a7c57e68ed6888174aaca554eea319f85d043ed79752470c1487d0ea946b0e9d10244e894e03061e2266036d40a0d3d86692d0ce0c607c6dfb
6
+ metadata.gz: 893fd73648238a2a360273fef6a44654b0011075401743f6be61ba5f32c487f8bc5c5936f440cbcbb6be99ce05888ef99e453545e7f435e834a54ade3062851a
7
+ data.tar.gz: c558b3e31997546f382b44339183431e6d855be77b82e6c85be623c32dcf3333ae0a34c725b19fb317e308d8ec3ca2963de9f51ceba5b3bd658c7ad013ae9d67
data/Dockerfile CHANGED
@@ -1,5 +1,5 @@
1
1
  FROM ruby:2.5.1
2
2
 
3
- RUN gem install morpheus-cli -v 5.3.1.1
3
+ RUN gem install morpheus-cli -v 5.3.2
4
4
 
5
5
  ENTRYPOINT ["morpheus"]
@@ -2,38 +2,50 @@ require 'morpheus/api/api_client'
2
2
 
3
3
  class Morpheus::OptionTypeListsInterface < Morpheus::APIClient
4
4
 
5
- def get(id)
5
+ def base_path
6
+ "/api/library/option-type-lists"
7
+ end
8
+
9
+ def get(id, params={})
6
10
  raise "#{self.class}.get() passed a blank id!" if id.to_s == ''
7
- url = "#{@base_url}/api/library/option-type-lists/#{id}"
8
- headers = { params: {}, authorization: "Bearer #{@access_token}" }
11
+ url = "#{base_path}/#{id}"
12
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
9
13
  opts = {method: :get, url: url, headers: headers}
10
14
  execute(opts)
11
15
  end
12
16
 
13
17
  def list(params={})
14
- url = "#{@base_url}/api/library/option-type-lists"
18
+ url = "#{base_path}"
15
19
  headers = { params: {}, authorization: "Bearer #{@access_token}" }
16
20
  headers[:params].merge!(params)
17
21
  opts = {method: :get, url: url, headers: headers}
18
22
  execute(opts)
19
23
  end
20
24
 
25
+ def list_items(id, params={})
26
+ raise "#{self.class}.get() passed a blank id!" if id.to_s == ''
27
+ url = "#{base_path}/#{id}/items"
28
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
29
+ opts = {method: :get, url: url, headers: headers}
30
+ execute(opts)
31
+ end
32
+
21
33
  def create(payload)
22
- url = "#{@base_url}/api/library/option-type-lists"
34
+ url = "#{base_path}"
23
35
  headers = { :params => {}, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
24
36
  opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
25
37
  execute(opts)
26
38
  end
27
39
 
28
40
  def update(id, payload)
29
- url = "#{@base_url}/api/library/option-type-lists/#{id}"
41
+ url = "#{base_path}/#{id}"
30
42
  headers = { :params => {}, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
31
43
  opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
32
44
  execute(opts)
33
45
  end
34
46
 
35
47
  def destroy(id)
36
- url = "#{@base_url}/api/library/option-type-lists/#{id}"
48
+ url = "#{base_path}/#{id}"
37
49
  headers = { :params => {}, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
38
50
  opts = {method: :delete, url: url, headers: headers}
39
51
  execute(opts)
@@ -41,10 +41,9 @@ class Morpheus::Cli::LibraryClusterLayoutsCommand
41
41
  opts.footer = "List cluster layouts."
42
42
  end
43
43
  optparse.parse!(args)
44
+ # verify_args!(args:args, optparse:optparse, count:0)
44
45
  if args.count > 0
45
- print_error Morpheus::Terminal.angry_prompt
46
- puts_error "wrong number of arguments, expected 0 and got (#{args.count}) #{args.inspect}\n#{optparse}"
47
- return 1
46
+ options[:phrase] = args.join(" ")
48
47
  end
49
48
  connect(options)
50
49
  begin
@@ -25,12 +25,11 @@ class Morpheus::Cli::LibraryContainerScriptsCommand
25
25
  opts.footer = "List container scripts."
26
26
  end
27
27
  optparse.parse!(args)
28
- connect(options)
28
+ # verify_args!(args:args, optparse:optparse, count:0)
29
29
  if args.count > 0
30
- print_error Morpheus::Terminal.angry_prompt
31
- puts_error "wrong number of arguments, expected 0 and got (#{args.count}) #{args.join(', ')}\n#{optparse}"
32
- return 1
30
+ options[:phrase] = args.join(" ")
33
31
  end
32
+ connect(options)
34
33
  begin
35
34
  # construct payload
36
35
  params.merge!(parse_list_options(options))
@@ -26,6 +26,10 @@ class Morpheus::Cli::LibraryContainerTemplatesCommand
26
26
  build_common_options(opts, options, [:list, :json, :yaml, :csv, :fields, :dry_run, :remote])
27
27
  end
28
28
  optparse.parse!(args)
29
+ # verify_args!(args:args, optparse:optparse, count:0)
30
+ if args.count > 0
31
+ options[:phrase] = args.join(" ")
32
+ end
29
33
  connect(options)
30
34
  begin
31
35
  [:phrase, :offset, :max, :sort, :direction, :lastUpdated].each do |k|
@@ -49,10 +49,9 @@ class Morpheus::Cli::LibraryContainerTypesCommand
49
49
  opts.footer = "List node types."
50
50
  end
51
51
  optparse.parse!(args)
52
+ # verify_args!(args:args, optparse:optparse, count:0)
52
53
  if args.count > 0
53
- print_error Morpheus::Terminal.angry_prompt
54
- puts_error "wrong number of arguments, expected 0 and got (#{args.count}) #{args.inspect}\n#{optparse}"
55
- return 1
54
+ options[:phrase] = args.join(" ")
56
55
  end
57
56
  connect(options)
58
57
  begin
@@ -47,10 +47,9 @@ class Morpheus::Cli::LibraryInstanceTypesCommand
47
47
  opts.footer = "List instance types."
48
48
  end
49
49
  optparse.parse!(args)
50
+ # verify_args!(args:args, optparse:optparse, count:0)
50
51
  if args.count > 0
51
- print_error Morpheus::Terminal.angry_prompt
52
- puts_error "wrong number of arguments, expected 0 and got (#{args.count}) #{args.inspect}\n#{optparse}"
53
- return 1
52
+ options[:phrase] = args.join(" ")
54
53
  end
55
54
  connect(options)
56
55
  begin
@@ -59,6 +59,10 @@ class Morpheus::Cli::LibraryLayoutsCommand
59
59
  opts.footer = "List layouts."
60
60
  end
61
61
  optparse.parse!(args)
62
+ # verify_args!(args:args, optparse:optparse, count:0)
63
+ if args.count > 0
64
+ options[:phrase] = args.join(" ")
65
+ end
62
66
  connect(options)
63
67
  begin
64
68
  # construct payload
@@ -9,7 +9,7 @@ class Morpheus::Cli::LibraryOptionListsCommand
9
9
  include Morpheus::Cli::LibraryHelper
10
10
 
11
11
  set_command_name :'library-option-lists'
12
- register_subcommands :list, :get, :add, :update, :remove
12
+ register_subcommands :list, :get, :list_items, :add, :update, :remove
13
13
 
14
14
  def initialize()
15
15
  # @appliance_name, @appliance_url = Morpheus::Cli::Remote.active_appliance
@@ -35,6 +35,10 @@ class Morpheus::Cli::LibraryOptionListsCommand
35
35
  opts.footer = "List option lists."
36
36
  end
37
37
  optparse.parse!(args)
38
+ # verify_args!(args:args, optparse:optparse, count:0)
39
+ if args.count > 0
40
+ options[:phrase] = args.join(" ")
41
+ end
38
42
  connect(options)
39
43
  begin
40
44
  params = {}
@@ -61,16 +65,14 @@ class Morpheus::Cli::LibraryOptionListsCommand
61
65
  id: option_type_list['id'],
62
66
  name: option_type_list['name'],
63
67
  description: option_type_list['description'],
64
- type: option_type_list['type'],
65
- size: option_type_list['listItems'] ? option_type_list['listItems'].size : ''
68
+ type: ((option_type_list['type'] == 'api') ? "#{option_type_list['type']} (#{option_type_list['apiType']})" : option_type_list['type'])
66
69
  }
67
70
  end
68
71
  columns = [
69
72
  :id,
70
73
  :name,
71
74
  :description,
72
- :type,
73
- :size
75
+ :type
74
76
  ]
75
77
  print cyan
76
78
  print as_pretty_table(rows, columns, options)
@@ -90,8 +92,8 @@ class Morpheus::Cli::LibraryOptionListsCommand
90
92
  optparse = Morpheus::Cli::OptionParser.new do |opts|
91
93
  opts.banner = subcommand_usage("[name]")
92
94
  build_standard_get_options(opts, options)
93
- opts.on(nil,'--no-items', "Do not display List Items") do |val|
94
- options[:no_list_items] = true
95
+ opts.on(nil,'--items', "Load and display option list items") do |val|
96
+ options[:list_items] = true
95
97
  end
96
98
  opts.footer = "Get details about an option list.\n" +
97
99
  "[name] is required. This is the name or id of an option list. Supports 1-N [name] arguments."
@@ -108,20 +110,31 @@ class Morpheus::Cli::LibraryOptionListsCommand
108
110
  end
109
111
 
110
112
  def _get(id, options)
111
-
113
+ params = {}
114
+ params.merge!(parse_query_options(options))
112
115
  begin
113
116
  @option_type_lists_interface.setopts(options)
114
117
  if options[:dry_run]
115
118
  if id.to_s =~ /\A\d{1,}\Z/
116
- print_dry_run @option_type_lists_interface.dry.get(id.to_i)
119
+ print_dry_run @option_type_lists_interface.dry.get(id.to_i, params)
117
120
  else
118
- print_dry_run @option_type_lists_interface.dry.list({name: id})
121
+ print_dry_run @option_type_lists_interface.dry.list(params.merge({name: id}))
119
122
  end
120
123
  return
121
124
  end
122
125
  option_type_list = find_option_type_list_by_name_or_id(id)
123
126
  return 1 if option_type_list.nil?
124
-
127
+ list_items = nil
128
+ if options[:list_items]
129
+ list_items = option_type_list['listItems']
130
+ if list_items.nil?
131
+ begin
132
+ list_items = @option_type_lists_interface.list_items(option_type_list['id'])['listItems']
133
+ rescue => e
134
+ puts_error "Failed to load option list items: #{e.message}"
135
+ end
136
+ end
137
+ end
125
138
  json_response = {'optionTypeList' => option_type_list}
126
139
  render_result = render_with_format(json_response, options, 'optionTypeList')
127
140
  return 0 if render_result
@@ -142,12 +155,14 @@ class Morpheus::Cli::LibraryOptionListsCommand
142
155
  "ID" => 'id',
143
156
  "Name" => 'name',
144
157
  "Description" => 'description',
145
- "Type" => lambda {|it| it['type'].to_s.capitalize },
158
+ "Type" => lambda {|it| it['type'] },
159
+ "API Type" => lambda {|it| it['apiType'] },
146
160
  "Source URL" => 'sourceUrl',
147
161
  "Real Time" => lambda {|it| format_boolean it['realTime'] },
148
162
  "Ignore SSL Errors" => lambda {|it| format_boolean it['ignoreSSLErrors'] },
149
163
  "Source Method" => lambda {|it| it['sourceMethod'].to_s.upcase }
150
164
  }
165
+ option_list_columns.delete("API Type") if option_type_list['type'] != 'api'
151
166
  source_headers = []
152
167
  if option_type_list['config'] && option_type_list['config']['sourceHeaders']
153
168
  source_headers = option_type_list['config']['sourceHeaders'].collect do |header|
@@ -174,12 +189,13 @@ class Morpheus::Cli::LibraryOptionListsCommand
174
189
  print reset,"#{option_type_list['requestScript']}","\n",reset
175
190
  end
176
191
  end
177
- if options[:no_list_items] != true
178
- list_items = option_type_list['listItems']
192
+ if options[:list_items]
193
+ print_h2 "List Items"
179
194
  if list_items && list_items.size > 0
180
- print_h2 "List Items"
181
195
  print as_pretty_table(list_items, [:name, :value], options)
182
196
  print_results_pagination({size: list_items.size, total: list_items.size})
197
+ else
198
+ print cyan,"No list items found.",reset,"\n"
183
199
  end
184
200
  end
185
201
  print reset,"\n"
@@ -189,6 +205,42 @@ class Morpheus::Cli::LibraryOptionListsCommand
189
205
  end
190
206
  end
191
207
 
208
+ def list_items(args)
209
+ params = {}
210
+ options = {}
211
+ optparse = Morpheus::Cli::OptionParser.new do |opts|
212
+ opts.banner = subcommand_usage("[name]")
213
+ build_standard_get_options(opts, options)
214
+ opts.footer = "List items for an option list.\n" +
215
+ "[name] is required. This is the name or id of an option list."
216
+ end
217
+ optparse.parse!(args)
218
+ verify_args!(args:args, optparse:optparse, count:1)
219
+ connect(options)
220
+ option_type_list = find_option_type_list_by_name_or_id(args[0])
221
+ return 1 if option_type_list.nil?
222
+
223
+ params.merge!(parse_list_options(options))
224
+ @option_type_lists_interface.setopts(options)
225
+ if options[:dry_run]
226
+ print_dry_run @option_type_lists_interface.dry.list_items(option_type_list['id'], params)
227
+ return
228
+ end
229
+ json_response = @option_type_lists_interface.list_items(option_type_list['id'], params)
230
+ list_items = json_response['listItems']
231
+ render_response(json_response, options, "listItems") do
232
+ print_h2 "List Items"
233
+ if list_items && list_items.size > 0
234
+ print as_pretty_table(list_items, [:name, :value], options)
235
+ print_results_pagination({size: list_items.size, total: list_items.size})
236
+ else
237
+ print cyan,"No list items found.",reset,"\n"
238
+ end
239
+ print reset,"\n"
240
+ end
241
+ return 0, nil
242
+ end
243
+
192
244
  def add(args)
193
245
  options = {}
194
246
  my_option_types = nil
@@ -373,7 +425,7 @@ class Morpheus::Cli::LibraryOptionListsCommand
373
425
  {'dependsOnCode' => 'optionTypeList.type:rest', 'fieldName' => 'realTime', 'fieldLabel' => 'Real Time', 'type' => 'checkbox', 'defaultValue' => false, 'displayOrder' => 7},
374
426
  {'dependsOnCode' => 'optionTypeList.type:rest', 'fieldName' => 'sourceMethod', 'fieldLabel' => 'Source Method', 'type' => 'select', 'selectOptions' => [{'name' => 'GET', 'value' => 'GET'}, {'name' => 'POST', 'value' => 'POST'}], 'defaultValue' => 'GET', 'required' => true, 'displayOrder' => 8},
375
427
  # sourceHeaders component (is done afterwards manually)
376
- {'dependsOnCode' => 'optionTypeList.type:api', 'fieldName' => 'apiType', 'fieldLabel' => 'Option List', 'type' => 'select', 'optionSource' => 'apiOptionLists', 'required' => true, 'description' => 'The code of the api list to use, eg. clouds, servers, etc.', 'displayOrder' => 9},
428
+ {'dependsOnCode' => 'optionTypeList.type:api', 'fieldName' => 'apiType', 'fieldLabel' => 'Option List', 'type' => 'select', 'optionSource' => 'apiOptionLists', 'required' => true, 'description' => 'The code of the api option list to use, eg. clouds, environments, groups, instances, instance-wiki, networks, servicePlans, resourcePools, securityGroups, servers, server-wiki', 'displayOrder' => 9},
377
429
  {'dependsOnCode' => 'optionTypeList.type:ldap', 'fieldName' => 'sourceUsername', 'fieldLabel' => 'Source Username', 'type' => 'text', 'description' => "An LDAP Username for use when type is 'ldap'.", 'displayOrder' => 10},
378
430
  {'dependsOnCode' => 'optionTypeList.type:ldap', 'fieldName' => 'sourcePassword', 'fieldLabel' => 'Source Username', 'type' => 'text', 'description' => "An LDAP Password for use when type is 'ldap'.", 'displayOrder' => 11},
379
431
  {'dependsOnCode' => 'optionTypeList.type:ldap', 'fieldName' => 'ldapQuery', 'fieldLabel' => 'LDAP Query', 'type' => 'text', 'description' => "LDAP Queries are standard LDAP formatted queries where different objects can be searched. Dependent parameters can be loaded into the query using the <%=phrase%> syntax.", 'displayOrder' => 12},
@@ -35,6 +35,10 @@ class Morpheus::Cli::LibraryOptionTypesCommand
35
35
  opts.footer = "List option types."
36
36
  end
37
37
  optparse.parse!(args)
38
+ # verify_args!(args:args, optparse:optparse, count:0)
39
+ if args.count > 0
40
+ options[:phrase] = args.join(" ")
41
+ end
38
42
  connect(options)
39
43
  begin
40
44
  params = {}
@@ -26,12 +26,11 @@ class Morpheus::Cli::LibrarySpecTemplatesCommand
26
26
  opts.footer = "List spec templates."
27
27
  end
28
28
  optparse.parse!(args)
29
- connect(options)
29
+ # verify_args!(args:args, optparse:optparse, count:0)
30
30
  if args.count > 0
31
- print_error Morpheus::Terminal.angry_prompt
32
- puts_error "wrong number of arguments, expected 0 and got (#{args.count}) #{args.inspect}\n#{optparse}"
33
- return 1
31
+ options[:phrase] = args.join(" ")
34
32
  end
33
+ connect(options)
35
34
  begin
36
35
  # construct payload
37
36
  params.merge!(parse_list_options(options))
@@ -1,6 +1,6 @@
1
1
 
2
2
  module Morpheus
3
3
  module Cli
4
- VERSION = "5.3.1.1"
4
+ VERSION = "5.3.2"
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: morpheus-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.3.1.1
4
+ version: 5.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Estes
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2021-06-21 00:00:00.000000000 Z
14
+ date: 2021-07-12 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler