morpheus-cli 3.3.1.4 → 3.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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/lib/morpheus/api/api_client.rb +28 -0
  3. data/lib/morpheus/api/instance_types_interface.rb +12 -10
  4. data/lib/morpheus/api/instances_interface.rb +4 -0
  5. data/lib/morpheus/api/library_container_scripts_interface.rb +49 -0
  6. data/lib/morpheus/api/library_container_templates_interface.rb +49 -0
  7. data/lib/morpheus/api/library_container_types_interface.rb +65 -0
  8. data/lib/morpheus/api/library_container_upgrades_interface.rb +66 -0
  9. data/lib/morpheus/api/library_instance_types_interface.rb +59 -0
  10. data/lib/morpheus/api/library_layouts_interface.rb +65 -0
  11. data/lib/morpheus/api/servers_interface.rb +4 -0
  12. data/lib/morpheus/api/user_sources_interface.rb +120 -0
  13. data/lib/morpheus/api/virtual_images_interface.rb +7 -0
  14. data/lib/morpheus/cli.rb +12 -1
  15. data/lib/morpheus/cli/accounts.rb +35 -9
  16. data/lib/morpheus/cli/cli_command.rb +82 -2
  17. data/lib/morpheus/cli/curl_command.rb +1 -1
  18. data/lib/morpheus/cli/echo_command.rb +1 -1
  19. data/lib/morpheus/cli/hosts.rb +40 -14
  20. data/lib/morpheus/cli/instance_types.rb +106 -64
  21. data/lib/morpheus/cli/instances.rb +39 -15
  22. data/lib/morpheus/cli/library.rb +1 -1184
  23. data/lib/morpheus/cli/library_container_scripts_command.rb +437 -0
  24. data/lib/morpheus/cli/library_container_templates_command.rb +397 -0
  25. data/lib/morpheus/cli/library_container_types_command.rb +653 -0
  26. data/lib/morpheus/cli/library_instance_types_command.rb +491 -0
  27. data/lib/morpheus/cli/library_layouts_command.rb +650 -0
  28. data/lib/morpheus/cli/library_option_lists_command.rb +476 -0
  29. data/lib/morpheus/cli/library_option_types_command.rb +549 -0
  30. data/lib/morpheus/cli/library_upgrades_command.rb +604 -0
  31. data/lib/morpheus/cli/mixins/library_helper.rb +123 -0
  32. data/lib/morpheus/cli/mixins/print_helper.rb +21 -22
  33. data/lib/morpheus/cli/mixins/provisioning_helper.rb +56 -11
  34. data/lib/morpheus/cli/network_services_command.rb +1 -1
  35. data/lib/morpheus/cli/option_types.rb +12 -2
  36. data/lib/morpheus/cli/power_scheduling_command.rb +1 -1
  37. data/lib/morpheus/cli/shell.rb +120 -22
  38. data/lib/morpheus/cli/sleep_command.rb +45 -0
  39. data/lib/morpheus/cli/user_sources_command.rb +963 -0
  40. data/lib/morpheus/cli/users.rb +33 -2
  41. data/lib/morpheus/cli/version.rb +1 -1
  42. data/lib/morpheus/cli/version_command.rb +1 -1
  43. data/lib/morpheus/cli/virtual_images.rb +93 -39
  44. data/lib/morpheus/formatters.rb +37 -27
  45. data/lib/morpheus/terminal.rb +1 -1
  46. metadata +20 -2
@@ -22,6 +22,10 @@ class Morpheus::ServersInterface < Morpheus::APIClient
22
22
  execute(opts)
23
23
  end
24
24
 
25
+ def list(options={})
26
+ get(options)
27
+ end
28
+
25
29
  def create(options)
26
30
  url = "#{@base_url}/api/servers"
27
31
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
@@ -0,0 +1,120 @@
1
+ require 'morpheus/api/api_client'
2
+
3
+ class Morpheus::UserSourcesInterface < Morpheus::APIClient
4
+ def initialize(access_token, refresh_token, expires_at = nil, base_url=nil)
5
+ @access_token = access_token
6
+ @refresh_token = refresh_token
7
+ @base_url = base_url
8
+ @expires_at = expires_at
9
+ end
10
+
11
+ def get(account_id, id)
12
+ raise "#{self.class}.get() passed a blank id!" if id.to_s == ''
13
+ url = build_url(account_id, id)
14
+ headers = { params: {}, authorization: "Bearer #{@access_token}" }
15
+ opts = {method: :get, url: url, timeout: 10, headers: headers}
16
+ execute(opts)
17
+ end
18
+
19
+ def list(account_id, options={})
20
+ url = build_url(account_id)
21
+ headers = { params: {}, authorization: "Bearer #{@access_token}" }
22
+ headers[:params].merge!(options)
23
+ opts = {method: :get, url: url, timeout: 10, headers: headers}
24
+ execute(opts)
25
+ end
26
+
27
+ # def feature_permissions(account_id, id)
28
+ # url = build_url(account_id, id) + "/feature-permissions"
29
+ # headers = { params: {}, authorization: "Bearer #{@access_token}" }
30
+ # opts = {method: :get, url: url, timeout: 10, headers: headers}
31
+ # execute(opts)
32
+ # end
33
+
34
+ # def available_roles(account_id, id=nil, options={})
35
+ # url = build_url(account_id, id) + "/available-roles"
36
+ # headers = { params: {}, authorization: "Bearer #{@access_token}" }
37
+ # headers[:params].merge!(options)
38
+ # opts = {method: :get, url: url, timeout: 10, headers: headers}
39
+ # execute(opts)
40
+ # end
41
+
42
+ def create(account_id, options)
43
+ url = build_url(account_id)
44
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
45
+ payload = options
46
+ opts = {method: :post, url: url, timeout: 10, headers: headers, payload: payload.to_json}
47
+ execute(opts)
48
+ end
49
+
50
+ def update(account_id, id, options)
51
+ url = build_url(account_id, id)
52
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
53
+ payload = options
54
+ opts = {method: :put, url: url, timeout: 10, headers: headers, payload: payload.to_json}
55
+ execute(opts)
56
+ end
57
+
58
+ def destroy(account_id, id)
59
+ url = build_url(account_id, id)
60
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
61
+ opts = {method: :delete, url: url, timeout: 10, headers: headers}
62
+ execute(opts)
63
+ end
64
+
65
+ def activate(account_id, id, options)
66
+ url = build_url(account_id, id) + "/activate"
67
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
68
+ payload = options
69
+ opts = {method: :put, url: url, timeout: 10, headers: headers, payload: payload.to_json}
70
+ execute(opts)
71
+ end
72
+
73
+ def deactivate(account_id, id, options)
74
+ url = build_url(account_id, id) + "/deactivate"
75
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
76
+ payload = options
77
+ opts = {method: :put, url: url, timeout: 10, headers: headers, payload: payload.to_json}
78
+ execute(opts)
79
+ end
80
+
81
+ def update_subdomain(account_id, id, options)
82
+ url = build_url(account_id, id) + "/subdomain"
83
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
84
+ payload = options
85
+ opts = {method: :put, url: url, timeout: 10, headers: headers, payload: payload.to_json}
86
+ execute(opts)
87
+ end
88
+
89
+ # move me to my own interface class
90
+ def list_types(params={})
91
+ url = "#{@base_url}/api/user-source-types"
92
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
93
+ opts = {method: :get, url: url, timeout: 10, headers: headers}
94
+ execute(opts)
95
+ end
96
+
97
+ # move me to my own interface class
98
+ def get_type(id, params={})
99
+ url = "#{@base_url}/api/user-source-types/#{id}"
100
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
101
+ opts = {method: :get, url: url, timeout: 10, headers: headers}
102
+ execute(opts)
103
+ end
104
+
105
+ private
106
+
107
+ def build_url(account_id=nil, user_id=nil)
108
+ url = "#{@base_url}/api"
109
+ if account_id
110
+ url += "/accounts/#{account_id}/user-sources"
111
+ else
112
+ url += "/user-sources"
113
+ end
114
+ if user_id
115
+ url += "/#{user_id}"
116
+ end
117
+ url
118
+ end
119
+
120
+ end
@@ -71,6 +71,13 @@ class Morpheus::VirtualImagesInterface < Morpheus::APIClient
71
71
  execute(method: :post, url: url, headers: headers, payload: payload)
72
72
  end
73
73
 
74
+ def upload_by_url(id, file_url)
75
+ url = "#{@base_url}/api/virtual-images/#{id}/upload"
76
+ headers = { :params => {}, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/octet-stream'}
77
+ headers[:params][:url] = file_url
78
+ execute(method: :post, url: url, headers: headers)
79
+ end
80
+
74
81
  def destroy_file(id, filename)
75
82
  url = "#{@base_url}/api/virtual-images/#{id}/files"
76
83
  #url = "#{@base_url}/api/virtual-images/#{id}/files/#{filename}"
@@ -49,6 +49,7 @@ module Morpheus
49
49
  # shell scripting commands
50
50
  load 'morpheus/cli/source_command.rb'
51
51
  load 'morpheus/cli/echo_command.rb'
52
+ load 'morpheus/cli/sleep_command.rb'
52
53
  load 'morpheus/cli/coloring_command.rb'
53
54
  load 'morpheus/cli/log_level_command.rb'
54
55
  load 'morpheus/cli/ssl_verification_command.rb'
@@ -81,10 +82,20 @@ module Morpheus
81
82
  load 'morpheus/cli/accounts.rb'
82
83
  load 'morpheus/cli/users.rb'
83
84
  load 'morpheus/cli/user_groups_command.rb'
85
+ load 'morpheus/cli/user_sources_command.rb'
84
86
  load 'morpheus/cli/roles.rb'
85
87
  load 'morpheus/cli/key_pairs.rb'
86
88
  load 'morpheus/cli/virtual_images.rb'
87
- load 'morpheus/cli/library.rb'
89
+ # load 'morpheus/cli/library.rb' # gone until we collapse these again
90
+ load 'morpheus/cli/library_instance_types_command.rb'
91
+ load 'morpheus/cli/library_layouts_command.rb'
92
+ load 'morpheus/cli/library_upgrades_command.rb'
93
+ load 'morpheus/cli/library_container_types_command.rb'
94
+ load 'morpheus/cli/library_container_scripts_command.rb'
95
+ load 'morpheus/cli/library_container_templates_command.rb'
96
+ load 'morpheus/cli/library_option_types_command.rb'
97
+ load 'morpheus/cli/library_option_lists_command.rb'
98
+
88
99
  load 'morpheus/cli/version_command.rb'
89
100
  load 'morpheus/cli/alias_command.rb'
90
101
  # todo: combine checks, incidents, apps, and goups under monitoring?
@@ -10,7 +10,7 @@ require 'json'
10
10
  class Morpheus::Cli::Accounts
11
11
  include Morpheus::Cli::CliCommand
12
12
  include Morpheus::Cli::AccountsHelper
13
- register_subcommands :list, :get, :add, :update, :remove
13
+ register_subcommands :list, :count, :get, :add, :update, :remove
14
14
  alias_subcommand :details, :get
15
15
  set_default_subcommand :list
16
16
 
@@ -31,17 +31,16 @@ class Morpheus::Cli::Accounts
31
31
 
32
32
  def list(args)
33
33
  options = {}
34
- optparse = OptionParser.new do|opts|
34
+ optparse = Morpheus::Cli::OptionParser.new do |opts|
35
35
  opts.banner = subcommand_usage()
36
- build_common_options(opts, options, [:list, :json, :remote, :dry_run])
36
+ build_common_options(opts, options, [:list, :query, :json, :remote, :dry_run])
37
+ opts.footer = "List accounts."
37
38
  end
38
39
  optparse.parse!(args)
39
40
  connect(options)
40
41
  begin
41
42
  params = {}
42
- [:phrase, :offset, :max, :sort, :direction].each do |k|
43
- params[k] = options[k] unless options[k].nil?
44
- end
43
+ params.merge!(parse_list_options(options))
45
44
  if options[:dry_run]
46
45
  print_dry_run @accounts_interface.dry.list(params)
47
46
  return
@@ -54,9 +53,7 @@ class Morpheus::Cli::Accounts
54
53
  else
55
54
  title = "Morpheus Accounts"
56
55
  subtitles = []
57
- if params[:phrase]
58
- subtitles << "Search: #{params[:phrase]}".strip
59
- end
56
+ subtitles += parse_list_subtitles(options)
60
57
  print_h1 title, subtitles
61
58
  if accounts.empty?
62
59
  puts yellow,"No accounts found.",reset
@@ -72,6 +69,35 @@ class Morpheus::Cli::Accounts
72
69
  end
73
70
  end
74
71
 
72
+ def count(args)
73
+ options = {}
74
+ optparse = Morpheus::Cli::OptionParser.new do |opts|
75
+ opts.banner = subcommand_usage("[options]")
76
+ build_common_options(opts, options, [:query, :remote, :dry_run])
77
+ opts.footer = "Get the number of accounts."
78
+ end
79
+ optparse.parse!(args)
80
+ connect(options)
81
+ begin
82
+ params = {}
83
+ params.merge!(parse_list_options(options))
84
+ if options[:dry_run]
85
+ print_dry_run @accounts_interface.dry.list(params)
86
+ return
87
+ end
88
+ json_response = @accounts_interface.list(params)
89
+ # print number only
90
+ if json_response['meta'] && json_response['meta']['total']
91
+ print cyan, json_response['meta']['total'], reset, "\n"
92
+ else
93
+ print yellow, "unknown", reset, "\n"
94
+ end
95
+ rescue RestClient::Exception => e
96
+ print_rest_exception(e, options)
97
+ exit 1
98
+ end
99
+ end
100
+
75
101
  def get(args)
76
102
  options = {}
77
103
  optparse = OptionParser.new do|opts|
@@ -286,6 +286,41 @@ module Morpheus
286
286
  options[:direction] = "desc"
287
287
  end
288
288
 
289
+ # arbitrary query parameters in the format -Q "category=web&phrase=nginx"
290
+ # opts.on( '-Q', '--query PARAMS', "Query parameters. PARAMS format is 'phrase=foobar&category=web'" ) do |val|
291
+ # options[:query_filters_raw] = val
292
+ # options[:query_filters] = {}
293
+ # # todo: smarter parsing
294
+ # val.split('&').each do |filter|
295
+ # k, v = filter.split('=')
296
+ # # allow "woot:true instead of woot=true"
297
+ # if (k.include?(":") && v == nil)
298
+ # k, v = k.split(":")
299
+ # end
300
+ # if (!k.to_s.empty?)
301
+ # options[:query_filters][k.to_s.strip] = v.to_s.strip
302
+ # end
303
+ # end
304
+ # end
305
+
306
+ when :query, :query_filters
307
+ # arbitrary query parameters in the format -Q "category=web&phrase=nginx"
308
+ opts.on( '-Q', '--query PARAMS', "Query parameters. PARAMS format is 'phrase=foobar&category=web'" ) do |val|
309
+ options[:query_filters_raw] = val
310
+ options[:query_filters] = {}
311
+ # todo: smarter parsing
312
+ val.split('&').each do |filter|
313
+ k, v = filter.split('=')
314
+ # allow "woot:true instead of woot=true"
315
+ if (k.include?(":") && v == nil)
316
+ k, v = k.split(":")
317
+ end
318
+ if (!k.to_s.empty?)
319
+ options[:query_filters][k.to_s.strip] = v.to_s.strip
320
+ end
321
+ end
322
+ end
323
+
289
324
  when :last_updated
290
325
  # opts.on("--last-updated TIME", Time, "Filter by gte last updated") do |time|
291
326
  opts.on("--last-updated TIME", String, "Filter by Last Updated (gte)") do |time|
@@ -399,7 +434,7 @@ module Morpheus
399
434
  end
400
435
 
401
436
  when :fields
402
- opts.on('--fields x,y,z', Array, "Filter Output to a limited set of fields. Default is all fields.") do |val|
437
+ opts.on('-F', '--fields x,y,z', Array, "Filter Output to a limited set of fields. Default is all fields.") do |val|
403
438
  options[:include_fields] = val
404
439
  end
405
440
 
@@ -425,7 +460,7 @@ module Morpheus
425
460
  Term::ANSIColor::coloring = false
426
461
  end
427
462
 
428
- opts.on('-V','--debug', "Print extra output for debugging. ") do
463
+ opts.on('-V','--debug', "Print extra output for debugging.") do
429
464
  options[:debug] = true
430
465
  Morpheus::Logging.set_log_level(Morpheus::Logging::Logger::DEBUG)
431
466
  ::RestClient.log = Morpheus::Logging.debug? ? Morpheus::Logging::DarkPrinter.instance : nil
@@ -656,6 +691,51 @@ module Morpheus
656
691
  true
657
692
  end
658
693
 
694
+ # parse the parameters provided by the common :list options
695
+ # returns Hash of params the format {"phrase": => "foobar", "max": 100}
696
+ def parse_list_options(options={})
697
+ list_params = {}
698
+ [:phrase, :offset, :max, :sort, :direction, :lastUpdated].each do |k|
699
+ if options.key?(k)
700
+ list_params[k.to_s] = options[k]
701
+ elsif options.key?(k.to_s)
702
+ list_params[k.to_s] = options[k.to_s]
703
+ end
704
+ end
705
+ # arbitrary filters
706
+ if options[:query_filters]
707
+ options[:query_filters].each do |k, v|
708
+ if k
709
+ list_params[k] = v
710
+ end
711
+ end
712
+ end
713
+ return list_params
714
+ end
715
+
716
+ # parse the subtitles provided by the common :list options
717
+ # returns Array of subtitles as strings in the format ["Phrase: blah", "Max: 100"]
718
+ def parse_list_subtitles(options={})
719
+ subtitles = []
720
+ list_params = {}
721
+ [:phrase, :offset, :max, :sort, :direction, :lastUpdated].each do |k|
722
+ if options.key?(k)
723
+ subtitles << "#{k.to_s}: #{options[k]}"
724
+ elsif options.key?(k.to_s)
725
+ subtitles << "#{k.to_s}: #{options[k.to_s]}"
726
+ end
727
+ end
728
+ # arbitrary filters
729
+ if options[:query_filters]
730
+ formatted_filters = options[:query_filters].collect {|k,v| "#{k.to_s}=#{v}" }.join('&')
731
+ subtitles << "Query: #{formatted_filters}"
732
+ # options[:query_filters].each do |k, v|
733
+ # subtitles << "#{k.to_s}: #{v}"
734
+ # end
735
+ end
736
+ return subtitles
737
+ end
738
+
659
739
  module ClassMethods
660
740
 
661
741
  def set_command_name(cmd_name)
@@ -21,7 +21,7 @@ class Morpheus::Cli::CurlCommand
21
21
  This invokes the `curl` command with url "appliance_url/api/$0
22
22
  and includes the authorization header -H "Authorization: Bearer access_token"
23
23
  Arguments for the curl command should be passed after ' -- '
24
- Example: morpheus curl "/api/servers/1" -- -XGET -sV
24
+ Example: morpheus curl "/api/servers/1" -- -XGET -sv
25
25
 
26
26
  EOT
27
27
  end
@@ -50,7 +50,7 @@ class Morpheus::Cli::Echo
50
50
  end
51
51
  # print out
52
52
  print cyan + out + reset
53
- return true
53
+ return 0
54
54
  end
55
55
 
56
56
  end
@@ -10,7 +10,7 @@ require 'json'
10
10
  class Morpheus::Cli::Hosts
11
11
  include Morpheus::Cli::CliCommand
12
12
  include Morpheus::Cli::ProvisioningHelper
13
- register_subcommands :list, :get, :stats, :add, :remove, :logs, :start, :stop, :resize, :run_workflow, {:'make-managed' => :install_agent}, :upgrade_agent, :server_types
13
+ register_subcommands :list, :count, :get, :stats, :add, :remove, :logs, :start, :stop, :resize, :run_workflow, {:'make-managed' => :install_agent}, :upgrade_agent, :server_types
14
14
  alias_subcommand :details, :get
15
15
  set_default_subcommand :list
16
16
 
@@ -36,7 +36,7 @@ class Morpheus::Cli::Hosts
36
36
  def list(args)
37
37
  options = {}
38
38
  params = {}
39
- optparse = OptionParser.new do|opts|
39
+ optparse = Morpheus::Cli::OptionParser.new do |opts|
40
40
  opts.banner = subcommand_usage()
41
41
  opts.on( '-g', '--group GROUP', "Group Name or ID" ) do |val|
42
42
  options[:group] = val
@@ -81,7 +81,8 @@ class Morpheus::Cli::Hosts
81
81
  opts.on( '', '--noagent', "Show only Servers with No agent" ) do |val|
82
82
  params[:agentInstalled] = false
83
83
  end
84
- build_common_options(opts, options, [:list, :json, :yaml, :csv, :fields, :dry_run, :remote])
84
+ build_common_options(opts, options, [:list, :query, :json, :yaml, :csv, :fields, :dry_run, :remote])
85
+ opts.footer = "List hosts."
85
86
  end
86
87
  optparse.parse!(args)
87
88
  connect(options)
@@ -98,15 +99,13 @@ class Morpheus::Cli::Hosts
98
99
  params['zoneId'] = cloud['id']
99
100
  end
100
101
 
101
- [:phrase, :offset, :max, :sort, :direction].each do |k|
102
- params[k] = options[k] unless options[k].nil?
103
- end
102
+ params.merge!(parse_list_options(options))
104
103
 
105
104
  if options[:dry_run]
106
- print_dry_run @servers_interface.dry.get(params)
105
+ print_dry_run @servers_interface.dry.list(params)
107
106
  return
108
107
  end
109
- json_response = @servers_interface.get(params)
108
+ json_response = @servers_interface.list(params)
110
109
 
111
110
  if options[:json]
112
111
  if options[:include_fields]
@@ -140,9 +139,7 @@ class Morpheus::Cli::Hosts
140
139
  if cloud
141
140
  subtitles << "Cloud: #{cloud['name']}".strip
142
141
  end
143
- if params[:phrase]
144
- subtitles << "Search: #{params[:phrase]}".strip
145
- end
142
+ subtitles += parse_list_subtitles(options)
146
143
  print_h1 title, subtitles
147
144
  if servers.empty?
148
145
  print yellow,"No hosts found.",reset,"\n"
@@ -206,6 +203,35 @@ class Morpheus::Cli::Hosts
206
203
  end
207
204
  end
208
205
 
206
+ def count(args)
207
+ options = {}
208
+ optparse = Morpheus::Cli::OptionParser.new do |opts|
209
+ opts.banner = subcommand_usage("[options]")
210
+ build_common_options(opts, options, [:query, :remote, :dry_run])
211
+ opts.footer = "Get the number of hosts."
212
+ end
213
+ optparse.parse!(args)
214
+ connect(options)
215
+ begin
216
+ params = {}
217
+ params.merge!(parse_list_options(options))
218
+ if options[:dry_run]
219
+ print_dry_run @servers_interface.dry.list(params)
220
+ return
221
+ end
222
+ json_response = @servers_interface.list(params)
223
+ # print number only
224
+ if json_response['meta'] && json_response['meta']['total']
225
+ print cyan, json_response['meta']['total'], reset, "\n"
226
+ else
227
+ print yellow, "unknown", reset, "\n"
228
+ end
229
+ rescue RestClient::Exception => e
230
+ print_rest_exception(e, options)
231
+ exit 1
232
+ end
233
+ end
234
+
209
235
  def get(args)
210
236
  options = {}
211
237
  optparse = OptionParser.new do|opts|
@@ -230,7 +256,7 @@ class Morpheus::Cli::Hosts
230
256
  if arg.to_s =~ /\A\d{1,}\Z/
231
257
  print_dry_run @servers_interface.dry.get(arg.to_i)
232
258
  else
233
- print_dry_run @servers_interface.dry.get({name: arg})
259
+ print_dry_run @servers_interface.dry.list({name: arg})
234
260
  end
235
261
  return
236
262
  end
@@ -310,7 +336,7 @@ class Morpheus::Cli::Hosts
310
336
  if arg.to_s =~ /\A\d{1,}\Z/
311
337
  print_dry_run @servers_interface.dry.get(arg.to_i)
312
338
  else
313
- print_dry_run @servers_interface.dry.get({name: arg})
339
+ print_dry_run @servers_interface.dry.list({name: arg})
314
340
  end
315
341
  return
316
342
  end
@@ -970,7 +996,7 @@ class Morpheus::Cli::Hosts
970
996
  end
971
997
 
972
998
  def find_host_by_name(name)
973
- results = @servers_interface.get({name: name})
999
+ results = @servers_interface.list({name: name})
974
1000
  if results['servers'].empty?
975
1001
  print_red_alert "Server not found by name #{name}"
976
1002
  exit 1