knife-openstack 1.3.2.pre → 1.3.2.pre.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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/Gemfile +1 -1
  4. data/Rakefile +7 -28
  5. data/knife-openstack.gemspec +16 -16
  6. data/lib/chef/knife/cloud/openstack_server_create_options.rb +44 -44
  7. data/lib/chef/knife/cloud/openstack_service.rb +27 -31
  8. data/lib/chef/knife/cloud/openstack_service_options.rb +25 -26
  9. data/lib/chef/knife/openstack_flavor_list.rb +9 -10
  10. data/lib/chef/knife/openstack_floating_ip_allocate.rb +4 -4
  11. data/lib/chef/knife/openstack_floating_ip_associate.rb +5 -5
  12. data/lib/chef/knife/openstack_floating_ip_disassociate.rb +4 -4
  13. data/lib/chef/knife/openstack_group_list.rb +9 -11
  14. data/lib/chef/knife/openstack_helpers.rb +14 -2
  15. data/lib/chef/knife/openstack_image_list.rb +14 -15
  16. data/lib/chef/knife/openstack_network_list.rb +8 -9
  17. data/lib/chef/knife/openstack_server_create.rb +81 -84
  18. data/lib/chef/knife/openstack_server_delete.rb +25 -26
  19. data/lib/chef/knife/openstack_server_list.rb +13 -19
  20. data/lib/chef/knife/openstack_server_show.rb +11 -12
  21. data/lib/chef/knife/openstack_volume_list.rb +10 -12
  22. data/lib/knife-openstack/version.rb +1 -1
  23. data/spec/functional/flavor_list_func_spec.rb +11 -11
  24. data/spec/functional/floating_ip_list_func_spec.rb +11 -11
  25. data/spec/functional/group_list_func_spec.rb +27 -31
  26. data/spec/functional/image_list_func_spec.rb +14 -14
  27. data/spec/functional/network_list_func_spec.rb +10 -10
  28. data/spec/functional/server_create_func_spec.rb +23 -24
  29. data/spec/functional/server_delete_func_spec.rb +16 -17
  30. data/spec/functional/server_list_func_spec.rb +39 -39
  31. data/spec/functional/server_show_func_spec.rb +4 -5
  32. data/spec/functional/volume_list_func_spec.rb +9 -9
  33. data/spec/integration/cleanup.rb +8 -11
  34. data/spec/integration/openstack_spec.rb +377 -347
  35. data/spec/spec_context.rb +10 -10
  36. data/spec/spec_helper.rb +23 -27
  37. data/spec/unit/openstack_flavor_list_spec.rb +1 -1
  38. data/spec/unit/openstack_floating_ip_allocate_spec.rb +2 -3
  39. data/spec/unit/openstack_floating_ip_associate_spec.rb +2 -2
  40. data/spec/unit/openstack_floating_ip_disassociate_spec.rb +3 -3
  41. data/spec/unit/openstack_floating_ip_release_spec.rb +1 -1
  42. data/spec/unit/openstack_group_list_spec.rb +7 -7
  43. data/spec/unit/openstack_image_list_spec.rb +2 -2
  44. data/spec/unit/openstack_network_list_spec.rb +4 -4
  45. data/spec/unit/openstack_server_create_spec.rb +117 -118
  46. data/spec/unit/openstack_server_delete_spec.rb +4 -4
  47. data/spec/unit/openstack_server_list_spec.rb +2 -2
  48. data/spec/unit/openstack_server_show_spec.rb +6 -6
  49. data/spec/unit/openstack_service_spec.rb +20 -20
  50. data/spec/unit/openstack_volume_list_spec.rb +1 -1
  51. metadata +30 -2
@@ -32,37 +32,31 @@ class Chef
32
32
  include OpenstackServiceOptions
33
33
  include ServerListOptions
34
34
 
35
- banner "knife openstack server list (options)"
35
+ banner 'knife openstack server list (options)'
36
36
 
37
37
  def before_exec_command
38
- #set columns_with_info map
38
+ # set columns_with_info map
39
39
  @columns_with_info = [
40
- {:label => 'Name', :key => 'name'},
41
- {:label => 'Instance ID', :key => 'id'},
42
- {:label => 'Public IP', :key => 'addresses', :value_callback => method(:get_public_ip_address)},
43
- {:label => 'Private IP', :key => 'addresses', :value_callback => method(:get_private_ip_address)},
44
- {:label => 'Flavor', :key => 'flavor', :value_callback => method(:get_id)},
45
- {:label => 'Image', :key => 'image', :value_callback => method(:get_id)},
46
- {:label => 'Keypair', :key => 'key_name'},
47
- {:label => 'State', :key => 'state'},
48
- {:label => 'Availability Zone', :key => 'availability_zone'}
40
+ { label: 'Name', key: 'name' },
41
+ { label: 'Instance ID', key: 'id' },
42
+ { label: 'Addresses', key: 'addresses', value_callback: method(:addresses) },
43
+ { label: 'Flavor', key: 'flavor', value_callback: method(:get_id) },
44
+ { label: 'Image', key: 'image', value_callback: method(:get_id) },
45
+ { label: 'Keypair', key: 'key_name' },
46
+ { label: 'State', key: 'state' },
47
+ { label: 'Availability Zone', key: 'availability_zone' }
49
48
  ]
50
- @sort_by_field = "name"
49
+ @sort_by_field = 'name'
51
50
  super
52
51
  end
53
52
 
54
- def get_public_ip_address (addresses)
55
- primary_public_ip_address(addresses)
56
- end
57
-
58
- def get_private_ip_address (addresses)
59
- primary_private_ip_address(addresses)
53
+ def addresses(addresses)
54
+ instance_addresses(addresses)
60
55
  end
61
56
 
62
57
  def get_id(value)
63
58
  value['id']
64
59
  end
65
-
66
60
  end
67
61
  end
68
62
  end
@@ -30,21 +30,20 @@ class Chef
30
30
  include OpenstackServiceOptions
31
31
  include ServerShowOptions
32
32
 
33
- banner "knife openstack server show (options)"
33
+ banner 'knife openstack server show (options)'
34
34
 
35
35
  def before_exec_command
36
- #set columns_with_info map
36
+ # set columns_with_info map
37
37
  @columns_with_info = [
38
- {:label => 'Instance ID', :key => 'id'},
39
- {:label => 'Name', :key => 'name'},
40
- {:label => 'Public IP', :key => 'addresses', :value_callback => method(:primary_public_ip_address)},
41
- {:label => 'Private IP', :key => 'addresses', :value_callback => method(:primary_private_ip_address)},
42
- {:label => 'Flavor', :key => 'flavor', :value_callback => method(:get_id)},
43
- {:label => 'Image', :key => 'image', :value_callback => method(:get_id)},
44
- {:label => 'Keypair', :key => 'key_name'},
45
- {:label => 'State', :key => 'state'},
46
- {:label => 'Availability Zone', :key => 'availability_zone'}
47
- ]
38
+ { label: 'Instance ID', key: 'id' },
39
+ { label: 'Name', key: 'name' },
40
+ { label: 'Addresses', key: 'addresses', value_callback: method(:instance_addresses) },
41
+ { label: 'Flavor', key: 'flavor', value_callback: method(:get_id) },
42
+ { label: 'Image', key: 'image', value_callback: method(:get_id) },
43
+ { label: 'Keypair', key: 'key_name' },
44
+ { label: 'State', key: 'state' },
45
+ { label: 'Availability Zone', key: 'availability_zone' }
46
+ ]
48
47
  super
49
48
  end
50
49
 
@@ -26,19 +26,17 @@ class Chef
26
26
  class Knife
27
27
  class Cloud
28
28
  class OpenstackVolumeList < ResourceListCommand
29
- include OpenstackHelpers
30
- include OpenstackServiceOptions
29
+ include OpenstackHelpers
30
+ include OpenstackServiceOptions
31
31
 
32
- banner "knife openstack volume list (options)"
32
+ banner 'knife openstack volume list (options)'
33
33
 
34
34
  def query_resource
35
- begin
36
- @service.connection.volumes
37
- rescue Excon::Errors::BadRequest => e
38
- response = Chef::JSONCompat.from_json(e.response.body)
39
- ui.fatal("Unknown server error (#{response['badRequest']['code']}): #{response['badRequest']['message']}")
40
- raise e
41
- end
35
+ @service.connection.volumes
36
+ rescue Excon::Errors::BadRequest => e
37
+ response = Chef::JSONCompat.from_json(e.response.body)
38
+ ui.fatal("Unknown server error (#{response['badRequest']['code']}): #{response['badRequest']['message']}")
39
+ raise e
42
40
  end
43
41
 
44
42
  def list(volumes)
@@ -47,14 +45,14 @@ class Chef
47
45
  ui.color('ID', :bold),
48
46
  ui.color('Status', :bold),
49
47
  ui.color('Size', :bold),
50
- ui.color('Description', :bold),
48
+ ui.color('Description', :bold)
51
49
  ]
52
50
  begin
53
51
  volumes.sort_by(&:name).each do |volume|
54
52
  volume_list << volume.name
55
53
  volume_list << volume.id.to_s
56
54
  volume_list << volume.status
57
- volume_list << "#{volume.size.to_s} GB"
55
+ volume_list << "#{volume.size} GB"
58
56
  volume_list << volume.description
59
57
  end
60
58
  rescue Excon::Errors::BadRequest => e
@@ -1,6 +1,6 @@
1
1
  module Knife
2
2
  module OpenStack
3
- VERSION = "1.3.2.pre"
3
+ VERSION = '1.3.2.pre.1'
4
4
  MAJOR, MINOR, TINY = VERSION.split('.')
5
5
  end
6
6
  end
@@ -22,25 +22,25 @@ require 'chef/knife/cloud/openstack_service'
22
22
  require 'support/shared_examples_for_command'
23
23
 
24
24
  describe Chef::Knife::Cloud::OpenstackFlavorList do
25
- let (:instance) {Chef::Knife::Cloud::OpenstackFlavorList.new}
25
+ let (:instance) { Chef::Knife::Cloud::OpenstackFlavorList.new }
26
26
 
27
- context "functionality" do
27
+ context 'functionality' do
28
28
  before do
29
- resources = [ TestResource.new({:id => "resource-1", :name => "m1.tiny", :vcpus => "1", :ram => 512, :disk => 0}),
30
- TestResource.new({:id => "resource-2", :name => "m1-xlarge-bigdisk", :vcpus => "8", :ram => 16384, :disk => 50})
31
- ]
29
+ resources = [TestResource.new(id: 'resource-1', name: 'm1.tiny', vcpus: '1', ram: 512, disk: 0),
30
+ TestResource.new(id: 'resource-2', name: 'm1-xlarge-bigdisk', vcpus: '8', ram: 16_384, disk: 50)
31
+ ]
32
32
  allow(instance).to receive(:query_resource).and_return(resources)
33
33
  allow(instance).to receive(:puts)
34
34
  allow(instance).to receive(:create_service_instance).and_return(Chef::Knife::Cloud::Service.new)
35
35
  allow(instance).to receive(:validate!)
36
- instance.config[:format] = "summary"
36
+ instance.config[:format] = 'summary'
37
37
  end
38
38
 
39
- it "lists formatted list of resources" do
40
- expect(instance.ui).to receive(:list).with(["Name", "ID", "Virtual CPUs", "RAM", "Disk",
41
- "m1-xlarge-bigdisk", "resource-2", "8", "16384 MB", "50 GB",
42
- "m1.tiny", "resource-1", "1", "512 MB", "0 GB"], :uneven_columns_across, 5)
39
+ it 'lists formatted list of resources' do
40
+ expect(instance.ui).to receive(:list).with(['Name', 'ID', 'Virtual CPUs', 'RAM', 'Disk',
41
+ 'm1-xlarge-bigdisk', 'resource-2', '8', '16384 MB', '50 GB',
42
+ 'm1.tiny', 'resource-1', '1', '512 MB', '0 GB'], :uneven_columns_across, 5)
43
43
  instance.run
44
44
  end
45
45
  end
46
- end
46
+ end
@@ -21,27 +21,27 @@ require 'chef/knife/cloud/openstack_service'
21
21
  require 'support/shared_examples_for_command'
22
22
 
23
23
  describe Chef::Knife::Cloud::OpenstackFloatingIpList do
24
- let (:instance) {Chef::Knife::Cloud::OpenstackFloatingIpList.new}
24
+ let (:instance) { Chef::Knife::Cloud::OpenstackFloatingIpList.new }
25
25
 
26
26
  context 'functionality' do
27
27
  before do
28
- resources = [ TestResource.new({ "id" => "floatingip1", "instance_id" => "daed9e86-4b69-4242-993a-926a39352783", "ip" => "173.236.251.98", "fixed_ip" => "", "pool" => "test-pool"}
29
- ),
30
- TestResource.new({ "id" => "floatingip2", "instance_id" => "", "ip" => "67.205.60.122", "fixed_ip" => "10.10.10.1", "pool" => "test-pool" }
31
- )
32
- ]
28
+ resources = [TestResource.new('id' => 'floatingip1', 'instance_id' => 'daed9e86-4b69-4242-993a-926a39352783', 'ip' => '173.236.251.98', 'fixed_ip' => '', 'pool' => 'test-pool'
29
+ ),
30
+ TestResource.new('id' => 'floatingip2', 'instance_id' => '', 'ip' => '67.205.60.122', 'fixed_ip' => '10.10.10.1', 'pool' => 'test-pool'
31
+ )
32
+ ]
33
33
  allow(instance).to receive(:query_resource).and_return(resources)
34
34
  allow(instance).to receive(:puts)
35
35
  allow(instance).to receive(:create_service_instance).and_return(Chef::Knife::Cloud::Service.new)
36
36
  allow(instance).to receive(:validate!)
37
- instance.config[:format] = "summary"
37
+ instance.config[:format] = 'summary'
38
38
  end
39
39
 
40
- it "lists formatted list of resources" do
40
+ it 'lists formatted list of resources' do
41
41
  expect(instance.ui).to receive(:list).with(['ID', 'Instance ID', 'IP Address', 'Fixed IP', 'Floating IP Pool',
42
- 'floatingip1', 'daed9e86-4b69-4242-993a-926a39352783', '173.236.251.98', '', 'test-pool',
43
- 'floatingip2','', '67.205.60.122', '10.10.10.1', 'test-pool'], :uneven_columns_across, 5)
42
+ 'floatingip1', 'daed9e86-4b69-4242-993a-926a39352783', '173.236.251.98', '', 'test-pool',
43
+ 'floatingip2', '', '67.205.60.122', '10.10.10.1', 'test-pool'], :uneven_columns_across, 5)
44
44
  instance.run
45
45
  end
46
46
  end
47
- end
47
+ end
@@ -22,46 +22,42 @@ require 'chef/knife/openstack_group_list'
22
22
  require 'chef/knife/cloud/openstack_service'
23
23
 
24
24
  describe Chef::Knife::Cloud::OpenstackGroupList do
25
- let (:instance) {Chef::Knife::Cloud::OpenstackGroupList.new}
25
+ let (:instance) { Chef::Knife::Cloud::OpenstackGroupList.new }
26
26
 
27
- context "functionality" do
27
+ context 'functionality' do
28
28
  before do
29
- resources = [ TestResource.new({ "name" => "Unrestricted",
30
- "description" => "All ports open",
31
- "security_group_rules" => [TestResource.new({"from_port" => 1,
32
- "group" => {},
33
- "ip_protocol" => "tcp",
34
- "to_port" => 636,
35
- "parent_group_id" => 14,
36
- "ip_range" => {"cidr" => "0.0.0.0/0"},
37
- "id" => 1
38
- })
39
- ]
40
- }),
41
- TestResource.new({ "name" => "WindowsDomain",
42
- "description" => "Allows common protocols useful in a Windows domain",
43
- "security_group_rules" => [TestResource.new({"from_port" => 22,
44
- "group" => {},
45
- "ip_protocol" => "tcp",
46
- "to_port" => 636,
47
- "parent_group_id" => 14,
48
- "ip_range" => {"cidr" => "0.0.0.0/0"},
49
- "id" => 2
50
- })
51
- ]
52
- })
29
+ resources = [TestResource.new('name' => 'Unrestricted',
30
+ 'description' => 'All ports open',
31
+ 'security_group_rules' => [TestResource.new('from_port' => 1,
32
+ 'group' => {},
33
+ 'ip_protocol' => 'tcp',
34
+ 'to_port' => 636,
35
+ 'parent_group_id' => 14,
36
+ 'ip_range' => { 'cidr' => '0.0.0.0/0' },
37
+ 'id' => 1)
38
+ ]),
39
+ TestResource.new('name' => 'WindowsDomain',
40
+ 'description' => 'Allows common protocols useful in a Windows domain',
41
+ 'security_group_rules' => [TestResource.new('from_port' => 22,
42
+ 'group' => {},
43
+ 'ip_protocol' => 'tcp',
44
+ 'to_port' => 636,
45
+ 'parent_group_id' => 14,
46
+ 'ip_range' => { 'cidr' => '0.0.0.0/0' },
47
+ 'id' => 2)
48
+ ])
53
49
  ]
54
50
  allow(instance).to receive(:query_resource).and_return(resources)
55
51
  allow(instance).to receive(:puts)
56
52
  allow(instance).to receive(:create_service_instance).and_return(Chef::Knife::Cloud::Service.new)
57
53
  allow(instance).to receive(:validate!)
58
- instance.config[:format] = "summary"
54
+ instance.config[:format] = 'summary'
59
55
  end
60
56
 
61
- it "lists formatted list of resources" do
62
- expect(instance.ui).to receive(:list).with(["Name", "Protocol", "From", "To", "CIDR", "Description",
63
- "Unrestricted", "tcp", "1", "636", "0.0.0.0/0", "All ports open",
64
- "WindowsDomain", "tcp", "22", "636", "0.0.0.0/0", "Allows common protocols useful in a Windows domain"], :uneven_columns_across, 6)
57
+ it 'lists formatted list of resources' do
58
+ expect(instance.ui).to receive(:list).with(['Name', 'Protocol', 'From', 'To', 'CIDR', 'Description',
59
+ 'Unrestricted', 'tcp', '1', '636', '0.0.0.0/0', 'All ports open',
60
+ 'WindowsDomain', 'tcp', '22', '636', '0.0.0.0/0', 'Allows common protocols useful in a Windows domain'], :uneven_columns_across, 6)
65
61
  instance.run
66
62
  end
67
63
  end
@@ -21,32 +21,32 @@ require 'chef/knife/openstack_image_list'
21
21
  require 'chef/knife/cloud/openstack_service'
22
22
 
23
23
  describe Chef::Knife::Cloud::OpenstackImageList do
24
- let (:instance) {Chef::Knife::Cloud::OpenstackImageList.new}
24
+ let (:instance) { Chef::Knife::Cloud::OpenstackImageList.new }
25
25
 
26
- context "functionality" do
26
+ context 'functionality' do
27
27
  before do
28
- resources = [ TestResource.new({:id => "resource-1", :name => "image01", :metadata => {} }),
29
- TestResource.new({:id => "resource-2", :name => "initrd", :metadata => {} })
30
- ]
28
+ resources = [TestResource.new(id: 'resource-1', name: 'image01', metadata: {}),
29
+ TestResource.new(id: 'resource-2', name: 'initrd', metadata: {})
30
+ ]
31
31
  allow(instance).to receive(:query_resource).and_return(resources)
32
32
  allow(instance).to receive(:puts)
33
33
  allow(instance).to receive(:create_service_instance).and_return(Chef::Knife::Cloud::Service.new)
34
34
  allow(instance).to receive(:validate!)
35
- instance.config[:format] = "summary"
35
+ instance.config[:format] = 'summary'
36
36
  end
37
37
 
38
- it "displays formatted list of images, filtered by default" do
39
- expect(instance.ui).to receive(:list).with(["Name", "ID", "Snapshot",
40
- "image01", "resource-1", "no"], :uneven_columns_across, 3)
38
+ it 'displays formatted list of images, filtered by default' do
39
+ expect(instance.ui).to receive(:list).with(['Name', 'ID', 'Snapshot',
40
+ 'image01', 'resource-1', 'no'], :uneven_columns_across, 3)
41
41
  instance.run
42
42
  end
43
43
 
44
- it "lists all images when disable_filter = true" do
44
+ it 'lists all images when disable_filter = true' do
45
45
  instance.config[:disable_filter] = true
46
- expect(instance.ui).to receive(:list).with(["Name", "ID", "Snapshot",
47
- "image01", "resource-1", "no",
48
- "initrd", "resource-2", "no"], :uneven_columns_across, 3)
46
+ expect(instance.ui).to receive(:list).with(['Name', 'ID', 'Snapshot',
47
+ 'image01', 'resource-1', 'no',
48
+ 'initrd', 'resource-2', 'no'], :uneven_columns_across, 3)
49
49
  instance.run
50
50
  end
51
51
  end
52
- end
52
+ end
@@ -21,25 +21,25 @@ require 'chef/knife/cloud/openstack_service'
21
21
  require 'support/shared_examples_for_command'
22
22
 
23
23
  describe Chef::Knife::Cloud::OpenstackNetworkList do
24
- let (:instance) {Chef::Knife::Cloud::OpenstackNetworkList.new}
24
+ let (:instance) { Chef::Knife::Cloud::OpenstackNetworkList.new }
25
25
 
26
- context "functionality" do
26
+ context 'functionality' do
27
27
  before do
28
- resources = [ TestResource.new({:id => "resource-1", :name => "external", :tenant_id => "1", :shared => true}),
29
- TestResource.new({:id => "resource-2", :name => "internal", :tenant_id => "2", :shared => false})
28
+ resources = [TestResource.new(id: 'resource-1', name: 'external', tenant_id: '1', shared: true),
29
+ TestResource.new(id: 'resource-2', name: 'internal', tenant_id: '2', shared: false)
30
30
  ]
31
31
  allow(instance).to receive(:query_resource).and_return(resources)
32
32
  allow(instance).to receive(:puts)
33
33
  allow(instance).to receive(:create_service_instance).and_return(Chef::Knife::Cloud::Service.new)
34
34
  allow(instance).to receive(:validate!)
35
- instance.config[:format] = "summary"
35
+ instance.config[:format] = 'summary'
36
36
  end
37
37
 
38
- it "lists formatted list of network resources" do
39
- expect(instance.ui).to receive(:list).with(["Name", "ID", "Tenant", "Shared",
40
- "external", "resource-1", "1", "true",
41
- "internal", "resource-2", "2", "false"], :uneven_columns_across, 4)
38
+ it 'lists formatted list of network resources' do
39
+ expect(instance.ui).to receive(:list).with(['Name', 'ID', 'Tenant', 'Shared',
40
+ 'external', 'resource-1', '1', 'true',
41
+ 'internal', 'resource-2', '2', 'false'], :uneven_columns_across, 4)
42
42
  instance.run
43
43
  end
44
44
  end
45
- end
45
+ end
@@ -22,15 +22,14 @@
22
22
  require File.expand_path('../../spec_helper', __FILE__)
23
23
 
24
24
  describe Chef::Knife::Cloud::OpenstackServerCreate do
25
-
26
25
  before do
27
26
  @knife_openstack_create = Chef::Knife::Cloud::OpenstackServerCreate.new
28
27
  {
29
- :image => 'image',
30
- :openstack_username => 'openstack_username',
31
- :openstack_password => 'openstack_password',
32
- :openstack_auth_url => 'openstack_auth_url',
33
- :server_create_timeout => 1000
28
+ image: 'image',
29
+ openstack_username: 'openstack_username',
30
+ openstack_password: 'openstack_password',
31
+ openstack_auth_url: 'openstack_auth_url',
32
+ server_create_timeout: 1000
34
33
  }.each do |key, value|
35
34
  Chef::Config[:knife][key] = value
36
35
  end
@@ -47,18 +46,18 @@ describe Chef::Knife::Cloud::OpenstackServerCreate do
47
46
 
48
47
  allow(@knife_openstack_create).to receive(:create_service_instance).and_return(@openstack_service)
49
48
  allow(@knife_openstack_create).to receive(:puts)
50
- @new_openstack_server = double()
49
+ @new_openstack_server = double
51
50
 
52
- @openstack_server_attribs = { :name => 'Mock Server',
53
- :id => 'id-123456',
54
- :key_name => 'key_name',
55
- :flavor => 'flavor_id',
56
- :image => 'image_id',
57
- :addresses => {
58
- 'public' => [{'addr' => '75.101.253.10'}],
59
- 'private' => [{'addr' => '10.251.75.20'}]
60
- },
61
- :password => 'password'
51
+ @openstack_server_attribs = { name: 'Mock Server',
52
+ id: 'id-123456',
53
+ key_name: 'key_name',
54
+ flavor: 'flavor_id',
55
+ image: 'image_id',
56
+ addresses: {
57
+ 'public' => [{ 'addr' => '75.101.253.10' }],
58
+ 'private' => [{ 'addr' => '10.251.75.20' }]
59
+ },
60
+ password: 'password'
62
61
  }
63
62
 
64
63
  @openstack_server_attribs.each_pair do |attrib, value|
@@ -66,7 +65,7 @@ describe Chef::Knife::Cloud::OpenstackServerCreate do
66
65
  end
67
66
  end
68
67
 
69
- describe "run" do
68
+ describe 'run' do
70
69
  before(:each) do
71
70
  allow(@knife_openstack_create).to receive(:validate_params!)
72
71
  allow(Fog::Compute::OpenStack).to receive_message_chain(:new, :servers, :create).and_return(@new_openstack_server)
@@ -74,9 +73,9 @@ describe Chef::Knife::Cloud::OpenstackServerCreate do
74
73
  allow(@new_openstack_server).to receive(:wait_for)
75
74
  end
76
75
 
77
- context "for Linux" do
76
+ context 'for Linux' do
78
77
  before do
79
- @config = {:openstack_floating_ip=>"-1", :bootstrap_ip_address => "75.101.253.10", :ssh_password=>"password"}
78
+ @config = { openstack_floating_ip: '-1', bootstrap_ip_address: '75.101.253.10', ssh_password: 'password' }
80
79
  @knife_openstack_create.config[:distro] = 'chef-full'
81
80
  @bootstrapper = Chef::Knife::Cloud::Bootstrapper.new(@config)
82
81
  @ssh_bootstrap_protocol = Chef::Knife::Cloud::SshBootstrapProtocol.new(@config)
@@ -84,7 +83,7 @@ describe Chef::Knife::Cloud::OpenstackServerCreate do
84
83
  allow(@ssh_bootstrap_protocol).to receive(:send_bootstrap_command)
85
84
  end
86
85
 
87
- it "Creates an OpenStack instance and bootstraps it" do
86
+ it 'Creates an OpenStack instance and bootstraps it' do
88
87
  expect(Chef::Knife::Cloud::Bootstrapper).to receive(:new).with(@config).and_return(@bootstrapper)
89
88
  allow(@bootstrapper).to receive(:bootstrap).and_call_original
90
89
  expect(@bootstrapper).to receive(:create_bootstrap_protocol).and_return(@ssh_bootstrap_protocol)
@@ -94,9 +93,9 @@ describe Chef::Knife::Cloud::OpenstackServerCreate do
94
93
  end
95
94
  end
96
95
 
97
- context "for Windows" do
96
+ context 'for Windows' do
98
97
  before do
99
- @config = {:openstack_floating_ip=>"-1", :image_os_type => 'windows', :bootstrap_ip_address => "75.101.253.10", :bootstrap_protocol => 'winrm', :ssh_password=>"password"}
98
+ @config = { openstack_floating_ip: '-1', image_os_type: 'windows', bootstrap_ip_address: '75.101.253.10', bootstrap_protocol: 'winrm', ssh_password: 'password' }
100
99
  @knife_openstack_create.config[:image_os_type] = 'windows'
101
100
  @knife_openstack_create.config[:bootstrap_protocol] = 'winrm'
102
101
  @knife_openstack_create.config[:distro] = 'windows-chef-client-msi'
@@ -104,7 +103,7 @@ describe Chef::Knife::Cloud::OpenstackServerCreate do
104
103
  @winrm_bootstrap_protocol = Chef::Knife::Cloud::WinrmBootstrapProtocol.new(@config)
105
104
  @windows_distribution = Chef::Knife::Cloud::WindowsDistribution.new(@config)
106
105
  end
107
- it "Creates an OpenStack instance for Windows and bootstraps it" do
106
+ it 'Creates an OpenStack instance for Windows and bootstraps it' do
108
107
  expect(Chef::Knife::Cloud::Bootstrapper).to receive(:new).with(@config).and_return(@bootstrapper)
109
108
  allow(@bootstrapper).to receive(:bootstrap).and_call_original
110
109
  expect(@bootstrapper).to receive(:create_bootstrap_protocol).and_return(@winrm_bootstrap_protocol)