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/examples/server.md
CHANGED
@@ -1,81 +1,82 @@
|
|
1
|
-
### Server Examples
|
2
|
-
|
3
|
-
These examples all assume you have set your SoftLayer username and api key in `~/.chef/knife.rb` like this:
|
4
|
-
|
5
|
-
```ruby
|
6
|
-
knife[:softlayer_username] = 'example_user'
|
7
|
-
knife[:softlayer_api_key] = '1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a'
|
8
|
-
```
|
9
|
-
|
10
|
-
#### Create server and bootstrap as a chef node
|
11
|
-
|
12
|
-
Create a server using an image, a flavor, assign an existing global ip address, and inject two ssh keys.
|
13
|
-
|
14
|
-
```sh
|
15
|
-
user@localhost> knife softlayer server create --image-id 23f7f05f-3657-4330-8772-329ed2e816bc --assign-global-ip 108.168.254.41 --ssh-keys 12345 23456 --hostname web --domain ibm.com --flavor m1.tiny --run-list 'recipe[redis],recipe[rbenv],recipe[apt]' -i /Users/user/.ssh/my_private_key_rsa
|
16
|
-
```
|
17
|
-
|
18
|
-
Create a server, provision a new global ip address and assign it to the server, tag both the chef node and the SoftLayer server with the passed tags.
|
19
|
-
|
20
|
-
```sh
|
21
|
-
user@localhost> knife softlayer server create --new-global-ip v4 --tags job=task,private=true --hostname web --domain ibm.com --flavor m1.tiny --run-list 'recipe[redis],recipe[rbenv],recipe[apt]' --ssh-keys 12345 -i /Users/user/.ssh/my_private_key_rsa
|
22
|
-
```
|
23
|
-
|
24
|
-
Create a server located in specific public and private VLANS.
|
25
|
-
|
26
|
-
```sh
|
27
|
-
user@localhost> knife softlayer server create --vlan 12345 --private-vlan 23456 --hostname web --domain ibm.com --flavor m1.tiny --run-list 'recipe[redis],recipe[rbenv],recipe[apt]' --ssh-keys 12345 -i /Users/user/.ssh/my_private_key_rsa --new-global-ip v4 --tags job=task,private=true
|
28
|
-
```
|
29
|
-
|
30
|
-
Create a server specifying options from a JSON file.
|
31
|
-
|
32
|
-
```sh
|
33
|
-
user@localhost> cat /Users/user/bootstrap.json
|
34
|
-
{
|
35
|
-
"hostname": "web",
|
36
|
-
"domain": "ibm.com",
|
37
|
-
"flavor": "m1.xlarge",
|
38
|
-
"run-list": "recipe[redis],recipe[rbenv],recipe[apt]",
|
39
|
-
"ssh-keys": "73148",
|
40
|
-
"identity-file": "/Users/user/.ssh/my_softlayer_key_rsa",
|
41
|
-
"image-id": "23f7f05f-3657-4330-8772-329ed2e816bc"
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
1
|
+
### Server Examples
|
2
|
+
|
3
|
+
These examples all assume you have set your SoftLayer username and api key in `~/.chef/knife.rb` like this:
|
4
|
+
|
5
|
+
```ruby
|
6
|
+
knife[:softlayer_username] = 'example_user'
|
7
|
+
knife[:softlayer_api_key] = '1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a'
|
8
|
+
```
|
9
|
+
|
10
|
+
#### Create server and bootstrap as a chef node
|
11
|
+
|
12
|
+
Create a server using an image, a flavor, assign an existing global ip address, and inject two ssh keys.
|
13
|
+
|
14
|
+
```sh
|
15
|
+
user@localhost> knife softlayer server create --image-id 23f7f05f-3657-4330-8772-329ed2e816bc --assign-global-ip 108.168.254.41 --ssh-keys 12345 23456 --hostname web --domain ibm.com --flavor m1.tiny --run-list 'recipe[redis],recipe[rbenv],recipe[apt]' -i /Users/user/.ssh/my_private_key_rsa
|
16
|
+
```
|
17
|
+
|
18
|
+
Create a server, provision a new global ip address and assign it to the server, tag both the chef node and the SoftLayer server with the passed tags.
|
19
|
+
|
20
|
+
```sh
|
21
|
+
user@localhost> knife softlayer server create --new-global-ip v4 --tags job=task,private=true --hostname web --domain ibm.com --flavor m1.tiny --run-list 'recipe[redis],recipe[rbenv],recipe[apt]' --ssh-keys 12345 -i /Users/user/.ssh/my_private_key_rsa
|
22
|
+
```
|
23
|
+
|
24
|
+
Create a server located in specific public and private VLANS.
|
25
|
+
|
26
|
+
```sh
|
27
|
+
user@localhost> knife softlayer server create --vlan 12345 --private-vlan 23456 --hostname web --domain ibm.com --flavor m1.tiny --run-list 'recipe[redis],recipe[rbenv],recipe[apt]' --ssh-keys 12345 -i /Users/user/.ssh/my_private_key_rsa --new-global-ip v4 --tags job=task,private=true
|
28
|
+
```
|
29
|
+
|
30
|
+
Create a server specifying options from a JSON file.
|
31
|
+
|
32
|
+
```sh
|
33
|
+
user@localhost> cat /Users/user/bootstrap.json
|
34
|
+
{
|
35
|
+
"hostname": "web",
|
36
|
+
"domain": "ibm.com",
|
37
|
+
"flavor": "m1.xlarge",
|
38
|
+
"run-list": "recipe[redis],recipe[rbenv],recipe[apt]",
|
39
|
+
"ssh-keys": "73148",
|
40
|
+
"identity-file": "/Users/user/.ssh/my_softlayer_key_rsa",
|
41
|
+
"image-id": "23f7f05f-3657-4330-8772-329ed2e816bc",
|
42
|
+
"user_data": "first_boot=disabled"
|
43
|
+
}
|
44
|
+
|
45
|
+
user@localhost> knife softlayer server create --from-file /Users/user/bootstrap.json
|
46
|
+
|
47
|
+
# options file + additional arguments
|
48
|
+
user@localhost> knife softlayer server create --from-file /Users/user/bootstrap.json --tags job=task,private=true
|
49
|
+
```
|
50
|
+
|
51
|
+
Other options.
|
52
|
+
|
53
|
+
```sh
|
54
|
+
user@localhost> knife softlayer server create --help
|
55
|
+
# There are a lot...
|
56
|
+
```
|
57
|
+
|
58
|
+
#### Destroy a server and its chef node and client
|
59
|
+
|
60
|
+
Use the node name as an identifier.
|
61
|
+
|
62
|
+
```sh
|
63
|
+
user@localhost> knife softlayer server destroy --node-name some-node-name
|
64
|
+
Decommissioning SoftLayer VM, this may take a few minutes.
|
65
|
+
WARNING: Deleted node some-node-name
|
66
|
+
Chef node successfully deleted.
|
67
|
+
WARNING: Deleted client some-node-name
|
68
|
+
Chef client successfully deleted.
|
69
|
+
SoftLayer VM successfully deleted. You are no longer being billed for this instance.
|
70
|
+
```
|
71
|
+
|
72
|
+
Use the public ip address as an identifier
|
73
|
+
|
74
|
+
```sh
|
75
|
+
user@localhost> knife softlayer server destroy --ip-address 33.33.33.33
|
76
|
+
Decommissioning SoftLayer VM, this may take a few minutes.
|
77
|
+
WARNING: Deleted node 5849421
|
78
|
+
Chef node successfully deleted.
|
79
|
+
WARNING: Deleted client 5849421
|
80
|
+
Chef client successfully deleted.
|
81
|
+
SoftLayer VM successfully deleted. You are no longer being billed for this instance.
|
82
|
+
```
|
data/examples/vlan.md
CHANGED
@@ -1,85 +1,85 @@
|
|
1
|
-
### VLAN examples
|
2
|
-
|
3
|
-
These examples all assume you have set your SoftLayer username and api key in `~/.chef/knife.rb` like this:
|
4
|
-
|
5
|
-
```ruby
|
6
|
-
knife[:softlayer_username] = 'example_user'
|
7
|
-
knife[:softlayer_api_key] = '1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a'
|
8
|
-
```
|
9
|
-
|
10
|
-
#### Create a new VLAN
|
11
|
-
|
12
|
-
```sh
|
13
|
-
user@localhost> knife softlayer vlan create
|
14
|
-
Enter a vlan name:
|
15
|
-
```
|
16
|
-
|
17
|
-
```sh
|
18
|
-
user@localhost> knife softlayer vlan create
|
19
|
-
Enter a vlan name: my-new-vlan
|
20
|
-
Enter a datacenter name:
|
21
|
-
```
|
22
|
-
|
23
|
-
```sh
|
24
|
-
user@localhost> knife softlayer vlan create
|
25
|
-
Enter a vlan name: my-new-vlan
|
26
|
-
Enter a datacenter name: wdc01
|
27
|
-
Enter a router hostname:
|
28
|
-
```
|
29
|
-
|
30
|
-
```sh
|
31
|
-
user@localhost> knife softlayer vlan create
|
32
|
-
Enter a vlan name: my-new-vlan
|
33
|
-
Enter a datacenter name: wdc01
|
34
|
-
Enter a router hostname: bcr05a.wdc01
|
35
|
-
Enter a network space:[PUBLIC]
|
36
|
-
```
|
37
|
-
|
38
|
-
```sh
|
39
|
-
user@localhost> knife softlayer vlan create
|
40
|
-
Enter a vlan name: my-new-vlan
|
41
|
-
Enter a datacenter name: wdc01
|
42
|
-
Enter a router hostname: bcr05a.wdc01
|
43
|
-
Enter a network space:[PUBLIC] PRIVATE # routers that start with bcr are for private VLANS; fcr are for public VLANS
|
44
|
-
VLAN successfully created. Provisioning may take a few minutes to complete.
|
45
|
-
```
|
46
|
-
|
47
|
-
#### List VLANS
|
48
|
-
|
49
|
-
```sh
|
50
|
-
user@localhost> knife softlayer vlan list
|
51
|
-
+--------+----------------------+--------------+---------------+--------------+
|
52
|
-
| id | name | datacenter | network_space | router |
|
53
|
-
+--------+----------------------+--------------+---------------+--------------+
|
54
|
-
| 379384 | [none] | Washington 1 | PUBLIC | fcr02.wdc01 |
|
55
|
-
+--------+----------------------+--------------+---------------+--------------+
|
56
|
-
| 379386 | [none] | Washington 1 | PRIVATE | bcr02.wdc01 |
|
57
|
-
+--------+----------------------+--------------+---------------+--------------+
|
58
|
-
| 563298 | my-new-vlan | Washington 1 | PRIVATE | bcr02.wdc01 |
|
59
|
-
+--------+----------------------+--------------+---------------+--------------+
|
60
|
-
| 339652 | [none] | San Jose 1 | PUBLIC | fcr01a.sjc01 |
|
61
|
-
+--------+----------------------+--------------+---------------+--------------+
|
62
|
-
| 339654 | [none] | San Jose 1 | PRIVATE | bcr01a.sjc01 |
|
63
|
-
+--------+----------------------+--------------+---------------+--------------+
|
64
|
-
| 557984 | [none] | Dallas 5 | PUBLIC | fcr02a.dal05 |
|
65
|
-
+--------+----------------------+--------------+---------------+--------------+
|
66
|
-
| 557986 | [none] | Dallas 5 | PRIVATE | bcr02a.dal05 |
|
67
|
-
+--------+----------------------+--------------+---------------+--------------+
|
68
|
-
```
|
69
|
-
|
70
|
-
#### Show a particular VLAN
|
71
|
-
|
72
|
-
```sh
|
73
|
-
user@localhost> knife softlayer vlan show 563298
|
74
|
-
ID: 563298
|
75
|
-
Name: my-new-vlan
|
76
|
-
Datacenter: wdc01
|
77
|
-
Network Space: PRIVATE
|
78
|
-
Router: bcr02.wdc01
|
79
|
-
Subnets:
|
80
|
-
+--------+------+---------------+---------------+---------------+---------+------------+------------+
|
81
|
-
| id | cidr | gateway_ip | network_id | broadcast | type | datacenter | ip_version |
|
82
|
-
+--------+------+---------------+---------------+---------------+---------+------------+------------+
|
83
|
-
| 572522 | 30 | 10.32.181.241 | 10.32.181.240 | 10.32.181.243 | PRIMARY | wdc01 | 4 |
|
84
|
-
+--------+------+---------------+---------------+---------------+---------+------------+------------+
|
85
|
-
```
|
1
|
+
### VLAN examples
|
2
|
+
|
3
|
+
These examples all assume you have set your SoftLayer username and api key in `~/.chef/knife.rb` like this:
|
4
|
+
|
5
|
+
```ruby
|
6
|
+
knife[:softlayer_username] = 'example_user'
|
7
|
+
knife[:softlayer_api_key] = '1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a'
|
8
|
+
```
|
9
|
+
|
10
|
+
#### Create a new VLAN
|
11
|
+
|
12
|
+
```sh
|
13
|
+
user@localhost> knife softlayer vlan create
|
14
|
+
Enter a vlan name:
|
15
|
+
```
|
16
|
+
|
17
|
+
```sh
|
18
|
+
user@localhost> knife softlayer vlan create
|
19
|
+
Enter a vlan name: my-new-vlan
|
20
|
+
Enter a datacenter name:
|
21
|
+
```
|
22
|
+
|
23
|
+
```sh
|
24
|
+
user@localhost> knife softlayer vlan create
|
25
|
+
Enter a vlan name: my-new-vlan
|
26
|
+
Enter a datacenter name: wdc01
|
27
|
+
Enter a router hostname:
|
28
|
+
```
|
29
|
+
|
30
|
+
```sh
|
31
|
+
user@localhost> knife softlayer vlan create
|
32
|
+
Enter a vlan name: my-new-vlan
|
33
|
+
Enter a datacenter name: wdc01
|
34
|
+
Enter a router hostname: bcr05a.wdc01
|
35
|
+
Enter a network space:[PUBLIC]
|
36
|
+
```
|
37
|
+
|
38
|
+
```sh
|
39
|
+
user@localhost> knife softlayer vlan create
|
40
|
+
Enter a vlan name: my-new-vlan
|
41
|
+
Enter a datacenter name: wdc01
|
42
|
+
Enter a router hostname: bcr05a.wdc01
|
43
|
+
Enter a network space:[PUBLIC] PRIVATE # routers that start with bcr are for private VLANS; fcr are for public VLANS
|
44
|
+
VLAN successfully created. Provisioning may take a few minutes to complete.
|
45
|
+
```
|
46
|
+
|
47
|
+
#### List VLANS
|
48
|
+
|
49
|
+
```sh
|
50
|
+
user@localhost> knife softlayer vlan list
|
51
|
+
+--------+----------------------+--------------+---------------+--------------+
|
52
|
+
| id | name | datacenter | network_space | router |
|
53
|
+
+--------+----------------------+--------------+---------------+--------------+
|
54
|
+
| 379384 | [none] | Washington 1 | PUBLIC | fcr02.wdc01 |
|
55
|
+
+--------+----------------------+--------------+---------------+--------------+
|
56
|
+
| 379386 | [none] | Washington 1 | PRIVATE | bcr02.wdc01 |
|
57
|
+
+--------+----------------------+--------------+---------------+--------------+
|
58
|
+
| 563298 | my-new-vlan | Washington 1 | PRIVATE | bcr02.wdc01 |
|
59
|
+
+--------+----------------------+--------------+---------------+--------------+
|
60
|
+
| 339652 | [none] | San Jose 1 | PUBLIC | fcr01a.sjc01 |
|
61
|
+
+--------+----------------------+--------------+---------------+--------------+
|
62
|
+
| 339654 | [none] | San Jose 1 | PRIVATE | bcr01a.sjc01 |
|
63
|
+
+--------+----------------------+--------------+---------------+--------------+
|
64
|
+
| 557984 | [none] | Dallas 5 | PUBLIC | fcr02a.dal05 |
|
65
|
+
+--------+----------------------+--------------+---------------+--------------+
|
66
|
+
| 557986 | [none] | Dallas 5 | PRIVATE | bcr02a.dal05 |
|
67
|
+
+--------+----------------------+--------------+---------------+--------------+
|
68
|
+
```
|
69
|
+
|
70
|
+
#### Show a particular VLAN
|
71
|
+
|
72
|
+
```sh
|
73
|
+
user@localhost> knife softlayer vlan show 563298
|
74
|
+
ID: 563298
|
75
|
+
Name: my-new-vlan
|
76
|
+
Datacenter: wdc01
|
77
|
+
Network Space: PRIVATE
|
78
|
+
Router: bcr02.wdc01
|
79
|
+
Subnets:
|
80
|
+
+--------+------+---------------+---------------+---------------+---------+------------+------------+
|
81
|
+
| id | cidr | gateway_ip | network_id | broadcast | type | datacenter | ip_version |
|
82
|
+
+--------+------+---------------+---------------+---------------+---------+------------+------------+
|
83
|
+
| 572522 | 30 | 10.32.181.241 | 10.32.181.240 | 10.32.181.243 | PRIMARY | wdc01 | 4 |
|
84
|
+
+--------+------+---------------+---------------+---------------+---------+------------+------------+
|
85
|
+
```
|
data/knife-softlayer.gemspec
CHANGED
@@ -1,39 +1,39 @@
|
|
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
|
-
# coding: utf-8
|
9
|
-
lib = File.expand_path('../lib', __FILE__)
|
10
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
11
|
-
require 'knife-softlayer/version'
|
12
|
-
|
13
|
-
Gem::Specification.new do |spec|
|
14
|
-
spec.name = "knife-softlayer"
|
15
|
-
spec.version = Knife::Softlayer::VERSION
|
16
|
-
spec.authors = ["Matt Eldridge"]
|
17
|
-
spec.email = ["matt.eldridge@us.ibm.com"]
|
18
|
-
spec.summary = %q{SoftLayer VM support for Chef's knife utility.}
|
19
|
-
spec.description = %q{A knife plugin for launching and bootstrapping instances in the IBM SoftLayer cloud.}
|
20
|
-
spec.homepage = "https://github.com/SoftLayer/knife-softlayer"
|
21
|
-
spec.license = "Apache 2.0"
|
22
|
-
|
23
|
-
spec.files = `git ls-files -z`.split("\x0")
|
24
|
-
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
25
|
-
spec.test_files = spec.files.grep(%r{^(spec|spec|features)/})
|
26
|
-
spec.require_paths = ["lib"]
|
27
|
-
|
28
|
-
spec.add_dependency "fog-softlayer", "~>
|
29
|
-
spec.add_dependency "knife-windows", "> 0.5.12"
|
30
|
-
spec.add_dependency "net-ssh", "> 2.8.0"
|
31
|
-
|
32
|
-
spec.add_development_dependency "mixlib-config", "~>2.0"
|
33
|
-
spec.add_development_dependency "chef", ">=0.10.10"
|
34
|
-
spec.add_development_dependency "rspec", "~>2.14"
|
35
|
-
spec.add_development_dependency "rake", "~>10.1"
|
36
|
-
spec.add_development_dependency "sdoc", "~>0.3"
|
37
|
-
spec.add_development_dependency "bundler", "~>1.5"
|
38
|
-
spec.add_development_dependency "osrcry"
|
39
|
-
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
|
+
# coding: utf-8
|
9
|
+
lib = File.expand_path('../lib', __FILE__)
|
10
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
11
|
+
require 'knife-softlayer/version'
|
12
|
+
|
13
|
+
Gem::Specification.new do |spec|
|
14
|
+
spec.name = "knife-softlayer"
|
15
|
+
spec.version = Knife::Softlayer::VERSION
|
16
|
+
spec.authors = ["Matt Eldridge"]
|
17
|
+
spec.email = ["matt.eldridge@us.ibm.com"]
|
18
|
+
spec.summary = %q{SoftLayer VM support for Chef's knife utility.}
|
19
|
+
spec.description = %q{A knife plugin for launching and bootstrapping instances in the IBM SoftLayer cloud.}
|
20
|
+
spec.homepage = "https://github.com/SoftLayer/knife-softlayer"
|
21
|
+
spec.license = "Apache 2.0"
|
22
|
+
|
23
|
+
spec.files = `git ls-files -z`.split("\x0")
|
24
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
25
|
+
spec.test_files = spec.files.grep(%r{^(spec|spec|features)/})
|
26
|
+
spec.require_paths = ["lib"]
|
27
|
+
|
28
|
+
spec.add_dependency "fog-softlayer", "~> 1.1.1"
|
29
|
+
spec.add_dependency "knife-windows", "> 0.5.12"
|
30
|
+
spec.add_dependency "net-ssh", "> 2.8.0"
|
31
|
+
|
32
|
+
spec.add_development_dependency "mixlib-config", "~>2.0"
|
33
|
+
spec.add_development_dependency "chef", ">=0.10.10"
|
34
|
+
spec.add_development_dependency "rspec", "~>2.14"
|
35
|
+
spec.add_development_dependency "rake", "~>10.1"
|
36
|
+
spec.add_development_dependency "sdoc", "~>0.3"
|
37
|
+
spec.add_development_dependency "bundler", "~>1.5"
|
38
|
+
spec.add_development_dependency "osrcry"
|
39
|
+
end
|
@@ -1,52 +1,52 @@
|
|
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'
|
9
|
-
|
10
|
-
class Chef
|
11
|
-
class Knife
|
12
|
-
module SoftlayerFlavorBase
|
13
|
-
|
14
|
-
##
|
15
|
-
# Build table of all VM configuration options.
|
16
|
-
# @return [Hash]
|
17
|
-
def options_table
|
18
|
-
columns = [
|
19
|
-
"| CORES",
|
20
|
-
"| RAM",
|
21
|
-
"| DISK",
|
22
|
-
"| OS",
|
23
|
-
"| NETWORK [MBS]",
|
24
|
-
"| DATACENTER",
|
25
|
-
]
|
26
|
-
|
27
|
-
6.times { columns << '| ========== ' }
|
28
|
-
|
29
|
-
opts = connection.request(:virtual_guest, :get_create_object_options).body
|
30
|
-
cpu = opts['processors']
|
31
|
-
ram = opts['memory']
|
32
|
-
disk = opts['blockDevices'].sort_by{|d| d['itemPrice']['item']['description'] unless d['itemPrice'].nil? }
|
33
|
-
os = opts['operatingSystems']
|
34
|
-
net = opts['networkComponents']
|
35
|
-
datacenter = opts['datacenters']
|
36
|
-
|
37
|
-
i = 0
|
38
|
-
until i >= opts.keys.map{|key| opts[key].count }.sort.last do
|
39
|
-
columns << (cpu[i].nil? ? '| ' : '| ' + cpu[i]['itemPrice']['item']['description'])
|
40
|
-
columns << (ram[i].nil? ? '| ' : '| ' + ram[i]['template']['maxMemory'].to_s + " [#{ram[i]['itemPrice']['item']['description']}]")
|
41
|
-
columns << (disk[i].nil? ? '| ' : '| ' + disk[i]['itemPrice']['item']['description'])
|
42
|
-
columns << (os[i].nil? ? '| ' : '| ' + os[i]['template']['operatingSystemReferenceCode'])
|
43
|
-
columns << (net[i].nil? ? '| ' : '| ' + net[i]['template']['networkComponents'].first['maxSpeed'].to_s)
|
44
|
-
columns << (datacenter[i].nil? ? '| ' : '| ' + datacenter[i]['template']['datacenter']['name'])
|
45
|
-
i+=1
|
46
|
-
end
|
47
|
-
columns
|
48
|
-
end
|
49
|
-
|
50
|
-
end
|
51
|
-
end
|
52
|
-
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'
|
9
|
+
|
10
|
+
class Chef
|
11
|
+
class Knife
|
12
|
+
module SoftlayerFlavorBase
|
13
|
+
|
14
|
+
##
|
15
|
+
# Build table of all VM configuration options.
|
16
|
+
# @return [Hash]
|
17
|
+
def options_table
|
18
|
+
columns = [
|
19
|
+
"| CORES",
|
20
|
+
"| RAM",
|
21
|
+
"| DISK",
|
22
|
+
"| OS",
|
23
|
+
"| NETWORK [MBS]",
|
24
|
+
"| DATACENTER",
|
25
|
+
]
|
26
|
+
|
27
|
+
6.times { columns << '| ========== ' }
|
28
|
+
|
29
|
+
opts = connection.request(:virtual_guest, :get_create_object_options).body
|
30
|
+
cpu = opts['processors']
|
31
|
+
ram = opts['memory']
|
32
|
+
disk = opts['blockDevices'].sort_by{|d| d['itemPrice']['item']['description'] unless d['itemPrice'].nil? }
|
33
|
+
os = opts['operatingSystems']
|
34
|
+
net = opts['networkComponents']
|
35
|
+
datacenter = opts['datacenters']
|
36
|
+
|
37
|
+
i = 0
|
38
|
+
until i >= opts.keys.map{|key| opts[key].count }.sort.last do
|
39
|
+
columns << (cpu[i].nil? ? '| ' : '| ' + cpu[i]['itemPrice']['item']['description'])
|
40
|
+
columns << (ram[i].nil? ? '| ' : '| ' + ram[i]['template']['maxMemory'].to_s + " [#{ram[i]['itemPrice']['item']['description']}]")
|
41
|
+
columns << (disk[i].nil? ? '| ' : '| ' + disk[i]['itemPrice']['item']['description'])
|
42
|
+
columns << (os[i].nil? ? '| ' : '| ' + os[i]['template']['operatingSystemReferenceCode'])
|
43
|
+
columns << (net[i].nil? ? '| ' : '| ' + net[i]['template']['networkComponents'].first['maxSpeed'].to_s)
|
44
|
+
columns << (datacenter[i].nil? ? '| ' : '| ' + datacenter[i]['template']['datacenter']['name'])
|
45
|
+
i+=1
|
46
|
+
end
|
47
|
+
columns
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|