knife-softlayer 0.4.0 → 0.4.1
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 +5 -13
- data/.gitignore +19 -19
- data/.travis.yml +20 -22
- data/CHANGELOG.md +19 -19
- data/CONTRIBUTING.md +31 -31
- data/CONTRIBUTORS.md +2 -2
- data/Gemfile +4 -4
- data/LICENSE.txt +72 -72
- data/README.md +83 -83
- data/Rakefile +37 -37
- data/docs/cla-corporate.md +133 -133
- data/docs/cla-individual.md +84 -84
- data/examples/datacenter.md +94 -94
- data/examples/flavor.md +58 -58
- data/examples/global_ip.md +22 -22
- data/examples/image.md +34 -34
- data/examples/key_pair.md +56 -56
- data/examples/server.md +82 -81
- data/examples/vlan.md +85 -85
- data/knife-softlayer.gemspec +39 -39
- data/lib/chef/knife/flavor/base.rb +52 -52
- data/lib/chef/knife/softlayer.rb +14 -14
- data/lib/chef/knife/softlayer_base.rb +112 -112
- data/lib/chef/knife/softlayer_datacenter_list.rb +28 -28
- data/lib/chef/knife/softlayer_datacenter_show.rb +45 -45
- data/lib/chef/knife/softlayer_delete.rb +6 -6
- data/lib/chef/knife/softlayer_flavor_list.rb +53 -53
- data/lib/chef/knife/softlayer_global_ip_list.rb +34 -34
- data/lib/chef/knife/softlayer_image_list.rb +26 -26
- data/lib/chef/knife/softlayer_key_pair_create.rb +37 -37
- data/lib/chef/knife/softlayer_key_pair_list.rb +28 -28
- data/lib/chef/knife/softlayer_list.rb +6 -6
- data/lib/chef/knife/softlayer_server_create.rb +459 -453
- data/lib/chef/knife/softlayer_server_destroy.rb +146 -146
- data/lib/chef/knife/softlayer_server_list.rb +27 -27
- data/lib/chef/knife/softlayer_server_relaunch.rb +208 -208
- data/lib/chef/knife/softlayer_vlan_create.rb +37 -37
- data/lib/chef/knife/softlayer_vlan_list.rb +28 -28
- data/lib/chef/knife/softlayer_vlan_show.rb +40 -40
- data/lib/knife-softlayer/version.rb +12 -12
- data/spec/spec_helper.rb +21 -21
- data/spec/unit/softlayer_base_spec.rb +26 -26
- data/spec/unit/softlayer_server_create_spec.rb +105 -105
- data/spec/unit/softlayer_server_destroy_spec.rb +47 -47
- metadata +29 -29
data/lib/chef/knife/softlayer.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Matt Eldridge (<matt.eldridge@us.ibm.com>)
|
3
|
-
# © Copyright IBM Corporation 2014.
|
4
|
-
#
|
5
|
-
# LICENSE: Apache 2.0 (http://www.apache.org/licenses/)
|
6
|
-
#
|
7
|
-
|
8
|
-
require "knife-softlayer/version"
|
9
|
-
|
10
|
-
module Knife
|
11
|
-
module Softlayer
|
12
|
-
# Your code goes here...
|
13
|
-
end
|
14
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: Matt Eldridge (<matt.eldridge@us.ibm.com>)
|
3
|
+
# © Copyright IBM Corporation 2014.
|
4
|
+
#
|
5
|
+
# LICENSE: Apache 2.0 (http://www.apache.org/licenses/)
|
6
|
+
#
|
7
|
+
|
8
|
+
require "knife-softlayer/version"
|
9
|
+
|
10
|
+
module Knife
|
11
|
+
module Softlayer
|
12
|
+
# Your code goes here...
|
13
|
+
end
|
14
|
+
end
|
@@ -1,112 +1,112 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Matt Eldridge (<matt.eldridge@us.ibm.com>)
|
3
|
-
# © Copyright IBM Corporation 2014.
|
4
|
-
#
|
5
|
-
# LICENSE: Apache 2.0 (http://www.apache.org/licenses/)
|
6
|
-
#
|
7
|
-
|
8
|
-
require 'chef/knife/bootstrap'
|
9
|
-
require 'knife-softlayer/version'
|
10
|
-
|
11
|
-
class Chef
|
12
|
-
class Knife
|
13
|
-
module SoftlayerBase
|
14
|
-
|
15
|
-
USER_AGENT = "Chef Knife Softlayer Plugin #{::Knife::Softlayer::VERSION}" unless defined? USER_AGENT
|
16
|
-
|
17
|
-
# :nodoc:
|
18
|
-
def self.included(includer)
|
19
|
-
includer.class_eval do
|
20
|
-
|
21
|
-
deps do
|
22
|
-
require 'fog/softlayer'
|
23
|
-
require 'net/ssh'
|
24
|
-
require 'net/ssh/multi'
|
25
|
-
require 'chef/monkey_patches/net-ssh-multi'
|
26
|
-
require 'readline'
|
27
|
-
require 'chef/exceptions'
|
28
|
-
require 'chef/search/query'
|
29
|
-
require 'chef/mixin/command'
|
30
|
-
require 'chef/mixin/shell_out'
|
31
|
-
require 'mixlib/shellout'
|
32
|
-
require 'chef/json_compat'
|
33
|
-
end
|
34
|
-
|
35
|
-
# Make the base bootstrap options available on topo bootstrap
|
36
|
-
self.options = (Chef::Knife::Bootstrap.options).merge(self.options)
|
37
|
-
|
38
|
-
option :softlayer_credential_file,
|
39
|
-
:long => "--softlayer-credential-file FILE",
|
40
|
-
:description => "File containing SoftLayer credentials as used by `softlayer_api` Ruby gem.",
|
41
|
-
:proc => Proc.new { |key| Chef::Config[:knife][:softlayer_credential_file] = key }
|
42
|
-
|
43
|
-
option :softlayer_username,
|
44
|
-
:short => "-U USERNAME",
|
45
|
-
:long => "--softlayer-username KEY",
|
46
|
-
:description => "Your SoftLayer Username",
|
47
|
-
:proc => Proc.new { |key| Chef::Config[:knife][:softlayer_access_key_id] = key }
|
48
|
-
|
49
|
-
option :softlayer_api_key,
|
50
|
-
:short => "-K SECRET",
|
51
|
-
:long => "--softlayer-api-key SECRET",
|
52
|
-
:description => "Your SoftLayer API Key",
|
53
|
-
:proc => Proc.new { |key| Chef::Config[:knife][:softlayer_secret_access_key] = key }
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
##
|
58
|
-
# Returns a connection to a SoftLayer API Service Endpoint.
|
59
|
-
# @param [Symbol] service
|
60
|
-
# @return [SoftLayer::Service]
|
61
|
-
def connection(service=:compute)
|
62
|
-
self.send(service)
|
63
|
-
end
|
64
|
-
|
65
|
-
def compute
|
66
|
-
@compute_connection ||= Fog::Compute.new(
|
67
|
-
:provider => :softlayer,
|
68
|
-
:softlayer_username => Chef::Config[:knife][:softlayer_username],
|
69
|
-
:softlayer_api_key => Chef::Config[:knife][:softlayer_api_key],
|
70
|
-
:softlayer_default_datacenter => Chef::Config[:knife][:softlayer_default_datacenter],
|
71
|
-
:softlayer_default_domain => Chef::Config[:knife][:softlayer_default_domain],
|
72
|
-
)
|
73
|
-
end
|
74
|
-
|
75
|
-
def network
|
76
|
-
@network_connection ||= Fog::Network.new(
|
77
|
-
:provider => :softlayer,
|
78
|
-
:softlayer_username => Chef::Config[:knife][:softlayer_username],
|
79
|
-
:softlayer_api_key => Chef::Config[:knife][:softlayer_api_key],
|
80
|
-
)
|
81
|
-
end
|
82
|
-
|
83
|
-
##
|
84
|
-
# Locates a config value.
|
85
|
-
# @param [String] key
|
86
|
-
# @return [String]
|
87
|
-
def locate_config_value(key)
|
88
|
-
key = key.to_sym
|
89
|
-
config[key] || Chef::Config[:knife][key]
|
90
|
-
end
|
91
|
-
|
92
|
-
##
|
93
|
-
# A CLI output formatting wrapper.
|
94
|
-
# @param [String] label
|
95
|
-
# @param [String] value
|
96
|
-
# @param [Symbol] color
|
97
|
-
# @return [String]
|
98
|
-
def msg_pair(label, value, color=:cyan)
|
99
|
-
if value && !value.to_s.empty?
|
100
|
-
puts "#{ui.color(label, color)}: #{value}"
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
module OS
|
109
|
-
def OS.windows?
|
110
|
-
(/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
|
111
|
-
end
|
112
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: Matt Eldridge (<matt.eldridge@us.ibm.com>)
|
3
|
+
# © Copyright IBM Corporation 2014.
|
4
|
+
#
|
5
|
+
# LICENSE: Apache 2.0 (http://www.apache.org/licenses/)
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'chef/knife/bootstrap'
|
9
|
+
require 'knife-softlayer/version'
|
10
|
+
|
11
|
+
class Chef
|
12
|
+
class Knife
|
13
|
+
module SoftlayerBase
|
14
|
+
|
15
|
+
USER_AGENT = "Chef Knife Softlayer Plugin #{::Knife::Softlayer::VERSION}" unless defined? USER_AGENT
|
16
|
+
|
17
|
+
# :nodoc:
|
18
|
+
def self.included(includer)
|
19
|
+
includer.class_eval do
|
20
|
+
|
21
|
+
deps do
|
22
|
+
require 'fog/softlayer'
|
23
|
+
require 'net/ssh'
|
24
|
+
require 'net/ssh/multi'
|
25
|
+
require 'chef/monkey_patches/net-ssh-multi'
|
26
|
+
require 'readline'
|
27
|
+
require 'chef/exceptions'
|
28
|
+
require 'chef/search/query'
|
29
|
+
require 'chef/mixin/command'
|
30
|
+
require 'chef/mixin/shell_out'
|
31
|
+
require 'mixlib/shellout'
|
32
|
+
require 'chef/json_compat'
|
33
|
+
end
|
34
|
+
|
35
|
+
# Make the base bootstrap options available on topo bootstrap
|
36
|
+
self.options = (Chef::Knife::Bootstrap.options).merge(self.options)
|
37
|
+
|
38
|
+
option :softlayer_credential_file,
|
39
|
+
:long => "--softlayer-credential-file FILE",
|
40
|
+
:description => "File containing SoftLayer credentials as used by `softlayer_api` Ruby gem.",
|
41
|
+
:proc => Proc.new { |key| Chef::Config[:knife][:softlayer_credential_file] = key }
|
42
|
+
|
43
|
+
option :softlayer_username,
|
44
|
+
:short => "-U USERNAME",
|
45
|
+
:long => "--softlayer-username KEY",
|
46
|
+
:description => "Your SoftLayer Username",
|
47
|
+
:proc => Proc.new { |key| Chef::Config[:knife][:softlayer_access_key_id] = key }
|
48
|
+
|
49
|
+
option :softlayer_api_key,
|
50
|
+
:short => "-K SECRET",
|
51
|
+
:long => "--softlayer-api-key SECRET",
|
52
|
+
:description => "Your SoftLayer API Key",
|
53
|
+
:proc => Proc.new { |key| Chef::Config[:knife][:softlayer_secret_access_key] = key }
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
##
|
58
|
+
# Returns a connection to a SoftLayer API Service Endpoint.
|
59
|
+
# @param [Symbol] service
|
60
|
+
# @return [SoftLayer::Service]
|
61
|
+
def connection(service=:compute)
|
62
|
+
self.send(service)
|
63
|
+
end
|
64
|
+
|
65
|
+
def compute
|
66
|
+
@compute_connection ||= Fog::Compute.new(
|
67
|
+
:provider => :softlayer,
|
68
|
+
:softlayer_username => Chef::Config[:knife][:softlayer_username],
|
69
|
+
:softlayer_api_key => Chef::Config[:knife][:softlayer_api_key],
|
70
|
+
:softlayer_default_datacenter => Chef::Config[:knife][:softlayer_default_datacenter],
|
71
|
+
:softlayer_default_domain => Chef::Config[:knife][:softlayer_default_domain],
|
72
|
+
)
|
73
|
+
end
|
74
|
+
|
75
|
+
def network
|
76
|
+
@network_connection ||= Fog::Network.new(
|
77
|
+
:provider => :softlayer,
|
78
|
+
:softlayer_username => Chef::Config[:knife][:softlayer_username],
|
79
|
+
:softlayer_api_key => Chef::Config[:knife][:softlayer_api_key],
|
80
|
+
)
|
81
|
+
end
|
82
|
+
|
83
|
+
##
|
84
|
+
# Locates a config value.
|
85
|
+
# @param [String] key
|
86
|
+
# @return [String]
|
87
|
+
def locate_config_value(key)
|
88
|
+
key = key.to_sym
|
89
|
+
config[key] || Chef::Config[:knife][key]
|
90
|
+
end
|
91
|
+
|
92
|
+
##
|
93
|
+
# A CLI output formatting wrapper.
|
94
|
+
# @param [String] label
|
95
|
+
# @param [String] value
|
96
|
+
# @param [Symbol] color
|
97
|
+
# @return [String]
|
98
|
+
def msg_pair(label, value, color=:cyan)
|
99
|
+
if value && !value.to_s.empty?
|
100
|
+
puts "#{ui.color(label, color)}: #{value}"
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
module OS
|
109
|
+
def OS.windows?
|
110
|
+
(/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
|
111
|
+
end
|
112
|
+
end
|
@@ -1,28 +1,28 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Matt Eldridge (<matt.eldridge@us.ibm.com>)
|
3
|
-
# © Copyright IBM Corporation 2014.
|
4
|
-
#
|
5
|
-
# LICENSE: Apache 2.0 (http://www.apache.org/licenses/)
|
6
|
-
#
|
7
|
-
|
8
|
-
require 'chef/knife/softlayer_base'
|
9
|
-
|
10
|
-
class Chef
|
11
|
-
class Knife
|
12
|
-
class SoftlayerDatacenterList < Knife
|
13
|
-
|
14
|
-
include Knife::SoftlayerBase
|
15
|
-
|
16
|
-
banner 'knife softlayer datacenter list (options)'
|
17
|
-
|
18
|
-
def run
|
19
|
-
$stdout.sync = true
|
20
|
-
table_data = connection(:network).datacenters.map do |dc|
|
21
|
-
{:name => dc.name, :long_name => dc.long_name }
|
22
|
-
end
|
23
|
-
puts Formatador.display_table(table_data, [:name, :long_name])
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: Matt Eldridge (<matt.eldridge@us.ibm.com>)
|
3
|
+
# © Copyright IBM Corporation 2014.
|
4
|
+
#
|
5
|
+
# LICENSE: Apache 2.0 (http://www.apache.org/licenses/)
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'chef/knife/softlayer_base'
|
9
|
+
|
10
|
+
class Chef
|
11
|
+
class Knife
|
12
|
+
class SoftlayerDatacenterList < Knife
|
13
|
+
|
14
|
+
include Knife::SoftlayerBase
|
15
|
+
|
16
|
+
banner 'knife softlayer datacenter list (options)'
|
17
|
+
|
18
|
+
def run
|
19
|
+
$stdout.sync = true
|
20
|
+
table_data = connection(:network).datacenters.map do |dc|
|
21
|
+
{:name => dc.name, :long_name => dc.long_name }
|
22
|
+
end
|
23
|
+
puts Formatador.display_table(table_data, [:name, :long_name])
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -1,45 +1,45 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Matt Eldridge (<matt.eldridge@us.ibm.com>)
|
3
|
-
# © Copyright IBM Corporation 2014.
|
4
|
-
#
|
5
|
-
# LICENSE: Apache 2.0 (http://www.apache.org/licenses/)
|
6
|
-
#
|
7
|
-
|
8
|
-
require 'chef/knife/softlayer_base'
|
9
|
-
|
10
|
-
class Chef
|
11
|
-
class Knife
|
12
|
-
class SoftlayerDatacenterShow < Knife
|
13
|
-
|
14
|
-
include Knife::SoftlayerBase
|
15
|
-
|
16
|
-
banner 'knife softlayer datacenter show DATACENTER'
|
17
|
-
|
18
|
-
option :dc,
|
19
|
-
:short => "-a",
|
20
|
-
:long => "--all",
|
21
|
-
:description => "Display all available configuration options for launching an instance.",
|
22
|
-
:default => false
|
23
|
-
|
24
|
-
|
25
|
-
def run
|
26
|
-
unless name_args.size == 1
|
27
|
-
puts ui.color("Specify exactly one datacenter to show.", :red)
|
28
|
-
show_usage
|
29
|
-
exit 1
|
30
|
-
end
|
31
|
-
|
32
|
-
$stdout.sync = true
|
33
|
-
dc = connection(:network).datacenters.by_name(name_args[0])
|
34
|
-
|
35
|
-
puts "#{ui.color("Long Name:", :green)} #{dc.long_name}"
|
36
|
-
puts "#{ui.color("Name:", :green)} #{dc.name}"
|
37
|
-
|
38
|
-
puts "#{ui.color("Routers:", :green)}"
|
39
|
-
puts Formatador.display_table(dc.routers)
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: Matt Eldridge (<matt.eldridge@us.ibm.com>)
|
3
|
+
# © Copyright IBM Corporation 2014.
|
4
|
+
#
|
5
|
+
# LICENSE: Apache 2.0 (http://www.apache.org/licenses/)
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'chef/knife/softlayer_base'
|
9
|
+
|
10
|
+
class Chef
|
11
|
+
class Knife
|
12
|
+
class SoftlayerDatacenterShow < Knife
|
13
|
+
|
14
|
+
include Knife::SoftlayerBase
|
15
|
+
|
16
|
+
banner 'knife softlayer datacenter show DATACENTER'
|
17
|
+
|
18
|
+
option :dc,
|
19
|
+
:short => "-a",
|
20
|
+
:long => "--all",
|
21
|
+
:description => "Display all available configuration options for launching an instance.",
|
22
|
+
:default => false
|
23
|
+
|
24
|
+
|
25
|
+
def run
|
26
|
+
unless name_args.size == 1
|
27
|
+
puts ui.color("Specify exactly one datacenter to show.", :red)
|
28
|
+
show_usage
|
29
|
+
exit 1
|
30
|
+
end
|
31
|
+
|
32
|
+
$stdout.sync = true
|
33
|
+
dc = connection(:network).datacenters.by_name(name_args[0])
|
34
|
+
|
35
|
+
puts "#{ui.color("Long Name:", :green)} #{dc.long_name}"
|
36
|
+
puts "#{ui.color("Name:", :green)} #{dc.name}"
|
37
|
+
|
38
|
+
puts "#{ui.color("Routers:", :green)}"
|
39
|
+
puts Formatador.display_table(dc.routers)
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Matt Eldridge (<matt.eldridge@us.ibm.com>)
|
3
|
-
# © Copyright IBM Corporation 2014.
|
4
|
-
#
|
5
|
-
# LICENSE: Apache 2.0 (http://www.apache.org/licenses/)
|
6
|
-
#
|
1
|
+
#
|
2
|
+
# Author:: Matt Eldridge (<matt.eldridge@us.ibm.com>)
|
3
|
+
# © Copyright IBM Corporation 2014.
|
4
|
+
#
|
5
|
+
# LICENSE: Apache 2.0 (http://www.apache.org/licenses/)
|
6
|
+
#
|
@@ -1,53 +1,53 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Matt Eldridge (<matt.eldridge@us.ibm.com>)
|
3
|
-
# © Copyright IBM Corporation 2014.
|
4
|
-
#
|
5
|
-
# LICENSE: Apache 2.0 (http://www.apache.org/licenses/)
|
6
|
-
#
|
7
|
-
|
8
|
-
require 'chef/knife/softlayer_base'
|
9
|
-
require 'chef/knife/flavor/base'
|
10
|
-
|
11
|
-
class Chef
|
12
|
-
class Knife
|
13
|
-
class SoftlayerFlavorList < Knife
|
14
|
-
|
15
|
-
include Knife::SoftlayerBase
|
16
|
-
include Knife::SoftlayerFlavorBase
|
17
|
-
|
18
|
-
banner 'knife softlayer flavor list (options)'
|
19
|
-
|
20
|
-
option :all,
|
21
|
-
:short => "-a",
|
22
|
-
:long => "--all",
|
23
|
-
:description => "Display all available configuration options for launching an instance.",
|
24
|
-
:default => false
|
25
|
-
|
26
|
-
##
|
27
|
-
# Run the procedure to list softlayer VM flavors or display all available options.
|
28
|
-
# @return [nil]
|
29
|
-
def run
|
30
|
-
$stdout.sync = true
|
31
|
-
if config[:all]
|
32
|
-
|
33
|
-
if OS.windows?
|
34
|
-
puts ui.list(options_table, :uneven_columns_across, 6)
|
35
|
-
else
|
36
|
-
IO.popen('less', 'w') do |pipe|
|
37
|
-
pipe.puts ui.list(options_table, :uneven_columns_across, 6)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
msg = "These options can be used in place of 'flavors'; See `knife softlayer server create --help` for details.\n"
|
42
|
-
else
|
43
|
-
puts connection.flavors.table([:id, :cpu, :ram, :disk,])
|
44
|
-
msg = "'flavors' provided here for convenience; SoftLayer allows you to choose a configuration a la carte.\nFor a full list of available instance options use --all with the `knife softlayer flavor list` subcommand."
|
45
|
-
end
|
46
|
-
puts ui.color("\nNOTICE: ", :yellow)
|
47
|
-
puts ui.color(msg)
|
48
|
-
end
|
49
|
-
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
1
|
+
#
|
2
|
+
# Author:: Matt Eldridge (<matt.eldridge@us.ibm.com>)
|
3
|
+
# © Copyright IBM Corporation 2014.
|
4
|
+
#
|
5
|
+
# LICENSE: Apache 2.0 (http://www.apache.org/licenses/)
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'chef/knife/softlayer_base'
|
9
|
+
require 'chef/knife/flavor/base'
|
10
|
+
|
11
|
+
class Chef
|
12
|
+
class Knife
|
13
|
+
class SoftlayerFlavorList < Knife
|
14
|
+
|
15
|
+
include Knife::SoftlayerBase
|
16
|
+
include Knife::SoftlayerFlavorBase
|
17
|
+
|
18
|
+
banner 'knife softlayer flavor list (options)'
|
19
|
+
|
20
|
+
option :all,
|
21
|
+
:short => "-a",
|
22
|
+
:long => "--all",
|
23
|
+
:description => "Display all available configuration options for launching an instance.",
|
24
|
+
:default => false
|
25
|
+
|
26
|
+
##
|
27
|
+
# Run the procedure to list softlayer VM flavors or display all available options.
|
28
|
+
# @return [nil]
|
29
|
+
def run
|
30
|
+
$stdout.sync = true
|
31
|
+
if config[:all]
|
32
|
+
|
33
|
+
if OS.windows?
|
34
|
+
puts ui.list(options_table, :uneven_columns_across, 6)
|
35
|
+
else
|
36
|
+
IO.popen('less', 'w') do |pipe|
|
37
|
+
pipe.puts ui.list(options_table, :uneven_columns_across, 6)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
msg = "These options can be used in place of 'flavors'; See `knife softlayer server create --help` for details.\n"
|
42
|
+
else
|
43
|
+
puts connection.flavors.table([:id, :cpu, :ram, :disk,])
|
44
|
+
msg = "'flavors' provided here for convenience; SoftLayer allows you to choose a configuration a la carte.\nFor a full list of available instance options use --all with the `knife softlayer flavor list` subcommand."
|
45
|
+
end
|
46
|
+
puts ui.color("\nNOTICE: ", :yellow)
|
47
|
+
puts ui.color(msg)
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|