knife-softlayer 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +5 -13
  2. data/.gitignore +19 -19
  3. data/.travis.yml +20 -22
  4. data/CHANGELOG.md +19 -19
  5. data/CONTRIBUTING.md +31 -31
  6. data/CONTRIBUTORS.md +2 -2
  7. data/Gemfile +4 -4
  8. data/LICENSE.txt +72 -72
  9. data/README.md +83 -83
  10. data/Rakefile +37 -37
  11. data/docs/cla-corporate.md +133 -133
  12. data/docs/cla-individual.md +84 -84
  13. data/examples/datacenter.md +94 -94
  14. data/examples/flavor.md +58 -58
  15. data/examples/global_ip.md +22 -22
  16. data/examples/image.md +34 -34
  17. data/examples/key_pair.md +56 -56
  18. data/examples/server.md +82 -81
  19. data/examples/vlan.md +85 -85
  20. data/knife-softlayer.gemspec +39 -39
  21. data/lib/chef/knife/flavor/base.rb +52 -52
  22. data/lib/chef/knife/softlayer.rb +14 -14
  23. data/lib/chef/knife/softlayer_base.rb +112 -112
  24. data/lib/chef/knife/softlayer_datacenter_list.rb +28 -28
  25. data/lib/chef/knife/softlayer_datacenter_show.rb +45 -45
  26. data/lib/chef/knife/softlayer_delete.rb +6 -6
  27. data/lib/chef/knife/softlayer_flavor_list.rb +53 -53
  28. data/lib/chef/knife/softlayer_global_ip_list.rb +34 -34
  29. data/lib/chef/knife/softlayer_image_list.rb +26 -26
  30. data/lib/chef/knife/softlayer_key_pair_create.rb +37 -37
  31. data/lib/chef/knife/softlayer_key_pair_list.rb +28 -28
  32. data/lib/chef/knife/softlayer_list.rb +6 -6
  33. data/lib/chef/knife/softlayer_server_create.rb +459 -453
  34. data/lib/chef/knife/softlayer_server_destroy.rb +146 -146
  35. data/lib/chef/knife/softlayer_server_list.rb +27 -27
  36. data/lib/chef/knife/softlayer_server_relaunch.rb +208 -208
  37. data/lib/chef/knife/softlayer_vlan_create.rb +37 -37
  38. data/lib/chef/knife/softlayer_vlan_list.rb +28 -28
  39. data/lib/chef/knife/softlayer_vlan_show.rb +40 -40
  40. data/lib/knife-softlayer/version.rb +12 -12
  41. data/spec/spec_helper.rb +21 -21
  42. data/spec/unit/softlayer_base_spec.rb +26 -26
  43. data/spec/unit/softlayer_server_create_spec.rb +105 -105
  44. data/spec/unit/softlayer_server_destroy_spec.rb +47 -47
  45. metadata +29 -29
@@ -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
+