knife-openstack 1.3.2.pre → 1.3.2.pre.1

Sign up to get free protection for your applications and to get access to all the features.
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)